§
    öÛgç<  ã                   ó>  — d Z ddlZddlZddlmZ ddlmZ ddlmZ	 dZ
 ej        d¦  «        Z ej        d	¦  «        Z ej        d
¦  «        Z ej        d¦  «        Z ej        d¦  «        Z ej        d¦  «        Z ej        d¦  «        Z G d„ de¦  «        ZdS )z(
Protocol version 3.0 client and tools.
é    Né   )Úpq_message_stream)Úelement3)Úxact3)Ú
Connection)©ó   SÚFATAL©ó   CÚ08P01)ó   Mz2wire-data caused exception in protocol transaction)ó   HzProtocol error detected.)r   )r   z--TOE)r   zconnect timed out)r   r   )r   z&server did not support SSL negotiation)r   z&The server is probably not PostgreSQL.)r   ©r   z--SEC)r   z6SSL was required, and the server could not accommodate)r   r   )r   z SSL negotiation caused exception)r   )r   z--XXX)r   zfailed to complete negotiation)r   zONegotiation failed to completed, but no error was attributed on the connection.)r   ©r   Ú08006)r   zunexpected EOF from server)ó   Dz.Zero-length read from the connection's socket.c                   óè   — e Zd ZdZdZd„ Z edi  e¦   «         ¤ŽZd„ Zdd„Zdd„Z	de
dffd„Zej        fd	„Zd
„ ZeZd„ Zej        fd„ZeZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z dd„Z!dS )r   zÅ
	A PQv3 connection.

	Operations are designed to not raise exceptions. The user of the
	connection must check for failures. This is done to encourage users
	to use their own Exception hierarchy.
	Nc                  ó4   — d„ } d„ }d„ }d}t          ¦   «         S )Nc                 ó   — | j         S ©N)Ú_tracer©Úselfs    úQ/granary/edev/quantum/lib/python3.11/site-packages/postgresql/protocol/client3.pyÚfgetzConnection.tracer.<locals>.fgetN   s
   € Ø
