Ë
    ´Œj^>  ã                   ó�   — U d dl Z d dlmZ d dlmZmZmZmZmZ er
d dl	m
Z
mZmZ h d£Zee   ed<    G d„ de«      Z G d	„ d
«      Zy)é    N)Úplatform)ÚTYPE_CHECKINGÚAnyÚOptionalÚ	TypedDictÚUnion)ÚBrowserÚ
CDPSessionÚPage>   ú::markerÚbrÚsvgÚbodyÚheadÚhtmlÚmetaÚpathÚstyleÚtitleÚiframeÚscriptÚblack_listed_elementsc                   óˆ   — e Zd ZU dZeed<   eed<   ee   ed<   ee   ed<   ee   ed<   e	ed<   eed<   eed	<   eed
<   eed<   y)ÚElementInViewPortzIA typed dictionary containing information about elements in the viewport.Ú
node_indexÚbackend_node_idÚ	node_nameÚ
node_valueÚ	node_metaÚis_clickableÚorigin_xÚorigin_yÚcenter_xÚcenter_yN)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚ__annotations__Úintr   ÚlistÚbool© ó    úi/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain/chains/natbot/crawler.pyr   r      sH   … ÙSàƒOØÓØ˜‰}ÓØ˜‘ÓØ�C‰yÓØÓØƒMØƒMØƒMØ„Mr/   r   c                   óŠ   — e Zd ZdZdd„Zdeddfd„Zdeddfd„Zd	eee	f   ddfd
„Z
d	eee	f   deddfd„Zdd„Zdee   fd„Zy)ÚCrawlera   A crawler for web pages.

    **Security Note**: This is an implementation of a crawler that uses a browser via
        Playwright.

        This crawler can be used to load arbitrary webpages INCLUDING content
        from the local file system.

        Control access to who can submit crawling requests and what network access
        the crawler has.

        Make sure to scope permissions to the minimal permissions necessary for
        the application.

        See https://python.langchain.com/docs/security for more information.
    ÚreturnNc                 ó:  — 	 ddl m}  |«       j                  «       j                  j                  d¬«      | _        | j                  j                  «       | _        | j                  j                  dddœ«       |  |  y # t        $ r}d}t        |«      |‚d }~ww xY w)	Nr   )Úsync_playwrightz\Could not import playwright python package. Please install it with `pip install playwright`.F)Úheadlessi   i8  )ÚwidthÚheight)
Úplaywright.sync_apir5   ÚImportErrorÚstartÚchromiumÚlaunchÚbrowserÚnew_pageÚpageÚset_viewport_size)Úselfr5   ÚeÚmsgs       r0   Ú__init__zCrawler.__init__?   s•   € ð	*Ý;ñ Ó×#Ñ#Ó%×.Ñ.×5Ñ5¸uÐ5ÓEð 	Œð Ÿ,™,×/Ñ/Ó1ˆŒ	Ø�	‰	×#Ñ#¨d¸dÑ$CÔDÙÚøô ò 	*ðCð ô ˜cÓ"¨Ð)ûð	*ús   ‚A> Á>	BÂBÂBÚurlc                 óÄ   — | j                   j                  d|v r|nd|z   ¬«       | j                   j                  j                  | j                   «      | _        i | _        y )Nz://zhttp://)rF   )r@   ÚgotoÚcontextÚnew_cdp_sessionÚclientÚpage_element_buffer)rB   rF   s     r0   Ú
go_to_pagezCrawler.go_to_pageP   sH   € Ø�	‰	�‰ %¨3¡,™3°IÀ±OˆÔDØ—i‘i×'Ñ'×7Ñ7¸¿	¹	ÓBˆŒØ#%ˆÕ r/   Ú	directionc                 óˆ   — |dk(  r| j                   j                  d«       y |dk(  r| j                   j                  d«       y y )NÚupz…(document.scrollingElement || document.body).scrollTop = (document.scrollingElement || document.body).scrollTop - window.innerHeight;Údownz…(document.scrollingElement || document.body).scrollTop = (document.scrollingElement || document.body).scrollTop + window.innerHeight;)r@   Úevaluate)rB   rN   s     r0   ÚscrollzCrawler.scrollU   sI   € Ø˜ÒØ�I‰I×Ñð Xõð ˜&Ò Ø�I‰I×Ñð Xõð !r/   Úid_c                 ó  — d}| j                   j                  |«       | j                  j                  t	        |«      «      }|r1|d   }|d   }| j                   j
                  j                  ||«       y t        d«       y )Nz‡
		links = document.getElementsByTagName("a");
		for (var i = 0; i < links.length; i++) {
			links[i].removeAttribute("target");
		}
		r#   r$   zCould not find element)r@   rR   rL   Úgetr+   ÚmouseÚclickÚprint)rB   rT   ÚjsÚelementÚxÚys         r0   rX   zCrawler.click_   so   € ðˆð 	�	‰	×Ñ˜2Ôà×*Ñ*×.Ñ.¬s°3«xÓ8ˆÙØ˜zÑ*ˆAØ˜zÑ*ˆAà�I‰I�O‰O×!Ñ! ! QÕ'äÐ*Õ+r/   Útextc                 óp   — | j                  |«       | j                  j                  j                  |«       y )N)rX   r@   ÚkeyboardÚtype)rB   rT   r^   s      r0   ra   zCrawler.typer   s%   € Ø�
