Ë
    þÍ:j¢G  ã                   óà  — d dl Z d dl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
 d dlZd dlZddlmZ ddlmZ ddlmZ 	 d dlZej*                  j-                  ej*                  j.                  «        eej2                  j4                  j6                  d	«      s ed
«      Z	 ej:                  Zd1d„Z de!fd„Z"d a#da$	 	 	 	 	 	 d2de%dejL                  de'de%de	e(e%ef      de	ejL                     de	e'   de	e%   de	e(e%ef      ddfd„Z)ddde'de'de%dd d!e(e%e	e
e*e+e*d"f   e,e*   f      f   de,d#   fd$„Z-d%ejL                  d&e,d#   d'e*d(e'dejL                  f
d)„Z.	 	 	 	 d3de%d*e
e'ef   d+e	e
e'ef      de%d,e%de+ejL                  ejL                  e(e%ef   f   fd-„Z/ddde!fd.„Z0ddde,e*   fd/„Z1d4de%de%de+e,e*   e	e'   f   fd0„Z2y# e$ r ej>                  ZY �Œ)w xY w# e$ r  ed«      ZY �Œ=w xY w)5é    N)ÚFraction)ÚAnyÚOptionalÚUnioné   )Ú_log_api_usage_onceé   )Ú
_video_opt)Ú _raise_video_deprecation_warningÚ	pict_typea+  Your version of PyAV is too old for the necessary video operations in torchvision.
If you are on Python 3.5, you will have to build from source (the conda-forge
packages are not up-to-date).  See
https://github.com/mikeboers/PyAV#installation for instructions on how to
install PyAV on your system.
z¼PyAV is not installed, and is necessary for the video operations in torchvision.
See https://github.com/mikeboers/PyAV#installation for instructions on how to
install PyAV on your system.
Úreturnc                  ó8   — t        t        t        «      rt        ‚y ©N©Ú
isinstanceÚavÚ	Exception© ó    úi/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/torchvision/io/video.pyÚ_check_av_availabler   ,   s   € Ü”"”iÔ Üˆð !r   c                  ó,   — t        t        t        «       S r   r   r   r   r   Ú_av_availabler   1   s   € Üœ"œiÓ(Ð(Ð(r   é
   ÚfilenameÚvideo_arrayÚfpsÚvideo_codecÚoptionsÚaudio_arrayÚ	audio_fpsÚaudio_codecÚaudio_optionsc	                 ó:  — t        «        t        j                  j                  «       s-t        j                  j	                  «       st        t        «       t        «        t        j                  |t        j                  ¬«      j                  d¬«      }t        |t        «      rt        t        j                  |«      «      }t!        j"                  | d¬«      5 }	|	j%                  ||¬«      }
|j&                  d   |
_        |j&                  d   |
_        |d	k7  rd
nd|
_        |xs i |
_        |��2dddddddddddœ
}|	j%                  ||¬«      }|xs i |_        |j&                  d   }|dkD  rdnd}|	j0                  j2                  d   j4                  j6                  }t        j8                  ||   «      }t        j                  |«      j                  d¬«      j;                  |«      }t         j<                  j?                  |||¬«      }||_         |jC                  |«      D ]  }|	jE                  |«       Œ |jC                  «       D ]  }|	jE                  |«       Œ |D ]R  }t         jF                  j?                  |d¬«      }	 d|_$        |
jC                  |«      D ]  }|	jE                  |«       Œ ŒT |
jC                  «       D ]  }|	jE                  |«       Œ 	 ddd«       y# tJ        $ r ddl&m'} |jP                  |_$        Y Œ{w xY w# 1 sw Y   yxY w)a~  
    [DEPRECATED] Writes a 4d tensor in [T, H, W, C] format in a video file.

    .. warning::

        DEPRECATED: All the video decoding and encoding capabilities of torchvision
        are deprecated from version 0.22 and will be removed in version 0.24.  We
        recommend that you migrate to
        `TorchCodec <https://github.com/pytorch/torchcodec>`__, where we'll
        consolidate the future decoding/encoding capabilities of PyTorch

    This function relies on PyAV (therefore, ultimately FFmpeg) to encode
    videos, you can get more fine-grained control by referring to the other
    options at your disposal within `the FFMpeg wiki
    <http://trac.ffmpeg.org/wiki#Encoding>`_.

    Args:
        filename (str): path where the video will be saved
        video_array (Tensor[T, H, W, C]): tensor containing the individual frames,
            as a uint8 tensor in [T, H, W, C] format
        fps (Number): video frames per second
        video_codec (str): the name of the video codec, i.e. "libx264", "h264", etc.
        options (Dict): dictionary containing options to be passed into the PyAV video stream.
            The list of options is codec-dependent and can all
            be found from `the FFMpeg wiki <http://trac.ffmpeg.org/wiki#Encoding>`_.
        audio_array (Tensor[C, N]): tensor containing the audio, where C is the number of channels
            and N is the number of samples
        audio_fps (Number): audio sample rate, typically 44100 or 48000
        audio_codec (str): the name of the audio codec, i.e. "mp3", "aac", etc.
        audio_options (Dict): dictionary containing options to be passed into the PyAV audio stream.
            The list of options is codec-dependent and can all
            be found from `the FFMpeg wiki <http://trac.ffmpeg.org/wiki#Encoding>`_.

    Examples::
        >>> # Creating libx264 video with CRF 17, for visually lossless footage:
        >>>
        >>> from torchvision.io import write_video
        >>> # 1000 frames of 100x100, 3-channel image.
        >>> vid = torch.randn(1000, 100, 100, 3, dtype = torch.uint8)
        >>> write_video("video.mp4", options = {"crf": "17"})

    ©ÚdtypeT)ÚforceÚw)Úmode)Úrater   r	   Ú
