o
    ZzjµÛ  ã                   @   sp  U d Z ddlZddlmZ ddlmZmZmZ ddl	m
Z
 ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z m!Z! ddl"m#Z# ddl$m%Z% ddl&m'Z' ddl(m)Z)m*Z*m+Z+ ddl,m-Z- ddl.m/Z/ ddl0m1Z1 er—ddl(m2Z2 G dd„ deƒZ3G dd„ de3ƒZ4G dd„ deƒZ5G dd „ d e5ƒZ6G d!d"„ d"e5ƒZ7G d#d$„ d$e5ƒZ8G d%d&„ d&e4ƒZ9G d'd(„ d(e4ƒZ:G d)d*„ d*e4ƒZ;G d+d,„ d,e3ƒZ<G d-d.„ d.e3ƒZ=G d/d0„ d0e3ƒZ>G d1d2„ d2e4ƒZ?G d3d4„ d4e4ƒZ@G d5d6„ d6e4ƒZAe9e?B e@B eAB e<B e:B e=B e;B ZBeeCd7< 	 e9eAB e<B e:B e>B e=B e;B ZDeeCd8< dS )9zfBase classes for Telegram InputMedia, InputPaidMedia, InputPollMedia
and InputPollOptionMedia Objects.é    N)ÚSequence)ÚTYPE_CHECKINGÚFinalÚ	TypeAlias)Ú	constants)Ú	Animation)ÚAudio)ÚDocument)Ú	InputFile)Ú	PhotoSize)ÚSticker)ÚVideo)ÚMessageEntity)ÚTelegramObject)Úenum)Úparse_sequence_argÚto_timedelta)Úget_timedelta_value)ÚDEFAULT_NONE©Úparse_file_input)ÚJSONDictÚODVInputÚ
TimePeriod)Úwarn)ÚBaseInputMediaType)ÚPTBDeprecationWarning)Ú	FileInputc                       s8   e Zd ZdZdZddœdededB f‡ fdd„Z‡  ZS )	Ú_BaseInputMediazü
    Base class for objects representing the various input media types.

    Args:
        media_type (:obj:`str`): Type of media that the instance represents.

    Attributes:
        type (:obj:`str`): Type of media that the instance represents.
    )ÚtypeN©Ú
api_kwargsÚ
media_typer!   c                   s$   t ƒ j|d� t tj||¡| _d S ©Nr    )ÚsuperÚ__init__r   Ú
get_memberr   r   r   )Úselfr"   r!   ©Ú	__class__© úU/var/www/kodo/tsheker/venv/lib/python3.10/site-packages/telegram/_files/inputmedia.pyr%   ?   s   z_BaseInputMedia.__init__©	Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__Ústrr   r%   Ú__classcell__r*   r*   r(   r+   r   2   s    
üþür   c                       s‚   e Zd ZdZdZddefddœdedeeB dedB dee	 dB d	e
e d
edB f‡ fdd„ZedddeeB dB fdd„ƒZ‡  ZS )Ú
InputMediaa  
    This object represents the content of a media message to be sent. It should be one of:

    * :class:`telegram.InputMediaAnimation`
    * :class:`telegram.InputMediaAudio`
    * :class:`telegram.InputMediaDocument`
    * :class:`telegram.InputMediaLivePhoto`
    * :class:`telegram.InputMediaPhoto`
    * :class:`telegram.InputMediaVideo`

    .. versionchanged:: 20.0
        Added arguments and attributes :attr:`type`, :attr:`media`, :attr:`caption`,
            :attr:`caption_entities`, :paramref:`parse_mode`.

    .. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`

    Args:
        media_type (:obj:`str`): Type of media that the instance represents.
        media (:obj:`str` | :class:`~telegram.InputFile`): File to send.
            |fileinputnopath|
        caption (:obj:`str`, optional): Caption of the media to be sent,
            0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters after entities
            parsing.
        caption_entities (Sequence[:class:`telegram.MessageEntity`], optional): |caption_entities|

            .. versionchanged:: 20.0
                |sequenceclassargs|

        parse_mode (:obj:`str`, optional): |parse_mode|

    Attributes:
        type (:obj:`str`): Type of the input media.
        media (:obj:`str` | :class:`telegram.InputFile`): Media to send.
        caption (:obj:`str`): Optional. Caption of the media to be sent,
            0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters after entities
            parsing.
        parse_mode (:obj:`str`): Optional. |parse_mode|
        caption_entities (tuple[:class:`telegram.MessageEntity`]): Optional. |captionentitiesattr|

            .. versionchanged:: 20.0

                * |tupleclassattrs|
                * |alwaystuple|

    )ÚcaptionÚcaption_entitiesÚmediaÚ
parse_modeNr    r"   r7   r5   r6   r8   r!   c                   sZ   t ƒ j||d� |  ¡ � || _|| _t|ƒ| _|| _W d   ƒ d S 1 s&w   Y  d S ©N©r"   r!   )r$   r%   Ú	_unfrozenr7   r5   r   r6   r8   )r'   r"   r7   r5   r6   r8   r!   r(   r*   r+   r%   z   s   


"üzInputMedia.__init__Ú	thumbnailúFileInput | NoneÚreturnc                 C   s   | d urt | ddd�S | S )NT©ÚattachÚ
local_moder   )r<   r*   r*   r+   Ú_parse_thumbnail_input‹   s
   ÿÿýz!InputMedia._parse_thumbnail_input)r-   r.   r/   r0   r1   r   r2   r
   r   r   r   r   r%   ÚstaticmethodrB   r3   r*   r*   r(   r+   r4   I   s.    .úøþýü
ûúø$r4   c                       s„   e Zd ZU dZejjZee e	d< 	 ejj
Z
ee e	d< 	 ejjZee e	d< 	 dZddœded	eeB d
edB f‡ fdd„Z‡  ZS )ÚInputPaidMediaa˜  
    Base class for Telegram InputPaidMedia Objects. Currently, it can be one of:

    * :class:`telegram.InputPaidMediaPhoto`
    * :class:`telegram.InputPaidMediaVideo`
    * :class:`telegram.InputPaidMediaLivePhoto`

    .. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`

    .. versionadded:: 21.4

    Args:
        type (:obj:`str`): Type of media that the instance represents.
        media (:obj:`str` | :class:`~telegram.InputFile`): File
            to send. |fileinputnopath|

    Attributes:
        type (:obj:`str`): Type of the input media.
        media (:obj:`str` | :class:`telegram.InputFile`): Media to send.
    ÚPHOTOÚVIDEOÚ
