Ë
    ò¦1hw¸  ã                  óò  — d Z ddlm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Zdd
lmZmZmZmZ dZh d£Zh d£Zh d£Zh d£Zh d£Zeez  ez  ez  ez  ZdZde› d�ZdZde› de› d�Zde› d�Zde› de› d�Zde› de› d�Z de› de› d �Z!d!e› d"e› d#e › d$�Z"de› d%e› d&e"› d'e› d(e› d)�Z#d*e › �Z$d+e › �Z%d,e › d-e › d.�Z&d/e› d0e › d1e › de#› �Z'd2e › d3e› d4�Z(d2e › d3e› d5�Z)d6e › d�Z*d7Z+e› d8�Z,d9e(› �Z-d:e › �Z.d;e)› d<e!› d=e› d>e› d?e› e› d@e› d?e› e› dA�Z/dBe)› dCe!› dDe› dE�Z0e)› dFe"› de› dGe› d?e"› dHe› d8�Z1e)› dIe› d8�Z2e› dJe› dKe› d?�Z3e)› dFe"› de› dGe› d?e"› dHe› d8�Z4 ejj                  dLe› dM�ejl                  «      Z7 ejj                  dLe› dNe› d�ejl                  «      Z8 ejj                  dOe› dPe› dQ�ejl                  «      Z9 ejj                  dRe"› dSe› dGe› dT�ejt                  «      Z; ejj                  e«      Z< ejj                  dUe› d?�«      Z= ejj                  e› dV�«      Z> ejj                  dUe*› dW�ejt                  «      Z?dXZ@dYZAdZBdZZCd[ZDd\ZEd]ZFd^ZGd_ZHd`ZIdaZJdbZKdcZLddZM eeM¬e«      	 	 	 	 	 	 	 	 	 	 dƒdf„«       ZNd„dg„ZOd…dh„ZPd†d‡di„ZQdˆdj„ZR G dk„ dl«      ZS G dm„ dneS«      ZT G do„ dp«      ZU G dq„ dr«      ZV eVds«      j¯                  eBeFz  ¬t«      ZX eVdu«      j¯                  eBeFz  ¬t«      ZY eVdv«      j¯                  eBeFz  eEz  ¬t«      ZZ eVdw«      j¯                  eBeFz  eGz  ¬t«      Z[ eVdx«      j¯                  eBeFz  ¬t«      Z\ eVdy«      j¯                  eBeFz  ¬t«      Z] eVdz«      j¯                  eBeFz  ¬t«      Z^ eVd{«      j¯                  eBeFz  ¬t«      Z_ eVd|«      j¯                  eBeFz  eKz  ¬t«      Z` eVd}«      j¯                  eB¬t«      Za eVd~«      j¯                  eBeFz  ¬t«      Zb eVd«      j¯                  eBeFz  ¬t«      Zc eVd€«      j¯                  eBeIz  eFz  ¬t«      Zd eVd€«      j¯                  eBeJz  eFz  ¬t«      Ze eVd�«      j¯                  eBeFz  ¬t«      Zf eVd‚«      j¯                  eBeFz  ¬t«      Zgy)‰zCSS selector parser.é    )ÚannotationsN)Ú	lru_cacheé   )Úutil)Ú	css_match)Ú	css_types)ÚSelectorSyntaxError)ÚMatchÚAnyÚIteratorÚcastiýÿ  >   ú:linkú:openú:rootú:emptyú:mutedú:scopeú:checkedú:defaultú:definedú:enabledú	:any-linkú	:disabledú	:in-rangeú	:optionalú	:requiredú
:read-onlyú:last-childú:only-childú:read-writeú:first-childú:last-of-typeú:only-of-typeú:out-of-rangeú:first-of-typeú:indeterminateú:placeholder-shown>   ú:pastú:focusú:hoverú:activeú:futureú:pausedú:targetú:playingú:seekingú:stalledú:visitedú	:autofillú
:bufferingú:fullscreenú:local-linkú:focus-withinú:popover-openú:user-invalidú:focus-visibleú:target-withinú:volume-lockedú:picture-in-pictureú:hostú:current>   ú:matchesú:isú:hasú:notú:whereú	:containsú:-soup-containsú:-soup-contains-own>   ú:host-contextr>   r?   >   ú:dirú:langú
:nth-childú:nth-of-typeú:nth-last-childú:nth-last-of-typez(?:\r\n|(?!\r\n)[\n\f\r])z	(?:[ \t]|ú)z"(?:/\*[^*]*\*+(?:[^/*][^*]*\*+)*/)z(?:ú|z(?:\\(?:[a-f0-9]{1,6}z?|[^\r\n\f]|$))z?|[^\r\n\f]|$|z))z8
(?:(?:-?(?:[^\x00-\x2f\x30-\x40\x5B-\x5E\x60\x7B-\x9f]|z>)+|--)
(?:[^\x00-\x2c\x2e\x2f\x3A-\x40\x5B-\x5E\x60\x7B-\x9f]|z)*)
z (?:[-+])?(?:[0-9]+n?|n)(?:(?<=n)z	*(?:[-+])z*(?:[0-9]+))?z(?:"(?:\\(?:.|z)|[^\\"\r\n\f]+)*?"|'(?:\\(?:.|z)|[^\\'\r\n\f]+)*?'|z+)z*(?P<cmp>[!~^|*$]?=)z*(?P<value>z)(?:z*(?P<case>[is]))?)?z*\]z\#z\.z(?P<tag_ns>(?:z|\*)?\|)?(?P<tag_name>z|\*)z\[z*(?P<attr_ns>(?:z|\*)?\|)?(?P<attr_name>z
(?P<name>:z)(?P<open>\(z*)?z*)z(?P<name>:(?=--)ú&z*\)ú:z@Pz
(?P<pseudo_nth_child>z
(?P<nth_child>z|even|odd))(?:z*\)|(?P<of>Ú*z*ofz*))
z
(?P<pseudo_nth_type>z
(?P<nth_type>z|even|odd))z*\)
z(?P<values>z*,z)*)z(?P<dir>ltr|rtl)z*?(?P<relation>[,+>~]|z(?![,+>~]))z(?:(\\[a-f0-9]{1,6}z?)|(\\[^\r\n\f])|(\\$))z?)|(\\[^\r\n\f])|(\\$)|(\\z'(?P<s1>[-+])?(?P<a>[0-9]+n?|n)(?:(?<=n)z*(?P<s2>[-+])z*(?P<b>[0-9]+))?z(?:(?P<value>z)|(?P<split>z*))ú^z*$ú$ú,ú é   é   é   é   é    é@   é€   é   i   i   iô  )Úmaxsizec                ó~   — t        |«      }t        j                  | t        | ||¬«      j	                  «       |||«      S )zCached CSS compile.©ÚcustomÚflags)Úprocess_customÚcmÚ	SoupSieveÚ	CSSParserÚprocess_selectors)ÚpatternÚ
namespacesrc   rd   Úcustom_selectorss        úR/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/soupsieve/css_parser.pyÚ_cached_css_compilern   Ì   sH   € ô & fÓ-ÐÜ�<‰<ØÜØØ#Øô	
÷ Ñ
Ó
ØØØó
ð 
ó    c                 ó,   — t         j                  «        y)zPurge the cache.N)rn   Úcache_clear© ro   rm   Ú_purge_cachers   ã   s   € ô ×#Ñ#Õ%ro   c                óò   — i }| �r| j                  «       D ]_  \  }}t        j                  |«      }t        j	                  |«      €t        d|› d�«      ‚||v rt        d|› d�«      ‚||t        |«      <   Œa |S )zProcess custom.z
The name 'z)' is not a valid custom pseudo-class namezThe custom selector 'z' has already been registered)Úitemsr   ÚlowerÚ	RE_CUSTOMÚmatchr	   ÚKeyErrorÚcss_unescape)rc   rl   ÚkeyÚvalueÚnames        rm   re   re   é   s‘   € ð ÐØÐØ Ÿ,™,›.ò 	9‰JˆC�Ü—:‘:˜c“?ˆDÜ�‰˜tÓ$Ð,Ü)¨J°t°fÐ<eÐ*fÓgÐgØÐ'Ñ'ÜÐ!6°t°fÐ<YÐZÓ[Ð[Ø38Ðœ\¨$Ó/Ò0ð	9ð Ðro   c                óF   — dd„}|st         nt        j                  || «      S )zs
    Unescape CSS value.

    Strings allow for spanning the value on multiple strings by escaping a new line.
    c                ó  — | j                  d«      r6t        | j                  d«      dd d«      }|dk(  rt        }t        |«      }|S | j                  d«      r| j                  d«      dd }|S | j                  d«      rd}|S d}|S )	z(Replace with the appropriate substitute.r   Nr[   r   rX   é   õ   ï¿½Ú )ÚgroupÚintÚUNICODE_REPLACEMENT_CHARÚchr)ÚmÚ	codepointr|   s      rm   Úreplacezcss_unescape.<locals>.replaceÿ   s‘   € ð �7‰7�1Œ:Ü˜AŸG™G A›J q r˜N¨BÓ/ˆIØ˜AŠ~Ü4�	Ü˜	“NˆEð ˆð �W‰W�QŒZØ—G‘G˜A“J˜q˜r�NˆEð ˆð �W‰W�QŒZØˆEð ˆð ˆEàˆro   )r‡   ú