Œ,Ðó    c                 óD   — || _         | j        | _        | j        | _        d S r   )r   Útraced_write_messagesÚwrite_messagesÚtraced_read_messagesÚread_messages)r   Úvalues     r   ÚfsetzConnection.tracer.<locals>.fsetP   s%   € Ø€4„<ØÔ3€4ÔØÔ1€4ÔÐÐr   c                 ó:   — | ` | j        | _        | j        | _        d S r   )r   Ústandard_write_messagesr    Ústandard_read_messagesr"   r   s    r   ÚfdelzConnection.tracer.<locals>.fdelT   s#   € Ø€|ØÔ5€4ÔØÔ3€4ÔÐÐr   zMCallable object to pass protocol trace strings to. (Normally a write method.))Úlocals)r   r$   r(   Údocs       r   ÚtracerzConnection.tracerM   s?   € ðð ð ð2ð 2ð 2ð4ð 4ð 4ð	 €#å	‰Œ€/r   c                 ó°   — | j         �|                      ¦   «          t          j        t          j        f¦  «        }|| _         |                      ¦   «          dS )zµ
		Explicitly send a Synchronize message to the backend.
		Useful for forcing the completion of lazily processed transactions.

		NOTE: This will not cause trash to be taken out.
		N)ÚxactÚcompleteÚInstructionÚelementÚSynchronizeMessage©r   Úxs     r   ÚsynchronizezConnection.synchronize]   sG   € ð 
„YÐØ‡=‚=�?„?€?Ý
Ô�Ô2Ð4Ñ5Ô5€!Ø€$„)Ø‡-‚-�/„/€/€/€/r   c                 ó  — t          j        | j        | j        ¦  «                             ¦   «         }|                      |¬¦  «        }	 |                     |¦  «         |                     ¦   «          d S # |                     ¦   «          w xY w)N©Útimeout)r0   ÚCancelRequestÚ
backend_idÚkeyÚbytesÚsocket_factoryÚsendallÚclose)r   r7   ÚcqÚss       r   Ú	interruptzConnection.interruptj   sq   € ÝÔ˜Tœ_¨d¬hÑ7Ô7×=Ò=Ñ?Ô?€"Ø
×Ò GÐÑ,Ô,€!ðØ‡9‚9ˆR�=„=€=à‡7‚7�9„9€9€9€9ø€1‡7‚7�9„9€9€9øøøs   Á	A4 Á4B
c                 óZ  — t          | d¦  «        rdS d| _        	 |                      |¬¦  «        | _        nÂ# | j        j        | j        j        f$ r¤}t
          j        | j        _        d| j        _        || j        _	        | j         
                    |¦  «        rt          | j        _        n?| j                             |¦  «        }t          j        ddd|pdff¦  «        | j        _        Y d}~dS d}~ww xY w|��|                      ¦   «         x| _        }|€5d| j        _        t$          | j        _        t
          j        | j        _        dS |s9|du r5d| j        _        t&          | j        _        t
          j        | j        _        dS |r}	 | j                             | j        ¦  «        | _        nW# t*          $ rJ}|| j        _	        d| j        _        t
          j        | j        _        t,          | j        _        Y d}~dS d}~ww xY w| j        }|                      ¦   «          |j        t
          j        u r+|j        €$|j        j        | _        |j        j        | _        dS t          | j        d	¦  «        s5d| j        _        t
          j        | j        _        t8          | j        _        dS dS )
a­  
		Establish the connection to the server.

		If `ssl` is None, the socket will not be secured.
		If `ssl` is True, the socket will be secured, but it will
		close the connection and return if SSL is not available.
		If `ssl` is False, the socket will attempt to be secured, but
		will continue even in the event of a server that does not
		support SSL.

		`timeout` will be passed directly to the configured `socket_factory`.
		ÚsocketNr6   Tr   )r   Ú08004r   zcould not connectÚerror_message)ÚhasattrrC   r<   Útimeout_exceptionÚfatal_exceptionr-   ÚCompleteÚstateÚfatalÚ	exceptionÚ	timed_outÚclient_connect_timeoutrE   Úfatal_exception_messager0   ÚClientErrorÚnegotiate_sslÚssl_negotiationÚnot_pq_errorÚno_ssl_errorÚsecureÚ	ExceptionÚssl_failed_errorr.   Úkillinfor:   Úpidr9   Úpartial_connection_error)r   Ússlr7   ÚerrÚerrmsgÚ	supportedÚnegxacts          r   ÚconnectzConnection.connectr   s¢  € õ ˆT�8ÑÔð 
ð 
€6ð €$„+ð
Ø×$Ò$¨wÐ$Ñ7Ô7€4„;€;øàÔÔ(ØÔÔ&ð
ð 
ð 
ð 
õ ”]€4„9„?Ø€4„9„?Ø€4„9ÔØ
Ô×#Ò# CÑ(Ô(ð Ý4€D„IÔÐàÔ ×8Ò8¸Ñ=Ô=€Fõ &Ô1ØàØ
ˆFÐ)Ð)Ð*ð	3ñ ô €D„IÔð 
€6€6€6€6€6øøøøð)
øøøð, 	�_ð '+×&8Ò&8Ñ&:Ô&:Ð:€4Ô˜)ð Ðà€D„I„OÝ*€D„IÔÝ”m€D„I„OØ
€Fð ð ˜˜t˜˜à€D„I„OÝ*€D„IÔÝ”m€D„I„OØ
€Fàð 
ðØÔ&×-Ò-¨d¬kÑ:Ô:€T„[€[øÝð ð ð à€T„YÔØ€T„Y„_Ý”}€T„Y„_Ý/€T„YÔØ€V€V€V€V€Vøøøøðøøøð ŒI€'Ø‡-‚-�/„/€/Ø„]•d”mÐ#Ð#¨¬Ð(=ØÔÔ"€4„8ØÔ%Ô)€4„?€?€?Ý�4”9˜oÑ.Ô.ð 6ð €4„9„?Ý”]€4„9„?Ý5€4„9ÔÐÐð6ð 6s.   ›7 ·C6ÁBC1Ã1C6Æ$F1 Æ1
HÆ;?H È HÚreturnc                 óâ   — t           j                             ¦   «         }|r$|| j                             |¦  «        d…         }|°$| j                             d¦  «        }|dk    rdS |dk    rdS dS )z´
		Negotiate SSL

		If SSL is available--received b'S'--return True.
		If SSL is unavailable--received b'N'--return False.
		Otherwise, return None. Indicates non-PQv3 endpoint.
		Nr   r	   Tó   NF)r0   ÚNegotiateSSLMessager;   rC   ÚsendÚrecv)r   ÚrÚstatuss      r   rQ   zConnection.negotiate_sslÍ   s€   € õ Ô!×'Ò'Ñ)Ô)€!Ø	ð ØˆŒ×	Ò	˜!Ñ	Ô	Ð	Ð	Ô€1ð 	
ð àŒ;×Ò˜AÑÔ€&Øˆt‚^€^Ø
ˆ$Ø�‚~€~Ø
ˆ%à	ˆr   c                 óF  — | j         j        }| j         j        }| j        j        }| j        }| j        } |¦   «         sä| j        � || j        ¦  «         d| _        Œ)	  ||¦  «        | _        nm# | j        j	        $ r[}| j         
                    |¦  «        }|�9||_        d|_        ||_        t          j        ddd|ff¦  «        |_        Y d}~dS ‚ d}~ww xY w| j        dk    r||_        d|_        t"          |_        dS  || j        ¦  «        | _         |¦   «         ¯ädS )zC
		read data from the wire and write it into the message buffer.
		NTr   r   r   Fr   )Úmessage_bufferÚhas_messageÚwriterC   rf   Úrecvsizer-   Ú	read_datar<   rH   rO   rJ   rK   rL   r0   rP   rE   Ú	eof_error)	r   rI   ÚBUFFER_HAS_MSGÚBUFFER_WRITE_MSGÚ	RECV_DATAÚ
RECV_BYTESÚXACTÚeÚmsgs	            r   Ú	read_intozConnection.read_intoà   sm  € ð Ô&Ô2€.ØÔ(Ô.ÐØŒkÔ€)ØŒ}€*Ø	Œ€$ØˆNÑÔð #5Ø
„nÐ ØÐ�T”^Ñ$Ô$Ð$Ø€D„Nð ðØ�Y˜zÑ*Ô*€D„N€NøØ
Ô
Ô
-ð ð ð Ø
Ô
×
5Ò
5°aÑ
8Ô
8€CØ
€Ø€T„ZØ€T„ZØ€T„^Ý!Ô-ØØØˆS€kð/ñ ô €TÔð
 ˆEˆEˆEˆEˆEð øøøøðøøøð& „n˜ÒÐØ€D„JØ€D„JÝ"€DÔØˆ5ð %Ð$ T¤^Ñ4Ô4€4„>ðG ˆNÑÔð #5ðH 
ˆs   ÁA. Á.CÁ=ACÃCÃCc                 ó|   — d}| j         s2|                      ¦   «         }| j                              ¦   «         | _         |S )z9read more messages into self.read when self.read is emptyT)Úreadrw   rj   )r   rg   s     r   r'   z!Connection.standard_read_messages  s=   € à
€!Ø	Œð *ð ‡~‚~ÑÔ€1ØÔ"×'Ò'Ñ)Ô)€4„9Ø	
€(r   c                 ó˜  — | j         j        }	 | j        r)| j         || j        ¦  «        d…         | _        | j        °)n‹# | j        j        $ ry}| j                             |¦  «        }|�Wt          j        | j        _        d| j        _	        || j        _
        t          j        ddd|ff¦  «        | j        _        Y d}~dS ‚ d}~ww xY wdS )zk
		send all `message_data`.

		If an exception occurs, it will check if the exception
		is fatal or not.
		NTr   r   r   F)rC   re   Úmessage_datar<   rH   rO   r-   rI   rJ   rK   rL   r0   rP   rE   )r   Ú	SEND_DATAru   rv   s       r   Úsend_message_datazConnection.send_message_data  sö   € ð ŒkÔ€)ð
Ø	Ô	ð àÔ)Ø€YˆtÔ Ñ!Ô!Ð"Ð"ô€DÔð 
Ô	ð øøð
 
Ô	Ô	,ð 
ð 
ð 
Ø	Ô	×	4Ò	4°QÑ	7Ô	7€3Ø	€oå”m€D„I„OØ€D„I„OØ€D„IÔÝ%Ô1ØØØ
ˆC€[ð3ñ ô €D„IÔð
 ˆ5ˆ5ˆ5ˆ5ˆ5ð 
øøøøð
øøøð  
ˆs   Ž0? ¿CÁA-CÃCÃCc                 ó  — | j         | j        ur*| xj         || j         ¦  «        z  c_        | j         | _        || j         ur1|| _         | xj         || j         ¦  «        z  c_        | j         | _        |                      ¦   «         S )zprotocol message writer)ÚwritingÚwrittenr{   r}   )r   ÚmessagesÚcat_messagess      r   r&   z"Connection.standard_write_messages:  s‹   € ð 
„\˜œÐ%Ð%ØÐÔ˜˜ T¤\Ñ2Ô2Ñ2ÐÔØ”,€4„<à�T”\Ð!Ð!Ø€4„<ØÐÔ˜˜ T¤\Ñ2Ô2Ñ2ÐÔØ”,€4„<Ø	×	Ò	Ñ	!Ô	!Ð!r   c           
      ó´  — |D ]Á}t          |dd¦  «        }|�z|                     ¦   «         }|                      d                     t	          |¦  «        dd…         t          |¦  «        t	          |¦  «        t          j        ¬¦  «        ¦  «         Œ�|                      dt          |¦  «        |t          j        fz  ¦  «         ŒÂ|                      |¦  «        S )z message_writer used when tracingÚtypeNu   â†‘ {type}({lend}): {data}{nl}é   éÿÿÿÿ)r„   ÚlendÚdataÚnlu   â†‘__(%d): %r%s)	Úgetattrr;   r   ÚformatÚreprÚlenÚosÚlinesepr&   )r   r�   rv   ÚtÚdata_outs        r   r   z Connection.traced_write_messagesI  sÞ   € àð ð €cÝˆs�F˜DÑ!Ô!€1Ø€mØ�yŠy‰{Œ{€HØ‡L‚LÐ1×8Ò8Ý�‰GŒG�A�b�DŒMÝ�‰MŒMÝ�‰NŒNÝ
Œ*ð	 9ñ ô ñ ô ð ð ð 	‡L‚LÐ"Ýˆ�X„Xˆs•B”Jð%ñ ñ ô ð ð ð 
×	%Ò	% hÑ	/Ô	/Ð/r   c           	      óÌ   — |                       ¦   «         }| j        D ]G}|                      d|d         t          |d         ¦  «        |d         t          j        fz  ¦  «         ŒH|S )z message_reader used when tracingu   â†“ %r(%d): %r%sr   r   )r'   ry   r   r�   rŽ   r�   )r   rg   rv   s      r   r!   zConnection.traced_read_messages\  sp   € à
×!Ò!Ñ#Ô#€!ØŒYð ð €cØ‡<‚<Ð"Øˆ„F�C��A”‰KŒK˜˜Qœ¥¤ð%-ñ -ñ ô ð ð ð 
€(r   c                 ó®  — g }d}| j         D ].}|                     t          j        |¦  «        ¦  «         |dz  }Œ/d}| j        D ].}|                     t          j        |¦  «        ¦  «         |dz  }Œ/|                     t          j        ¦  «         t          j        |¦  «        }|| _        | j         d|…= | j        d|…= |  	                    ¦   «          dS )z6
		close cursors and statements slated for closure.
		r   r   N)
Úgarbage_cursorsÚappendr0   ÚClosePortalÚgarbage_statementsÚCloseStatementr1   r-   r/   r.   )r   ÚxmÚcursorsr3   Ú
statementss        r   Útake_out_trashzConnection.take_out_trashe  sâ   € ð 
€"Ø€'ØÔð ð €aØ‡9‚9�WÔ  Ñ#Ô#Ñ$Ô$Ð$Ø
ˆa�<€7€7Ø€*ØÔ"ð ð €aØ‡9‚9�WÔ# AÑ&Ô&Ñ'Ô'Ð'Ø��?€:€:Ø‡)‚)�GÔ&Ñ'Ô'Ð'Ý
Ô�rÑÔ€!Ø€$„)Ø
Ô˜8˜G˜8Ð$Ø
Ô˜k˜z˜kÐ*Ø‡-‚-�/„/€/€/€/r   c                 ó  — |j         t          j        u rdS | j        �|                      ¦   «          | j        €F| j        s| j        r|                      ¦   «          | j        €|| _        |                      ¦   «          dS dS dS )z2
		setup the given transaction to be processed.
		N)rJ   r-   rI   r.   r—   r”   rœ   Ústepr2   s     r   ÚpushzConnection.pushy  sŽ   € ð
 „W•”ÐÐà	€6Ø	„YÐØ‡=‚=�?„?€?Ø	„YÐØ
Ôð  Ô!5ð ð 	×ÒÑÔÐØ
„iÐà€D„Ià‡I‚I�K„K€K€K€Kð Ðð
 Ðr   c                 ól  — | j         }	 |j        \  }}|t           j        u r%|                      |j        ¦  «          |¦   «          n|t           j        u rR|                      ¦   «          | j         || j        ¦  «        d…         | _        t          |d| j        ¦  «        | _        nt          dt          |¦  «        z   ¦  «        ‚n8# | j        j        $ r&}| j                             |¦  «        rY d}~dS ‚ d}~ww xY w|j        t           j        u r!t          | j         dd¦  «        durd| _         dS dS dS )z‘
		Make a single transition on the transaction.

		This should be used during COPY TO STDOUT or large result sets
		to stream information out.
		NÚ
last_readyz!unexpected PQ transaction state: rK   T)r-   rJ   ÚSendingr    r�   Ú	Receivingr"   ry   rŠ   ÚRuntimeErrorrŒ   r<   Útry_again_exceptionÚ	try_againrI   )r   r3   ÚdirÚopru   s        r   rž   zConnection.stepŽ  sU  € ð „i€!ð
ØŒW�7€3ˆØ	�TŒ\ÐÐØ×Ò˜œ
Ñ#Ô#Ð#ð €B�D„D€D€DØ�tŒ~ÐÐØ×ÒÑÔÐØ”	˜"˜"˜TœY™-œ-˜.˜.Ô)€D„IÝ˜˜L¨$¬*Ñ5Ô5€D„J€Jå
Ø(­4°©9¬9Ñ4ñô ð øøð 
Ô	Ô	0ð 
ð 
ð 
ð Ô×#Ò# AÑ&Ô&ð 
à
€F€F€F€F€Fà	øøøøð
øøøð „W•”ÐÐÝ	ˆ$Œ)�W˜dÑ#Ô#¨4Ð/Ð/à€4„9€9€9ð ÐØ/Ð/s   ‰B<C ÃC;ÃC6Ã5C6Ã6C;c                 ó:  — | j         }t           j        }t           j        }t           j        }| j        }| j        }|j        |u�r 	 |j        d         |u rF |¦   «         r-| j         |j        d         | j        ¦  «        d…         | _        |j        d         |u °F|j        d         |u r4 ||j        ¦  «        r |j        d         ¦   «          |j        d         |u °4n|# | j	        j
        $ r%}| j	                             |¦  «        s‚ Y d}~nMd}~wt          $ r=}d|_        t           j        |_        ||_        t          |_        d| _        Y d}~dS d}~ww xY w|j        |u�° t#          |d| j        ¦  «        | _        t#          |dd¦  «        dur	d| _         dS dS )z complete the current transactionr   r   NTr   r¡   rK   )r-   r£   r¢   rI   r"   r    rJ   ry   r�   r<   r¥   r¦   rV   rK   rL   Úclient_detected_protocol_errorrE   rŠ   )	r   r3   ÚRÚSÚCÚ	READ_MOREÚWRITE_MESSAGESru   Ú	proto_excs	            r   r.   zConnection.complete³  sÔ  € ð „i€!Ý
„n€!Ý
„l€!Ý
„m€!ØÔ €)ØÔ&€.Ø	Œ�qÐÑðØ
Œ'�!Œ*˜ˆ/ˆ/Øˆ	‰Œð 4Ø”)˜J˜AœG AœJ t¤yÑ1Ô1Ð2Ð2Ô3€d„ið Œ'�!Œ*˜ˆ/ˆ/ð Œ'�!Œ*˜ˆ/ˆ/Øˆ�q”zÑ"Ô"ð Ø€a„gˆa„j�l„l€lð Œ'�!Œ*˜ˆ/ˆ/øøð Ô
Ô
1ð ð ð ØÔ×(Ò(¨Ñ+Ô+ð Ø
ðð ð ð ð øøøøå
ð 	ð 	ð 	ð €A„GÝŒm€A„GØ€A„KÝ4€A„OØ€D„JØ
€F€F€F€F€Føøøøð	øøøð# 	
Œ�qÐÑõ6 �q˜,¨¬
Ñ3Ô3€$„*ÝˆQ�˜ÑÔ dÐ*Ð*à€4„9€9€9ð +Ð*s%   ÁBC ÃEÃ-DÄEÄ2EÅEc                 óZ   ‡‡— | j         Št          j        |ˆˆfd„¦  «        | j        ‰<   d S )Nc                 ó   •—  ‰‰¦  «        S r   © )ÚrefÚpq_cursor_idÚtrashs    €€r   ú<lambda>z,Connection.register_cursor.<locals>.<lambda>ß  s   ø€ ¸u¸uÀ\Ñ?RÔ?R€ r   )Útrash_cursorÚweakrefr´   rš   )r   Úcursorrµ   r¶   s     `@r   Úregister_cursorzConnection.register_cursorÝ  s7   øø€ Ø
Ô
€%Ý&œ{¨6Ð3RÐ3RÐ3RÐ3RÐ3RÑSÔS€$„,ˆ|ÑÐÐr   c                 ón   — 	 | j         |= n# t          $ r Y nw xY w| j                             |¦  «         d S r   )rš   ÚKeyErrorr”   r•   )r   rµ   s     r   r¸   zConnection.trash_cursorá  sQ   € ðØ„|�LÐ!Ð!øÝ	ð ð ð Ø€4ðøøøàÔ×Ò˜lÑ+Ô+Ð+Ð+Ð+ó   ‚ ‹
—c                 óZ   ‡‡— | j         Št          j        |ˆˆfd„¦  «        | j        ‰<   d S )Nc                 ó   •—  ‰‰¦  «        S r   r³   )r´   Úpq_statement_idr¶   s    €€r   r·   z/Connection.register_statement.<locals>.<lambda>ê  s   ø€ ÈÈÈoÑH^ÔH^€ r   )Útrash_statementr¹   r´   r›   )r   Ú	statementrÁ   r¶   s     `@r   Úregister_statementzConnection.register_statementè  s7   øø€ Ø
Ô
€%Ý%,¤[°Ð<^Ð<^Ð<^Ð<^Ð<^Ñ%_Ô%_€$„/�/Ñ"Ð"Ð"r   c                 ón   — 	 | j         |= n# t          $ r Y nw xY w| j                             |¦  «         d S r   )r›   r½   r—   r•   )r   rÁ   s     r   rÂ   zConnection.trash_statementì  sQ   € ðØ„�Ð'Ð'øÝ	ð ð ð Ø€4ðøøøàÔ× Ò  Ñ1Ô1Ð1Ð1Ð1r¾   c                 óT  — t          | d¦  «        r| j        du rd}n| j        du rd}nd}d                     |                      t	          | j        ¦  «        | j        ¦  «        ¦  «        }t          | j        ¦  «        dz   |z   d	z   t          j	        z   | 
                    ¦   «         z   S )
NrR   TÚSSLFzNOSSL after SSLÚNOSSLÚ z -> (ú))rF   rR   ÚjoinÚexception_stringr„   rL   Ústrr<   rŽ   r�   Ústrip)r   r[   Úexcstrs      r   Ú__str__zConnection.__str__ó  sµ   € ÝˆTÐ$Ñ%Ô%ð Ø
Ô˜dÐ"Ð"Ø
€C€CØÔ Ð%Ð%Ø
€Cøà	€3à�7Š7�4×(Ò(­¨d¬nÑ)=Ô)=¸t¼~ÑNÔNÑOÔO€&Ý	ˆTÔ Ñ	!Ô	!Øñ
Øñ
Øñ
å„Zñ
à—,’,‘.”.ñ
!ð !r   r   c                 óH  — d| _         d| _        || _        t          j        t          j        |¦  «        |¦  «        | _        i | _        i | _        g | _	        g | _
        t          ¦   «         | _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        dS )z]
		Create a connection.

		This does not establish the connection, it only initializes it.
		Ni    r³   r   ÚINITIALIZED)r:   r9   r<   r-   ÚNegotiationr0   ÚStartuprš   r›   r—   r”   r   rj   rm   ry   rn   r{   r   r€   rJ   )r   r<   ÚstartupÚpasswords       r   Ú__init__zConnection.__init__  s¥   € ð €$„(Ø€$„/à&€$ÔÝÔÝ
„?�7ÑÔ˜Xñô €$„)ð €$„,Ø€$„/à€$ÔØ€$Ôå)Ñ+Ô+€$ÔØ€$„-à€$„)à€$„.ð €$Ôà€$„,ð €$„,à€$„*€*€*r   r³   r   )NN)r   )"Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r+   Úpropertyr4   rA   r`   ÚboolrQ   r-   rI   rw   r'   r"   r}   r0   r‚   r&   r    r   r!   rœ   rŸ   rž   r.   r»   r¸   rÄ   rÂ   rÐ   r×   r³   r   r   r   r   D   sÒ  € € € € € ðð ð €ðð ð ð ˆ(Ð
Ð
�V�V‘X”XÐ
Ð
€ðð ð ðð ð ð ðY6ð Y6ð Y6ð Y6ðv˜T 4˜Lð ð ð ð ð& !%¤ð -ð -ð -ð -ð^ð ð ð (€ðð ð ðB Ô%ð"ð "ð "ð "ð *€ð0ð 0ð 0ð&ð ð ðð ð ð(ð ð ð*#ð #ð #ðJ(ð (ð (ðTTð Tð Tð,ð ,ð ,ð`ð `ð `ð2ð 2ð 2ð!ð !ð !ð#ð #ð #ð #ð #ð #r   r   )rÛ   rŽ   r¹   Úbufferr   rÉ   r   r0   r   r-   Ú__all__rP   rª   rN   rS   rT   rW   rZ   ro   Úobjectr   r³   r   r   ú<module>rá      s[  ððð ð 
€	€	€	Ø €€€Ø %Ð %Ð %Ð %Ð %Ð %Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð à
€à!4 Ô!4ð 6ñ "ô "Ð ð -˜Ô,ð .ñ ô Ð ð #ˆwÔ"ð $ñ ô €ð #ˆwÔ"ð $ñ ô €ð '�7Ô&ð (ñ ô Ð ð /˜7Ô.ð 0ñ ô Ð ð  ˆGÔð !ñ ô €	ð`ð `ð `ð `ð `�ñ `ô `ð `ð `ð `r   