libx264rgbÚyuv420pÚrgb24Nz<f8z<f4z<i2z<i4Úu1)
ÚdblÚdblpÚfltÚfltpÚs16Ús16pÚs32Ús32pÚu8Úu8pr   ÚstereoÚmono)ÚformatÚlayout)r;   ÚNONE)ÚPictureType))r   ÚtorchÚjitÚis_scriptingÚ
is_tracingr   Úwrite_videor   Ú	as_tensorÚuint8Únumpyr   ÚfloatÚintÚnpÚroundr   ÚopenÚ
add_streamÚshapeÚwidthÚheightÚpix_fmtr   ÚstreamsÚaudior;   Únamer&   ÚastypeÚ
AudioFrameÚfrom_ndarrayÚsample_rateÚencodeÚmuxÚ
VideoFramer   Ú	TypeErrorÚav.video.framer>   r=   )r   r   r   r   r   r    r!   r"   r#   Ú	containerÚstreamÚaudio_format_dtypesÚa_streamÚnum_channelsÚaudio_layoutÚaudio_sample_fmtÚformat_dtypeÚframeÚpacketÚimgr>   s                        r   rC   rC   :   sÔ  € ôj %Ô&Ü�9‰9×!Ñ!Ô#¬E¯I©I×,@Ñ,@Ô,BÜœKÔ(ÜÔÜ—/‘/ +´U·[±[ÔA×GÑGÈdÐGÓS€Kô �#”uÔÜ”"—(‘(˜3“-Ó ˆä	�‰� Ô	$ð 6"¨	Ø×%Ñ% k¸Ð%Ó<ˆØ"×(Ñ(¨Ñ+ˆŒØ#×)Ñ)¨!Ñ,ˆŒØ&1°\Ò&A™ÀwˆŒØ š BˆŒàÑ"àØØØØØØØØØñ#Ðð !×+Ñ+¨K¸iÐ+ÓHˆHØ,Ò2°ˆHÔà&×,Ñ,¨QÑ/ˆLØ'3°aÒ'7™8¸VˆLØ(×0Ñ0×6Ñ6°qÑ9×@Ñ@×EÑEÐäŸ8™8Ð$7Ð8HÑ$IÓJˆLÜŸ/™/¨+Ó6×<Ñ<À4Ð<ÓH×OÑOÐP\Ó]ˆKä—M‘M×.Ñ.¨{ÐCSÐ\hÐ.ÓiˆEà )ˆEÔà"Ÿ/™/¨%Ó0ò &�Ø—‘˜fÕ%ð&ð #Ÿ/™/Ó+ò &�Ø—‘˜fÕ%ð&ð ò 
	&ˆCÜ—M‘M×.Ñ.¨s¸7Ð.ÓCˆEð3Ø"(�”ð !Ÿ-™-¨Ó.ò &�Ø—‘˜fÕ%ñ&ð
	&ð —m‘m“oò 	"ˆFØ�M‰M˜&Õ!ñ	"÷k6"ð 6"øôX ò 3Ý6à"-×"2Ñ"2�–ð3ú÷Y6"ð 6"ús2   ÃF0LÊK+ÊALË+ LÌLÌLÌLÌLr]   zav.container.ContainerÚstart_offsetÚ
end_offsetÚpts_unitr^   zav.stream.StreamÚstream_name.zav.frame.Framec                 ó  — t         dz  a t         t        z  t        dz
  k(  rt        j                  «        |dk(  rkt	        t        j                  |d|j                  z  z  «      «      }|t        d«      k7  rDt	        t        j                  |d|j                  z  z  «      «      }nt        j                  d«       i }d}d}|j                  dk(  rv|j                  j                  }	|	r^d|	v rZ|	j                  d«      }