Match[str]ÚreturnÚstr)Ú
RE_CSS_ESCÚRE_CSS_STR_ESCÚsub)ÚcontentÚstringr‰   s      rm   rz   rz   ø   s    € óñ" %�J¬.×=Ñ=¸gÀwÓOÐOro   c                óz  — g }t        | «      }|dkD  xr | d   dk(  }|dk(  r|r|j                  d| › �«       nót        | «      D ]å  \  }}t        |«      }|dk(  r|j                  d«       Œ(d|cxk  rdk  sn |dk(  r|j                  d|d›d	�«       ŒQ|dk(  s|r*|dk(  r%d
|cxk  rdk  rn n|j                  d|d›d	�«       Œ‚|dv s:|dk\  s5d
|cxk  rdk  s*n d
|cxk  rdk  sn d|cxk  rdk  sn d|cxk  rdk  rn n|j                  |«       ŒÒ|j                  d|› �«       Œç dj	                  |«      S )zEscape identifier.r   ú-r   ú\r�   é   é   ÚxrW   é0   é9   )é-   é_   r^   éA   éZ   éa   éz   r‚   )ÚlenÚappendÚ	enumerateÚordÚjoin)Úidentr‘   ÚlengthÚ
start_dashÚindexÚcrˆ   s          rm   Úescaperª     sG  € ð €FÜ�‹Z€FØ˜!‘Ò/  a¡¨C¡€JØ�‚{‘zà�‰˜˜5˜'�lÕ#ä! %Ó(ò 	(‰HˆE�1Ü˜A›ˆIØ˜DÒ Ø—‘˜hÕ'Ø˜)Ô+ tÔ+°	¸TÒ0AØ—‘  9¨Q -¨qÐ1Õ2Ø˜1’*¡°¸²
À$È)ÔB[ÐW[ÕB[Ø—‘  9¨Q -¨qÐ1Õ2à˜\Ñ)¨Y¸$Ò->À4È9ÔC\ÐX\ÔC\Ø˜Ô* dÔ*°¸	Ô0IÀTÔ0IÈtÐW`ÔOhÐdhÕOhà—‘˜aÕ à—‘  1 #˜hÕ'ð	(ð �7‰7�6‹?Ðro   c                  ó(   — e Zd ZdZdd„Zdd„Zdd„Zy)	ÚSelectorPatternúSelector pattern.c                ó¨   — || _         t        j                  |t        j                  t        j                  z  t        j
                  z  «      | _        y)úInitialize.N)r}   ÚreÚcompileÚIÚXÚUÚ
re_pattern)Úselfr}   rj   s      rm   Ú__init__zSelectorPattern.__init__2  s2   € ð ˆŒ	ÜŸ*™* W¬b¯d©d´R·T±T©k¼B¿D¹DÑ.@ÓAˆ�ro   c                ó   — | j                   S )ú	Get name.)r}   ©r¶   s    rm   Úget_namezSelectorPattern.get_name8  s   € ð �y‰yÐro   c                ó:   — | j                   j                  ||«      S )úMatch the selector.)rµ   rx   )r¶   Úselectorr¨   rd   s       rm   rx   zSelectorPattern.match=  s   € ð �‰×$Ñ$ X¨uÓ5Ð5ro   N)r}   rŒ   rj   rŒ   r‹   ÚNone©r‹   rŒ   ©r¾   rŒ   r¨   r„   rd   r„   r‹   zMatch[str] | None©Ú__name__Ú
__module__Ú__qualname__Ú__doc__r·   r»   rx   rr   ro   rm   r¬   r¬   /  s   „ ÙóBóô
6ro   r¬   c                  ó(   — e Zd ZdZdd„Zdd„Zdd„Zy)	ÚSpecialPseudoPatternr­   c                ó&  — i | _         |D ]/  }|d   } |d   ||d   «      }|d   D ]  }|| j                   |<   Œ Œ1 d| _        t        j                  t        t        j
                  t        j                  z  t        j                  z  «      | _        y)r¯   r   r€   rX   r   N)	ÚpatternsÚmatched_namer°   r±   ÚPAT_PSEUDO_CLASS_SPECIALr²   r³   r´   Úre_pseudo_name)r¶   rÊ   Úpr}   rj   Úpseudos         rm   r·   zSpecialPseudoPattern.__init__F  s�   € ð ˆŒØò 	0ˆAØ�Q‘4ˆDØ�a˜‘d˜4  1¡Ó&ˆGØ˜A™$ò 0�Ø(/�—‘˜fÒ%ñ0ð	0ð !ˆÔÜ Ÿj™jÔ)AÄ2Ç4Á4Ì"Ï$É$Á;ÔQS×QUÑQUÑCUÓVˆÕro   c                óR   — | j                   €dS | j                   j                  «       S )r¹   r‚   )rË   r»   rº   s    rm   r»   zSpecialPseudoPattern.get_nameS  s)   € ð ×&Ñ&Ð.ˆrÐP°D×4EÑ4E×4NÑ4NÓ4PÐPro   c                ó  — d}| j                   j                  ||«      }|rft        j                  t	        |j                  d«      «      «      }| j                  j                  |«      }|r|j                  |||«      }|r|| _        |S )r½   Nr}   )	rÍ   rx   r   rv   rz   rƒ   rÊ   ÚgetrË   )r¶   r¾   r¨   rd   rÏ   r‡   r}   rj   s           rm   rx   zSpecialPseudoPattern.matchX  sx   € ð ˆØ×Ñ×%Ñ% h°Ó6ˆÙÜ—:‘:œl¨1¯7©7°6«?Ó;Ó<ˆDØ—m‘m×'Ñ'¨Ó-ˆGÙØ Ÿ™ x°¸Ó>�ÙØ(/�DÔ%àˆro   N)rÊ   zCtuple[tuple[str, tuple[str, ...], str, type[SelectorPattern]], ...]r‹   r¿   rÀ   rÁ   rÂ   rr   ro   rm   rÈ   rÈ   C  s   „ ÙóWóQô
ro   rÈ   c                  ó4   — e Zd ZdZdd„Zdd„Zd	d„Zd
d„ZeZy)Ú	_Selectorzý
    Intermediate selector class.

    This stores selector data for a compound selector as we are acquiring them.
    Once we are done collecting the data for a compound selector, we freeze
    the data in an object that can be pickled and hashed.
    c                ó,  — |j                  dd«      | _        |j                  dg «      | _        |j                  dg «      | _        |j                  dg «      | _        |j                  dg «      | _        |j                  dg «      | _        |j                  dg «      | _        |j                  d	d«      | _        |j                  d
g «      | _	        |j                  dg «      | _
        |j                  dd«      | _        |j                  dd«      | _        y)r¯   ÚtagNÚidsÚclassesÚ
attributesÚnthÚ	selectorsÚ	relationsÚrel_typeÚcontainsÚlangrd   r   Úno_matchF)rÒ   rÖ   r×   rØ   rÙ   rÚ   rÛ   rÜ   rÝ   rÞ   rß   rd   rà   )r¶   Úkwargss     rm   r·   z_Selector.__init__q  sÜ   € ð —:‘:˜e TÓ*ˆŒØ—:‘:˜e RÓ(ˆŒØ—z‘z )¨RÓ0ˆŒØ Ÿ*™* \°2Ó6ˆŒØ—:‘:˜e RÓ(ˆŒØŸ™ K°Ó4ˆŒØŸ™ K°Ó4ˆŒØŸ
™
 :¨tÓ4ˆŒØŸ
™
 :¨rÓ2ˆŒØ—J‘J˜v rÓ*ˆŒ	Ø—Z‘Z ¨Ó+ˆŒ
ØŸ
™
 :¨uÓ5ˆ�ro   c                ó¼   — |rG|d   }|j                   j                  |dd «       t        j                  |j	                  «       g«      S t        j                  «       S )zFreeze relation.r   r   N)rÜ   ÚextendÚctÚSelectorListÚfreeze)r¶   rÜ   Úsels      rm   Ú_freeze_relationsz_Selector._freeze_relations�  sL   € ñ Ø˜A‘,ˆCØ�M‰M× Ñ  ¨1¨2 Ô/Ü—?‘? C§J¡J£L >Ó2Ð2ä—?‘?Ó$Ð$ro   c                óø  — | j                   rt        j                  «       S t        j                  | j                  t        | j                  «      t        | j                  «      t        | j                  «      t        | j                  «      t        | j                  «      | j                  | j                  «      | j                  t        | j                  «      t        | j                  «      | j                   «      S )zFreeze self.)rà   rä   ÚSelectorNullÚSelectorrÖ   Útupler×   rØ   rÙ   rÚ   rÛ   rè   rÜ   rÝ   rÞ   rß   rd   rº   s    rm   ræ   z_Selector.freeze‹  s¢   € ð �=Š=Ü—?‘?Ó$Ð$ä—;‘;Ø—‘Ü�d—h‘h“Ü�d—l‘lÓ#Ü�d—o‘oÓ&Ü�d—h‘h“Ü�d—n‘nÓ%Ø×&Ñ& t§~¡~Ó6Ø—‘Ü�d—m‘mÓ$Ü�d—i‘iÓ Ø—
‘
óð ro   c                ó@  — d| j                   ›d| j                  ›d| j                  ›d| j                  ›d| j                  ›d| j
                  ›d| j                  ›d| j                  ›d	| j                  ›d
| j                  ›d| j                  ›d| j                  ›d�S )zString representation.z_Selector(tag=z, ids=z
, classes=z, attributes=z, nth=z, selectors=z, relations=z, rel_type=z, contains=z, lang=z, flags=z, no_match=rO   )rÖ   r×   rØ   rÙ   rÚ   rÛ   rÜ   rÝ   rÞ   rß   rd   rà   rº   s    rm   Ú__str__z_Selector.__str__Ÿ  s¨   € ð ˜TŸX™X˜L¨¨t¯x©x¨l¸*ÀTÇ\Á\ÐDTÐTaÐbf×bqÑbqÐatð uØ—8‘8�,˜l¨4¯>©>Ð*<¸LÈÏÉÐHZð [ØŸ™Ð(¨°D·M±MÐ3DÀGÈDÏIÉIÈ=ÐX`Ðae×akÑakÐ`nð oØŸ™Ð(¨ð+ð	
ro   N)rá   r   r‹   r¿   )rÜ   úlist[_Selector]r‹   úct.SelectorList)r‹   zct.Selector | ct.SelectorNullrÀ   )	rÃ   rÄ   rÅ   rÆ   r·   rè   ræ   rî   Ú__repr__rr   ro   rm   rÔ   rÔ   h  s"   „ ñó6ó %óó(
ð �Hro   rÔ   c                  ó2  — e Zd ZdZ ede«       eddeefddeefdde	efd	d
e
efddeeff«       ede«       ede«       ede«       ede«       ede«       ede«       ede«       ede«       ede«       ede«      fZ	 	 d(	 	 	 	 	 	 	 d)d„Zd*d„Zd*d„Zd*d„Z	 	 	 	 	 	 	 	 	 	 	 	 d+d„Z	 	 	 	 	 	 	 	 	 	 d,d„Z	 	 	 	 	 	 	 	 	 	 	 	 d-d„Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 d.d„Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d/d „Zd*d!„Z d*d"„Z!d*d#„Z"d*d$„Z#	 	 d0	 	 	 	 	 	 	 d1d%„Z$d2d&„Z%d0d3d'„Z&y)4rh   zParse CSS selectors.Úpseudo_closeÚpseudo_contains)rE   rF   rG   Úpseudo_nth_child)rK   rM   Úpseudo_nth_type)rL   rN   Úpseudo_lang)rJ   Ú
pseudo_dir)rI   Úpseudo_class_customÚpseudo_classÚpseudo_elementÚampÚat_ruleÚidÚclassrÖ   Ú	attributeÚcombineNc                ó¦   — |j                  dd«      | _        || _        | j                  t        j                  z  | _        |€i | _        y|| _        y)r¯   ú r�   N)r‰   rj   rd   r   ÚDEBUGÚdebugrc   )r¶   r¾   rc   rd   s       rm   r·   zCSSParser.__init__Ë  sD   € ð  ×'Ñ'¨°Ó9ˆŒØˆŒ
Ø—Z‘Z¤$§*¡*Ñ,ˆŒ
Ø"˜N�bˆ�°ˆ�ro   c                ó–  — d}|j                  d«      }|j                  d«      r$t        j                  |j                  d«      «      nd}|j                  d«      rt        |j                  d«      dd «      nd}t        |j                  d«      «      }d}	d}
d}|r)|d	k(  rt        j
                  nd
t        j                  z  }nLt        j                  |«      dk(  r$t        j
                  t        j                  z  }d}	nt        j                  }|rY|j                  d«      j                  d«      rt        |j                  d«      dd d«      }nt        |j                  d«      «      }|sd}�n’|j                  d«      r.t	        j                  dt	        j                  |«      z  |«      }�nS|j                  d«      r.t	        j                  dt	        j                  |«      z  |«      }�n|j                  d«      r-t	        j                  dt	        j                  |«      z  |«      }nÖ|j                  d«      rH|rt        j                  |«      rdnt	        j                  |«      }t	        j                  d|z  |«      }n}|j                  d«      r-t	        j                  dt	        j                  |«      z  |«      }n?t	        j                  dt	        j                  |«      z  |«      }|j                  d«      rd}|	r!|rt	        j                  |j                  «      }
t        j                  ||||
«      }|rjt        «       }|j                   j#                  |«       t        j$                  |j'                  «       gdd«      }|j(                  j#                  |«       d}|S |j                   j#                  |«       d}|S )z8Create attribute selector from the returned regex match.FÚcmpÚcaseNÚattr_nséÿÿÿÿr‚   Ú	attr_nameÚir   ÚtypeTr|   ©ú"ú'r   rT   z^%s.*rU   z.*?%s$rS   z.*?%s.*ú~z[^\s\S]z7.*?(?:(?<=^)|(?<=[ \t\r\n\f]))%s(?=(?:[ \t\r\n\f]|$)).*rP   z^%s(?:-.*)?$z^%s$ú!)rƒ   r   rv   rz   r°   r²   ÚDOTALLÚ
startswithr±   rª   ÚRE_WSÚsearchrj   rä   ÚSelectorAttributerÔ   rÙ   r¡   rå   ræ   rÛ   )r¶   rç   r‡   Úhas_selectorÚinverseÚopr  ÚnsÚattrÚis_typeÚpattern2r|   rd   rj   Úsel_attrÚsub_selÚnot_lists                    rm   Úparse_attribute_selectorz"CSSParser.parse_attribute_selectorØ  sä  € ð ˆØ�W‰W�U‹^ˆØ./¯g©g°f¬oŒt�z‰z˜!Ÿ'™' &›/Ô*À4ˆØ67·g±g¸iÔ6HŒ\˜!Ÿ'™' )Ó,¨S¨bÐ1Ô2ÈbˆÜ˜AŸG™G KÓ0Ó1ˆØˆØˆØˆáØ! Sš[”R—T’T¨a´2·9±9Ñ<‰EÜ�Z‰Z˜Ó Ò'Ü—D‘Dœ2Ÿ9™9Ñ$ˆEØ‰Gä—I‘IˆEáØ�w‰w�wÓ×*Ñ*¨:Ô6Ü$ Q§W¡W¨WÓ%5°a¸Ð%;¸TÓB‘ä$ Q§W¡W¨WÓ%5Ó6�áàŠGØ�]‰]˜3Ôä—j‘j ¬B¯I©I°eÓ,<Ñ!<¸eÓDŠGØ�]‰]˜3Ôä—j‘j ¬R¯Y©Y°uÓ-=Ñ!=¸uÓEŠGØ�]‰]˜3Ôä—j‘j ¬b¯i©i¸Ó.>Ñ!>ÀÓF‰GØ�]‰]˜3Ôñ ',¬u¯|©|¸EÔ/B‘JÌÏ	É	ÐRWÓHXˆEÜ—j‘jÐ![Ð^cÑ!cÐejÓk‰GØ�]‰]˜3Ôä—j‘j ´2·9±9¸UÓ3CÑ!CÀUÓK‰Gô —j‘j ¬2¯9©9°UÓ+;Ñ!;¸UÓCˆGØ�}‰}˜SÔ!à�Ù‘wÜ—z‘z '§/¡/Ó2ˆHô ×'Ñ'¨¨b°'¸8ÓDˆÙä“kˆGØ×Ñ×%Ñ% hÔ/Ü—‘¨¯©Ó(8Ð'9¸4ÀÓGˆHØ�M‰M× Ñ  Ô*ð ˆØÐð �N‰N×!Ñ! (Ô+àˆØÐro   c                óÔ   — |j                  d«      rt        |j                  d«      dd «      nd}t        |j                  d«      «      }t        j                  ||«      |_        d}|S )z#Parse tag pattern from regex match.Útag_nsNr
  Útag_nameT)rƒ   rz   rä   ÚSelectorTagrÖ   )r¶   rç   r‡   r  ÚprefixrÖ   s         rm   Úparse_tag_patternzCSSParser.parse_tag_pattern  s\   € ð :;¿¹ÀÔ9J”˜aŸg™g hÓ/°°Ð4Ô5ÐPTˆÜ˜1Ÿ7™7 :Ó.Ó/ˆÜ—.‘.  fÓ-ˆŒØˆØÐro   c                ó"  — t        j                  t        |j                  d«      «      «      }| j                  j                  |«      }|€;t        d|› d|j                  d«      › �| j                  |j                  d«      «      ‚t        |t        j                  «      sR| j                  |= t        || j                  | j                  ¬«      j                  t        ¬«      }|| j                  |<   |j                   j#                  |«       d}|S )zÔ
        Parse custom pseudo class alias.

        Compile custom selectors as we need them. When compiling a custom selector,
        set it to `None` in the dictionary so we can avoid an infinite loop.
        r}   zUndefined custom selector 'z' found at position r   rb   ©rd   T)r   rv   rz   rƒ   rc   rÒ   r	   Úendrj   Ú
isinstancerä   rå   rh   rd   ri   Ú
FLG_PSEUDOrÛ   r¡   )r¶   rç   r‡   r  rÏ   r¾   s         rm   Úparse_pseudo_class_customz#CSSParser.parse_pseudo_class_custom'  sã   € ô —‘œL¨¯©°«Ó9Ó:ˆØ—;‘;—?‘? 6Ó*ˆØÐÜ%Ø-¨f¨XÐ5IÈ!Ï%É%ÐPQË(ÈÐTØ—‘Ø—‘�a“óð ô ˜(¤B§O¡OÔ4Ø—‘˜FÐ#Ü Ø §¡°D·J±JôçÑ¤jÐÓ1ð ð #+ˆD�K‰K˜Ñà�‰×Ñ˜XÔ&ØˆØÐro   c                óz  — d}t        j                  t        |j                  d«      «      «      }|j                  d«      rd}|r0|t        v r(| j                  |||||j                  d«      «      }||fS |�s|t        v �r|dk(  r%|xj                  t        j                  z  c_        �nÕ|dk(  r'|xj                  t        j                  z  c_        d}�n©|dk(  r%|xj                  t        j                  z  c_        �n|d	k(  r%|xj                  t        j                  z  c_        �nU|d
v r!|j                  j                  t         «       �n0|dk(  r!|j                  j                  t"        «       �n
|dk(  r!|j                  j                  t$        «       �nä|dk(  r!|j                  j                  t&        «       �n¾|dk(  r!|j                  j                  t(        «       �n˜|dk(  r!|j                  j                  t*        «       �nr|dk(  r!|j                  j                  t,        «       �nL|dk(  r!|j                  j                  t.        «       �n&|dk(  r!|j                  j                  t0        «       �n |dk(  r!|j                  j                  t2        «       �nÚ|dk(  r!|j                  j                  t4        «       �n´|dk(  r!|j                  j                  t6        «       �nŽ|dk(  r!|j                  j                  t8        «       �nh|dk(  r!|j                  j                  t:        «       �nB|dk(  r!|j                  j                  t<        «       �n|dk(  rG|j>                  j                  t        j@                  dddddt        jB                  «       «      «       �nÐ|dk(  rG|j>                  j                  t        j@                  dddddt        jB                  «       «      «       �n„|dk(  rG|j>                  j                  t        j@                  dddddt        jB                  «       «      «       �n8|dk(  rF|j>                  j                  t        j@                  dddddt        jB                  «       «      «       ní|dk(  rr|j>                  jE                  t        j@                  dddddt        jB                  «       «      t        j@                  dddddt        jB                  «       «      g«       nv|dk(  rq|j>                  jE                  t        j@                  dddddt        jB                  «       «      t        j@                  dddddt        jB                  «       «      g«       d}||fS |rB|tF        v r:| jI                  ||j                  d«      tJ        tL        z  «       d|_'        d}||fS |s|tP        v rd|_'        d}||fS |tR        v r*tU        d |› d!�| jV                  |jY                  d«      «      ‚tU        d!|› d"�| jV                  |jY                  d«      «      ‚)#zParse pseudo class.Fr}   ÚopenTr   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#   z!Invalid syntax for pseudo class 'r  z¢' was detected as a pseudo-class and is either unsupported or invalid. If the syntax was not intended to be recognized as a pseudo-class, please escape the colon.)-r   rv   rz   rƒ   ÚPSEUDO_COMPLEXÚparse_pseudo_openr+  ÚPSEUDO_SIMPLErd   rä   ÚSEL_ROOTÚSEL_DEFINEDÚ	SEL_SCOPEÚ	SEL_EMPTYrÛ   r¡   ÚCSS_LINKÚCSS_CHECKEDÚCSS_DEFAULTÚCSS_INDETERMINATEÚCSS_DISABLEDÚCSS_ENABLEDÚCSS_REQUIREDÚ	CSS_MUTEDÚCSS_OPENÚCSS_OPTIONALÚCSS_READ_ONLYÚCSS_READ_WRITEÚCSS_IN_RANGEÚCSS_OUT_OF_RANGEÚCSS_PLACEHOLDER_SHOWNrÚ   ÚSelectorNthrå   rã   ÚPSEUDO_COMPLEX_NO_MATCHÚparse_selectorsr-  ÚFLG_OPENrà   ÚPSEUDO_SIMPLE_NO_MATCHÚPSEUDO_SUPPORTEDr	   rj   Ústart)r¶   rç   r‡   r  Ú	iselectorÚis_htmlÚcomplex_pseudorÏ   s           rm   Úparse_pseudo_classzCSSParser.parse_pseudo_classC  sÙ  € ð ˆÜ—‘œL¨¯©°«Ó9Ó:ˆØ�7‰7�6Œ?Ø!ˆNÙ˜f¬Ñ6Ø×1Ñ1°#°v¸|ÈYÐXY×X]ÑX]Ð^_ÓX`ÓaˆLðj ˜WÐ$Ð$òi   F¬mÒ$;Ø˜Ò Ø—	’	œRŸ[™[Ñ(—	Ø˜:Ò%Ø—	’	œRŸ^™^Ñ+•	Ø’Ø˜8Ò#Ø—	’	œRŸ\™\Ñ)—	Ø˜8Ò#Ø—	’	œRŸ\™\Ñ)—	ØÐ1Ñ1Ø—‘×$Ñ$¤XÖ.Ø˜:Ò%Ø—‘×$Ñ$¤[Ö1Ø˜:Ò%Ø—‘×$Ñ$¤[Ö1ØÐ+Ò+Ø—‘×$Ñ$Ô%6Ö7Ø˜;Ò&Ø—‘×$Ñ$¤\Ö2Ø˜:Ò%Ø—‘×$Ñ$¤[Ö1Ø˜;Ò&Ø—‘×$Ñ$¤\Ö2Ø˜8Ò#Ø—‘×$Ñ$¤YÖ/Ø˜7Ò"Ø—‘×$Ñ$¤XÖ.Ø˜;Ò&Ø—‘×$Ñ$¤\Ö2Ø˜<Ò'Ø—‘×$Ñ$¤]Ö3Ø˜=Ò(Ø—‘×$Ñ$¤^Ö4Ø˜;Ò&Ø—‘×$Ñ$¤\Ö2Ø˜?Ò*Ø—‘×$Ñ$Ô%5Ö6ØÐ/Ò/Ø—‘×$Ñ$Ô%:Ö;Ø˜>Ò)Ø—‘—‘œrŸ~™~¨a°¸¸5À%ÌÏÉÓIZÓ[Ö\Ø˜=Ò(Ø—‘—‘œrŸ~™~¨a°¸¸5À$ÌÏÉÓHYÓZÖ[ØÐ+Ò+Ø—‘—‘œrŸ~™~¨a°¸¸4ÀÌÏÉÓHYÓZÖ[Ø˜?Ò*Ø—‘—‘œrŸ~™~¨a°¸¸4ÀÄrÇÁÓGXÓYÕZØ˜=Ò(Ø—‘—‘äŸ™ q¨%°°E¸5Ä"Ç/Á/ÓBSÓTÜŸ™ q¨%°°E¸4ÄÇÁÓARÓSðõð ˜?Ò*Ø—‘—‘äŸ™ q¨%°°D¸%ÄÇÁÓARÓSÜŸ™ q¨%°°D¸$ÄÇÁÓ@QÓRðôð  ˆLð, ˜WÐ$Ð$ñ+  Ô*AÑ AØ× Ñ  ¨A¯E©E°!«H´jÄ8Ñ6KÔLØˆCŒLØˆLð$ ˜WÐ$Ð$ñ#   FÔ.DÑ$DØˆCŒLØˆLð ˜WÐ$Ð$ð Ô'Ñ'Ü%Ø3°F°8¸1Ð=Ø—‘Ø—‘˜“
óð ô &Ø�F�8ð nð nà—‘Ø—‘˜“
ó	ð ro   c                óè  — |j                  «       }|j                  d«      rd}nd}t        j                  t	        |d   «      «      |d<   t        j                  |j                  d|z   «      «      }|dk(  rd}d}	d	}
�n|d
k(  rd}d}	d	}
�nt        t        t           t        j                  |«      «      }|j                  d«      r|j                  d«      dk(  rdnd}|j                  d«      }|j                  d«      }
|j                  d«      r|dz  }n|
r	||dd z  }n||z  }|j                  d«      r|j                  d«      dk(  rdnd}|j                  d«      r||j                  d«      z  }nd}t        |d«      }t        |d«      }	|d   }|dk(  r½|j                  d«      r.| j                  ||j                  d«      t         t"        z  «      }nt$        }|dk(  r7|j&                  j)                  t+        j,                  ||
|	dd|«      «       d	}|S |dk(  r3|j&                  j)                  t+        j,                  ||
|	dd	|«      «       d	}|S |dk(  rI|j&                  j)                  t+        j,                  ||
|	d	dt+        j.                  «       «      «       d	}|S |dk(  rE|j&                  j)                  t+        j,                  ||
|	d	d	t+        j.                  «       «      «       d	}|S )zParse `nth` pseudo.rõ   Ú_childÚ_typer}   rÚ   ÚevenrX   r   TÚoddr   Ús1r“   r‚   ÚaÚnÚ1Nr
  Ús2ÚbÚ0é
   ÚofrK   FrM   rL   rN   )Ú	groupdictrÒ   r   rv   rz   r   r
   rŒ   ÚRE_NTHrx   rƒ   Úendswithr  r„   rI  r+  r-  rJ  ÚCSS_NTH_OF_S_DEFAULTrÚ   r¡   rä   rG  rå   )r¶   rç   r‡   r  rN  ÚmdictÚpostfixr�   rW  r[  ÚvarÚ	nth_partsÚ_s1rX  Ú_s2Ú
pseudo_selÚnth_sels                    rm   Úparse_pseudo_nthzCSSParser.parse_pseudo_nth©  s§  € ð —‘“ˆØ�9‰9Ð'Ô(Ø‰GàˆGÜŸ
™
¤<°°f±Ó#>Ó?ˆˆf‰Ü—*‘*˜UŸY™Y u¨w¡Ó7Ó8ˆØ�fÒàˆBØˆBØŠCØ˜ÒàˆBØˆBØŠCäœU¤3™Z¬¯©°gÓ)>Ó?ˆIØ"Ÿ™¨Ô.°9·?±?À4Ó3HÈCÒ3O‘#ÐUWˆCØ—‘ Ó$ˆAØ—*‘*˜S“/ˆCØ�|‰|˜CÔ Ø�s‘
‘ÙØ�q˜˜"�v‘‘à�q‘�Ø"Ÿ™¨Ô.°9·?±?À4Ó3HÈCÒ3O‘#ÐUWˆCØ�‰˜sÔ#Ø�y—‘ sÓ+Ñ+‘à�Ü�S˜"“ˆBÜ�S˜"“ˆBà˜6‘]ˆ
Ø�hÒØ�w‰w�tŒ}à×.Ñ.¨y¸!¿%¹%À»(ÄJÔQYÑDYÓZ‘ô /�Ø˜\Ò)Ø—‘—‘œrŸ~™~¨b°#°r¸5À%ÈÓQÔRð ˆØÐð Ð0Ò0Ø—‘—‘œrŸ~™~¨b°#°r¸5À$ÈÓPÔQð ˆØÐð ˜^Ò+Ø—‘—‘œrŸ~™~¨b°#°r¸4ÀÌÏÉÓHYÓZÔ[ð ˆØÐð Ð2Ò2Ø—‘—‘œrŸ~™~¨b°#°r¸4ÀÄrÇÁÓGXÓYÔZØˆØÐro   c                óÒ   — t         t        z  }|dk(  r
|t        z  }n|dk(  r
|t        z  }n|dv r	|t        z  }|j
                  j                  | j                  |||«      «       d}|S )z"Parse pseudo with opening bracket.rC   rB   )rD   rA   T)r-  rJ  ÚFLG_NOTÚFLG_RELATIVEÚFLG_FORGIVErÛ   r¡   rI  )r¶   rç   r}   r  rN  r¨   rd   s          rm   r2  zCSSParser.parse_pseudo_openê  so   € ô œXÑ%ˆØ�6Š>Ø”WÑ‰EØ�VŠ^Ø”\Ñ!‰EØÐ&Ñ&Ø”[Ñ ˆEà�‰×Ñ˜T×1Ñ1°)¸UÀEÓJÔKØˆàÐro   c                óº  — |j                  d«      j                  «       }|st        }|t        k(  rH||_        |d   j
                  j                  |«       dt        z   }|j                  t        «       «       nS|r&||_        |d   j
                  j                  |«       n&|dd t        k7  rt        d|› �| j                  |«      ‚d|z   }t        «       }d}|||fS )úParse combinator tokens.Úrelationr
  rR   r   Nz%The multiple combinators at position F)