LIVE_PHOTO)r7   r   Nr    r   r7   r!   c                   s2   t ƒ j|d� t tj||¡| _|| _|  ¡  d S r#   )	r$   r%   r   r&   r   ÚInputPaidMediaTyper   r7   Ú_freeze)r'   r   r7   r!   r(   r*   r+   r%   ¸   s   zInputPaidMedia.__init__)r-   r.   r/   r0   r   rH   rE   r   r2   Ú__annotations__rF   rG   r1   r
   r   r%   r3   r*   r*   r(   r+   rD   –   s"   
 ûþýûrD   c                       s8   e Zd ZdZdZddœdddedB f‡ fdd	„Z‡  ZS )
ÚInputPaidMediaPhotoa’  The paid media to send is a photo.

    .. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`

    .. versionadded:: 21.4

    Args:
        media (:obj:`str` | :term:`file object` | :class:`~telegram.InputFile` | :obj:`bytes` |             :class:`pathlib.Path` | :class:`telegram.PhotoSize`): File to send. |fileinputnopath|
            Lastly you can pass an existing :class:`telegram.PhotoSize` object to send.

    Attributes:
        type (:obj:`str`): Type of the media, always
            :tg-const:`telegram.constants.InputPaidMediaType.PHOTO`.
        media (:obj:`str` | :class:`telegram.InputFile`): Photo to send.
    r*   Nr    r7   úFileInput | PhotoSizer!   c                   s0   t |tddd�}tƒ jtj||d� |  ¡  d S ©NTr?   ©r   r7   r!   )r   r   r$   r%   rD   rE   rI   )r'   r7   r!   r(   r*   r+   r%   Ú   s   zInputPaidMediaPhoto.__init__©r-   r.   r/   r0   r1   r   r%   r3   r*   r*   r(   r+   rK   Æ   s    üþürK   c                       s”   e Zd ZdZdZ							dddœddddd	edB d
edB dedB dedB dddedB dedB f‡ fdd„Z	e
deejB dB fdd„ƒZ‡  ZS )ÚInputPaidMediaVideoa×
  
    The paid media to send is a video.

    .. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`

    .. versionadded:: 21.4

    Note:
        *  When using a :class:`telegram.Video` for the :attr:`media` attribute, it will take the
           width, height and duration from that video, unless otherwise specified with the optional
           arguments.
        *  :paramref:`thumbnail` will be ignored for small video files, for which Telegram can
           easily generate thumbnails. However, this behaviour is undocumented and might be
           changed by Telegram.

    Args:
        media (:obj:`str` | :term:`file object` | :class:`~telegram.InputFile` | :obj:`bytes` |             :class:`pathlib.Path` | :class:`telegram.Video`): File to send. |fileinputnopath|
            Lastly you can pass an existing :class:`telegram.Video` object to send.
        thumbnail (:term:`file object` | :obj:`bytes` | :class:`pathlib.Path` | :obj:`str`,                 optional): |thumbdocstringnopath|
        cover (:term:`file object` | :obj:`bytes` | :class:`pathlib.Path` | :obj:`str`,                 optional): Cover for the video in the message. |fileinputnopath|

            .. versionchanged:: 21.11
        start_timestamp (:obj:`int`, optional): Start timestamp for the video in the message

            .. versionchanged:: 21.11
        width (:obj:`int`, optional): Video width.
        height (:obj:`int`, optional): Video height.
        duration (:obj:`int` | :class:`datetime.timedelta`, optional): Video duration in seconds.

            .. versionchanged:: v22.2
                |time-period-input|
        supports_streaming (:obj:`bool`, optional): Pass :obj:`True`, if the uploaded video is
            suitable for streaming.

    Attributes:
        type (:obj:`str`): Type of the media, always
            :tg-const:`telegram.constants.InputPaidMediaType.VIDEO`.
        media (:obj:`str` | :class:`telegram.InputFile`): Video to send.
        thumbnail (:class:`telegram.InputFile`): Optional. |thumbdocstringbase|
        cover (:class:`telegram.InputFile`): Optional. Cover for the video in the message.
            |fileinputnopath|

            .. versionchanged:: 21.11
        start_timestamp (:obj:`int`): Optional. Start timestamp for the video in the message

            .. versionchanged:: 21.11
        width (:obj:`int`): Optional. Video width.
        height (:obj:`int`): Optional. Video height.
        duration (:obj:`int` | :class:`datetime.timedelta`): Optional. Video duration in seconds.

            .. deprecated:: v22.2
                |time-period-int-deprecated|
        supports_streaming (:obj:`bool`): Optional. :obj:`True`, if the uploaded video is
            suitable for streaming.
    )Ú	_durationÚcoverÚheightÚstart_timestampÚsupports_streamingr<   ÚwidthNr    r7   úFileInput | Videor<   r=   rV   rS   ÚdurationrU   rR   rT   r!   c	          
         sÞ   t |tƒr$|d ur|n|j}|d ur|n|j}|d ur|n|j}|j}nt|ddd�}tƒ jt	j
||	d� |  ¡ �, t |¡| _|| _|| _t|ƒ| _|| _|rWt|ddd�nd | _|| _W d   ƒ d S 1 shw   Y  d S rM   )Ú
isinstancer   rV   rS   rQ   Úfile_idr   r$   r%   rD   rF   r;   r4   rB   r<   r   rU   rR   rT   )
r'   r7   r<   rV   rS   rX   rU   rR   rT   r!   r(   r*   r+   r%   +  s"   


