§
    ŠŠtj 9  ã                   ód  — U d dl Z d dlZ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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mZ d dlmZmZ d d	lmZmZ  ej        e¦  «        Zej        e d
<   dZ!e"e d<    ed¬¦  «         G d„ d¦  «        ¦   «         Z# ed¬¦  «         G d„ d¦  «        ¦   «         Z$ ed¬¦  «         G d„ d¦  «        ¦   «         Z% G d„ de¦  «        Z&de'e(         de"de'e#         fd„Z)de'e(         de"de'e#         fd„Z*	 d7de(de(de"de+e'e(         e'e#         f         fd„Z,d e(fd!„Z-d"e'e(         d#e'e#         de(dz  fd$„Z.d%Z/d&Z0d'Z1 G d(„ d)¦  «        Z2 G d*„ d+e¦  «        Z3 G d,„ d-e¦  «        Z4 G d.„ d/¦  «        Z5	 d8d0e6d1e(dz  d2e"d3e'e&         d4e7e(         d5e"ddfd6„Z8dS )9é    N)ÚABCÚabstractmethod)ÚCallable)ÚThreadPoolExecutor)Ú	dataclass)ÚBaseHTTPRequestHandlerÚThreadingHTTPServer)Úparse_qsÚurlparse)Ú
DictLoaderÚEnvironment)Úget_world_sizeÚtcpstore_clientÚloggerç      N@Ú_DEFAULT_FETCH_TIMEOUTT)Úslotsc                   ó0   — e Zd ZU eed<   eed<   d„ Zd„ ZdS )ÚResponseÚstatus_codeÚtextc                 óZ   — | j         dk    rt          d| j         › d| j        › �¦  «        ‚d S )NéÈ   zHTTP ú: )r   ÚRuntimeErrorr   ©Úselfs    ú_/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/distributed/debug/_frontend.pyÚraise_for_statuszResponse.raise_for_status#   s<   € ØÔ˜sÒ"Ð"ÝÐF tÔ'7ÐFÐF¸4¼9ÐFÐFÑGÔGÐGð #Ð"ó    c                 ó4   — t          j        | j        ¦  «        S ©N)ÚjsonÚloadsr   r   s    r   r#   zResponse.json'   s   € ÝŒz˜$œ)Ñ$Ô$Ð$r    N)Ú__name__Ú
__module__Ú__qualname__ÚintÚ__annotations__Ústrr   r#   © r    r   r   r      sL   € € € € € € àÐÐÑØ
€I€I�IðHð Hð Hð%ð %ð %ð %ð %r    r   c                   ó$   — e Zd ZU eed<   eed<   dS )ÚNavLinkÚpathÚlabelN)r%   r&   r'   r*   r)   r+   r    r   r-   r-   +   s"   € € € € € € à
€I€I�IØ€J€J�J€J€Jr    r-   c                   ó6   — e Zd ZU eed<   edgef         ed<   dS )ÚRouter.   ÚHTTPRequestHandlerÚhandlerN)r%   r&   r'   r*   r)   r   Úbytesr+   r    r   r1   r1   1   s5   € € € € € € à
€I€I�IØÐ+Ð,¨eÐ3Ô4Ð4Ð4Ñ4Ð4Ð4r    r1   c                   ó¨   — e Zd ZU eZeed<   edee	         fd„¦   «         Z
edee         fd„¦   «         Zdeeef         fd„Zdedz  fd„Zdefd„ZdS )	ÚDebugHandlerÚfetch_timeoutÚreturnc                 ó   — d S r"   r+   r   s    r   ÚrouteszDebugHandler.routes:   s   € Ø%( Sr    c                 ó   — d S r"   r+   r   s    r   Ú	nav_linkszDebugHandler.nav_links=   s   € Ø*-¨#r    c                 ó   — i S r"   r+   r   s    r   Ú	templateszDebugHandler.templates@   s   € Øˆ	r    Nc                 ó   — d S r"   r+   r   s    r   ÚdumpzDebugHandler.dumpC   s   € Øˆtr    c                 óN   — t          | ¦  «        j                             ¦   «         S r"   )Útyper%   Úlowerr   s    r   Údump_filenamezDebugHandler.dump_filenameF   s   € Ý�D‰zŒzÔ"×(Ò(Ñ*Ô*Ð*r    )r%   r&   r'   r   r7   Úfloatr)   r   Úlistr1   r:   r-   r<   Údictr*   r>   r@   rD   r+   r    r   r6   r6   7   sÁ   € € € € € € Ø1€M�5Ð1Ð1Ñ1àØ(˜˜UœÐ(Ð(Ð(ñ „^Ø(àØ-˜4 œ=Ð-Ð-Ð-ñ „^Ø-ð˜4  S œ>ð ð ð ð ð�c˜D‘jð ð ð ð ð+˜sð +ð +ð +ð +ð +ð +r    r6   ÚurlsÚtimeoutr8   c                 óÖ   ‡‡— dd l Šd}dt          dt          fˆˆfd„}t          |¬¦  «        5 }t	          |                     || ¦  «        ¦  «        }d d d ¦  «         n# 1 swxY w Y   |S )Nr   é   Úurlr8   c                 óŒ  •— 	 ‰                      | ‰¬¦  «        }t          |j        |j        ¦  «        S # ‰j        j        $ r}t          dd|› �¦  «        cY d }~S d }~w‰j        j        $ r}t          dd|› �¦  «        cY d }~S d }~wt          $ r1}t          dt          |¦  «        j	        › d|› �¦  «        cY d }~S d }~ww xY w)N©rI   é˜  z	Timeout: é÷  zConnectionError: éö  r   )
Úpostr   r   r   Ú
exceptionsÚTimeoutÚConnectionErrorÚ	ExceptionrB   r%   )rL   ÚrespÚeÚrequestsrI   s      €€r   Úgetzfetch_thread_pool.<locals>.getU   s  ø€ ð	=Ø—=’= ¨g�=Ñ6Ô6ˆDÝ˜DÔ,¨d¬iÑ8Ô8Ð8øØÔ"Ô*ð 	2ð 	2ð 	2Ý˜C ¨Q  Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1øøøøØÔ"Ô2ð 	:ð 	:ð 	:Ý˜CÐ!8°QÐ!8Ð!8Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9øøøøÝð 	=ð 	=ð 	=Ý˜C¥D¨¡G¤GÔ$4Ð!;Ð!;¸Ð!;Ð!;Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<øøøøð	=øøøs?   ƒ04 ´CÁAÁCÁCÁ-BÁ?CÂCÂ&B>Â8CÂ>C)Úmax_workers)rY   r*   r   r   rF   Úmap)rH   rI   r[   rZ   ÚexecutorÚrespsrY   s    `    @r   Úfetch_thread_poolr_   O   sÊ   øø€ à€O€O€Oà€Kð	=•ð 	=�ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=õ 
¨Ð	4Ñ	4Ô	4ð .¸Ý�X—\’\ # tÑ,Ô,Ñ-Ô-ˆð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .ð €Ls   ®$AÁA"Á%A"c                 óØ   ‡‡‡— dd l Šd‰j        dt          dt          fˆfd„Šdt          t                   dt          t                   fˆˆˆfd„}t          j         || ¦  «        ¦  «        S )Nr   ÚsessionrL   r8   c              “   ó,  •K  — 	 |                       |¦  «        4 ƒd {V —†}|                     ¦   «         ƒ d {V —†}t          |j        |¦  «        cd d d ¦  «        ƒd {V —† S # 1 ƒd {V —†swxY w Y   d S # t          j        $ r}t          dd|› �¦  «        cY d }~S d }~w‰j        $ r1}t          dt          |¦  «        j        › d|› �¦  «        cY d }~S d }~wt          $ r1}t          dt          |¦  «        j        › d|› �¦  «        cY d }~S d }~ww xY w)NrO   zTimeoutError: rP   r   rQ   )
rR   r   r   ÚstatusÚasyncioÚTimeoutErrorÚClientErrorrB   r%   rV   )ra   rL   rW   r   rX   Úaiohttps        €r   Úfetchzfetch_aiohttp.<locals>.fetchk   sî  øè è € ð		=Ø—|’| CÑ(Ô(ð 3ð 3ð 3ð 3ð 3ð 3ð 3¨DØ!ŸYšY™[œ[Ð(Ð(Ð(Ð(Ð(Ð(�Ý ¤¨TÑ2Ô2ð3ð 3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3ð 3ð 3øõ Ô#ð 	7ð 	7ð 	7Ý˜CÐ!5°!Ð!5Ð!5Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6øøøøØÔ"ð 	=ð 	=ð 	=Ý˜C¥D¨¡G¤GÔ$4Ð!;Ð!;¸Ð!;Ð!;Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<øøøøÝð 	=ð 	=ð 	=Ý˜C¥D¨¡G¤GÔ$4Ð!;Ð!;¸Ð!;Ð!;Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<øøøøð	=øøøsd   …A5  /A"ÁA5 Á"
A,Á,A5 Á/A,Á0A5 Á5DÂBÂDÂDÂ)&CÃDÃDÃ"&DÄDÄDrH   c              “   ó  •‡K  — ‰                      ‰¬¦  «        }‰                     |¬¦  «        4 ƒd {V —†Št          t          j        ˆˆfd„| D ¦   «         Ž ƒ d {V —†¦  «        cd d d ¦  «        ƒd {V —† S # 1 ƒd {V —†swxY w Y   d S )N)ÚtotalrN   c                 ó(   •— g | ]} ‰‰|¦  «        ‘ŒS r+   r+   )Ú.0rL   rh   ra   s     €€r   ú
<listcomp>z1fetch_aiohttp.<locals>.gather.<locals>.<listcomp>z   s%   ø€ Ð.SÐ.SÐ.SÀs¨u¨u°W¸cÑ/BÔ/BÐ.SÐ.SÐ.Sr    )ÚClientTimeoutÚClientSessionrF   rd   Úgather)rH   Úclient_timeoutra   rg   rh   rI   s     @€€€r   rp   zfetch_aiohttp.<locals>.gatherw   sQ  øøè è € Ø ×.Ò.°WÐ.Ñ=Ô=ˆØ×(Ò(°Ð(Ñ@Ô@ð 	Vð 	Vð 	Vð 	Vð 	Vð 	Vð 	VÀGÝ�gœnÐ.SÐ.SÐ.SÐ.SÐ.SÈdÐ.SÑ.SÔ.SÐTÐTÐTÐTÐTÐTÐTÑUÔUð	Vð 	Vð 	Vð 	Vñ 	Vô 	Vð 	Vð 	Vð 	Vð 	Vð 	Vð 	Vð 	Vð 	Vð 	Vð 	Vð 	Vð 	Vð 	Vð 	Vð 	Vð 	Vð 	Vð 	Vøøøð 	Vð 	Vð 	Vð 	Vð 	Vð 	Vs   ·.A8Á8
BÂB)rg   ro   r*   r   rF   rd   Úrun)rH   rI   rp   rg   rh   s    ` @@r   Úfetch_aiohttprs   f   s¨   øøø€ ð €N€N€Nð
=˜WÔ2ð 
=½ð 
=Åð 
=ð 
=ð 
=ð 
=ð 
=ð 
=ðV�4¥œ9ð V­­h¬ð Vð Vð Vð Vð Vð Vð Vð Võ
 Œ;�v�v˜d‘|”|Ñ$Ô$Ð$r    Ú ÚendpointÚargsc                ó$  ‡ ‡— t          ¦   «         }d„ t          t          ¦   «         ¦  «        D ¦   «         }|                     |¦  «        }ˆˆ fd„|D ¦   «         }	 t	          ||¬¦  «        }n!# t
          $ r t          ||¬¦  «        }Y nw xY w||fS )Nc                 ó   — g | ]}d |› �‘ŒS )Úrankr+   )rl   Úrs     r   rm   zfetch_all.<locals>.<listcomp>ƒ   s   € Ð8Ð8Ð8˜1ˆJ�1ˆJˆJÐ8Ð8Ð8r    c                 óH   •— g | ]}|                      ¦   «         › d ‰› d‰› �‘ŒS )z	/handler/ú?)Údecode)rl   Úaddrrv   ru   s     €€r   rm   zfetch_all.<locals>.<listcomp>…   s7   ø€ ÐLÐLÐL¸d�—’‘”Ð9Ð9¨Ð9Ð9°4Ð9Ð9ÐLÐLÐLr    rN   )r   Úranger   Ú	multi_getrs   ÚImportErrorr_   )ru   rv   rI   ÚstoreÚkeysÚaddrsr^   s   ``     r   Ú	fetch_allr…      sµ   øø€ õ ÑÔ€EØ8Ð8¥¥nÑ&6Ô&6Ñ 7Ô 7Ð8Ñ8Ô8€DØ�OŠO˜DÑ!Ô!€EØLÐLÐLÐLÐLÀeÐLÑLÔL€Eð:Ý˜e¨WÐ5Ñ5Ô5ˆˆøÝð :ð :ð :Ý! %°Ð9Ñ9Ô9ˆˆˆð:øøøð �%ˆ<Ðs   ÁA- Á-BÂ
