§
    «}Åjök  ã                   ó2  — U d dl Z d dlZd dlZd dlZ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mZmZmZmZ d dlmZmZ d dlmZ d dlmZmZ d	efd
„Zi 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 ed¦  «        “d ed¦  «        “d ed ¦  «        “d! ed"¦  «        “d# ed$¦  «        “d% ed&¦  «        “d' ed(¦  «        “d) ed*¦  «        “d+ ed,¦  «        “ ed-¦  «         ed.¦  «         ed/¦  «        d0œ¥Zeeef         ed1<    G d2„ d3¦  «        Zi dd4“dd4“dd4“dd4“d5d4“dd4“dd4“dd4“dd4“d!d4“d#d4“d%d4“d'd4“d)d4“d+d4“d6d4“d7d4“d4d4d8œ¥ZdS )9é    N)ÚCallable)Údeepcopy)ÚPath)ÚDictÚListÚUnionÚAnyÚTupleÚOptional)Ú	async_apiÚsync_api)ÚCaseInsensitiveDict)ÚAsyncWrappingContextManagerÚSyncWrappingContextManagerÚreturnc                 ód   — t          t          ¦  «        j        dz  | z                       ¦   «         S )NÚjs)r   Ú__file__ÚparentÚ	read_text)Únames    ú^C:\Projects\Historical\FacebookAutoPoster\venv\Lib\site-packages\playwright_stealth/stealth.pyÚ	from_filer      s'   € Ý•‰NŒNÔ! DÑ(¨4Ñ/×:Ò:Ñ<Ô<Ð<ó    Úgenerate_magic_arrayszgenerate.magic.arrays.jsÚutilszutils.jsÚ
chrome_appzevasions/chrome.app.jsÚ
chrome_csizevasions/chrome.csi.jsÚchrome_hairlinezevasions/chrome.hairline.jsÚchrome_load_timeszevasions/chrome.load.times.jsÚchrome_runtimezevasions/chrome.runtime.jsÚiframe_content_windowz evasions/iframe.contentWindow.jsÚmedia_codecszevasions/media.codecs.jsÚnavigator_hardware_concurrencyz)evasions/navigator.hardwareConcurrency.jsÚnavigator_languageszevasions/navigator.languages.jsÚnavigator_permissionsz!evasions/navigator.permissions.jsÚnavigator_platformzevasions/navigator.platform.jsÚnavigator_pluginszevasions/navigator.plugins.jsÚnavigator_user_agentzevasions/navigator.userAgent.jsÚnavigator_user_agent_dataz#evasions/navigator.userAgentData.jsÚnavigator_vendorzevasions/navigator.vendor.jszevasions/navigator.webdriver.jszevasions/error.prototype.jszevasions/webgl.vendor.js)Únavigator_webdriverÚerror_prototypeÚwebgl_vendorÚSCRIPTSc            9       ó,  — e Zd ZdZdZdZdZdddddddddddddddddddddd	d	d	d	d	ddd
œdedededededededededededededededededededee	e	f         de	d e
e	         d!e	d"e
e	         d#e	d$e	d%ed&ef8d'„Zed(e	fd)„¦   «         Zed(e	fd*„¦   «         Zed+„ ¦   «         Zed(e	fd,„¦   «         Zd-ed(efd.„Zd/ej        d(efd0„Zd/ej        d(efd1„Zd2eej        ej        f         d(d	fd3„Zd2eej        ej        f         d(d	fd4„Zd/eej        ej        f         d(d	fd5„Z d6e!d7e"e	ef         d8ed(e"e	ef         fd9„Z#d6e!d8efd:„Z$d;e!d<e!d(e!fd=„Z%d<e!d>ed(e!fd?„Z&d@e!d7e"e	ef         d(e"e	ef         fdA„Z'd@e!d7e"e	ef         d(e"e	ef         fdB„Z(dCeej)        ej)        f         d(d	fdD„Z*e+dEe	d(e
e	         fdF„¦   «         Z,e+dGe
e-e	                  d(e-e	         fdH„¦   «         Z.e+dGe-e	         dIe	d(e-e	         fdJ„¦   «         Z/e+d7e"e	ef         d(d	fdK„¦   «         Z0d	S )LÚStealthaÎ  
    Playwright stealth configuration that applies stealth strategies to Playwright.
    The stealth strategies are contained in ./js package and are basic javascript scripts that are executed
    on every page.goto() called.
    Note:
        All init scripts are combined by playwright into one script and then executed this means
        the scripts should not have conflicting constants/variables etc. !
        This also means scripts can be extended by overriding enabled_scripts generator:
        ```
        @property
        def enabled_scripts():
            yield 'console.log("first script")'
            yield from super().enabled_scripts()
            yield 'console.log("last script")'
        ```
    Ú_stealth_user_agentÚ_stealth_sec_ch_uaÚ_playwright_stealth_appliedTF©zen-USÚenÚWin32N)r   r   r    r!   Úhairliner"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   Ú	sec_ch_uar.   Únavigator_languages_overrideÚnavigator_platform_overrideÚnavigator_user_agent_overrideÚnavigator_vendor_overrideÚsec_ch_ua_overrideÚwebgl_renderer_overrideÚwebgl_vendor_overrideÚinit_scripts_onlyÚscript_loggingr   r   r    r!   r8   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r9   r.   r:   r;   r<   r=   r>   r?   r@   rA   rB   c                ó2  — || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _	        || _
        || _        || _        || _        || _        || _        || _        || _        || _        |                      t)          ¦   «         ¦  «         |pd| _        || _        || _        |pd | _        |€'| j        � |                      | j        ¦  «        | _        n|| _        |pd| _        |pd| _        || _        || _        d S )Nr5   zIntel Iris OpenGL Enginez
