U
    g                    @  s  d dl mZ ddlmZmZ d dlm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 dd
l	mZ ddl	mZ G dd deZG dd dejZG dd dejZeG dd dZeG dd dZG dd dejZG dd dejZG dd dejZG dd dejZG dd dejZeG d d! d!ZeG d"d# d#ZG d$d% d%ejZG d&d' d'ejZG d(d) d)ejZ eG d*d+ d+Z!eG d,d- d-Z"eG d.d/ d/Z#eG d0d1 d1Z$eG d2d3 d3Z%eG d4d5 d5Z&eG d6d7 d7Z'G d8d9 d9eZ(G d:d; d;ejZ)eG d<d= d=Z*eG d>d? d?Z+G d@dA dAejZ,eG dBdC dCZ-eG dDdE dEZ.eG dFdG dGZ/eG dHdI dIZ0eG dJdK dKZ1eG dLdM dMZ2eG dNdO dOZ3eG dPdQ dQZ4G dRdS dSejZ5G dTdU dUejZ6eG dVdW dWZ7eG dXdY dYZ8G dZd[ d[ejZ9eG d\d] d]Z:eG d^d_ d_Z;eG d`da daZ<eG dbdc dcZ=eG ddde deZ>eG dfdg dgZ?eG dhdi diZ@eG djdk dkZAeG dldm dmZBeG dndo doZCeG dpdq dqZDeG drds dsZEG dtdu duejZFG dvdw dwejZGG dxdy dyejZHG dzd{ d{ejZIeG d|d} d}ZJeG d~d dZKeG dd dZLdddddZMdddddddddZNddddZOdddddddddddZPddddddZQddddZRddddZSddddZTddddddddZUddddddZVddddZWddddZXddddddZYddddZZddddZ[ddddZ\dddddZ]ddddZ^ddddZ_ddddÄZ`ddddńZaddddǜddɄZbdddd̄ZcdddddΜddЄZddddddddd՜ddׄZedddٜddۄZfddddddddddddddddddddޜddZgddddddddZhd9ddddZid9ddddZjdddddZkddddddddddZldddddZmdddddZndddddZodddddZpddddddddddddddddd ZqdddddddZrddMdddddZsdQddd	d
ZtddddddZudddddddZvddddddddZwdddddZxdddddddZyddddddddddZzddddZ{ddddZ|ddd d!Z}ddd"d#d$Z~ddd%d&Zd'dd(d)d*Zdddd+d,d-Zddd.d/Zdudd0d1d2Zdudd0d3d4Zddddd5d6d7Zddd8d9Zdddd:d;Zddd<d=d>Zed?eG d@dA dAZedBeG dCdD dDZedEeG dFdG dGZedHeG dIdJ dJZedKeG dLdM dMZedNeG dOdP dPZedQeG dRdS dSZedTeG dUdV dVZedWeG dXdY dYZedZeG d[d\ d\Zed]eG d^d_ d_Zed`eG dadb dbZedceG ddde deZedfeG dgdh dhZedieG djdk dkZedleG dmdn dnZedoeG dpdq dqZedreG dsdt dtZedueG dvdw dwZedxeG dydz dzZed{eG d|d} d}Zed~eG dd dZedeG dd dZedeG dd dZedeG dd dZedeG dd dZedeG dd dZdS (      )annotations   )event_classT_JSON_DICT)	dataclassN)debugger)dom)	emulation)io)network)runtimec                      sB   e Zd ZdZddddZedd dddZ fd	d
Z  ZS )FrameIdz"
    Unique frame identifier.
    strreturnc                 C  s   | S N selfr   r   P/tmp/pip-unpacked-wheel-3ysq0mf8/selenium/webdriver/common/devtools/v131/page.pyto_json   s    zFrameId.to_jsonjsonr   c                 C  s   | |S r   r   clsr   r   r   r   	from_json   s    zFrameId.from_jsonc                   s   d t  S )NzFrameId({})formatsuper__repr__r   	__class__r   r   r      s    zFrameId.__repr__	__name__
__module____qualname____doc__r   classmethodr   r   __classcell__r   r   r    r   r      s
   r   c                   @  s0   e Zd ZdZdZdZdZdd Zedd Z	d	S )
AdFrameTypezA
    Indicates whether a frame has been identified as an ad.
    nonechildrootc                 C  s   | j S r   valuer   r   r   r   r   +   s    zAdFrameType.to_jsonc                 C  s   | |S r   r   r   r   r   r   r   .   s    zAdFrameType.from_jsonN)
r#   r$   r%   r&   NONEZCHILDROOTr   r'   r   r   r   r   r   r)   #   s   r)   c                   @  s,   e Zd ZdZdZdZdd Zedd ZdS )	AdFrameExplanationZ
ParentIsAdZCreatedByAdScriptZMatchedBlockingRulec                 C  s   | j S r   r-   r   r   r   r   r   8   s    zAdFrameExplanation.to_jsonc                 C  s   | |S r   r   r   r   r   r   r   ;   s    zAdFrameExplanation.from_jsonN)	r#   r$   r%   ZPARENT_IS_ADZCREATED_BY_AD_SCRIPTZMATCHED_BLOCKING_RULEr   r'   r   r   r   r   r   r1   3   s   r1   c                   @  s:   e Zd ZU dZded< dZded< dd Zed	d
 ZdS )AdFrameStatuszI
    Indicates whether a frame has been identified as an ad and why.
    r)   ad_frame_typeNz0typing.Optional[typing.List[AdFrameExplanation]]explanationsc                 C  s6   t  }| j |d< | jd k	r2dd | jD |d< |S )NadFrameTypec                 S  s   g | ]}|  qS r   r   .0ir   r   r   
<listcomp>M   s     z)AdFrameStatus.to_json.<locals>.<listcomp>r4   )dictr3   r   r4   r   r   r   r   r   r   I   s
    
zAdFrameStatus.to_jsonc                 C  s0   | t |d d|kr(dd |d D nd dS )Nr5   r4   c                 S  s   g | ]}t |qS r   )r1   r   r7   r   r   r   r:   T   s     z+AdFrameStatus.from_json.<locals>.<listcomp>)r3   r4   )r)   r   r   r   r   r   r   P   s    zAdFrameStatus.from_json)	r#   r$   r%   r&   __annotations__r4   r   r'   r   r   r   r   r   r2   @   s   
r2   c                   @  s6   e Zd ZU dZded< ded< dd Zedd	 Zd
S )
AdScriptIdz_
    Identifies the bottom-most script which caused the frame to be labelled
    as an ad.
    zruntime.ScriptId	script_idzruntime.UniqueDebuggerIddebugger_idc                 C  s&   t  }| j |d< | j |d< |S )NscriptId
debuggerId)r;   r?   r   r@   r<   r   r   r   r   e   s    zAdScriptId.to_jsonc                 C  s$   | t j|d t j|d dS )NrA   rB   )r?   r@   )r   ZScriptIdr   ZUniqueDebuggerIdr   r   r   r   r   k   s    zAdScriptId.from_jsonNr#   r$   r%   r&   r=   r   r'   r   r   r   r   r   r>   X   s   
r>   c                   @  s4   e Zd ZdZdZdZdZdZdd Ze	dd	 Z
d
S )SecureContextTypezQ
    Indicates whether the frame is a secure context and why it is the case.
    SecureZSecureLocalhostZInsecureSchemeZInsecureAncestorc                 C  s   | j S r   r-   r   r   r   r   r   |   s    zSecureContextType.to_jsonc                 C  s   | |S r   r   r   r   r   r   r      s    zSecureContextType.from_jsonN)r#   r$   r%   r&   ZSECUREZSECURE_LOCALHOSTZINSECURE_SCHEMEZINSECURE_ANCESTORr   r'   r   r   r   r   r   rD   s   s   rD   c                   @  s0   e Zd ZdZdZdZdZdd Zedd Z	d	S )
CrossOriginIsolatedContextTypezV
    Indicates whether the frame is cross-origin isolated and why it is the case.
    ZIsolatedZNotIsolatedZNotIsolatedFeatureDisabledc                 C  s   | j S r   r-   r   r   r   r   r      s    z&CrossOriginIsolatedContextType.to_jsonc                 C  s   | |S r   r   r   r   r   r   r      s    z(CrossOriginIsolatedContextType.from_jsonN)
r#   r$   r%   r&   ZISOLATEDZNOT_ISOLATEDZNOT_ISOLATED_FEATURE_DISABLEDr   r'   r   r   r   r   r   rF      s   rF   c                   @  s0   e Zd ZdZdZdZdZdd Zedd Z	d	S )
GatedAPIFeaturesZSharedArrayBuffersZ!SharedArrayBuffersTransferAllowedZPerformanceMeasureMemoryZPerformanceProfilec                 C  s   | j S r   r-   r   r   r   r   r      s    zGatedAPIFeatures.to_jsonc                 C  s   | |S r   r   r   r   r   r   r      s    zGatedAPIFeatures.from_jsonN)
r#   r$   r%   ZSHARED_ARRAY_BUFFERSZ%SHARED_ARRAY_BUFFERS_TRANSFER_ALLOWEDZPERFORMANCE_MEASURE_MEMORYZPERFORMANCE_PROFILEr   r'   r   r   r   r   r   rG      s   rG   c                   @  s  e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#Z%d$Z&d%Z'd&Z(d'Z)d(Z*d)Z+d*Z,d+Z-d,Z.d-Z/d.Z0d/Z1d0Z2d1Z3d2Z4d3Z5d4Z6d5Z7d6Z8d7Z9d8Z:d9Z;d:Z<d;Z=d<Z>d=Z?d>Z@d?ZAd@ZBdAZCdBZDdCZEdDZFdEZGdFZHdGZIdHZJdIZKdJZLdKZMdLZNdMZOdNZPdOZQdPZRdQZSdRZTdSZUdTZVdUZWdVZXdWZYdXZZdYZ[dZZ\d[Z]d\Z^d]Z_d^d_ Z`ead`da ZbdbS )cPermissionsPolicyFeaturez
    All Permissions Policy features. This enum should match the one defined
    in third_party/blink/renderer/core/permissions_policy/permissions_policy_features.json5.
    Zaccelerometerzall-screens-capturezambient-light-sensorzattribution-reportingautoplayZ	bluetoothzbrowsing-topicsZcamerazcaptured-surface-controlzch-dprzch-device-memoryzch-downlinkzch-ectzch-prefers-color-schemezch-prefers-reduced-motionzch-prefers-reduced-transparencyzch-rttzch-save-datazch-uaz
ch-ua-archzch-ua-bitnesszch-ua-platformzch-ua-modelzch-ua-mobilezch-ua-form-factorszch-ua-full-versionzch-ua-full-version-listzch-ua-platform-versionzch-ua-wow64zch-viewport-heightzch-viewport-widthzch-widthzclipboard-readzclipboard-writezcompute-pressurezcontrolled-framezcross-origin-isolatedzdeferred-fetchzdigital-credentials-getzdirect-socketszdirect-sockets-privatezdisplay-capturezdocument-domainzencrypted-mediazexecution-while-out-of-viewportzexecution-while-not-renderedzfocus-without-user-activationZ
fullscreenZ	frobulateZgamepadZgeolocationZ	gyroscopeZhidzidentity-credentials-getzidle-detectionzinterest-cohortzjoin-ad-interest-groupzkeyboard-mapzlocal-fontsZmagnetometerz media-playback-while-not-visibleZ
microphoneZmidizotp-credentialspaymentzpicture-in-pictureZpopinszprivate-aggregationzprivate-state-token-issuancezprivate-state-token-redemptionzpublickey-credentials-createzpublickey-credentials-getzrun-ad-auctionzscreen-wake-lockserialzshared-autofillzshared-storagezshared-storage-select-urlz
smart-cardzspeaker-selectionzstorage-accesszsub-appszsync-xhrZunloadZusbzusb-unrestrictedzvertical-scrollzweb-app-installationzweb-printingz	web-sharezwindow-managementzxr-spatial-trackingc                 C  s   | j S r   r-   r   r   r   r   r     s    z PermissionsPolicyFeature.to_jsonc                 C  s   | |S r   r   r   r   r   r   r     s    z"PermissionsPolicyFeature.from_jsonN)cr#   r$   r%   r&   ZACCELEROMETERZALL_SCREENS_CAPTUREZAMBIENT_LIGHT_SENSORZATTRIBUTION_REPORTINGZAUTOPLAYZ	BLUETOOTHZBROWSING_TOPICSZCAMERAZCAPTURED_SURFACE_CONTROLZCH_DPRZCH_DEVICE_MEMORYZCH_DOWNLINKZCH_ECTZCH_PREFERS_COLOR_SCHEMEZCH_PREFERS_REDUCED_MOTIONZCH_PREFERS_REDUCED_TRANSPARENCYZCH_RTTZCH_SAVE_DATAZCH_UAZ
CH_UA_ARCHZCH_UA_BITNESSZCH_UA_PLATFORMZCH_UA_MODELZCH_UA_MOBILEZCH_UA_FORM_FACTORSZCH_UA_FULL_VERSIONZCH_UA_FULL_VERSION_LISTZCH_UA_PLATFORM_VERSIONZCH_UA_WOW64ZCH_VIEWPORT_HEIGHTZCH_VIEWPORT_WIDTHZCH_WIDTHZCLIPBOARD_READZCLIPBOARD_WRITEZCOMPUTE_PRESSUREZCONTROLLED_FRAMEZCROSS_ORIGIN_ISOLATEDZDEFERRED_FETCHZDIGITAL_CREDENTIALS_GETZDIRECT_SOCKETSZDIRECT_SOCKETS_PRIVATEZDISPLAY_CAPTUREZDOCUMENT_DOMAINZENCRYPTED_MEDIAZEXECUTION_WHILE_OUT_OF_VIEWPORTZEXECUTION_WHILE_NOT_RENDEREDZFOCUS_WITHOUT_USER_ACTIVATIONZ
FULLSCREENZ	FROBULATEZGAMEPADZGEOLOCATIONZ	GYROSCOPEZHIDZIDENTITY_CREDENTIALS_GETZIDLE_DETECTIONZINTEREST_COHORTZJOIN_AD_INTEREST_GROUPZKEYBOARD_MAPZLOCAL_FONTSZMAGNETOMETERZ MEDIA_PLAYBACK_WHILE_NOT_VISIBLEZ
MICROPHONEZMIDIZOTP_CREDENTIALSPAYMENTPICTURE_IN_PICTUREZPOPINSZPRIVATE_AGGREGATIONZPRIVATE_STATE_TOKEN_ISSUANCEZPRIVATE_STATE_TOKEN_REDEMPTIONZPUBLICKEY_CREDENTIALS_CREATEZPUBLICKEY_CREDENTIALS_GETZRUN_AD_AUCTIONZSCREEN_WAKE_LOCKZSERIALZSHARED_AUTOFILLZSHARED_STORAGEZSHARED_STORAGE_SELECT_URL
SMART_CARDZSPEAKER_SELECTIONZSTORAGE_ACCESSZSUB_APPSZSYNC_XHRZUNLOADZUSBZUSB_UNRESTRICTEDZVERTICAL_SCROLLZWEB_APP_INSTALLATIONZWEB_PRINTING	WEB_SHAREZWINDOW_MANAGEMENTZXR_SPATIAL_TRACKINGr   r'   r   r   r   r   r   rH      s   rH   c                   @  s4   e Zd ZdZdZdZdZdZdd Ze	dd	 Z
d
S )PermissionsPolicyBlockReasonzA
    Reason for a permissions policy feature to be disabled.
    HeaderZIframeAttributeZInFencedFrameTreeZInIsolatedAppc                 C  s   | j S r   r-   r   r   r   r   r     s    z$PermissionsPolicyBlockReason.to_jsonc                 C  s   | |S r   r   r   r   r   r   r     s    z&PermissionsPolicyBlockReason.from_jsonN)r#   r$   r%   r&   HEADERZIFRAME_ATTRIBUTEZIN_FENCED_FRAME_TREEZIN_ISOLATED_APPr   r'   r   r   r   r   r   rP     s   rP   c                   @  s2   e Zd ZU ded< ded< dd Zedd Zd	S )