rƒ   ÚstripÚWS_COMBINATORÚCOMMA_COMBINATORrÝ   rÜ   r¡   rÔ   r	   rj   )r¶   rç   r‡   r  rÛ   rÝ   r¨   Ú
combinators           rm   Úparse_has_combinatorzCSSParser.parse_has_combinator  sÝ   € ð —W‘W˜ZÓ(×.Ñ.Ó0ˆ
ÙÜ&ˆJØÔ)Ò)Ø#ˆCŒLØ�b‰M×#Ñ#×*Ñ*¨3Ô/Øœ]Ñ*ˆHØ×ÑœY›[Õ)áà'�”Ø˜"‘×'Ñ'×.Ñ.¨sÕ3Ø˜!˜"�¤Ò.ô *Ø;¸E¸7ÐCØ—L‘LØóð ð ˜ZÑ'ˆHä‹kˆØˆØ˜S (Ð*Ð*ro   c	                óL  — |j                  d«      j                  «       }	|	st        }	|sP|r	|	t        k7  rt	        d|	› d|› d�| j
                  |«      ‚|	t        k(  rºd|_        |dd…= |j                  |«       nœ|	t        k(  r[|j                  s|st        j                  dd«      |_        |j                  j                  |«       |j                  |«       |dd…= n8|j                  j                  |«       |	|_        |dd…= |j                  |«       t        «       }d}||fS )	rr  rs  zThe combinator 'z' at position z , must have a selector before itTNrS   F)rƒ   rt  ru  rv  r	   rj   rà   r¡   rÖ   rä   r&  rÜ   rã   rÝ   rÔ   )