Intel Inc.)r   r   r    r!   r8   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r9   r.   Ú&_check_for_disabled_options_overriddenÚlocalsr:   r;   r<   r=   Ú_get_greased_chrome_sec_ua_chr>   r?   r@   rA   rB   )Úselfr   r   r    r!   r8   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r9   r.   r:   r;   r<   r=   r>   r?   r@   rA   rB   s                                r   Ú__init__zStealth.__init__F   sA  € ðB !+ˆŒØ *ˆŒØ'8ˆÔØ$2ˆÔØ&ˆŒØ+@ˆÔ"Ø".ˆÔØ3QˆÔ+Ø)<ˆÔ Ø+@ˆÔ"Ø(:ˆÔØ'8ˆÔØ*>ˆÔ!Ø/HˆÔ&Ø&6ˆÔØ)<ˆÔ Ø%4ˆÔØ(ˆŒØ".ˆÔð 	×3Ò3µF±H´HÑ=Ô=Ð=à=YÐ=lÐ]lˆÔ)Ø:UˆÔ(Ø<YˆÔ*Ø.GÐ.OÈ4ˆÔ&ØÐ%¨$Ô*LÐ*Xà&*×&HÒ&HÈÔIkÑ&lÔ&lˆDÔ#Ð#à5GˆDÔ#Ø,CÐ,aÐGaˆÔ$Ø*?Ð*OÀ<ˆÔ"à'8ˆÔØ,ˆÔÐÐr   r   c                 óp   — d                      | j        ¦  «        }t          |¦  «        dk    rdS d|z   dz   S )z‘
        Generates an immediately invoked function expression for all enabled scripts
        Returns: string of enabled scripts in IIFE
        ú
r   Ú z	(() => {
z
})();)ÚjoinÚenabled_scriptsÚlen)rG   Úscripts_blocks     r   Úscript_payloadzStealth.script_payload�   s@   € ð Ÿ	š	 $Ô"6Ñ7Ô7ˆÝˆ}ÑÔ Ò"Ð"Ø�2Ø˜mÑ+¨iÑ7Ð7r   c           	      ó˜   — | j         | j        | j        | j        | j        | j        | j        | j        dœ}dt          j	        |¦  «        › d�S )N)r$   r:   r'   r)   r+   Úwebgl_rendererr.   rB   zconst opts = ú;)
r$   r:   r;   r<   r=   r?   r@   rB   ÚjsonÚdumps)rG   Úoptss     r   Úoptions_payloadzStealth.options_payload˜   s]   € ð /3Ô.QØ,0Ô,MØ"&Ô"BØ$(Ô$FØ $Ô >Ø"Ô:Ø Ô6Ø"Ô1ð	
ð 	
ˆð 3�tœz¨$Ñ/Ô/Ð2Ð2Ð2Ð2r   c              #   ó¾   K  — d                      | j        ¦  «        }t          |¦  «        dk    rdS | j        V — t          d         V — t          d         V — |V — d S )NrJ   r   rK   r   r   )rL   Ú_evasion_scriptsrN   rW   r/   )rG   Úevasion_script_blocks     r   rM   zStealth.enabled_scripts¦   sx   è è € à#Ÿyšy¨Ô)>Ñ?Ô?ÐÝÐ#Ñ$Ô$¨Ò)Ð)Ø�2àÔ"Ð"Ð"Ð"Ý�gÔÐÐÐÝÐ-Ô.Ð.Ð.Ð.Ø"Ð"Ð"Ð"Ð"Ð"r   c              #   óú  K  — | j         rt          d         V — | j        rt          d         V — | j        rt          d         V — | j        rt          d         V — | j        rt          d         V — | j        rt          d         V — | j        rt          d         V — | j        rt          d         V — | j	        rt          d	         V — | j
        rt          d
         V — | j        rt          d         V — | j        rt          d         V — | j        rt          d         V — | j        rt          d         V — | j        rt          d         V — | j        rt          d         V — | j        rt          d         V — d S d S )Nr   r   r   r    r!   r"   r#   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   )r   r/   r   r8   r    r!   r"   r#   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   )rG   s    r   rY   zStealth._evasion_scripts±   sü  è è € àŒ?ð 	(Ý˜,Ô'Ð'Ð'Ð'ØŒ?ð 	(Ý˜,Ô'Ð'Ð'Ð'ØŒ=ð 	-ÝÐ+Ô,Ð,Ð,Ð,ØÔ!ð 	/ÝÐ-Ô.Ð.Ð.Ð.ØÔð 	,ÝÐ*Ô+Ð+Ð+Ð+ØÔ%ð 	3ÝÐ1Ô2Ð2Ð2Ð2ØÔð 	*Ý˜.Ô)Ð)Ð)Ð)ØÔ#ð 	1ÝÐ/Ô0Ð0Ð0Ð0ØÔ%ð 	3ÝÐ1Ô2Ð2Ð2Ð2ØÔ"ð 	0ÝÐ.Ô/Ð/Ð/Ð/ØÔ!ð 	/ÝÐ-Ô.Ð.Ð.Ð.ØÔ$ð 	2ÝÐ0Ô1Ð1Ð1Ð1ØÔ)ð 	7ÝÐ5Ô6Ð6Ð6Ð6ØÔ ð 	.ÝÐ,Ô-Ð-Ð-Ð-ØÔ#ð 	1ÝÐ/Ô0Ð0Ð0Ð0ØÔð 	-ÝÐ+Ô,Ð,Ð,Ð,ØÔð 	*Ý˜.Ô)Ð)Ð)Ð)Ð)Ð)ð	*ð 	*r   Úobjc                 ój   — t          || j        ¦  «        rt          j        dt          ¬¦  «         dS dS )NzYStealth has already been applied to this page or context. Skipping duplicate application.©ÚcategoryTF)ÚhasattrÚ_STEALTH_APPLIED_KEYÚwarningsÚwarnÚUserWarning)rG   r\   s     r   Úwarn_if_stealth_appliedzStealth.warn_if_stealth_appliedÖ   sB   € Ý�3˜Ô1Ñ2Ô2ð 	ÝŒMØkÝ$ðñ ô ð ð �4Øˆur   Úctxc                 ó"   — t          | |¦  «        S )a)  
        Instruments the playwright context manager.
        Any browser connected to or any page created with any method from
        the patched context should have stealth evasions applied automatically.

        async with Stealth().use_async(async_playwright()) as p:
            ...
        )r   ©rG   rf   s     r   Ú	use_asynczStealth.use_asyncß   s   € õ +¨4°Ñ5Ô5Ð5r   c                 ó"   — t          | |¦  «        S )a!  
        Instruments the playwright context manager.
        Any browser connected to or any page created with any method from
        the patched context should have stealth evasions applied automatically.

        with Stealth().use_sync(sync_playwright()) as p:
            ...
        )r   rh   s     r   Úuse_synczStealth.use_syncê   s   € õ *¨$°Ñ4Ô4Ð4r   Úpage_or_contextc              ƒ   óØ   K  — t          | j        ¦  «        dk    rM|                      |¦  «        s:|                     | j        ¦  «        ƒ d {V —† t	          || j        d¦  «         d S d S d S ©Nr   T©rN   rP   re   Úadd_init_scriptÚsetattrra   ©rG   rl   s     r   Úapply_stealth_asynczStealth.apply_stealth_asyncõ   s�   è è € ÝˆtÔ"Ñ#Ô# aÒ'Ð'°×0LÒ0LÈ_Ñ0]Ô0]Ð'Ø!×1Ò1°$Ô2EÑFÔFÐFÐFÐFÐFÐFÐFÐFÝ�O TÔ%>ÀÑEÔEÐEÐEÐEð (Ð'Ð'Ð'r   c                 óÈ   — t          | j        ¦  «        dk    rG|                      |¦  «        s4|                     | j        ¦  «         t	          || j        d¦  «         d S d S d S rn   ro   rr   s     r   Úapply_stealth_synczStealth.apply_stealth_syncú   sk   € ÝˆtÔ"Ñ#Ô# aÒ'Ð'°×0LÒ0LÈ_Ñ0]Ô0]Ð'Ø×+Ò+¨DÔ,?Ñ@Ô@Ð@Ý�O TÔ%>ÀÑEÔEÐEÐEÐEð (Ð'Ð'Ð'r   c                 óB  — t           j        j        }|j        |j        |j        fD ]x}|j        dk    }t          j        |t          j	        ¬¦  «        D ]J\  }}|j
                             d¦  «        |k    r'|                      ||¦  «        }t          |||¦  «         ŒKŒydS )zµ
        Given a Playwright context object, hooks all the browser type object methods that return a Browser object.
        Can be used with sync and async methods contexts
        Úchromium)Ú	predicater   N)r   ÚBrowserÚ__name__rw   ÚfirefoxÚwebkitr   ÚinspectÚ