ÿ"÷zInputPaidMediaVideo.__init__r>   c                 C   ó   t | jdd�S ©NrX   )Ú	attribute©r   rQ   ©r'   r*   r*   r+   rX   N  ó   zInputPaidMediaVideo.duration)NNNNNNN)r-   r.   r/   r0   r1   Úintr   Úboolr   r%   ÚpropertyÚdtmÚ	timedeltarX   r3   r*   r*   r(   r+   rP   å   sB    ;÷õþýüûúùø	÷õ#"rP   c                       s<   e Zd ZdZdZddœddddd	edB f‡ fd
d„Z‡  ZS )ÚInputPaidMediaLivePhotoaÍ  
    The paid media to send is a live photo.

    .. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`

    .. versionadded:: 22.8

    Args:
        media (:obj:`str` | :term:`file object` | :class:`~telegram.InputFile` | :obj:`bytes`             | :class:`pathlib.Path` | :class:`~telegram.Video`): Video of the live photo to send.
           Pass a ``file_id`` to send a file that exists on the Telegram servers (recommended).
           |uploadinputnopath| Sending live photos by a URL is currently unsupported. Lastly you
           can pass an existing :class:`telegram.Video` object to send.
        photo (:obj:`str` | :term:`file object` | :class:`~telegram.InputFile` | :obj:`bytes` |             :class:`pathlib.Path` | :class:`~telegram.PhotoSize`): Photo of the live photo to send.
            Pass a ``file_id`` to send a file that exists on the Telegram servers (recommended).
            |uploadinputnopath| Sending live photos by a URL is currently unsupported.
            Lastly you can pass an existing :class:`telegram.PhotoSize` object to send.

    Attributes:
        type (:obj:`str`): Type of the media, always
            :tg-const:`telegram.constants.InputPaidMediaType.LIVE_PHOTO`.
        media (:obj:`str` | :class:`telegram.InputFile`): Video of the live photo to send.
            |fileinputnopath|
        photo (:obj:`str` | :class:`telegram.InputFile`): Photo of the live photo to send.
            |fileinputnopath|
    )ÚphotoNr    r7   rW   rg   rL   r!   c                   sh   t |tddd�}t |tddd�}tƒ jtj||d� |  ¡ � || _W d   ƒ d S 1 s-w   Y  d S )NT©Útg_typer@   rA   rN   )	r   r   r   r$   r%   rD   rG   r;   rg   )r'   r7   rg   r!   r(   r*   r+   r%   r  s   
"ÿz InputPaidMediaLivePhoto.__init__rO   r*   r*   r(   r+   rf   S  s    ûþýûrf   c                       sÄ   e Zd ZdZdZdeddddddddf
dddœdddedB dee d	edB d
edB de	dB de
e dB dedB dedB dddedB dedB dedB f‡ fdd„ZedeejB dB fdd„ƒZ‡  ZS )ÚInputMediaAnimationañ  Represents an animation file (GIF or H.264/MPEG-4 AVC video without sound) to be sent.

    Note:
        When using a :class:`telegram.Animation` for the :attr:`media` attribute, it will take the
        width, height and duration from that animation, unless otherwise specified with the
        optional arguments.

    .. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`

    .. versionchanged:: 20.5
      |removed_thumb_note|

    Args:
        media (:obj:`str` | :term:`file object` | :class:`~telegram.InputFile` | :obj:`bytes` |             :class:`pathlib.Path` | :class:`telegram.Animation`): File to send. |fileinputnopath|
            Lastly you can pass an existing :class:`telegram.Animation` object to send.

            .. versionchanged:: 13.2
               Accept :obj:`bytes` as input.
        filename_depr (:obj:`str`, optional): Positional placeholder for keyword only parameter
            :paramref:`filename`. For backward compatibility.

            .. versionadded:: 22.8
            .. deprecated:: 22.8
                This parameter is deprecated, use :paramref:`filename` instead.
        caption (:obj:`str`, optional): Caption of the animation to be sent,
            0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters
            after entities parsing.
        parse_mode (:obj:`str`, optional): |parse_mode|
        caption_entities (Sequence[:class:`telegram.MessageEntity`], optional): |caption_entities|

            .. versionchanged:: 20.0
                |sequenceclassargs|

        width (:obj:`int`, optional): Animation width.
        height (:obj:`int`, optional): Animation height.
        duration (:obj:`int` | :class:`datetime.timedelta`, optional): Animation duration
            in seconds.

            .. versionchanged:: v22.2
                |time-period-input|
        has_spoiler (:obj:`bool`, optional): Pass :obj:`True`, if the animation needs to be covered
            with a spoiler animation.

            .. versionadded:: 20.0
        thumbnail (:term:`file object` | :obj:`bytes` | :class:`pathlib.Path` | :obj:`str`,                 optional): |thumbdocstringnopath|

            .. versionadded:: 20.2
        show_caption_above_media (:obj:`bool`, optional): Pass |show_cap_above_med|

            .. versionadded:: 21.3

    Keyword Args:
        filename (:obj:`str`, optional): Custom file name for the animation, when uploading a
            new file. Convenience parameter, useful e.g. when sending files generated by the
            :obj:`tempfile` module.

            .. versionadded:: 13.1
            .. versionchanged:: 22.8
               This parameter is now keyword-only.

    Attributes:
        type (:obj:`str`): :tg-const:`telegram.constants.BaseInputMediaType.ANIMATION`.
        media (:obj:`str` | :class:`telegram.InputFile`): Animation to send.
        caption (:obj:`str`): Optional. Caption of the animation to be sent,
            0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters
            after entities parsing.
        parse_mode (:obj:`str`): Optional. The parse mode to use for text formatting.
        caption_entities (tuple[:class:`telegram.MessageEntity`]): Optional. |captionentitiesattr|

            .. versionchanged:: 20.0

                * |tupleclassattrs|
                * |alwaystuple|
        width (:obj:`int`): Optional. Animation width.
        height (:obj:`int`): Optional. Animation height.
        duration (:obj:`int` | :class:`datetime.timedelta`): Optional. Animation duration
            in seconds.

            .. deprecated:: v22.2
                |time-period-int-deprecated|
        has_spoiler (:obj:`bool`): Optional. :obj:`True`, if the animation is covered with a
            spoiler animation.

            .. versionadded:: 20.0
        thumbnail (:class:`telegram.InputFile`): Optional. |thumbdocstringbase|

            .. versionadded:: 20.2
        show_caption_above_media (:obj:`bool`): Optional. |show_cap_above_med|

            .. versionadded:: 21.3
    )rQ   Úhas_spoilerrS   Úshow_caption_above_mediar<   rV   N©Úfilenamer!   r7   zFileInput | Animationr5   r8   rV   rS   rX   r6   Úfilename_deprrk   r<   r=   rl   rn   r!   c                   s  |d ur|d urt dƒ‚|d urttddƒdd� t|tƒr=|d u r%|jn|}|d u r.|jn|}|d ur6|n|j}|j}n|p@|}t	||ddd�}t
