§
    <xÅj  ã                  ó^  — d Z ddlmZ ddlmZ ddlmZmZ ddlZddl	m
Z
  eej        ej        ej        h¦  «        Zd1d„Z edd¬¦  «         G d„ d¦  «        ¦   «         Z edd¬¦  «         G d„ d¦  «        ¦   «         Z edd¬¦  «         G d„ d¦  «        ¦   «         Z edd¬¦  «         G d„ d¦  «        ¦   «         Z edd¬¦  «         G d„ d¦  «        ¦   «         Z edd¬¦  «         G d„ d¦  «        ¦   «         Z edd¬¦  «         G d„ d¦  «        ¦   «         Z edd¬¦  «         G d„ d¦  «        ¦   «         Z edd¬¦  «         G d„ d ¦  «        ¦   «         Z edd¬¦  «         G d!„ d"¦  «        ¦   «         Z edd¬¦  «         G d#„ d$¦  «        ¦   «         Z edd¬¦  «         G d%„ d&¦  «        ¦   «         Zeeeeeeeeeeeeej        f         Zeee         ee         eee         ee         ee         eee         ee         ee         eee         f         Z d2d*„Z!d3d0„Z"dS )4z¤
Compatibility layer for pycares 5.x API.

This module provides result types compatible with pycares 4.x API
to maintain backward compatibility with existing code.
é    )Úannotations)Ú	dataclass)ÚUnionÚcastNé   )ÚerrorÚdataÚbytesÚreturnústr | bytesc                óR   — 	 |                       d¦  «        S # t          $ r | cY S w xY w)zBDecode bytes as ASCII, return bytes if decode fails (pycares 4.x).Úascii)ÚdecodeÚUnicodeDecodeError)r	   s    ú>C:\Projects\Historical\venv\Lib\site-packages\aiodns/compat.pyÚ
_maybe_strr      s=   € ðØ�{Š{˜7Ñ#Ô#Ð#øÝð ð ð Øˆˆˆðøøøs   ‚ —&¥&T)ÚfrozenÚslotsc                  ó(   — e Zd ZU dZded<   ded<   dS )ÚAresQueryAResultzBA record result (compatible with pycares 4.x ares_query_a_result).ÚstrÚhostÚintÚttlN©Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__© ó    r   r   r   "   s(   € € € € € € àLÐLà€I€I�IØ€H€H�H€H€Hr"   r   c                  ó(   — e Zd ZU dZded<   ded<   dS )ÚAresQueryAAAAResultz(AAAA record result (pycares 4.x compat).r   r   r   r   Nr   r!   r"   r   r$   r$   *   s(   € € € € € € à2Ð2à€I€I�IØ€H€H�H€H€Hr"   r$   c                  ó(   — e Zd ZU dZded<   ded<   dS )ÚAresQueryCNAMEResultz)CNAME record result (pycares 4.x compat).r   Úcnamer   r   Nr   r!   r"   r   r&   r&   2   s(   € € € € € € à3Ð3à€J€J�JØ€H€H�H€H€Hr"   r&   c                  ó2   — e Zd ZU dZded<   ded<   ded<   dS )ÚAresQueryMXResultz&MX record result (pycares 4.x compat).r   r   r   Úpriorityr   Nr   r!   r"   r   r)   r)   :   s1   € € € € € € à0Ð0à€I€I�IØ€M€M�MØ€H€H�H€H€Hr"   r)   c                  ó(   — e Zd ZU dZded<   ded<   dS )ÚAresQueryNSResultz&NS record result (pycares 4.x compat).r   r   r   r   Nr   r!   r"   r   r,   r,   C   s(   € € € € € € à0Ð0à€I€I�IØ€H€H�H€H€Hr"   r,   c                  ó(   — e Zd ZU dZded<   ded<   dS )ÚAresQueryTXTResultz'TXT record result (pycares 4.x compat).r   Útextr   r   Nr   r!   r"   r   r.   r.   K   s+   € € € € € € à1Ð1àÐÐÑØ€H€H�H€H€Hr"   r.   c                  ód   — e Zd ZU dZded<   ded<   ded<   ded<   ded<   ded	<   ded
<   ded<   dS )ÚAresQuerySOAResultz'SOA record result (pycares 4.x compat).r   ÚnsnameÚ
hostmasterr   ÚserialÚrefreshÚretryÚexpiresÚminttlr   Nr   r!   r"   r   r1   r1   S   s^   € € € € € € à1Ð1à€K€K�KØ€O€O�OØ€K€K�KØ€L€L�LØ€J€J�JØ€L€L�LØ€K€K�KØ€H€H�H€H€Hr"   r1   c                  óF   — e Zd ZU dZded<   ded<   ded<   ded<   ded<   d	S )
ÚAresQuerySRVResultz'SRV record result (pycares 4.x compat).r   r   r   Úportr*   Úweightr   Nr   r!   r"   r   r:   r:   a   sC   € € € € € € à1Ð1à€I€I�IØ€I€I�IØ€M€M�MØ€K€K�KØ€H€H�H€H€Hr"   r:   c                  óZ   — e Zd ZU dZded<   ded<   ded<   ded<   ded<   ded	<   ded
<   dS )ÚAresQueryNAPTRResultz)NAPTR record result (pycares 4.x compat).r   ÚorderÚ
preferencer   ÚflagsÚserviceÚregexÚreplacementr   Nr   r!   r"   r   r>   r>   l   sX   € € € € € € à3Ð3à€J€J�JØ€O€O�OØ€J€J�JØ€L€L�LØ€J€J�JØÐÐÑØ€H€H�H€H€Hr"   r>   c                  ó<   — e Zd ZU dZded<   ded<   ded<   ded<   dS )	ÚAresQueryCAAResultz'CAA record result (pycares 4.x compat).r   Úcriticalr   ÚpropertyÚvaluer   Nr   r!   r"   r   rF   rF   y   s:   € € € € € € à1Ð1à€M€M�MØ€M€M�MØ€J€J�JØ€H€H�H€H€Hr"   rF   c                  ó2   — e Zd ZU dZded<   ded<   ded<   dS )	ÚAresQueryPTRResultz'PTR record result (pycares 4.x compat).r   Únamer   r   ú	list[str]ÚaliasesNr   r!   r"   r   rK   rK   ƒ   s6   € € € € € € à1Ð1à€I€I�IØ€H€H�HØÐÐÑÐÐr"   rK   c                  ó2   — e Zd ZU dZded<   ded<   ded<   dS )ÚAresHostResultz;Host result (compatible with pycares 4.x ares_host_result).r   rL   rM   rN   Ú	addressesNr   r!   r"   r   rP   rP   Œ   s9   € € € € € € àEÐEà€I€I�IØÐÐÑØÐÐÑÐÐr"   rP   Úrecordúpycares.DNSRecordÚConvertedRecordc           
     óø  — | j         }| j        }|t          j        k    r5t	          t          j        | j        ¦  «        }t          |j        |¬¦  «        S |t          j	        k    r5t	          t          j
        | j        ¦  «        }t          |j        |¬¦  «        S |t          j        k    r5t	          t          j        | j        ¦  «        }t          |j        |¬¦  «        S |t          j        k    r;t	          t          j        | j        ¦  «        }t%          |j        |j        |¬¦  «        S |t          j        k    r5t	          t          j        | j        ¦  «        }t/          |j        |¬¦  «        S |t          j        k    rBt	          t          j        | j        ¦  «        }t7          t9          |j        ¦  «        |¬¦  «        S |t          j        k    rYt	          t          j        | j        ¦  «        }	t?          |	j         |	j!        |	j"        |	j#        |	j$        |	j%        |	j&        |¬¦  «        S |t          j'        k    rGt	          t          j(        | j        ¦  «        }