getmembersÚismethodÚ__annotations__ÚgetÚ,_generate_hooked_method_that_returns_browserrq   )rG   rf   Úbrowser_class_nameÚbrowser_typeÚchromium_moder   Úhooked_methods          r   Úhook_playwright_contextzStealth.hook_playwright_contextÿ   s·   € õ
 &Ô-Ô6ÐØ œ\¨3¬;¸¼
ÐCð 	?ð 	?ˆLØ(Ô-°Ò;ˆMÝ'.Ô'9¸,ÕRYÔRbÐ'cÑ'cÔ'cð ?ð ?Ñ#��mà Ô0×4Ò4°XÑ>Ô>ÐBTÒTÐTØ$(×$UÒ$UÐVcÐerÑ$sÔ$s�MÝ˜L¨$°Ñ>Ô>Ð>øð	?ð	?ð 	?r   ÚmethodÚpacked_kwargsr…   c                 óŠ  — t          j        |¦  «        j        }|                     d¦  «        }t	          |¦  «        }|�ƒ|r�| j        sz|                     d|j        ¦  «        }| j        r|                      |pg ¦  «        }| j	        r5dd 
                    | j        ¦  «        › �}|                      |pg |¦  «        }||d<   |S )NÚargsz--accept-lang=ú,)r}   Ú	signatureÚ