|	|
d  }t!        j"                  d	|«      }|€t!        j"                  d
|«      }|�|j%                  d«      dk(  }|}t'        |dz
  d«      }|rt'        ||z
  d«      }	 | j)                  |dd|¬«       d}	 t-         | j.                  di |¤Ž«      D ]2  \  }}|||j0                  <   |j0                  |k\  sŒ%|r||k  r|dz  }Œ2 n t3        |«      D �cg c]#  }|||   j0                  cxk  r|k  sŒn n||   ‘Œ% }}t5        |«      dkD  rL|dkD  rG||vrC|D �cg c]
  }||k  sŒ	|‘Œ }}t5        |«      dkD  r t'        |«      }|j7                  d||   «       |S # t*        $ r g cY S w xY w# t*        $ r Y Œ¯w xY wc c}w c c}w )Nr	   ÚsecÚinfzBThe pts_unit 'pts' gives wrong results. Please use pts_unit 'sec'.Té   Úvideos   DivXs   DivX(\d+)Build(\d+)(\w)s   DivX(\d+)b(\d+)(\w)é   ó   pr   F)Ú	any_frameÚbackwardr^   r   )Ú_CALLED_TIMESÚ_GC_COLLECTION_INTERVALÚgcÚcollectrH   ÚmathÚfloorÚ	time_baserG   ÚceilÚwarningsÚwarnÚtypeÚcodec_contextÚ	extradataÚfindÚreÚsearchÚgroupÚmaxÚseekÚFFmpegErrorÚ	enumerateÚdecodeÚptsÚsortedÚlenÚinsert)r]   rh   ri   rj   r^   rk   ÚframesÚshould_bufferÚmax_buffer_sizer�   ÚposÚdÚoÚseek_offsetÚbuffer_countÚ_idxre   ÚiÚresultÚpreceding_framesÚfirst_frame_ptss                        r   Ú_read_from_streamrœ   ³   s¡  € ô �QÑ€MÜÔ.Ñ.Ô2IÈAÑ2MÒMÜ