tS          |
j*        |
j+        |
j        |
j,        |¬¦  «        S |t          j-        k    rSt	          t          j.        | j        ¦  «        }t_          |j0        |j1        |j2        |j3        |j4        |j5        |¬¦  «        S |t          j6        k    rAt	          t          j7        | j        ¦  «        }tq          |j9        |j:        |j;        |¬¦  «        S |t          j<        k    r6t	          t          j=        | j        ¦  «        }t}          |j?        |g ¬	¦  «        S | S )
z=Convert a single DNS record to pycares 4.x compatible format.)r   r   )r'   r   )r   r*   r   )r/   r   )r2   r3   r4   r5   r6   r7   r8   r   )r   r;   r*   r<   r   )r?   r@   rA   rB   rC   rD   r   )rG   rH   rI   r   )rL   r   rN   )@r   ÚtypeÚpycaresÚQUERY_TYPE_Ar   ÚARecordDatar	   r   ÚaddrÚQUERY_TYPE_AAAAÚAAAARecordDatar$   ÚQUERY_TYPE_CNAMEÚCNAMERecordDatar&   r'   ÚQUERY_TYPE_MXÚMXRecordDatar)   Úexchanger*   ÚQUERY_TYPE_NSÚNSRecordDatar,   ÚnsdnameÚQUERY_TYPE_TXTÚTXTRecordDatar.   r   ÚQUERY_TYPE_SOAÚSOARecordDatar1   ÚmnameÚrnamer4   r5   r6   ÚexpireÚminimumÚQUERY_TYPE_SRVÚSRVRecordDatar:   Útargetr;   r<   ÚQUERY_TYPE_NAPTRÚNAPTRRecordDatar>   r?   r@   rA   rB   ÚregexprD   ÚQUERY_TYPE_CAAÚCAARecordDatarF   rG   ÚtagrI   ÚQUERY_TYPE_PTRÚPTRRecordDatarK   Údname)rR   r   Úrecord_typeÚa_dataÚ	aaaa_dataÚ
cname_dataÚmx_dataÚns_dataÚtxt_dataÚsoa_dataÚsrv_dataÚ
naptr_dataÚcaa_dataÚptr_datas                 r   Ú_convert_recordr…   ¶   s  € à
Œ*€CØ”+€Kà•gÔ*Ò*Ð*Ý•gÔ)¨6¬;Ñ7Ô7ˆÝ V¤[°cÐ:Ñ:Ô:Ð:Ø•gÔ-Ò-Ð-Ý�Ô/°´Ñ=Ô=ˆ	Ý"¨	¬¸CÐ@Ñ@Ô@Ð@Ø•gÔ.Ò.Ð.Ý�'Ô1°6´;Ñ?Ô?ˆ
Ý#¨*Ô*:ÀÐDÑDÔDÐDØ•gÔ+Ò+Ð+Ý•wÔ+¨V¬[Ñ9Ô9ˆÝ ØÔ!¨GÔ,<À#ð
ñ 
ô 
ð 	
ð •gÔ+Ò+Ð+Ý•wÔ+¨V¬[Ñ9Ô9ˆÝ  g¤o¸3Ð?Ñ?Ô?Ð?Ø•gÔ,Ò,Ð,Ý�Ô-¨v¬{Ñ;Ô;ˆÝ!¥z°(´-Ñ'@Ô'@ÀcÐJÑJÔJÐJØ•gÔ,Ò,Ð,Ý�Ô-¨v¬{Ñ;Ô;ˆÝ!Ø”>Ø”~Ø”?ØÔ$Ø”.Ø”OØÔ#Øð	
ñ 	
ô 	
ð 		
ð •gÔ,Ò,Ð,Ý�Ô-¨v¬{Ñ;Ô;ˆÝ!Ø”Ø”ØÔ&Ø”?Øð
ñ 
ô 
ð 	
ð •gÔ.Ò.Ð.Ý�'Ô1°6´;Ñ?Ô?ˆ
Ý#ØÔ"Ø!Ô,ØÔ"ØÔ&ØÔ#Ø"Ô.Øð
ñ 
ô 
ð 	
ð •gÔ,Ò,Ð,Ý�Ô-¨v¬{Ñ;Ô;ˆÝ!ØÔ&Ø”\Ø”.Øð	
ñ 
ô 
ð 	
ð •gÔ,Ò,Ð,Ý�Ô-¨v¬{Ñ;Ô;ˆÝ! x¤~¸3ÈÐKÑKÔKÐKà€Mr"   Ú
dns_resultúpycares.DNSResultÚqtyper   ÚQueryResultc                ó¨  — |t           j        k    rd„ | j        D ¦   «         S g }| j        D ]T}|j        }||k    rŒt	          |¦  «        }|t
          v rt          t          |¦  «        c S |                     |¦  «         ŒU|sPt          j
        t           j        j        t           j                             t           j        j        ¦  «        ¦  «        ‚|S )z?Convert pycares 5.x DNSResult to pycares 4.x compatible format.c                ó,   — g | ]}t          |¦  «        ‘ŒS r!   )r…   )Ú.0rR   s     r   ú