parametersr�   r   rA   Údefaultr,   Ú_patch_blink_features_cli_argsr%   rL   r:   Ú_patch_cli_arg)	rG   rˆ   r‰   r…   r�   Úargs_parameterÚ
new_kwargsÚnew_cli_argsÚlanguages_cli_flags	            r   Ú_kwargs_with_patched_cli_argz$Stealth._kwargs_with_patched_cli_arg  sÞ   € õ Ô% fÑ-Ô-Ô8ˆ	Ø"Ÿš vÑ.Ô.ˆõ ˜mÑ,Ô,ˆ
ØÐ%Øð 2 TÔ%;ð 2Ø)Ÿ~š~¨f°nÔ6LÑMÔM�ØÔ+ð [Ø#'×#FÒ#FÀ|ÐGYÐWYÑ#ZÔ#Z�LØÔ+ð _Ø)g¸#¿(º(À4ÔCdÑ:eÔ:eÐ)gÐ)gÐ&Ø#'×#6Ò#6°|Ð7IÀrÐK]Ñ#^Ô#^�LØ%1�
˜6Ñ"ØÐr   c                 óˆ   ‡ ‡‡— dt           j        fˆˆˆ fd„}dt          j        fˆˆˆ fd„}t          j        ‰¦  «        r|S |S )Nr   c            	   Ÿ   ó|   •K  —  ‰| i ‰                      ‰|‰¦  «        ¤Žƒ d {V —†}‰                     |¦  «         |S ©N©r–   Ú_reassign_new_page_new_context©r‹   ÚkwargsÚbrowserr…   rˆ   rG   s      €€€r   Úasync_hooked_methodzQStealth._generate_hooked_method_that_returns_browser.<locals>.async_hooked_method!  sn   øè è € Ø"˜FØðà×3Ò3°F¸FÀMÑRÔRðð ð ð ð ð ð ð ˆGð ×/Ò/°Ñ8Ô8Ð8ØˆNr   c            	      ól   •—  ‰| i ‰                      ‰|‰¦  «        ¤Ž}‰                     |¦  «         |S r™   rš   rœ   s      €€€r   Úsync_hooked_methodzPStealth._generate_hooked_method_that_returns_browser.<locals>.sync_hooked_method)  sL   ø€ Ø�fØðà×3Ò3°F¸FÀMÑRÔRðð ˆGð ×/Ò/°Ñ8Ô8Ð8ØˆNr   )r   ry   r   r}   Úiscoroutinefunction)rG   rˆ   r…   rŸ   r¡   s   ```  r   r‚   z4Stealth._generate_hooked_method_that_returns_browser   sŠ   øøø€ ð	½)Ô:Kð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð	µ8Ô3Cð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	õ Ô& vÑ.Ô.ð 	'Ø&Ð&Ø!Ð!r   Únew_context_methodÚnew_page_methodc                 óT   ‡ ‡‡— ˆˆˆ fd„}ˆˆˆ fd„}t          j        ‰¦  «        r|S |S )Nc               Ÿ   ó’   •K  —  ‰| i ‰                      ‰|¦  «        ƒ d {V —†¤Žƒ d {V —†}‰                     |¦  «        ƒ d {V —† |S r™   ©Ú+_kwargs_new_page_context_with_patches_asyncrs   ©r‹   r�   Úcontextr£   r¤   rG   s      €€€r   Úhooked_new_context_asynczFStealth._generate_hooked_new_context.<locals>.hooked_new_context_async6  s’   øè è € Ø.Ð.Øðà×IÒIÈ/Ð[aÑbÔbÐbÐbÐbÐbÐbÐbðð ð ð ð ð ð ð ˆGð ×*Ò*¨7Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3ØˆNr   c                  ój   •—  ‰| i ‰                      ‰|¦  «        ¤Ž}‰                     |¦  «         |S r™   ©Ú*_kwargs_new_page_context_with_patches_syncru   r©   s      €€€r   Úhooked_browser_method_synczHStealth._generate_hooked_new_context.<locals>.hooked_browser_method_sync>  sL   ø€ Ø(Ð(Øðà×BÒBÀ?ÐTZÑ[Ô[ðð ˆGð ×#Ò# GÑ,Ô,Ð,ØˆNr   ©r}   r¢   )rG   r£   r¤   r«   r¯   s   ```  r   Ú_generate_hooked_new_contextz$Stealth._generate_hooked_new_context5  sm   øøø€ ð	ð 	ð 	ð 	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð 	ð 	ð 	õ Ô&Ð'9Ñ:Ô:ð 	,Ø+Ð+Ø)Ð)r   Úpatch_kwargsc                 óT   ‡ ‡‡— ˆˆˆ fd„}ˆˆˆ fd„}t          j        ‰¦  «        r|S |S )aÂ  
        Returns a hooked method (async or sync) for new_page.
        *args and **kwargs even though these methods may not take any number of arguments,
        we want to preserve accurate stack traces when caller passes args improperly.

        If patch_kwargs is true, we patch kwargs the caller passes to enhance evasions. This only applies
        to Browser.new_page, so we pass false when passing in a BrowserContext.new_page method
        c               Ÿ   óž   •K  — ‰r‰                      ‰|¦  «        ƒ d {V —†n|} ‰| i |¤Žƒ d {V —†}‰                     |¦  «        ƒ d {V —† |S r™   r§   ©r‹   r�   Úpager¤   r²   rG   s      €€€r   Úhooked_new_page_asyncz@Stealth._generate_hooked_new_page.<locals>.hooked_new_page_asyncT  s”   øè è € ð  ð�d×FÒFÀÐX^Ñ_Ô_Ð_Ð_Ð_Ð_Ð_Ð_Ð_àð ð
 )˜¨$Ð9°&Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9ˆDØ×*Ò*¨4Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0ØˆKr   c                  óv   •— ‰r‰                      ‰|¦  «        n|} ‰| i |¤Ž}‰                     |¦  «         |S r™   r­   rµ   s      €€€r   Úhooked_new_page_syncz?Stealth._generate_hooked_new_page.<locals>.hooked_new_page_sync^  sV   ø€ à\hÐt�×?Ò?ÀÐQWÑXÔXÐXÐntð ð #�? DÐ3¨FÐ3Ð3ˆDØ×#Ò# DÑ)Ô)Ð)ØˆKr   r°   )rG   r¤   r²   r·   r¹   s   ```  r   Ú_generate_hooked_new_pagez!Stealth._generate_hooked_new_pageJ  sl   øøø€ ð	ð 	ð 	ð 	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð 	ð 	ð 	õ Ô& Ñ7Ô7ð 	)Ø(Ð(Ø#Ð#r   Úunpatched_new_pagec              ƒ   ó6  ‡ ‡‡K  — ‰j         }t          |t          j        ¦  «        r|j        Šn|Š‰j        j        dk    }dt          t          t          f         fˆˆ ˆfd„}t          |¦  «        }‰ j
        r8|                     d¦  «        €#‰ j        }|€|r |¦   «         ƒ d{V —†\  }}||d<   |                     di ¦  «        }	‰ j        rLt          |	¦  «                             d¦  «        €*‰ j        }