‰
�3ŒØ�	‰	×Ñ×Ñ Õ%r/   c                 óN   — | j                   j                  j                  d«       y )NÚEnter)r@   r`   Úpress)rB   s    r0   ÚenterzCrawler.enterv   s   € Ø�	‰	×Ñ× Ñ  Õ)r/   c                 ó  ‡K‡L‡M‡N— | j                   }| j                  }t        j                  «       }g }|j                  d«      }t        dk(  r|dk(  rd}|j                  d«      }|j                  d«      }|j                  d«      }|j                  d«      }	||z   }
||	z   }d}d}|j                  d	d	d
|d›d|d›d�dœ«       | j                  j                  dg dddœ«      }|d   ŠN|d   d	   }|d   }|d   }|d   }|d   }|d   ŠM|d   ŠLt        |d   d   «      }|d   }|d   }|d   }|d   }|d   }|d    }d	}i }g }d!d"i}d!d"i}d#t        t           d$t        t           d%t        fd&„} dt        t        t        f   d't        t           d%t        t        t        f   fˆNfd(„}!d)t        t        t         t        t        t           f   f   d*t        d+t        d#t        t           d,t        d%t         t        t        t           f   fˆKˆLˆMˆNfd-„ŠKt#        ‰L«      D �]2  \  }"}#‰M|"   }$‰N|#   j%                  «       }% ‰K|d.|"|%|$«      \  }&}' ‰K|d/|"|%|$«      \  }(})	 |j'                  |"«      }|%t*        v rŒX||   \  }*}+},}-|*|z  }*|+|z  }+|,|z  },|-|z  }-|*}.|+}/|*|,z   }0|+|-z   }1|.|
k  xr |0|k\  xr |/|k  xr |1|k\  }2|2sŒ¡g }3 |!||"   g d0¢«      }4|&xs |(}5|5sd n|&rt        |'«      n
t        |)«      }6|5sd n|j-                  t        |6«      g «      }7|%d1k(  r'|5r%|7r#‰N||"      }8|8d2v r�Œ	|7j                  d3|8d4œ«       nj|%d5k(  r|4j/                  d3«      d6k(  s|%d/k(  rd/}%|4j1                  d3d «       |4D ]3  }9|5r|7r|7j                  d7|9|4|9   d8œ«       Œ |3j                  |4|9   «       Œ5 d }:||"   d	k\  r‰N||"      }:|:d9k(  r2�Œ¡|%d5k(  r+|"|v r'|:€%|j'                  |"«      };||;   }<|;d	k\  r
|<d	k\  r‰N|<   }:|5r|%d:vr�ŒÙ|j                  t        |"«      ||"   |%|:|3|"|v t        |*«      t        |+«      t        |*|,dz  z   «      t        |+|-dz  z   «      d;œ
«       �Œ5 g }=d	}>|D �]o  }?|?j/                  d<«      }@|?j/                  d#«      }%|?j/                  d=«      }:|?j/                  d>«      }A|?j/                  d?«      }B|:r|:› d@�ndA}CdA}D@|v rd|@   D ]\  }E|Ej/                  d3«      }F|Ej/                  d«      }G|Fd7k(  r+Br)Ej/                  dB«      }HBj                  |H› dCG› dD�«       ŒUCG› d@�z  }CŒ^ Brd@j3                  B«      }Id@|I› �}DCdAk7  rCj5                  «       › }C | |%A«      }J|Jd/k7  sDdAk(  rJdEvrCj5                  «       dAk(  r�Œ&|?||><   CdAk7  r!|=j                  dFJ› dG|>› D› dHC› dI|J› dH�
«       n|=j                  dFJ› dG|>› D› dJ�«       |>dz  }>�Œr t7        dKt        j                  «       |z
  d›dL�«       |=S # t(        $ r Y �Œâw xY w)MNzwindow.devicePixelRatioÚdarwiné   é   zwindow.pageYOffsetzwindow.pageXOffsetzwindow.screen.widthzwindow.screen.heightr   z[scrollbar z0.2fÚ-z%])r\   r]   r^   zDOMSnapshot.captureSnapshotT)ÚcomputedStylesÚincludeDOMRectsÚincludePaintOrderÚstringsÚ	documentsÚnodesÚbackendNodeIdÚ
attributesÚ	nodeValueÚparentIndexÚnodeNameÚisClickableÚindexÚ
inputValueÚvalueÚlayoutÚ	nodeIndexÚboundsz-1©FNr   Úhas_click_handlerr3   c                 ó8   — | dk(  ry| dk(  ry| dk(  ry| dk(  s|ryy)NÚaÚlinkÚinputÚimgÚbuttonr^   r.   )r   r~   s     r0   Úconvert_namez#Crawler.crawl.<locals>.convert_name¸   s6   € ð ˜CÒØØ˜GÒ#ØØ˜EÒ!Øà˜XÒ%Ñ):àØr/   Úkeysc                 ó¨   •— i }t        t        | «      fdz  Ž D ]6  \  }}|dk  rŒ‰|   }‰|   }||v sŒ|||<   |j                  |«       |rŒ4|c S  |S )Nri   r   )ÚzipÚiterÚremove)rr   r†   ÚvaluesÚ	key_indexÚvalue_indexÚkeyry   rn   s          €r0   Úfind_attributesz&Crawler.crawl.<locals>.find_attributesÈ   su   ø€ ð ˆFä,/´$°zÓ2BÐ1DÀqÑ1HÓ,IÑ(�˜KØ ’?ØØ˜iÑ(�Ø Ñ,�à˜$’;Ø"'�F˜3‘KØ—K‘K Ô$âØ%šð -Jð ˆMr/   Ú	hash_treeÚtagÚnode_idÚ	parent_idc                 óÆ   •— t        |«      }|| vr'‰‰|      j                  «       }‰|   } ‰| ||||«       | |   \  }}	||k(  rd|f}
n	|rd|	f}
nd}
|
| t        |«      <   |
S )NTr}   )r)   Úlower)r�   r‘   r’   r   r“   Úparent_id_strÚparent_nameÚgrand_parent_idÚis_parent_desc_anchorÚ	anchor_idry   Úadd_to_hash_treeÚ
node_namesÚparentrn   s              €€€€r0   r›   z'Crawler.crawl.<locals>.add_to_hash_treeÜ   s™   ø€ ô   	›NˆMØ IÑ-Ø% j°Ñ&;Ñ<×BÑBÓD�Ø"(¨Ñ"3�á Ø˜s I¨{¸Oôð 09¸Ñ/GÑ,Ð! 9ð ˜CÒØ59¸7°O‘á%à˜yÐ)‘ð�ð ',ˆI”c˜'“lÑ#àˆLr/   r€   r„   )ra   Úplaceholderz
aria-labelr   Úaltz#text>   õ   â€¢Ú|ra   )ra   ry   r‚   ÚsubmitÚ	attribute)ra   rŽ   ry   r¡   >   r€   r„   )
r   r   r   r   r   r    r!   r"   r#   r$   r   r   r    r   Ú Ú rŽ   z="Ú">   rƒ   r�   r‚   ÚtextareaÚ<z id=Ú>z</z/>zParsing time: z seconds)r@   rL   ÚtimerR   r   ÚappendrK   ÚsendÚsetr   r)   r-   Údictr+   r   r,   ÚtupleÚ	enumerater•   rw   Ú
ValueErrorr   Ú
setdefaultrV   ÚpopÚjoinÚstriprY   )OrB   r@   rL   r;   Úpage_state_as_textÚdevice_pixel_ratioÚwin_upper_boundÚwin_left_boundÚ	win_widthÚ
win_heightÚwin_right_boundÚwin_lower_boundÚpercentage_progress_startÚpercentage_progress_endÚtreeÚdocumentrp   r   rr   r   r    Úinput_valueÚinput_value_indexÚinput_value_valuesrz   Úlayout_node_indexr|   ÚcursorÚchild_nodesÚelements_in_view_portÚanchor_ancestryÚbutton_ancestryr…   r�   rw   Únode_name_indexÚnode_parentr   Úis_ancestor_of_anchorrš   Úis_ancestor_of_buttonÚ	button_idr\   r]   r7   r8   Úelem_left_boundÚelem_top_boundÚelem_right_boundÚelem_lower_boundÚpartially_is_in_viewportÚ	meta_dataÚelement_attributesÚancestor_exceptionÚancestor_node_keyÚancestor_noder^   rŽ   Úelement_node_valueÚnode_input_text_indexÚ
text_indexÚelements_of_interestÚ
id_counterr[   r   Únode_is_clickableÚnode_meta_dataÚ
inner_textr   ÚchildÚ
entry_typeÚentry_valueÚ	entry_keyÚmeta_stringÚconverted_node_namer›   rœ   r�   rn   sO                                                                              @@@@r0   ÚcrawlzCrawler.crawly   s  û€ Ø�y‰yˆØ"×6Ñ6ÐÜ—	‘	“ˆàÐà$(§M¡MÐ2KÓ$LÐÜ�xÒÐ$6¸!Ò$;Ø!"Ðà!%§¡Ð/CÓ!DˆØ $§¡Ð.BÓ CˆØŸ=™=Ð)>Ó?ˆ	Ø ŸM™MÐ*@ÓAˆ
Ø!/°)Ñ!;ˆØ!0°:Ñ!=ˆð %&Ð!Ø"#Ðà×!Ñ!àØØ%Ð&?ÀÐ%EÀQÐG^Ð_cÐFdÐdfÐgñô	
ð �{‰{×ÑØ)Ø!°dÐQUÑVó
ˆð #' y¡/ˆØ#'¨Ñ#4°QÑ#7ˆØ (¨Ñ 1ˆØ*/°Ñ*@ˆØ05°lÑ0Cˆ
Ø%*¨;Ñ%7ˆ
Ø!& }Ñ!5ˆØ%*¨:Ñ%6ˆ
Ü!$ U¨=Ñ%9¸'Ñ%BÓ!Cˆà&+¨LÑ&9ˆØ'2°7Ñ';ÐØ(3°GÑ(<Ðà!)¨(Ñ!3ˆØ'-¨kÑ':ÐØ)/°Ñ)9ˆàˆà79ˆØ9;ÐàBFÈÐAVˆØBFÈÐAVˆð	Ü¤‘}ð	ä'¬™~ð	ô ó	ð 	ÜœS¤#˜X™ð	Ü.2´3©ið	ä”#”s�(‰^õ	ð($	ÜœC¤¤t¬X´c©]Ð':Ñ!;Ð;Ñ<ð$	äð$	ô ð$	ô  ¤‘}ð	$	ô
 ð$	ô ”4œ¤#™Ð&Ñ'÷$	ð $	ôL '0°
×&;Ñ"ˆE�?Ø  ™-ˆKØ'.¨Ñ'?×'EÑ'EÓ'GˆIá/?Ø  e¨Y¸ó0Ñ,Ð! 9ñ 0@Ø ¨5°)¸[ó0Ñ,Ð! 9ðØ*×0Ñ0°Ó7�ð Ô1Ñ1Øà$*¨6¡NÑ!ˆQ��5˜&ØÐ#Ñ#ˆAØÐ#Ñ#ˆAØÐ'Ñ'ˆEØÐ(Ñ(ˆFàˆOØˆNØ  5™yÐØ  6™zÐð   /Ñ1ò 8Ø$¨Ñ6ò8à" _Ñ4ò8ð %¨Ñ7ð	 %ñ ,Øà#%ˆIñ "1Ø˜5Ñ!Ò#Xó"Ðð "7Ò!OÐ:OÐñ *ñ ñ )ô ˜”^ä˜“^ð ñ *ñ à ×+Ñ+¬CÐ0AÓ,BÀBÓGð ð ˜GÒ#Ñ(:¹}Ø˜z¨%Ñ0Ñ1�Ø˜<Ñ'ÙØ×$Ñ$¨f¸tÑ%DÕEð  Ò(Ð-?×-CÑ-CÀFÓ-KÈxÒ-WØ (Ò*Ø (�IØ&×*Ñ*Ø ôó .�CÙ)©mØ%×,Ñ,à(3Ø'*Ø);¸CÑ)@ñõð "×(Ñ(Ð);¸CÑ)@ÕAð .ð "&Ðà˜%Ñ  AÒ%Ø%,¨Z¸Ñ->Ñ%?Ð"à&¨#Ò-ñ à˜WÒ$ØÐ.Ñ.Ø&Ð.à(9×(?Ñ(?ÀÓ(FÐ%Ø/Ð0EÑF�
Ø(¨AÒ-°*À²/Ø)0°Ñ)<Ð&ñ " y¸Ñ'GÙà!×(Ñ(ä"% e£*Ø'6°uÑ'=Ø!*Ø"4Ø!*Ø$)¨\Ð$9Ü # A£Ü # A£Ü # A¨°©¡OÓ 4Ü # A¨°!©Ñ$4Ó 5ñöðg '<ðH  "ÐØˆ
ä,ˆGØ Ÿ™ \Ó2ˆJØŸ™ KÓ0ˆIØ!(§¡¨\Ó!:ÐØ '§¡¨NÓ ;ÐØ29·+±+¸kÓ2JˆNá5GÐ.Ð/¨qÑ1ÈRˆJØˆDà˜[Ñ(Ø(¨Ô4�EØ!&§¡¨6Ó!2�JØ"'§)¡)¨GÓ"4�Kà! [Ò0±^Ø$)§I¡I¨eÓ$4˜	Ø&×-Ñ-°°¸2¸k¸]È!Ð.LÕMà"¨¨°QÐ&7Ñ7™
ð 5ñ Ø!Ÿh™h ~Ó6�Ø˜;˜-Ð(�à˜RÒØ *× 0Ñ 0Ó 2Ð3�
á".¨yÐ:KÓ"LÐð %¨Ò0°D¸B²JØ'Ð/SÑSØ×"Ñ"Ó$¨Ò*Ùà.5Ð 
Ñ+à˜RÒØ$×+Ñ+ØÐ-Ð.¨d°:°,¸t¸fÀAÀjÀ\ÐQSÐTgÐShÐhiÐlõð %×+Ñ+ØÐ-Ð.¨d°:°,¸t¸fÀBÐIôð ˜!‰OŠJð_ -ôb 	�œtŸy™y›{¨UÑ2°4Ð8¸ÐAÔBØ#Ð#øôS ò Úðús   ÉW3×3	X ×?X )r3   N)r%   r&   r'   r(   rE   r)   rM   rS   r   r+   rX   ra   re   r,   rè   r.   r/   r0   r2   r2   -   s†   „ ñó" ð"&˜cð & dó &ð
 ð ¨ó ð,˜˜s C˜x™ð ,¨Tó ,ð&&˜˜c 3˜h™ð &¨sð &°tó &ó*ðB$�t˜C‘yô B$r/   r2   )rª   Úsysr   Útypingr   r   r   r   r   r9   r	   r
   r   r   r­   r)   r*   r   r2   r.   r/   r0   Ú<module>rë      sK   ðÜ Ý ÷õ ñ ß=Ñ=ò#Ð �s˜3‘xó ô ˜	ô ÷N$ò N$r/   