�
‰
Œà�5Òô œ4Ÿ:™: l°a¸&×:JÑ:JÑ6JÑ&KÓLÓMˆØœ˜u›Ò%ÜœTŸY™Y z°Q¸×9IÑ9IÑ5IÑ'JÓKÓL‰Jä�‰ÐZÔ[à€FØ€MØ€OØ‡{�{�gÒð ×(Ñ(×2Ñ2ˆ	ñ ˜ IÑ-à—.‘. Ó)ˆCØ˜#˜$�ˆAÜ—	‘	Ð5°qÓ9ˆAØˆyÜ—I‘IÐ5°qÓ9�Øˆ}Ø !§¡¨£
¨dÑ 2�Ø€Kä�k A‘o qÓ)€KÙô ˜+¨Ñ7¸Ó;ˆðà�‰�{¨e¸dÈ6ˆÔRð
 €Lð
Ü$Ð%5 Y×%5Ñ%5Ñ%D¸Ñ%DÓEò 	‰KˆD�%Ø %ˆF�5—9‘9ÑØ�y‰y˜JÓ&Ù  \°OÒ%CØ  AÑ%�LØÙð	ô "(¨£Ö_˜A°<À6È!Á9Ç=Á=Ô3^ÐT^Ö3^ˆf�Q‹iÐ_€FÐ_Ü
ˆ6ƒ{�Q‚˜<¨!Ò+°ÀFÑ0Jð (.ÖB !°°\Ó1AšAÐBÐÐBÜÐÓ  1Ò$Ü!Ð"2Ó3ˆOØ�M‰M˜!˜V OÑ4Ô5Ø€Møô5 ò ð Š	ðûô ò áðüò `ùò
 CsB   Å(I# Æ ?I4 Ç I4 ÇJÇ;
JÈ"
JÈ-JÉ#I1É0I1É4	J É?J ÚaframesÚaudio_framesÚ	ref_startÚref_endc                 óè   — |d   j                   |d   j                   }}| j                  d   }||z
  dz   |z  }d}|}	||k  rt        ||z
  |z  «      }||kD  rt        ||z
  |z  «      }	| d d …||	…f   S )Nr   éÿÿÿÿr	   )r‹   rM   rH   )
r�   rž   rŸ   r    ÚstartÚendÚtotal_aframesÚstep_per_aframeÚs_idxÚe_idxs
             r   Ú_align_audio_framesr©     s•   € ð ˜a‘×$Ñ$ l°2Ñ&6×&:Ñ&:ˆ3€EØ—M‘M !Ñ$€MØ˜U‘{ Q‘¨-Ñ7€OØ€EØ€EØˆyÒÜ�Y Ñ&¨/Ñ9Ó:ˆØ
ˆW‚}Ü�W˜s‘] oÑ5Ó6ˆØ’1�e˜E�k�>Ñ"Ð"r   Ú	start_ptsÚend_ptsÚoutput_formatc           
      óÂ  — t        «        t        j                  j                  «       s-t        j                  j	                  «       st        t        «       |j                  «       }|dvrt        d|› d�«      ‚ddl	m
}  |«       dk7  rKt        j                  j                  | «      st        d| › �«      ‚t        j                   | |||«      \  }}}�nÈt#        «        |€t%        d	«      }||k  rt        d
|› d|› �«      ‚i }g }	g }
t        j&                  }	 t)        j*                  | d¬«      5 }|j,                  j.                  r#|j,                  j.                  d   j0                  }|j,                  j2                  r\t5        |||||j,                  j2                  d   ddi«      }	|j,                  j2                  d   j6                  }|�t%        |«      |d<   |j,                  j.                  rOt5        |||||j,                  j.                  d   ddi«      }
|j,                  j.                  d   j8                  |d<   ddd«       |	D �cg c]   }|j=                  «       j?                  «       ‘Œ" }}|
D �cg c]  }|j?                  «       ‘Œ }}|r)t        j@                  tC        jD                  |«      «      }n%t        jF                  dt        jH                  ¬«      }|r•tC        jJ                  |d«      }t        j@                  |«      }|dk(  rVtM        tO        jP                  |d|z  z  «      «      }|t%        d	«      k7  r$tM        tO        jR                  |d|z  z  «      «      }tU        ||
||«      }n%t        jF                  dt        jV                  ¬«      }|dk(  r|jY                  dddd«      }|||fS # 1 sw Y   �Œ|xY w# t:        $ r Y �Œ‹w xY wc c}w c c}w )aÂ  [DEPRECATED] Reads a video from a file, returning both the video frames and the audio frames

    .. warning::

        DEPRECATED: All the video decoding and encoding capabilities of torchvision
        are deprecated from version 0.22 and will be removed in version 0.24.  We
        recommend that you migrate to
        `TorchCodec <https://github.com/pytorch/torchcodec>`__, where we'll
        consolidate the future decoding/encoding capabilities of PyTorch

    Args:
        filename (str): path to the video file. If using the pyav backend, this can be whatever ``av.open`` accepts.
        start_pts (int if pts_unit = 'pts', float / Fraction if pts_unit = 'sec', optional):
            The start presentation time of the video
        end_pts (int if pts_unit = 'pts', float / Fraction if pts_unit = 'sec', optional):
            The end presentation time
        pts_unit (str, optional): unit in which start_pts and end_pts values will be interpreted,
            either 'pts' or 'sec'. Defaults to 'pts'.
        output_format (str, optional): The format of the output video tensors. Can be either "THWC" (default) or "TCHW".

    Returns:
        vframes (Tensor[T, H, W, C] or Tensor[T, C, H, W]): the `T` video frames
        aframes (Tensor[K, L]): the audio frames, where `K` is the number of channels and `L` is the number of points
        info (Dict): metadata for the video and audio. Can contain the fields video_fps (float) and audio_fps (int)
    )ÚTHWCÚTCHWz5output_format should be either 'THWC' or 'TCHW', got ú.r   ©Úget_video_backendÚpyavzFile not found: Nrn   z7end_pts should be larger than start_pts, got start_pts=z and end_pts=Úignore©Úmetadata_errorsrp   Ú	video_fpsrR   r!   )r   r	   r	   rq   r%   r	   rm   )r	   r   r¯   rq   r   )-r   r?   r@   rA   rB   r   Ú
