Ë
    g^(hò  ã                   ó  — U d dl Z d dlZd dlmZmZmZmZmZmZ d dl	Z	d dl
Z	d dlmZ d dlmZmZmZ e j"                  j%                  dd«      dk(  ZdZdee   fd	„Zdee   fd
„Zdee   fd„Zdee   fd„Zdee   fd„Zdefd„Ze j"                  j%                  dd«      dk(  ZdZdZdZ eddd¬«      Z ee!d<    e«       Z"ee   e!d<    e«       Z#ee   e!d<   dZ$ee!d<    e«       Z%ee   e!d<    e«       Z&ee   e!d<   e j"                  j%                  d«      dk(  Z'ee!d<   dZ(ee)   e!d<   dZ*ed   e!d<   dZ+ed   e!d <   e j"                  j%                  d!d"«      dk(  Z,ee!d#<   e j"                  j%                  d$d«      dk(  Z-dZ.dZ/e j"                  j%                  d%d«      dk(  Z0e j"                  j%                  d&«      dk(  Z1e j"                  j%                  d'd«      dk(  Z2dZ3dZ4dZ5e j"                  j%                  d(d"«      dk(  Z6e j"                  j%                  d)«      dk(  Z7e j"                  j%                  d*d+«      Z8ed,   e!d-<   dZ9dZ: e«       Z;dZ<dZ=dZ>dZ?e	j€                  j‚                  j„                  e!d.<   dZCe	j€                  j‚                  j„                  e!d/<   dZDeee	jŠ                  jŒ                  gdf      e!d0<   dZGeee	jŠ                  jŒ                  gdf      e!d1<   dZHeee	jŠ                  j’                  jŒ                  gdf      e!d2<   dZJeeeKd3   geKd3   f      e!d4<   dZLdZMdZNdZOdZPi ZQeReSeReSef   f   e!d5<   i ZTeReSeReSef   f   e!d6<   dZUe j"                  j%                  d7d«      dk(  ZVdZWdZXdd8d9dd:œZYeReSef   e!d;<   d<ZZed=   e!d><   dZ[g d?¢Z\eKeeSeeKd3   geKd3   f   f      e!d@<   dZ]dAZ^dBZ_dCZ` eddDdE¬F«      Zaee!dG<   e j"                  j%                  dH«      dk(  Zbe j"                  j%                  dI«      dk(  Zce j"                  j%                  dJ«      dk(  ZddKZeee)   e!dL<   dZf e«       rdne j"                  j%                  dM«      dk(  Zge j"                  j%                  dNdO«      jÑ                  «       Zie j"                  j%                  dPdQ«      jÑ                  «       Zje j"                  j%                  dRdS«      jÑ                  «       ZkedT   e!dU<   e j"                  j%                  dVd«      dk(  ZldWZme j"                  j%                  dX«      dk(  Zne j"                  j%                  dY«      dk(  Zoe j"                  j%                  dZ«      dk(  Zpd[Zqd\Zrd]Zse j"                  j%                  d^«      dk(  Zte j"                  j%                  d_«      dk(  Zue j"                  j%                  d`«      dk(  Zv e)e j"                  j%                  dad«      «      Zwe j"                  j%                  dbdc«      Zxe j"                  j%                  ddde«      ZydfeSdefdg„ZzdfeSdefdh„Z{dfeSdefdi„Z|e j"                  j%                  djdS«      Z}e	jü                  jþ                  sdnd"Z€e j"                  j%                  dke€«      dk(  Z�e j"                  j%                  dld"«      dk(  Z‚e j"                  j%                  dmd«      dk(  Zƒe j"                  j%                  dn«      dk(  Z„doZ…dpZ†dqZ‡dZˆdZ‰dZŠe j"                  j%                  dr«      dk(  Z‹ee!ds<   e j"                  j%                  dt«      dk(  ZŒee!du<   e j"                  j%                  dvdc«      Z�e j"                  j%                  dwd"«      dk(  ZŽee!dx<   dKZ�e j"                  j%                  dyd«      dk(  Z�d9Z‘dzZ’dqZ“dZ”dqZ•dZ–dZ—dZ˜e j"                  j%                  d{d"«      dk(  Z™dZšdZ›dZœdZ�dZždZŸd9Z d9Z¡dZ¢dZ£dZ¤e j"                  j%                  d|d"«      dk(  Z¥d}e	�jL                  v xs d~e	�jL                  v Z§ e«       xs e§Z¨e j"                  j%                  dd«      dk(  Z©dZªeeS   e!d€<   dZ«eeS   e!d�<   deSfd‚„Z¬ e¬«       Z­eSe!dƒ<   dZ®dCZ¯d„d…gZ°eKeed†   eSf      e!d‡<   dZ±ee!dˆ<    G d‰„ dŠ«      Z²defd‹„Z³de)fdŒ„Z´ e«       rdn e´«       Zµee)   e!d�<   eeS   e!dŽ<    e«       ri	 d d�l¶m·Z· e¸rL e·�jr                  e �jt                  �jw                  e¸�jy                  d�e �jz                  «      d‘«      «      Z¾n e·�jr                  d‘«      Z¾ndZ¾dKZÁe j"                  j%                  d’d«      dk(  ZÂe j"                  j%                  d“d«      dk(  ZÃdZÄdZÅd”ZÆd•ZÇdZÈdZÉdZÊee!d–<   e j"                  j%                  d—d"«      dk(  ZËdZÌdZÍdZÎdZÏe j"                  j%                  d˜dc«      ZÐeÐdck7  ZÑeÐdk(  rdcneÐZÒe j"                  j%                  d™d«      ZÓeeS   e!dš<   e j"                  j%                  d›«      dk(  ZÔdZÕe j"                  j%                  dœd"«      dk(  ZÖee!d�<   dZ×ee!dž<   dZØee!dŸ<   dZÙee!d <   dZÚee!d¡<   dZÛee!d¢<   dZÜee!d£<   e j"                  j%                  d¤d"«      dk(  ZÝe j"                  j%                  d¥d"«      dk(  ZÞee!d¦<    G d§„ d¨«      Zß G d©„ dª«      Zà G d«„ d¬«      Zá G d­„ d®«      Zâ G d¯„ d°«      Zãd¨Zäed±   e!d²<   dªZåed³   e!d´<    G dµ„ d¶«      Zæ G d·„ d¸«      Zçg d¹¢ZèeKeS   e!dº<   g d»¢ZéeKeS   e!d¼<   g ZêeKee	�jÖ                  e	�jÖ                  e	�jÖ                  gdf      e!d½<    G d¾„ d¿«      Zìerd dÀlí­  ee�jÜ                  eï   «       y# e¿eÀf$ r dZ¾Y �ŒRw xY w)Áé    N)ÚAnyÚCallableÚLiteralÚOptionalÚTYPE_CHECKINGÚUnion)Ú	is_fbcode)ÚConfigÚget_tristate_envÚinstall_config_moduleÚTORCHINDUCTOR_INPLACE_PADDINGÚ1FÚreturnc                  ó   — t        d«      S )NÚ#TORCHINDUCTOR_FX_GRAPH_REMOTE_CACHE©r   © ó    úT/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/_inductor/config.pyÚfx_graph_remote_cache_defaultr      ó   € ÜÐAÓBÐBr   c                  ó�   — t         j                  j                  d«      dk(  ryt         j                  j                  d«      dk(  ryy )NÚTORCHINDUCTOR_VEC_ISA_OKr   TÚ0F)ÚosÚenvironÚgetr   r   r   Úvec_isa_ok_defaultr      s7   € Ü	‡z�z‡~�~Ð0Ó1°SÒ8ØÜ	‡z�z‡~�~Ð0Ó1°SÒ8ØØr   c                  ó   — t        d«      S )NÚ#TORCHINDUCTOR_AUTOTUNE_REMOTE_CACHEr   r   r   r   Úautotune_remote_cache_defaultr!      r   r   c                  ó   — t        d«      S )NÚ+TORCHINDUCTOR_BUNDLED_AUTOTUNE_REMOTE_CACHEr   r   r   r   Ú%bundled_autotune_remote_cache_defaultr$      s   € ÜÐIÓJÐJr   c                  ó:   — t        dt        «       sd«      S d «      S )NÚ/TORCHINDUCTOR_BUNDLE_TRITON_INTO_FX_GRAPH_CACHET)r   r	   r   r   r   Ú)bundle_triton_into_fx_graph_cache_defaultr'   #   s&   € ÜØ9Ü”Kˆóð à%)óð r   c                  óÐ   — d} dt         j                  v r"t         j                  j                  d«      dk(  S t        «       r&d}t        j
                  j                  |«      }|| k  S y)Nr   ÚTORCHINDUCTOR_PROLOGUE_FUSIONr   z(pytorch/inductor:prologue_fusion_versionT)r   r   r   r	   ÚtorchÚ_utils_internalÚjustknobs_getval_int)ÚENABLE_PROLOGUE_FUSION_VERSIONÚjk_nameÚversions      r   Úprologue_fusion_enabledr0   *   s\   € Ø%&Ð"à&¬"¯*©*Ñ4Ü�z‰z�~‰~Ð=Ó>À#ÑEÐEÜ	ŒØ<ˆÜ×'Ñ'×<Ñ<¸WÓEˆØÐ8Ñ8Ð8àr   Ú"TORCHDYNAMO_AUTO_FUNCTIONALIZED_V2Tz0pytorch/remote_cache:enable_local_fx_graph_cacheÚTORCHINDUCTOR_FX_GRAPH_CACHE)ÚjustknobÚenv_name_forceÚdefaultÚfx_graph_cacheÚfx_graph_remote_cacheÚ!bundle_triton_into_fx_graph_cacheÚautotune_local_cacheÚautotune_remote_cacheÚbundled_autotune_remote_cacheÚ"TORCHINDUCTOR_FORCE_DISABLE_CACHESÚforce_disable_cachesÚsleep_sec_TESTING_ONLYÚneeds_fixed_stride_order)r?   Úflexible_layoutÚ#custom_op_default_layout_constraintÚ'triton_kernel_default_layout_constraintÚTORCHINDUCTOR_CPP_WRAPPERr   Úcpp_wrapperÚTORCHINDUCTOR_ONLINE_SOFTMAXÚTORCHINDUCTOR_SIZE_ASSERTSÚTORCHINDUCTOR_NAN_ASSERTSÚTORCHINDUCTOR_SCALAR_ASSERTSÚTORCHINDUCTOR_MEMORY_PLANNINGÚTORCHINDUCTOR_USE_FAST_MATHÚTORCHINDUCTOR_MEMORY_POOLÚintermediates)ÚnonerL   ÚoutputsÚcombinedÚmemory_poolÚpost_grad_custom_pre_passÚpost_grad_custom_post_passÚjoint_custom_pre_passÚjoint_custom_post_passÚpre_grad_custom_passz+torch._inductor.scheduler.BaseSchedulerNodeÚ_pre_fusion_custom_passÚpre_grad_fusion_optionsÚpost_grad_fusion_optionsÚ"TORCHINDUCTOR_DYNAMIC_SCALE_RBLOCKg-Cëâ6?é   )Úpre_gradÚ	precisionÚnum_iterationsÚrequires_optimizerÚfx_passes_numeric_checkÚ	heuristic)r5   ÚtritonÚatenr`   Úmixed_mm_choice)Úreorder_compute_for_overlapÚ