PermissionsPolicyBlockLocatorr   frame_idrP   block_reasonc                 C  s&   t  }| j |d< | j |d< |S )NframeIdblockReason)r;   rT   r   rU   r<   r   r   r   r   #  s    z%PermissionsPolicyBlockLocator.to_jsonc                 C  s    | t |d t|d dS )NrV   rW   )rT   rU   )r   r   rP   r   r   r   r   r   )  s    z'PermissionsPolicyBlockLocator.from_jsonNr#   r$   r%   r=   r   r'   r   r   r   r   r   rS     s
   
rS   c                   @  s>   e Zd ZU ded< ded< dZded< dd	 Zed
d ZdS )PermissionsPolicyFeatureStaterH   featureboolallowedNz.typing.Optional[PermissionsPolicyBlockLocator]locatorc                 C  s:   t  }| j |d< | j|d< | jd k	r6| j |d< |S )NrZ   r\   r]   )r;   rZ   r   r\   r]   r<   r   r   r   r   9  s    

z%PermissionsPolicyFeatureState.to_jsonc                 C  s6   | t |d t|d d|kr.t|d nd dS )NrZ   r\   r]   )rZ   r\   r]   )rH   r   r[   rS   r   r   r   r   r   A  s
    
z'PermissionsPolicyFeatureState.from_json)r#   r$   r%   r=   r]   r   r'   r   r   r   r   r   rY   1  s   
rY   c                   @  sT   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdd Zedd ZdS )OriginTrialTokenStatuszs
    Origin Trial(https://www.chromium.org/blink/origin-trials) support.
    Status for an Origin Trial token.
    ZSuccessZNotSupportedZInsecureZExpiredZWrongOriginZInvalidSignatureZ	MalformedZWrongVersionZFeatureDisabledZTokenDisabledZFeatureDisabledForUserZUnknownTrialc                 C  s   | j S r   r-   r   r   r   r   r   \  s    zOriginTrialTokenStatus.to_jsonc                 C  s   | |S r   r   r   r   r   r   r   _  s    z OriginTrialTokenStatus.from_jsonN)r#   r$   r%   r&   SUCCESSZNOT_SUPPORTEDZINSECUREZEXPIREDZWRONG_ORIGINZINVALID_SIGNATUREZ	MALFORMEDZWRONG_VERSIONZFEATURE_DISABLEDZTOKEN_DISABLEDZFEATURE_DISABLED_FOR_USERZUNKNOWN_TRIALr   r'   r   r   r   r   r   r^   J  s    r^   c                   @  s4   e Zd ZdZdZdZdZdZdd Ze	dd	 Z
d
S )OriginTrialStatusz%
    Status for an Origin Trial.
    ZEnabledZValidTokenNotProvidedZOSNotSupportedZTrialNotAllowedc                 C  s   | j S r   r-   r   r   r   r   r   m  s    zOriginTrialStatus.to_jsonc                 C  s   | |S r   r   r   r   r   r   r   p  s    zOriginTrialStatus.from_jsonN)r#   r$   r%   r&   ZENABLEDZVALID_TOKEN_NOT_PROVIDEDZOS_NOT_SUPPORTEDZTRIAL_NOT_ALLOWEDr   r'   r   r   r   r   r   r`   d  s   r`   c                   @  s(   e Zd ZdZdZdd Zedd ZdS )OriginTrialUsageRestrictionNoneZSubsetc                 C  s   | j S r   r-   r   r   r   r   r   y  s    z#OriginTrialUsageRestriction.to_jsonc                 C  s   | |S r   r   r   r   r   r   r   |  s    z%OriginTrialUsageRestriction.from_jsonN)r#   r$   r%   r/   ZSUBSETr   r'   r   r   r   r   r   ra   u  s
   ra   c                   @  sR   e Zd ZU ded< ded< ded< ded< ded< d	ed
< dd Zedd ZdS )OriginTrialTokenr   originr[   match_sub_domains
trial_nameznetwork.TimeSinceEpochexpiry_timeis_third_partyra   usage_restrictionc                 C  sN   t  }| j|d< | j|d< | j|d< | j |d< | j|d< | j |d< |S )Nrd   matchSubDomains	trialName
expiryTimeisThirdPartyusageRestriction)r;   rd   re   rf   rg   r   rh   ri   r<   r   r   r   r     s    



zOriginTrialToken.to_jsonc              
   C  sJ   | t |d t|d t |d tj|d t|d t|d dS )Nrd   rj   rk   rl   rm   rn   )rd   re   rf   rg   rh   ri   )r   r[   r   TimeSinceEpochr   ra   r   r   r   r   r     s    



zOriginTrialToken.from_jsonNrX   r   r   r   r   rc     s   

rc   c                   @  s>   e Zd ZU ded< ded< dZded< dd	 Zed
d ZdS )OriginTrialTokenWithStatusr   raw_token_textr^   statusNz!typing.Optional[OriginTrialToken]parsed_tokenc                 C  s:   t  }| j|d< | j |d< | jd k	r6| j |d< |S )NrawTokenTextrr   parsedToken)r;   rq   rr   r   rs   r<   r   r   r   r     s    

z"OriginTrialTokenWithStatus.to_jsonc                 C  s6   | t |d t|d d|kr.t|d nd dS )Nrt   rr   ru   )rq   rr   rs   )r   r^   r   rc   r   r   r   r   r     s
    
z$OriginTrialTokenWithStatus.from_json)r#   r$   r%   r=   rs   r   r'   r   r   r   r   r   rp     s   
rp   c                   @  s:   e Zd ZU ded< ded< ded< dd Zed	d
 ZdS )OriginTrialr   rf   r`   rr   z'typing.List[OriginTrialTokenWithStatus]tokens_with_statusc                 C  s6   t  }| j|d< | j |d< dd | jD |d< |S )Nrk   rr   c                 S  s   g | ]}|  qS r   r6   r7   r   r   r   r:     s     z'OriginTrial.to_json.<locals>.<listcomp>tokensWithStatus)r;   rf   rr   r   rw   r<   r   r   r   r     s
    
zOriginTrial.to_jsonc                 C  s.   | t |d t|d dd |d D dS )Nrk   rr   c                 S  s   g | ]}t |qS r   )rp   r   r7   r   r   r   r:     s     z)OriginTrial.from_json.<locals>.<listcomp>rx   )rf   rr   rw   )r   r`   r   r   r   r   r   r     s
    
zOriginTrial.from_jsonNrX   r   r   r   r   rv     s   
rv   c                   @  s   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ed< dZded< dZded< dZded< dZded< dZ	ded< dd Z
edd ZdS )Framez2
    Information about the Frame on the page.
    r   id_network.LoaderId	loader_idr   urldomain_and_registrysecurity_origin	mime_typerD   secure_context_typerF   "cross_origin_isolated_context_typeztyping.List[GatedAPIFeatures]gated_api_featuresNtyping.Optional[FrameId]	parent_idtyping.Optional[str]nameurl_fragmentunreachable_urlztyping.Optional[AdFrameStatus]ad_frame_statusc                 C  s   t  }| j |d< | j |d< | j|d< | j|d< | j|d< | j|d< | j |d< | j	 |d< d	d
 | j
D |d< | jd k	r| j |d< | jd k	r| j|d< | jd k	r| j|d< | jd k	r| j|d< | jd k	r| j |d< |S )NidloaderIdr}   domainAndRegistrysecurityOriginmimeTypesecureContextTypecrossOriginIsolatedContextTypec                 S  s   g | ]}|  qS r   r6   r7   r   r   r   r:     s     z!Frame.to_json.<locals>.<listcomp>gatedAPIFeaturesparentIdr   urlFragmentunreachableUrladFrameStatus)r;   rz   r   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r<   r   r   r   r   
  s*    











zFrame.to_jsonc                 C  s   | t |d tj|d t|d t|d t|d t|d t|d t|d d	d
 |d D d|krt |d nd d|krt|d nd d|krt|d nd d|krt|d nd d|krt|d nd dS )Nr   r   r}   r   r   r   r   r   c                 S  s   g | ]}t |qS r   )rG   r   r7   r   r   r   r:   ,  s     z#Frame.from_json.<locals>.<listcomp>r   r   r   r   r   r   )rz   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   )r   r   r   LoaderIdr   rD   rF   r2   r   r   r   r   r   !  s     



zFrame.from_json)r#   r$   r%   r&   r=   r   r   r   r   r   r   r'   r   r   r   r   r   ry     s$   
ry   c                   @  sn   e Zd ZU dZded< ded< ded< dZded	< dZd
ed< dZded< dZded< dd Z	e
dd ZdS )FrameResourcez5
    Information about the Resource on the page.
    r   r}   znetwork.ResourceTypetype_r   N'typing.Optional[network.TimeSinceEpoch]last_modifiedtyping.Optional[float]content_sizetyping.Optional[bool]failedcanceledc                 C  s   t  }| j|d< | j |d< | j|d< | jd k	r@| j |d< | jd k	rT| j|d< | jd k	rh| j|d< | jd k	r|| j|d< |S )Nr}   typer   lastModifiedcontentSizer   r   )	r;   r}   r   r   r   r   r   r   r   r<   r   r   r   r   O  s    








zFrameResource.to_jsonc              
   C  s   | t |d tj|d t |d d|kr<tj|d nd d|krRt|d nd d|krht|d nd d|kr~t|d nd dS )	Nr}   r   r   r   r   r   r   )r}   r   r   r   r   r   r   )r   r   ZResourceTyper   ro   floatr[   r   r   r   r   r   ^  s    

zFrameResource.from_json)r#   r$   r%   r&   r=   r   r   r   r   r   r'   r   r   r   r   r   r   5  s   
r   c                   @  sB   e Zd ZU dZded< ded< dZded< d	d
 Zedd ZdS )FrameResourceTreezR
    Information about the Frame hierarchy along with their cached resources.
    ry   frameztyping.List[FrameResource]	resourcesNz/typing.Optional[typing.List[FrameResourceTree]]child_framesc                 C  sJ   t  }| j |d< dd | jD |d< | jd k	rFdd | jD |d< |S )Nr   c                 S  s   g | ]}|  qS r   r6   r7   r   r   r   r:   |  s     z-FrameResourceTree.to_json.<locals>.<listcomp>r   c                 S  s   g | ]}|  qS r   r6   r7   r   r   r   r:   ~  s     childFrames)r;   r   r   r   r   r<   r   r   r   r   y  s    
zFrameResourceTree.to_jsonc                 C  s@   | t |d dd |d D d|kr8dd |d D nd dS )Nr   c                 S  s   g | ]}t |qS r   )r   r   r7   r   r   r   r:     s     z/FrameResourceTree.from_json.<locals>.<listcomp>r   r   c                 S  s   g | ]}t |qS r   r   r   r7   r   r   r   r:     s     )r   r   r   ry   r   r   r   r   r   r     s
    zFrameResourceTree.from_json	r#   r$   r%   r&   r=   r   r   r'   r   r   r   r   r   r   k  s   
r   c                   @  s:   e Zd ZU dZded< dZded< dd Zed	d
 ZdS )	FrameTreez0
    Information about the Frame hierarchy.
    ry   r   Nz'typing.Optional[typing.List[FrameTree]]r   c                 C  s6   t  }| j |d< | jd k	r2dd | jD |d< |S )Nr   c                 S  s   g | ]}|  qS r   r6   r7   r   r   r   r:     s     z%FrameTree.to_json.<locals>.<listcomp>r   )r;   r   r   r   r<   r   r   r   r     s
    
zFrameTree.to_jsonc                 C  s0   | t |d d|kr(dd |d D nd dS )Nr   r   c                 S  s   g | ]}t |qS r   r   r   r7   r   r   r   r:     s     z'FrameTree.from_json.<locals>.<listcomp>)r   r   r   r   r   r   r   r     s    zFrameTree.from_jsonr   r   r   r   r   r     s   
r   c                      sB   e Zd ZdZddddZedd dddZ fd	d
Z  ZS )ScriptIdentifierz#
    Unique script identifier.
    r   r   c                 C  s   | S r   r   r   r   r   r   r     s    zScriptIdentifier.to_jsonr   c                 C  s   | |S r   r   r   r   r   r   r     s    zScriptIdentifier.from_jsonc                   s   d t  S )NzScriptIdentifier({})r   r   r    r   r   r     s    zScriptIdentifier.__repr__r"   r   r   r    r   r     s
   r   c                   @  sX   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdd Zedd ZdS )TransitionTypez
    Transition type.
    linktypedZaddress_barZauto_bookmarkZauto_subframeZmanual_subframe	generatedZauto_toplevelZform_submitreloadkeywordZkeyword_generatedotherc                 C  s   | j S r   r-   r   r   r   r   r     s    zTransitionType.to_jsonc                 C  s   | |S r   r   r   r   r   r   r     s    zTransitionType.from_jsonN)r#   r$   r%   r&   ZLINKZTYPEDZADDRESS_BARZAUTO_BOOKMARKZAUTO_SUBFRAMEZMANUAL_SUBFRAMEZ	GENERATEDZAUTO_TOPLEVELZFORM_SUBMITRELOADZKEYWORDZKEYWORD_GENERATEDOTHERr   r'   r   r   r   r   r   r     s"   r   c                   @  sN   e Zd ZU dZded< ded< ded< ded< ded	< d
d Zedd ZdS )NavigationEntryz#
    Navigation history entry.
    intrz   r   r}   user_typed_urltitler   transition_typec                 C  s@   t  }| j|d< | j|d< | j|d< | j|d< | j |d< |S )Nr   r}   userTypedURLr   transitionType)r;   rz   r}   r   r   r   r   r<   r   r   r   r     s    



zNavigationEntry.to_jsonc              	   C  s<   | t |d t|d t|d t|d t|d dS )Nr   r}   r   r   r   )rz   r}   r   r   r   )r   r   r   r   r   r   r   r   r     s    



zNavigationEntry.from_jsonNrC   r   r   r   r   r     s   
	r   c                   @  sb   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	Zd
ed< dd Zedd Zd	S )ScreencastFrameMetadataz$
    Screencast frame metadata.
    r   
offset_toppage_scale_factordevice_widthdevice_heightscroll_offset_xscroll_offset_yNr   	timestampc                 C  s^   t  }| j|d< | j|d< | j|d< | j|d< | j|d< | j|d< | jd k	rZ| j |d< |S )N	offsetToppageScaleFactordeviceWidthdeviceHeightscrollOffsetXscrollOffsetYr   )	r;   r   r   r   r   r   r   r   r   r<   r   r   r   r     s    






zScreencastFrameMetadata.to_jsonc                 C  s^   | t |d t |d t |d t |d t |d t |d d|krVtj|d nd dS )	Nr   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   ro   r   r   r   r   r   r     s    