|
€|r |¦   «         ƒ d{V —†\  }}
|
�
|
|	d<   |	|d<   |S )a–  
        This returns kwargs with arguments added based on enabled evasions, while respecting any kwargs the caller
        has passed in. If enabled and overrides aren't set for either navigator_user_agent or sec_ch_ua,
        and we're dealing with a Chromium browser, we create a temporary page to get up-to-date UA information.

        This function is suitable for patching kwargs for new_context and new_page, though in either case, an unpatched
        new_page method must be provided.
        Args:
            unpatched_new_page: new_page
            packed_kwargs: kwargs the caller has passed in
        Returns:
            patched kwargs
        rw   r   c               “   ó¨  •K  — t          ‰‰j        d ¦  «        } t          ‰‰j        d ¦  «        }| �|€œ ‰¦   «         ƒ d {V —†}|                     d¦  «        ƒ d {V —†                     dd¦  «        } |                     d¬¦  «        ƒ d {V —† ‰                     | ¦  «        }t          ‰‰j        |¦  «         t          ‰‰j        | ¦  «         | |fS ©Nznavigator.userAgentÚHeadlessChromeÚChromez-playwright_stealth internal temp utility page)Úreason)ÚgetattrÚ"_USER_AGENT_OVERRIDE_PIGGYBACK_KEYÚ!_SEC_CH_UA_OVERRIDE_PIGGYBACK_KEYÚevaluateÚreplaceÚcloserF   rq   ©Ústealth_user_agentr9   Ú	temp_pageÚbrowser_instancerG   r»   s      €€€r   Ú"get_user_agent_and_sec_ch_ua_asyncz_Stealth._kwargs_new_page_context_with_patches_async.<locals>.get_user_agent_and_sec_ch_ua_async�  s  øè è € å!(Ð)9¸4Ô;bÐdhÑ!iÔ!iÐÝÐ 0°$Ô2XÐZ^Ñ_Ô_ˆIØ!Ð)¨YÐ->Ø"4Ð"4Ñ"6Ô"6Ð6Ð6Ð6Ð6Ð6Ð6�	Ø,5×,>Ò,>Ð?TÑ,UÔ,UÐ&UÐ&UÐ&UÐ&UÐ&UÐ&U×%^Ò%^Ø$ hñ&ô &Ð"ð  —o’oÐ-\�oÑ]Ô]Ð]Ð]Ð]Ð]Ð]Ð]Ð]Ø ×>Ò>Ð?QÑRÔR�	ÝÐ(¨$Ô*PÐR[Ñ\Ô\Ð\ÝØ$ØÔ;Ø&ñô ð ð
 & yÐ0Ð0r   Ú
user_agentNÚextra_http_headersú	sec-ch-ua)Ú__self__Ú
isinstancer   ÚBrowserContextrž   r„   r   r
   Ústrr   r)   r�   r<   r9   r   r>   )rG   r»   r‰   Úbrowser_or_contextÚis_chromiumrÌ   r“   Úresolved_user_agent_overrideÚ_rÎ   Úresolved_sec_ch_ua_overriderË   s   ``         @r   r¨   z3Stealth._kwargs_new_page_context_with_patches_asyncj  sš  øøøè è € ð  0Ô8ÐÝÐ(­)Ô*BÑCÔCð 	2Ø1Ô9ÐÐà1ÐØ&Ô3Ô8¸JÒFˆð	1½%ÅÅSÀ¼/ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1õ& ˜mÑ,Ô,ˆ