sink_waitsÚraise_commsÚ'reorder_for_compute_comm_overlap_passesr5   i,  é   Ú*TORCHINDUCTOR_USE_EXPERIMENTAL_BENCHMARKERz-pytorch/inductor:use_experimental_benchmarker)r5   r4   r3   Úuse_experimental_benchmarkerÚTORCHINDUCTOR_MAX_AUTOTUNEÚ$TORCHINDUCTOR_MAX_AUTOTUNE_POINTWISEÚTORCHINDUCTOR_MAX_AUTOTUNE_GEMMé
   Úautotune_num_choices_displayedÚ"TORCHINDUCTOR_FORCE_SAME_PRECISIONÚ(TORCHINDUCTOR_MAX_AUTOTUNE_GEMM_BACKENDSzATEN,TRITON,CPPÚ(TORCHINDUCTOR_MAX_AUTOTUNE_CONV_BACKENDSzATEN,TRITONÚ,TORCHINDUCTOR_MAX_AUTOTUNE_GEMM_SEARCH_SPACEÚDEFAULT)rt   Ú
EXHAUSTIVEÚmax_autotune_gemm_search_spaceÚ'TORCHINDUCTOR_AUTOTUNE_FALLBACK_TO_ATENi    Ú#TORCHINDUCTOR_SEARCH_AUTOTUNE_CACHEÚTORCHINDUCTOR_SAVE_ARGSÚ!TORCHINDUCTOR_AUTOTUNE_IN_SUBPROCg      N@g      ð?g       @Ú#TORCHINDUCTOR_AUTOTUNE_MULTI_DEVICEÚ'TORCHINDUCTOR_COORDINATE_DESCENT_TUNINGÚ5TORCHINDUCTOR_COORDINATE_DESCENT_CHECK_ALL_DIRECTIONSÚ'TORCHINDUCTOR_COORDINATE_DESCENT_RADIUSÚ#TORCHINDUCTOR_AUTOHEURISTIC_COLLECTÚ ÚTORCHINDUCTOR_AUTOHEURISTIC_USEÚmixed_mmÚnamec                 ó2   — t        | «      xs t        | «      S )N)Úcollect_autoheuristicÚuse_autoheuristic©rƒ   s    r   Úrun_autoheuristicrˆ   À  s   € Ü  Ó&ÒAÔ*;¸DÓ*AÐAr   c                 ól   — | t         j                  j                  j                  j	                  d«      v S ©Nú,)r*   Ú	_inductorÚconfigÚautoheuristic_collectÚsplitr‡   s    r   r…   r…   Ä  s(   € Ø”5—?‘?×)Ñ)×?Ñ?×EÑEÀcÓJÐJÐJr   c                 ól   — | t         j                  j                  j                  j	                  d«      v S rŠ   )r*   rŒ   r�   Úautoheuristic_user�   r‡   s    r   r†   r†   È  s(   € Ø”5—?‘?×)Ñ)×;Ñ;×AÑAÀ#ÓFÐFÐFr   Ú$TORCHINDUCTOR_AUTOHEURISTIC_LOG_PATHÚ!TORCHINDUCTOR_LAYOUT_OPTIMIZATIONÚTORCHINDUCTOR_FORCE_LAYOUT_OPTÚ TORCHINDUCTOR_KEEP_OUTPUT_STRIDEÚTORCHINDUCTOR_WARN_MIX_LAYOUTé   é   é   ÚTORCHINDUCTOR_DEBUG_FUSIONÚdebug_fusionÚTORCHINDUCTOR_BENCHMARK_FUSIONÚbenchmark_fusionÚ#TORCHINDUCTOR_ENABLED_METRIC_TABLESÚ(TORCHINDUCTOR_LOOP_ORDERING_AFTER_FUSIONÚloop_ordering_after_fusionÚ'TORCHINDUCTOR_BENCHMARK_EPILOGUE_FUSIONé@   ÚTORCHINDUCTOR_BENCHMARK_KERNELÚ%TORCHINDUCTOR_EMULATE_PRECISION_CASTSÚdevÚgitÚ0TORCHINDUCTOR_OPTIMIZE_SCATTER_UPON_CONST_TENSORÚadd_pre_grad_passesÚremove_pre_grad_passesc                  ór   — dt         j                  v rt         j                  d   } nd} | dv s
J d| › �«       ‚| S )NÚTORCHINDUCTOR_WORKER_STARTÚ
subprocess)r¬   ÚforkÚspawnzInvalid start method: )r   r   )Ústart_methods    r   Údecide_worker_start_methodr°   o  sR   € Ø#¤r§z¡zÑ1Ü—z‘zÐ">Ñ?‰à#ˆØð ñ ð /ð 
  ˜~Ð.ó	/ð ð
 Ðr   Úworker_start_methodÚfuse_ddp_with_concat_opÚschedule_comm_wait).NÚ_fuse_ddp_communication_passesÚ_micro_pipeline_tpc                   ó*   — e Zd ZU dZeed<   dZeed<   y)Ú_collectiveFÚauto_selecti   Ú#one_shot_all_reduce_threshold_bytesN)Ú__name__Ú