BÚblobc                 óV   — t          j        | ¦  «        }t          j        |d¬¦  «        S )Né   )Úindent)r#   r$   Údumps)r†   Úparseds     r   Úformat_jsonrŒ   �   s&   € ÝŒZ˜ÑÔ€FÝŒ:�f QÐ'Ñ'Ô'Ð'r    r„   r^   c                 ó  — d„ t          |¦  «        D ¦   «         }|sdS t          | ¦  «        }|t          |¦  «        z
  }d|› d|› d�g}|D ]%\  }}|                     d|› d|j        › �¦  «         Œ&d                     |¦  «        S )	zHReturn a summary string if any workers failed, or None if all succeeded.c                 ó2   — g | ]\  }}|j         d k    ¯||f‘ŒS )r   )r   )rl   Úirz   s      r   rm   z(format_fetch_summary.<locals>.<listcomp>–   s,   € ÐJÐJÐJ™˜˜A°Q´]ÀcÒ5IÐ5Iˆq�!ˆfÐ5IÐ5IÐ5Ir    NzPARTIAL DATA: ú/z workers respondedz  Rank r   ú
)Ú	enumerateÚlenÚappendr   Újoin)r„   r^   Úfailedrj   ÚokÚlinesry   rW   s           r   Úformat_fetch_summaryr™   ”   s­   € àJÐJ¥¨5Ñ!1Ô!1ÐJÑJÔJ€FØð ØˆtÝ�‰JŒJ€EØ	•�V‘”Ñ	€BØ<˜bÐ<Ð< 5Ð<Ð<Ð<Ð=€EØð 4ð 4‰
ˆˆdØ�ŠÐ2˜tÐ2Ð2 t¤yÐ2Ð2Ñ3Ô3Ð3Ð3Ø�9Š9�UÑÔÐr    ac  
<!doctype html>
<head>
    <title>{% block title %}{% endblock %} - PyTorch Distributed</title>
    <link rel="shortcut icon" type="image/x-icon" href="https://pytorch.org/favicon.ico?">

    <style>
        body {
            margin: 0;
            font-family:
                -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,
                "Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji",
                "Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";
            font-size: 1rem;
            font-weight: 400;
            line-height: 1.5;
            color: #212529;
            text-align: left;
            background-color: #fff;
        }
        h1, h2, h2, h4, h5, h6, .h1, .h2, .h2, .h4, .h5, .h6 {
            margin-bottom: .5rem;
            font-weight: 500;
            line-height: 1.2;
        }
        nav {
            background-color: rgba(0, 0, 0, 0.17);
            padding: 10px;
            display: flex;
            align-items: center;
            padding: 16px;
            justify-content: flex-start;
        }
        nav h1 {
            display: inline-block;
            margin: 0;
        }
        nav a {
           margin: 0 8px;
        }
        section {
            max-width: 1280px;
            padding: 16px;
            margin: 0 auto;
        }
        pre {
            white-space: pre-wrap;
            max-width: 100%;
        }
    </style>