ØÔ$ð 	D¨×):Ò):¸<Ñ)HÔ)HÐ)PØ+/Ô+MÐ(Ø+Ð3¸Ð3ð =Ð<Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>ñØ0Øà'CˆJ�|Ñ$Ø*×.Ò.Ð/CÀRÑHÔHÐØŒ>ð 		FÕ1Ð2DÑEÔE×IÒIÈ+ÑVÔVÐ^Ø*.Ô*AÐ'Ø*Ð2°{Ð2ð =Ð<Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>ñØØ/à*Ð6Ø2MÐ" ;Ñ/Ø3E�
Ð/Ñ0àÐr   c                 ó  ‡ ‡‡— ‰j         }t          |t          j        ¦  «        r|j        Šn|Š‰j        j        dk    }dt          t          t          f         fˆˆ ˆfd„}t          |¦  «        }‰ j
        r2|                     d¦  «        €‰ j        }|€|r |¦   «         \  }}||d<   |                     di ¦  «        }	‰ j        rFt          |	¦  «                             d¦  «        €$‰ j        }
|
€|r |¦   «         \  }}
|
�
|
|	d<   |	|d<   |S )z>see self._kwargs_new_page_context_with_patches_async for docs.rw   r   c                  ó€  •— t          ‰‰j        d ¦  «        } t          ‰‰j        d ¦  «        }| �|€Š ‰¦   «         }|                     d¦  «                             dd¦  «        } ‰                     | ¦  «        }|                     d¬¦  «         t          ‰‰j        |¦  «         t          ‰‰j        | ¦  «         | |fS r¾   )rÂ   rÃ   rÄ   rÅ   rÆ   rF   rÇ   rq   rÈ   s      €€€r   Ú!get_user_agent_and_sec_ch_ua_syncz]Stealth._kwargs_new_page_context_with_patches_sync.<locals>.get_user_agent_and_sec_ch_ua_sync¶  sÛ   ø€ å!(Ð)9¸4Ô;bÐdhÑ!iÔ!iÐÝÐ 0°$Ô2XÐZ^Ñ_Ô_ˆIØ!Ð)¨YÐ->Ø.Ð.Ñ0Ô0�	Ø%.×%7Ò%7Ð8MÑ%NÔ%N×%VÒ%VÐWgÐiqÑ%rÔ%rÐ"Ø ×>Ò>Ð?QÑRÔR�	Ø—’Ð'V�ÑWÔWÐWÝÐ(¨$Ô*PÐR[Ñ\Ô\Ð\ÝØ$ØÔ;Ø&ñô ð ð
 & yÐ0Ð0r   rÍ   NrÎ   rÏ   )rÐ   rÑ   r   rÒ   rž   r„   r   r
   rÓ   r   r)   r�   r<   r9   r   r>   )rG   r»   r‰   rÔ   rÕ   rÛ   r“   rÖ   r×   rÎ   rØ   rË   s   ``         @r   r®   z2Stealth._kwargs_new_page_context_with_patches_sync«  sh  øøø€ ð 0Ô8ÐÝÐ(­(Ô*AÑBÔBð 	2Ø1Ô9ÐÐà1ÐØ&Ô3Ô8¸JÒFˆð	1µ5½½c¸´?ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1õ" ˜mÑ,Ô,ˆ
ØÔ$ð 	D¨×):Ò):¸<Ñ)HÔ)HÐ)PØ+/Ô+MÐ(Ø+Ð3¸Ð3Ø2SÐ2SÑ2UÔ2UÑ/Ð,¨aØ'CˆJ�|Ñ$Ø*×.Ò.Ð/CÀRÑHÔHÐØŒ>ð 	FÕ1Ð2DÑEÔE×IÒIÈ+ÑVÔVÐ^Ø*.Ô*AÐ'Ø*Ð2°{Ð2Ø1RÐ1RÑ1TÔ1TÑ.�Ð.Ø*Ð6Ø2MÐ" ;Ñ/Ø3E�
Ð/Ñ0àÐr   rž   c                 ó  — t          |t          j        t          j        f¦  «        rH|                      |j        |j        ¦  «        |_        |                      |j        d¬¦  «        |_        d S t          d|› �¦  «        ‚)NT)r²   z.unexpected type from function (bug): returned )	rÑ   r   ry   r   r±   Únew_contextÚnew_pagerº   Ú	TypeError)rG   rž   s     r   r›   z&Stealth._reassign_new_page_new_contextØ  s{   € Ý�g¥	Ô 1µ8Ô3CÐDÑEÔEð 	XØ"&×"CÒ"CÀGÔDWÐY`ÔYiÑ"jÔ"jˆGÔØ#×=Ò=¸gÔ>NÐ]aÐ=ÑbÔbˆGÔÐÐåÐVÈWÐVÐVÑWÔWÐWr   rÍ   c                 óÀ  — g d¢}d}dt          j        |¦  «        › dt          j        |¦  «        › d�}t          j        d| t          j        ¦  «        }t          |                     ¦   «         ¦  «        dk    rdS |                     d	¦  «        }d
|fd|f|t          j        |¦  «        fg}t          j        |¦  «         d 	                    d„ |D ¦   «         ¦  «        S )aD  
        From the major version in user_agent, generate a Sec-CH-UA header value. An example of the data in this
        header can be generated from navigator.userAgentData.brands (requires secure context). We could query that
        ourselves, but since it requires a secure context, there's no performant way to do that, so instead we
        re-implement the greasing algorithm from Chrome.

        See Also:
             https://wicg.github.io/ua-client-hints/#grease
             https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Sec-CH-UA
             https://source.chromium.org/chromium/chromium/src/+/main:components/embedder_support/user_agent_utils.cc
        Args:
            user_agent: Chrome UA

        Returns:
            greased Sec-CH-UA header value, None if the Chrome version cannot be parsed
        )é   éc   é   z ():-./;=?_ÚNotÚAÚBrandzChrome/(\d+)[\d.]+r   Né   ÚChromiumrÀ   z, c              3   ó.   K  — | ]\  }}d |› d|› d �V — ŒdS )ú"z";v="N© )Ú.0ÚbrandÚversions      r   ú	<genexpr>z8Stealth._get_greased_chrome_sec_ua_ch.<locals>.<genexpr>þ  s:   è è € ÐQÐQ¹¸¸wÐ3˜UÐ3Ð3¨Ð3Ð3Ð3ÐQÐQÐQÐQÐQÐQr   )