z!ScreencastFrameMetadata.from_json)	r#   r$   r%   r&   r=   r   r   r'   r   r   r   r   r   r     s   
r   c                   @  s4   e Zd ZdZdZdZdZdZdd Ze	dd	 Z
d
S )
DialogTypez!
    Javascript dialog type.
    alertZconfirmpromptZbeforeunloadc                 C  s   | j S r   r-   r   r   r   r   r   1  s    zDialogType.to_jsonc                 C  s   | |S r   r   r   r   r   r   r   4  s    zDialogType.from_jsonN)r#   r$   r%   r&   ALERTZCONFIRMZPROMPTZBEFOREUNLOADr   r'   r   r   r   r   r   r   (  s   r   c                   @  sF   e Zd ZU dZded< ded< ded< ded< dd	 Zed
d ZdS )AppManifestErrorz*
    Error while paring app manifest.
    r   messager   criticallinecolumnc                 C  s2   t  }| j|d< | j|d< | j|d< | j|d< |S )Nr   r   r   r   )r;   r   r   r   r   r<   r   r   r   r   J  s    



zAppManifestError.to_jsonc                 C  s0   | t |d t|d t|d t|d dS )Nr   r   r   r   )r   r   r   r   )r   r   r   r   r   r   r   R  s    



zAppManifestError.from_jsonNrC   r   r   r   r   r   9  s   
r   c                   @  s.   e Zd ZU dZded< dd Zedd ZdS )	AppManifestParsedPropertiesz)
    Parsed app manifest properties.
    r   scopec                 C  s   t  }| j|d< |S )Nr   )r;   r   r<   r   r   r   r   d  s    
z#AppManifestParsedProperties.to_jsonc                 C  s   | t |d dS )Nr   )r   r   r   r   r   r   r   i  s    
z%AppManifestParsedProperties.from_jsonNrC   r   r   r   r   r   \  s
   
r   c                   @  sF   e Zd ZU dZded< ded< ded< ded< dd Zed	d
 ZdS )LayoutViewportz2
    Layout viewport position and dimensions.
    r   page_xpage_yclient_widthclient_heightc                 C  s2   t  }| j|d< | j|d< | j|d< | j|d< |S )NpageXpageYclientWidthclientHeight)r;   r   r   r   r   r<   r   r   r   r     s    



zLayoutViewport.to_jsonc                 C  s0   | t |d t |d t |d t |d dS )Nr   r   r   r   )r   r   r   r   r   r   r   r   r   r     s    



zLayoutViewport.from_jsonNrC   r   r   r   r   r   p  s   
r   c                   @  sj   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
Zded< dd Zedd Zd
S )VisualViewportz:
    Visual viewport position, dimensions, and scale.
    r   offset_xoffset_yr   r   r   r   scaleNr   zoomc                 C  sd   t  }| j|d< | j|d< | j|d< | j|d< | j|d< | j|d< | j|d< | jd k	r`| j|d< |S )	NoffsetXoffsetYr   r   r   r   r   r   )	r;   r   r   r   r   r   r   r   r   r<   r   r   r   r     s    








zVisualViewport.to_jsonc                 C  sd   | t |d t |d t |d t |d t |d t |d t |d d|kr\t |d nd d	S )
Nr   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r     s    






zVisualViewport.from_json)	r#   r$   r%   r&   r=   r   r   r'   r   r   r   r   r   r     s   
r   c                   @  sN   e Zd ZU dZded< ded< ded< ded< ded< dd	 Zed
d ZdS )Viewportz,
    Viewport for capturing screenshot.
    r   xywidthheightr   c                 C  s<   t  }| j|d< | j|d< | j|d< | j|d< | j|d< |S )Nr   r   r   r   r   )r;   r   r   r   r   r   r<   r   r   r   r     s    




zViewport.to_jsonc                 C  s:   | t |d t |d t |d t |d t |d dS )Nr   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r     s    




zViewport.from_jsonNrC   r   r   r   r   r     s   
	r   c                   @  sz   e Zd ZU dZdZded< dZded< dZded< dZded< dZ	ded< dZ
ded	< dZded
< dd Zedd ZdS )FontFamiliesz+
    Generic font families collection.
    Nr   standardfixedserif
sans_serifcursivefantasymathc                 C  s   t  }| jd k	r| j|d< | jd k	r.| j|d< | jd k	rB| j|d< | jd k	rV| j|d< | jd k	rj| j|d< | jd k	r~| j|d< | jd k	r| j|d< |S )Nr   r   r   	sansSerifr   r   r   )r;   r   r   r   r   r   r   r   r<   r   r   r   r     s     













zFontFamilies.to_jsonc              
   C  s   | d|krt |d nd d|kr,t |d nd d|krBt |d nd d|krXt |d nd d|krnt |d nd d|krt |d nd d|krt |d nd dS )	Nr   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r     s    zFontFamilies.from_json)r#   r$   r%   r&   r   r=   r   r   r   r   r   r   r   r'   r   r   r   r   r   r     s   
r   c                   @  s6   e Zd ZU dZded< ded< dd Zedd	 Zd
S )ScriptFontFamiliesz0
    Font families collection for a script.
    r   scriptr   font_familiesc                 C  s"   t  }| j|d< | j |d< |S )Nr   fontFamilies)r;   r   r   r   r<   r   r   r   r   7  s    
zScriptFontFamilies.to_jsonc                 C  s   | t |d t|d dS )Nr   r   )r   r   )r   r   r   r   r   r   r   r   =  s    
zScriptFontFamilies.from_jsonNrC   r   r   r   r   r   ,  s   
r   c                   @  s>   e Zd ZU dZdZded< dZded< dd Zedd	 Z	dS )
	FontSizesz
    Default font sizes.
    Ntyping.Optional[int]r   r   c                 C  s2   t  }| jd k	r| j|d< | jd k	r.| j|d< |S )Nr   r   )r;   r   r   r<   r   r   r   r   P  s    



zFontSizes.to_jsonc                 C  s4   | d|krt |d nd d|kr,t |d nd dS )Nr   r   )r   r   r   r   r   r   r   r   X  s    zFontSizes.from_json)
r#   r$   r%   r&   r   r=   r   r   r'   r   r   r   r   r   r   E  s   
r   c                   @  sH   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
Zdd Zedd ZdS )ClientNavigationReasonZanchorClickZformSubmissionGetZformSubmissionPostZhttpHeaderRefreshZinitialFrameNavigationZmetaTagRefreshr   ZpageBlockInterstitialr   ZscriptInitiatedc                 C  s   | j S r   r-   r   r   r   r   r   l  s    zClientNavigationReason.to_jsonc                 C  s   | |S r   r   r   r   r   r   r   o  s    z ClientNavigationReason.from_jsonN)r#   r$   r%   ZANCHOR_CLICKZFORM_SUBMISSION_GETZFORM_SUBMISSION_POSTZHTTP_HEADER_REFRESHZINITIAL_FRAME_NAVIGATIONZMETA_TAG_REFRESHr   ZPAGE_BLOCK_INTERSTITIALr   ZSCRIPT_INITIATEDr   r'   r   r   r   r   r   r   `  s   r   c                   @  s0   e Zd ZdZdZdZdZdd Zedd Z	d	S )
ClientNavigationDispositionZ
currentTabZnewTabZ	newWindowdownloadc                 C  s   | j S r   r-   r   r   r   r   r   z  s    z#ClientNavigationDisposition.to_jsonc                 C  s   | |S r   r   r   r   r   r   r   }  s    z%ClientNavigationDisposition.from_jsonN)
r#   r$   r%   ZCURRENT_TABZNEW_TABZ
NEW_WINDOWZDOWNLOADr   r'   r   r   r   r   r   r  t  s   r  c                   @  s2   e Zd ZU ded< ded< dd Zedd ZdS )	InstallabilityErrorArgumentr   r   r.   c                 C  s   t  }| j|d< | j|d< |S )Nr   r.   )r;   r   r.   r<   r   r   r   r     s    

z#InstallabilityErrorArgument.to_jsonc                 C  s   | t |d t |d dS )Nr   r.   )r   r.   r   r   r   r   r   r     s    

z%InstallabilityErrorArgument.from_jsonNrX   r   r   r   r   r    s
   
r  c                   @  s6   e Zd ZU dZded< ded< dd Zedd	 Zd
S )InstallabilityErrorz"
    The installability error
    r   error_idz(typing.List[InstallabilityErrorArgument]error_argumentsc                 C  s(   t  }| j|d< dd | jD |d< |S )NerrorIdc                 S  s   g | ]}|  qS r   r6   r7   r   r   r   r:     s     z/InstallabilityError.to_json.<locals>.<listcomp>errorArguments)r;   r  r  r<   r   r   r   r     s    
zInstallabilityError.to_jsonc                 C  s"   | t |d dd |d D dS )Nr  c                 S  s   g | ]}t |qS r   )r  r   r7   r   r   r   r:     s     z1InstallabilityError.from_json.<locals>.<listcomp>r  )r  r  r   r   r   r   r   r     s    
zInstallabilityError.from_jsonNrC   r   r   r   r   r    s   
r  c                   @  sD   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
d Zedd ZdS )ReferrerPolicyz7
    The referring-policy used for the navigation.
    Z
noReferrerZnoReferrerWhenDowngraderd   ZoriginWhenCrossOriginZ
sameOriginZstrictOriginZstrictOriginWhenCrossOriginZ	unsafeUrlc                 C  s   | j S r   r-   r   r   r   r   r     s    zReferrerPolicy.to_jsonc                 C  s   | |S r   r   r   r   r   r   r     s    zReferrerPolicy.from_jsonN)r#   r$   r%   r&   ZNO_REFERRERZNO_REFERRER_WHEN_DOWNGRADEZORIGINZORIGIN_WHEN_CROSS_ORIGINZSAME_ORIGINZSTRICT_ORIGINZSTRICT_ORIGIN_WHEN_CROSS_ORIGINZ
UNSAFE_URLr   r'   r   r   r   r   r   r	    s   r	  c                   @  s:   e Zd ZU dZded< dZded< dd Zed	d
 ZdS )CompilationCacheParamszV
    Per-script compilation cache parameters for ``Page.produceCompilationCache``
    r   r}   Nr   eagerc                 C  s(   t  }| j|d< | jd k	r$| j|d< |S )Nr}   r  )r;   r}   r  r<   r   r   r   r     s
    


zCompilationCacheParams.to_jsonc                 C  s(   | t |d d|kr t|d nd dS )Nr}   r  )r}   r  r   r[   r   r   r   r   r     s    
z CompilationCacheParams.from_json)	r#   r$   r%   r&   r=   r  r   r'   r   r   r   r   r   r
    s   
r
  c                   @  s:   e Zd ZU dZded< dZded< dd Zedd	 ZdS )

FileFilterNr   r   !typing.Optional[typing.List[str]]acceptsc                 C  s<   t  }| jd k	r| j|d< | jd k	r8dd | jD |d< |S )Nr   c                 S  s   g | ]}|qS r   r   r7   r   r   r   r:     s     z&FileFilter.to_json.<locals>.<listcomp>r  )r;   r   r  r<   r   r   r   r     s    


zFileFilter.to_jsonc                 C  s:   | d|krt |d nd d|kr2dd |d D nd dS )Nr   r  c                 S  s   g | ]}t |qS r   r   r7   r   r   r   r:     s     z(FileFilter.from_json.<locals>.<listcomp>)r   r  r   r   r   r   r   r     s    zFileFilter.from_json)	r#   r$   r%   r   r=   r  r   r'   r   r   r   r   r   r    s
   
r  c                   @  sR   e Zd ZU ded< ded< ded< dZded< dZded	< d
d Zedd ZdS )FileHandlerr   actionr   launch_typeN+typing.Optional[typing.List[ImageResource]]icons(typing.Optional[typing.List[FileFilter]]r  c                 C  sd   t  }| j|d< | j|d< | j|d< | jd k	rBdd | jD |d< | jd k	r`dd | jD |d< |S )	Nr  r   
launchTypec                 S  s   g | ]}|  qS r   r6   r7   r   r   r   r:     s     z'FileHandler.to_json.<locals>.<listcomp>r  c                 S  s   g | ]}|  qS r   r6   r7   r   r   r   r:     s     r  )r;   r  r   r  r  r  r<   r   r   r   r     s    




zFileHandler.to_jsonc                 C  s^   | t |d t |d t |d d|kr:dd |d D nd d|krVdd |d D nd d	S )
Nr  r   r  r  c                 S  s   g | ]}t |qS r   ImageResourcer   r7   r   r   r   r:     s     z)FileHandler.from_json.<locals>.<listcomp>r  c                 S  s   g | ]}t |qS r   r  r   r7   r   r   r   r:     s     )r  r   r  r  r  r   r   r   r   r   r     s    


zFileHandler.from_json)	r#   r$   r%   r=   r  r  r   r'   r   r   r   r   r   r    s   
r  c                   @  sF   e Zd ZU dZded< dZded< dZded< dd	 Zed
d Z	dS )r  z@
    The image definition used in both icon and screenshot.
    r   r}   Nr   sizesr   c                 C  s<   t  }| j|d< | jd k	r$| j|d< | jd k	r8| j|d< |S )Nr}   r  r   )r;   r}   r  r   r<   r   r   r   r   )  s    




zImageResource.to_jsonc                 C  s>   | t |d d|kr t |d nd d|kr6t |d nd dS )Nr}   r  r   )r}   r  r   r   r   r   r   r   r   2  s
    
zImageResource.from_json)
r#   r$   r%   r&   r=   r  r   r   r'   r   r   r   r   r   r    s   
	r  c                   @  s*   e Zd ZU ded< dd Zedd ZdS )LaunchHandlerr   client_modec                 C  s   t  }| j|d< |S )N
clientMode)r;   r  r<   r   r   r   r   ?  s    
zLaunchHandler.to_jsonc                 C  s   | t |d dS )Nr  )r  r   r   r   r   r   r   D  s    
zLaunchHandler.from_jsonNrX   r   r   r   r   r  ;  s   
r  c                   @  s2   e Zd ZU ded< ded< dd Zedd ZdS )	ProtocolHandlerr   protocolr}   c                 C  s   t  }| j|d< | j|d< |S )Nr  r}   )r;   r  r}   r<   r   r   r   r   Q  s    

zProtocolHandler.to_jsonc                 C  s   | t |d t |d dS )Nr  r}   )r  r}   r   r   r   r   r   r   W  s    

zProtocolHandler.from_jsonNrX   r   r   r   r   r  K  s
   
r  c                   @  s6   e Zd ZU ded< dZded< dd Zedd	 ZdS )
RelatedApplicationr   r}   Nr   rz   c                 C  s(   t  }| j|d< | jd k	r$| j|d< |S )Nr}   r   )r;   r}   rz   r<   r   r   r   r   e  s
    


zRelatedApplication.to_jsonc                 C  s(   | t |d d|kr t |d nd dS )Nr}   r   )r}   rz   r   r   r   r   r   r   l  s    
zRelatedApplication.from_json)r#   r$   r%   r=   rz   r   r'   r   r   r   r   r   r   _  s
   
r   c                   @  s2   e Zd ZU ded< ded< dd Zedd Zd	S )
ScopeExtensionr   rd   r[   has_origin_wildcardc                 C  s   t  }| j|d< | j|d< |S )Nrd   hasOriginWildcard)r;   rd   r"  r<   r   r   r   r   |  s    

zScopeExtension.to_jsonc                 C  s   | t |d t|d dS )Nrd   r#  )rd   r"  r  r   r   r   r   r     s    

zScopeExtension.from_jsonNrX   r   r   r   r   r!  t  s
   
r!  c                   @  s>   e Zd ZU ded< ded< dZded< dd	 Zed
d ZdS )
Screenshotr  imager   form_factorNr   labelc                 C  s6   t  }| j |d< | j|d< | jd k	r2| j|d< |S )Nr%  
formFactorr'  )r;   r%  r   r&  r'  r<   r   r   r   r     s    


zScreenshot.to_jsonc                 C  s4   | t |d t|d d|kr,t|d nd dS )Nr%  r(  r'  )r%  r&  r'  )r  r   r   r   r   r   r   r     s
    
zScreenshot.from_json)r#   r$   r%   r=   r'  r   r'   r   r   r   r   r   r$    s   
r$  c                   @  sj   e Zd ZU ded< ded< ded< dZded< dZded< dZded	< dZd
ed< dd Ze	dd Z
dS )ShareTargetr   r  methodenctypeNr   r   textr}   r  filesc                 C  s   t  }| j|d< | j|d< | j|d< | jd k	r8| j|d< | jd k	rL| j|d< | jd k	r`| j|d< | jd k	r~dd | jD |d	< |S )
Nr  r*  r+  r   r,  r}   c                 S  s   g | ]}|  qS r   r6   r7   r   r   r   r:     s     z'ShareTarget.to_json.<locals>.<listcomp>r-  )r;   r  r*  r+  r   r,  r}   r-  r<   r   r   r   r     s    