r¶   rç   r‡   r  rÛ   rÜ   Ú	is_pseudoÚ
is_forgiver¨   rw  s
             rm   Úparse_combinatorzCSSParser.parse_combinator,  s  € ð —W‘W˜ZÓ(×.Ñ.Ó0ˆ
ÙÜ&ˆJÙÙ Ô/?Ò!?Ü)Ø& z l°.ÀÀÐGgÐhØ—L‘LØóð ð Ô-Ò-Ø#�”Øša�LØ× Ñ  Õ%àÔ-Ò-Ø—w’w¡yä Ÿn™n¨S°$Ó7�C”GØ—‘×$Ñ$ YÔ/Ø× Ñ  Ô%Øša‘Là—‘×$Ñ$ YÔ/Ø)�”Øša�LØ× Ñ  Ô%ä‹kˆØˆà˜SÐ Ð ro   c                óò   — |j                  d«      }|j                  d«      r+|j                  j                  t	        |dd «      «       d}|S |j
                  j                  t	        |dd «      «       d}|S )zParse HTML classes and ids.r   ú.r   NT)rƒ   r  rØ   r¡   rz   r×   )r¶   rç   r‡   r  r¾   s        rm   Úparse_class_idzCSSParser.parse_class_id\  sq   € ð —7‘7˜1“:ˆØ×Ñ˜sÔ#Ø�K‰K×Ñœ|¨H°Q°R¨LÓ9Ô:ð ˆØÐð �G‰G�N‰Nœ<¨°°¨Ó5Ô6ØˆØÐro   c                ó6  — t        j                  t        |j                  d«      «      «      }|dk(  rt	        j
                  dt        «       |dk(  }t        |j                  d«      «      }g }t        j                  |«      D ]b  }|j                  d«      rŒ|j                  d«      }	|	j                  d«      rt        |	d	d
 d«      }	nt        |	«      }	|j                  |	«       Œd |j                  j                  t        j                  ||«      «       d}|S )zParse contains.r}   rE   z\The pseudo class ':contains' is deprecated, ':-soup-contains' should be used moving forward.rG   ÚvaluesÚsplitr|   )r  r  r   r
  T)r   rv   rz   rƒ   ÚwarningsÚwarnÚFutureWarningÚ	RE_VALUESÚfinditerr  r¡   rÞ   rä   ÚSelectorContains)
