+
    }i                     b    ^ RI HtHtHtHt R R ltR R lt0 RmtR R ltR R	 lt	R
 R lt
R# )    )AnyDictIterableOptionalc                h    V ^8  d   QhR\         \        \        3,          R\        \        ,          /#    headersreturn)r   strr   )formats   "l/Users/ahmad/.openclaw/workspace/my-crawler/.venv/lib/python3.14/site-packages/browserforge/headers/utils.py__annotate__r      s*     B BDcN Bx} B    c                V    V P                  R4      ;'       g    V P                  R4      # )z7
Retrieves the User-Agent from the headers dictionary.
z
User-Agentz
user-agent)get)r
   s   &r   get_user_agentr      s$     ;;|$AAL(AAr   c                F    V ^8  d   QhR\         R\        \         ,          /# )r	   
user_agentr   )r   r   )r   s   "r   r   r      s      C HSM r   c                  a  \         ;QJ d    V 3R lR 4       F  '       g   K   RM	  RM! V 3R lR 4       4      '       d   R# \         ;QJ d    V 3R lR 4       F  '       g   K   RM	  RM! V 3R lR 4       4      '       d   R# RS 9   d   R# \         ;QJ d    V 3R	 lR 4       F  '       g   K   RM	  RM! V 3R	 lR 4       4      '       d   R
# R# )z9
Determines the browser name from the User-Agent string.
c              3   ,   <"   T F	  qS9   x  K  	  R # 5iN .0aliasr   s   & r   	<genexpr>get_browser.<locals>.<genexpr>   s     
A,@5J,@   TFfirefoxc              3   ,   <"   T F	  qS9   x  K  	  R # 5ir   r   r   s   & r   r   r      s     B.AUj .Ar   chromeSafarisafaric              3   ,   <"   T F	  qS9   x  K  	  R # 5ir   r   r   s   & r   r   r      s     P.OUj .Or   edgeN)FirefoxFxiOS)ChromeCriOS)EdgeEdgAEdgEdgiOS)any)r   s   fr   get_browserr0      s     s
A,@
Asss
A,@
AAA	B.ABB.AB	B	B	Z		P.OPP.OP	P	Pr   c                0    V ^8  d   QhR\         R\         /# )r	   namer   )r   )r   s   "r   r   r      s      C C r   c                     V P                  R 4      '       g   V P                  R4      '       d   V # V \        9   d   V P                  4       # V P                  4       # ):z	sec-ch-ua)
startswithPASCALIZE_UPPERuppertitle)r2   s   &r   	pascalizer9      sD    st{;;zz|::<r   c                t    V ^8  d   QhR\         \        \        3,          R\         \        \        3,          /# r   )r   r   )r   s   "r   r   r   '   s.     E EtCH~ E$sCx. Er   c                 j    V P                  4        UUu/ uF  w  r\        V4      VbK  	  upp# u uppi r   )itemsr9   )r
   keyvalues   &  r   pascalize_headersr?   '   s+    4;MMODOjcIcNE!ODDDs   /c                $    V ^8  d   QhR\         /# )r	   obj)r   )r   s   "r   r   r   +   s       r   c                 l    \        V \        4      '       d   \        V \        4      '       d   V f   V # V 3# r   )
isinstancer   r   )rA   s   &r   tuplifyrD   +   s+    3!!*S#*>*>3;
6Mr   N>   dntectrtt)typingr   r   r   r   r   r0   r6   r9   r?   rD   r   r   r   <module>rI      s-    0 0B (Er   