</head>

<nav>
    <h1>Torch Distributed Debug Server</h1>

    {{ nav_links | safe }}
</nav>

<section class="content">
  {% block header %}{% endblock %}
  {% block content %}{% endblock %}
</section>
    aó  
{% extends "base.html" %}
{% block header %}
    <h1>{% block title %}{{title}}{% endblock %}</h1>
{% endblock %}
{% block content %}
    {% for i, (addr, resp) in enumerate(zip(addrs, resps)) %}
        <h2>Rank {{ i }}: {{ addr }}</h2>
        {% if resp.status_code != 200 %}
            <p>Failed to fetch: status={{ resp.status_code }}</p>
            <pre>{{ resp.text }}</pre>
        {% else %}
            <pre>{{ resp.text }}</pre>
        {% endif %}
    {% endfor %}
{% endblock %}
    a  
{% extends "base.html" %}
{% block header %}
    <h1>{% block title %}{{ title }}{% endblock %}</h1>
{% endblock %}
{% block content %}
    {% for i, (addr, resp) in enumerate(zip(addrs, resps)) %}
        <h2>Rank {{ i }}: {{ addr }}</h2>
        {% if resp.status_code != 200 %}
            <p>Failed to fetch: status={{ resp.status_code }}</p>
            <pre>{{ resp.text }}</pre>
        {% else %}
            <pre>{{ format_json(resp.text) }}</pre>
        {% endif %}
    {% endfor %}
{% endblock %}
    c            	       óN   — e Zd Z	 ddee         dededdfd„Zdd„Zdd	„Z	dd