zShareTarget.to_jsonc              
   C  s   | t |d t |d t |d d|kr4t |d nd d|krJt |d nd d|kr`t |d nd d|kr|dd	 |d D nd d
S )Nr  r*  r+  r   r,  r}   r-  c                 S  s   g | ]}t |qS r   r  r7   r   r   r   r:     s     z)ShareTarget.from_json.<locals>.<listcomp>)r  r*  r+  r   r,  r}   r-  r   r   r   r   r   r     s    


zShareTarget.from_json)r#   r$   r%   r=   r   r,  r}   r-  r   r'   r   r   r   r   r   r)    s   
r)  c                   @  s2   e Zd ZU ded< ded< dd Zedd ZdS )	Shortcutr   r   r}   c                 C  s   t  }| j|d< | j|d< |S )Nr   r}   )r;   r   r}   r<   r   r   r   r     s    

zShortcut.to_jsonc                 C  s   | t |d t |d dS )Nr   r}   )r   r}   r   r   r   r   r   r     s    

zShortcut.from_jsonNrX   r   r   r   r   r.    s
   
r.  c                   @  s6  e Zd ZU dZded< dZded< dZded< dZded< dZded< dZ	d	ed
< dZ
ded< dZded< dZded< dZded< dZded< dZded< dZded< dZded< dZded< dZded< dZded< dZded< dZded< dZded < dZd!ed"< dZded#< dZded$< d%d& Zed'd( ZdS ))WebAppManifestNr   background_colordescriptiondir_displayr  display_overridesz)typing.Optional[typing.List[FileHandler]]file_handlersr  r  rz   langztyping.Optional[LaunchHandler]launch_handlerr   orientationr   prefer_related_applicationsz-typing.Optional[typing.List[ProtocolHandler]]protocol_handlersz0typing.Optional[typing.List[RelatedApplication]]related_applicationsr   z,typing.Optional[typing.List[ScopeExtension]]scope_extensionsz(typing.Optional[typing.List[Screenshot]]screenshotsztyping.Optional[ShareTarget]share_target
short_namez&typing.Optional[typing.List[Shortcut]]	shortcuts	start_urltheme_colorc                 C  sH  t  }| jd k	r| j|d< | jd k	r.| j|d< | jd k	rB| j|d< | jd k	rV| j|d< | jd k	rtdd | jD |d< | jd k	rdd | jD |d	< | jd k	rd
d | jD |d< | jd k	r| j|d< | j	d k	r| j	|d< | j
d k	r| j
 |d< | jd k	r| j|d< | jd k	r| j|d< | jd k	r2| j|d< | jd k	rRdd | jD |d< | jd k	rrdd | jD |d< | jd k	r| j|d< | jd k	rdd | jD |d< | jd k	rdd | jD |d< | jd k	r| j |d< | jd k	r| j|d< | jd k	rdd | jD |d< | jd k	r.| j|d< | jd k	rD| j|d < |S )!NbackgroundColorr1  dirr3  c                 S  s   g | ]}|qS r   r   r7   r   r   r   r:   )  s     z*WebAppManifest.to_json.<locals>.<listcomp>displayOverridesc                 S  s   g | ]}|  qS r   r6   r7   r   r   r   r:   +  s     fileHandlersc                 S  s   g | ]}|  qS r   r6   r7   r   r   r   r:   -  s     r  r   r6  launchHandlerr   r8  preferRelatedApplicationsc                 S  s   g | ]}|  qS r   r6   r7   r   r   r   r:   ;  s     protocolHandlersc                 S  s   g | ]}|  qS r   r6   r7   r   r   r   r:   =  s     relatedApplicationsr   c                 S  s   g | ]}|  qS r   r6   r7   r   r   r   r:   A  s     scopeExtensionsc                 S  s   g | ]}|  qS r   r6   r7   r   r   r   r:   C  s     r=  shareTarget	shortNamec                 S  s   g | ]}|  qS r   r6   r7   r   r   r   r:   I  s     r@  startUrl
themeColor)r;   r0  r1  r2  r3  r4  r5  r  rz   r6  r7  r   r   r8  r9  r:  r;  r   r<  r=  r>  r?  r@  rA  rB  r<   r   r   r   r     s`    






















zWebAppManifest.to_jsonc                 C  sP  | d|krt |d nd d|kr,t |d nd d|krBt |d nd d|krXt |d nd d|krtdd |d D nd d|krd	d |d D nd d
|krdd |d
 D nd d|krt |d nd d|krt |d nd d|krt|d nd d|krt |d nd d|kr t |d nd d|kr8t|d nd d|krVdd |d D nd d|krtdd |d D nd d|krt |d nd d|krdd |d D nd d|krdd |d D nd d|krt|d nd d|krt |d nd d|krdd |d D nd d|kr0t |d nd d |krHt |d  nd d!S )"NrC  r1  rD  r3  rE  c                 S  s   g | ]}t |qS r   r   r7   r   r   r   r:   W  s     z,WebAppManifest.from_json.<locals>.<listcomp>rF  c                 S  s   g | ]}t |qS r   )r  r   r7   r   r   r   r:   X  s     r  c                 S  s   g | ]}t |qS r   r  r7   r   r   r   r:   Y  s     r   r6  rG  r   r8  rH  rI  c                 S  s   g | ]}t |qS r   )r  r   r7   r   r   r   r:   `  s     rJ  c                 S  s   g | ]}t |qS r   )r   r   r7   r   r   r   r:   a  s     r   rK  c                 S  s   g | ]}t |qS r   )r!  r   r7   r   r   r   r:   c  s     r=  c                 S  s   g | ]}t |qS r   )r$  r   r7   r   r   r   r:   d  s     rL  rM  r@  c                 S  s   g | ]}t |qS r   )r.  r   r7   r   r   r   r:   g  s     rN  rO  )r0  r1  r2  r3  r4  r5  r  rz   r6  r7  r   r8  r9  r:  r;  r   r<  r=  r>  r?  r@  rA  rB  )r   r  r   r[   r)  r   r   r   r   r   P  s2    zWebAppManifest.from_json)r#   r$   r%   r0  r=   r1  r2  r3  r4  r5  r  rz   r6  r7  r   r8  r9  r:  r;  r   r<  r=  r>  r?  r@  rA  rB  r   r'   r   r   r   r   r   r/    s4   
2r/  c                   @  s4   e Zd ZdZdZdZdZdZdd Ze	dd	 Z
d
S )AutoResponseModezI
    Enum of possible auto-response for permission / prompt dialogs.
    r*   Z
autoAcceptZ
autoRejectZ
autoOptOutc                 C  s   | j S r   r-   r   r   r   r   r   v  s    zAutoResponseMode.to_jsonc                 C  s   | |S r   r   r   r   r   r   r   y  s    zAutoResponseMode.from_jsonN)r#   r$   r%   r&   r/   ZAUTO_ACCEPTZAUTO_REJECTZAUTO_OPT_OUTr   r'   r   r   r   r   r   rP  m  s   rP  c                   @  s,   e Zd ZdZdZdZdd Zedd ZdS )	NavigationTypez-
    The type of a frameNavigated event.
    Z