ÚrandomÚchoiceÚreÚsearchÚ
IGNORECASErN   ÚgroupsÚgroupÚshufflerL   )rÍ   Úgreased_versionsÚgreasy_charsÚgreasy_brandrî   Úmajor_versionÚbrandss          r   rF   z%Stealth._get_greased_chrome_sec_ua_chß  så   € ð$ '˜;˜;ÐØ$ˆØ]�Vœ]¨<Ñ8Ô8Ð]Ð]½6¼=ÈÑ;VÔ;VÐ]Ð]Ð]ˆÝ”)Ð1°:½r¼}ÑMÔMˆÝˆw�~Š~ÑÔÑ Ô  AÒ%Ð%Ø�4ØŸš aÑ(Ô(ˆà˜Ð'Ø�}Ð%Ø�6œ=Ð)9Ñ:Ô:Ð;ð
ˆõ
 	Œ�vÑÔÐØ�yŠyÐQÐQÈ&ÐQÑQÔQÑQÔQÐQr   Úexisting_argsc                 ó  — g }d}d}| pg D ]b}|                      ¦   «         }|                     |¦  «        r"||vr|d|› �z  }|                     |¦  «         ŒM|                     |¦  «         Œc|                     |› |› �¦  «         |S )z`Patches CLI args list to disable AutomationControlled blink feature, while preserving other argsz--disable-blink-features=ÚAutomationControlledrŒ   )ÚstripÚ
startswithÚappend)rý   Únew_argsÚdisable_blink_features_prefixÚ"automation_controlled_feature_nameÚargÚstripped_args         r   r�   z&Stealth._patch_blink_features_cli_args   s¾   € ð ˆØ(CÐ%Ø-CÐ*Ø Ð& Bð 	dð 	dˆCØŸ9š9™;œ;ˆLØ×&Ò&Ð'DÑEÔEð %Ø5¸\ÐIÐIØ Ð$LÐ(JÐ$LÐ$LÑL�LØ—’ Ñ-Ô-Ð-Ð-à—’ Ñ$Ô$Ð$Ð$ð �OŠOÐ<ÐbÐ>`ÐbÐbÑcÔcÐcØˆr   Úflagc                 óv  — g }t          j        d|¦  «                             d¦  «        }| D ]v}|                     ¦   «         }|                     |¦  «        r6t          j        d|›d�t          ¬¦  «         |                     |¦  «          n+|                     |¦  «         Œw|                     |¦  «         |S )zZPatches CLI args list with any arg, warns if the user passed their own value in themselvesz(.*)=?rç   z“playwright-stealth is trying to modify a flag you have set yourself already.Either disable the mitigation or don't specify this flag manually flag=zBto avoid this warning. playwright-stealth has overridden your flagr^   )	rò   ró   rö   r   r  rb   rc   rd   r  )rý   r  r  Úswitch_namer  r  s         r   r‘   zStealth._patch_cli_arg  sÚ   € ð ˆÝ”i ¨$Ñ/Ô/×5Ò5°aÑ8Ô8ˆØ ð 	"ð 	"ˆCØŸ9š9™;œ;ˆLØ×&Ò& {Ñ3Ô3ð 
%Ý”ðZØY]ðZð Zð Zõ )ð	ñ ô ð ð —’ Ñ%Ô%Ð%Ø�à—’ Ñ$Ô$Ð$Ð$ð �OŠO˜DÑ!Ô!Ð!Øˆr   c                 óÜ   — t                                ¦   «         D ]Q}|                      |¦  «        s:|                      |› d�¦  «        �"t          j        |› d|› d�dt
          ¬¦  «         ŒRd S )NÚ	_overridez is False, but an override (zF_override) was provided, which is probably not what you intended to doé   )Ú
stacklevelr_   )ÚALL_EVASIONS_DISABLED_KWARGSÚkeysr�   rb   rc   rd   )r‰   Úkeys     r   rD   z.Stealth._check_for_disabled_options_overridden+  sœ   € å/×4Ò4Ñ6Ô6ð 	ð 	ˆCØ ×$Ò$ SÑ)Ô)ð ¨m×.?Ò.?À3Ð@QÐ@QÐ@QÑ.RÔ.RÐ.^Ý”Øð Eð E¸ð Eð Eð Eà Ý(ð	ñ ô ð øð	ð 	r   )1rz   Ú
__module__Ú__qualname__Ú__doc__rÃ   rÄ   ra   Úboolr
   rÓ   r   rH   ÚpropertyrP   rW   rM   rY   r	   re   r   ÚPlaywrightContextManagerr   ri   r   r   rk   r   ÚPagerÒ   rs   ru   Ú