„Z
dS )ÚPeriodicDumperr   ÚhandlersÚ
output_dirÚinterval_secondsr8   Nc                 ón   — || _         || _        || _        t          j        ¦   «         | _        d | _        d S r"   )Ú	_handlersÚ_output_dirÚ_interval_secondsÚ	threadingÚEventÚ_stop_eventÚ_thread)r   rœ   r�   rž   s       r   Ú__init__zPeriodicDumper.__init__  s6   € ð "ˆŒØ%ˆÔØ!1ˆÔÝ$œ?Ñ,Ô,ˆÔØ04ˆŒˆˆr    c                 ó°   — t          j        | j        d¬¦  «         t          j        | j        dd¬¦  «        | _        | j                             ¦   «          d S )NT)Úexist_okz distributed.debug.PeriodicDumper)ÚtargetÚdaemonÚname)ÚosÚmakedirsr¡   r£   ÚThreadÚ_runr¦   Ústartr   s    r   r±   zPeriodicDumper.start  sZ   € Ý
Œ�DÔ$¨tÐ4Ñ4Ô4Ð4Ý Ô'Ø”9ØØ3ð
ñ 
ô 
ˆŒð
 	Œ×ÒÑÔÐÐÐr    c                 ó|   — | j                              ¦   «          | j        �| j                             ¦   «          d S d S r"   )r¥   Úsetr¦   r•   r   s    r   ÚstopzPeriodicDumper.stop&  sA   € ØÔ×ÒÑÔÐØŒ<Ð#ØŒL×ÒÑÔÐÐÐð $Ð#r    c                 óì  — | j                              ¦   «         �sY| j        D �]}	 |                     ¦   «         }n=# t          $ r0 t
                               d|                     ¦   «         ¦  «         Y ŒRw xY w|€ŒYt          j	        d¦  «        }|                     ¦   «         › d|› d�}t          j                             | j        |¦  «        }	 t          |d¦  «        5 }|                     |¦  «         d d d ¦  «         n# 1 swxY w Y   Œë# t          $ r t
                               d|¦  «         Y �Œw xY w| j                              | j        ¦  «         | j                              ¦   «         �¯Wd S d S )NzFailed to dump %sz%Y%m%d_%H%M%SÚ_z.txtÚwzFailed to write dump to %s)r¥   Úis_setr    r@   rV   r   Ú	exceptionrD   ÚtimeÚstrftimer­   r.   r•   r¡   ÚopenÚwriteÚwaitr¢   )r   r3   ÚcontentÚ	timestampÚfilenamer.   Úfs          r   r°   zPeriodicDumper._run+  sÒ  € ØÔ"×)Ò)Ñ+Ô+ñ 	:Øœ>ð Iñ I�ðØ%Ÿlšl™nœn�G�GøÝ ð ð ð Ý×$Ò$Ð%8¸'×:OÒ:OÑ:QÔ:QÑRÔRÐRØ�Hðøøøð �?ØÝ œM¨/Ñ:Ô:�	Ø%×3Ò3Ñ5Ô5ÐGÐG¸	ÐGÐGÐG�Ý”w—|’| DÔ$4°hÑ?Ô?�ðIÝ˜d C™œð )¨AØŸš Ñ(Ô(Ð(ð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )øøå ð Ið Ið IÝ×$Ò$Ð%AÀ4ÑHÔHÐHÐHÑHðIøøøàÔ×!Ò! $Ô"8Ñ9Ô9Ð9ð# Ô"×)Ò)Ñ+Ô+ñ 	:ð 	:ð 	:ð 	:ð 	:sE   ¦;»7A5Á4A5ÃDÃDÃ5DÄD	ÄDÄD	Ä	DÄ%D6Ä5D6©r   ©r8   N)r%   r&   r'   rF   r6   r*   rE   r§   r±   r´   r°   r+   r    r   r›   r›     s™   € € € € € ð
 #'ð	
