Files
aitsc/.venv/Lib/site-packages/engineio/__pycache__/client.cpython-312.pyc

152 lines
33 KiB
Plaintext
Raw Normal View History

2025-02-23 09:07:52 +08:00
<EFBFBD>
W0<57>g[j<00><00><00>ddlmZddlmZddlZddlZddlZddlZddlZddl Z ddl
Z
ddl Z ddl mZddl mZddl mZddl mZej$d <09>ZGd
<EFBFBD>d ej(<00>Zy#e $rdZ
Y<00>NwxYw#e $rdZ Y<00>VwxYw) <0C>)<01> b64encode)<01>JSONDecodeErrorN<72>)<01> base_client)<01>
exceptions)<01>packet)<01>payloadzengineio.clientc<00><><00>eZdZdZ dd<03>Zd<04>Zd<05>Zdd<06>Zd<07>Zdd<08>Z d <09>Z
d
<EFBFBD>Z d <0B>Z d <0C>Z d <0A>Zd<0E>Z dd<0F>Zd<10>Zd<11>Zd<12>Zd<13>Zy)<18>Clienta<74>An Engine.IO client.
This class implements a fully compliant Engine.IO web client with support
for websocket and long-polling transports.
:param logger: To enable logging set to ``True`` or pass a logger object to
use. To disable logging set to ``False``. The default is
``False``. Note that fatal errors are logged even when
``logger`` is ``False``.
:param json: An alternative json module to use for encoding and decoding
packets. Custom json modules must have ``dumps`` and ``loads``
functions that are compatible with the standard library
versions.
:param request_timeout: A timeout in seconds for requests. The default is
5 seconds.
:param http_session: an initialized ``requests.Session`` object to be used
when sending requests to the server. Use it if you
need to add special client options such as proxy
servers, SSL certificates, custom CA bundle, etc.
:param ssl_verify: ``True`` to verify SSL certificates, or ``False`` to
skip SSL certificate verification, allowing
connections to servers with self signed certificates.
The default is ``True``.
:param handle_sigint: Set to ``True`` to automatically handle disconnection
when the process is interrupted, or to ``False`` to
leave interrupt handling to the calling application.
Interrupt handling can only be enabled when the
client instance is created in the main thread.
:param websocket_extra_options: Dictionary containing additional keyword
arguments passed to
``websocket.create_connection()``.
:param timestamp_requests: If ``True`` a timestamp is added to the query
string of Socket.IO requests as a cache-busting
measure. Set to ``False`` to disable.
Nc<00>B<00>|jdk7r td<02><00>ddg}|<03>3t|t<00>r|g}|D<00>cgc]}||vr|<06><02>
}}|s td<05><00>|xs||_|j <00>|_t|d|jdz<00>||xsi|<04>Scc}w)a<>Connect to an Engine.IO server.
:param url: The URL of the Engine.IO server. It can include custom
query string parameters if required by the server.
:param headers: A dictionary with custom headers to send with the
connection request.
:param transports: The list of allowed transports. Valid transports
are ``'polling'`` and ``'websocket'``. If not
given, the polling transport is connected first,
then an upgrade to websocket is attempted.
:param engineio_path: The endpoint where the Engine.IO server is
installed. The default value is appropriate for
most cases.
Example usage::
eio = engineio.Client()
eio.connect('http://localhost:5000')
<20> disconnectedz%Client is not in a disconnected state<74>polling<6E> websocketzNo valid transports provided<65> _connect_r)<08>state<74>
ValueError<EFBFBD>
isinstance<EFBFBD>str<74>
transports<EFBFBD> create_queue<75>queue<75>getattr)<07>self<6C>url<72>headersr<00> engineio_path<74>valid_transports<74> transports <20>9D:\wxxcx\tsccc\.venv\Lib\site-packages\engineio/client.py<70>connectzClient.connect>s<><00><00>* <10>:<3A>:<3A><1E> '<27><1C>D<>E<> E<>%<25>{<7B>3<><18> <15> !<21><19>*<2A>c<EFBFBD>*<2A>(<28>\<5C>
<EFBFBD>5?<3F><<3C>Z<EFBFBD> <09>&<26>*:<3A>:<3A>$<24>Z<EFBFBD>J<EFBFBD><<3C><1D> <20>!?<3F>@<40>@<40>$<24>8<>(8<><04><0F><19>&<26>&<26>(<28><04>
<EFBFBD>><3E>w<EFBFBD>t<EFBFBD>[<5B>4<EFBFBD>?<3F>?<3F>1<EFBFBD>+=<3D>=<3D>><3E> <0F><17><1D>B<EFBFBD> <0A>/<2F> /<2F><> <s<00> Bc<00>R<00>|jr|jj<00>yy)z<>Wait until the connection with the server ends.
Client applications can use this function to block the main thread
during the life of the connection.
N)<02>read_loop_task<73>join)rs r<00>waitz Client.waitbs$<00><00> <10> <1E> <1E> <10> <1F> <1F> $<24> $<24> &<26> <1F>c<00>l<00>|jtjtj|<01><01><00>y)aSend a message to the server.
:param data: The data to send to the server. Data can be of type
``str``, ``bytes``, ``list`` or ``dict``. If a ``list``
or ``dict``, the data will be serialized as JSON.
<20><01>dataN)<04> _send_packetr<00>Packet<65>MESSAGE)rr(s r<00>sendz Client.sendks!<00><00> <0A><19><19>&<26>-<2D>-<2D><06><0E><0E>T<EFBFBD>B<>Cr%c<00>8<00>|jdk(r<>|jtjtj<00><00>|j
j d<02>d|_|jd|xs|jjd<05><06>|jdk(r|jj<00>|s|jj<00>d|_ tj j#|<00>|j'<00>y#t$$rY<00>wxYw) z<>Disconnect from the server.
:param abort: If set to ``True``, do not wait for background tasks
associated with the connection to end.
<20> connectedN<64> disconnecting<6E>
disconnectF<EFBFBD><01> run_asyncrr )rr)rr*<00>CLOSEr<00>put<75>_trigger_event<6E>reason<6F>CLIENT_DISCONNECT<43>current_transport<72>ws<77>closer"r#r<00>connected_clients<74>remover<00>_reset)r<00>abortr6s rr0zClient.disconnectts<><00><00> <10>:<3A>:<3A><1B> $<24> <10> <1D> <1D>f<EFBFBD>m<EFBFBD>m<EFBFBD>F<EFBFBD>L<EFBFBD>L<EFBFBD>9<> :<3A> <10>J<EFBFBD>J<EFBFBD>N<EFBFBD>N<EFBFBD>4<EFBFBD> <20>(<28>D<EFBFBD>J<EFBFBD> <10> <1F> <1F> <0C> &<26> G<>$<24>+<2B>+<2B>*G<>*G<>*/<2F> <20> 1<><14>%<25>%<25><1B>4<><14><07><07> <0A> <0A><0F><18><14>#<23>#<23>(<28>(<28>*<2A>'<27>D<EFBFBD>J<EFBFBD> <15><1B>-<2D>-<2D>4<>4<>T<EFBFBD>:<3A> <0A> <0B> <0B> <0A><><1E> <15><14> <15>s<00>D <00> D<03>Dc<00>X<00>tj|||d<01><02>}|j<00>|S)a<>Start a background task.
This is a utility function that applications can use to start a
background task.
:param target: the target function to execute.
:param args: arguments to pass to the function.
:param kwargs: keyword arguments to pass to the function.
This function returns an object that represents the background task,
on which the ``join()`` method can be invoked to wait for the task to
complete.
T)<04>target<65>args<67>kwargs<67>daemon)<03> threading<6E>Thread<61>start)rr@rArB<00>ths r<00>start_background_taskzClient.start_background_task<73>s+<00><00><17> <1D> <1D>V<EFBFBD>$<24>v<EFBFBD>%)<29>+<2B><02>
<EFBFBD><08><08>
<EFBFBD><11> r%c<00>,<00>tj|<01>S)z'Sleep for the requested amount of time.)<02>time<6D>sleep)r<00>secondss rrKz Client.sleep<65>s<00><00><13>z<EFBFBD>z<EFBFBD>'<27>"<22>"r%c<00>Z<00>tj|i|<02><01>}tj|_|S)zCreate a queue object.)r<00>Queue<75>Empty)rrArB<00>qs rrzClient.create_queue<75>s%<00><00> <11>K<EFBFBD>K<EFBFBD><14> (<28><16> (<28><01><17>+<2B>+<2B><01><07><10>r%c<00>,<00>tj|i|<02><01>S)zCreate an event object.)rD<00>Event)rrArBs r<00> create_eventzClient.create_event<6E>s<00><00><18><EFBFBD><EFBFBD><04>/<2F><06>/<2F>/r%c<00><><00>t<00>|jjd<02>y|j||d<03>|_|jj d|jz<00>|j d|j|j<00>z||j<00><06>}|<04>t|t<00>r)|j<00>tj|xsd<07><00>|jdks|jd k\rP|j<00> |j<00>}tjd
j#|j<00>|<05><00> t%j&|j(j+d <0B><00> <0C>}|j.d}|j0t2j4k7rtjd<0F><00>|jj dt|j6<00>z<00>|j6d|_|j6d|_t=|j6d<00>dz |_t=|j6d<00>dz |_ d|_!|xjd|j8zz c_d|_"tFjHjK|<00>|jMdd<19><1A>|j.ddD]}|jO|<08><00>d|j:vr"d|jPvr|jS|||<03>ry|jU|jV<00>|_,|jU|jZ<00>|_.y#t $rd}Y<00><02>?wxYw#t,$rtjd <0A>d<01>wxYw)z<Establish a long-polling connection to the Engine.IO server.Nz?requests package is not installed -- cannot send HTTP requests!rz!Attempting polling connection to <20>GET)r<00>timeoutz Connection refused by the server<65><72><00>,z,Unexpected status code {} in server response<73>utf-8<><01>encoded_payloadzUnexpected response from serverrz"OPEN packet not returned by serverz!Polling connection accepted with <20>sid<69>upgrades<65> pingInterval<61>@<40>@<40> pingTimeout<75>&sid=r.r Fr1rr)/<2F>requests<74>logger<65>error<6F>_get_engineio_url<72>base_url<72>info<66> _send_request<73>_get_url_timestamp<6D>request_timeoutrrr=r<00>ConnectionError<6F> status_code<64>jsonr<00>formatr <00>Payload<61>content<6E>decoder<00>packets<74> packet_typer<00>OPENr(r\r]<00>int<6E> ping_interval<61> ping_timeoutr8rrr;<00>appendr5<00>_receive_packetr<00>_connect_websocketrH<00> _write_loop<6F>write_loop_task<73>_read_loop_pollingr") rrrr<00>r<>arg<72>p<> open_packet<65>pkts r<00>_connect_pollingzClient._connect_polling<6E>s<00><00> <13> <1B> <10>K<EFBFBD>K<EFBFBD> <1D> <1D>4<> 5<> <12><1C>.<2E>.<2E>s<EFBFBD>M<EFBFBD>9<EFBFBD>M<><04> <0A> <0C> <0B> <0B><18><18><<3C>t<EFBFBD>}<7D>}<7D>L<>M<> <10> <1E> <1E> <11>4<EFBFBD>=<3D>=<3D>4<EFBFBD>#:<3A>#:<3A>#<<3C><<3C>g<EFBFBD><18>(<28>(<28> <1F> *<2A><01> <0A>9<EFBFBD>
<EFBFBD>1<EFBFBD>c<EFBFBD>*<2A> <10>K<EFBFBD>K<EFBFBD>M<EFBFBD><1C>,<2C>,<2C><11>7<>7<>9<> 9<> <0C>=<3D>=<3D>3<EFBFBD> <1E>!<21>-<2D>-<2D>3<EFBFBD>"6<> <10>K<EFBFBD>K<EFBFBD>M<EFBFBD> <1B><17>f<EFBFBD>f<EFBFBD>h<EFBFBD><03><1D>,<2C>,<2C>><3E>E<>E<><15>M<EFBFBD>M<EFBFBD>#<23>$'<27>)<29> )<29> =<3D><17><0F><0F><01> <09> <09>0@<40>0@<40><17>0I<30>J<>A<EFBFBD><18>i<EFBFBD>i<EFBFBD><01>l<EFBFBD> <0B> <16> "<22> "<22>f<EFBFBD>k<EFBFBD>k<EFBFBD> 1<><1C>,<2C>,<2C>4<>6<> 6<> <0C> <0B> <0B><18><18> /<2F>#<23>k<EFBFBD>6F<36>6F<36>2G<32> G<> I<01><1E>#<23>#<23>E<EFBFBD>*<2A><04><08>#<23>(<28>(<28><1A>4<><04> <0A> <20><1B>!1<>!1<>.<2E>!A<>B<>V<EFBFBD>K<><04><1A><1F> <0B> 0<> 0<><1D> ?<3F>@<40>6<EFBFBD>I<><04><19>!*<2A><04><1E> <0C> <0A> <0A><17>4<EFBFBD>8<EFBFBD>8<EFBFBD>+<2B>+<2B> <0A> <20><04>
<EFBFBD><13>%<25>%<25>,<2C>,<2C>T<EFBFBD>2<> <0C><1B><1B>I<EFBFBD><15><1B>7<><14>9<EFBFBD>9<EFBFBD>Q<EFBFBD>R<EFBFBD>=<3D>C<EFBFBD> <10> <20> <20><13> %<25>!<21> <17>$<24>-<2D>-<2D> '<27>K<EFBFBD>4<EFBFBD>?<3F>?<3F>,J<><13>&<26>&<26>s<EFBFBD>G<EFBFBD>]<5D>C<><16> $<24>9<>9<>$<24>:J<>:J<>K<><04><1C>"<22>8<>8<> <10> #<23> #<23>%<25><04><1B><>M#<23> <1B><1A><03> <1B><><1A> =<3D><1C>,<2C>,<2C>1<>3<>8<<3C> =<3D> =<3D>s<00>M<00>/M<00> M<03>M<03> M:c<00>"<00>t<00>|jjd<02>y|j||d<04>}|jr3|jj d|z<00>d}|d|jzz }n'd}||_|jj d|z<00>d}i}|j<00>r<>d j|jjD<00>cgc]}|j<00>d
|j<00><00><03><02>c}<08>}|j<00>D])\} }
| j<00>d k(s<01>|r|d z }||
z }|| =nd |vr<>|jj<00><>t|jjt <00>s t#d <0A><00>dj%|jjd|jjd<00>j'd<11>} t)| <0B>j+d<11>} d| z|d <t|jj,t <00>r7|jj,d|jj,dd<13>|d<n1|jj,rd|jj,i|d<|jj.<00>r#d} |j1d<16>rJ|jj.j3d|jj.j3d<18><00>} nI|jj.j3d|jj.j3d<1A><00>} | r{t4j6j9d| vr| nd| z<00>} | j:|d<| j<|d<| j>s | j@r| j>| j@fnd|d<t|jjBtD<00>r=d|vr|jjB|dd <n9d |jjBi|d<n|jjBsd|_#|jFs>d|vr%|djId!tJjLi<01>nd!tJjLi|d<|jI|jNjQd"i<00><00>||d"<||d <d|d#<|jR|d$<|jI|jN<00> tjT||jW<00>zfi|<07><01>}|<05>rtcjdtbjfd'<27>(<28>j'<00>} |ji|<0F> |jm<00>}tcjd|<0F>+<2B>}|jntbjpk7s|jrd'k7r|jj_d,<2C>ytcjdtbjt<00>j'<00>} |ji|<0F>d|_;|jj d-<2D><00>n2 |jm<00>}tcjd|<0F>+<2B>}|jntbjxk7rtajXd/<2F><00>|jj d0tE|jr<00>z<00>|jrd1|_|jrd2|_=t}|jrd3<00>d4z |_?t}|jrd5<00>d4z |_@d|_;d6|_At<>j<>j<>|<00>|j<>d7d<03>8<EFBFBD>||_F|j<>j<>|j~|j<>z<00>|j<>|j<><00>|_J|j<>|j<><00>|_Lycc}w#tXtZtj\f$r5|r|jj_d%<25>YytajXd&<26><00>wxYw#tj$r/}|jj_d)tE|<10><00>Yd}~yd}~wwxYw#tj$r/}|jj_d*tE|<10><00>Yd}~yd}~wwxYw#tj$r/}|jj_d)tE|<10><00>Yd}~yd}~wwxYw#tj$r&}tajXd.tE|<10>z<00><00>d}~wwxYw)9z?Establish or upgrade to a WebSocket connection wi
startswith<EFBFBD>get<65>urllib<69>parse<73>urlparse<73>hostname<6D>port<72>username<6D>password<72>verifyr<00>
ssl_verify<EFBFBD>update<74>ssl<73> CERT_NONE<4E>websocket_extra_options<6E>poprj<00>create_connectionrirk<00>OSError<6F>WebSocketException<6F>warningrrr*<00>PINGr,<00> Exception<6F>recvrs<00>PONGr(<00>UPGRADEr8rtr]rurvrwrrr;rxr5r9<00>
settimeoutrHr{r|<00>_read_loop_websocketr")rrrr<00> websocket_url<72>upgrader<65><00> extra_optionsr<73>r<>r<><00>
basic_auth<EFBFBD> proxy_url<72>
parsed_urlr9r<><00>er<65>r<>s rrzzClient._connect_websocket<65>s<><00><00> <14> <1C> <10>K<EFBFBD>K<EFBFBD> <1D> <1D>?<3F> @<01><18><1C>.<2E>.<2E>s<EFBFBD>M<EFBFBD>;<3B>O<> <0A> <0F>8<EFBFBD>8<EFBFBD> <10>K<EFBFBD>K<EFBFBD> <1C> <1C>2<>]<5D>B<> D<01><1A>G<EFBFBD> <19>W<EFBFBD>t<EFBFBD>x<EFBFBD>x<EFBFBD>/<2F> /<2F>M<EFBFBD><1B>G<EFBFBD>)<29>D<EFBFBD>M<EFBFBD> <10>K<EFBFBD>K<EFBFBD> <1C> <1C>5<> <0A>E<> G<01>
<17><07><1A> <0A> <0F>9<EFBFBD>9<EFBFBD><1A>i<EFBFBD>i<EFBFBD>/3<>y<EFBFBD>y<EFBFBD>/@<40>/@<40>!B<01>/@<40>V<EFBFBD>%+<2B>K<EFBFBD>K<EFBFBD>=<3D><01>&<26>,<2C>,<2C><1E>!@<40>/@<40>!B<01>C<01>G<EFBFBD>!(<28><1D><1D><1F> <0A><06><05><19><<3C><<3C>><3E>X<EFBFBD>-<2D><1E><1F>4<EFBFBD><0F><07><1B>u<EFBFBD>$<24>G<EFBFBD><1F><06><0F><19> "1<><1F>g<EFBFBD>-<2D>$<24>)<29>)<29>.<2E>.<2E>2L<32>!<21>$<24>)<29>)<29>.<2E>.<2E>%<25>8<>$<24>%M<>N<>N<>$<24>^<5E>^<5E><18>I<EFBFBD>I<EFBFBD>N<EFBFBD>N<EFBFBD>1<EFBFBD>%<25>t<EFBFBD>y<EFBFBD>y<EFBFBD>~<7E>~<7E>a<EFBFBD>'8<>:<3A>:@<40>&<26><17>/<2F><1B>&<26>z<EFBFBD>2<>9<>9<>'<27>B<>
<EFBFBD>+3<>j<EFBFBD>+@<40><07><0F>(<28><1A>$<24>)<29>)<29>.<2E>.<2E>%<25>0<> $<24> <09> <09><0E><0E>q<EFBFBD> 1<>#<23>y<EFBFBD>y<EFBFBD>~<7E>~<7E>a<EFBFBD>0<>+2<> <0A>h<EFBFBD>'<27><16><19><19><1E><1E>+5<>t<EFBFBD>y<EFBFBD>y<EFBFBD>~<7E>~<7E>*F<> <0A>h<EFBFBD>'<27><14>y<EFBFBD>y<EFBFBD> <20> <20> <20> <09> <20>+<2B>+<2B>G<EFBFBD>4<> $<24> <09> <09> 1<> 1<> 5<> 5<><1C>d<EFBFBD>i<EFBFBD>i<EFBFBD>/<2F>/<2F>3<>3<>F<EFBFBD>;<3B>!=<3D>I<EFBFBD>!%<25> <09> <09> 1<> 1<> 5<> 5<><1D>t<EFBFBD>y<EFBFBD>y<EFBFBD>0<>0<>4<>4<>W<EFBFBD>=<3D>!?<3F>I<EFBFBD><1C>!'<27><1C><1C>!6<>!6<>%*<2A>i<EFBFBD>%7<> <09>(<28>9<EFBFBD>4<>"6<>J<EFBFBD>8B<01>7J<37>7J<37>M<EFBFBD>"3<>4<>7A<37><EFBFBD><EFBFBD>M<EFBFBD>"3<>4<>&<26>.<2E>.<2E>*<2A>2E<32>2E<32>$<24>,<2C>,<2C>j<EFBFBD>.A<>.A<>B<>!<21>"<22>"3<>4<> <1A>$<24>)<29>)<29>*<2A>*<2A>C<EFBFBD>0<><1B>}<7D>,<2C>:><3E>)<29>)<29>:J<>:J<>M<EFBFBD>(<28>+<2B>J<EFBFBD>7<>/9<>4<EFBFBD>9<EFBFBD>9<EFBFBD>;K<>;K<>.L<>M<EFBFBD>(<28>+<2B><19>Y<EFBFBD>Y<EFBFBD>%<25>%<25>"'<27><04><0F><13><EFBFBD><EFBFBD><17>=<3D>(<28><1D>h<EFBFBD>'<27>.<2E>.<2E> <0B>S<EFBFBD>]<5D>]<5D>/K<>L<>+6<><03> <0A> <0A>*F<> <0A>h<EFBFBD>'<27> <10><0E><0E>t<EFBFBD>3<>3<>7<>7<><08>"<22>E<>F<>")<29> <0A>h<EFBFBD><1F>")<29> <0A>h<EFBFBD><1F>.2<EFBFBD> <0A>*<2A>+<2B>#'<27>#7<>#7<> <0A>i<EFBFBD> <20><15><1C><1C>T<EFBFBD>9<>9<>:<3A> E<01><1A>,<2C>,<2C><1D><04> 7<> 7<> 9<>9<>L<01>=J<>L<01>B<EFBFBD> <13><16> <0A> <0A>f<EFBFBD>k<EFBFBD>k<EFBFBD><07>8<>?<3F>?<3F>A<>A<EFBFBD> <1D><12><07><07><01>
<EFBFBD>  <1D><16>G<EFBFBD>G<EFBFBD>I<EFBFBD><01> <19>-<2D>-<2D>q<EFBFBD>1<>C<EFBFBD><12><EFBFBD><EFBFBD>&<26>+<2B>+<2B>-<2D><13><18><18>W<EFBFBD>1D<31><14> <0B> <0B>#<23>#<23>><3E>@<01><1C><16> <0A> <0A>f<EFBFBD>n<EFBFBD>n<EFBFBD>-<2D>4<>4<>6<>A<EFBFBD> <1D><12><07><07><01>
<EFBFBD> &1<>D<EFBFBD> "<22> <10>K<EFBFBD>K<EFBFBD> <1C> <1C>?<3F> @<40> <<3C><16>G<EFBFBD>G<EFBFBD>I<EFBFBD><01>!<21>-<2D>-<2D>q<EFBFBD>9<>K<EFBFBD><1A>&<26>&<26>&<26>+<2B>+<2B>5<> <20>0<>0<>1A<31>B<>B<> <10>K<EFBFBD>K<EFBFBD> <1C> <1C>5<><03>K<EFBFBD><L<><L<>8M<38>M<> O<01>"<22>'<27>'<27><05>.<2E>D<EFBFBD>H<EFBFBD>'<27>,<2C>,<2C>Z<EFBFBD>8<>D<EFBFBD>M<EFBFBD>!$<24>[<5B>%5<>%5<>n<EFBFBD>%E<>!F<><16>!O<>D<EFBFBD> <1E> #<23>K<EFBFBD>$4<>$4<>]<5D>$C<> D<>v<EFBFBD> M<>D<EFBFBD> <1D>%0<>D<EFBFBD> "<22>$<24>D<EFBFBD>J<EFBFBD> <17> )<29> )<29> 0<> 0<><14> 6<> <10> <1F> <1F> <09>U<EFBFBD> <1F> ;<3B><14><04><07> <0C><07><07><1A><1A>4<EFBFBD>-<2D>-<2D><04>0A<30>0A<30>A<>B<> $<24>9<>9<>$<24>:J<>:J<>K<><04><1C>"<22>8<>8<> <10> %<25> %<25>'<27><04><1B><13><>W!B<01><>T <20><17>)<29>*F<>*F<>G<> E<01><16><14> <0B> <0B>#<23>#<23>@<40>B<01><1C> <20>0<>0<>1C<31>D<>D<>  E<01><><1D> <1D><14> <0B> <0B>#<23>#<23>M<><17><01>F<EFBFBD><1C><1D><>  <1D><><1D> <1D><14> <0B> <0B>#<23>#<23>M<><17><01>F<EFBFBD><1C><1D><>  <1D><><1D> <1D><14> <0B> <0B>#<23>#<23>M<><17><01>F<EFBFBD><1C><1D><>  <1D><><1D> <<3C> <20>0<>0<>1<>C<EFBFBD><01>F<EFBFBD>:<3A><<3C><<3C><> <<3C>sx<00>"_<08>"'_<00>`.<00>a)<00>2b$<00>(c<00>;`+<03>`+<03>. a&<03>7%a!<03>!a&<03>) b!<03>2%b<03>b!<03>$ c<03>-%c<03>c<03> d<03>(!d <03> dc<00>T<00>|jttj<00>krtj|jnd}|jj d|t |jt<00>s |jnd<03>|jtjk(r|jd|jd<05><06>y |jtjk(r>|jtjtj|j<00><00>y |jtjk(r(|j!d|j"j$<00><07>y |jtj&k(ry |jj)d|j<00>y )
z(Handle incoming packets from the server.<2E>UNKNOWNzReceived packet %s data %s<><binary><3E>messageTr1)r>r6z%Received unexpected packet of type %sN)rs<00>lenr<00> packet_namesrcrgrr(<00>bytesr+r5r<>r)r*r<>r3r0r6<00>SERVER_DISCONNECT<43>NOOPrd)rr<><00> packet_names rryzClient._receive_packet<65>s<00><00><13><EFBFBD><EFBFBD><13>V<EFBFBD>%8<>%8<>!9<>9<><1D>)<29>)<29>#<23>/<2F>/<2F>:<3A>?H<> <14> <0C> <0B> <0B><18><18> (<28>+<2B>&<26>s<EFBFBD>x<EFBFBD>x<EFBFBD><15>7<>C<EFBFBD>H<EFBFBD>H<EFBFBD>Z<EFBFBD> I<01> <0F>?<3F>?<3F>f<EFBFBD>n<EFBFBD>n<EFBFBD> ,<2C> <10> <1F> <1F> <09>3<EFBFBD>8<EFBFBD>8<EFBFBD>t<EFBFBD> <1F> D<> <10>_<EFBFBD>_<EFBFBD><06> <0B> <0B> +<2B> <10> <1D> <1D>f<EFBFBD>m<EFBFBD>m<EFBFBD>F<EFBFBD>K<EFBFBD>K<EFBFBD><13><18><18>B<> C<> <10>_<EFBFBD>_<EFBFBD><06> <0C> <0C> ,<2C> <10>O<EFBFBD>O<EFBFBD>$<24>t<EFBFBD>{<7B>{<7B>/L<>/L<>O<EFBFBD> M<> <10>_<EFBFBD>_<EFBFBD><06> <0B> <0B> +<2B> <10> <10>K<EFBFBD>K<EFBFBD> <1D> <1D>E<>!<21>o<EFBFBD>o<EFBFBD> /r%c<00> <00>|jdk7ry|jj|<01>|jj dt
j |jt|jt<00>s|j<00>yd<04>y)z(Queue a packet to be sent to the server.r.NzSending packet %s data %sr<73>) rrr4rcrgrr<>rsrr(r<>)rr<>s rr)zClient._send_packet<65>si<00><00> <0F>:<3A>:<3A><1B> $<24> <12> <0C>
<EFBFBD>
<EFBFBD><0E><0E>s<EFBFBD><1B> <0C> <0B> <0B><18><18> '<27> <12> <1F> <1F><03><0F><0F> 0<>&<26>s<EFBFBD>x<EFBFBD>x<EFBFBD><15>7<>C<EFBFBD>H<EFBFBD>H<EFBFBD> I<01>>H<01> Ir%c<00>n<00>|j<00>tj<00>|_|jsd|j_ |jj |||||<05><02>S#tj j$r3}|jjd|||<06>t|<06>cYd}~Sd}~wwxYw)NF)rr(rVz+HTTP %s request to %s failed with error %s.) r<>rb<00>Sessionr<6E>r<><00>requestr<00>RequestExceptionrcrgr)r<00>methodrr<00>bodyrV<00>excs rrhzClient._send_request<73>s<><00><00> <10>9<EFBFBD>9<EFBFBD> <1C> <20>(<28>(<28>*<2A>D<EFBFBD>I<EFBFBD><13><EFBFBD><EFBFBD>$<24>D<EFBFBD>I<EFBFBD>I<EFBFBD> <1C> <1C><17>9<EFBFBD>9<EFBFBD>$<24>$<24>V<EFBFBD>S<EFBFBD>'<27><04>-4<>%<25>6<> 6<><36><17>"<22>"<22>3<>3<> <1C> <10>K<EFBFBD>K<EFBFBD> <1C> <1C>J<>#<23>S<EFBFBD>#<23> /<2F><16>s<EFBFBD>8<EFBFBD>O<EFBFBD><4F> <1C>s<00>A$<00>$B4<03>(B/<03>)B4<03>/B4c<00>h<00>|jdd<02>}||jvr6|r |j|j|g|<02><01><06>S |j||<02>Sy#t$r+|dk(r$t |<02>dk(r|j|<00>cYS<00>wxYw#|j
j |dz<00>YyxYw)zInvoke an event handler.r2Fr0rz handler errorN)r<><00>handlersrH<00> TypeErrorr<72>rc<00> exception)r<00>eventrArBr2s rr5zClient._trigger_event<6E>s<><00><00><1A>J<EFBFBD>J<EFBFBD>{<7B>E<EFBFBD>2<> <09> <10>D<EFBFBD>M<EFBFBD>M<EFBFBD> !<21><18>1<>t<EFBFBD>1<>1<>$<24>-<2D>-<2D><05>2F<32>N<><14>N<>N<> D<01> "<22>3<>t<EFBFBD>}<7D>}<7D>U<EFBFBD>3<>T<EFBFBD>:<3A>:<3A> "<22><>%<25>"<22> <20>L<EFBFBD>0<> #<23>D<EFBFBD> <09>Q<EFBFBD><0E>$8<>4<EFBFBD>=<3D>=<3D><15>#7<>#9<>9<>!<21>"<22><>D<01><18>K<EFBFBD>K<EFBFBD>)<29>)<29>%<25>2B<32>*B<>C<>s$<00>A<00>0B <03>B<00>
B <03> B<00> B1c<00><><00>|jdk(<00>r<>|j<00>r<>|jjd|jz<00>|j d|j|j <00>zt|j|j<00>dz<00><05>}|<01>t|t<00>r;|jj|xsd<07>|jjd<06>n<>|jdks|jd k\rB|jjd
|j<00>|jjd<06>no t!j"|j$j'd <0B><00> <0C>}|j*D]}|j-|<03><00>|jdk(r|jr<02><01><>|jr5|jjd<0E>|jj/<00>|jdk(rX|j1d|j2j4d<10><11> t6j8j;|<00>|j=<00>|jjd<12>y#t($r:|jjd <0A>|jjd<06>Y<00><01>wxYw#t($rY<00>}wxYw)z-Read packets by polling the Engine.IO server.r.zSending polling GET request to rU<00><00>rVN<>*Connection refused by the server, abortingrWrX<00>6Unexpected status code %s in server response, abortingrYrZz'Unexpected packet from server, aborting<6E>"Waiting for write loop task to endr0Fr1<00>Exiting read loop task)rr|rcrgrfrhri<00>maxrvrwrrr<>rr4rlr rorprqrrrryr#r5r6<00>TRANSPORT_ERRORrr;r<r=)rr~r<>r<>s rr}zClient._read_loop_polling<6E>s><00><00><12>j<EFBFBD>j<EFBFBD>K<EFBFBD>'<27>D<EFBFBD>,@<40>,@<40> <10>K<EFBFBD>K<EFBFBD> <1C> <1C>1<>D<EFBFBD>M<EFBFBD>M<EFBFBD>A<> C<01><14>"<22>"<22><15>t<EFBFBD>}<7D>}<7D>t<EFBFBD>'><3E>'><3E>'@<40>@<40><1B>D<EFBFBD>.<2E>.<2E><04>0A<30>0A<30>B<>Q<EFBFBD>F<>#<23>H<01>A<EFBFBD><11>y<EFBFBD>J<EFBFBD>q<EFBFBD>#<23>.<2E><14> <0B> <0B>#<23>#<23><15>E<>E<>G<01><14>
<EFBFBD>
<EFBFBD><0E><0E>t<EFBFBD>$<24><15><10>}<7D>}<7D>s<EFBFBD>"<22>a<EFBFBD>m<EFBFBD>m<EFBFBD>s<EFBFBD>&:<3A><14> <0B> <0B>#<23>#<23>%9<>:;<3B>-<2D>-<2D>I<01><14>
<EFBFBD>
<EFBFBD><0E><0E>t<EFBFBD>$<24><15> <16><1B>O<EFBFBD>O<EFBFBD>A<EFBFBD>I<EFBFBD>I<EFBFBD>4D<34>4D<34>W<EFBFBD>4M<34>N<><01> <19>y<EFBFBD>y<EFBFBD><03><14>$<24>$<24>S<EFBFBD>)<29>!<21>/<13>j<EFBFBD>j<EFBFBD>K<EFBFBD>'<27>D<EFBFBD>,@<40>,@<40>4 <10> <1F> <1F> <10>K<EFBFBD>K<EFBFBD> <1C> <1C>A<> B<> <10> <20> <20> %<25> %<25> '<27> <0F>:<3A>:<3A><1B> $<24> <10> <1F> <1F> <0C>d<EFBFBD>k<EFBFBD>k<EFBFBD>.I<>.I<>*/<2F> <20> 1<> <15><1B>-<2D>-<2D>4<>4<>T<EFBFBD>:<3A> <11>K<EFBFBD>K<EFBFBD>M<EFBFBD> <0C> <0B> <0B><18><18>1<>2<><32>'<1E> <16><14> <0B> <0B>#<23>#<23>=<3D>?<3F><14>
<EFBFBD>
<EFBFBD><0E><0E>t<EFBFBD>$<24><15>  <16><> <1E> <15><14> <15>s$<00>/I6<00>+J<<00>6?J9<03>8J9<03>< K<03>Kc<00><><00>|jdk(r<>d} |jj<00>}t|<01>dk(r*|jjst j <00><00> t%j&|<01> <09>}|j)|<03>|jdk(r<01><>|j*r5|jj!d <0B>|j*j-<00>|jdk(rX|j/d |j0j2d <0A><0E> t4j6j9|<00>|j=<00>|jj!d<0F>y#t
j$r:|jjd<04>|jjd<02>Y<00><01>t
j $r:|jjd<05>|jjd<02>Y<00><01>[t$r<>}t|<02>tur+|jdk(r|jj!d<07>n%|jj!dt#|<02><00>|jjd<02>Yd}~<02><01><>d}~wwxYw#t$rK}|jj!d
t#|<02><00>|jjd<02>Yd}~<02><02><d}~wwxYw#t:$rY<00><01><>wxYw)z5Read packets from the Engine.IO WebSocket connection.r.Nrz*Server has stopped communicating, aborting<6E>)WebSocket connection was closed, aborting<6E> z)WebSocket connection is closing, abortingz1Unexpected error receiving packet: "%s", abortingr<67>z0Unexpected error decoding packet: "%s", abortingr<67>r0Fr1r<>)rr9r<>r<>r.r<00>"WebSocketConnectionClosedException<6F>WebSocketTimeoutExceptionrcr<>rr4r<><00>typer<65><00>errnorgrrr*ryr|r#r5r6r<>rr;r<rr=)rr<>r<>r<>s rr<>zClient._read_loop_websocket<65>sJ<00><00><12>j<EFBFBD>j<EFBFBD>K<EFBFBD>'<27><14>A<EFBFBD> <16><18>G<EFBFBD>G<EFBFBD>L<EFBFBD>L<EFBFBD>N<EFBFBD><01><16>q<EFBFBD>6<EFBFBD>Q<EFBFBD>;<3B>t<EFBFBD>w<EFBFBD>w<EFBFBD>'8<>'8<>#<23>F<>F<>H<>H<>* <16><1C>m<EFBFBD>m<EFBFBD>1<EFBFBD>5<><03> <11> <20> <20><13> %<25>E<13>j<EFBFBD>j<EFBFBD>K<EFBFBD>'<27>H <10> <1F> <1F> <10>K<EFBFBD>K<EFBFBD> <1C> <1C>A<> B<> <10> <20> <20> %<25> %<25> '<27> <0F>:<3A>:<3A><1B> $<24> <10> <1F> <1F> <0C>d<EFBFBD>k<EFBFBD>k<EFBFBD>.I<>.I<>*/<2F> <20> 1<> <15><1B>-<2D>-<2D>4<>4<>T<EFBFBD>:<3A> <11>K<EFBFBD>K<EFBFBD>M<EFBFBD> <0C> <0B> <0B><18><18>1<>2<><32>Q<1D>6<>6<> <16><14> <0B> <0B>#<23>#<23>@<40>B<01><14>
<EFBFBD>
<EFBFBD><0E><0E>t<EFBFBD>$<24><15><1C>?<3F>?<3F> <16><14> <0B> <0B>#<23>#<23>?<3F>A<01><14>
<EFBFBD>
<EFBFBD><0E><0E>t<EFBFBD>$<24><15><1C> <16><17><01>7<EFBFBD>g<EFBFBD>%<25>!<21>'<27>'<27>Q<EFBFBD>,<2C><18>K<EFBFBD>K<EFBFBD>$<24>$<24>C<>E<01><19>K<EFBFBD>K<EFBFBD>$<24>$<24>K<><1B>A<EFBFBD><06> <20><15>
<EFBFBD>
<EFBFBD><0E><0E>t<EFBFBD>$<24><15><> <16><><1D> <16><14> <0B> <0B> <20> <20>F<><03>A<EFBFBD><06>P<01><14>
<EFBFBD>
<EFBFBD><0E><0E>t<EFBFBD>$<24><15><>  <16><><1E> <15><14> <15>sR<00>AE!<00>&J
<00>K!<00>!A J<03>-AJ<03>8J<03>A<J<03>J<03>
K<03>AK<03>K<03>! K.<03>-K.c<00><00>|jdk(<00>rBt|j|j<00>dz}d} |jj |<01><04>g}|dgk(r|jj<00>g}nS |j|jj d<06><07><00>|d<00> |dd}|jj<00>n<01>R|s<02>n<>|jd k(r<>tj|<02>
<EFBFBD>}|jd |j|j!<00>d d i|j"<00><0E>}|D]}|jj<00><00>|<04>t%|t&<00>r |jj)|xsd<0F>n<>|j*dks|j*dk\r<>|jj)d|j*<00>d|_n<> |D]o}|j!<00>}|j.r|j0j3|<06>n|j0j5|<06>|jj<00><00>q |jdk(r<02><02>B|jj?d<14>y#|jj $r|jjd<05>Y<00>RwxYw#|jj $rY<00><01><>wxYw#t6j8t:t<f$r|jj)d<13>Y<00><>wxYw)zhThis background task sends packages to the server as they are
pushed to the send queue.
r.r<>Nr<4E>zpacket queue is empty, abortingF)<01>block<63><6B><EFBFBD><EFBFBD><EFBFBD>r)rr<00>POSTz Content-Typez
text/plain)r<>rrVr<>rWrXr<>r<>zExiting write loop task) rr<>rvrwrr<>rOrcrd<00> task_donerxr8r rorhrfr<>rjrrr<>rlr|<00>binaryr9<00> send_binaryr,rr<><00>BrokenPipeErrorr<72>rg)rrVrrr<>r~r<>r<>s rr{zClient._write_loop-s<><00><00><13>j<EFBFBD>j<EFBFBD>K<EFBFBD>'<27><1A>$<24>,<2C>,<2C>d<EFBFBD>.?<3F>.?<3F>@<40>1<EFBFBD>D<>G<EFBFBD><1A>G<EFBFBD> <16><1F>:<3A>:<3A>><3E>><3E>'<27>><3E>:<3A>;<3B><07><17>4<EFBFBD>&<26> <20><14>
<EFBFBD>
<EFBFBD>$<24>$<24>&<26><1C><07><1A><1E><1F><0E><0E>t<EFBFBD>z<EFBFBD>z<EFBFBD>~<7E>~<7E>E<EFBFBD>~<7E>'B<>C<><1F>r<EFBFBD>{<7B>*<2A>")<29>#<23>2<EFBFBD>,<2C><07><1C>
<EFBFBD>
<EFBFBD>,<2C>,<2C>.<2E><1D><1B><1B><15><13>%<25>%<25><19>2<><1B>O<EFBFBD>O<EFBFBD>G<EFBFBD>4<><01><18>&<26>&<26><1A>D<EFBFBD>M<EFBFBD>M<EFBFBD><01><08><08>
<EFBFBD>+<2B>\<5C>:<3A> <20>0<>0<>'<27>2<><01>#<23>C<EFBFBD><18>J<EFBFBD>J<EFBFBD>(<28>(<28>*<2A>#<23><14>9<EFBFBD>
<EFBFBD>1<EFBFBD>c<EFBFBD> 2<><18>K<EFBFBD>K<EFBFBD>'<27>'<27><19>I<>I<>K<01><19><14>=<3D>=<3D>3<EFBFBD>&<26>!<21>-<2D>-<2D>3<EFBFBD>*><3E><18>K<EFBFBD>K<EFBFBD>'<27>'<27>)=<3D>>?<3F>m<EFBFBD>m<EFBFBD>M<01>+/<2F>D<EFBFBD>(<28><19> <1A>&<26><03>),<2C><1A><1A><1C><0E><1E>:<3A>:<3A> <20>G<EFBFBD>G<EFBFBD>/<2F>/<2F><0E>?<3F> <20>G<EFBFBD>G<EFBFBD>L<EFBFBD>L<EFBFBD><1E>8<><1C>
<EFBFBD>
<EFBFBD>,<2C>,<2C>.<2E> '<27>_<13>j<EFBFBD>j<EFBFBD>K<EFBFBD>'<27>v <0A> <0B> <0B><18><18>2<>3<><33>g<18>:<3A>:<3A>#<23>#<23> <16><14> <0B> <0B>!<21>!<21>"C<>D<><15> <16><> <20>:<3A>:<3A>+<2B>+<2B><1E><1D><1E><>H"<22>D<>D<>'<27><17>2<><1A><18>K<EFBFBD>K<EFBFBD>'<27>'<27>C<>E<01><19> <1A>s6<00>I/<00>9+J)<00> A4K <00>/4J&<03>%J&<03>)K<03>K<03> 9L<03>L)NNz engine.io)FN)r)NNN)<15>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__doc__r r$r,r0rHrKrrSr<>rzryr)rhr5r}r<>r{<00>r%rr r sv<00><00>"<08>F59<35>)<29>"/<2F>H'<27>D<01><16>0<12>&#<23><11> 0<>;%<25>zd<14>L/<2F>&I<01>37<33><18> <1C>D<01>*'3<>R13<>f?4r%r )<16>base64r<00> engineio.jsonr<00>loggingrr<>rDrJr<>rb<00> ImportErrorr<00>rrrr <00> getLogger<65>default_logger<65>
BaseClientr r<>r%r<00><module>rs<><00><01><1C>)<29><0E> <0C>
<EFBFBD><10> <0B> <0A><14><13><15><14><1A><18><14><15>"<22><17>"<22>"<22>#4<>5<><0E>R 4<>[<5B> #<23> #<23>R 4<><34><13><14><13>H<EFBFBD><14><><13><15><14>I<EFBFBD><15>s"<00>A/<00>A<<00>/A9<03>8A9<03><B<03>B