Playwrightr‡   r   r   r–   r‚   r±   rº   r¨   r®   ry   r›   ÚstaticmethodrF   r   r�   r‘   rD   rë   r   r   r1   r1   0   sí  € € € € € ðð ð" *?Ð&Ø(<Ð%Ø8Ðð
  ØØ"&Ø$ØØ&*Ø!Ø/3Ø$(Ø&*Ø#'Ø"&Ø%)Ø*.Ø!%Ø$(Ø $ØØ!Ø8GØ+2Ø7;Ø)-Ø,0Ø'+Ø%)Ø"'Ø$ð=E-ð E-ð E-ð ðE-ð ð	E-ð
  ðE-ð ðE-ð ðE-ð  $ðE-ð ðE-ð )-ðE-ð "ðE-ð  $ðE-ð !ðE-ð  ðE-ð #ðE-ð  $(ð!E-ð" ð#E-ð$ "ð%E-ð& ð'E-ð( ð)E-ð* ð+E-ð, ',¨C°¨H¤oð-E-ð. &)ð/E-ð0 (0°¤}ð1E-ð2 $'ð3E-ð4 % SœMð5E-ð6 "%ð7E-ð8  #ð9E-ð:  ð;E-ð< ð=E-ð E-ð E-ð E-ðN ð8 ð 8ð 8ð 8ñ „Xð8ð ð3 ð 3ð 3ð 3ñ „Xð3ð ð#ð #ñ „Xð#ð ð"* #ð "*ð "*ð "*ñ „Xð"*ðH¨3ð °4ð ð ð ð ð	6˜YÔ?ð 	6ÐD_ð 	6ð 	6ð 	6ð 	6ð	5˜HÔ=ð 	5ÐB\ð 	5ð 	5ð 	5ð 	5ðF¸¸y¼~ÈyÔOgÐ?gÔ9hð FÐmqð Fð Fð Fð Fð
F°%¸¼ÀxÔG^Ð8^Ô2_ð FÐdhð Fð Fð Fð Fð
?¨5°Ô1EÀxÔGZÐ1ZÔ+[ð ?Ð`dð ?ð ?ð ?ð ?ðØðØ/3°C¸°H¬~ðØNRðà	ˆc�3ˆhŒðð ð ð ð&"À8ð "Ð\`ð "ð "ð "ð "ð**¸xð *ÐZbð *Ðgoð *ð *ð *ð *ð*$¸ð $ÐQUð $ÐZbð $ð $ð $ð $ð@?Ø"*ð?Ø;?ÀÀSÀ¼>ð?à	ˆc�3ˆhŒð?ð ?ð ?ð ?ðB+Ø"*ð+Ø;?ÀÀSÀ¼>ð+à	ˆc�3ˆhŒð+ð +ð +ð +ðZX°e¸IÔ<MÈxÔO_Ð<_Ô6`ð XÐeið Xð Xð Xð Xð ðR°#ð R¸(À3¼-ð Rð Rð Rñ „\ðRð@ ð°h¸tÀC¼yÔ6Ið ÈdÐSVÌið ð ð ñ „\ðð& ð d¨3¤ið °sð ¸tÀC¼yð ð ð ñ „\ðð, ð¸dÀ3ÈÀ8¼nð ÐQUð ð ð ñ „\ðð ð r   r1   Fr8   r,   r-   )r9   r.   ) r}   rT   rð   rò   rb   Úcollections.abcr   Úcopyr   Úpathlibr   Útypingr   r   r   r	   r
   r   Ú
playwrightr   r   Ú(playwright_stealth.case_insensitive_dictr   Ú#playwright_stealth.context_managersr   r   rÓ   r   r/   r€   r1   r  rë   r   r   ú<module>r"     s  ðà €€€€Ø €€€Ø €€€Ø 	€	€	€	Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :à *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø HÐ HÐ HÐ HÐ HÐ Hðð ð ð ð ð ð ð ð=�sð =ð =ð =ð =ðØ˜Y˜YÐ'AÑBÔBðàˆYˆY�zÑ"Ô"ðð �)�)Ð4Ñ5Ô5ðð �)�)Ð4Ñ5Ô5ð	ð
 �y�yÐ!>Ñ?Ô?ðð ˜˜Ð#BÑCÔCðð �i�iÐ <Ñ=Ô=ðð ˜Y˜YÐ'IÑJÔJðð �I�IÐ8Ñ9Ô9ðð % i iÐ0[Ñ&\Ô&\ðð ˜9˜9Ð%FÑGÔGðð ˜Y˜YÐ'JÑKÔKðð ˜)˜)Ð$DÑEÔEðð ˜˜Ð#BÑCÔCðð ˜I˜IÐ&GÑHÔHðð     Ð+PÑ!QÔ!Qð!ð" ˜	˜	Ð"@ÑAÔAð#ð$ %˜9Ð%FÑGÔGØ �yÐ!>Ñ?Ô?Ø�IÐ8Ñ9Ô9ð)ð ð €ˆˆc�3ˆhŒð ð ñ ð0Dð Dð Dð Dð Dñ Dô Dð DðN Ø�%ð à�%ð ð ˜ð ð �eð	 ð
 �ð ð ˜Uð ð �Eð ð % eð ð ˜5ð ð ˜Uð ð ˜%ð ð ˜ð ð ˜Eð ð   ð ð ˜ð ð  ˜5ð! ð" �uð# ð$ Øð' ð  ð  Ð Ð Ð r   