5ð 
5à�|Ô$ð
5ð ð
5ð  ð	
5ð
 
ð
5ð 
5ð 
5ð 
5ðð ð ð ð ð  ð  ð  ð
:ð :ð :ð :ð :ð :r    r›   c                   ó@   — e Zd ZU ej        Zej        ed<   dZe	ed<   dS )Ú_IPv6HTTPServerÚaddress_familyi   Úrequest_queue_sizeN)
r%   r&   r'   ÚsocketÚAF_INET6rÇ   ÚAddressFamilyr)   rÈ   r(   r+   r    r   rÆ   rÆ   E  s8   € € € € € € Ø+1¬?€N�FÔ(Ð:Ð:Ñ:Ø"Ð˜Ð"Ð"Ñ"Ð"Ð"r    rÆ   c            	       ó„   — e Zd ZU ded<   d„ Zd„ Zdefd„Zdeee	e         f         fd„Z
defd„Zd	efd
edededefd„Zd	S )r2   ÚFrontendServerÚfrontendc                 óZ   — t                                d| j        d         ||z  ¦  «         d S )Nz%s %sr   )r   ÚinfoÚclient_address)r   Úformatrv   s      r   Úlog_messagezHTTPRequestHandler.log_messageM  s7   € Ý�ŠØØÔ Ô"Ø�T‰Mñ	
ô 	
ð 	
ð 	
ð 	
r    c                 ó:   — | j                              | ¦  «         d S r"   )rÎ   Ú_handle_requestr   s    r   Údo_GETzHTTPRequestHandler.do_GETT  s   € ØŒ×%Ò% dÑ+Ô+Ð+Ð+Ð+r    r8   c                 ó4   — t          | j        ¦  «        j        S r"   )r   r.   r   s    r   Úget_pathzHTTPRequestHandler.get_pathW  s   € Ý˜œ	Ñ"Ô"Ô'Ð'r    c                 óD   — t          |                      ¦   «         ¦  «        S r"   )r
   Úget_raw_queryr   s    r   Ú	get_queryzHTTPRequestHandler.get_queryZ  s   € Ý˜×*Ò*Ñ,Ô,Ñ-Ô-Ð-r    c                 ó4   — t          | j        ¦  «        j        S r"   )r   r.   Úqueryr   s    r   rÚ   z HTTPRequestHandler.get_raw_query]  s   € Ý˜œ	Ñ"Ô"Ô(Ð(r    Nr¬   ÚdefaultrB   c                 ód   — |                       ¦   «         }||vr|S  |||         d         ¦  «        S )Nr   )rÛ   )r   r¬   rÞ   rB   rÝ   s        r   Úget_query_argz HTTPRequestHandler.get_query_arg`  s;   € ð —’Ñ Ô ˆØ�uÐÐØˆNØˆt�E˜$”K ”NÑ#Ô#Ð#r    )r%   r&   r'   r)   rÓ   rÖ   r*   rØ   rG   rF   rÛ   rÚ   ÚobjectrB   rà   r+   r    r   r2   r2   J  sÞ   € € € € € € ØÐÐÑð