read_videoÚupperÚ
ValueErrorÚtorchvisionr²   ÚosÚpathÚexistsÚRuntimeErrorr
   Ú_read_videor   rG   Údefault_timebaser   rK   rQ   rR   r{   rp   rœ   Úaverage_rater*   rˆ   Úto_rgbÚ
to_ndarrayrD   rI   ÚstackÚemptyrE   ÚconcatenaterH   ry   rz   r|   r©   Úfloat32Úpermute)r   rª   r«   rj   r¬   r²   Úvframesr�   ÚinfoÚvideo_framesrž   Úaudio_timebaser]   r·   re   Úvframes_listÚaframes_lists                    r   r¸   r¸     s€  € ô@ %Ô&Ü�9‰9×!Ñ!Ô#¬E¯I©I×,@Ñ,@Ô,BÜœJÔ'à!×'Ñ'Ó)€MØÐ,Ñ,ÜÐPÐQ^ÐP_Ð_`ÐaÓbÐbå-áÓ˜fÒ$Ü�w‰w�~‰~˜hÔ'ÜÐ!1°(°Ð<Ó=Ð=Ü!+×!7Ñ!7¸À)ÈWÐV^Ó!_Ñˆ�š$äÔàˆ?Ü˜E“lˆGà�YÒÜØIÈ)ÈÐTaÐbiÐajÐkóð ð ˆØˆØˆÜ#×4Ñ4ˆð	Ü—‘˜°8Ô<ð HÀ	Ø×$Ñ$×*Ò*Ø%.×%6Ñ%6×%<Ñ%<¸QÑ%?×%IÑ%I�NØ×$Ñ$×*Ò*Ü#4Ø!Ø!ØØ Ø!×)Ñ)×/Ñ/°Ñ2Ø  !˜ó$�Lð !*× 1Ñ 1× 7Ñ 7¸Ñ :× GÑ G�Ià Ð,Ü,1°)Ó,<˜˜[Ñ)à×$Ñ$×*Ò*Ü#4Ø!Ø!ØØ Ø!×)Ñ)×/Ñ/°Ñ2Ø  !˜ó$�Lð )2×(9Ñ(9×(?Ñ(?ÀÑ(B×(GÑ(G�D˜Ñ%÷5Hð@ BNÖN¸˜Ÿ™›×1Ñ1Õ3ÐNˆÐNØ8DÖE¨u˜×(Ñ(Õ*ÐEˆÐEáÜ—o‘o¤b§h¡h¨|Ó&<Ó=‰Gä—k‘k ,´e·k±kÔBˆGáÜ—n‘n \°1Ó5ˆGÜ—o‘o gÓ.ˆGØ˜5Ò Ü¤§
¡
¨9¸¸NÑ8JÑ+KÓ LÓM�	Øœe E›lÒ*Ü!¤$§)¡)¨G°q¸>Ñ7IÑ,JÓ"KÓL�GÜ)¨'°<ÀÈGÓT‰Gä—k‘k &´·±Ô>ˆGà˜Òà—/‘/ ! Q¨¨1Ó-ˆà�G˜TÐ!Ð!÷oHñ Hûô8 ò 	âð	üò OùÚEs7   ÄO Ä/DN:É O É%OÉ7OÎ:OÎ?O Ï	OÏOc                 óZ   — | j                   d   j                  j                  }|€yd|v ryy)Nr   Fs   LavcT)rQ   r€   r�   )r]   r�   s     r   Ú!_can_read_timestamps_from_packetsrÑ   ‹  s5   € Ø×!Ñ! !Ñ$×2Ñ2×<Ñ<€IØÐØØ�)ÑØØr   c                 ó  — t        | «      r7| j                  d¬«      D �cg c]  }|j                  €Œ|j                  ‘Œ c}S | j                  d¬«      D �cg c]  }|j                  €Œ|j                  ‘Œ c}S c c}w c c}w )Nr   )rp   )rÑ   Údemuxr‹   rŠ   )r]   Úxs     r   Ú_decode_video_timestampsrÕ   ”  sh   € Ü(¨Ô3à(Ÿ™°Q˜Ó7ÖM˜!¸1¿5¹5Ñ;L�—“ÒMÐMà(×/Ñ/°aÐ/Ó8ÖN˜!¸A¿E¹EÑ<M�—“ÒNÐNùò NùâNs    A:²A:ÁA?Á)A?c                 óD  — t        «        t        j                  j                  «       s-t        j                  j	                  «       st        t        «       ddlm}  |«       dk7  rt        j                  | |«      S t        «        d}g }	 t        j                  | d¬«      5 }|j                  j                  rF|j                  j                  d   }|j                   }	 t#        |«      }t+        |j,                  «      }ddd«       |j1                  «        |d
k(  r|D �
cg c]  }
|
z  ‘Œ	 }}
||fS # t$        $ r t'        j(                  d| › �«       Y Œkw xY w# 1 sw Y   Œ[xY w# t$        $ r,}d| › d	|› �}	t'        j(                  |	t.        «       Y d}~ŒŽd}~ww xY wc c}
w )aœ  [DEPREACTED] List the video frames timestamps.

    .. warning::

        DEPRECATED: All the video decoding and encoding capabilities of torchvision
        are deprecated from version 0.22 and will be removed in version 0.24.  We
        recommend that you migrate to
        `TorchCodec <https://github.com/pytorch/torchcodec>`__, where we'll
        consolidate the future decoding/encoding capabilities of PyTorch

    Note that the function decodes the whole video frame-by-frame.

    Args:
        filename (str): path to the video file
        pts_unit (str, optional): unit in which timestamp values will be returned
            either 'pts' or 'sec'. Defaults to 'pts'.

    Returns:
        pts (List[int] if pts_unit = 'pts', List[Fraction] if pts_unit = 'sec'):
            presentation timestamps for each one of the frames in the video.
        video_fps (float, optional): the frame rate for the video

    r   r±   r³   Nr´   rµ   z Failed decoding frames for file zFailed to open container for z; Caught error: rm   )r   r?   r@   rA   rB   r   Úread_video_timestampsr»   r²   r
   Ú_read_video_timestampsr   r   rK   rQ   rp   r{   rÕ   rˆ   r}   r~   rG   rÂ   ÚRuntimeWarningÚsort)r   rj   r²   r·   r‹   r]   Úvideo_streamÚvideo_time_baseÚeÚmsgrÔ   s              r   r×   r×   œ  st  € ô0 %Ô&Ü�9‰9×!Ñ!Ô#¬E¯I©I×,@Ñ,@Ô,BÜÔ1Ô2Ý-áÓ˜fÒ$Ü×0Ñ0°¸8ÓDÐDäÔà€IØ