__module__Ú__qualname__r¸   ÚboolÚ__annotations__r¹   Úintr   r   r   r·   r·   ˜  s   … Ø€K�ÓØ/9Ð'¨Ô9r   r·   c                  óR   — d} d}t         j                  j                  |«      }| |k\  S )a   
    TODO: Remove when parallel compiled is fully enabled internally. For rollout, use a
    knob to enable / disable. The justknob should not be performed at import, however.
    So for fbcode, we assign compile_threads to 'None' below and initialize lazily in
    async_compile.py.
    rZ   z0pytorch/inductor:enable_parallel_compile_version)r*   r+   r,   )ÚENABLE_PARALLEL_COMPILE_VERSIONr.   r/   s      r   Ú#parallel_compile_enabled_internallyrÂ   �  s0   € ð '(Ð#à@€GÜ×#Ñ#×8Ñ8¸ÓA€GØ*¨gÑ5Ð5r   c                  ó&  — ddl } | j                  t        «      }dt        j                  v r0t        t        j                  d   «      }|j                  d|«       |S t        j                  dk(  rd}|j                  d«       |S t        «       rt        «       sd}|j                  d«       |S t        t        d	«      rt        t        j                  d«      «      nt        j                  «       }|sJ ‚t        d
|«      }|j                  d|«       |S )a!  
    Here are the precedence to decide compile_threads
    1. User can override it by TORCHINDUCTOR_COMPILE_THREADS.  One may want to disable async compiling by
       setting this to 1 to make pdb happy.
    2. Set to 1 if it's win32 platform
    3. decide by the number of CPU cores
    r   NÚTORCHINDUCTOR_COMPILE_THREADSz!compile_threads set to %d via envÚwin32rZ   z"compile_threads set to 1 for win32z"compile_threads set to 1 in fbcodeÚsched_getaffinityé    zcompile_threads set to %d)ÚloggingÚ	getLoggerrº   r   r   r¿   ÚinfoÚsysÚplatformr	   rÂ   ÚhasattrÚlenrÆ   Ú	cpu_countÚmin)rÈ   ÚlogÚcompile_threadsrÏ   s       r   Údecide_compile_threadsrÓ   «  sú   € ó ð ×