r¶   rç   r‡   r  rÏ   Úcontains_ownr�  rÊ   Útokenr|   s
             rm   Úparse_pseudo_containszCSSParser.parse_pseudo_containsg  s÷   € ô —‘œL¨¯©°«Ó9Ó:ˆØ�[Ò Ü�M‰MØnÜôð Ð!6Ñ6ˆÜ˜aŸg™g hÓ/Ó0ˆØˆÜ×'Ñ'¨Ó/ò 	#ˆEØ�{‰{˜7Ô#ØØ—K‘K Ó(ˆEØ×Ñ 
Ô+Ü$ U¨1¨R [°$Ó7‘ä$ UÓ+�Ø�O‰O˜EÕ"ð	#ð 	�‰×ÑœB×/Ñ/°¸,ÓGÔHØˆØÐro   c                ó€  — |j                  d«      }g }t        j                  |«      D ]b  }|j                  d«      rŒ|j                  d«      }|j                  d«      rt	        |dd d«      }nt	        |«      }|j                  |«       Œd |j                  j                  t        j                  |«      «       d}|S )zParse pseudo language.r�  r‚  r|   r  r   r
  T)	rƒ   r†  r‡  r  rz   r¡   rß   rä   ÚSelectorLang)r¶   rç   r‡   r  r�  rÊ   rŠ  r|   s           rm   Úparse_pseudo_langzCSSParser.parse_pseudo_lang€  sª   € ð —‘˜Ó"ˆØˆÜ×'Ñ'¨Ó/ò 		#ˆEØ�{‰{˜7Ô#ØØ—K‘K Ó(ˆEØ×Ñ 