ƒ jtj|||||d� |  ¡ �  |  |
¡| _|| _|| _t|ƒ| _|	| _|| _W d   ƒ d S 1 s}w   Y  d S ©	Nú6`filename_depr` and `filename` are mutually exclusive.ú22.8úƒPositional passing of `filename` or keyword usage of `filename_depr` is deprecated. `filename` will become a keyword-only argument.é   ©Ú
stacklevelT©rn   r@   rA   r    )Ú
ValueErrorr   r   rY   r   rV   rS   rQ   rZ   r   r$   r%   r   Ú	ANIMATIONr;   rB   r<   r   rk   rl   )r'   r7   r5   r8   rV   rS   rX   r6   ro   rk   r<   rl   rn   r!   Úeffective_filenamer(   r*   r+   r%   è  sF   þú
	ÿú

"úzInputMediaAnimation.__init__r>   c                 C   r[   r\   r^   r_   r*   r*   r+   rX   $  r`   zInputMediaAnimation.duration)r-   r.   r/   r0   r1   r   r2   r   ra   r   r   r   rb   r   r%   rc   rd   re   rX   r3   r*   r*   r(   r+   rj   €  sZ    ^òïþýüûúù
ø
öôóòðï<"rj   c                       s„   e Zd ZdZdZdeddddfdddœdddedB dee d	ee	 dB d
edB de
dB de
dB dedB dedB f‡ fdd„Z‡  ZS )ÚInputMediaPhotoaÛ
  Represents a photo to be sent.

    .. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`

    Args:
        media (:obj:`str` | :term:`file object` | :class:`~telegram.InputFile` | :obj:`bytes` |             :class:`pathlib.Path` | :class:`telegram.PhotoSize`): File to send. |fileinputnopath|
            Lastly you can pass an existing :class:`telegram.PhotoSize` object to send.

            .. versionchanged:: 13.2
               Accept :obj:`bytes` as input.
        filename_depr (:obj:`str`, optional): Positional placeholder for keyword only parameter
            :paramref:`filename`. For backward compatibility.

            .. versionadded:: 22.8
            .. deprecated:: 22.8
                This parameter is deprecated, use :paramref:`filename` instead.
        caption (:obj:`str`, optional ): Caption of the photo to be sent,
            0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters after
            entities parsing.
        parse_mode (:obj:`str`, optional): |parse_mode|
        caption_entities (Sequence[:class:`telegram.MessageEntity`], optional): |caption_entities|

            .. versionchanged:: 20.0
                |sequenceclassargs|
        has_spoiler (:obj:`bool`, optional): Pass :obj:`True`, if the photo needs to be covered
            with a spoiler animation.

            .. versionadded:: 20.0
        show_caption_above_media (:obj:`bool`, optional): Pass |show_cap_above_med|

            .. versionadded:: 21.3

    Keyword Args:
        filename (:obj:`str`, optional): Custom file name for the photo, when uploading a
            new file. Convenience parameter, useful e.g. when sending files generated by the
            :obj:`tempfile` module.

            .. versionadded:: 13.1
            .. versionchanged:: 22.8
               This parameter is now keyword-only.

    Attributes:
        type (:obj:`str`): :tg-const:`telegram.constants.BaseInputMediaType.PHOTO`.
        media (:obj:`str` | :class:`telegram.InputFile`): Photo to send.
        caption (:obj:`str`): Optional. Caption of the photo to be sent,
            0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters
            after entities parsing.
        parse_mode (:obj:`str`): Optional. |parse_mode|
        caption_entities (tuple[:class:`telegram.MessageEntity`]): Optional. |captionentitiesattr|

            .. versionchanged:: 20.0

                * |tupleclassattrs|
                * |alwaystuple|
        has_spoiler (:obj:`bool`): Optional. :obj:`True`, if the photo is covered with a
            spoiler animation.

            .. versionadded:: 20.0
        show_caption_above_media (:obj:`bool`): Optional. |show_cap_above_med|

            .. versionadded:: 21.3
    )rk   rl   Nrm   r7   rL   r5   r8   r6   ro   rk   rl   rn   r!   c                   s    |d ur|d urt dƒ‚|d urttddƒdd� |p|}
t|t|
ddd�}tƒ jtj|||||	d� |  	¡ � || _
|| _W d   ƒ d S 1 sIw   Y  d S rp   )rx   r   r   r   r   r$   r%   r   rE   r;   rk   rl   )r'   r7   r5   r8   r6   ro   rk   rl   rn   r!   rz   r(   r*   r+   r%   o  s4   þú
ÿú
	"þzInputMediaPhoto.__init__©r-   r.   r/   r0   r1   r   r2   r   r   r   rb   r   r%   r3   r*   r*   r(   r+   r{   )  s>    @öóþýü
ûù	÷
öôór{   c                #       sÞ   e Zd ZdZdZdddddedddddddfdddœdddedB dedB d	edB d
edB de	dB de
e dee dB dedB de	dB ddde	dB dddedB dedB dedB f ‡ fdd„ZedeejB dB fdd„ƒZ‡  ZS )ÚInputMediaVideoa£  Represents a video to be sent.

    .. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`

    Note:
        *  When using a :class:`telegram.Video` for the :attr:`media` attribute, it will take the
           width, height and duration from that video, unless otherwise specified with the optional
           arguments.
        *  :paramref:`thumbnail` will be ignored for small video files, for which Telegram can
            easily generate thumbnails. However, this behaviour is undocumented and might be
            changed by Telegram.

    .. versionchanged:: 20.5
      |removed_thumb_note|

    Args:
        media (:obj:`str` | :term:`file object` | :class:`~telegram.InputFile` | :obj:`bytes` |             :class:`pathlib.Path` | :class:`telegram.Video`): File to send. |fileinputnopath|
            Lastly you can pass an existing :class:`telegram.Video` object to send.

            .. versionchanged:: 13.2
               Accept :obj:`bytes` as input.
        filename_depr (:obj:`str`, optional): Positional placeholder for keyword only parameter
            :paramref:`filename`. For backward compatibility.

            .. versionadded:: 22.8
            .. deprecated:: 22.8
                This parameter is deprecated, use :paramref:`filename` instead.
        caption (:obj:`str`, optional): Caption of the video to be sent,
            0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters after
            entities parsing.
        parse_mode (:obj:`str`, optional): |parse_mode|
        caption_entities (Sequence[:class:`telegram.MessageEntity`], optional): |caption_entities|

            .. versionchanged:: 20.0
                |sequenceclassargs|

        width (:obj:`int`, optional): Video width.
        height (:obj:`int`, optional): Video height.
        duration (:obj:`int` | :class:`datetime.timedelta`, optional): Video duration in seconds.

            .. versionchanged:: v22.2
                |time-period-input|
        supports_streaming (:obj:`bool`, optional): Pass :obj:`True`, if the uploaded video is
            suitable for streaming.
        has_spoiler (:obj:`bool`, optional): Pass :obj:`True`, if the video needs to be covered
            with a spoiler animation.

            .. versionadded:: 20.0
        thumbnail (:term:`file object` | :obj:`bytes` | :class:`pathlib.Path` | :obj:`str`,                 optional): |thumbdocstringnopath|

            .. versionadded:: 20.2
        cover (:term:`file object` | :obj:`bytes` | :class:`pathlib.Path` | :obj:`str`,                 optional): Cover for the video in the message. |fileinputnopath|

            .. versionchanged:: 21.11
        start_timestamp (:obj:`int`, optional): Start timestamp for the video in the message

            .. versionchanged:: 21.11
        show_caption_above_media (:obj:`bool`, optional): Pass |show_cap_above_med|

            .. versionadded:: 21.3

    Keyword Args:
        filename (:obj:`str`, optional): Custom file name for the video, when uploading a
            new file. Convenience parameter, useful e.g. when sending files generated by the
            :obj:`tempfile` module.

            .. versionadded:: 13.1
            .. versionchanged:: 22.8
               This parameter is now keyword-only.

    Attributes:
        type (:obj:`str`): :tg-const:`telegram.constants.BaseInputMediaType.VIDEO`.
        media (:obj:`str` | :class:`telegram.InputFile`): Video file to send.
        caption (:obj:`str`): Optional. Caption of the video to be sent,
            0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters
            after entities parsing.
        parse_mode (:obj:`str`): Optional. |parse_mode|
        caption_entities (tuple[:class:`telegram.MessageEntity`]): Optional. |captionentitiesattr|

            .. versionchanged:: 20.0

                * |tupleclassattrs|
                * |alwaystuple|
        width (:obj:`int`): Optional. Video width.
        height (:obj:`int`): Optional. Video height.
        duration (:obj:`int` | :class:`datetime.timedelta`): Optional. Video duration in seconds.

            .. deprecated:: v22.2
                |time-period-int-deprecated|
        supports_streaming (:obj:`bool`): Optional. :obj:`True`, if the uploaded video is
            suitable for streaming.
        has_spoiler (:obj:`bool`): Optional. :obj:`True`, if the video is covered with a
            spoiler animation.

            .. versionadded:: 20.0
        thumbnail (:class:`telegram.InputFile`): Optional. |thumbdocstringbase|

            .. versionadded:: 20.2
        show_caption_above_media (:obj:`bool`): Optional. |show_cap_above_med|

            .. versionadded:: 21.3
        cover (:class:`telegram.InputFile`): Optional. Cover for the video in the message.
            |fileinputnopath|

            .. versionchanged:: 21.11
        start_timestamp (:obj:`int`): Optional. Start timestamp for the video in the message

            .. versionchanged:: 21.11
    )	rQ   rR   rk   rS   rl   rT   rU   r<   rV   Nrm   r7   rW   r5   rV   rS   rX   rU   r8   r6   ro   rk   r<   r=   rl   rR   rT   rn   r!   c                   s,  |	d ur|d urt dƒ‚|	d urttddƒdd� t|tƒr=|d ur$|n|j}|d ur-|n|j}|d ur6|n|j}|j}n|	p@|}t	||ddd�}t