Ñ
œHÓ
%€Cà&¬"¯*©*Ñ4ÜœbŸj™jÐ)HÑIÓJˆØ�‰Ð4°oÔFð" Ðô! 
�‰˜Ò	 ØˆØ�‰Ð5Ô6ð Ðô 
ŒÔ@ÔBØˆØ�‰Ð5Ô6ð Ðô ”rÐ.Ô/ô ”×$Ñ$ QÓ'Ô(ä—‘“ð 	ñ
 ÐˆyÜ˜b )Ó,ˆØ�‰Ð,¨oÔ>àÐr   rÒ   Úglobal_cache_dir)Úparutilú.zfb/cacheÚTORCHINDUCTOR_SHAPE_PADDINGÚ#TORCHINDUCTOR_COMPREHENSIVE_PADDINGé€   i   Úforce_shape_padÚTORCHINDUCTOR_PERMUTE_FUSIONÚTORCHINDUCTOR_PROFILEÚTORCHINDUCTOR_PROFILE_OUTPUTÚprofile_bandwidth_outputÚ3TORCHINDUCTOR_PROFILE_WITH_DO_BENCH_USING_PROFILINGÚTORCHINDUCTOR_FREEZINGÚfreezingÚfreezing_discard_parametersÚdecompose_mem_bound_mmÚassume_aligned_inputsÚ.unsafe_ignore_unsupported_triton_autotune_argsÚ"check_stack_no_cycles_TESTING_ONLYÚ*always_complex_memory_overlap_TESTING_ONLYÚ*TORCHINDUCTOR_ENABLE_LINEAR_BINARY_FOLDINGÚTORCHINDUCTOR_ANNOTATE_TRAININGÚannotate_trainingc                   ó6  — e Zd ZU dZej
                  j                  dd«      dk(  Zej
                  j                  dd«      dk(  ZdZ	e
e   ed<    eej
                  j                  dd	«      «      Zdej
                  j                  d
ej                  dk(  rdnd«      fZeed   ef   ed<   ej
                  j                  dd«      dk(  Zej
                  j                  dd«      dk(  ZdZe
e   ed<   dZe
e   ed<    ed«      Ze
e   ed<   dZeeed   f   ed<    eej
                  j                  dd«      «      Zej
                  j                  dd«      dk(  Zej
                  j                  dd«      dk(  Zej
                  j                  dd«      Z ej
                  j                  dd«      dk(  Z!dZ" eej
                  j                  d d«      «      Z#ej
                  j                  d!d«      Z$ej
                  j                  d"d«      Z%d#Z&dZ'y)$ÚcppéÿÿÿÿÚ$TORCHINDUCTOR_CPP_NO_REDUNDANT_LOOPSr   Ú!TORCHINDUCTOR_CPP_DYNAMIC_THREADSr   NÚsimdlenÚ TORCHINDUCTOR_CPP_MIN_CHUNK_SIZEÚ4096ÚCXXÚdarwinzclang++zg++ÚcxxÚ'TORCHINDUCTOR_CPP_ENABLE_KERNEL_PROFILEÚ TORCHINDUCTOR_CPP_WEIGHT_PREPACKÚinject_relu_bug_TESTING_ONLYÚinject_log1p_bug_TESTING_ONLYr   Ú
vec_isa_okÚoriginal_aten©r*   rû   Úinductor_nodeÚdescriptive_namesÚ,TORCHINDUCTOR_CPP_MAX_HORIZONTAL_FUSION_SIZEÚ16Ú-TORCHINDUCTOR_CPP_FALLBACK_SCATTER_REDUCE_SUMÚ-TORCHINDUCTOR_CPP_ENABLE_UNSAFE_MATH_OPT_FLAGÚ5TORCHINDUCTOR_CPP_ENABLE_FLOATING_POINT_CONTRACT_FLAGÚoffÚ)TORCHINDUCTOR_CPP_ENABLE_TILING_HEURISTICFÚ#TORCHINDUCTOR_CPP_GEMM_MAX_K_SLICESÚ%TORCHINDUCTOR_CPP_GEMM_CACHE_BLOCKINGÚ%TORCHINDUCTOR_CPP_GEMM_THREAD_FACTORST)(rº   r»   r¼   Úthreadsr   r   r   Úno_redundant_loopsÚdynamic_threadsrð   r   r¿   r¾   Úmin_chunk_sizerË   rÌ   rõ   Útupler   ÚstrÚenable_kernel_profileÚweight_prepackrø   rù   r   rú   r½   rþ   r   Úmax_horizontal_fusion_sizeÚfallback_scatter_reduce_sumÚenable_unsafe_math_opt_flagÚ#enable_floating_point_contract_flagÚenable_tiling_heuristicsÚenable_grouped_gemm_templateÚgemm_max_k_slicesÚgemm_cache_blockingÚgemm_thread_factorsÚenable_loop_tail_vecÚenable_concat_linearr   r   r   rì   rì   g  sB  … à€Gð
 	�
‰
�‰Ð=¸sÓCÀsÑJð ð —j‘j—n‘nÐ%HÈ#ÓNÐRUÑU€Oà!€GˆX�c‰]Ó!Ù˜Ÿ™Ÿ™Ð(JÈFÓSÓT€Nð 	Ø
�
‰
�‰�u¨3¯<©<¸8Ò+C™iÈÓOð&€Cˆˆw�t‰}˜cÐ!Ñ	"ó ð 	�
‰
�‰Ð@À#ÓFÈ#ÑMð ð
 —Z‘Z—^‘^Ð$FÈÓLÐPSÑS€Nð
 37Ð  (¨3¡-Ó6Ø37Ð! 8¨C¡=Ó7ñ "2Ð2LÓ!M€J�˜‘ÓMð
 	ð �uØˆgÐ?Ñ@Ð@ñó ñ
 "%Ø
�
‰
�‰ÐEÀtÓLó"Ðð 	�
‰
�‰ÐFÈÓLÐPSÑSð  ð 	�
‰
�‰ÐFÈÓLÐPSÑSð  ð +-¯*©*¯.©.Ø?Àó+Ð'ð 	�
‰
�‰ÐBÀCÓHÈCÑOð ð
 $)Ð ñ ˜BŸJ™JŸN™NÐ+PÐRUÓVÓWÐð Ÿ*™*Ÿ.™.Ð)PÐRVÓWÐð Ÿ*™*Ÿ.™.Ð)PÐRVÓWÐð  Ðð !Ñr   rì   c                   ó  — e Zd ZU ej                  j                  d«      dk(  ZdZdZdZ	dZ
 e«       rdndZdZdZee   ed<   dZdZdZdZdZdZdZdZdZeed	<   dZdZd
Zee   ed<   dZeed<   dZ dZ!ej                  j                  dd«      dk(  Z"ej                  j                  dd«      dk(  Z#dZ$e%ee&d   f   ed<   ej                  j                  dd«      dk(  Z'ej                  j                  dd«      dk(  Z(dZ) eej                  j                  dd«      «      Z*e&d   ed<   dZ+dZ,dZ-dZ.eed<   dZ/d
Z0ee1   ed<   dZ2ej                  j                  dd«      dk(  Z3ej                  j                  dd«      dk(  Z4dZ5y
)ra   ÚTORCHINDUCTOR_CUDAGRAPHSr   TFrÙ   é2   Ú"cudagraph_dynamic_shape_warn_limité   Úprefer_nd_tilingNÚautotune_at_compile_timeÚtile_reductionsÚ!TORCHINDUCTOR_UNIQUE_KERNEL_NAMESÚ&TORCHINDUCTOR_UNIQUE_USER_KERNEL_NAMESr   rû   rü   rþ   Ú#TORCHINDUCTOR_PERSISTENT_REDUCTIONSÚ$TORCHINDUCTOR_COOPERATIVE_REDUCTIONSÚTORCHINDUCTOR_MULTI_KERNEL)r   rZ   r   é   Úmulti_kernelé   é   Úspill_thresholdrø   ÚENABLE_PERSISTENT_TMA_MATMULÚTORCHINDUCTOR_SKIP_L1)6rº   r»   r¼   r   r   r   Ú
cudagraphsÚcudagraph_treesÚcudagraph_skip_dynamic_graphsÚslow_path_cudagraph_assertsÚ!cudagraph_trees_history_recordingr	   Ú cudagraph_support_input_mutationÚ#cudagraph_unexpected_rerecord_limitr  r   r¿   r¾   Úforce_cudagraph_syncÚforce_cudagraphs_warmupÚfast_path_cudagraph_assertsÚskip_cudagraph_warmupÚdebug_sync_graphÚdebug_sync_kernelÚdense_indexingÚ	max_tilesr!  r½   Úautotune_pointwiseÚautotune_cublasLtr"  r#  Ú tiling_prevents_pointwise_fusionÚ tiling_prevents_reduction_fusionÚunique_kernel_namesÚunique_user_kernel_namesrþ   r   r   Úpersistent_reductionsÚcooperative_reductionsÚforce_cooperative_reductionsr*  Údivisible_by_16Úmin_split_scan_rblockÚstore_cubinr-  Úuse_block_ptrrø   r  Úcodegen_upcast_to_fp32Úenable_persistent_tma_matmulÚskip_l1_cacheÚ.disallow_failing_autotune_kernels_TESTING_ONLYr   r   r   ra   ra   Ô  s>  … à—‘—‘Ð :Ó;¸sÑB€Jð €Oð %*Ð!ð #'Ðð ).Ð%ñ 1:´¡uÀÐ$ð +.Ð'ð 9;Ð&¨°©Ó:ð !Ðð $Ðð #(Ðð "Ðð Ðð Ðð €Nð €Ið #Ð�dÓ"ð Ðð Ðð 04Ð˜h t™nÓ3ð "€O�TÓ!ð (,Ð$Ø'+Ð$ð 	�
‰
�‰Ð:¸CÓ@ÀCÑGð ð 	�
‰
�‰Ð?ÀÓEÈÑLð ð 	ð �uØˆgÐ?Ñ@Ð@ñó ð 	�
‰
�‰Ð<¸cÓBÀcÑIð ð 	�
‰
�‰Ð=¸sÓCÀsÑJð ð
 $)Ð ñ ),Ø
�
‰
�‰Ð3°SÓ9ó)€L�'˜*Ñ%ó ð
 €Oð  Ðð €Kð €O�SÓð €Mð
 37Ð  (¨3¡-Ó6ð "Ðð
 	�
‰
�‰Ð5°sÓ;¸sÑBð !ð —J‘J—N‘NÐ#:¸CÓ@ÀCÑG€Mð 6;Ñ2r   ra   c                   ó†  — e Zd ZU dZej
                  j                  dd«      dk(  Zej
                  j                  dd«      dk(  Zej
                  j                  dd«      Z	e
d   ed<   ej
                  j                  d	d
«      ZdZdZdZeed<   dZeed<   dZeed<   dZeed<   i Zeeef   ed<   ej
                  j                  dd«      dk(  Zeed<   ej
                  j                  dd«      dk(  Zeed<    eej
                  j                  dd«      «      Zeed<   i Zeeef   ed<   dZeed<   dZeed<   dZeed<   y
)Úaot_inductorr€   ÚAOT_INDUCTOR_DEBUG_COMPILEr   r   Ú$AOT_INDUCTOR_COMPILE_WRAPPER_WITH_O0Ú-AOT_INDUCTOR_DEBUG_INTERMEDIATE_VALUE_PRINTER)r   r   Ú2Ú3Ú debug_intermediate_value_printerÚ&AOT_INDUCTOR_FILTERED_KERNELS_TO_PRINTNFÚuse_runtime_constant_foldingÚforce_mmap_weightsÚpackageÚpackage_cpp_onlyÚmetadataÚ/AOTINDUCTOR_RAISE_ERROR_ON_IGNORED_OPTIMIZATIONÚ#raise_error_on_ignored_optimizationÚDUMP_AOTI_MINIFIERÚdump_aoti_minifierÚAOTINDUCTOR_REPRO_LEVELr   Úrepro_levelÚpresetsÚallow_stack_allocationÚuse_minimal_arrayref_interfaceTÚpackage_constants_in_so) rº   r»   r¼   Úoutput_pathr   r   r   Údebug_compileÚcompile_wrapper_with_O0rW  r   r¾   Úfiltered_kernel_namesÚserialized_in_specÚserialized_out_specrY  r½   rZ  r[  r\  r]  Údictr  r_  ra  r¿   rc  rd  r   re  rf  rg  r   r   r   rQ  rQ  ‡  s~  … ð €Kà—J‘J—N‘NÐ#?ÀÓEÈÑL€Mð
 	�
‰
�‰Ð=¸sÓCÀsÑJð ð EGÇJÁJÇNÁNØ7¸óEÐ$ gÐ.@Ñ&Aó ð
 ŸJ™JŸN™NØ0°$óÐð Ðð Ðð */Ð  $Ó.ð  %Ð˜Ó$à€GˆTÓØ"Ð�dÓ"ð  "€Hˆd�3˜�8‰nÓ!ð 	�
‰
�‰ÐHÈ#ÓNÐRUÑUð (¨ó ð
  "Ÿz™zŸ~™~Ð.BÀCÓHÈCÑOÐ˜ÓOñ ˜2Ÿ:™:Ÿ>™>Ð*CÀQÓGÓH€K�ÓHð !€GˆT�#�s�(‰^Ó ð $)Ð˜DÓ(ð ,1Ð" DÓ0ð %)Ð˜TÔ(r   rQ  c            
       ó¢  — e Zd ZU dZee   ed<   dZee   ed<   dZe	d   ed<   dZ
dZdZdZej                  j!                  dej"                  j%                  ej"                  j'                  ej"                  j)                  ej,                  «      d	«      «      «      ZdZee   ed
<   g d¢Zee   ed<   dZee   ed<   dZeed<   ej                  j!                  dd«      dk(  Zeed<   ej                  j!                  d«      Z ee   ed<   ej                  j!                  d«      Z!ee   ed<   ej                  j!                  dd«      Z"eed<   y)ÚcudaNÚarchr/   ú-O1)ú-O0rr  ú-O2ú-O3z-OSÚcompile_opt_levelFÚTORCHINDUCTOR_CUTLASS_DIRz../third_party/cutlass/Úcutlass_max_profiling_configs)rZ   r   r—   Ú%cutlass_max_profiling_swizzle_optionsÚcuda_cxxrZ   Úcutlass_backend_min_gemm_sizeÚ/INDUCTOR_CUDA_BACKEND_GENERATE_TEST_RUNNER_CODEr   r   Úgenerate_test_runnerÚTORCHINDUCTOR_CUTLASS_ALLOWLISTÚcutlass_op_allowlist_regexÚTORCHINDUCTOR_CUTLASS_DENYLISTÚcutlass_op_denylist_regexÚ)TORCHINDUCTOR_CUTLASS_INSTANTIATION_LEVELÚcutlass_instantiation_level)#rº   r»   r¼   rq  r   r  r¾   r/   rv  r   Úenable_cuda_ltoÚenable_ptxas_infoÚenable_debug_infoÚuse_fast_mathr   r   r   ÚpathÚabspathÚjoinÚdirnamer*   Ú__file__Úcutlass_dirrx  r¿   ry  Úlistrz  r{  r}  r½   r  r�  rƒ  r   r   r   rp  rp  á  sn  … ð €Dˆ(�3‰-Óð
 "€GˆX�c‰]Ó!ð EJÐ�wÐ@ÑAÓIð €Oð Ðð Ðð €Mð —*‘*—.‘.Ø#Ø
�‰�‰Ø�G‰G�L‰L˜Ÿ™Ÿ™¨¯©Ó8Ð:SÓTó	
ó€Kð 48Ð! 8¨C¡=Ó7ò 8AÐ)¨4°©9Ó@ð #€Hˆh�s‰mÓ"ð *+Ð! 3Ó*ð
 	�
‰
�‰ÐHÈ#ÓNÐRUÑUð ˜$ó ð 13·
±
·±Ø)ó1Ð ¨¡ó ð 02¯z©z¯~©~Ø(ó0Ð˜x¨™}ó ð (*§z¡z§~¡~Ø3°Só(Ð ô r   rp  c                   ó>  — e Zd ZU g Zee   ed<   ddgZee   ed<   dZe	d   ed<   dZ
dZd	Zd	ZdZd
Zee   ed<   ej$                  j'                  d«      Zej$                  j'                  dd«      dk(  Zeed<   d
Zee   ed<   dZeed<   d
Zeee      ed<   dZeed<   y
)Úrocmrq  Úgfx90aÚgfx942Úck_supported_archrt  )	rs  rr  rt  ru  z-Osz-Ozz-Ominz-Ofastz-Omaxrv  FTNÚ	rocm_homeÚTORCHINDUCTOR_CK_DIRÚ-INDUCTOR_CK_BACKEND_GENERATE_TEST_RUNNER_CODEr   r   r}  Ún_max_profiling_configsÚuse_preselected_instancesÚkBatch_sweepr,  Úsplit_k_threshold)rº   r»   r¼   rq  rŽ  r  r¾   r“  rv  r   Úis_debugÚ
save_tempsr‡  Úflush_denormalsÚprint_kernel_resource_usager”  r   r   r   r   Úck_dirr}  r½   r—  r¿   r˜  r™  rš  r   r   r   r�  r�  ;  sñ   … ð €Dˆ$ˆs‰)Óð %-¨hÐ#7Ð�t˜C‘yÓ7ð 	ð �wØLñó ð
 €Hð €Jð €Mð €Oð #(Ðð  $€Iˆx˜‰}Ó#ð �Z‰Z�^‰^Ð2Ó3€Fð 	�
‰
�‰ÐFÈÓLÐPSÑSð ˜$ó ð
 .2Ð˜X c™]Ó1ð ',Ð˜tÓ+ð )-€L�(˜4 ™9Ñ%Ó,ð  Ð�sÔr   r�  )rì   ra   ÚhalideÚcpu_backend)ra   r   Úcuda_backendc                   óJ   — e Zd ZU dZdZdZed   ed<   dZed   ed<   dZ	dZ
dZy	)
r   Úhostz	host-cudaÚAnderson2021)r¥  ÚLi2018Ú	Adams2019ÚMullapudi2016Úscheduler_cudar§  Úscheduler_cpuFN)rº   r»   r¼   Ú
cpu_targetÚ
gpu_targetr©  r   r¾   rª  ÚassertsÚdebugÚscan_kernelsr   r   r   r   r   |  sQ   … à€Jð €Jð
 	ð �GÐRÑSó ð 	ð �7ÐQÑRó ð
 €Gð €Eð �Lr   r   c                   óæ  — e Zd ZU ej                  j                  dd«      dk(  Zej                  j                  dd«      dk(  ZdZe	e
   ed<   dZdZdZdZdZdZdZej                  j                  d	d«      dk(  Zej                  j                  d
d«      dk(  Zej                  j                  dd«      Zej                  j                  dd«      ZdZdZe	ee
gdf      ed<   dZeed<   dZeed<   y)ÚtraceÚTORCH_COMPILE_DEBUGr   r   ÚTORCH_COMPILE_DEBUG_SAVE_REALNÚ	debug_dirFTÚINDUCTOR_POST_FUSION_SVGÚINDUCTOR_ORIG_FX_SVGÚINDUCTOR_DOT_GRAPH_SHAPE_SVGÚ INDUCTOR_LOG_URL_FOR_GRAPH_XFORMÚ
upload_tarÚlog_autotuning_resultsÚ1log_inductor_triton_kernel_to_post_grad_node_info)rº   r»   r¼   r   r   r   ÚenabledÚsave_real_tensorsr´  r   r  r¾   Ú	debug_logÚinfo_logÚfx_graphÚfx_graph_transformedÚir_pre_fusionÚir_post_fusionÚoutput_codeÚgraph_diagramÚdraw_orig_fx_graphÚdot_graph_shapeÚlog_url_for_graph_xformÚcompile_profiler¹  r   rº  r½   r»  r   r   r   r±  r±  ˜  s!  … à�j‰j�n‰nÐ2°CÓ8¸CÑ?€Gð Ÿ
™
Ÿ™Ð'FÈÓLÐPSÑSÐð  $€Iˆx˜‰}Ó#ð €Ið €Hð €Hð  Ðð €Mð €Nð €Kð —J‘J—N‘NÐ#=¸sÓCÀsÑJ€Mð Ÿ™Ÿ™Ð(>ÀÓDÈÑKÐð —j‘j—n‘nÐ%CÀTÓJ€Oð !Ÿj™jŸn™nÐ-OÐQUÓVÐð €Oð 37€J�˜ 3 %¨ +Ñ.Ñ/Ó6à#(Ð˜DÓ(ð ?CÐ5°tÔBr   r±  )ztrace.upload_tarrS   rT   rU   zaot_inductor.repro_levelzaot_inductor.dump_aoti_minifierÚ_save_config_ignore)r±  zcuda.cutlass_dirr±   rÒ   rR   rQ   rç   Ú_cache_config_ignore_prefixÚexternal_matmulc                   ó`   — e Zd ZU dZeed<   dZee   ed<   dZ	dZ
ee   ed<   dZee   ed<   dZy)Útest_configsFÚ%force_extern_kernel_in_multi_templateNÚmax_mm_configsÚautotune_choice_name_regexÚautotune_choice_desc_regex)rº   r»   r¼   rÏ  r½   r¾   rÐ  r   r¿   Úruntime_triton_dtype_assertrÑ  r  rÒ  Ú*graphsafe_rng_func_ignores_fallback_randomr   r   r   rÎ  rÎ  ø  sG   … Ø27Ð)¨4Ó7à$(€N�H˜S‘MÓ(à"'Ðð 15Ð ¨¡Ó4Ø04Ð ¨¡Ó4à16Ñ.r   rÎ  )Ú*)ðr   rË   Útypingr   r   r   r   r   r   r*   Ú!torch._inductor.custom_graph_passÚtorch._environmentr	   Útorch.utils._config_moduler
   r   r   r   r   Úinplace_paddingÚcan_inplace_pad_graph_inputr½   r   r   r!   r$   r'   r0   Úenable_auto_functionalized_v2r®  Údisable_progressÚverbose_progressr6   r¾   r7   r8   r9   r:   r;   r=   r>   r¿   rA   rB   rD   Úonline_softmaxÚdceÚstatic_weight_shapesÚsize_assertsÚnan_assertsÚscalar_assertsÚpick_loop_ordersÚinplace_buffersÚallow_buffer_reuseÚmemory_planningr‡  rP   Úbenchmark_harnessÚepilogue_fusionÚprologue_fusionÚepilogue_fusion_firstÚpattern_matcherÚb2b_gemm_passrQ   rŒ   Úcustom_graph_passÚCustomGraphPassTyperR   rS   ÚfxÚGraphrT   rU   ÚgraphrV   rŽ  Úsplit_cat_fx_passesÚ efficient_conv_bn_eval_fx_passesÚis_predispatchÚgroup_fusionÚbatch_fusionrW   rn  r  rX   Úreorder_for_localityÚdynamic_scale_rblockÚforce_fuse_int_mm_with_mulÚuse_mixed_mmr_   rc   Ú reorder_for_compute_comm_overlaprg   Úreorder_for_peak_memoryÚestimate_op_runtimeÚintra_node_bwÚinter_node_bwrj   Úmax_autotuneÚmax_autotune_pointwiseÚmax_autotune_gemmro   Úgraph_partitionÚforce_same_precisionÚupperÚmax_autotune_gemm_backendsÚmax_autotune_conv_backendsrv   Úautotune_fallback_to_atenÚunbacked_symint_fallbackÚsearch_autotune_cacheÚ	save_argsÚautotune_in_subprocÚ+max_autotune_subproc_result_timeout_secondsÚ-max_autotune_subproc_graceful_timeout_secondsÚ.max_autotune_subproc_terminate_timeout_secondsÚautotune_multi_deviceÚcoordinate_descent_tuningÚ'coordinate_descent_check_all_directionsÚ coordinate_descent_search_radiusrŽ   r‘   rˆ   r…   r†   Úautoheuristic_log_pathr/   ÚhipÚlayout_opt_defaultÚlayout_optimizationÚforce_layout_optimizationÚkeep_output_strideÚwarn_mix_layoutÚrealize_reads_thresholdÚrealize_opcount_thresholdÚrealize_acc_reads_thresholdÚfallback_randomÚimplicit_fallbacksÚaggressive_fusionr›   r�   Úenabled_metric_tablesr    Úscore_fusion_memory_thresholdÚbenchmark_epilogue_fusionÚ max_epilogue_benchmarked_choicesÚmax_fusion_sizeÚmax_pointwise_cat_inputsÚforce_pointwise_catÚunroll_reductions_thresholdÚcomment_originÚconv_1x1_as_mmÚsplit_reductionsÚbenchmark_kernelÚconstant_and_index_propagationÚalways_keep_tensor_constantsÚassert_indirect_indexingÚcompute_all_boundsÚcombo_kernelsÚbenchmark_combo_kernelÚcombo_kernels_autotuneÚcombo_kernel_allow_mixed_sizesÚ#combo_kernel_foreach_dynamic_shapesÚjoint_graph_constant_foldingÚdebug_index_assertsÚemulate_precision_castsÚ__version__Úis_nightly_or_sourceÚdeveloper_warningsÚ"optimize_scatter_upon_const_tensorr¨   r©   r°   r±   Ú_fuse_ddp_communicationÚ_fuse_ddp_bucket_sizer´   rµ   r·   rÂ   rÓ   rÒ   Úlibfb.pyrÕ   Ú__package__Úget_dir_pathrˆ  rŠ  ÚreplaceÚseprÔ   Ú
ValueErrorÚImportErrorÚkernel_name_max_opsÚshape_paddingÚcomprehensive_paddingÚpad_channels_lastÚdisable_padding_cpuÚpadding_alignment_bytesÚpadding_stride_thresholdÚpad_outputsÚbw_outputs_user_visiblerÚ   Úpermute_fusionÚprofiler_mark_wrapper_callÚgenerate_intermediate_hooksÚdebug_ir_tracebackÚ_raise_error_for_testingÚ_profile_varÚprofile_bandwidthÚprofile_bandwidth_regexrÞ   Ú/profile_bandwidth_with_do_bench_using_profilingÚdisable_cpp_codegenrá   râ   rã   rä   rå   ræ   rç   Úenable_linear_binary_foldingrê   rì   ra   rQ  rp  r�  r¡  r¢  r   r±  rÊ  rË  rÌ  ÚTensorrÎ  Útorch.utils._config_typingÚmodulesrº   r   r   r   ú<module>r_     so  ðÜ 	Û 
ß I× Iã Û (Ý (ß VÑ Vð —*‘*—.‘.Ð!@À#ÓFÈ#ÑM€Ø#Ð ðC x°¡~ó Cð˜H T™Nó ðC x°¡~ó CðK¨x¸©~ó Kð°8¸D±>ó ð
 ó 
ð ‡J�J‡N�NÐ7¸Ó=ÀÑDð ð
 	€ð Ð ð Ð ñ Ø?Ø1Øô€�ó ñ )FÓ(GÐ �x ‘~Ó Gñ .Ó/ð " 8¨D¡>ó ð "Ð �dÓ !ñ )FÓ(GÐ �x ‘~Ó Gñ 1VÓ0WÐ ˜x¨™~Ó Wð  ŸZ™ZŸ^™^Ð,PÓQÐUXÑXÐ �dÓ Xð )-Ð ˜ ™Ó ,ð ð $ WØ1ñ&ó ð ð (¨Ø1ñ*ó ð —J‘J—N‘NÐ#>ÀÓDÈÑK€ˆTÓ Kà—‘—‘Ð >ÀÓDÈÑK€ð €ð Ð ð �z‰z�~‰~Ð:¸CÓ@ÀCÑG€Ø�j‰j�n‰nÐ8Ó9¸SÑ@€Ø—‘—‘Ð >ÀÓDÈÑK€ð Ð ð €ð Ð ð —*‘*—.‘.Ð!@À#ÓFÈ#ÑM€ð —
‘
—‘Ð<Ó=ÀÑD€ð HJÇzÁzÇ~Á~Ø óH€ˆWÐCÑDó ð
 Ð ð €ñ *Ó+€ð Ð ð €ð €ð TXÐ ˜5Ÿ?™?×<Ñ<×PÑPÓ WØTXÐ ˜EŸO™O×=Ñ=×QÑQÓ Xð EIÐ �x ¨%¯(©(¯.©.Ð)9¸4Ð)?Ñ @ÑAÓ HØEIÐ ˜ ¨5¯8©8¯>©>Ð*:¸DÐ*@Ñ!AÑBÓ Ið
 JNÐ �h˜x¨¯©¯©×)=Ñ)=Ð(>ÀÐ(DÑEÑFÓ Mð 	ð ˜ØØ	Ð;Ñ	<Ð=ØÐ:Ñ;ð	=ññó 	ð Ð ð $)Ð  ð €ð €ð €ð( 68Ð ˜˜c 4¨¨S¨¡>Ð1Ñ2Ó 7ð 79Ð ˜$˜s D¨¨c¨¡NÐ2Ñ3Ó 8ð Ð ð —z‘z—~‘~Ð&JÈCÓPÐTWÑWÐ ð #Ð ð
 €ð ØØØñ	+Ð ˜˜c 3˜h™ó ð( FQ€�ÐAÑBÓ Pð $)Ð  òð (¨Ø	ØØØÐ?Ñ@ÐAØÐ>Ñ?ðAñ	
ð	ññ*ó ð Ð ð  Ð ð €ð €ñ &,ØØ?Ø<ô&Ð ˜dó ð �z‰z�~‰~Ð:Ó;¸sÑB€ð Ÿ™Ÿ™Ð(NÓOÐSVÑVÐ ð —J‘J—N‘NÐ#DÓEÈÑLÐ ð 13Ð  ¨¡Ó 2ð €ñ ŒK�D˜RŸZ™ZŸ^™^Ð,PÓQÐUXÑXð ð  ŸZ™ZŸ^™^Ø.Ð0Aóç�%ƒ'ð ð  ŸZ™ZŸ^™^Ø.°óç�%ƒ'ð ð DFÇ:Á:Ç>Á>Ø2°IóDç�%ƒ'ð  Ð(?Ñ @ó 
ð ‡J�J‡N�NÐ<¸cÓBÀcÑIð ð  Ð ð Ÿ
™
Ÿ™Ð'LÓMÐQTÑTÐ à�J‰J�N‰NÐ4Ó5¸Ñ<€	ð —j‘j—n‘nÐ%HÓIÈSÑPÐ ð
 /3Ð +à03Ð -à14Ð .ð Ÿ
™
Ÿ™Ð'LÓMÐQTÑTÐ ð ‡J�J‡N�NÐ<Ó=ÀÑDð ð ‡J�J‡N�NÐJÓKÈsÑRð (ñ $'Ø‡J�J‡N�NÐ<¸cÓBó$Ð  ð Ÿ
™
Ÿ™Ð'LÈbÓQÐ à—J‘J—N‘NÐ#DÀjÓQÐ ðB˜Cð B Dó BðK ð K¨ó KðG˜Cð G Dó Gð Ÿ™Ÿ™Ø*¨IóÐ ð
 !&§¡× 1Ò 1‘S°sÐ à‡J�J‡N�NÐ6Ð8JÓKÈsÑRð ð ŸJ™JŸN™NÐ+KÈSÓQÐUXÑXÐ ð —Z‘Z—^‘^Ð$FÈÓLÐPSÑSÐ ð —*‘*—.‘.Ð!@ÓAÀSÑH€ð
 Ð ØÐ ð  Ð ð €ð Ð ð Ð ð —Z‘Z—^‘^Ð$@ÓAÀSÑH€ˆdÓ HØŸ™Ÿ™Ð(HÓIÈSÑPÐ �$Ó PØŸ
™
Ÿ™Ð'LÈbÓQÐ à‡J�J‡N�NÐ=¸sÓCÀsÑJð ˜Dó ð !#Ð ð ‡J�J‡N�NÐ<¸cÓBÀcÑIð ð
 $%Ð  ð €ð Ð ð Ð ð  Ð ð €ð €ð Ð à—:‘:—>‘>Ð"BÀCÓHÈCÑOÐ ð "&Ð ð  %Ð ð  Ð ð Ð ð €àÐ ð Ð ð "#Ð à&+Ð #ð  $Ð ð Ð ð ‡J�J‡N�NÐ:¸CÓ@ÀCÑGð ð
  × 1Ò 1Ð1ÒO°U¸e×>OÒ>OÐ5OÐ Ù“[Ò8Ð$8Ð ð ‡J�J‡N�NÐEÀsÓKÈsÑRð #ð
 &*Ð �X˜c‘]Ó )Ø(,Ð ˜ ™Ó ,ð
 Có 
ñ 6Ó7Ð �SÓ 7ð  Ð ØÐ ð  ØðIÐ   U¨8°IÑ+>ÀÐ+CÑ%DÑ Eó ð
 !Ð �DÓ  ÷:ñ :ð
6¨Tó 6ð! ó !ñJ *3¬¡Ñ:PÓ:R€�˜#‘Ó Rð ˜3‘-Ó Ù„;ð
 Ý$áØ3˜w×3Ò3Ø—’—’˜[×0Ò0°°b·f²fÓ=¸zÓJó Ñð  4˜w×3Ò3°JÓ?Ðøð
 Ðð Ð ð —
‘
—‘Ð<¸cÓBÀcÑI€ð ‡J�J‡N�NÐ8¸#Ó>À#ÑEð ð Ð ð Ð ð Ð ð(  Ð ð €ð Ð ð €�Ó ð —‘—‘Ð >ÀÓDÈÑK€ð #Ð ð
 $Ð ð Ð ð !Ð à�z‰z�~‰~Ð5°rÓ:€Ø  BÑ&Ð Ø ,°Ò 3™"¸Ð ð +-¯*©*¯.©.Ø" Dó+Ð ˜( 3™-ó ð
 ‡J�J‡N�NÐHÓIÈSÑPð 0ð Ð ð —‘—‘Ð 8¸#Ó>À#ÑE€ˆ$Ó Eð %*Ð ˜TÓ )ð  %Ð ˜Ó $ð
 $Ð �tÓ #ð 8=Ð .°Ó <ð ,1Ð " DÓ 0ð 49Ð *¨DÓ 8ð ‡J�J‡N�NÐ?ÀÓEÈÑLð ð Ÿ*™*Ÿ.™.Ð)JÈCÓPÐTWÑWÐ �4Ó W÷i!ñ i!÷Zp;ñ p;÷fW)ñ W)÷tWñ W÷t7 ñ 7 ðv 38€ˆWÐ.Ñ/Ó 7ð -5€ˆgÐ(Ñ)Ó 4÷ñ ÷8@Cñ @CòF"Ð �T˜#‘Yó ò*Ð ˜T #™Yó ð  UW€��h §¢¨e¯lªl¸E¿LºLÐIÈ4ÐOÑPÑQÓ V÷7ñ 7ñ Ü,ñ �c—k’k (Ñ+Õ ,øð] ˜Ð$ò  ØÓð ús   ãA'm8 í8	nîn