<listcomp>z"convert_result.<locals>.<listcomp>  s    € ÐHÐHÐH¨F• Ñ'Ô'ÐHÐHÐHr"   )rW   ÚQUERY_TYPE_ANYÚanswerrV   r…   Ú_SINGLE_RESULT_QTYPESr   r‰   Úappendr   ÚDNSErrorÚerrnoÚARES_ENODATAÚstrerror)r†   rˆ   ÚresultsrR   ry   Ú	converteds         r   Úconvert_resultr˜   þ   sâ   € ð •Ô&Ò&Ð&ØHÐH°jÔ6GÐHÑHÔHÐHà%'€GàÔ#ð "ð "ˆØ”kˆð ˜%ÒÐØå# FÑ+Ô+ˆ	ð Õ/Ð/Ð/Ý� YÑ/Ô/Ð/Ð/Ð/à�Š�yÑ!Ô!Ð!Ð!ð ð 
ÝŒnÝŒMÔ&ÝŒM×"Ò"¥7¤=Ô#=Ñ>Ô>ñ
ô 
ð 	
ð
 €Nr"   )r	   r
   r   r   )rR   rS   r   rT   )r†   r‡   rˆ   r   r   r‰   )#r   Ú
__future__r   Údataclassesr   Útypingr   r   rW   Ú r   Ú	frozensetr]   rg   rv   r�   r   r   r$   r&   r)   r,   r.   r1   r:   r>   rF   rK   rP   Ú	DNSRecordrT   Úlistr‰   r…   r˜   r!   r"   r   ú<module>r       s®  ððð ð #Ð "Ð "Ð "Ð "Ð "à !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ð Ð à €€€à Ð Ð Ð Ð Ð à!˜	àÔ ØÔØÔðñô Ð ðð ð ð ð €�$˜dÐ#Ñ#Ô#ðð ð ð ð ñ ô ñ $Ô#ðð €�$˜dÐ#Ñ#Ô#ðð ð ð ð ñ ô ñ $Ô#ðð €�$˜dÐ#Ñ#Ô#ðð ð ð ð ñ ô ñ $Ô#ðð €�$˜dÐ#Ñ#Ô#ðð ð ð ð ñ ô ñ $Ô#ðð €�$˜dÐ#Ñ#Ô#ðð ð ð ð ñ ô ñ $Ô#ðð €�$˜dÐ#Ñ#Ô#ðð ð ð ð ñ ô ñ $Ô#ðð €�$˜dÐ#Ñ#Ô#ð
ð 
ð 
ð 
ð 
ñ 
ô 
ñ $Ô#ð
ð €�$˜dÐ#Ñ#Ô#ðð ð ð ð ñ ô ñ $Ô#ðð €�$˜dÐ#Ñ#Ô#ð	ð 	ð 	ð 	ð 	ñ 	ô 	ñ $Ô#ð	ð €�$˜dÐ#Ñ#Ô#ðð ð ð ð ñ ô ñ $Ô#ðð €�$˜dÐ#Ñ#Ô#ðð ð ð ð ñ ô ñ $Ô#ðð €�$˜dÐ#Ñ#Ô#ðð ð ð ð ñ ô ñ $Ô#ðð ØØØØØØØØØØØØÔðô€ð  ØÐ	ÔØÐ	ÔØØÐ	ÔØÐ	ÔØÐ	ÔØØÐ	ÔØÐ	ÔØÐ	ÔØØˆÔðô€ð Eð Eð Eð EðP"ð "ð "ð "ð "ð "r"   