ƒ jtj|||||d� |  ¡ �2 || _|| _t|ƒ| _|  |¡| _|| _|
| _|| _|r~t	|ddd	�nd | _|| _W d   ƒ d S 1 s�w   Y  d S )
Nrq   rr   rs   rt   ru   Trw   r    r?   )rx   r   r   rY   r   rV   rS   rQ   rZ   r   r$   r%   r   rF   r;   r   rB   r<   rU   rk   rl   rR   rT   )r'   r7   r5   rV   rS   rX   rU   r8   r6   ro   rk   r<   rl   rR   rT   rn   r!   rz   r(   r*   r+   r%     sN   þú
	ÿú

ÿ"õzInputMediaVideo.__init__r>   c                 C   r[   r\   r^   r_   r*   r*   r+   rX   `  r`   zInputMediaVideo.duration)r-   r.   r/   r0   r1   r   r2   ra   r   rb   r   r   r   r   r%   rc   rd   re   rX   r3   r*   r*   r(   r+   r}   ž  sl    qïìþýüûúùø
	÷õóòñðïíìD"r}   c                       sH   e Zd ZdZdZ	dddœdedededB dedB f‡ fd	d
„Z‡  ZS )ÚInputMediaLocationa  Represents a location to be sent.

    .. versionadded:: 22.8

    Args:
        latitude (:obj:`float`): Latitude of the location.
        longitude (:obj:`float`): Longitude of the location.
        horizontal_accuracy (:obj:`float`, optional): The radius of uncertainty for the location,
            measured in meters; 0-:tg-const:`telegram.Location.HORIZONTAL_ACCURACY`.

    Attributes:
        type (:obj:`str`): :tg-const:`telegram.constants.BaseInputMediaType.LOCATION`.
        latitude (:obj:`float`): Latitude of the location.
        longitude (:obj:`float`): Longitude of the location.
        horizontal_accuracy (:obj:`float`): Optional. The radius of uncertainty for the location,
            measured in meters; 0-:tg-const:`telegram.Location.HORIZONTAL_ACCURACY`.
    )Úhorizontal_accuracyÚlatitudeÚ	longitudeNr    r€   r�   r   r!   c                   sR   t ƒ jtj|d� |  ¡ � || _|| _|| _W d   ƒ d S 1 s"w   Y  d S r9   )r$   r%   r   ÚLOCATIONr;   r€   r�   r   )r'   r€   r�   r   r!   r(   r*   r+   r%   z  s   