Ô+Ü$ U¨1¨R [°$Ó7‘ä$ UÓ+�à�O‰O˜EÕ"ð		#ð 	�‰�‰œŸ™¨Ó1Ô2ØˆàÐro   c                óÂ   — t        j                  |j                  d«      «      dk(  rt        j                  nt        j
                  }|xj                  |z  c_        d}|S )zParse pseudo direction.ÚdirÚltrT)r   rv   rƒ   rä   ÚSEL_DIR_LTRÚSEL_DIR_RTLrd   )r¶   rç   r‡   r  r|   s        rm   Úparse_pseudo_dirzCSSParser.parse_pseudo_dir•  sD   € ô #'§*¡*¨Q¯W©W°U«^Ó"<ÀÒ"E”—’Ì2Ï>É>ˆØ�	Š	�UÑ�	ØˆØÐro   c           
     óŠ  — t        «       }g }d}d}g }dt        z   }	t        |t        z  «      }
t        |t        z  «      }t        |t
        z  «      }t        |t        z  «      }t        |t        z  «      }t        |t        z  «      }t        |t        z  «      }t        |t        z  «      }t        |t        z  «      }t        |t        z  «      }t        |t        z  «      }| j                  r�|rt        d«       |
rt        d«       |rt        d«       |rt        d«       |rt        d«       |rt        d«       |rt        d	«       |rt        d
«       |rt        d«       |rt        d«       |rt        d«       |r|j!                  t        «       «       	 	 t#        |«      \  }}|dk(  rt%        d|j'                  d«      › �«      ‚|dk(  r'|xj(                  t*        j,                  z  c_        d}�n|dk(  r| j/                  |||«      }�nó|dk(  r| j1                  |||||«      \  }}�nÔ|dk(  rt%        d|j'                  d«      › �«      ‚|dk(  r| j3                  |||«      }�n˜|dv r| j5                  ||||«      }�n~|dk(  r| j7                  |||«      }�nd|dk(  r| j9                  |||«      }d}�nH|dk(  r�|sA|s8t;        d|j'                  d«      › �| j<                  |j'                  d«      «      ‚d|_        |
rd}�nt;        d|j'                  d«      › �| j<                  |j'                  d«      «      ‚|dk(  r9|r| jA                  |||||	|«      \  }}}	n | jC                  ||||||||«      \  }}n„|dk(  r| jE                  |||«      }nk|d k(  rO|r9t;        d!|j'                  d«      › d"�| j<                  |j'                  d«      «      ‚| jG                  |||«      }n|d#v r| jI                  |||«      }|jK                  d«      }�Œ|	 |
r|st;        d$|› �| j<                  |«      ‚|rƒ|jN                  s|st+        jP                  d%d&«      |_'        |r&|	|_)        |d'   jT                  j!                  |«       nW|jT                  jW                  |«       |d&d&…= |j!                  |«       n%|r#|r|sd|_        |d&d&…= |j!                  |«       d}|st;        d|› �| j<                  |«      ‚|rt*        jX                  |d'   _        |rt*        jZ                  |d'   _        |rt*        j\                  |d'   _        |rt*        j^                  |d'   _        |rt*        j`                  |d'   _        t+        jb                  |D �cg c]  }|je                  «       ‘Œ c}||«      S # tL        $ r Y �Œ¥w xY wc c}w )(zParse selectors.FrR   z    is_pseudo: Truez    is_open: Truez    is_relative: Truez    is_not: Truez    is_html: Truez    is_default: Truez    is_indeterminate: Truez    is_in_range: Truez    is_out_of_range: Truez    is_placeholder_shown: Truez    is_forgive: TrueTrý   zAt-rules found at position r   rü   rù   rú   rû   z!Pseudo-element found at position rô   )rö   rõ   r÷   rø   ró   z Expected a selector at position z)Unmatched pseudo-class close at position r  r   rÖ   zTag name found at position z instead of at the start)rÿ   rþ   z"Unclosed pseudo-class at position rS   Nr
  )3rÔ   ru  ÚboolrJ  r-  ro  rn  ÚFLG_HTMLÚFLG_DEFAULTÚFLG_INDETERMINATEÚFLG_IN_RANGEÚFLG_OUT_OF_RANGEÚFLG_PLACEHOLDER_SHOWNrp  r  Úprintr¡   ÚnextÚNotImplementedErrorrM  rd   rä   r6  r.  rQ  r‹  rl  rŽ  r”  r	   rj   rà   rx  r|  r"  r(  r  r+  ÚStopIterationrÖ   r&  rÝ   rÜ   rã   ÚSEL_DEFAULTÚSEL_INDETERMINATEÚSEL_IN_RANGEÚSEL_OUT_OF_RANGEÚSEL_PLACEHOLDER_SHOWNrå   ræ   )r¶   rN  r¨   rd   rç   rÛ   r  ÚclosedrÜ   rÝ   Úis_openrz  Úis_relativeÚis_notrO  Ú