ð 
ð 
ð,ð ,ð ,ð(˜#ð (ð (ð (ð (ð.˜4  T¨#¤Y Ô/ð .ð .ð .ð .ð)˜sð )ð )ð )ð )ð ,0¸cð$ð $Øð$Ø"(ð$Ø7;ð$à	ð$ð $ð $ð $ð $ð $r    r2   c                   óh   — e Zd Z	 ddedee         dz  fd„Zdd„Zdd„Zde	ddfd	„Z
d
ededefd„ZdS )rÍ   NÚportrœ   c                 óî  — |€ddl m}  |¦   «         }d                     d„ |D ¦   «         ¦  «        }t          t          t
          dœ}|D ])}|                     |                     ¦   «         ¦  «         Œ*t          |¦  «        }t          |d¬¦  «        | _
        | j
        j                             t          t          t          |¬¦  «         i | _        |D ]-}|                     ¦   «         D ]}|j        | j        |j        <   ŒŒ.|| _        t)          d	t*          fd
| i¦  «        }	d|f}
t-          |
|	¦  «        | _        t1          j        | j        ddd¬¦  «        | _        | j                             ¦   «          d S )Nr   )Údefault_handlersr‘   c              3   ój   K  — | ].}|                      ¦   «         D ]}d |j        › d|j        › d�V — ŒŒ/dS )z    <a href="z">z</a> <!--@lint-ignore-->N)r<   r.   r/   )rl   r3   Úlinks      r   ú	<genexpr>z*FrontendServer.__init__.<locals>.<genexpr>u  sq   è è € ð 
ð 
àØ×)Ò)Ñ+Ô+ð
ð 
ð ð N˜DœIÐMÐM¨¬ÐMÐMÐMð
ð 
ð 
ð 
ð 
ð 
ð 
r    )z	base.htmlzraw_resp.htmlzjson_resp.htmlT)ÚloaderÚenable_async)ÚziprŒ   r’   r<   r2   rÎ   rt   r+   z distributed.debug.FrontendServer)rª   rv   r«   r¬   )Ú'torch.distributed.debug._debug_handlersrå   r•   ÚBASE_TEMPLATEÚRAW_RESP_TEMPLATEÚJSON_RESP_TEMPLATEÚupdater>   r   r   Ú
_jinja_envÚglobalsrë   rŒ   r’   Ú_routesr:   r3   r.   r    rB   r2   rÆ   Ú_serverr£   r¯   Ú_server¦   r±   )r   rã   rœ   rå   Únav_htmlÚall_templatesr3   ré   ÚrouteÚRequestHandlerClassÚserver_addresss              r   r§   zFrontendServer.__init__j  sÌ  € ð
 ÐØPÐPÐPÐPÐPÐPà'Ð'Ñ)Ô)ˆHð —9’9ð 