"ýzInputMediaLocation.__init__©N)	r-   r.   r/   r0   r1   Úfloatr   r%   r3   r*   r*   r(   r+   r~   e  s    üúþýüúr~   c                       sn   e Zd ZdZdZ				dddœdedededed	edB d
edB dedB dedB dedB f‡ fdd„Z‡  Z	S )ÚInputMediaVenueuó  Represents a venue to be sent.

    .. versionadded:: 22.8

    Args:
        latitude (:obj:`float`): Latitude of the location.
        longitude (:obj:`float`): Longitude of the location.
        title (:obj:`str`): Name of the venue.
        address (:obj:`str`): Address of the venue.
        foursquare_id (:obj:`str`, optional): Foursquare identifier of the venue.
        foursquare_type (:obj:`str`, optional): Foursquare type of the venue, if known. (For
            example, ``â€œarts_entertainment/defaultâ€�``, ``â€œarts_entertainment/aquariumâ€�``
            or ``â€œfood/icecreamâ€�``).
        google_place_id (:obj:`str`, optional): Google Places identifier of the venue.
        google_place_type (:obj:`str`, optional): Google Places type of the venue. (See        `supported types <https://developers.google.com/places/web-service/supported_types>`__)

    Attributes:
        type (:obj:`str`): :tg-const:`telegram.constants.BaseInputMediaType.VENUE`.
        latitude (:obj:`float`): Latitude of the location.
        longitude (:obj:`float`): Longitude of the location.
        title (:obj:`str`): Name of the venue.
        address (:obj:`str`): Address of the venue.
        foursquare_id (:obj:`str`): Optional. Foursquare identifier of the venue.
        foursquare_type (:obj:`str`): Optional. Foursquare type of the venue, if known. (For
            example, ``â€œarts_entertainment/defaultâ€�``, ``â€œarts_entertainment/aquariumâ€�``
            or ``â€œfood/icecreamâ€�``).
        google_place_id (:obj:`str`): Optional. Google Places identifier of the venue.
        google_place_type (:obj:`str`): Optional. Google Places type of the venue. (See        `supported types <https://developers.google.com/places/web-service/supported_types>`__)
    )ÚaddressÚfoursquare_idÚfoursquare_typeÚgoogle_place_idÚgoogle_place_typer€   r�   ÚtitleNr    r€   r�   r‹   r†   r‡   rˆ   r‰   rŠ   r!   c	          
         sp   t ƒ jtj|	d� |  ¡ �! || _|| _|| _|| _|| _	|| _
