§
    ZŠtj-  ã                   ót   — d dl Z d dlmZ d dlmZ d dlmZ d dlmZm	Z	 d dl
mZ  G d„ dej        ¦  «        ZdS )	é    N)Útrace)ÚContext)Útextmap)Úformat_span_idÚformat_trace_id)Ú
TraceStatec            	       ó  — e Zd ZdZdZdZdZ ej        e¦  «        Z	de
j        fde
j        dedz  de
j        e
j                 d	efd
„Zde
j        fde
j        dedz  de
j        e
j                 d	dfd„Zed	ee         fd„¦   «         ZdS )ÚTraceContextTextMapPropagatorz6Extracts and injects using w3c TraceContext's headers.ÚtraceparentÚ
tracestatezK^[ 	]*([0-9a-f]{2})-([0-9a-f]{32})-([0-9a-f]{16})-([0-9a-f]{2})(-.*)?[ 	]*$NÚcarrierÚcontextÚgetterÚreturnc                 ó  — |€t          ¦   «         }|                     || j        ¦  «        }|s|S t          j        | j        |d         ¦  «        }|s|S |                     d¦  «        }|                     d¦  «        }|                     d¦  «        }|                     d¦  «        }	|dk    s|dk    r|S |d	k    r|                     d
¦  «        r|S |dk    r|S |                     || j        ¦  «        }
|
€d}nt          j	        |
¦  «        }t          j        t          |d¦  «        t          |d¦  «        dt          j        t          |	d¦  «        ¦  «        |¬¦  «        }t          j        t          j        |¦  «        |¦  «        S )zzExtracts SpanContext from the carrier.

        See `opentelemetry.propagators.textmap.TextMapPropagator.extract`
        Nr   é   é   é   é   Ú 00000000000000000000000000000000Ú0000000000000000Ú00é   Úffé   T)Útrace_idÚspan_idÚ	is_remoteÚtrace_flagsÚtrace_state)r   ÚgetÚ_TRACEPARENT_HEADER_NAMEÚreÚsearchÚ_TRACEPARENT_HEADER_FORMAT_REÚgroupÚ_TRACESTATE_HEADER_NAMEr   Úfrom_headerr   ÚSpanContextÚintÚ
TraceFlagsÚset_span_in_contextÚNonRecordingSpan)Úselfr   r   r   ÚheaderÚmatchÚversionr   r   r   Útracestate_headersr   Úspan_contexts                új/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/opentelemetry/trace/propagation/tracecontext.pyÚextractz%TraceContextTextMapPropagator.extract   s‰  € ð ˆ?Ý‘i”iˆGà—’˜G TÔ%BÑCÔCˆàð 	ØˆNå”	˜$Ô<¸fÀQ¼iÑHÔHˆØð 	ØˆNà—{’{ 1‘~”~ˆØŸš A™œˆØ—{’{ 1‘~”~ˆØ Ÿ;š; q™>œ>ˆà�xÒÐ 7¨hÒ#6Ð#6ØˆNà�dŠ?ˆ?Ø�{Š{˜1‰~Œ~ð Ø�Ø�dŠ?ˆ?ØˆNà#ŸZšZ¨°Ô1MÑNÔNÐØÐ%ØˆJˆJå#Ô/Ð0BÑCÔCˆJåÔ(Ý˜ 2Ñ&Ô&Ý˜ Ñ$Ô$ØÝÔ(­¨[¸"Ñ)=Ô)=Ñ>Ô>Ø"ð
ñ 
ô 
ˆõ Ô(ÝÔ" <Ñ0Ô0°'ñ
ô 
ð 	
ó    Úsetterc                 ó˜  — t          j        |¦  «        }|                     ¦   «         }|t           j        k    rdS dt	          |j        ¦  «        › dt          |j        ¦  «        › d|j        d›�}| 	                    || j
        |¦  «         |j        r7|j                             ¦   «         }| 	                    || j        |¦  «         dS dS )zxInjects SpanContext into the carrier.

        See `opentelemetry.propagators.textmap.TextMapPropagator.inject`
        Nz00-ú-Ú02x)r   Úget_current_spanÚget_span_contextÚINVALID_SPAN_CONTEXTr   r   r   r   r   Úsetr"   r    Ú	to_headerr'   )r.   r   r   r7   Úspanr3   Útraceparent_stringÚtracestate_strings           r4   Úinjectz$TraceContextTextMapPropagator.injectM   sÿ   € õ Ô% gÑ.Ô.ˆØ×,Ò,Ñ.Ô.ˆØ�5Ô5Ò5Ð5ØˆFð R¥?°<Ô3HÑ#IÔ#Ið  Rð  RÍNÐ[gÔ[oÑLpÔLpð  Rð  RÐsô  tLð  Rð  Rð  RÐØ�
Š
�7˜DÔ9Ð;MÑNÔNÐNØÔ#ð 	Ø ,Ô 8× BÒ BÑ DÔ DÐØ�JŠJØ˜Ô5Ð7Hñô ð ð ð ð	ð 	r6   c                 ó   — | j         | j        hS )z‰Returns a set with the fields set in `inject`.

        See
        `opentelemetry.propagators.textmap.TextMapPropagator.fields`
        )r"   r'   )r.   s    r4   Úfieldsz$TraceContextTextMapPropagator.fieldsc   s   € ð Ô-¨tÔ/KÐLÐLr6   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r"   r'   Ú_TRACEPARENT_HEADER_FORMATr#   Úcompiler%   r   Údefault_getterÚCarrierTr   ÚGetterr5   Údefault_setterÚSetterrC   Úpropertyr>   ÚstrrE   © r6   r4   r
   r
      s.  € € € € € Ø@Ð@à,ÐØ*Ðð	ð ð %/ B¤JÐ/IÑ$JÔ$JÐ!ð
 #'Ø3:Ô3Ið	3
ð 3
àÔ!ð3
ð ˜4‘ð3
ð ”˜wÔ/Ô0ð	3
ð
 
ð3
ð 3
ð 3
ð 3
ðp #'Ø3:Ô3Ið	ð àÔ!ðð ˜4‘ðð ”˜wÔ/Ô0ð	ð
 
ðð ð ð ð, ðM˜˜Cœð Mð Mð Mñ „XðMð Mð Mr6   r
   )r#   Úopentelemetryr   Úopentelemetry.context.contextr   Úopentelemetry.propagatorsr   Úopentelemetry.tracer   r   Úopentelemetry.trace.spanr   ÚTextMapPropagatorr
   rS   r6   r4   ú<module>rZ      s»   ðð 
€	€	€	à Ð Ð Ð Ð Ð Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø -Ð -Ð -Ð -Ð -Ð -Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø /Ð /Ð /Ð /Ð /Ð /ð]Mð ]Mð ]Mð ]Mð ]M GÔ$=ñ ]Mô ]Mð ]Mð ]Mð ]Mr6   