€Cð+Ü�W‰W�X¨xÔ8ð 	=¸IØ× Ñ ×&Ò&Ø(×0Ñ0×6Ñ6°qÑ9�Ø".×"8Ñ"8�ðQÜ2°9Ó=�Cô " ,×";Ñ";Ó<�	÷	=ð ‡H�H„Jà�5ÒØ,/Ö0 qˆq�?Ó"Ð0ˆÐ0à�	ˆ>Ðøô #ò QÜ—M‘MÐ$DÀXÀJÐ"OÖPðQú÷	=ð 	=ûô ò +Ø-¨h¨ZÐ7GÈÀsÐKˆÜ�‰�cœ>×*Ñ*ûð+üò 1sZ   ÂE% Â"<EÃD2Ã*EÃ?E% Ä FÄ2!EÅEÅEÅEÅE"ÅE% Å%	FÅ."FÆF)r   N)Úlibx264NNNNN)r   Nr‹   r®   )r‹   )3rw   ry   r¼   rƒ   r}   Ú	fractionsr   Útypingr   r   r   rF   rI   r?   Úutilsr   Ú r
   Ú_video_deprecation_warningr   r   ÚloggingÚ	set_levelÚERRORÚhasattrrp   re   rZ   ÚImportErrorrˆ   ÚAttributeErrorÚAVErrorr   Úboolr   ru   rv   ÚstrÚTensorrG   ÚdictrC   rH   ÚtupleÚlistrœ   r©   r¸   rÑ   rÕ   r×   r   r   r   ú<module>rò      s+  ðÛ 	Û Û 	Û 	Û Ý ß 'Ñ 'ã Û å 'Ý Ý HðÛà‡J�J×Ñ˜Ÿ™×)Ñ)Ô*Ù�2—8‘8—>‘>×,Ñ,¨kÔ:Ùðó
ˆð!Ø—n‘nˆóð
)�tó )ð
 €ØÐ ð !Ø(,Ø*.Ø!%Ø!%Ø.2ñv"Øðv"à—‘ðv"ð 
ðv"ð ð	v"ð
 �d˜3 ˜8‘nÑ%ðv"ð ˜%Ÿ,™,Ñ'ðv"ð ˜‰ðv"ð ˜#‘ðv"ð ˜D  c ™NÑ+ðv"ð 
óv"ðrMØ'ðMàðMð ðMð ð	Mð
 ðMð �c˜8 E¨#¨u°S¸#°X©ÀÀSÁ	Ð*IÑ$JÑKÐKÑLðMð 
Ð
ÑóMð`#Ø�\‰\ð#Ø)-Ð.>Ñ)?ð#ØLOð#ØZ_ð#à
‡\�\ó#ð" )*Ø04ØØñv"Øðv"à�U˜H�_Ñ%ðv"ð �e˜E 8˜OÑ,Ñ-ðv"ð ð	v"ð
 ðv"ð ˆ5�<‰<˜Ÿ™ t¨C°¨H¡~Ð5Ñ6óv"ðrÐ1Ið Èdó ðOÐ(@ð OÀTÈ#ÁYó Oñ8 Cð 8°3ð 8À5ÈÈcÉÐT\Ð]bÑTcÐIcÑCdô 8øðy ò !Ø—j‘j‹ð!ûàò Ù	ð	ó
ƒBðús1   Á A"G Â#G ÇGÇG ÇGÇG ÇG-Ç,G-