|| _|| _W d   ƒ d S 1 s1w   Y  d S r9   )r$   r%   r   ÚVENUEr;   r€   r�   r‹   r†   r‡   rˆ   r‰   rŠ   )
r'   r€   r�   r‹   r†   r‡   rˆ   r‰   rŠ   r!   r(   r*   r+   r%   µ  s   
"øzInputMediaVenue.__init__)NNNN)
r-   r.   r/   r0   r1   r„   r2   r   r%   r3   r*   r*   r(   r+   r…   ‰  s8     ÷õþýüûúùø	÷õr…   c                       sN   e Zd ZdZdZ	ddddœdddedB dedB d	edB f‡ fd
d„Z‡  ZS )ÚInputMediaStickeraQ  Represents a sticker file to be sent.

    .. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`

    .. versionadded:: 22.8

    Args:
        media (:obj:`str` | :term:`file object` | :class:`~telegram.InputFile` | :obj:`bytes` |             :class:`pathlib.Path` | :class:`telegram.Sticker`): File to send. |fileinputnopath|

            Lastly you can pass an existing :class:`telegram.Sticker` object to send.
        emoji (:obj:`str`, optional): Emoji associated with the sticker; only for just uploaded
            stickers.

    Keyword Args:
        filename (:obj:`str`, optional): Custom file name for the sticker, when uploading a
            new file. Convenience parameter, useful e.g. when sending files generated by the
            :obj:`tempfile` module.

    Attributes:
        type (:obj:`str`): :tg-const:`telegram.constants.BaseInputMediaType.STICKER`.
        media (:obj:`str` | :class:`telegram.InputFile`): Sticker file to send.
        emoji (:obj:`str`): Optional. Emoji associated with the sticker; only for just uploaded
            stickers.
    )Úemojir7   Nrm   r7   zFileInput | StickerrŽ   rn   r!   c                   s^   t |t|ddd�}tƒ jtj|d� |  ¡ � || _|| _W d   ƒ d S 1 s(w   Y  d S )NTrw   r:   )	r   r   r$   r%   r   ÚSTICKERr;   r7   rŽ   )r'   r7   rŽ   rn   r!   r(   r*   r+   r%   ë  s   
"þzInputMediaSticker.__init__rƒ   r,   r*   r*   r(   r+   r�   Î  s     ýúþýûúr�   c                       s°   e Zd ZdZdZdeddddddfdddœdddedB dee d	edB d
edB dedB de	e
 dB dedB dddedB dedB f‡ fdd„ZedeejB dB fdd„ƒZ‡  ZS )ÚInputMediaAudioa[  Represents an audio file to be treated as music to be sent.

    .. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`

    Note:
        When using a :class:`telegram.Audio` for the :attr:`media` attribute, it will take the
        duration, performer and title from that video, unless otherwise specified with the
        optional arguments.

    .. versionchanged:: 20.5
      |removed_thumb_note|

    Args:
        media (:obj:`str` | :term:`file object` | :class:`~telegram.InputFile` | :obj:`bytes` |             :class:`pathlib.Path` | :class:`telegram.Audio`): File to send. |fileinputnopath|
            Lastly you can pass an existing :class:`telegram.Audio` object to send.

            .. versionchanged:: 13.2
               Accept :obj:`bytes` as input.
        filename_depr (:obj:`str`, optional): Positional placeholder for keyword only parameter
            :paramref:`filename`. For backward compatibility.

            .. versionadded:: 22.8
            .. deprecated:: 22.8
                This parameter is deprecated, use :paramref:`filename` instead.
        caption (:obj:`str`, optional): Caption of the audio to be sent,
            0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters after
            entities parsing.
        parse_mode (:obj:`str`, optional): |parse_mode|
        caption_entities (Sequence[:class:`telegram.MessageEntity`], optional): |caption_entities|

            .. versionchanged:: 20.0
                |sequenceclassargs|

        duration (:obj:`int` | :class:`datetime.timedelta`, optional): Duration of the audio
            in seconds as defined by the sender.

            .. versionchanged:: v22.2
                |time-period-input|
        performer (:obj:`str`, optional): Performer of the audio as defined by the sender or by
            audio tags.
        title (:obj:`str`, optional): Title of the audio as defined by the sender or by audio tags.
        thumbnail (:term:`file object` | :obj:`bytes` | :class:`pathlib.Path` | :obj:`str`,                 optional): |thumbdocstringnopath|

            .. versionadded:: 20.2

    Keyword Args:
        filename (:obj:`str`, optional): Custom file name for the audio, when uploading a
            new file. Convenience parameter, useful e.g. when sending files generated by the
            :obj:`tempfile` module.

            .. versionadded:: 13.1
            .. versionchanged:: 22.8
               This parameter is now keyword-only.

    Attributes:
        type (:obj:`str`): :tg-const:`telegram.constants.BaseInputMediaType.AUDIO`.
        media (:obj:`str` | :class:`telegram.InputFile`): Audio file to send.
        caption (:obj:`str`): Optional. Caption of the audio to be sent,
            0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters
            after entities parsing.
        parse_mode (:obj:`str`): Optional. |parse_mode|
        caption_entities (tuple[:class:`telegram.MessageEntity`]): Optional. |captionentitiesattr|

            .. versionchanged:: 20.0

                * |tupleclassattrs|
                * |alwaystuple|
        duration (:obj:`int` | :class:`datetime.timedelta`): Optional. Duration of the audio
            in seconds.

            .. deprecated:: v22.2
                |time-period-int-deprecated|
        performer (:obj:`str`): Optional. Performer of the audio as defined by the sender or by
            audio tags.
        title (:obj:`str`): Optional. Title of the audio as defined by the sender or by audio tags.
        thumbnail (:class:`telegram.InputFile`): Optional. |thumbdocstringbase|

            .. versionadded:: 20.2

    )rQ   Ú	performerr<   r‹   Nrm   r7   zFileInput | Audior5   r8   rX   r‘   r‹   r6   ro   r<   r=   rn   r!   c
                   sü   |d ur|
d urt dƒ‚|d urttddƒdd� t|tƒr=|d ur$|n|j}|d u r.|jn|}|d u r7|jn|}|j}n|p@|
}t	||ddd�}t
ƒ jtj|||||d� |  ¡ � |  |	¡| _t|ƒ| _|| _|| _W d   ƒ d S 1 sww   Y  d S rp   )rx   r   r   rY   r   rQ   r‘   r‹   rZ   r   r$   r%   r   ÚAUDIOr;   rB   r<   r   )r'   r7   r5   r8   rX   r‘   r‹   r6   ro   r<   rn   r!   rz   r(   r*   r+   r%   Q  sB   þú
	ÿú