NavigationZBackForwardCacheRestorec                 C  s   | j S r   r-   r   r   r   r   r     s    zNavigationType.to_jsonc                 C  s   | |S r   r   r   r   r   r   r     s    zNavigationType.from_jsonN)	r#   r$   r%   r&   Z
NAVIGATIONZBACK_FORWARD_CACHE_RESTOREr   r'   r   r   r   r   r   rQ  ~  s   rQ  c                   @  sP  e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#Z%d$Z&d%Z'd&Z(d'Z)d(Z*d)Z+d*Z,d+Z-d,Z.d-Z/d.Z0d/Z1d0Z2d1Z3d2Z4d3Z5d4Z6d5Z7d6Z8d7Z9d8Z:d9Z;d:Z<d;Z=d<Z>d=Z?d>Z@d?ZAd@ZBdAZCdBZDdCZEdDZFdEZGdFZHdGZIdHZJdIZKdJZLdKZMdLZNdMZOdNZPdOZQdPZRdQZSdRZTdSZUdTZVdUZWdVZXdWZYdXZZdYZ[dZZ\d[Z]d\Z^d]Z_d^Z`d_Zad`ZbdaZcdbZddcZeddZfdeZgdfZhdgZidhZjdiZkdjZldkZmdlZndmZodnZpdoZqdpZrdqZsdrZtdsZudtZvduZwdvZxdwZydxZzdyZ{dzZ|d{Z}d|Z~d}Zd~ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdd Zedd ZdS )!BackForwardCacheNotRestoredReasonz>
    List of not restored reasons for back-forward cache.
    ZNotPrimaryMainFrameZBackForwardCacheDisabledZRelatedActiveContentsExistZHTTPStatusNotOKZSchemeNotHTTPOrHTTPSZLoadingZWasGrantedMediaAccessZDisableForRenderFrameHostCalledZDomainNotAllowedZHTTPMethodNotGETZSubframeIsNavigatingTimeoutZ
CacheLimitZJavaScriptExecutionZRendererProcessKilledZRendererProcessCrashedZSchedulerTrackedFeatureUsedZConflictingBrowsingInstanceZCacheFlushedZServiceWorkerVersionActivationZSessionRestoredZServiceWorkerPostMessageZ3EnteredBackForwardCacheBeforeServiceWorkerHostAddedZRenderFrameHostReused_SameSiteZRenderFrameHostReused_CrossSiteZServiceWorkerClaimZIgnoreEventAndEvictZHaveInnerContentsZTimeoutPuttingInCacheZ#BackForwardCacheDisabledByLowMemoryZ%BackForwardCacheDisabledByCommandLineZ,NetworkRequestDatapipeDrainedAsBytesConsumerZNetworkRequestRedirectedZNetworkRequestTimeoutZNetworkExceedsBufferLimitZ!NavigationCancelledWhileRestoringZNotMostRecentNavigationEntryZ$BackForwardCacheDisabledForPrerenderZUserAgentOverrideDiffersZForegroundCacheLimitZBrowsingInstanceNotSwappedZ#BackForwardCacheDisabledForDelegateZUnloadHandlerExistsInMainFrameZUnloadHandlerExistsInSubFrameZServiceWorkerUnregistrationZCacheControlNoStoreZ!CacheControlNoStoreCookieModifiedZ)CacheControlNoStoreHTTPOnlyCookieModifiedZNoResponseHeadUnknownZ,ActivationNavigationsDisallowedForBug1234857ZErrorDocumentZFencedFramesEmbedderZCookieDisabledZHTTPAuthRequiredZCookieFlushedZBroadcastChannelOnMessageZWebViewSettingsChangedZWebViewJavaScriptObjectChangedZWebViewMessageListenerInjectedZ#WebViewSafeBrowsingAllowlistChangedZ%WebViewDocumentStartJavascriptChangedZ	WebSocketZWebTransportZWebRTCZ"MainResourceHasCacheControlNoStoreZ"MainResourceHasCacheControlNoCacheZ!SubresourceHasCacheControlNoStoreZ!SubresourceHasCacheControlNoCacheZContainsPluginsZDocumentLoadedZOutstandingNetworkRequestOthersZRequestedMIDIPermissionZRequestedAudioCapturePermissionZRequestedVideoCapturePermissionZ'RequestedBackForwardCacheBlockedSensorsZ!RequestedBackgroundWorkPermissionZBroadcastChannelZWebXRZSharedWorkerZWebLocksZWebHIDZWebShareZRequestedStorageAccessGrantZWebNfcZOutstandingNetworkRequestFetchZOutstandingNetworkRequestXHRZ	AppBannerZPrintingZWebDatabaseZPictureInPictureZSpeechRecognizerZIdleManagerZPaymentManagerZSpeechSynthesisZKeyboardLockZWebOTPServiceZ%OutstandingNetworkRequestDirectSocketZInjectedJavascriptZInjectedStyleSheetZKeepaliveRequestZIndexedDBEventZDummyZ3JsNetworkRequestReceivedCacheControlNoStoreResourceZWebRTCStickyZWebTransportStickyZWebSocketStickyZ	SmartCardZLiveMediaStreamTrackZUnloadHandlerZParserAbortedZContentSecurityHandlerZContentWebAuthenticationAPIZContentFileChooserZContentSerialZContentFileSystemAccessZ!ContentMediaDevicesDispatcherHostZContentWebBluetoothZContentWebUSBZContentMediaSessionServiceZContentScreenReaderZContentDiscardedZEmbedderPopupBlockerTabHelperZ)EmbedderSafeBrowsingTriggeredPopupBlockerZ!EmbedderSafeBrowsingThreatDetailsZEmbedderAppBannerManagerZ EmbedderDomDistillerViewerSourceZ/EmbedderDomDistillerSelfDeletingRequestDelegateZ EmbedderOomInterventionTabHelperZEmbedderOfflinePageZ8EmbedderChromePasswordManagerClientBindCredentialManagerZ EmbedderPermissionRequestManagerZEmbedderModalDialogZEmbedderExtensionsZEmbedderExtensionMessagingZ%EmbedderExtensionMessagingForOpenPortZ)EmbedderExtensionSentMessageToCachedFrameZRequestedByWebViewClientZPostMessageByWebViewClientc                 C  s   | j S r   r-   r   r   r   r   r     s    z)BackForwardCacheNotRestoredReason.to_jsonc                 C  s   | |S r   r   r   r   r   r   r      s    z+BackForwardCacheNotRestoredReason.from_jsonN)r#   r$   r%   r&   ZNOT_PRIMARY_MAIN_FRAMEZBACK_FORWARD_CACHE_DISABLEDZRELATED_ACTIVE_CONTENTS_EXISTZHTTP_STATUS_NOT_OKZSCHEME_NOT_HTTP_OR_HTTPSZLOADINGZWAS_GRANTED_MEDIA_ACCESSZ$DISABLE_FOR_RENDER_FRAME_HOST_CALLEDZDOMAIN_NOT_ALLOWEDZHTTP_METHOD_NOT_GETZSUBFRAME_IS_NAVIGATINGTIMEOUTZCACHE_LIMITZJAVA_SCRIPT_EXECUTIONZRENDERER_PROCESS_KILLEDZRENDERER_PROCESS_CRASHEDZSCHEDULER_TRACKED_FEATURE_USEDZCONFLICTING_BROWSING_INSTANCEZCACHE_FLUSHEDZ!SERVICE_WORKER_VERSION_ACTIVATIONZSESSION_RESTOREDZSERVICE_WORKER_POST_MESSAGEZ;ENTERED_BACK_FORWARD_CACHE_BEFORE_SERVICE_WORKER_HOST_ADDEDZ"RENDER_FRAME_HOST_REUSED_SAME_SITEZ#RENDER_FRAME_HOST_REUSED_CROSS_SITEZSERVICE_WORKER_CLAIMZIGNORE_EVENT_AND_EVICTZHAVE_INNER_CONTENTSZTIMEOUT_PUTTING_IN_CACHEZ)BACK_FORWARD_CACHE_DISABLED_BY_LOW_MEMORYZ+BACK_FORWARD_CACHE_DISABLED_BY_COMMAND_LINEZ2NETWORK_REQUEST_DATAPIPE_DRAINED_AS_BYTES_CONSUMERZNETWORK_REQUEST_REDIRECTEDZNETWORK_REQUEST_TIMEOUTZNETWORK_EXCEEDS_BUFFER_LIMITZ$NAVIGATION_CANCELLED_WHILE_RESTORINGZ NOT_MOST_RECENT_NAVIGATION_ENTRYZ)BACK_FORWARD_CACHE_DISABLED_FOR_PRERENDERZUSER_AGENT_OVERRIDE_DIFFERSZFOREGROUND_CACHE_LIMITZBROWSING_INSTANCE_NOT_SWAPPEDZ(BACK_FORWARD_CACHE_DISABLED_FOR_DELEGATEZ#UNLOAD_HANDLER_EXISTS_IN_MAIN_FRAMEZ"UNLOAD_HANDLER_EXISTS_IN_SUB_FRAMEZSERVICE_WORKER_UNREGISTRATIONZCACHE_CONTROL_NO_STOREZ&CACHE_CONTROL_NO_STORE_COOKIE_MODIFIEDZ0CACHE_CONTROL_NO_STORE_HTTP_ONLY_COOKIE_MODIFIEDZNO_RESPONSE_HEADUNKNOWNZ0ACTIVATION_NAVIGATIONS_DISALLOWED_FOR_BUG1234857ZERROR_DOCUMENTZFENCED_FRAMES_EMBEDDERZCOOKIE_DISABLEDZHTTP_AUTH_REQUIREDZCOOKIE_FLUSHEDZBROADCAST_CHANNEL_ON_MESSAGEZWEB_VIEW_SETTINGS_CHANGEDZ#WEB_VIEW_JAVA_SCRIPT_OBJECT_CHANGEDZ"WEB_VIEW_MESSAGE_LISTENER_INJECTEDZ(WEB_VIEW_SAFE_BROWSING_ALLOWLIST_CHANGEDZ*WEB_VIEW_DOCUMENT_START_JAVASCRIPT_CHANGEDZ
WEB_SOCKETZWEB_TRANSPORTZWEB_RTCZ(MAIN_RESOURCE_HAS_CACHE_CONTROL_NO_STOREZ(MAIN_RESOURCE_HAS_CACHE_CONTROL_NO_CACHEZ&SUBRESOURCE_HAS_CACHE_CONTROL_NO_STOREZ&SUBRESOURCE_HAS_CACHE_CONTROL_NO_CACHEZCONTAINS_PLUGINSZDOCUMENT_LOADEDZ"OUTSTANDING_NETWORK_REQUEST_OTHERSZREQUESTED_MIDI_PERMISSIONZ"REQUESTED_AUDIO_CAPTURE_PERMISSIONZ"REQUESTED_VIDEO_CAPTURE_PERMISSIONZ,REQUESTED_BACK_FORWARD_CACHE_BLOCKED_SENSORSZ$REQUESTED_BACKGROUND_WORK_PERMISSIONZBROADCAST_CHANNELZWEB_XRZSHARED_WORKERZ	WEB_LOCKSZWEB_HIDrO   ZREQUESTED_STORAGE_ACCESS_GRANTZWEB_NFCZ!OUTSTANDING_NETWORK_REQUEST_FETCHZOUTSTANDING_NETWORK_REQUEST_XHRZ
APP_BANNERZPRINTINGZWEB_DATABASErM   ZSPEECH_RECOGNIZERZIDLE_MANAGERZPAYMENT_MANAGERZSPEECH_SYNTHESISZKEYBOARD_LOCKZWEB_OTP_SERVICEZ)OUTSTANDING_NETWORK_REQUEST_DIRECT_SOCKETZINJECTED_JAVASCRIPTZINJECTED_STYLE_SHEETZKEEPALIVE_REQUESTZINDEXED_DB_EVENTZDUMMYZ;JS_NETWORK_REQUEST_RECEIVED_CACHE_CONTROL_NO_STORE_RESOURCEZWEB_RTC_STICKYZWEB_TRANSPORT_STICKYZWEB_SOCKET_STICKYrN   ZLIVE_MEDIA_STREAM_TRACKZUNLOAD_HANDLERZPARSER_ABORTEDZCONTENT_SECURITY_HANDLERZCONTENT_WEB_AUTHENTICATION_APIZCONTENT_FILE_CHOOSERZCONTENT_SERIALZCONTENT_FILE_SYSTEM_ACCESSZ%CONTENT_MEDIA_DEVICES_DISPATCHER_HOSTZCONTENT_WEB_BLUETOOTHZCONTENT_WEB_USBZCONTENT_MEDIA_SESSION_SERVICEZCONTENT_SCREEN_READERZCONTENT_DISCARDEDZ!EMBEDDER_POPUP_BLOCKER_TAB_HELPERZ.EMBEDDER_SAFE_BROWSING_TRIGGERED_POPUP_BLOCKERZ%EMBEDDER_SAFE_BROWSING_THREAT_DETAILSZEMBEDDER_APP_BANNER_MANAGERZ$EMBEDDER_DOM_DISTILLER_VIEWER_SOURCEZ5EMBEDDER_DOM_DISTILLER_SELF_DELETING_REQUEST_DELEGATEZ$EMBEDDER_OOM_INTERVENTION_TAB_HELPERZEMBEDDER_OFFLINE_PAGEZ?EMBEDDER_CHROME_PASSWORD_MANAGER_CLIENT_BIND_CREDENTIAL_MANAGERZ#EMBEDDER_PERMISSION_REQUEST_MANAGERZEMBEDDER_MODAL_DIALOGZEMBEDDER_EXTENSIONSZEMBEDDER_EXTENSION_MESSAGINGZ*EMBEDDER_EXTENSION_MESSAGING_FOR_OPEN_PORTZ/EMBEDDER_EXTENSION_SENT_MESSAGE_TO_CACHED_FRAMEZREQUESTED_BY_WEB_VIEW_CLIENTZPOST_MESSAGE_BY_WEB_VIEW_CLIENTr   r'   r   r   r   r   r   rR    s  rR  c                   @  s0   e Zd ZdZdZdZdZdd Zedd Z	d	S )
%BackForwardCacheNotRestoredReasonTypez?
    Types of not restored reasons for back-forward cache.
    ZSupportPendingZPageSupportNeededZCircumstantialc                 C  s   | j S r   r-   r   r   r   r   r   -  s    z-BackForwardCacheNotRestoredReasonType.to_jsonc                 C  s   | |S r   r   r   r   r   r   r   0  s    z/BackForwardCacheNotRestoredReasonType.from_jsonN)
r#   r$   r%   r&   ZSUPPORT_PENDINGZPAGE_SUPPORT_NEEDEDZCIRCUMSTANTIALr   r'   r   r   r   r   r   rW  %  s   rW  c                   @  sJ   e Zd ZU ded< ded< dZded< dZded< dd	 Zed
d ZdS )BackForwardCacheBlockingDetailsr   line_numbercolumn_numberNr   r}   functionc                 C  sF   t  }| j|d< | j|d< | jd k	r.| j|d< | jd k	rB| j|d< |S )N
lineNumbercolumnNumberr}   r[  )r;   rY  rZ  r}   r[  r<   r   r   r   r   C  s    





z'BackForwardCacheBlockingDetails.to_jsonc                 C  sH   | t |d t |d d|kr*t|d nd d|kr@t|d nd dS )Nr\  r]  r}   r[  )rY  rZ  r}   r[  )r   r   r   r   r   r   r   M  s    

z)BackForwardCacheBlockingDetails.from_json)	r#   r$   r%   r=   r}   r[  r   r'   r   r   r   r   r   rX  5  s   

rX  c                   @  sJ   e Zd ZU ded< ded< dZded< dZded	< d
d Zedd ZdS )&BackForwardCacheNotRestoredExplanationrW  r   rR  reasonNr   contextz=typing.Optional[typing.List[BackForwardCacheBlockingDetails]]detailsc                 C  sX   t  }| j |d< | j |d< | jd k	r6| j|d< | jd k	rTdd | jD |d< |S )Nr   r_  r`  c                 S  s   g | ]}|  qS r   r6   r7   r   r   r   r:   m  s     zBBackForwardCacheNotRestoredExplanation.to_json.<locals>.<listcomp>ra  )r;   r   r   r_  r`  ra  r<   r   r   r   r   f  s    


z.BackForwardCacheNotRestoredExplanation.to_jsonc                 C  sR   | t |d t|d d|kr.t|d nd d|krJdd |d D nd dS )Nr   r_  r`  ra  c                 S  s   g | ]}t |qS r   )rX  r   r7   r   r   r   r:   v  s     zDBackForwardCacheNotRestoredExplanation.from_json.<locals>.<listcomp>)r   r_  r`  ra  )rW  r   rR  r   r   r   r   r   r   p  s    z0BackForwardCacheNotRestoredExplanation.from_json)	r#   r$   r%   r=   r`  ra  r   r'   r   r   r   r   r   r^  W  s   

r^  c                   @  s:   e Zd ZU ded< ded< ded< dd Zed	d
 ZdS )*BackForwardCacheNotRestoredExplanationTreer   r}   3typing.List[BackForwardCacheNotRestoredExplanation]r4   z7typing.List[BackForwardCacheNotRestoredExplanationTree]childrenc                 C  s<   t  }| j|d< dd | jD |d< dd | jD |d< |S )Nr}   c                 S  s   g | ]}|  qS r   r6   r7   r   r   r   r:     s     zFBackForwardCacheNotRestoredExplanationTree.to_json.<locals>.<listcomp>r4   c                 S  s   g | ]}|  qS r   r6   r7   r   r   r   r:     s     rd  )r;   r}   r4   rd  r<   r   r   r   r     s
    
z2BackForwardCacheNotRestoredExplanationTree.to_jsonc                 C  s2   | t |d dd |d D dd |d D dS )Nr}   c                 S  s   g | ]}t |qS r   r^  r   r7   r   r   r   r:     s     zHBackForwardCacheNotRestoredExplanationTree.from_json.<locals>.<listcomp>r4   c                 S  s   g | ]}t |qS r   )rb  r   r7   r   r   r   r:     s     rd  )r}   r4   rd  r   r   r   r   r   r     s
    
z4BackForwardCacheNotRestoredExplanationTree.from_jsonNrX   r   r   r   r   rb  z  s   
rb  r   z<typing.Generator[T_JSON_DICT, T_JSON_DICT, ScriptIdentifier])script_sourcer   c                 c  s,   t  }| |d< d|d}|V }t|d S )z
    Deprecated, please use addScriptToEvaluateOnNewDocument instead.

    **EXPERIMENTAL**

    :param script_source:
    :returns: Identifier of the added script.
    ZscriptSourcezPage.addScriptToEvaluateOnLoadr*  params
identifierr;   r   r   )rf  rh  cmd_dictr   r   r   r   add_script_to_evaluate_on_load  s    rl  r   r   )source
world_nameinclude_command_line_apirun_immediatelyr   c                 c  s\   t  }| |d< |dk	r||d< |dk	r.||d< |dk	r>||d< d|d}|V }t|d S )	a  
    Evaluates given script in every frame upon creation (before loading frame's scripts).

    :param source:
    :param world_name: **(EXPERIMENTAL)** *(Optional)* If specified, creates an isolated world with the given name and evaluates given script in it. This world name will be used as the ExecutionContextDescription::name when the corresponding event is emitted.
    :param include_command_line_api: **(EXPERIMENTAL)** *(Optional)* Specifies whether command line API should be available to the script, defaults to false.
    :param run_immediately: **(EXPERIMENTAL)** *(Optional)* If true, runs the script immediately on existing execution contexts or worlds. Default: false.
    :returns: Identifier of the added script.
    rm  N	worldNameZincludeCommandLineAPIZrunImmediatelyz%Page.addScriptToEvaluateOnNewDocumentrg  ri  rj  )rm  rn  ro  rp  rh  rk  r   r   r   r   &add_script_to_evaluate_on_new_document  s    rr  z0typing.Generator[T_JSON_DICT, T_JSON_DICT, None]r   c                  c  s   ddi} | V }dS )z/
    Brings page to front (activates tab).
    r*  zPage.bringToFrontNr   rk  r   r   r   r   bring_to_front  s     rt  r   ztyping.Optional[Viewport]z/typing.Generator[T_JSON_DICT, T_JSON_DICT, str])format_qualityclipfrom_surfacecapture_beyond_viewportoptimize_for_speedr   c           	      c  s   t  }| dk	r| |d< |dk	r&||d< |dk	r:| |d< |dk	rJ||d< |dk	rZ||d< |dk	rj||d< d|d	}|V }t|d
 S )a  
    Capture page screenshot.

    :param format_: *(Optional)* Image compression format (defaults to png).
    :param quality: *(Optional)* Compression quality from range [0..100] (jpeg only).
    :param clip: *(Optional)* Capture the screenshot of a given region only.
    :param from_surface: **(EXPERIMENTAL)** *(Optional)* Capture the screenshot from the surface, rather than the view. Defaults to true.
    :param capture_beyond_viewport: **(EXPERIMENTAL)** *(Optional)* Capture the screenshot beyond the viewport. Defaults to false.
    :param optimize_for_speed: **(EXPERIMENTAL)** *(Optional)* Optimize image encoding for speed, not for resulting size (defaults to false)
    :returns: Base64-encoded image data.
    Nr   rv  rw  ZfromSurfaceZcaptureBeyondViewportZoptimizeForSpeedzPage.captureScreenshotrg  data)r;   r   r   )	ru  rv  rw  rx  ry  rz  rh  rk  r   r   r   r   capture_screenshot  s$    r|  )ru  r   c                 c  s2   t  }| dk	r| |d< d|d}|V }t|d S )a"  
    Returns a snapshot of the page as a string. For MHTML format, the serialization includes
    iframes, shadow DOM, external resources, and element-inline styles.

    **EXPERIMENTAL**

    :param format_: *(Optional)* Format (defaults to mhtml).
    :returns: Serialized page data.
    Nr   zPage.captureSnapshotrg  r{  )r;   r   )ru  rh  rk  r   r   r   r   capture_snapshot  s    r}  c                  c  s   ddi} | V }dS )zE
    Clears the overridden device metrics.

    **EXPERIMENTAL**
    r*  zPage.clearDeviceMetricsOverrideNr   rs  r   r   r   clear_device_metrics_override  s     r~  c                  c  s   ddi} | V }dS )zI
    Clears the overridden Device Orientation.

    **EXPERIMENTAL**
    r*  z#Page.clearDeviceOrientationOverrideNr   rs  r   r   r   !clear_device_orientation_override  s     r  c                  c  s   ddi} | V }dS )z?
    Clears the overridden Geolocation Position and Error.
    r*  zPage.clearGeolocationOverrideNr   rs  r   r   r   clear_geolocation_override*  s     r  zFtyping.Generator[T_JSON_DICT, T_JSON_DICT, runtime.ExecutionContextId])rT   rn  grant_univeral_accessr   c                 c  sR   t  }|  |d< |dk	r"||d< |dk	r2||d< d|d}|V }tj|d S )a  
    Creates an isolated world for the given frame.

    :param frame_id: Id of the frame in which the isolated world should be created.
    :param world_name: *(Optional)* An optional name which is reported in the Execution Context.
    :param grant_univeral_access: *(Optional)* Whether or not universal access should be granted to the isolated world. This is a powerful option, use with caution.
    :returns: Execution context of the isolated world.
    rV   Nrq  ZgrantUniveralAccesszPage.createIsolatedWorldrg  ZexecutionContextId)r;   r   r   ZExecutionContextIdr   )rT   rn  r  rh  rk  r   r   r   r   create_isolated_world4  s    r  )cookie_namer}   r   c                 c  s*   t  }| |d< ||d< d|d}|V }dS )z
    Deletes browser cookie with given name, domain and path.

    **EXPERIMENTAL**

    :param cookie_name: Name of the cookie to remove.
    :param url: URL to match cooke domain and path.
    Z