is_defaultÚis_indeterminateÚis_in_rangeÚis_out_of_rangeÚis_placeholder_shownr{  r{   r‡   Úss                           rm   rI  zCSSParser.parse_selectors�  sÇ  € ô ‹kˆØˆ	ØˆØˆØˆ	ØœÑ&ˆô �uœxÑ'Ó(ˆÜ˜¤Ñ+Ó,ˆ	Ü˜5¤<Ñ/Ó0ˆÜ�eœg‘oÓ&ˆÜ�uœxÑ'Ó(ˆÜ˜%¤+Ñ-Ó.ˆ
Ü Ô(9Ñ 9Ó:ÐÜ˜5¤<Ñ/Ó0ˆÜ˜uÔ'7Ñ7Ó8ˆÜ# EÔ,AÑ$AÓBÐÜ˜%¤+Ñ-Ó.ˆ
ð �:Š:ÙÜÐ+Ô,ÙÜÐ)Ô*ÙÜÐ-Ô.ÙÜÐ(Ô)ÙÜÐ)Ô*ÙÜÐ,Ô-ÙÜÐ2Ô3ÙÜÐ-Ô.ÙÜÐ1Ô2Ù#ÜÐ6Ô7ÙÜÐ,Ô-ñ Ø×ÑœY›[Ô)ðD	ØÜ˜i›‘��Qð ˜)Ò#Ü-Ð0KÈAÏGÉGÐTUËJÈ<Ð.XÓYÐYØ˜E’\Ø—I’I¤§¡Ñ-•IØ#'’LØÐ1Ò1Ø#'×#AÑ#AÀ#ÀqÈ,Ó#W’LØ˜NÒ*Ø,0×,CÑ,CÀCÈÈLÐZcÐelÓ,mÑ)�L¢'ØÐ,Ò,Ü-Ð0QÐRS×RYÑRYÐZ[ÓR\ÐQ]Ð.^Ó_Ð_ØÐ-Ò-Ø#'×#=Ñ#=¸cÀ1ÀlÓ#S’LØÐCÑCØ#'×#8Ñ#8¸¸aÀÈyÓ#Y’LØ˜MÒ)Ø#'×#9Ñ#9¸#¸qÀ,Ó#O’LØ˜LÒ(Ø#'×#8Ñ#8¸¸aÀÓ#N�Là"’GØ˜NÒ*Ù'Ù)Ü"5Ø"BÀ1Ç7Á7È1Ã:À,Ð OØ $§¡Ø !§¡¨£
ó#ð ð
 (,˜œÙØ!%˜Ùä1ØGÈÏÉÐPQË
À|ÐTØ ŸL™LØŸG™G A›Jóð ð
 ˜IÒ%Ù"Ø6:×6OÑ6OØ  L°)¸XÀuó7Ñ3˜ c©8ð -1×,AÑ,AØ  L°)¸YÈ	ÐS]Ð_dó-Ñ)˜¡cð ˜KÒ'Ø#'×#@Ñ#@ÀÀaÈÓ#V‘LØ˜E’\Ù#Ü1Ø9¸!¿'¹'À!»*¸ÐE]Ð^Ø ŸL™LØŸG™G A›Jóð ð
 $(×#9Ñ#9¸#¸qÀ,Ó#O‘LØ˜OÑ+Ø#'×#6Ñ#6°s¸A¸|Ó#L�LàŸ™˜a›�ñC ðH ñD ™6Ü%Ø4°U°GÐ<Ø—‘Øóð ñ Ø—7’7¡9äŸ.™.¨¨dÓ3�”ÙØ'�”Ø˜"‘×'Ñ'×.Ñ.¨sÕ3à—‘×$Ñ$ YÔ/Øša�LØ× Ñ  Õ%ñ ¡±)àˆCŒLØš!�Ø×Ñ˜SÔ!ØˆLáô &Ø2°5°'Ð:Ø—‘Øóð ñ Ü"$§.¡.ˆI�b‰MÔÙÜ"$×"6Ñ"6ˆI�b‰MÔÙÜ"$§/¡/ˆI�b‰MÔÙÜ"$×"5Ñ"5ˆI�b‰MÔÙÜ"$×":Ñ":ˆI�b‰MÔô �‰°IÖ>¨q §¡¥
Ò>ÀÈÓPÐPøôq ò 	Úð	üòp  ?s   ÆI=V0 ÖW Ö0	V=Ö<V=c              #  ó"  K  — t         j                  |«      }|r|j                  d«      nd}t        j                  |«      }|r|j	                  d«      dz
  nt        |«      dz
  }| j                  rt        d|›�«       ||k  rñd}| j                  D ]ˆ  }|j                  ||| j                  «      }|sŒ#|j                  «       }| j                  r2t        d|› d|j                  d«      ›d|j	                  d«      › �«       |j                  d«      }||f–—  n |€P||   }|dk(  rd	|› �}n)|d
k(  rd|› �}n|dk(  rd|› �}n|dk(  rd|› �}nd|›d|› �}t        || j                  |«      ‚||k  rŒñ| j                  rt        d«       yy­w)zIterate selector tokens.r   r   z## PARSING: NzTOKEN: 'z' --> z at position ú[z)Malformed attribute selector at position r~  z%Malformed class selector at position ú#z"Malformed id selector at position rR   z,Malformed pseudo-class selector at position zInvalid character z
 position z## END PARSING)ÚRE_WS_BEGINr  r+  Ú	RE_WS_ENDrM  r    r  r�  Ú
css_tokensrx   rd   r»   rƒ   r	   rj   )	r¶   rj   r‡   r¨   r+  Úvr}   r©   Úmsgs	            rm   Úselector_iterzCSSParser.selector_iterT  s£  è ø€ ô ×Ñ˜wÓ'ˆÙ�—‘�a” 1ˆÜ×Ñ˜WÓ%ˆÙ"#ˆq�w‰w�q‹z˜AŠ~¬#¨g«,¸Ñ*:ˆà�:Š:Ü�L  Ð,Ô-Ø�sŠlØˆAØ—_‘_ò �Ø—G‘G˜G U¨D¯J©JÓ7�ÚØŸ:™:›<�DØ—z’zÜ ¨¨¨f°Q·W±W¸Q³Z°NÀ-ÐPQ×PWÑPWÐXYÓPZÈ|Ð\Ô]ØŸE™E !›H�EØ ˜'’MÙðð ˆyØ˜E‘N�ð ˜’8ØEÀeÀWÐM‘CØ˜#’XØAÀ%ÀÐI‘CØ˜#’XØ>¸u¸gÐF‘CØ˜#’XØHÈÈÐP‘Cà.¨q¨e°:¸e¸WÐE�CÜ)¨#¨t¯|©|¸UÓCÐCð5 �s‹lð6 �:Š:ÜÐ"Õ#ð ùs   ‚B3FÂ6B?FÅ6Fc                óZ   — | j                  | j                  | j                  «      ||«      S )zProcess selectors.)rI  r¸  rj   )r¶   r¨   rd   s      rm   ri   zCSSParser.process_selectors}  s(   € ð ×#Ñ# D×$6Ñ$6°t·|±|Ó$DÀeÈUÓSÐSro   )Nr   )r¾   rŒ   rc   z'dict[str, str | ct.SelectorList] | Nonerd   r„   r‹   r¿   )rç   rÔ   r‡   rŠ   r  r–  r‹   r–  )rç   rÔ   r‡   rŠ   r  r–  rN  ú Iterator[tuple[str, Match[str]]]rO  r–  r‹   ztuple[bool, bool])
rç   rÔ   r‡   rŠ   r  r–  rN  rº  r‹   r–  )rç   rÔ   r}   rŒ   r  r–  rN  rº  r¨   r„   r‹   r–  )rç   rÔ   r‡   rŠ   r  r–  rÛ   rï   rÝ   rŒ   r¨   r„   r‹   ztuple[bool, _Selector, str])rç   rÔ   r‡   rŠ   r  r–  rÛ   rï   rÜ   rï   rz  r–  r{  r–  r¨   r„   r‹   ztuple[bool, _Selector])r   r   )rN  rº  r¨   r„   rd   r„   r‹   rð   )rj   rŒ   r‹   rº  )r¨   r„   rd   r„   r‹   rð   )'rÃ   rÄ   rÅ   rÆ   r¬   ÚPAT_PSEUDO_CLOSErÈ   ÚPAT_PSEUDO_CONTAINSÚPAT_PSEUDO_NTH_CHILDÚPAT_PSEUDO_NTH_TYPEÚPAT_PSEUDO_LANGÚPAT_PSEUDO_DIRÚPAT_PSEUDO_CLASS_CUSTOMÚPAT_PSEUDO_CLASSÚPAT_PSEUDO_ELEMENTÚPAT_AMPÚPAT_AT_RULEÚPAT_IDÚ	PAT_CLASSÚPAT_TAGÚPAT_ATTRÚPAT_COMBINErµ  r·   r"  r(  r.  rQ  rl  r2  rx  r|  r  r‹  rŽ  r”  rI  r¸  ri   rr   ro   rm   rh   rh   ¬  sâ  „ Ùñ 	˜Ð(8Ó9Ùð &ØKØ'Ø#ð	ð $Ð%FÐH\Ð^mÐnØ"Ð$IÐK^Ð`oÐpØ 
¨O¸_ÐMØ˜y¨.¸/ÐJðó	
ñ 	Ð-Ð/FÓGÙ˜Ð(8Ó9ÙÐ(Ð*<Ó=Ù˜˜wÓ'Ù˜	 ;Ó/Ù˜˜fÓ%Ù˜ Ó+Ù˜˜wÓ'Ù˜ XÓ.Ù˜	 ;Ó/ð3€Jð> ;?Øð	7àð7ð 8ð7ð ð	7ð
 
ó7óDóLóð8d%àðd%ð ðd%ð ð	d%ð
 4ðd%ð ðd%ð 
ód%ðL?àð?ð ð?ð ð	?ð
 4ð?ð 
ó?ðBàðð ðð ð	ð
 4ðð ðð 
óð.)+àð)+ð ð)+ð ð	)+ð
 #ð)+ð ð)+ð ð)+ð 
