
    fj                    8   S SK Jr  S SKrS SKrS SKrS SKJr  S SKrS SKrS SK	r	S SK
r
S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrSSKJr  SSKJr  SSKJr   " S S	\R<                  5      r " S
 S\R@                  5      r!\RD                  " S/ SQ5      r#\RD                  " S/ SQ5      r$\RJ                  " 5       RL                  r'\'S:X  a  Sr(OSr(Sr)  S4S jr*          S5S jr+S r,SS.S jr-S r.S6S jr/S r0S r1 " S S\Rd                  5      r3\Rh                  " S \Rj                  Rd                  S!9r6SS".             S7S# jjr7S$ r8 " S% S&\95      r:S' r; " S( S)\<\Rz                  5      r>S8S* jr?S9S+ jr@S, rA\>R                  \A\>R                  \?" S5      \>R                  \?" S-5      \>R                  \?" S-5      \>R                  \@" S5      \>R                  \@" S-5      0rHS:S. jrIS/ rJS;S0 jrKS1 rLS2 rMS3 rNg)<    )annotationsN)Callable   )compat)
exceptions)protocolc                  <    \ rS rSrSrSrSrSrSrSr	\
S 5       rS	rg
)SSLMode$   r   r               c                \    [        X5      (       a  U$ [        XR                  SS5      5      $ )N-_)
isinstancegetattrreplace)clssslmodes     N/var/www/html/GQ-WA/venv/lib/python3.13/site-packages/asyncpg/connect_utils.pyparseSSLMode.parse,   s(    g##NsOOC566     N)__name__
__module____qualname____firstlineno__disableallowpreferrequire	verify_caverify_fullclassmethodr   __static_attributes__r   r   r   r
   r
   $   s2    GEFGIK7 7r   r
   c                      \ rS rSrSrSrSrg)SSLNegotiation3   postgresdirectr   N)r   r   r   r    r,   r-   r(   r   r   r   r*   r*   3   s    HFr   r*   ConnectionParameters
userpassworddatabasesslr   ssl_negotiationserver_settingstarget_session_attrs
krbsrvnamegsslibConnectionConfigurationcommand_timeoutstatement_cache_sizemax_cached_statement_lifetimemax_cacheable_statement_sizeWindowszpgpass.confz.pgpassz.pg_service.confc                   / n U R                  5       (       d  / $ U R                  5       (       d'  [        R                  " SR	                  U 5      5        / $ [
        S:w  ah  U R                  5       R                  [        R                  [        R                  -  -  (       a'  [        R                  " SR	                  U 5      5        / $ U R                  S5       nU Hy  nUR                  5       nU(       a  UR                  S5      (       a  M2  UR                  SS5      nUR                  [        S [         R"                  " S	US
S9 5       5      5        M{     S S S 5        U$ ! , (       d  f       U$ = f! [$         a     U$ f = f)Nz&password file {!r} is not a plain filer?   zWpassword file {!r} has group or world access; permissions should be u=rw (0600) or lessrt#\\
c              3  F   #    U  H  nUR                  S S5      v   M     g7f)rD   rC   N)r   ).0ps     r   	<genexpr>&_read_password_file.<locals>.<genexpr>   s%      %D IIdE**Ds   !z(?<!\\):r   )maxsplit)existsis_filewarningswarnformat_systemstatst_modeS_IRWXGS_IRWXOopenstrip
startswithr   appendtupleresplitIOError)passfilepasstabflines       r   _read_password_filera   ^   sK    G!  I!!MM8??IK Ii}}&&$,,*EF@@F A"#
 	]]4 Azz|ts33 ||E40u %XXk4!D%     !  N! !   N  NsB   E6 ;E6 A1E6 	E6 B E$E6 $
E3.E6 3E6 6
FFc                    [        U 5      nU(       d  g[        X5       Hl  u  pgUR                  S5      (       a  SnU HI  u  ppnUS:w  a  X:w  a  M  U	S:w  a  U	[        U5      :w  a  M+  U
S:w  a  X:w  a  M8  US:w  a  X:w  a  ME  Us  s  $    Mn     g)zuParse the pgpass file and return the matching password.

:return:
    Password string, if found, ``None`` otherwise.
N/	localhost*)ra   ziprW   str)r]   hostsportsr2   r0   r^   hostportphostpport	pdatabasepuser	ppasswords                r   _read_password_from_pgpassrq      s     "(+G%'
??3D9@5E)I||T 2CI$9|  :A ($ r   c                   [        U[        5      (       ab  [        U5      S:  aS  [        U5      [        U 5      :w  a8  [        R                  " SR                  [        U5      [        U 5      5      5      e U$ [        U[        5      (       a7  [        U5      S:X  a(  [        [        U 5      5       Vs/ s H  o!S   PM	     nnU$ [        [        U 5      5       Vs/ s H  o!PM     nnU$ s  snf s  snf )Nr   z+could not match {} port numbers to {} hostsr   )r   listlenr   ClientConfigurationErrorrO   range)rh   rk   r   s      r   _validate_port_specrw      s    $#d)a- t9E
"55=DDIs5z+, , # K 
D$		CIN!&s5z!23!2AQ!23 K $CJ/0//0K	 40s   2C)C.Funquotec                  SU ;   a  U R                  S5      nOU /n/ n/ nU(       dq  [        R                  R                  S5      nU(       a=  SU;   a+  UR                  S5       Vs/ s H  n[	        U5      PM     nnO[	        U5      nOSn[        X85      nO[        X15      n[        U5       GH5  u  pU
S   S:X  a  U
nSnOU
S   S:X  af  [        R                  " SU
5      nU(       a#  UR                  S	5      nUR                  S
5      nO9[        R                  " SR                  U
5      5      eU
R                  S5      u  pnU(       a  [        R                  R!                  U5      nUR#                  U5        U(       a  M  U(       aC  U(       a  [        R                  R!                  U5      nUR#                  [	        U5      5        GM!  UR#                  WU	   5        GM8     U(       d  UnXA4$ s  snf )N,PGPORT8  r   rc    [z(?:\[([^\]]+)\])(?::([0-9]+))?r   r   z0invalid IPv6 address in the connection URI: {!r}:)r[   osenvirongetintrw   	enumeraterZ   matchgroupr   ru   rO   	partitionurllibr   ry   rX   )hostlistrk   ry   	hostspecsrh   hostlist_portsportspecrG   default_portihostspecaddrhostspec_portmr   s                  r   _parse_hostlistr      s   
hNN3'	J	EN::>>(+h08s0CD0C1A0CD"8}L*9C #93 +A;#DMa[C:HEAwwqz !
 99FMM   &.%7%7%<"D]<<''-DTt$*LL$8$8$GM%%c-&89%%l1o6? ,B ;_  Es   &G4c                    U R                  S5      (       a  [        R                  " SU  35      e [        R                  U R                  SS5         $ ! [         a    [        R                  " SU  35      ef = f)NSSLzUnsupported TLS version: .r   zNo such TLS version: )rW   r   ru   
ssl_module
TLSVersionr   KeyError)tls_versions    r   _parse_tls_versionr      s    e$$11'}5
 	

$$[%8%8c%BCC 
11#K=1
 	

s   "A $A8c                     [         R                  R                  5       nUS-  U -  R                  5       $ ! [        [        4 a     g f = f)Nz.postgresql)pathlibPathhomeRuntimeErrorr   resolve)filenamehomedirs     r   _dot_postgresql_pathr     sM    ,,##% m#h.7799 (# s   6 A	A	c                v#  ^2 S nS =n=n=n=nm2S =nnS nU (       Ga  [         R                  R                  U 5      nS nUR                  (       a  [         R                  R	                  UR                  SS9nUR                  5        H%  u  nn[        U[        5      (       d  M  US   UU'   M'     SU;   a!  UR                  S5      nU(       d	  U(       a  UnU	nUc  [        R                  " S5      nUc)  [        R                  " 5       nU(       a
  U[        -  nOS nO[        R                  " U5      nUR                   S;  a/  ["        R$                  " SR'                  UR                   5      5      eUR(                  (       a?  SUR(                  ;   a   UR(                  R+                  S5      u  nnnOUR(                  nS	nOS	=nnU(       a  UR+                  S
5      u  n nn!OS	=n n!U(       d  U(       a  [-        UUSS9u  pUR.                  (       aI  UcF  UR.                  n"U"R1                  S5      (       a  U"SS  n"[         R                  R3                  U"5      nUc&  U (       a  [         R                  R3                  U 5      nUc&  U!(       a  [         R                  R3                  U!5      nU(       Gae  SU;   aI  UR                  S5      nU(       d1  U(       a*  UR5                  S5       V#s/ s H  n#[7        U#5      PM     nn#SU;   a-  UR                  S5      nU(       d  U(       a  [-        UU5      u  pSU;   a  UR                  S5      nUc  UnSU;   a  UR                  S5      nUc  UnSU;   a  UR                  S5      nUc  UnSU;   a  UR                  S5      nUc  UnSU;   a  UR                  S5      nUc  UnSU;   a  UR                  S5      nUc  UnSU;   a  UR                  S5      nSU;   a  UR                  S5      nSU;   a  UR                  S5      nSU;   a  UR                  S5      nSU;   a  UR                  S5      nSU;   a  UR                  S5      m2SU;   a  UR                  S5      nSU;   a  UR                  S5      nSU;   a  UR                  S5      n$Uc  U$nS U;   a  UR                  S 5      nUc  UnS!U;   a  UR                  S!5      nUc  UnSU;   a  UR                  S5      nUc  UnU(       a  Uc  UnO0 UEUEnUGb  UGb  [8        R:                  " 5       n%U%R=                  U5        UU%R?                  5       ;   Gac  U%U   n&SU&;   aI  U&R                  S5      nU(       d1  U(       a*  UR5                  S5       V#s/ s H  n#[7        U#5      PM     nn#SU&;   a-  U&R                  S5      nU(       d  U(       a  [-        UU5      u  pSU&;   a  U&R                  S5      nUc  UnSU&;   a  U&R                  S5      nUc  UnSU&;   a  U&R                  S5      nUc  UnSU&;   a  U&R                  S5      nUc  UnSU&;   a  U&R                  S5      nUc  UnSU&;   a  U&R                  S5      nUc  UnSU&;   a  U&R                  S5      nUc  UnSU&;   a  U&R                  S5      nUc  UnSU&;   a  U&R                  S5      nUc  UnSU&;   a  U&R                  S5      nUc  UnSU&;   a  U&R                  S5      nUc  UnSU&;   a  U&R                  S5      nT2c  Um2SU&;   a  U&R                  S5      nUc  UnSU&;   a  U&R                  S5      nUc  UnSU&;   a  U&R                  S5      n$Uc  U$nS U&;   a  U&R                  S 5      nUc  UnS!U&;   a  U&R                  S!5      nUc  UnU(       d  [        R@                  RC                  S"5      nU(       d4  [        R@                  RC                  S#5      n'U'(       a  [-        U'U5      u  pU(       d  S$/n[D        S%:X  a  S$/nO/ S&Qn[        U[        [F        45      (       d  U/nUc  UnU(       df  [        R@                  RC                  S'5      n(U((       a=  SU(;   a+  U(R5                  S5       V#s/ s H  n#[7        U#5      PM     nn#OQ[7        U(5      nOES(nOB[        U[        [F        45      (       a  U V#s/ s H  n#[7        U#5      PM     nn#O[7        U5      n[I        X5      nUc2  [        R                  " S)5      nU(       d  [J        RL                  " 5       nUc  [        R                  " S*5      nUc  [        R                  " S+5      nUc  UnUc  ["        R$                  " S,5      eUc  ["        R$                  " S-5      eUci  Uc  [        R                  " S.5      nUc)  [        R                  " 5       nU(       a
  U[N        -  nOS nO[        R                  " U5      nUb  [Q        XXcUS/9n/ n)S0n*[S        X5       Hy  u  n+n#U+R1                  S5      (       aH  S1U+;  a/  [        R.                  RU                  U+S2R'                  U#5      5      n+U)RW                  U+5        Md  U)RW                  U+U#45        Sn*M{     U)(       d  ["        RX                  " S35      eUc  [        R                  " S45      nUc	  U*(       a  S5nU
b(  U
(       a  [Z        R\                  O[Z        R^                  n,OBUc  [        R@                  RC                  S65      nUb   [[        U5      n,O[Z        R^                  n,[        U[b        [d        45      (       Ga0   [d        R                  U5      n.U.[d        Rh                  :  a  S0nGO=[j        Rl                  " [j        Rn                  5      nU.[d        Rp                  :  Ul9        U.[d        Rt                  :  a  [j        Rv                  Ul<        GO$Uc  [        R                  " S<5      nU(       a%  UR{                  US=9  [j        R|                  Ul<        OK [        S>5      nUb  UR{                  US=9  O["        R$                  " S?5      e [j        R|                  Ul<        Uc  [        R                  " SH5      nU(       a3  UR{                  US=9  U=R                  [j        R                  -  slB        OA[        SI5      nUb3   UR{                  US=9  U=R                  [j        R                  -  slB        Uc  [        R                  " SJ5      nU(       d%  [        SK5      nUb  UR                  5       (       d  S nT2(       d  S	m2Uc  [        R                  " SL5      nU(       a  UR                  UUU24SM jSN9  O$[        SO5      nUb   UR                  UUU24SP jSN9  [        USQ5      (       aL  [        R@                  RC                  SR5      n0U0(       a&  [        R                  R                  (       d  U0UlJ        Uc  [        R                  " SS5      nU(       a  [        U5      UlL        O[        ST5      UlL        Uc  [        R                  " SU5      nU(       a  [        U5      UlM        O;USL a&  [j        R                  " 5       n[d        Rp                  n.O[d        R                  n.Ubg  [        U[        5      (       a<  [        SV U 5       5      (       a%  [        SW UR                  5        5       5      (       d  ["        R$                  " SX5      eUc%  [        R                  " SY[        R                  5      n [        U5      nUc  [        R                  " S[5      nUc'  [        R                  " S\5      nUc  [D        S%:X  a  S]OS^nUS_;  a%  ["        R$                  " S`R'                  U5      5      e[        X4XgU.U,UUXSa9
n1U)U14$ s  sn#f s  sn#f s  sn#f s  sn#f ! [`         a7    S7RU                  S8 [Z         5       5      n-["        R$                  " S9U- 35      S ef = f! [f         aC    S7RU                  S: [d         5       5      n-["        R$                  " S;R'                  U-5      5      S ef = f! ["        R$                  [        [        4 ap    U.[d        Rt                  :  a(  Uc  S@nSAn/OS n/["        R$                  " SBU SC3SDU SE3U/SF9eU.[d        Rt                  :X  a  [j        Rv                  Ul<         GN SG5       ef = f! [        [        4 a     GNf = f! [        [        4 a     GNf = f! [`         a@    ["        R$                  " SZR'                  [        R                  R                  U5      5      S ef = f)bNT)strict_parsingservicePGSERVICEFILE>   r,   
postgresqlzQinvalid DSN: scheme is expected to be either "postgresql" or "postgres", got {!r}@r~   r   rx   rc   r   rk   r{   rj   dbnamer2   r0   r1   r]   r   sslcertsslkeysslrootcertsslnegotiationsslcrlsslpasswordssl_min_protocol_versionssl_max_protocol_versionr6   r7   r8   	PGSERVICEPGHOSTrd   r?   )z/run/postgresqlz/var/run/postgresqlz/tmpz/private/tmprd   r|   r}   PGUSER
PGPASSWORD
PGDATABASEz-could not determine user name to connect withz/could not determine database name to connect to
PGPASSFILE)rh   ri   r2   r0   r]   Fz	.s.PGSQL.z.s.PGSQL.{}z6could not determine the database address to connect to	PGSSLMODEr#   PGSSLNEGOTIATIONz, c              3  Z   #    U  H!  nUR                   R                  S S5      v   M#     g7fr   r   Nnamer   rF   r   s     r   rH   ._parse_connect_dsn_and_args.<locals>.<genexpr>  s)      "+ FFNN3,,+s   )+z+`sslnegotiation` parameter must be one of: c              3  X   #    U  H   oR                   R                  S S5      v   M"     g7fr   r   r   s     r   rH   r     s      H1ffnnS#66s   (*z&`sslmode` parameter must be one of: {}PGSSLROOTCERT)cafilezroot.crtzDcannot determine location of user PostgreSQL configuration directoryz~/.postgresql/root.crtzCould not determine location of user home directory (HOME is either unset, inaccessible, or does not point to a valid directory)zroot certificate file "z&" does not exist or cannot be accessedz4Provide the certificate file directly or make sure "z" exists and is readable.)hintdetailunreachablePGSSLCRLzroot.crlPGSSLKEYzpostgresql.key	PGSSLCERTc                    > T $ Nr   r   s   r   <lambda>-_parse_connect_dsn_and_args.<locals>.<lambda>  s    kr   )keyfiler1   zpostgresql.crtc                    > T $ r   r   r   s   r   r   r     s    [r   keylog_filenameSSLKEYLOGFILEPGSSLMINPROTOCOLVERSIONzTLSv1.2PGSSLMAXPROTOCOLVERSIONc              3  B   #    U  H  n[        U[        5      v   M     g 7fr   r   rg   )rF   ks     r   rH   r   3  s     @1Jq#&&   c              3  B   #    U  H  n[        U[        5      v   M     g 7fr   r   )rF   vs     r   rH   r   4  s     I0H1Jq#&&0Hr   z:server_settings is expected to be None or a Dict[str, str]PGTARGETSESSIONATTRSz<target_session_attrs is expected to be one of {!r}, got {!r}PGKRBSRVNAMEPGGSSLIBsspigssapi>   r   r   z<gsslib parameter must be either 'gssapi' or 'sspi', got {!r}r/   )Wr   r   urlparsequeryparse_qsitemsr   rs   popr   getenvr   get_pg_home_directoryPG_SERVICEFILEr   r   schemer   ru   rO   netlocr   r   pathrW   ry   r[   r   configparserConfigParserreadsectionsr   r   rP   rY   rw   getpassgetuserr   rq   rf   joinrX   InternalClientErrorr*   r-   r,   
ValueErrorrg   r
   AttributeErrorr"   r   
SSLContextPROTOCOL_TLS_CLIENTr&   check_hostnamer$   	CERT_NONEverify_modeload_verify_locationsCERT_REQUIREDr   FileNotFoundErrorNotADirectoryErrorverify_flagsVERIFY_CRL_CHECK_CHAINrK   load_cert_chainhasattrsysflagsignore_environmentr   r   minimum_versionmaximum_versioncreate_default_contextr!   dictallvaluesSessionAttributeany__members___ConnectionParameters)3dsnrj   rk   r0   r1   r]   r2   r3   r   servicefile
direct_tlsr5   r6   r7   r8   
auth_hostsr   r   r   r   r   r   r   parsedr   keyvalconnection_service_filer   dsn_authr   dsn_hostspecdsn_userdsn_passworddsn_databaserG   dsn_target_session_attrs
pg_serviceservice_paramsr   r   addrshave_tcp_addrshsslnegmodesr   r   
keylogfileparamsr   s3                                                     @r   _parse_connect_dsn_and_argsr)    s    J<@@G@f@{@Vk:>>7N
&&s+<<LL))&,,t)LE!KKMSc4((!$RE#J * E!ii	*3!G"-"*&(ii&@#"*224G*1N*B'*.'&-ll3J&K#== ::5577=vfmm7LN N ==fmm#,2MM,C,CC,H)!\%}}&((H|(0(:(:3(?%Ha&((H|(tTJJD;;8+!;;L&&s+++AB/||++L9H<H<<''1D||++L9Hii',/IIcN;NqCFND;ii'!0d!;JD5 ii)#"HU"ii
+#"Hii'<DU"ii
+#"HU"ii
+#"HE!ii	*;CE!))I.5 8,%#ii65(!&+;!<5 8,%#ii6)U2+099.,( *U2+099.,( &.+099*,( (/+C(u$ii-%!$J5 ii)> FE!ii	*?!G"*&+O&B&B/&BO".73F%224JOO34*--//!+G!4^+(,,V4CC03		#?1A?^+(,,V4CC%4S$%?
~-(,,X6C'#&/(,,Z8C'#&^+(,,V4C|"/(,,Z8C'#&/(,,Z8C'#&.(,,Y7C{!.(,,Y7C"%~-(,,X6C~!$ N2(,,];C"*&)#~5(,,-=>C%-),~-(,,X6C~!$ N2(,,];C"*&)-?(,,2C 07360-?(,,2C 07360)^;/=/A/A.0, ,3/G,>1(,,\:C!)%(
~-(,,X6C~!$**..-::>>(+(48JD!]
i=D9D dT5M**v
::>>(+h(0s(;<(;1A(;<8}D	D4-	(	( $%1A% 4yt*D|yy"??$D99\*99\*|11;= 	= 11=? 	? yy.H224G"Z/||H-H1 !!#H
 END1<<!#GGLLM$8$8$;<LLO LL!Q !N   ,,DF 	F {ii$
{~%/N!!^5L5L 	 !ZZ^^,>?N%	'7 $,,F#W~&&	mmC(G W]]"C''
(F(FGC!(G,?,?!?C(","6"6&"$))O"<K--[-A&0&>&>CO&C&::&F&255[5I","E"E!E#  JF +5*B*B>YYz2F--V-<$$
(I(II$1*=F)	B55V5D  ,, * A AB, ~:.-.>?%fmmoo!F ))K0##V6I $  //?@&++#$*%8 ,  s-..ZZ^^O<
cii&B&B*4C''/+-995N+O('&8,'# '9&C#'/+-995N+O('&8,'# 
//1%%//"?D11@@@@I0F0F0HIII11  	  #!yy"$4$8$8 
	/0DE YY~.
~:&>&)3VF''11) 	) #x'1.F &=o <J  @v = &d  		 "+"  !99A%I  	IIHHHE558??F	> #;;)* 8
 #W__4*2.F%7 !' *.","E"E"9+ GB !C&66A] C?&? (.#  %7.8.B.BCO7-7578T ..  ! !	!@ ./AB Z  11 ,,335I
 	s   .A@A@'A@-A@A@ =AA 4AB. AE  AE :AE. @AAAAAAB+B.BAD=D5AD=E AEEAEEAE+E*AE+E.A
AF8c                   [        5       nS HA  nUU   nUb  [        U[        5      (       d  US:  d  M(  [        SR	                  UU5      5      e   Ub4   [        U[        5      (       a  [        e[        U5      nUS::  a  [        e [        XX#XEUXUUUUUUS9u  nn[        UUU	U
S9nUUU4$ ! [         a    [        SR	                  U5      5      S ef = f)N>   r<   r>   r=   r   z4{} is expected to be greater or equal to 0, got {!r}zGinvalid command_timeout value: expected greater than 0 float (got {!r}))r  rj   rk   r0   r1   r]   r3   r  r2   r5   r6   r7   r8   r   r  r:   )localsr   boolr   rO   floatr)  _ClientConfiguration)r  rj   rk   r0   r1   r]   r2   r;   r<   r=   r>   r3   r  r5   r6   r7   r8   r   r  
local_varsvar_namevar_valr"  r(  configs                            r   _parse_connect_argumentsr3  ^  s!    J- X&?j$777Q;**0&7*CE E- "
	0/400  #O4O!#   $ 0#'1f[2ME6 "'1&C%A	DF &&  +  	0;;A6#<%& ,00	0s   2B0 0&Cc                  J    \ rS rSr            SS jrSS jrS	S jrSrg)
TLSUpgradeProtoi  c                T    [        U5      U l        X l        X0l        X@l        XPl        g r   )_create_futureon_datarj   rk   ssl_contextssl_is_advisory)selflooprj   rk   r9  r:  s         r   __init__TLSUpgradeProto.__init__  s&     &d+		&.r   c           	        US:X  a  U R                   R                  S5        g U R                  (       aJ  U R                  R                  [
        R                  :X  a"  US:X  a  U R                   R                  S5        g U R                   R                  [        SR                  U R                  U R                  S95      5        g )N   ST   NFz9PostgreSQL server at "{host}:{port}" rejected SSL upgrade)rj   rk   )r8  
set_resultr:  r9  r   r   r   set_exceptionConnectionErrorrO   rj   rk   )r;  datas     r   data_receivedTLSUpgradeProto.data_received  s    4<LL##D)""  ,,
0D0DD
 LL##E*LL&&++16!YYTYY ,2 ,89:r   c                    U R                   R                  5       (       d*  Uc  [        S5      nU R                   R                  U5        g g )Nz!unexpected connection_lost() call)r8  donerD  rC  r;  excs     r   connection_lostTLSUpgradeProto.connection_lost  s<    ||  ""{%&IJLL&&s+ #r   )rj   r8  rk   r9  r:  N)r<  asyncio.AbstractEventLooprj   rg   rk   r   r9  ssl_module.SSLContextr:  r,  returnNone)rE  bytesrP  rQ  )rK  ztyping.Optional[Exception]rP  rQ  )r   r   r   r    r=  rF  rL  r(   r   r   r   r5  r5    sK    /'/ / 	/
 +/ / 
/:$,r   r5  _ProctolFactoryR)bound)r:  c                 ^^^^^#    TR                  UUUUU4S jTT5      I S h  vN u  pgUR                  [        R                  " SSS5      5         UR                  I S h  vN n[        TS5      (       a[  U(       a    TR                  XgTTS9I S h  vN n	U	c   eOUn	U " 5       n
Xl        U
R                  U	5        U	R                  U
5        X4$ [        R                  " TR                   U 5      nU(       a  [        R                  " UTTS9n[!        U5      nUR#                  5       n[%        U5        UR                  5          U" US9I S h  vN u  pXl        X4$  GN= GN! [
        [        R                  4 a    UR                  5         e f = f GN! [
        [        R                  4 a    UR                  5         e f = f Nv! [
        [        R                  4 a    UR                  5         e f = f7f)	Nc                 "   > [        TT TTT5      $ r   )r5  )rj   r<  rk   r9  r:  s   r   r   (_create_ssl_connection.<locals>.<lambda>  s    dD +_>r   z!ll   i/	start_tls)server_hostname)r3   rZ  sock)create_connectionwritestructpackr8  	ExceptionasyncioCancelledErrorcloser  rY  is_sslconnection_madeset_protocol	functoolspartial_get_socketdup_set_nodelay)protocol_factoryrj   rk   r<  r9  r:  trprdo_ssl_upgradenew_trpg_protoconn_factoryr\  s    `````       r   _create_ssl_connectionrt    s     ))	> 	>d FB
 HHV[[8,-!zz)
 t[!!#~~K  .  ? ?)))
 F#%(  (H% ((""$46 $,,+tEL 2xxzT

	%1t%<<F,O##_ *w--. 

? w556 
4  = 7112 	JJL	s   G;E#-G;E) $E&%E) )G;F F	F  B)G;
	G G
G "G;&E) ),FG;F ,GG;
G ,G88G;c                H  #    Uc   eUn[        UR                  5      (       aD  UR                  5       n[        R                  " U5      (       a
  UI S h  vN nUR	                  US9nXX4XV4nUR
                  [        R                  :X  a  Un	UR	                  S S9nOCUR
                  [        R                  :X  a  UR	                  S S9n	O[        US/UQ76 I S h  vN $  [        US/UQ76 I S h  vN $  N N N! [         a     Of = f[        U	S/UQ76 I S h  vN  $ 7f)N)r1   )r3   FT)callabler1   inspectisawaitable_replacer   r
   r"   r#   __connect_addr_RetryConnectSignal)
r   r<  r(  r2  connection_classrecord_classparams_inputr1   argsparams_retrys
             r   _connect_addrr    s     L  ??$x((%~H(3,MD ~~&T*	7>>	)40 $FE9D999#FD84888# & : 9   e;d;;;;sg   AD"C6BD"C8D"!C< 1C:2C< 5D"8D":C< <
D	D"D		D"DD"c                      \ rS rSrSrg)r{  i&  r   N)r   r   r   r    r(   r   r   r   r{  r{  &  s    r   r{  c                  ^ ^^^^#    [        T5      mUUUU U4S jn[        T[        5      (       a  TR                  UT5      n	OT R                  (       a>  T R
                  [        R                  L a!  TR                  " U/TQ7ST R                  06n	O[T R                  (       a7  [        U/TQ7TT R                  T R                  [        R                  :H  S.6n	OTR                  " U/TQ76 n	U	I S h  vN u  p TI S h  vN   U" XTTXG5      nUR/                  U5        U$  N/ N$! [        R                  [        R                  4 a    U
R!                  5         U(       ah  T R                  [        R"                  :X  a  UR$                  (       a/  T R                  [        R                  :X  a  UR$                  (       a
  ['        5       ee [(        [*        R,                  4 a    U
R!                  5         e f = f7f)Nc                 8   > [         R                  " T TTTT5      $ r   )r   Protocol)r   	connectedr<  r(  r}  s   r   r    __connect_addr.<locals>.<lambda>6  s    H--it5r   r3   r<  r9  r:  )r7  r   rg   create_unix_connectionr3   r4   r*   r-   r]  rt  r   r
   r#   r   &InvalidAuthorizationSpecificationErrorConnectionDoesNotExistErrorrd  r"   re  r{  ra  rb  rc  set_connection)r(  retryr   r<  r2  r|  r}  r~  proto_factory	connectorrn  ro  conr  s   ` ``  `      @r   rz  rz  *  s     t$I5 5M $//tD		...2G2GG **
 
&,jj
	 
*> >'+"NNgnn<>	 **=@4@	_FB!D 24v
DCcJO  	99..  	
 NNgmm+BIINNgnn, &'' w--. 

s=   C-G:4D$5G:<D( D&D( G:&D( (CG77G:c                  ,    \ rS rSrSrSrSrSrSrSr	Sr
g	)
r  iu  r  primarystandbyzprefer-standbyz
read-writez	read-onlyr   N)r   r   r   r    r  r  r  prefer_standby
read_write	read_onlyr(   r   r   r   r  r  u  s     
CGG%NJIr   r  c                   ^  U 4S jnU$ )z
If the server didn't report "in_hot_standby" at startup, we must determine
the state by checking "SELECT pg_catalog.pg_is_in_recovery()".
If the server allows a connection and states it is in recovery it must
be a replica/standby server.
c                   >#    U R                  5       n[        USS 5      nUb
  US:H  nUT:H  $ U R                  S5      I S h  vN nUT:H  $  N	7f)Nin_hot_standbyonz%SELECT pg_catalog.pg_is_in_recovery())get_settingsr   fetchval)
connectionsettingshot_standby_statusis_in_hot_standbyshould_be_in_hot_standbys       r   can_be_used+_accept_in_hot_standby.<locals>.can_be_used  sq     **,$X/?F) 2d :
 !$<<< '1&9&97' ! !$<<<!s   ?AA
Ar   )r  r  s   ` r   _accept_in_hot_standbyr  ~  s    	= r   c                   ^  U 4S jnU$ )zB
Verify the server has not set default_transaction_read_only=True
c                   >#    U R                  5       n[        USS5      nUS:X  a  T$ [        T5      " U 5      I S h  vN $  N7f)Ndefault_transaction_read_onlyoffr  )r  r   r  )r  r  is_readonlyshould_be_read_onlys      r   r  &_accept_read_only.<locals>.can_be_used  sH     **,h(GO$&&+,?@LLLLs   :AAAr   )r  r  s   ` r   _accept_read_onlyr    s    M r   c                   #    g7fNTr   )r   s    r   _accept_anyr    s     s   Tc                @   #    [         U   nU" U 5      I S h  vN $  N7fr   )target_attrs_check)r  attrcan_uses      r   _can_use_connectionr    s       &G$$$$s   c           
       #    U c  [         R                  " 5       n [        S0 UD6u  pEnUR                  n/ nS n	S n
 U HG  n [	        UU UUUUS9I S h  vN nUR                  U5        [        X5      I S h  vN (       a  Un	  O5MI     U[        R                  :X  a  U(       a  [        R                  " U5      n	S nU(       a  [         R                  " U" X5      5        U	(       a  U	$ U
=(       d%    [        R                  " SR                  U5      5      e N N! [         a  nUn
 S nAM  S nAff = f! S nU(       a  [         R                  " U" X5      5        f f = f7f)N)r   r<  r(  r2  r|  r}  c                b   ^#    [         R                  " U4S jU  5       SS06I S h  vN   g  N7f)Nc              3  P   >#    U  H  oTLd  M	  UR                  5       v   M     g 7fr   )rd  )rF   cchosens     r   rH   6_connect.<locals>._close_candidates.<locals>.<genexpr>  s     >Uvo)!''))Us   &&return_exceptionsT)rb  gather)connsr  s    `r   _close_candidates#_connect.<locals>._close_candidates  s,     ..>U>"&  s   $/-/z=None of the hosts match the target attribute requirement {!r}r   )rb  get_event_loopr3  r6   r  rX   r  OSErrorr  r  randomchoicecreate_taskr   TargetServerAttributeNotMatchedrO   )r<  r|  r}  kwargsr"  r(  r2  target_attr
candidateschosen_connection
last_errorr   connexr  s                  r   _connectr    sg    |%%'4>v>E6--KJJBD *!!%5!-  !!$',T???(,% @ " .===*$*MM*$=!	
 !*@B   
 
BB	vk" ? @   
 	
 !*@B sk   9E!D5 DD#D7D8D7D5 :AE!DD
D2%D-'D5 -D22D5 5)EE!c                  ^ #     " U 4S jS[         R                  5      n[        U[        5      (       a  T R	                  XQ5      I S h  vN u  pgOUR
                  (       a_  UR                  [        R                  :w  aA  [        U/UQ7T UR
                  UR                  [        R                  :H  S.6I S h  vN u  pgO1T R                  " U/UQ76 I S h  vN u  pg[        [        U5      5        [        R                  " SSSX45      n UR!                  U5        UR"                  I S h  vN   UR%                  5         g  N N Nn N! UR%                  5         f = f7f)Nc                  (   > \ rS rSrU 4S jrS rSrg)_cancel.<locals>.CancelProtoi  c                4   > [        T5      U l        SU l        g )NF)r7  on_disconnectre  )r;  r<  s    r   r=  %_cancel.<locals>.CancelProto.__init__  s    !/!5DDKr   c                z    U R                   R                  5       (       d  U R                   R                  S5        g g r  )r  rI  rB  rJ  s     r   rL  ,_cancel.<locals>.CancelProto.connection_lost  s0    %%**,,""--d3 -r   )re  r  N)r   r   r   r    r=  rL  r(   r<  s   r   CancelProtor    s    	 	4r   r  r  z!llll   i.)rb  r  r   rg   r  r3   r   r
   r"   rt  r#   r]  rl  rj  r_  r`  r^  r  rd  )	r<  r   r(  backend_pidbackend_secretr  rn  ro  msgs	   `        r   _cancelr    s%    4g&& 4 $22;EEB::&..GMM91BB "JJ &'.. @B BFB  11$"$ $FBR) ++gr8[
IC


+ FB$ 	

sa   AE	E
A/E9E:EE3E E
 ,E-E
 1EEEE
 
EEc                b    U R                  S5      nUc  [        SR                  U 5      5      eU$ )Nsocketz+could not get the socket for transport {!r})get_extra_inforD  rO   )	transportr\  s     r   rj  rj    s9    ##H-D|9@@KM 	MKr   c                    [        [        S5      (       a  U R                  [        R                  :w  a0  U R	                  [        R
                  [        R                  S5        g g )NAF_UNIXr   )r  r  familyr  
setsockoptIPPROTO_TCPTCP_NODELAYr[  s    r   rl  rl    s@    69%%)F**F,>,>B *Gr   c                r     U R                   nU" 5       $ ! [         a    [        R                  " U S9s $ f = f)Nr  )create_futurer   rb  Future)r<  r  s     r   r7  r7    s<    **   )~~4(()s    66)r]   zpathlib.PathrP  z#typing.List[typing.Tuple[str, ...]])
r]   typing.Optional[pathlib.Path]rh   ztyping.List[str]ri   ztyping.List[int]r2   rg   r0   rg   )rP  r  )rm  zCallable[[], _ProctolFactoryR]rj   rg   rk   r   r<  rN  r9  rO  r:  r,  rP  z1typing.Tuple[asyncio.Transport, _ProctolFactoryR])r  r,  )r  r,  )r  r  )r(  r  )O
__future__r   rb  r   collectionscollections.abcr   enumrh  r   r   r   platformr  rZ   r  r3   r   rQ   r_  r  typingurllib.parser   rM   rw  r~   r   r   r   IntEnumr
   StrEnumr*   
namedtupler  r.  unamesystemrP   r   r   ra   rq   rw   r   r   r   r)  r3  r  r5  TypeVar	protocolsrS  rt  r  ra  r{  rz  rg   Enumr  r  r  r  r  r  r  r  r  r  r  r  r  r  rj  rl  r7  r   r   r   <module>r     s   #    $    	    	     
       7dll 7V^^ 
 $..   #--  ..

!
! iJJ $(.(V"2""  " 	"
 "J  05 =@

:G	T.!b%,g&& %,P >>g//88  "? 5	?
 ? ? $? '? ? 7?D%<P	) 	HVsDII *
 +4U;4T:##%;D%A!25!9 1$ 7 %
/d#LC
r   