cookieNamer}   zPage.deleteCookierg  Nr;   )r  r}   rh  rk  r   r   r   r   delete_cookieO  s    r  c                  c  s   ddi} | V }dS )z-
    Disables page domain notifications.
    r*  zPage.disableNr   rs  r   r   r   disablee  s     r  c                  c  s   ddi} | V }dS )z,
    Enables page domain notifications.
    r*  zPage.enableNr   rs  r   r   r   enableo  s     r  ztyping.Generator[T_JSON_DICT, T_JSON_DICT, typing.Tuple[str, typing.List[AppManifestError], typing.Optional[str], typing.Optional[AppManifestParsedProperties], WebAppManifest]])manifest_idr   c                 c  s~   t  }| dk	r| |d< d|d}|V }t|d dd |d D d	|krTt|d	 ndd
|krlt|d
 ndt|d fS )a  
    Gets the processed manifest for this current document.
      This API always waits for the manifest to be loaded.
      If manifestId is provided, and it does not match the manifest of the
        current document, this API errors out.
      If there is not a loaded page, this API errors out immediately.

    :param manifest_id: *(Optional)*
    :returns: A tuple with the following items:

        0. **url** - Manifest location.
        1. **errors** - 
        2. **data** - *(Optional)* Manifest content.
        3. **parsed** - *(Optional)* Parsed manifest properties. Deprecated, use manifest instead.
        4. **manifest** - 
    NZ
manifestIdzPage.getAppManifestrg  r}   c                 S  s   g | ]}t |qS r   )r   r   r7   r   r   r   r:     s     z$get_app_manifest.<locals>.<listcomp>errorsr{  parsedmanifest)r;   r   r   r   r/  )r  rh  rk  r   r   r   r   get_app_manifesty  s    
r  zLtyping.Generator[T_JSON_DICT, T_JSON_DICT, typing.List[InstallabilityError]]c                  c  s    ddi} | V }dd |d D S )z,


    **EXPERIMENTAL**

    :returns: 
    r*  zPage.getInstallabilityErrorsc                 S  s   g | ]}t |qS r   )r  r   r7   r   r   r   r:     s     z-get_installability_errors.<locals>.<listcomp>ZinstallabilityErrorsr   rs  r   r   r   get_installability_errors  s
    	 r  z@typing.Generator[T_JSON_DICT, T_JSON_DICT, typing.Optional[str]]c                  c  s&   ddi} | V }d|kr"t |d S dS )z
    Deprecated because it's not guaranteed that the returned icon is in fact the one used for PWA installation.

    **EXPERIMENTAL**

    :returns: 
    r*  zPage.getManifestIconsZprimaryIconNr   rs  r   r   r   get_manifest_icons  s
    	 r  zdtyping.Generator[T_JSON_DICT, T_JSON_DICT, typing.Tuple[typing.Optional[str], typing.Optional[str]]]c                  c  s>   ddi} | V }d|kr"t |d ndd|kr8t |d ndfS )a  
    Returns the unique (PWA) app id.
    Only returns values if the feature flag 'WebAppEnableManifestId' is enabled

    **EXPERIMENTAL**

    :returns: A tuple with the following items:

        0. **appId** - *(Optional)* App id, either from manifest's id attribute or computed from start_url
        1. **recommendedId** - *(Optional)* Recommendation for manifest's id attribute to match current id computed from start_url
    r*  zPage.getAppIdZappIdNZrecommendedIdr   rs  r   r   r   
get_app_id  s     r  zGtyping.Generator[T_JSON_DICT, T_JSON_DICT, typing.Optional[AdScriptId]])rT   r   c                 c  s<   t  }|  |d< d|d}|V }d|kr8t|d S dS )z


    **EXPERIMENTAL**

    :param frame_id:
    :returns: *(Optional)* Identifies the bottom-most script which caused the frame to be labelled as an ad. Only sent if frame is labelled as an ad and id is available.
    rV   zPage.getAdScriptIdrg  Z
adScriptIdN)r;   r   r>   r   rT   rh  rk  r   r   r   r   get_ad_script_id  s    r  z5typing.Generator[T_JSON_DICT, T_JSON_DICT, FrameTree]c                  c  s   ddi} | V }t |d S )z\
    Returns present frame tree structure.

    :returns: Present frame tree structure.
    r*  zPage.getFrameTree	frameTreer   rs  r   r   r   get_frame_tree  s
     r  ztyping.Generator[T_JSON_DICT, T_JSON_DICT, typing.Tuple[LayoutViewport, VisualViewport, dom.Rect, LayoutViewport, VisualViewport, dom.Rect]]c               	   c  s^   ddi} | V }t |d t|d tj|d t |d t|d tj|d fS )	a  
    Returns metrics relating to the layouting of the page, such as viewport bounds/scale.

    :returns: A tuple with the following items:

        0. **layoutViewport** - Deprecated metrics relating to the layout viewport. Is in device pixels. Use ``cssLayoutViewport`` instead.
        1. **visualViewport** - Deprecated metrics relating to the visual viewport. Is in device pixels. Use ``cssVisualViewport`` instead.
        2. **contentSize** - Deprecated size of scrollable area. Is in DP. Use ``cssContentSize`` instead.
        3. **cssLayoutViewport** - Metrics relating to the layout viewport in CSS pixels.
        4. **cssVisualViewport** - Metrics relating to the visual viewport in CSS pixels.
        5. **cssContentSize** - Size of scrollable area in CSS pixels.
    r*  zPage.getLayoutMetricsZlayoutViewportZvisualViewportr   ZcssLayoutViewportZcssVisualViewportZcssContentSize)r   r   r   r   ZRectrs  r   r   r   get_layout_metrics  s     r  z[typing.Generator[T_JSON_DICT, T_JSON_DICT, typing.Tuple[int, typing.List[NavigationEntry]]]c                  c  s,   ddi} | V }t |d dd |d D fS )z
    Returns navigation history for the current page.

    :returns: A tuple with the following items:

        0. **currentIndex** - Index of the current navigation history entry.
        1. **entries** - Array of navigation history entries.
    r*  zPage.getNavigationHistoryZcurrentIndexc                 S  s   g | ]}t |qS r   )r   r   r7   r   r   r   r:   	  s     z*get_navigation_history.<locals>.<listcomp>entriesr   rs  r   r   r   get_navigation_history	  s    
 
r  c                  c  s   ddi} | V }dS )z9
    Resets navigation history for the current page.
    r*  zPage.resetNavigationHistoryNr   rs  r   r   r   reset_navigation_history!	  s     r  zCtyping.Generator[T_JSON_DICT, T_JSON_DICT, typing.Tuple[str, bool]])rT   r}   r   c                 c  sB   t  }|  |d< ||d< d|d}|V }t|d t|d fS )aT  
    Returns content of the given resource.

    **EXPERIMENTAL**

    :param frame_id: Frame id to get resource for.
    :param url: URL of the resource to get content for.
    :returns: A tuple with the following items:

        0. **content** - Resource content.
        1. **base64Encoded** - True, if content was served as base64.
    rV   r}   zPage.getResourceContentrg  contentZbase64Encoded)r;   r   r   r[   )rT   r}   rh  rk  r   r   r   r   get_resource_content+	  s    

r  z=typing.Generator[T_JSON_DICT, T_JSON_DICT, FrameResourceTree]c                  c  s   ddi} | V }t |d S )z
    Returns present frame / resource tree structure.

    **EXPERIMENTAL**

    :returns: Present frame / resource tree structure.
    r*  zPage.getResourceTreer  r   rs  r   r   r   get_resource_treeI	  s
    	 r  r[   )acceptprompt_textr   c                 c  s2   t  }| |d< |dk	r||d< d|d}|V }dS )a,  
    Accepts or dismisses a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload).

    :param accept: Whether to accept or dismiss the dialog.
    :param prompt_text: *(Optional)* The text to enter into the dialog prompt before accepting. Used only if this is a prompt dialog.
    r  NZ
promptTextzPage.handleJavaScriptDialogrg  r  )r  r  rh  rk  r   r   r   r   handle_java_script_dialogX	  s    
r  ztyping.Optional[TransitionType]r   ztyping.Optional[ReferrerPolicy]zztyping.Generator[T_JSON_DICT, T_JSON_DICT, typing.Tuple[FrameId, typing.Optional[network.LoaderId], typing.Optional[str]]])r}   referrerr   rT   referrer_policyr   c                 c  s   t  }| |d< |dk	r||d< |dk	r2| |d< |dk	rF| |d< |dk	rZ| |d< d|d}|V }t|d d	|krtj|d	 ndd
|krt|d
 ndfS )a1  
    Navigates current page to the given URL.

    :param url: URL to navigate the page to.
    :param referrer: *(Optional)* Referrer URL.
    :param transition_type: *(Optional)* Intended transition type.
    :param frame_id: *(Optional)* Frame id to navigate, if not specified navigates the top frame.
    :param referrer_policy: **(EXPERIMENTAL)** *(Optional)* Referrer-policy used for the navigation.
    :returns: A tuple with the following items:

        0. **frameId** - Frame id that has navigated (or failed to navigate)
        1. **loaderId** - *(Optional)* Loader identifier. This is omitted in case of same-document navigation, as the previously committed loaderId would not change.
        2. **errorText** - *(Optional)* User friendly error message, present if and only if navigation has failed.
    r}   Nr  r   rV   ZreferrerPolicyzPage.navigaterg  r   Z	errorText)r;   r   r   r   r   r   r   )r}   r  r   rT   r  rh  rk  r   r   r   r   navigatem	  s$    r  r   )entry_idr   c                 c  s"   t  }| |d< d|d}|V }dS )zy
    Navigates current page to the given history entry.

    :param entry_id: Unique id of the entry to navigate to.
    ZentryIdzPage.navigateToHistoryEntryrg  Nr  )r  rh  rk  r   r   r   r   navigate_to_history_entry	  s    r  r   z_typing.Generator[T_JSON_DICT, T_JSON_DICT, typing.Tuple[str, typing.Optional[io.StreamHandle]]])	landscapedisplay_header_footerprint_backgroundr   paper_widthpaper_height
margin_topmargin_bottommargin_leftmargin_rightpage_rangesheader_templatefooter_templateprefer_css_page_sizetransfer_modegenerate_tagged_pdfgenerate_document_outliner   c                 c  sT  t  }| dk	r| |d< |dk	r&||d< |dk	r6||d< |dk	rF||d< |dk	rV||d< |dk	rf||d< |dk	rv||d< |dk	r||d	< |dk	r||d
< |	dk	r|	|d< |
dk	r|
|d< |dk	r||d< |dk	r||d< |dk	r||d< |dk	r||d< |dk	r||d< |dk	r||d< d|d}|V }t|d d|krNtj|d ndfS )a
  
    Print page as PDF.

    :param landscape: *(Optional)* Paper orientation. Defaults to false.
    :param display_header_footer: *(Optional)* Display header and footer. Defaults to false.
    :param print_background: *(Optional)* Print background graphics. Defaults to false.
    :param scale: *(Optional)* Scale of the webpage rendering. Defaults to 1.
    :param paper_width: *(Optional)* Paper width in inches. Defaults to 8.5 inches.
    :param paper_height: *(Optional)* Paper height in inches. Defaults to 11 inches.
    :param margin_top: *(Optional)* Top margin in inches. Defaults to 1cm (~0.4 inches).
    :param margin_bottom: *(Optional)* Bottom margin in inches. Defaults to 1cm (~0.4 inches).
    :param margin_left: *(Optional)* Left margin in inches. Defaults to 1cm (~0.4 inches).
    :param margin_right: *(Optional)* Right margin in inches. Defaults to 1cm (~0.4 inches).
    :param page_ranges: *(Optional)* Paper ranges to print, one based, e.g., '1-5, 8, 11-13'. Pages are printed in the document order, not in the order specified, and no more than once. Defaults to empty string, which implies the entire document is printed. The page numbers are quietly capped to actual page count of the document, and ranges beyond the end of the document are ignored. If this results in no pages to print, an error is reported. It is an error to specify a range with start greater than end.
    :param header_template: *(Optional)* HTML template for the print header. Should be valid HTML markup with following classes used to inject printing values into them: - ```date````: formatted print date - ````title````: document title - ````url````: document location - ````pageNumber````: current page number - ````totalPages````: total pages in the document  For example, ````<span class=title></span>```` would generate span containing the title.
    :param footer_template: *(Optional)* HTML template for the print footer. Should use the same format as the ````headerTemplate````.
    :param prefer_css_page_size: *(Optional)* Whether or not to prefer page size as defined by css. Defaults to false, in which case the content will be scaled to fit the paper size.
    :param transfer_mode: **(EXPERIMENTAL)** *(Optional)* return as stream
    :param generate_tagged_pdf: **(EXPERIMENTAL)** *(Optional)* Whether or not to generate tagged (accessible) PDF. Defaults to embedder choice.
    :param generate_document_outline: **(EXPERIMENTAL)** *(Optional)* Whether or not to embed the document outline into the PDF.
    :returns: A tuple with the following items:

        0. **data** - Base64-encoded pdf data. Empty if `` returnAsStream` is specified.
        1. **stream** - *(Optional)* A handle of the stream that holds resulting PDF data.
    Nr  ZdisplayHeaderFooterZprintBackgroundr   Z
paperWidthZpaperHeightZ	marginTopZmarginBottomZ
marginLeftZmarginRightZ
pageRangesZheaderTemplateZfooterTemplateZpreferCSSPageSizeZtransferModeZgenerateTaggedPDFZgenerateDocumentOutlinezPage.printToPDFrg  r{  stream)r;   r   r
   ZStreamHandler   )r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  rh  rk  r   r   r   r   print_to_pdf	  sT    ,