"üzInputMediaAudio.__init__r>   c                 C   r[   r\   r^   r_   r*   r*   r+   rX   ‰  r`   zInputMediaAudio.duration)r-   r.   r/   r0   r1   r   r2   r   r   r   r   r   r%   rc   ra   rd   re   rX   r3   r*   r*   r(   r+   r�   û  sN    Sôñþýüûúù
ø
öôòñ8"r�   c                       s€   e Zd ZdZdZdeddddfdddœdddedB dee d	edB d
e	e
 dB dedB dddedB dedB f‡ fdd„Z‡  ZS )ÚInputMediaDocumenta  Represents a general file to be sent.

    .. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`

    .. versionchanged:: 20.5
      |removed_thumb_note|

    Args:
        media (:obj:`str` | :term:`file object` | :class:`~telegram.InputFile` | :obj:`bytes`             | :class:`pathlib.Path` | :class:`telegram.Document`): File to send. |fileinputnopath|
            Lastly you can pass an existing :class:`telegram.Document` object to send.

            .. versionchanged:: 13.2
               Accept :obj:`bytes` as input.
        filename_depr (:obj:`str`, optional): Positional placeholder for keyword only parameter
            :paramref:`filename`. For backward compatibility.

            .. versionadded:: 22.8
            .. deprecated:: 22.8
                This parameter is deprecated, use :paramref:`filename` instead.
        caption (:obj:`str`, optional): Caption of the document to be sent,
            0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters after
            entities parsing.
        parse_mode (:obj:`str`, optional): |parse_mode|
        caption_entities (Sequence[:class:`telegram.MessageEntity`], optional): |caption_entities|

            .. versionchanged:: 20.0
                |sequenceclassargs|

        disable_content_type_detection (:obj:`bool`, optional): Disables automatic server-side
            content type detection for files uploaded using multipart/form-data. Always
            :obj:`True`, if the document is sent as part of an album.
        thumbnail (:term:`file object` | :obj:`bytes` | :class:`pathlib.Path` | :obj:`str`,                 optional): |thumbdocstringnopath|

            .. versionadded:: 20.2

    Keyword Args:
        filename (:obj:`str`, optional): Custom file name for the document, when uploading a
            new file. Convenience parameter, useful e.g. when sending files generated by the
            :obj:`tempfile` module.

            .. versionadded:: 13.1
            .. versionchanged:: 22.8
               This parameter is now keyword-only.

    Attributes:
        type (:obj:`str`): :tg-const:`telegram.constants.BaseInputMediaType.DOCUMENT`.
        media (:obj:`str` | :class:`telegram.InputFile`): File to send.
        caption (:obj:`str`): Optional. Caption of the document to be sent,
            0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters
            after entities parsing.
        parse_mode (:obj:`str`): Optional. |parse_mode|
        caption_entities (tuple[:class:`telegram.MessageEntity`]): Optional. |captionentitiesattr|

            .. versionchanged:: 20.0

                * |tupleclassattrs|
                * |alwaystuple|
        disable_content_type_detection (:obj:`bool`): Optional. Disables automatic server-side
            content type detection for files uploaded using multipart/form-data. Always
            :obj:`True`, if the document is sent as part of an album.
        thumbnail (:class:`telegram.InputFile`): Optional. |thumbdocstringbase|

            .. versionadded:: 20.2
    )Údisable_content_type_detectionr<   Nrm   r7   zFileInput | Documentr5   r8   r”   r6   ro   r<   r=   rn   r!   c                   s¦   |d ur|d urt dƒ‚|d urttddƒdd� |p|}
t|t|
ddd�}tƒ jtj|||||	d� |  	¡ � |  
|¡| _|| _W d   ƒ d S 1 sLw   Y  d S rp   )rx   r   r   r   r	   r$   r%   r   ÚDOCUMENTr;   rB   r<   r”   )r'   r7   r5   r8   r”   r6   ro   r<   rn   r!   rz   r(   r*   r+   r%   Ô  s4   þú
ÿú
"þzInputMediaDocument.__init__)r-   r.   r/   r0   r1   r   r2   r   rb   r   r   r   r%   r3   r*   r*   r(   r+   r“   Ž  s>    Cöóþýüû
úø
öôór“   c                       st   e Zd ZdZdZdedddfddœddddd	edB d
ee dee	 dB de
dB de
dB dedB f‡ fdd„Z‡  ZS )ÚInputMediaLivePhotoa·	  Represents a live photo to be sent.

    .. seealso:: :wiki:`Working with Files and Media <Working-with-Files-and-Media>`

    .. versionadded:: 22.8

    Args:
        media (:obj:`str` | :term:`file object` | :class:`~telegram.InputFile` | :obj:`bytes`             | :class:`pathlib.Path` | :class:`~telegram.Video`): Video of the live photo to send.
           Pass a ``file_id`` to send a file that exists on the Telegram servers (recommended).
           |uploadinputnopath| Sending live photos by a URL is currently unsupported. Lastly
           you can pass an existing :class:`telegram.Video` object to send.
        photo (:obj:`str` | :term:`file object` | :class:`~telegram.InputFile` | :obj:`bytes`             | :class:`pathlib.Path` | :class:`~telegram.PhotoSize`): The static photo to send.
            Pass a ``file_id`` to send a file that exists on the Telegram servers (recommended).
            |uploadinputnopath| Sending live photos by a URL is currently unsupported. Lastly
            you can pass an existing :class:`telegram.PhotoSize` object to send.
        caption (:obj:`str`, optional): Caption of the live photo to be sent,
            0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters after
            entities parsing.
        parse_mode (:obj:`str`, optional): |parse_mode|
        caption_entities (Sequence[:class:`telegram.MessageEntity`], optional): |caption_entities|
        show_caption_above_media (:obj:`bool`, optional): Pass |show_cap_above_med|
        has_spoiler (:obj:`bool`, optional): Pass :obj:`True`, if the video needs to be covered
            with a spoiler animation.

    Attributes:
        type (:obj:`str`): :tg-const:`telegram.constants.BaseInputMediaType.LIVE_PHOTO`.
        media (:obj:`str` | :class:`telegram.InputFile`): Video of the live photo to send.
        photo (:obj:`str` | :class:`telegram.InputFile`): The static photo to send.
        caption (:obj:`str`): Optional. Caption of the live photo to be sent,
            0-:tg-const:`telegram.constants.MessageLimit.CAPTION_LENGTH` characters
            after entities parsing.
        parse_mode (:obj:`str`): Optional. |parse_mode|
        caption_entities (tuple[:class:`telegram.MessageEntity`]): Optional. |captionentitiesattr|
        show_caption_above_media (:obj:`bool`): Optional. |show_cap_above_med|
        has_spoiler (:obj:`bool`): Optional. :obj:`True`, if the video is covered with a
            spoiler animation.
    )rk   rg   rl   Nr    r7   rW   rg   rL   r5   r8   r6   rl   rk   r!   c          	         sz   t |tddd�}t |tddd�}tƒ jtj|||||d� |  ¡ � || _|| _	|| _
W d   ƒ d S 1 s6w   Y  d S )NTrh   r    )r   r   r   r$   r%   r   rG   r;   rg   rl   rk   )	r'   r7   rg   r5   r8   r6   rl   rk   r!   r(   r*   r+   r%   .  s   ú
"ýzInputMediaLivePhoto.__init__r|   r*   r*   r(   r+   r–     s6    (ø
öþýüû
úùø
ör–   ÚInputPollMediaÚInputPollOptionMedia)Er0   Údatetimerd   Úcollections.abcr   Útypingr   r   r   Útelegramr   Útelegram._files.animationr   Útelegram._files.audior   Útelegram._files.documentr	   Útelegram._files.inputfiler
   Útelegram._files.photosizer   Útelegram._files.stickerr   Útelegram._files.videor   Útelegram._messageentityr   Útelegram._telegramobjectr   Útelegram._utilsr   Útelegram._utils.argumentparsingr   r   Útelegram._utils.datetimer   Útelegram._utils.defaultvaluer   Útelegram._utils.filesr   Útelegram._utils.typesr   r   r   Útelegram._utils.warningsr   Útelegram.constantsr   Útelegram.warningsr   r   r   r4   rD   rK   rP   rf   rj   r{   r}   r~   r…   r�   r�   r“   r–   r—   rJ   r˜   r*   r*   r*   r+   Ú<module>   s–   M0n- *u H$E- uIÿþýüûúù
ÿ
ÿþýüûú
ÿ	