ð 
à#ð
ñ 
ô 
ñ 
ô 
ˆõ 'Ý.Ý0ð)
ð )
ˆð
  ð 	6ð 	6ˆGØ× Ò  ×!2Ò!2Ñ!4Ô!4Ñ5Ô5Ð5Ð5å˜MÑ*Ô*ˆÝ%¨VÀ$ÐGÑGÔGˆŒØŒÔ×&Ò&ÝÝ#ÝØð	 	'ñ 	
ô 	
ð 	
ð JLˆŒØð 	9ð 	9ˆGØ ŸšÑ)Ô)ð 9ð 9�Ø+0¬=�”˜UœZÑ(Ð(ð9ð "ˆŒõ #Ø ÝÐ!Ø˜Ðñ
ô 
Ðð ˜d˜ˆÝ& ~Ð7JÑKÔKˆŒå Ô'Ø”;ØØØ3ð	
ñ 
ô 
ˆŒð 	Œ×ÒÑÔÐÐÐr    r8   c                 ó�   — 	 | j                              ¦   «          d S # t          $ r t                               d¦  «         Y d S w xY w)Nz got exception in frontend server)rô   Úserve_foreverrV   r   r¹   r   s    r   rõ   zFrontendServer._serve§  s_   € ð	AØŒL×&Ò&Ñ(Ô(Ð(Ð(Ð(øÝð 	Að 	Að 	AÝ×ÒÐ?Ñ@Ô@Ð@Ð@Ð@Ð@ð	Aøøøs   ‚ �$AÁAc                 ó8   — | j                              ¦   «          d S r"   )r¦   r•   r   s    r   r•   zFrontendServer.join­  s   € ØŒ×ÒÑÔÐÐÐr    Úreqc                 ó  — |                      ¦   «         }|| j        vr|                     dd|› �¦  «         d S | j        |         }	  ||¦  «        }n`# t          t          f$ rL}t
                               d|¦  «         |                     ddt          |¦  «        › �¦  «         Y d }~d S d }~ww xY w|                     d¦  «         | 	                    dd¦  «         | 
                    ¦   «          |j                             |¦  «         d S )	Ni”  zHandler not found: z-Exception in frontend server when handling %siô  zException: r   zContent-typez	text/html)rØ   ró   Ú
send_errorrV   Ú
SystemExitr   r¹   ÚreprÚsend_responseÚsend_headerÚend_headersÚwfiler½   )r   rþ   r.   r3   rW   rX   s         r   rÕ   zFrontendServer._handle_request°  s&  € Ø�|Š|‰~Œ~ˆØ�t”|Ð#Ð#Ø�NŠN˜3Ð <°dÐ <Ð <Ñ=Ô=Ð=ØˆFà”,˜tÔ$ˆð		Ø�7˜3‘<”<ˆDˆDøå�:Ð&ð 	ð 	ð 	Ý×ÒØ?Øñô ð ð �NŠN˜3Ð 7­d°1©g¬gÐ 7Ð 7Ñ8Ô8Ð8ØˆFˆFˆFˆFˆFøøøøð	øøøð 	×Ò˜#ÑÔÐØ�Š˜¨Ñ4Ô4Ð4Ø�ŠÑÔÐØŒ	�Š˜ÑÔÐÐÐs   ÁA ÁB0Á$AB+Â+B0ÚtemplateÚkwargsc                 óp   —  | j                              |¦  «        j        di |¤Ž                     ¦   «         S )Nr+   )rñ   Úget_templateÚrenderÚencode)r   r  r  s      r   Úrender_templatezFrontendServer.render_templateÇ  s7   € Ø<ˆtŒ×+Ò+¨HÑ5Ô5Ô<ÐFÐF¸vÐFÐF×MÒMÑOÔOÐOr    r"   rÄ   )r%   r&   r'   r(   rF   r6   r§   rõ   r•   r2   rÕ   r*   rá   r4   r  r+   r    r   rÍ   rÍ   i  sÐ   € € € € € ð /3ð;ð ;àð;ð �|Ô$ tÑ+ð;ð ;ð ;ð ;ðzAð Að Að Aðð ð ð ðÐ#5ð ¸$ð ð ð ð ð.P¨ð P°vð PÀ%ð Pð Pð Pð Pð Pð Pr    rÍ   rã   Údump_dirÚdump_intervalrœ   Úenabled_dumpsr7   c                 ó  ‡— |D ]	}||_         Œ
t                               t          j        ¦  «         t          | |¬¦  «        }t                               d|j        j        ¦  «         d }|�Mt          ˆfd„|D ¦   «         ||¦  «        }| 
                    ¦   «          t                               d||¦  «         	 |                     ¦   «          |�|                     ¦   «          d S d S # |�|                     ¦   «          w w xY w)N)rã   rœ   z"Frontend server started on port %dc                 ó@   •— g | ]}|                      ¦   «         ‰v ¯|‘ŒS r+   )rD   )rl   r3   r  s     €r   rm   zmain.<locals>.<listcomp>Þ  s:   ø€ ð ð ð àØ×(Ò(Ñ*Ô*¨mÐ;Ð;ð à;Ð;Ð;r    z2Periodic dumper started, writing to %s every %.0fs)r7   r   ÚsetLevelÚloggingÚINFOrÍ   rÐ   rô   Úserver_portr›   r±   r•   r´   )	rã   r  r  rœ   r  r7   r3   ÚserverÚdumpers	       `    r   Úmainr  Ë  s#  ø€ ð ð .ð .ˆØ -ˆÔÐå