r  z!typing.Optional[network.LoaderId])ignore_cachescript_to_evaluate_on_loadr|   r   c                 c  sN   t  }| dk	r| |d< |dk	r&||d< |dk	r:| |d< d|d}|V }dS )ao  
    Reloads given page optionally ignoring the cache.

    :param ignore_cache: *(Optional)* If true, browser cache is ignored (as if the user pressed Shift+refresh).
    :param script_to_evaluate_on_load: *(Optional)* If set, the script will be injected into all frames of the inspected page after reload. Argument will be ignored if reloading dataURL origin.
    :param loader_id: **(EXPERIMENTAL)** *(Optional)* If set, an error will be thrown if the target page's main frame's loader id does not match the provided id. This prevents accidentally reloading an unintended target in case there's a racing navigation.
    NZignoreCacheZscriptToEvaluateOnLoadr   zPage.reloadrg  r;   r   )r  r  r|   rh  rk  r   r   r   r   r   
  s    r   )ri  r   c                 c  s&   t  }|  |d< d|d}|V }dS )z{
    Deprecated, please use removeScriptToEvaluateOnNewDocument instead.

    **EXPERIMENTAL**

    :param identifier:
    ri  z!Page.removeScriptToEvaluateOnLoadrg  Nr  ri  rh  rk  r   r   r   r   !remove_script_to_evaluate_on_load
  s    
r  c                 c  s&   t  }|  |d< d|d}|V }dS )zE
    Removes given script from the list.

    :param identifier:
    ri  z(Page.removeScriptToEvaluateOnNewDocumentrg  Nr  r  r   r   r   )remove_script_to_evaluate_on_new_document0
  s    r  )
session_idr   c                 c  s"   t  }| |d< d|d}|V }dS )z
    Acknowledges that a screencast frame has been received by the frontend.

    **EXPERIMENTAL**

    :param session_id: Frame number.
    	sessionIdzPage.screencastFrameAckrg  Nr  )r  rh  rk  r   r   r   r   screencast_frame_ackA
  s    
r  zMtyping.Generator[T_JSON_DICT, T_JSON_DICT, typing.List[debugger.SearchMatch]])rT   r}   querycase_sensitiveis_regexr   c                 c  sd   t  }|  |d< ||d< ||d< |dk	r2||d< |dk	rB||d< d|d}|V }d	d
 |d D S )a  
    Searches for given string in resource content.

    **EXPERIMENTAL**

    :param frame_id: Frame id for resource to search in.
    :param url: URL of the resource to search in.
    :param query: String to search for.
    :param case_sensitive: *(Optional)* If true, search is case sensitive.
    :param is_regex: *(Optional)* If true, treats string parameter as regex.
    :returns: List of search matches.
    rV   r}   r  NZcaseSensitiveZisRegexzPage.searchInResourcerg  c                 S  s   g | ]}t j|qS r   )r   ZSearchMatchr   r7   r   r   r   r:   t
  s     z&search_in_resource.<locals>.<listcomp>resultr  )rT   r}   r  r  r  rh  rk  r   r   r   r   search_in_resourceT
  s    r  )enabledr   c                 c  s"   t  }| |d< d|d}|V }dS )z
    Enable Chrome's experimental ad filter on all sites.

    **EXPERIMENTAL**

    :param enabled: Whether to block ads.
    r  zPage.setAdBlockingEnabledrg  Nr  r  rh  rk  r   r   r   r   set_ad_blocking_enabledw
  s    
r  c                 c  s"   t  }| |d< d|d}|V }dS )zj
    Enable page Content Security Policy by-passing.

    :param enabled: Whether to bypass page CSP.
    r  zPage.setBypassCSPrg  Nr  r  r   r   r   set_bypass_csp
  s    r  zVtyping.Generator[T_JSON_DICT, T_JSON_DICT, typing.List[PermissionsPolicyFeatureState]]c                 c  s4   t  }|  |d< d|d}|V }dd |d D S )zq
    Get Permissions Policy state on given frame.

    **EXPERIMENTAL**

    :param frame_id:
    :returns: 
    rV   zPage.getPermissionsPolicyStaterg  c                 S  s   g | ]}t |qS r   )rY   r   r7   r   r   r   r:   
  s     z0get_permissions_policy_state.<locals>.<listcomp>Zstatesr  r  r   r   r   get_permissions_policy_state
  s    r  zDtyping.Generator[T_JSON_DICT, T_JSON_DICT, typing.List[OriginTrial]]c                 c  s4   t  }|  |d< d|d}|V }dd |d D S )zf
    Get Origin Trials on given frame.

    **EXPERIMENTAL**

    :param frame_id:
    :returns: 
    rV   zPage.getOriginTrialsrg  c                 S  s   g | ]}t |qS r   )rv   r   r7   r   r   r   r:   
  s     z%get_origin_trials.<locals>.<listcomp>ZoriginTrialsr  r  r   r   r   get_origin_trials
  s    r  r   z,typing.Optional[emulation.ScreenOrientation])r   r   device_scale_factormobiler   screen_widthscreen_height
position_x
position_ydont_set_visible_sizescreen_orientationviewportr   c                 c  s   t  }| |d< ||d< ||d< ||d< |dk	r6||d< |dk	rF||d< |dk	rV||d< |dk	rf||d	< |dk	rv||d
< |	dk	r|	|d< |
dk	r|
 |d< |dk	r| |d< d|d}|V }dS )a  
    Overrides the values of device screen dimensions (window.screen.width, window.screen.height,
    window.innerWidth, window.innerHeight, and "device-width"/"device-height"-related CSS media
    query results).

    **EXPERIMENTAL**

    :param width: Overriding width value in pixels (minimum 0, maximum 10000000). 0 disables the override.
    :param height: Overriding height value in pixels (minimum 0, maximum 10000000). 0 disables the override.
    :param device_scale_factor: Overriding device scale factor value. 0 disables the override.
    :param mobile: Whether to emulate mobile device. This includes viewport meta tag, overlay scrollbars, text autosizing and more.
    :param scale: *(Optional)* Scale to apply to resulting view image.
    :param screen_width: *(Optional)* Overriding screen width value in pixels (minimum 0, maximum 10000000).
    :param screen_height: *(Optional)* Overriding screen height value in pixels (minimum 0, maximum 10000000).
    :param position_x: *(Optional)* Overriding view X position on screen in pixels (minimum 0, maximum 10000000).
    :param position_y: *(Optional)* Overriding view Y position on screen in pixels (minimum 0, maximum 10000000).
    :param dont_set_visible_size: *(Optional)* Do not set visible view size, rely upon explicit setVisibleSize call.
    :param screen_orientation: *(Optional)* Screen orientation override.
    :param viewport: *(Optional)* The viewport dimensions and scale. If not set, the override is cleared.
    r   r   ZdeviceScaleFactorr  Nr   ZscreenWidthZscreenHeightZ	positionXZ	positionYZdontSetVisibleSizeZscreenOrientationr  zPage.setDeviceMetricsOverriderg  r  )r   r   r  r  r   r  r  r  r  r  r  r  rh  rk  r   r   r   r   set_device_metrics_override
  s2    "r  )alphabetagammar   c                 c  s2   t  }| |d< ||d< ||d< d|d}|V }dS )z
    Overrides the Device Orientation.

    **EXPERIMENTAL**

    :param alpha: Mock alpha
    :param beta: Mock beta
    :param gamma: Mock gamma
    r  r  r  z!Page.setDeviceOrientationOverriderg  Nr  )r  r  r  rh  rk  r   r   r   r   set_device_orientation_override  s    r  z0typing.Optional[typing.List[ScriptFontFamilies]])r   for_scriptsr   c                 c  s@   t  }|  |d< |dk	r,dd |D |d< d|d}|V }dS )a	  
    Set generic font families.

    **EXPERIMENTAL**

    :param font_families: Specifies font families to set. If a font family is not specified, it won't be changed.
    :param for_scripts: *(Optional)* Specifies font families to set for individual scripts.
    r   Nc                 S  s   g | ]}|  qS r   r6   r7   r   r   r   r:   +  s     z%set_font_families.<locals>.<listcomp>Z
forScriptszPage.setFontFamiliesrg  r  )r   r  rh  rk  r   r   r   r   set_font_families  s    r  )
font_sizesr   c                 c  s&   t  }|  |d< d|d}|V }dS )z
    Set default font sizes.

    **EXPERIMENTAL**

    :param font_sizes: Specifies font sizes to set. If a font size is not specified, it won't be changed.
    Z	fontSizeszPage.setFontSizesrg  Nr  )r  rh  rk  r   r   r   r   set_font_sizes3  s    
r  )rT   htmlr   c                 c  s.   t  }|  |d< ||d< d|d}|V }dS )z
    Sets given markup as the document's HTML.

    :param frame_id: Frame id to set HTML for.
    :param html: HTML content to set.
    rV   r  zPage.setDocumentContentrg  Nr  )rT   r  rh  rk  r   r   r   r   set_document_contentF  s    
r  )behaviordownload_pathr   c                 c  s2   t  }| |d< |dk	r||d< d|d}|V }dS )aU  
    Set the behavior when downloading a file.

    **EXPERIMENTAL**

    :param behavior: Whether to allow all or deny all download requests, or use default Chrome behavior if available (otherwise deny).
    :param download_path: *(Optional)* The default path to save downloaded files to. This is required if behavior is set to 'allow'
    r  NZdownloadPathzPage.setDownloadBehaviorrg  r  )r  r  rh  rk  r   r   r   r   set_download_behaviorZ  s    r  )latitude	longitudeaccuracyr   c                 c  sJ   t  }| dk	r| |d< |dk	r&||d< |dk	r6||d< d|d}|V }dS )a  
    Overrides the Geolocation Position or Error. Omitting any of the parameters emulates position
    unavailable.

    :param latitude: *(Optional)* Mock latitude
    :param longitude: *(Optional)* Mock longitude
    :param accuracy: *(Optional)* Mock accuracy
    Nr  r  r  zPage.setGeolocationOverriderg  r  )r  r  r  rh  rk  r   r   r   r   set_geolocation_overrideq  s    r  c                 c  s"   t  }| |d< d|d}|V }dS )z{
    Controls whether page will emit lifecycle events.

    :param enabled: If true, starts emitting lifecycle events.
    r  zPage.setLifecycleEventsEnabledrg  Nr  r  r   r   r   set_lifecycle_events_enabled  s    r  )r  configurationr   c                 c  s2   t  }| |d< |dk	r||d< d|d}|V }dS )a   
    Toggles mouse event-based touch event emulation.

    **EXPERIMENTAL**

    :param enabled: Whether the touch event emulation should be enabled.
    :param configuration: *(Optional)* Touch/gesture events configuration. Default: current platform.
    r  Nr  zPage.setTouchEmulationEnabledrg  r  )r  r  rh  rk  r   r   r   r   set_touch_emulation_enabled  s    r  )ru  rv  	max_width
max_heightevery_nth_framer   c                 c  sj   t  }| dk	r| |d< |dk	r&||d< |dk	r6||d< |dk	rF||d< |dk	rV||d< d|d}|V }dS )	a  
    Starts sending each frame using the ``screencastFrame`` event.

    **EXPERIMENTAL**

    :param format_: *(Optional)* Image compression format.
    :param quality: *(Optional)* Compression quality from range [0..100].
    :param max_width: *(Optional)* Maximum screenshot width.
    :param max_height: *(Optional)* Maximum screenshot height.
    :param every_nth_frame: *(Optional)* Send every n-th frame.
    Nr   rv  ZmaxWidthZ	maxHeightZeveryNthFramezPage.startScreencastrg  r  )ru  rv  r  r  r  rh  rk  r   r   r   r   start_screencast  s    r  c                  c  s   ddi} | V }dS )zK
    Force the page stop all navigations and pending resource fetches.
    r*  zPage.stopLoadingNr   rs  r   r   r   stop_loading  s     r  c                  c  s   ddi} | V }dS )zW
    Crashes renderer on the IO thread, generates minidumps.

    **EXPERIMENTAL**
    r*  z
Page.crashNr   rs  r   r   r   crash  s     r  c                  c  s   ddi} | V }dS )zF
    Tries to close page, running its beforeunload hooks, if any.
    r*  z
Page.closeNr   rs  r   r   r   close  s     r  )stater   c                 c  s"   t  }| |d< d|d}|V }dS )z
    Tries to update the web lifecycle state of the page.
    It will transition the page to the given state according to:
    https://github.com/WICG/web-lifecycle/

    **EXPERIMENTAL**

    :param state: Target lifecycle state
    r  zPage.setWebLifecycleStaterg  Nr  )r  rh  rk  r   r   r   r   set_web_lifecycle_state  s    r  c                  c  s   ddi} | V }dS )zT
    Stops sending each frame in the ``screencastFrame``.

    **EXPERIMENTAL**
    r*  zPage.stopScreencastNr   rs  r   r   r   stop_screencast  s     r  z#typing.List[CompilationCacheParams])scriptsr   c                 c  s,   t  }dd | D |d< d|d}|V }dS )a  
    Requests backend to produce compilation cache for the specified scripts.
    ``scripts`` are appended to the list of scripts for which the cache
    would be produced. The list may be reset during page navigation.
    When script with a matching URL is encountered, the cache is optionally
    produced upon backend discretion, based on internal heuristics.
    See also: ``Page.compilationCacheProduced``.

    **EXPERIMENTAL**

    :param scripts:
    c                 S  s   g | ]}|  qS r   r6   r7   r   r   r   r:   )  s     z-produce_compilation_cache.<locals>.<listcomp>r  zPage.produceCompilationCacherg  Nr  )r  rh  rk  r   r   r   r   produce_compilation_cache  s    r  )r}   r{  r   c                 c  s*   t  }| |d< ||d< d|d}|V }dS )z
    Seeds compilation cache for given url. Compilation cache does not survive
    cross-process navigation.

    **EXPERIMENTAL**

    :param url:
    :param data: Base64-encoded data
    r}   r{  zPage.addCompilationCacherg  Nr  )r}   r{  rh  rk  r   r   r   r   add_compilation_cache1  s    r  c                  c  s   ddi} | V }dS )z@
    Clears seeded compilation cache.

    **EXPERIMENTAL**
    r*  zPage.clearCompilationCacheNr   rs  r   r   r   clear_compilation_cacheH  s     r  )moder   c                 c  s&   t  }|  |d< d|d}|V }dS )z
    Sets the Secure Payment Confirmation transaction mode.
    https://w3c.github.io/secure-payment-confirmation/#sctn-automation-set-spc-transaction-mode

    **EXPERIMENTAL**

    :param mode:
    r  zPage.setSPCTransactionModerg  Nr  r  rh  rk  r   r   r   r   set_spc_transaction_modeT  s    r  c                 c  s&   t  }|  |d< d|d}|V }dS )z
    Extensions for Custom Handlers API:
    https://html.spec.whatwg.org/multipage/system-state.html#rph-automation

    **EXPERIMENTAL**

    :param mode:
    r  zPage.setRPHRegistrationModerg  Nr  r  r   r   r   set_rph_registration_modeh  s    r  )r   groupr   c                 c  s2   t  }| |d< |dk	r||d< d|d}|V }dS )z
    Generates a report for testing.

    **EXPERIMENTAL**

    :param message: Message to be displayed in the report.
    :param group: *(Optional)* Specifies the endpoint group to deliver the report to.
    r   Nr  zPage.generateTestReportrg  r  )r   r  rh  rk  r   r   r   r   generate_test_report|  s    r  c                  c  s   ddi} | V }dS )zt
    Pauses page execution. Can be resumed using generic Runtime.runIfWaitingForDebugger.

    **EXPERIMENTAL**
    r*  zPage.waitForDebuggerNr   rs  r   r   r   wait_for_debugger  s     r  c                 c  s"   t  }| |d< d|d}|V }dS )a  
    Intercept file chooser requests and transfer control to protocol clients.
    When file chooser interception is enabled, native file chooser dialog is not shown.
    Instead, a protocol event ``Page.fileChooserOpened`` is emitted.

    :param enabled:
    r  z"Page.setInterceptFileChooserDialogrg  Nr  r  r   r   r   !set_intercept_file_chooser_dialog  s    