%ó)+ðV.!àð.!ð ð.!ð ð	.!ð
 #ð.!ð #ð.!ð ð.!ð ð.!ð ð.!ð 
 ó.!ó`	óó2ó*ð Øð	uQà3ðuQð ðuQð ð	uQð
 
óuQón'$õRTro   rh   zhtml|*:is(a, area)[href]r*  z\
    html|*:is(input[type=checkbox], input[type=radio])[checked], html|option[selected]
    z°
    :checked,

    /*
    This pattern must be at the end.
    Special logic is applied to the last selector.
    */
    html|form html|*:is(button, input)[type="submit"]
    aF  
    html|input[type="checkbox"][indeterminate],
    html|input[type="radio"]:is(:not([name]), [name=""]):not([checked]),
    html|progress:not([value]),

    /*
    This pattern must be at the end.
    Special logic is applied to the last selector.
    */
    html|input[type="radio"][name]:not([name='']):not([checked])
    aš  
    html|*:is(input:not([type=hidden]), button, select, textarea, fieldset, optgroup, option, fieldset)[disabled],
    html|optgroup[disabled] > html|option,
    html|fieldset[disabled] > html|*:is(input:not([type=hidden]), button, select, textarea, fieldset),
    html|fieldset[disabled] >
        html|*:not(legend:nth-of-type(1)) html|*:is(input:not([type=hidden]), button, select, textarea, fieldset)
    z|
    html|*:is(input:not([type=hidden]), button, select, textarea, fieldset, optgroup, option, fieldset):not(:disabled)
    z,html|*:is(input, textarea, select)[required]z2html|*:is(input, textarea, select):not([required])aW  
    html|input:is(
        :not([type]),
        [type=""],
        [type=text],
        [type=search],
        [type=url],
        [type=tel],
        [type=email],
        [type=password],
        [type=number]
    )[placeholder]:not([placeholder='']):is(:not([value]), [value=""]),
    html|textarea[placeholder]:not([placeholder=''])
    z*|*a  
    html|*:is(
        textarea,
        input:is(
            :not([type]),
            [type=""],
            [type=text],
            [type=search],
            [type=url],
            [type=tel],
            [type=email],
            [type=number],
            [type=password],
            [type=date],
            [type=datetime-local],
            [type=month],
            [type=time],
            [type=week]
        )
    ):not([readonly], :disabled),
    html|*:is([contenteditable=""], [contenteditable="true" i])
    z!
    html|*:not(:read-write)
    zó
    html|input:is(
        [type="date"],
        [type="month"],
        [type="week"],
        [type="time"],
        [type="datetime-local"],
        [type="number"],
        [type="range"]
    ):is(
        [min],
        [max]
    )
    z*
    html|*:is(details, dialog)[open]
    z(
    html|*:is(video, audio)[muted]
    )
rj   rŒ   rk   zct.Namespaces | Nonerc   úct.CustomSelectors | Nonerd   r„   r‹   zcm.SoupSieve)r‹   r¿   )rc   rË  r‹   z dict[str, str | ct.SelectorList])F)r�   rŒ   r‘   r–  r‹   rŒ   )r¥   rŒ   r‹   rŒ   )hrÆ   Ú
__future__r   r°   Ú	functoolsr   r‚   r   r   rf   r   rä   r	   rƒ  Útypingr
   r   r   r   r…   r3  rK  r1  rH  ÚPSEUDO_SPECIALrL  ÚNEWLINEÚWSÚCOMMENTSÚWSCÚCSS_ESCAPESÚCSS_STRING_ESCAPESÚ
IDENTIFIERÚNTHÚVALUEÚATTRrÆ  rÇ  rÈ  rÉ  rÂ  rÌ   rÁ  rÄ  r»  rÃ  rÅ  r½  r¾  r¿  rÀ  rÊ  r¼  r±   r²   r�   rŽ   ra  r³   r†  r  r³  r´  rw   rv  ru  r-  rn  ro  r˜  r—  r™  rJ  rš  r›  rœ  rp  Ú	_MAXCACHErn   rs   re   rz   rª   r¬   rÈ   rÔ   rh   ri   r8  r9  r:  r;  r<  r=  r>  rA  rF  rc  rC  rB  rD  rE  r@  r?  rr   ro   rm   ú<module>rÛ     s€  ðÙ Ý "Û 	Ý Ý Ý Ý Ý %Û ß -Ó -à!Ð ò€ò<Ð ò8	€òÐ ò€ð !Ð#9Ñ9¸NÑJÐMdÑdÐguÑuÐ ð '€Ø�'�˜!Ð€à0€à	ˆRˆD��(�˜1Ð€à(¨¨¨OÐ<€Ø/°¨t°>À'ÀÈ"ÐMÐ ð8Ø8C°}ð E8Ø8C°}ð Eð€
ð
 
*¨#¨¨i¸°u¸MÐJ€à˜G˜9Ð$CÀGÀ9ÐL`ÐakÐ`lÐlnÐq€à
ˆcˆUÐ& s e¨;°u°g¸TÀ#ÀÐFYÐZ]ÐY^Ð^aÐb€ð ˆzˆlÐ	€à�*�Ð€	à˜J˜<Ð'=¸j¸\ÈÐ
N€à��Ð% j \Ð1HÈÈÐTUÐVZÐU[Ð\€à   ¨L¸¸¸SÐAÐ à(¨¨°LÀÀÀRÐHÐ à-¨j¨\¸Ð;Ð à
€à�e˜3�<Ð àÐ*Ð+Ð,Ð à�J�<Ð €ðØ.Ð/ð 0Øˆe�> #  k°(°¸1¸R¸DÀÀÀSÈÈ
ÐRSÐTVÐSWÐX[ÐW\ð ]ðÐ ð
Ø-Ð.ð /ØˆU�+˜c˜Uð #ðÐ ð
 /Ð/¨{¸5¸'ÀÀSÀEÈÈCÈ5ÐPQÐRWÐQXÐX[Ð\_Ð[`Ð`cÐd€à-Ð.Ð.>¸s¸eÀ3ÐG€à�Ð,¨R¨D°¸C¸5ÀÐB€à2Ð3°;¸u¸gÀSÈÈÈRÐPSÈuÐTUÐV[ÐU\Ð\_Ð`cÐ_dÐdgÐhÐ ð ˆR�Z‰ZÐ0°°Ð5LÐMÈrÏtÉtÓT€
Ø�—‘Ð4°R°DÐ8RÐSZÐR[Ð[]Ð^Ð`b×`dÑ`dÓe€à	ˆ�‰Ð>¸s¸eÀ=ÐQTÐPUÐUeÐfÐhj×hlÑhlÓ	m€àˆB�J‰J˜-¨ w¨l¸3¸%¸rÀ#ÀÀcÐJÈBÏDÉDÓQ€	àˆ�
‰
�2‹€Øˆb�j‰j˜A˜c˜U !˜Ó%€ØˆB�J‰J˜3˜%˜r�{Ó#€	ØˆB�J‰J˜!Ð3Ð4°AÐ6¸¿¹Ó=€	ð Ð à€ð €
Ø
€Ø€Ø€Ø€ØÐ Ø€Ø€ØÐ ØÐ Ø€ð €	ñ �9ÔðØðà$ðð &ðð ð	ð
 òó ðó,&óôPó6÷86ñ 6ô("˜?ô "÷JAñ A÷HTTñ TTñv ØóçÑ˜* xÑ/ÐÓ0ð 	ñ ðó÷ Ñ˜* xÑ/ÐÓ0ð	 ñ ðó
÷ Ñ˜* xÑ/°+Ñ=ÐÓ>ð ñ ð
ó÷ Ñ˜* xÑ/Ð2CÑCÐÓDð ñ ðó÷ Ñ˜* xÑ/ÐÓ0ð ñ ðó÷ Ñ˜* xÑ/ÐÓ0ð	 ñ Ø2óçÑ˜* xÑ/ÐÓ0ð ñ Ø8óçÑ˜* xÑ/ÐÓ0ð ñ "ðó÷ Ñ˜* xÑ/Ð2GÑGÐÓHð ñ" !Ø	óçÑ˜*ÐÓ%ð ñ ðó÷. Ñ˜* xÑ/ÐÓ0ð/ ñ2 ðó÷ Ñ˜* xÑ/ÐÓ0ð	 ñ ðó÷ Ñ˜* |Ñ3°hÑ>ÐÓ?ð ñ" ðó÷ Ñ˜*Ð'7Ñ7¸(ÑBÐÓCð ñ$ ðó÷ Ñ˜* xÑ/ÐÓ0ð	 	ñ ðó÷ Ñ˜* xÑ/ÐÓ0ñ	 
ro   