‡O‚O•G”LÑ!Ô!Ð!å °Ð9Ñ9Ô9€FÝ
‡K‚KÐ4°f´nÔ6PÑQÔQÐQà$(€FØÐÝðð ð ð à'ðñ ô ð
 Øñ
ô 
ˆð 	�Š‰ŒˆÝ�ŠØ@ØØñ	
ô 	
ð 	
ðØ�Š‰ŒˆàÐØ�KŠK‰MŒMˆMˆMˆMð Ðøˆ6ÐØ�KŠK‰MŒMˆMˆMð øøøs   Â:C( Ã(D)rt   rÃ   )9rd   r#   r  r­   rÉ   r£   rº   Úabcr   r   Úcollections.abcr   Úconcurrent.futuresr   Údataclassesr   Úhttp.serverr   r	   Úurllib.parser
   r   Újinja2r   r   Útorch.distributed.debug._storer   r   Ú	getLoggerr%   r   ÚLoggerr)   r   rE   r   r-   r1   r6   rF   r*   r_   rs   Útupler…   rŒ   r™   rí   rî   rï   r›   rÆ   r2   rÍ   r(   r³   r  r+   r    r   ú<module>r%     sb  ðØ €€€€Ø €€€Ø €€€Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø $Ð $Ð $Ð $Ð $Ð $Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø !Ð !Ð !Ð !Ð !Ð !Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ +Ð +Ð +Ð +Ð +Ð +Ð +Ð +à *Ð *Ð *Ð *Ð *Ð *Ð *Ð *à JÐ JÐ JÐ JÐ JÐ JÐ JÐ Jð +˜Ô*¨8Ñ4Ô4€ˆŒÐ 4Ð 4Ñ 4à $Ð ˜Ð $Ð $Ñ $ð €�ÐÑÔð	%ð 	%ð 	%ð 	%ð 	%ñ 	%ô 	%ñ Ôð	%ð €�ÐÑÔðð ð ð ð ñ ô ñ Ôðð
 €�ÐÑÔð5ð 5ð 5ð 5ð 5ñ 5ô 5ñ Ôð5ð
+ð +ð +ð +ð +�3ñ +ô +ð +ð0˜D œIð °ð ¸$¸x¼.ð ð ð ð ð.%˜˜Sœ	ð %¨Eð %°d¸8´nð %ð %ð %ð %ð4  "ðð ØðØðØ/4ðà
ˆ4�Œ9�d˜8”nÐ$Ô%ðð ð ð ð (�cð (ð (ð (ð (ð

  S¤	ð 
°$°x´.ð 
ÀSÈ4ÁZð 
ð 
ð 
ð 
ð$>€ð@Ð ð$Ð ð0-:ð -:ð -:ð -:ð -:ñ -:ô -:ð -:ðj#ð #ð #ð #ð #Ð)ñ #ô #ð #ð
$ð $ð $ð $ð $Ð/ñ $ô $ð $ð>_Pð _Pð _Pð _Pð _Pñ _Pô _Pð _PðP  ð&ð &Ø
ð&à�D‰jð&ð ð&ð �<Ô ð	&ð
 �s”8ð&ð ð&ð 
ð&ð &ð &ð &ð &ð &r    