r  )
is_allowedr   c                 c  s"   t  }| |d< d|d}|V }dS )al  
    Enable/disable prerendering manually.

    This command is a short-term solution for https://crbug.com/1440085.
    See https://docs.google.com/document/d/12HVmFxYj5Jc-eJr5OmWsa2bqTJsbgGLKI6ZIyx0_wpA
    for more details.

    TODO(https://crbug.com/1440085): Remove this once Puppeteer supports tab targets.

    **EXPERIMENTAL**

    :param is_allowed:
    Z	isAllowedzPage.setPrerenderingAllowedrg  Nr  )r  rh  rk  r   r   r   r   set_prerendering_allowed  s    r  zPage.domContentEventFiredc                   @  s*   e Zd ZU ded< edd dddZdS )DomContentEventFirednetwork.MonotonicTimer   r   r   c                 C  s   | t j|d dS Nr   )r   r   MonotonicTimer   r   r   r   r   r     s    zDomContentEventFired.from_jsonNr#   r$   r%   r=   r'   r   r   r   r   r   r    s   
r  zPage.fileChooserOpenedc                   @  s>   e Zd ZU dZded< ded< ded< edd d	d
dZdS )FileChooserOpenedzE
    Emitted only when ``page.interceptFileChooser`` is enabled.
    r   rT   r   r  z"typing.Optional[dom.BackendNodeId]backend_node_idr   r   c                 C  s8   | t |d t|d d|kr0tj|d nd dS )NrV   r  ZbackendNodeId)rT   r  r  )r   r   r   r   ZBackendNodeIdr   r   r   r   r     s
    
zFileChooserOpened.from_jsonNr#   r$   r%   r&   r=   r'   r   r   r   r   r   r    s   
r  zPage.frameAttachedc                   @  s>   e Zd ZU dZded< ded< ded< edd dd	d
ZdS )FrameAttachedz;
    Fired when frame has been attached to its parent.
    r   rT   parent_frame_idz#typing.Optional[runtime.StackTrace]stackr   r   c                 C  s:   | t |d t |d d|kr2tj|d nd dS )NrV   ZparentFrameIdr
  )rT   r	  r
  )r   r   r   Z
StackTracer   r   r   r   r     s
    zFrameAttached.from_jsonNr  r   r   r   r   r    s   
r  z$Page.frameClearedScheduledNavigationc                   @  s.   e Zd ZU dZded< edd dddZdS )	FrameClearedScheduledNavigationz@
    Fired when frame no longer has a scheduled navigation.
    r   rT   r   r   c                 C  s   | t |d dS NrV   )rT   r   r   r   r   r   r   r     s    z)FrameClearedScheduledNavigation.from_jsonNr  r   r   r   r   r    s   
r  zPage.frameDetachedc                   @  s6   e Zd ZU dZded< ded< edd ddd	Zd
S )FrameDetachedz=
    Fired when frame has been detached from its parent.
    r   rT   r   r_  r   r   c                 C  s   | t |d t|d dS )NrV   r_  )rT   r_  r   r   r   r   r   r   r   r     s    
zFrameDetached.from_jsonNr  r   r   r   r   r    s
   
r  zPage.frameSubtreeWillBeDetachedc                   @  s.   e Zd ZU dZded< edd dddZdS )	FrameSubtreeWillBeDetachedz
    **EXPERIMENTAL**

    Fired before frame subtree is detached. Emitted before any frame of the
    subtree is actually detached.
    r   rT   r   r   c                 C  s   | t |d dS r  r  r   r   r   r   r   1  s    z$FrameSubtreeWillBeDetached.from_jsonNr  r   r   r   r   r  %  s   
r  zPage.frameNavigatedc                   @  s6   e Zd ZU dZded< ded< edd ddd	Zd
S )FrameNavigatedzh
    Fired once navigation of the frame has completed. Frame is now associated with the new loader.
    ry   r   rQ  r   r   r   c                 C  s    | t |d t|d dS )Nr   r   )r   r   )ry   r   rQ  r   r   r   r   r   B  s    zFrameNavigated.from_jsonNr  r   r   r   r   r  8  s
   
r  zPage.documentOpenedc                   @  s.   e Zd ZU dZded< edd dddZdS )	DocumentOpenedzH
    **EXPERIMENTAL**

    Fired when opening document to write to.
    ry   r   r   r   c                 C  s   | t |d dS )Nr   )r   r   r   r   r   r   r   U  s    zDocumentOpened.from_jsonNr  r   r   r   r   r  J  s   
r  zPage.frameResizedc                   @  s$   e Zd ZdZedd dddZdS )FrameResizedz
    **EXPERIMENTAL**


    r   r   c                 C  s   |  S r   r   r   r   r   r   r   f  s    zFrameResized.from_jsonNr#   r$   r%   r&   r'   r   r   r   r   r   r  \  s   r  zPage.frameRequestedNavigationc                   @  sF   e Zd ZU dZded< ded< ded< ded	< ed
d dddZdS )FrameRequestedNavigationz
    **EXPERIMENTAL**

    Fired when a renderer-initiated navigation is requested.
    Navigation may still be cancelled after the event is issued.
    r   rT   r   r_  r   r}   r  dispositionr   r   c                 C  s6   | t |d t|d t|d t|d dS )NrV   r_  r}   r  )rT   r_  r}   r  )r   r   r   r   r  r   r   r   r   r     s    
z"FrameRequestedNavigation.from_jsonNr  r   r   r   r   r  m  s   
r  zPage.frameScheduledNavigationc                   @  sF   e Zd ZU dZded< ded< ded< ded	< ed
d dddZdS )FrameScheduledNavigationz<
    Fired when frame schedules a potential navigation.
    r   rT   r   delayr   r_  r   r}   r   r   c                 C  s4   | t |d t|d t|d t|d dS )NrV   r  r_  r}   )rT   r  r_  r}   )r   r   r   r   r   r   r   r   r   r     s    

z"FrameScheduledNavigation.from_jsonNr  r   r   r   r   r    s   
r  zPage.frameStartedLoadingc                   @  s.   e Zd ZU dZded< edd dddZdS )	FrameStartedLoadingzE
    **EXPERIMENTAL**

    Fired when frame has started loading.
    r   rT   r   r   c                 C  s   | t |d dS r  r  r   r   r   r   r     s    zFrameStartedLoading.from_jsonNr  r   r   r   r   r    s   
r  zPage.frameStoppedLoadingc                   @  s.   e Zd ZU dZded< edd dddZdS )	FrameStoppedLoadingzE
    **EXPERIMENTAL**

    Fired when frame has stopped loading.
    r   rT   r   r   c                 C  s   | t |d dS r  r  r   r   r   r   r     s    zFrameStoppedLoading.from_jsonNr  r   r   r   r   r    s   
r  zPage.downloadWillBeginc                   @  sF   e Zd ZU dZded< ded< ded< ded< edd d	d
dZdS )DownloadWillBeginz
    **EXPERIMENTAL**

    Fired when page is about to start a download.
    Deprecated. Use Browser.downloadWillBegin instead.
    r   rT   r   guidr}   suggested_filenamer   r   c                 C  s2   | t |d t|d t|d t|d dS )NrV   r  r}   ZsuggestedFilename)rT   r  r}   r  r  r   r   r   r   r     s    


zDownloadWillBegin.from_jsonNr  r   r   r   r   r    s   
r  zPage.downloadProgressc                   @  sF   e Zd ZU dZded< ded< ded< ded< edd d	d
dZdS )DownloadProgressz
    **EXPERIMENTAL**

    Fired when download makes progress. Last call has ``done`` == true.
    Deprecated. Use Browser.downloadProgress instead.
    r   r  r   total_bytesreceived_bytesr  r   r   c                 C  s0   | t |d t|d t|d t |d dS )Nr  Z
totalBytesZreceivedBytesr  )r  r  r   r  )r   r   r   r   r   r   r     s    



zDownloadProgress.from_jsonNr  r   r   r   r   r    s   
r  zPage.interstitialHiddenc                   @  s$   e Zd ZdZedd dddZdS )InterstitialHiddenz1
    Fired when interstitial page was hidden
    r   r   c                 C  s   |  S r   r   r   r   r   r   r     s    zInterstitialHidden.from_jsonNr  r   r   r   r   r!    s   r!  zPage.interstitialShownc                   @  s$   e Zd ZdZedd dddZdS )InterstitialShownz0
    Fired when interstitial page was shown
    r   r   c                 C  s   |  S r   r   r   r   r   r   r     s    zInterstitialShown.from_jsonNr  r   r   r   r   r"    s   r"  zPage.javascriptDialogClosedc                   @  s6   e Zd ZU dZded< ded< edd ddd	Zd
S )JavascriptDialogClosedzs
    Fired when a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload) has been
    closed.
    r[   r  r   
user_inputr   r   c                 C  s   | t |d t|d dS )Nr  Z	userInput)r  r$  )r[   r   r   r   r   r   r   )  s    

z JavascriptDialogClosed.from_jsonNr  r   r   r   r   r#    s
   
r#  zPage.javascriptDialogOpeningc                   @  sN   e Zd ZU dZded< ded< ded< ded< d	ed
< edd dddZdS )JavascriptDialogOpeningzt
    Fired when a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload) is about to
    open.
    r   r}   r   r   r   r[   has_browser_handlerr   default_promptr   r   c                 C  sH   | t |d t |d t|d t|d d|kr@t |d nd dS )Nr}   r   r   ZhasBrowserHandlerZdefaultPrompt)r}   r   r   r&  r'  )r   r   r   r[   r   r   r   r   r   E  s    


z!JavascriptDialogOpening.from_jsonNr  r   r   r   r   r%  1  s   
r%  zPage.lifecycleEventc                   @  sF   e Zd ZU dZded< ded< ded< ded	< ed
d dddZdS )LifecycleEventzY
    Fired for top level page lifecycle events such as navigation, load, paint, etc.
    r   rT   r{   r|   r   r   r   r   r   r   c                 C  s:   | t |d tj|d t|d tj|d dS )NrV   r   r   r   )rT   r|   r   r   )r   r   r   r   r   r  r   r   r   r   r   ]  s    
zLifecycleEvent.from_jsonNr  r   r   r   r   r(  P  s   
r(  zPage.backForwardCacheNotUsedc                   @  sF   e Zd ZU dZded< ded< ded< ded	< ed
d dddZdS )BackForwardCacheNotUsedaU  
    **EXPERIMENTAL**

    Fired for failed bfcache history navigations if BackForwardCache feature is enabled. Do
    not assume any ordering with the Page.frameNavigated event. This event is fired only for
    main-frame history navigation where the document changes (non-same-document navigations),
    when bfcache navigation fails.
    r{   r|   r   rT   rc  not_restored_explanationsz;typing.Optional[BackForwardCacheNotRestoredExplanationTree]not_restored_explanations_treer   r   c                 C  sJ   | t j|d t|d dd |d D d|krBt|d nd dS )Nr   rV   c                 S  s   g | ]}t |qS r   re  r7   r   r   r   r:     s     z5BackForwardCacheNotUsed.from_json.<locals>.<listcomp>ZnotRestoredExplanationsZnotRestoredExplanationsTree)r|   rT   r*  r+  )r   r   r   r   rb  r   r   r   r   r   {  s    z!BackForwardCacheNotUsed.from_jsonNr  r   r   r   r   r)  g  s   
	r)  zPage.loadEventFiredc                   @  s*   e Zd ZU ded< edd dddZdS )LoadEventFiredr   r   r   r   c                 C  s   | t j|d dS r  r  r   r   r   r   r     s    zLoadEventFired.from_jsonNr  r   r   r   r   r,    s   
r,  zPage.navigatedWithinDocumentc                   @  s>   e Zd ZU dZded< ded< ded< edd dd	d
ZdS )NavigatedWithinDocumentz
    **EXPERIMENTAL**

    Fired when same-document navigation happens, e.g. due to history API usage or anchor navigation.
    r   rT   r   r}   navigation_typer   r   c                 C  s(   | t |d t|d t|d dS )NrV   r}   ZnavigationType)rT   r}   r.  r  r   r   r   r   r     s
    

z!NavigatedWithinDocument.from_jsonNr  r   r   r   r   r-    s   
r-  zPage.screencastFramec                   @  s>   e Zd ZU dZded< ded< ded< edd d	d
dZdS )ScreencastFramez[
    **EXPERIMENTAL**

    Compressed image data requested by the ``startScreencast``.
    r   r{  r   metadatar   r  r   r   c                 C  s(   | t |d t|d t|d dS )Nr{  r0  r  )r{  r0  r  )r   r   r   r   r   r   r   r   r     s
    

zScreencastFrame.from_jsonNr  r   r   r   r   r/    s   
r/  z Page.screencastVisibilityChangedc                   @  s.   e Zd ZU dZded< edd dddZdS )	ScreencastVisibilityChangedzk
    **EXPERIMENTAL**

    Fired when the page with currently enabled screencast was shown or hidden .
    r[   visibler   r   c                 C  s   | t |d dS )Nr2  )r2  )r[   r   r   r   r   r     s    
z%ScreencastVisibilityChanged.from_jsonNr  r   r   r   r   r1    s   
r1  zPage.windowOpenc                   @  sF   e Zd ZU dZded< ded< ded< ded< ed	d d
ddZdS )
WindowOpenzq
    Fired when a new window is going to be opened, via window.open(), link click, form submission,
    etc.
    r   r}   window_nameztyping.List[str]window_featuresr[   user_gesturer   r   c                 C  s6   | t |d t |d dd |d D t|d dS )Nr}   Z
windowNamec                 S  s   g | ]}t |qS r   r   r7   r   r   r   r:     s     z(WindowOpen.from_json.<locals>.<listcomp>ZwindowFeaturesZuserGesture)r}   r4  r5  r6  r  r   r   r   r   r     s    


zWindowOpen.from_jsonNr  r   r   r   r   r3    s   
r3  zPage.compilationCacheProducedc                   @  s6   e Zd ZU dZded< ded< edd dddZd	S )
CompilationCacheProducedz
    **EXPERIMENTAL**

    Issued for every compilation cache generated. Is only available
    if Page.setGenerateCompilationCache is enabled.
    r   r}   r{  r   r   c                 C  s   | t |d t |d dS )Nr}   r{  )r}   r{  r   r   r   r   r   r     s    

z"CompilationCacheProduced.from_jsonNr  r   r   r   r   r7    s
   
r7  )NNN)NNNNNN)N)NN)N)N)NNNN)NNNNNNNNNNNNNNNNN)NNN)NN)NNNNNNNN)N)N)NNN)N)NNNNN)N)
__future__r   utilr   r   Zdataclassesr   enumtyping r   r   r	   r
   r   r   r   r   Enumr)   r1   r2   r>   rD   rF   rG   rH   rP   rS   rY   r^   r`   ra   rc   rp   rv   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r	  r
  r  r  r  r  r  r   r!  r$  r)  r.  r/  rP  rQ  rR  rW  rX  r^  rb  rl  rr  rt  r|  r}  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r"  r#  r%  r(  r)  r,  r-  r/  r1  r3  r7  r   r   r   r   <module>   sl  j#\5'2""7'8$, 	 !"       ) 
$
   +                2[   #       *>       $



