Ë
    £ëiÊ. ã                   ó~  — d Z ddlZddlmZ 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ZddlZddlmZ dd	lmZ dd
lmZmZ ddlmZ ddlmZmZmZmZ ddlmZmZ ddlmZ ddl m!Z!m"Z"m#Z# ddl$m%Z%m&Z&m'Z'm(Z( ddl)m*Z*m+Z+m,Z,m-Z-m.Z. ddl/m0Z0 ddl1m2Z2 ddl3m4Z4 ddl5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZC dZD edg d¢«      ZE G d„ d«      ZFd„ ZGd„ ZHd„ ZId5d„ZJd „ ZKd6d!„ZLd"„ ZMd#„ ZNd$„ ZOd7d%„ZP G d&„ d'eQ«      ZR G d(„ d)eQ«      ZS G d*„ d+eQ«      ZT G d,„ d-«      ZUd.„ ZV	 	 	 d8d/„ZWd0„ ZXd1„ ZYd2„ ZZ	 d5d3„Z[	 	 	 	 d9d4„Z\y):u°  Find and apply CSS.

This module takes care of steps 3 and 4 of â€œCSS 2.1 processing modelâ€�: Retrieve
stylesheets associated with a document and annotate every element with a value
for every CSS property.

https://www.w3.org/TR/CSS21/intro.html#processing-model

This module does this in more than two steps. The
:func:`get_all_computed_styles` function does everything, but it is itsef based
on other functions in this module.

é    N)Ú
namedtuple)Úgroupby)ÚDEBUGÚWARNING)Úinf)ÚImageCmsProfileé   )ÚCSS)ÚLOGGERÚPROGRESS_LOGGER)ÚFontConfiguration)ÚURLFetchingErrorÚfetchÚget_url_attributeÚurl_joiné   )ÚcountersÚmedia_queries)ÚCOMPUTER_FUNCTIONS)ÚFunctionÚ
check_mathÚ	check_var)Ú	INHERITEDÚINITIAL_NOT_COMPUTEDÚINITIAL_VALUESÚZERO_PIXELS)ÚANGLE_UNITSÚ
FONT_UNITSÚLENGTH_UNITSÚ	to_pixelsÚ
to_radians)Úpreprocess_declarations)Úpreprocess_descriptors)Úvalidate_non_shorthand)ÚEÚMINUS_INFINITYÚNANÚPIÚPLUS_INFINITYÚFontUnitInMathÚInvalidValuesÚPendingÚPercentageInMathÚ	get_angleÚget_urlÚremove_whitespaceÚsplit_on_commaÚtokenize)NÚbeforeÚafterÚmarkerz
first-linezfirst-letterzfootnote-callzfootnote-markerÚPageSelectorType)ÚsideÚblankÚfirstÚindexÚnamec                   óL   — e Zd ZdZd„ Zd
d„Z	 	 dd„Zd„ Zd„ Zd„ Z	e
d	„ «       Zy)ÚStyleForz?Convenience function to get the computed styles for an element.c           	      óž  — i x| _         }i | _        || _        || _        t	        j
                  d«       t        }t        |j                  ||j                  «      D ]i  \  }}	|	\  }
}}|j                  |
d fi «      }t        ||«      D ];  \  }}}t        d|«      }|||f}|j                  |d«      d   }|�||k  sŒ5||f||<   Œ= Œk |j                  j                  «       D �]  }
|D ]·  \  }}}|j                   j#                  |
«      D ]“  }|\  }}}\  }}|€t        n|j$                  j'                  |«      }|xs |}|j                  |
j                  |fi «      }|D ];  \  }}}t        ||«      }|||f}|j                  |d«      d   }|�||k  sŒ5||f||<   Œ= Œ• Œ¹ |
j(                  r|
j(                  j                  nd }| j+                  |
j                  |j                  ||j                  |¬«       �Œ |D ]3  \  }
}|sŒ	| j+                  |
||j                  |
|j                  |¬«       Œ5 | j                   j-                  «        y )NzStep 3 - Applying CSSÚauthor©NNr   )ÚrootÚparentÚbase_urlÚtarget_collector)Úpseudo_typerA   rB   rC   rD   )Ú_cascaded_stylesÚ_computed_stylesÚ_sheetsÚfont_configr   Úinfor   Úfind_style_attributesÚetree_elementrC   Ú
setdefaultr"   Údeclaration_precedenceÚgetÚwrapper_elementÚiter_subtreeÚmatcherÚmatchÚlayersr:   rB   Úset_computed_stylesÚclear)ÚselfÚhtmlÚsheetsÚpresentational_hintsrI   rD   Úcascaded_stylesÚlayer_orderÚspecificityÚ
attributesÚelementÚdeclarationsrC   Ústyler;   ÚvaluesÚ
importanceÚ
precedenceÚweightÚ
old_weightÚsheetÚoriginÚsheet_specificityÚselectorÚorderrE   ÚlayerrB   s                               úW/var/www/html/chat/reports/venv/lib/python3.12/site-packages/weasyprint/css/__init__.pyÚ__init__zStyleFor.__init__7   s¦  € ð 35Ð4ˆÔ ð !#ˆÔàˆŒØ&ˆÔä×ÑÐ4Ô5ÜˆÜ'<Ø×"Ñ"Ð$8¸$¿-¹-ó(Iò 
	1Ñ#ˆK˜à.8Ñ+ˆG�\ 8Ø#×.Ñ.°¸¨ÀÓCˆEÜ,CØ˜ló-,ò 1Ñ(��f˜jä3°H¸jÓI�
Ø$ k°;Ð?�Ø"ŸY™Y t¨\Ó:¸1Ñ=�
ØÐ%¨°vÓ)=Ø"(¨& .�E˜$’Kñ1ð	
	1ð" ×+Ñ+×8Ñ8Ó:ó 	KˆGØ4:ò 9Ñ0��vÐ0à %§¡× 3Ñ 3°GÓ <ò 9�HØMUÑJ�K ¨Ñ5J°lÀEØ).¨¥#¸E¿L¹L×<NÑ<NÈuÓ<U�KØ"3Ò"B°{�KØ+×6Ñ6Ø ×.Ñ.°Ð<¸bóB�Eà4@ò 9Ñ0˜˜f jÜ%;¸FÀJÓ%O˜
Ø",¨k¸;Ð!G˜Ø%*§Y¡Y¨t°\Ó%BÀ1Ñ%E˜
Ø%Ð-°¸vÓ1EØ*0°&¨.˜E $šKñ9ñ9ð9ð 6=·^²^�W—^‘^×1Ò1ÈˆFØ×$Ñ$Ø×%Ñ%¨D×,>Ñ,>ÀvØŸ™Ð9Ið %ö Kð!	Kð8 %4ò 	OÑ ˆG�[ÚØ×(Ñ(Ø¨à×+Ñ+°GØ!Ÿ]™]Ð=Mð	 )õ Oð	Oð 	×Ñ×#Ñ#Õ%ó    Nc                 ó
  — | j                   j                  ||f«      x}rcd|d   v r|d   dk(  rdD ]  }t        |d|› �<   Œ t        |d   «      dk(  r0|d   \  }|j	                  d«      r|d	k7  rdD ]  }t        |d
|› �<   Œ |S )NÚtableÚdisplayÚborder_collapseÚcollapse)ÚtopÚbottomÚleftÚrightÚpadding_r   ztable-ztable-captionÚmargin_)rG   rO   r   ÚlenÚ
startswith)rW   r_   rE   ra   r7   rr   s         rm   Ú__call__zStyleFor.__call__‰   sµ   € Ø×)Ñ)×-Ñ-¨w¸Ð.DÓEÐEˆ5ÐEØ˜% 	Ñ*Ñ*¨uÐ5FÑ/GÈ:Ò/Uà>ò ;�DÜ/:�E˜H T FÐ+Ò,ð;ä�5˜Ñ#Ó$¨Ò)Ø  Ñ+‘�Ø×%Ñ% hÔ/°G¸Ò4Nà Bò >˜Ü2=˜ ¨ vÐ.Ò/ð>àˆro   c           	      óT  — | j                  «       }| j                  «       }||k(  r|€|�J ‚d}	t        | j                  «      }
n|€J ‚||df   }	||df   }
|j	                  ||fi «      }t        |	||||
|| j                  «      x}|||f<   |r|d   r|j                  |d   «       yyy)a!  Set the computed values of styles to ``element``.

        Take the properties left by ``apply_style_rule`` on an element or
        pseudo-element and assign computed values with respect to the cascade,
        declaration priority (ie. ``!important``) and selector specificity.

        NÚanchor)Úget_cascaded_stylesÚget_computed_stylesÚInitialStylerI   rO   ÚComputedStyleÚcollect_anchor)rW   r_   rB   rA   rE   rC   rD   r[   Úcomputed_stylesÚparent_styleÚ
root_styleÚcascadedÚcomputeds                rm   rU   zStyleFor.set_computed_styles—   sâ   € ð ×2Ñ2Ó4ˆØ×2Ñ2Ó4ˆØ�dŠ?˜{Ð2Ø�>Ð!�>ØˆLÜ% d×&6Ñ&6Ó7‰JàÐ%Ð%Ð%Ø*¨6°4¨<Ñ8ˆLØ(¨¨t¨Ñ4ˆJà"×&Ñ&¨°Ð'=¸rÓBˆÜ;HØ˜( G¨[¸*ÀhØ×Ñó<ð 	ˆ�? 7¨KÐ#7Ñ8ñ  ¨Ò 2Ø×+Ñ+¨H°XÑ,>Õ?ð !3Ðro   c                 ód  — d }| j                   D ]Ÿ  \  }}}|j                  D ]Š  \  }}}|D ]  }	|	\  }
}}| j                  ||«      sŒ|xs |
}
| j                  j	                  ||fi «      }|D ];  \  }}}t        ||«      }|||
f}|j                  |d«      d   }|�||k  sŒ5||f||<   Œ= Œ� ŒŒ Œ¡ y )Nr@   r   )rH   Ú
page_rulesÚ_page_type_matchrF   rM   rN   rO   )rW   Ú	page_typer\   rg   rh   ri   Ú_ruleÚselector_listr`   rj   r]   rE   Úpage_selector_typera   r;   rb   rc   rd   re   rf   s                       rm   Úadd_page_declarationszStyleFor.add_page_declarations²   sò   € àˆØ04·±ò 	=Ñ,ˆE�6Ð,Ø6;×6FÑ6Fò =Ñ2��} lØ -ò =�HØCKÑ@�K Ð.@Ø×,Ñ,Ð-?ÀÕKØ&7Ò&F¸;˜Ø $× 5Ñ 5× @Ñ @Ø&¨Ð4°bó!:˜à8Dò =Ñ4˜D &¨*Ü)?ÀÈ
Ó)S˜JØ&0°+¸{Ð%K˜FØ).¯©°4¸Ó)FÀqÑ)I˜JØ)Ð1°ZÀ6Ó5IØ.4°f¨n  d¢ñ=ñ=ñ=ñ	=ro   c                 ó   — | j                   S ©N)rF   ©rW   s    rm   r€   zStyleFor.get_cascaded_stylesÄ   ó   € Ø×$Ñ$Ð$ro   c                 ó   — | j                   S r“   )rG   r”   s    rm   r�   zStyleFor.get_computed_stylesÇ   r•   ro   c                 ó  — | j                   d |j                   fvry| j                  d |j                  fvry| j                  d |j                  dk(  fvry| j                  d |j                  fvry| j                  ��| j                  \  }}}|€.|j                  }|dz   |z
  }|dk(  r|dk(  S ||z  dk\  xr ||z   S ||j                  k7  ry|j
                  D ]0  \  }}||k7  rŒ|dz   |z
  }|dk(  r|dk(  sŒ y||z  dk\  sŒ*||z  rŒ0 y yy)NFr   r   T)r7   r8   r9   r:   r;   Úgroups)r�   r�   ÚaÚbr;   r:   ÚoffsetÚ
group_names           rm   rŒ   zStyleFor._page_type_matchÊ   s@  € à×"Ñ"¨4°·±Ð*@Ñ@ØØ×#Ñ#¨D°)·/±/Ð+BÑBØØ×#Ñ#¨D°)·/±/ÀQÑ2FÐ+GÑGØØ×"Ñ"¨4°·±Ð*@Ñ@ØØ×#Ñ#Ð/Ø+×1Ñ1‰JˆAˆq�$Øˆ|Ø!Ÿ™�Ø ™ Q™�Ø&'¨1¢f�v ‘{ÐV°6¸A±:À±?Ò3UÈ6ÐTUÉ:À~ÐVØ�y—~‘~Ò%ØØ%.×%5Ñ%5ò  Ñ!�
˜EØ˜:Ò%ØØ ™ Q™�Ø#$¨¢6�F˜a“KÙð 17¸±
¸a³ÈÐQRË
Ùð ð Øro   r“   ©NNNN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rn   r}   rU   r‘   r€   r�   ÚstaticmethodrŒ   © ro   rm   r=   r=   5   sD   „ ÙIòP&ódð KOØ<@ó@ò6=ò$%ò%ð ñó ñro   r=   c                 ó¸   — | j                   r| j                   gng }| D ]*  }|j                  sŒ|j                  |j                  «       Œ, dj                  |«      S )z9Return the text directly in the element, not descendants.Ú )ÚtextÚtailÚappendÚjoin)r_   ÚcontentÚchilds      rm   Úget_child_textr¬   æ   sL   € à '§¢ˆw�|‰|‰n°"€GØò 'ˆØ�:‹:Ø�N‰N˜5Ÿ:™:Õ&ð'ð �7‰7�7ÓÐro   c                 óN   — d}| |v r|s|}|S | dk(  r|dk7  r|dk(  r|}|S ||z  }|S )N)Útext_decoration_colorÚtext_decoration_styleÚtext_decoration_thicknessÚtext_decoration_lineÚnoner£   )ÚkeyÚvalueÚparent_valuerˆ   Útext_propertiess        rm   Útext_decorationr·   ï   sX   € ð
W€Oà
ˆoÑÙØ ˆEð €Lð 
Ð&Ò	&Ø˜6Ò!Ø˜ŠØ$�ð €Lð  Ñ,�Ø€Lro   c	              #   óZ  K  — ddl m}	 | j                  dd«      D �]A  }
|
j                  }|j	                  dd«      j                  dd«      d	   j                  «       }|dk7  rŒI|j	                  d
d«      j                  «       xs d}|j                  d«      D �cg c]  }|j                  «       ‘Œ }}t        j                  ||«      sŒ°|j                  dk(  r$t        |«      }t        |||||||||¬«	      }|–— Œã|j                  dk(  sŒó|j	                  d«      s�Œ |	|d«      r	 |	|d«      r�Œt        |d|«      }|€�Œ+	 t        ||||||||d¬«	      –— �ŒD yc c}w # t        $ r9}t        j                  d||«       t        j                   d|¬«       Y d}~�Œˆd}~ww xY w­w)zgYield the stylesheets in ``element_tree``.

    The output order is the same as the source order.

    r	   )Úelement_has_link_typera   ÚlinkÚtypeztext/cssú;r   r   Úmediar¥   Úallú,)	ÚstringrC   Úurl_fetcherÚ
media_typerI   Úcounter_styler‹   Úcolor_profilesrT   ÚhrefÚ
stylesheetÚ	alternateNT)	ÚurlrÁ   rÂ   rI   rÃ   rÄ   r‹   rT   Ú_check_mime_typez#Failed to load stylesheet at %s: %súError while loading stylesheet:©Úexc_info)rX   r¹   Ú	query_allrL   rO   ÚsplitÚstripr   Úevaluate_media_queryÚtagr¬   r
   r   r   r   ÚerrorÚdebug)rP   Údevice_media_typerÁ   rC   rI   rÃ   rÄ   r‹   rT   r¹   Úwrapperr_   Ú	mime_typeÚ
media_attrrÂ   r½   rª   ÚcssrÅ   Ú	exceptions                       rm   Úfind_stylesheetsrÚ     s®  è ø€ õ -à"×,Ñ,¨W°fÓ=ó $XˆØ×'Ñ'ˆØ—K‘K ¨
Ó3×9Ñ9¸#¸qÓAÀ!ÑD×JÑJÓLˆ	à˜
Ò"ØØ—[‘[ ¨"Ó-×3Ñ3Ó5Ò>¸ˆ
Ø6@×6FÑ6FÀsÓ6KÖL¨
�×!Ñ!Õ#ÐLˆÐLÜ×1Ñ1°%Ð9JÔKØØ�;‰;˜'Ò!ô % WÓ-ˆGô Ø¨Ø'Ð4EØ'°}Ø%°nÈVô	UˆCð
 ‹IØ�[‰[˜FÓ" w§{¡{°6Ö':Ù(¨°,Ô?Ù)¨'°;Ô?ÙÜ$ W¨f°hÓ?ˆDØÒðXÜØ ¨kÐFWØ$/¸}Ø'5À*Ø%¸ô	>ô >ñ;$Xùò Møô6 (ò XÜ—L‘LÐ!FÈÈiÔXÜ—L‘LÐ!BÈY×WÓWûðXüsI   ‚BF+ÂE!Â2AF+ÄF+Ä!#F+ÅE&Å	F+Å&	F(Å/.F#ÆF+Æ#F(Æ(F+c              #   ó  ‡K  — ˆfd„}| j                  «       D �]•  }d}|j                  d«      }|r| |||«      f–— |sŒ)d}|j                  dk(  rñdD ]Q  \  }}d}d|› �|› d�fD ]-  }	|j                  |	«      sŒd	|› d
|j                  |	«      › d�} n |sŒE| |||«      f–— ŒS |j                  d«      r"d|j                  d«      › d�}| |||«      f–— |j                  d«      r!d|j                  d«      › �}| |||«      f–— |j                  d«      s�Œd|j                  d«      › �}| |||«      f–— �Œ+|j                  dk(  r| ||d«      f–— �ŒI|j                  dk(  rL|j                  dd«      j                  «       }
|
dk(  r| ||d«      f–— �ŒŒ|
dv s�Œ’| ||d|
› �«      f–— �Œ¤|j                  dk(  �r|j                  d«      r| ||d|j                  d«      › �«      f–— |j                  d«      r| ||d|j                  d«      › �«      f–— |j                  d«      s�Œ'|j                  d«      j	                  «       }|j                  d «      }|j                  d!«      }|s|r|d"d j	                  «       }	 t        |«      }d#d$d%d&d'd(d)d*œ}|r|d+z  }n|r|d+z  }t        d"t        d,|«      «      }| ||d-||   › �«      f–— �ŒÏ|j                  d/k(  �r´|j                  d0«      r | ||d1|j                  d0«      › d�«      f–— |j                  d2«      rd|j                  d2«      }|j                  «       r|dz  }|j                  «       D ]+  }|j                  d3v sŒ| ||d4|› d5|› d6|› d7|› d8�	«      f–— Œ- |j                  d9«      r9|j                  d9«      }|j                  «       r|dz  }| ||d:|› d;|› �«      f–— |j                  d<«      r9|j                  d<«      }|j                  «       r|dz  }| ||d=|› d>|› �«      f–— |j                  d?«      rEd@|j                  d?«      › �}|j                  d?«      j                  «       r|dz  }| |||«      f–— |j                  dA«      rEdB|j                  dA«      › �}|j                  dA«      j                  «       r|dz  }| |||«      f–— |j                  d«      r"d|j                  d«      › d�}| |||«      f–— |j                  d«      r!d|j                  d«      › �}| |||«      f–— |j                  dC«      r!dD|j                  dC«      › �}| |||«      f–— |j                  dE«      s�ŒodF|j                  dE«      › d�}| |||«      f–— �Œ“|j                  dGv �r||j                  dd«      j                  «       }
|
dk(  r| ||d«      f–— n|
dv r| ||d|
› �«      f–— |j                  d«      r"d|j                  d«      › d�}| |||«      f–— |j                  d«      r!d|j                  d«      › �}| |||«      f–— |j                  dHv s�Œ^|j                  dA«      rEdB|j                  dA«      › �}|j                  dA«      j                  «       r|dz  }| |||«      f–— |j                  d3v s�ŒÄ|j                  d?«      s�Œ×d@|j                  d?«      › �}|j                  d?«      j                  «       r|dz  }| |||«      f–— �Œ|j                  dIk(  rL|j                  dd«      j                  «       }
|
dk(  r| ||d«      f–— �Œa|
dv s�Œg| ||d|
› �«      f–— �Œy|j                  dJk(  rZ|j                  d?«      s�Œ›d@|j                  d?«      › �}|j                  d?«      j                  «       r|dz  }| |||«      f–— �Œâ|j                  dKk(  �r#dL}|j                  d«      r	 t        |j                  d«      «      }|j                  d«      |j                  dM«      fdNk7  r|d"k\  rA| ||dF|dOz  › d�«      f–— n,|d"k(  r| ||dP«      f–— n|d"kD  r| ||dB|dOz
  › d�«      f–— |j                  d?«      rEd@|j                  d?«      › �}|j                  d?«      j                  «       r|dz  }| |||«      f–— |j                  d«      s�Œô| ||d|j                  d«      › �«      f–— �	Œ|j                  dQv �rê|j                  dRk7  s%|j                  dSd«      j                  «       dTk(  s�	ŒX|j                  dd«      j                  «       }
|
dUv r| ||dV«      f–— |j                  d9«      r9|j                  d9«      }|j                  «       r|dz  }| ||d:|› d;|› �«      f–— |j                  d<«      r9|j                  d<«      }|j                  «       r|dz  }| ||d=|› d>|› �«      f–— |j                  d?«      rEd@|j                  d?«      › �}|j                  d?«      j                  «       r|dz  }| |||«      f–— |j                  dA«      rEdB|j                  dA«      › �}|j                  dA«      j                  «       r|dz  }| |||«      f–— |j                  dWv s�
ŒÙ|j                  dE«      s�
Œì| ||dF|j                  dE«      › dX�«      f–— �Œ|j                  dYk(  r5|j                  dZ«      s�Œ0| ||d[|j                  dZ«      › d\�«      f–— �ŒR|j                  d]k(  s�Œc|j                  d^«      s�Œv| ||d[|j                  d^«      › d_�«      f–— �Œ˜ y# t        $ r t        j                  d.|«       Y �Œ¼w xY w# t        $ r t        j                  d.|«       Y �ŒÂw xY w­w)`a  Yield ``specificity, (element, declaration, base_url)`` rules.

    Rules from "style" attribute are returned with specificity
    ``(1, 0, 0)``.

    If ``presentational_hints`` is ``True``, rules from presentational hints
    are returned with specificity ``(0, 0, 0)``.

    c                 ó8   •— t        j                  |«      }| |‰fS r“   )Útinycss2Úparse_blocks_contents)r_   Ústyle_attributer`   rC   s      €rm   Úcheck_style_attributez4find_style_attributes.<locals>.check_style_attribute<  s    ø€ Ü×5Ñ5°oÓFˆØ˜ hÐ.Ð.ro   )r   r   r   ra   ©r   r   r   Úbody))Úheightru   )rã   rv   )Úwidthrw   )rä   rx   NÚmarginzmargin-ú:ÚpxÚ
backgroundzbackground-image:url(ú)Úbgcolorzbackground-color:r¦   zcolor:Úcenterztext-align:centerÚdivÚalignr¥   Úmiddle)rë   rw   rx   Újustifyztext-align:ÚfontÚcolorÚfacezfont-family:Úsizeú+ú-r   zx-smallÚsmallÚmediumÚlargezx-largezxx-largeÚ48px)r   r	   é   é   é   é   é   rú   rþ   z
font-size:zInvalid value for size: %srq   Úcellspacingzborder-spacing:Úcellpadding)ÚtdÚthzpadding-left:z;padding-right:z;padding-top:z;padding-bottom:r¼   Úhspacezmargin-left:z;margin-right:Úvspacezmargin-top:z;margin-bottom:rä   zwidth:rã   zheight:Úbordercolorzborder-color:Úborderzborder-width:)Útrr  r  ÚtheadÚtbodyÚtfoot)r  r  r  ÚcaptionÚcolÚhrr   Únoshader@   r	   zborder-bottom-width:0)ÚiframeÚappletÚembedÚimgÚinputÚobjectr  r»   Úimage)rî   rë   zvertical-align:middle)r  r  r  zpx;border-style:solidÚolÚstartzcounter-reset:list-item z;counter-increment:list-item -1Úlir´   z;counter-increment:none)ÚiterrO   rÑ   ÚlowerrÏ   r|   ÚintÚmaxÚminÚ
ValueErrorr   ÚwarningÚisdigit)ÚtreerZ   rC   rà   r_   r]   rß   ÚpartÚpositionÚproprí   ró   Úrelative_plusÚrelative_minusÚ
font_sizesr   Ú
subelementr  r  s     `                rm   rK   rK   2  s>  øè ø€ ô/ð —9‘9“;ó q.ˆØˆØ!Ÿ+™+ gÓ.ˆÙØÑ4°W¸oÓNÐNÒNÙ#ØØˆØ�;‰;˜&Ò ð#;ò 	W‘��hð #'�Ø% d V˜_°°
¸&Ð.AÐBò �DØ—{‘{ 4Õ(Ø,3°H°:¸Q¸w¿{¹{È4Ó?PÐ>QÐQSÐ*T˜Ùðò #Ø%Ñ'<¸WÀoÓ'VÐVÓVð	Wð �{‰{˜<Ô(Ø$9¸'¿+¹+ÀlÓ:SÐ9TÐTUÐ"V�Ø!Ñ#8¸À/Ó#RÐRÒRØ�{‰{˜9Ô%Ø$5°g·k±kÀ)Ó6LÐ5MÐ"N�Ø!Ñ#8¸À/Ó#RÐRÒRØ�{‰{˜6Ö"Ø$*¨7¯;©;°vÓ+>Ð*?Ð"@�Ø!Ñ#8¸À/Ó#RÐRÔRà�[‰[˜HÒ$ØÑ4°WÐ>QÓRÐRÔRØ�[‰[˜EÒ!Ø—K‘K ¨Ó,×2Ñ2Ó4ˆEØ˜Ò Ø!Ñ#8¸ÐBUÓ#VÐVÔVØÐ@Ó@Ø!Ñ#8¸ÀKÐPUÈwÐBWÓ#XÐXÔXØ�[‰[˜FÓ"Ø�{‰{˜7Ô#Ø!Ñ#8Ø˜v g§k¡k°'Ó&:Ð%;Ð<ó$>ð >ò >à�{‰{˜6Ô"Ø!Ñ#8Ø˜|¨G¯K©K¸Ó,?Ð+@ÐAó$Cð Cò Cà�{‰{˜6Ö"Ø—{‘{ 6Ó*×0Ñ0Ó2�Ø $§¡°Ó 4�Ø!%§¡°Ó!5�Ù ¡NØ  ˜8Ÿ>™>Ó+�DðBÜ˜t›9�Dð
 %Ø"Ø#Ø"Ø$Ø%Ø!ñ"�Jñ %Ø ™	™Ù'Ø ™	˜Ü˜q¤# a¨£,Ó/�DØ%Ñ'<Ø :¨j¸Ñ.>Ð-?Ð!@ó(Bð Bô Bà�[‰[˜GÓ#Ø�{‰{˜=Ô)Ø!Ñ#8Ø˜¨w¯{©{¸=Ó/IÐ.JÈ"ÐMó$Oð Oò Oà�{‰{˜=Ô)Ø%Ÿk™k¨-Ó8�Ø×&Ñ&Ô(Ø 4Ñ'�Kà")§,¡,£.ò >�JØ!—~‘~¨Ò5Ø)Ñ+@Ø&Ø+¨K¨=ð 9-Ø-8¨Mð :+Ø+6¨-ð 8.Ø.9¨]¸!ð=ó,>ð >ó >ð>ð �{‰{˜8Ô$Ø Ÿ™ XÓ.�Ø—>‘>Ô#Ø˜d‘N�FØ!Ñ#8Ø˜|¨F¨8°>À&ÀÐJó$Lð Lò Là�{‰{˜8Ô$Ø Ÿ™ XÓ.�Ø—>‘>Ô#Ø˜d‘N�FØ!Ñ#8Ø˜{¨6¨(°/À&ÀÐJó$Lð Lò Là�{‰{˜7Ô#Ø$*¨7¯;©;°wÓ+?Ð*@Ð"A�Ø—;‘;˜wÓ'×/Ñ/Ô1Ø# tÑ+�OØ!Ñ#8¸À/Ó#RÐRÒRØ�{‰{˜8Ô$Ø$+¨G¯K©K¸Ó,AÐ+BÐ"C�Ø—;‘;˜xÓ(×0Ñ0Ô2Ø# tÑ+�OØ!Ñ#8¸À/Ó#RÐRÒRØ�{‰{˜<Ô(à+¨G¯K©K¸Ó,EÐ+FÀaÐHð  à!Ñ#8¸À/Ó#RÐRÒRØ�{‰{˜9Ô%Ø$5°g·k±kÀ)Ó6LÐ5MÐ"N�Ø!Ñ#8¸À/Ó#RÐRÒRØ�{‰{˜=Ô)Ø$1°'·+±+¸mÓ2LÐ1MÐ"N�Ø!Ñ#8¸À/Ó#RÐRÒRØ�{‰{˜8Ö$Ø$1°'·+±+¸hÓ2GÐ1HÈÐ"K�Ø!Ñ#8¸À/Ó#RÐRÔRØ�[‰[ÐIÒIØ—K‘K ¨Ó,×2Ñ2Ó4ˆEà˜Ò Ø!Ñ#8ØÐ0ó$2ð 2ó 2àÐ@Ñ@Ø!Ñ#8¸ÀKÐPUÈwÐBWÓ#XÐXÒXØ�{‰{˜<Ô(Ø$9¸'¿+¹+ÀlÓ:SÐ9TÐTUÐ"V�Ø!Ñ#8¸À/Ó#RÐRÒRØ�{‰{˜9Ô%Ø$5°g·k±kÀ)Ó6LÐ5MÐ"N�Ø!Ñ#8¸À/Ó#RÐRÒRØ�{‰{Ð0Ó0Ø—;‘;˜xÔ(Ø(/°·±¸HÓ0EÐ/FÐ&G�OØ—{‘{ 8Ó,×4Ñ4Ô6Ø'¨4Ñ/˜Ø%Ñ'<¸WÀoÓ'VÐVÒVØ—;‘; ,Ó.Ø—{‘{ 7Ö+Ø,2°7·;±;¸wÓ3GÐ2HÐ*I˜Ø"Ÿ;™; wÓ/×7Ñ7Ô9Ø+¨tÑ3˜OØ)Ñ+@Ø# _ó,6ð 6ô 6à�[‰[˜IÒ%Ø—K‘K ¨Ó,×2Ñ2Ó4ˆEà˜Ò Ø!Ñ#8¸ÐBUÓ#VÐVÔVØÐ@Ó@Ø!Ñ#8¸ÀKÐPUÈwÐBWÓ#XÐXÔXØ�[‰[˜EÒ!Ø�{‰{˜7Ö#Ø$*¨7¯;©;°wÓ+?Ð*@Ð"A�Ø—;‘;˜wÓ'×/Ñ/Ô1Ø# tÑ+�OØ!Ñ#8¸À/Ó#RÐRÔRØ�[‰[˜DÓ ØˆDØ�{‰{˜6Ô"ðGÜ˜wŸ{™{¨6Ó2Ó3�Dð —‘˜GÓ$ g§k¡k°)Ó&<Ð=ÀÒMØ˜1’9Ø%Ñ'<Ø =°¸±°
¸"Ð!=ó(?ð ?ó ?à˜’Ø!Ñ#8ØÐ4ó$6ð 6ó 6à˜’Ø!Ñ#8Ø˜w t¨a¡x j°Ð3ó$5ð 5ò 5à�{‰{˜7Ô#Ø$*¨7¯;©;°wÓ+?Ð*@Ð"A�Ø—;‘;˜wÓ'×/Ñ/Ô1Ø# tÑ+�OØ!Ñ#8¸À/Ó#RÐRÒRØ�{‰{˜7Ö#Ø!Ñ#8Ø˜v g§k¡k°'Ó&:Ð%;Ð<ó$>ð >ô >à�[‰[ð Gò Gà—‘˜wÒ&Ø—K‘K ¨Ó+×1Ñ1Ó3°wÔ>ØŸ™ G¨RÓ0×6Ñ6Ó8�ØÐ0Ñ0à%Ñ'<ØÐ!8ó(:ð :ò :à—;‘;˜xÔ(Ø$Ÿ[™[¨Ó2�FØ—~‘~Ô'Ø $™˜Ø%Ñ'<Ø <°¨x°~ÀfÀXÐ!Nó(Pð Pò Pà—;‘;˜xÔ(Ø$Ÿ[™[¨Ó2�FØ—~‘~Ô'Ø $™˜Ø%Ñ'<Ø ;¨v¨h°oÀfÀXÐ!Nó(Pð Pò Pð —;‘;˜wÔ'Ø(.¨w¯{©{¸7Ó/CÐ.DÐ&E�OØ—{‘{ 7Ó+×3Ñ3Ô5Ø'¨4Ñ/˜Ø%Ñ'<¸WÀoÓ'VÐVÒVØ—;‘;˜xÔ(Ø(/°·±¸HÓ0EÐ/FÐ&G�OØ—{‘{ 8Ó,×4Ñ4Ô6Ø'¨4Ñ/˜Ø%Ñ'<¸WÀoÓ'VÐVÒVØ—;‘;Ð"<Ó<Ø—{‘{ 8Ö,Ø)Ñ+@Ø#Ø+¨G¯K©K¸Ó,AÐ+Bð C1ð 2ó,3ð 3ô 3ð �[‰[˜DÒ à�{‰{˜7Ö#Ø!Ñ#8ØØ.¨w¯{©{¸7Ó/CÐ.Dð E5ð 5ó$6ð 6ô 6ð �[‰[˜DÔ à�{‰{˜7Ö#Ø!Ñ#8ØØ.¨w¯{©{¸7Ó/CÐ.Dð E-ð -ó$.ð .ô .ñ]q.øôj "ò GÜ—N‘NÐ#?À×FðGûôh "ò GÜ—N‘NÐ#?À×FðGüsÎ   ƒA8o?Á<o?ÂBo?Ä!Bo?Æ+Bo?É Ao?Ên3Ê$Co?ÎHo?ÖC-o?Ù7A$o?Ûo?Û0Bo?Þ 2o?Þ4A*o?àoà9Co?äA"o?å1E?o?ë2o?ìAo?í	1o?í<o?î$o?î3oïo?ïoïo?ïo<ï8o?ï;o<ï<o?c                 óJ   — | dk(  ry| dk(  r|sy| dk(  r|sy| dk(  ry| dk(  sJ ‚y)	zÝReturn the precedence for a declaration.

    Precedence values have no meaning unless compared to each other.

    Acceptable values for ``origin`` are the strings ``'author'``, ``'user'``
    and ``'user agent'``.

    ú
user agentr   Úuserr	   r?   rú   rû   rü   r£   )rh   rc   s     rm   rN   rN   4  sE   € ð �ÒØØ	�6Ò	¡*ØØ	�8Ò	¡JØØ	�8Ò	Øà˜ÒÐÐØro   c                 óF  — t        |«      sy|€
t        «       }|j                  dk(  s|j                  dk7  �r&g }|j                  dk(  r|j                  n|j
                  }t        |«      D ]W  \  }}|j                  dv r3t        | |||j                  «       «      }|j                  |€|fn|«       ŒG|j                  |«       ŒY |j                  dk(  r6t        j                  j                  |j                  |j                  |«      }n@t        j                  j!                  |j                  |j                  |j"                  |«      }t        | |||«      xs |fS t%        |«      }	|	j'                  dd¬«      }
|
rt)        |
d	   «      d
k7  rg S |
d	   d	   j*                  j-                  dd«      }||v rg S |j/                  |«       t)        |
«      d
kD  r|
d
   ng }g }| |   xs |D ]4  }t        | |||j                  «       «      }|j                  |€|fn|«       Œ6 |S )z)Return token with resolved CSS variables.Nú() blockÚvarÚfunction)r/  r-  FT)Úsingle_tokensÚtrailingr   r   rõ   Ú_)r   Úsetr»   Ú
lower_nameÚ	argumentsrª   Ú	enumerateÚresolve_varÚcopyÚextendr¨   rÝ   ÚastÚParenthesesBlockÚsource_lineÚsource_columnÚFunctionBlockr;   r   Úsplit_commar{   r´   ÚreplaceÚadd)r‰   Útokenr†   Úknown_variablesÚitemsÚtoken_itemsÚiÚargumentÚresolvedr/  r5  Úvariable_nameÚdefaultÚcomputed_valuer´   s                  rm   r7  r7  K  s  € ä�UÔØàÐÜ›%ˆà‡z�z�ZÒ 5×#3Ñ#3°uÓ#<ØˆØ).¯©°zÒ)A�e—o’oÀuÇ}Á}ˆÜ$ [Ó1ò 	'‰KˆAˆxØ�}‰}Ð 8Ñ8Ü&Ø˜h¨°o×6JÑ6JÓ6LóN�à—‘¨HÐ,<˜h™[À(ÕKà—‘˜XÕ&ð	'ð �:‰:˜Ò#Ü—L‘L×1Ñ1Ø×!Ñ! 5×#6Ñ#6¸ó?‰Eô —L‘L×.Ñ.Ø×!Ñ! 5×#6Ñ#6¸¿
¹
ÀEóKˆEä˜8 U¨L¸/ÓJÒVÈuÈhÐVä˜‹€HØ×$Ñ$°5À4Ð$ÓH€IÙœ˜I a™LÓ)¨QÒ.Øˆ	Ø˜a‘L ‘O×)Ñ)×1Ñ1°#°sÓ;€MØ˜Ñ'Øˆ	à×Ñ˜MÔ*Ü! )›n¨qÒ0ˆi˜Šl°b€GØ€NØ˜=Ñ)Ò4¨Wò JˆÜ˜x¨°¸o×>RÑ>RÓ>TÓUˆØ×Ñ¨(Ð*:˜u™hÀÕIðJð Ðro   c                 ó  — g g}|D ]«  }|j                   dk(  r;|j                  dv r-|j                  |j                  «       |j                  g «       ŒM|j                   dk(  r<t        |j                  «      }t        | |||«      }|€ y |d   j                  |«       Œ˜|d   j                  |«       Œ­ d\  }}	}
d }|�r|	€|j                  d«      }	|	dv sñJ ‚|j                  d«      }|sJ ‚t        |t        «      sJ ‚	 t        | |||«      }|€y |j                   d	k(  rF|
€|j                  j                  «       }
nd|
dk(  rt        ‚|
|j                  j                  «       k7  r<y |j                   d
k(  r,|�|j                  dz  |z  |_        d}
n|
�|
dk(  rd}
nt        ‚|	dk(  r||j                  z  }n||j                  z  }d }	|r�Œ|r|‚t        ||
¬«      S # t        $ r}|
dk(  rt        ‚|}d}
d }	Y d }~�Œ@d }~ww xY w)NÚliteralz+-r-  éÿÿÿÿ)r   rô   Nr   ú%rç   Ú	dimensionÚ
percentageéd   rô   ©Úunit)r»   r´   r¨   r0   rª   Ú_resolve_calc_sumÚpopÚ
isinstanceÚlistÚ_resolve_calc_productr*   r-   rT  r  r2   )r‰   ÚtokensÚproperty_nameÚrefer_tor˜   rB  rª   Úresultr´   ÚsignrT  rÙ   ÚgroupÚproductÚfont_exceptions                  rm   rU  rU  v  s  € ØˆT€FØò %ˆØ�:‰:˜Ò" u§{¡{°dÑ':Ø�M‰M˜%Ÿ+™+Ô&Ø�M‰M˜"ÕØ�Z‰Z˜:Ò%Ü'¨¯©Ó6ˆGÜ& x°¸-ÈÓRˆFØˆ~ÙØ�2‰J×Ñ˜fÕ%à�2‰J×Ñ˜eÕ$ð%ð %Ñ€Eˆ4�Ø€IÚ
Øˆ<Ø—:‘:˜a“=ˆDØ˜4‘<Ð�<à—J‘J˜q“MˆEÙˆL�5Ü˜e¤TÔ*Ð*Ð*ðÜ/Ø˜e ]°Hó>�ð �?ØØ�|‰|˜{Ò*Ø�<Ø"Ÿ<™<×-Ñ-Ó/‘DØ˜S’[Ü*Ð*Ø˜WŸ\™\×/Ñ/Ó1Ò1ØØ—‘ Ò-ØÐ'Ø$+§M¡M°CÑ$7¸(Ñ$B�G”MØ‘Dà�| t¨s¢{Ø"™ä.Ð.Ø�sŠ{Ø˜Ÿ™Ñ&‘à˜Ÿ™Ñ&�ØˆDóW ñ\ Øˆä�E Ô%Ð%øôM "ò ð ˜3’;Ü*Ð*Ø*�	Ø�Ø�Ýûðús   Ä G Ç	HÇ%G<Ç<Hc                 ó
  — g g}|D �]­  }|j                   dk(  r;|j                  dv r-|j                  |j                  «       |j                  g «       ŒN|j                   dk(  r|d   j                  |«       Œr|j                   dk(  ru|j                  j	                  «       t
        v rU| €&|j                  j	                  «       t        v rt        ‚t        || |«      }|d   j                  t        |d¬«      «       Œö|j                   dk(  rJ|j                  j	                  «       t        v r*|d   j                  t        t        |«      d¬«      «       �ŒO|j                   d	k(  r+|d   j                  t        |j                  d
¬«      «       �Œ‰|j                   dk(  r|d   j                  |«       �Œ® y  d\  }}}	|r¹|€|j                  d«      }|dv sŸJ ‚|j                  d«      }
t        |
t        «      sJ ‚t        | |
«      }|€y |j                   dk(  r#|	�|	d
k(  r|j                  j	                  «       }	ny |j                   d	k(  r|	€d
}	|dk(  r||j                  z  }n||j                  z  }d }|rŒ¹t        ||	¬«      S )NrM  z*/ÚnumberrN  rP  rç   rS  ÚradrQ  rO  Úident)r   Ú*Nr   rf  )r»   r´   r¨   rT  r  r   r   r*   r    r2   r   r!   rV  rW  rX  Ú_resolve_calc_value)r‰   rZ  r[  r\  r˜   rB  Úpixelsr´   r^  rT  r_  Úcalcs               rm   rY  rY  »  s4  € ØˆT€FØó ˆØ�:‰:˜Ò" u§{¡{°dÑ':Ø�M‰M˜%Ÿ+™+Ô&Ø�M‰M˜"ÕØ�Z‰Z˜8Ò#Ø�2‰J×Ñ˜eÕ$Ø�Z‰Z˜;Ò&¨5¯:©:×+;Ñ+;Ó+=ÄÑ+MØÐ E§J¡J×$4Ñ$4Ó$6¼*Ñ$DÜ$Ð$Ü˜u h°Ó>ˆFØ�2‰J×Ñœh v°DÔ9Õ:Ø�Z‰Z˜;Ò&¨5¯:©:×+;Ñ+;Ó+=ÄÑ+LØ�2‰J×Ñœh¤z°%Ó'8¸uÔEÖFØ�Z‰Z˜<Ò'Ø�2‰J×Ñœh u§{¡{¸Ô=Ö>Ø�Z‰Z˜7Ò"Ø�2‰J×Ñ˜eÖ$áð%ð( %Ñ€Eˆ4�Ù
Øˆ<Ø—:‘:˜a“=ˆDØ˜4‘<Ð�<à—J‘J˜q“MˆEÜ˜e¤TÔ*Ð*Ð*Ü& x°Ó7ˆDØˆ|ØØ�y‰y˜KÒ'Ø�< 4¨3¢;ØŸ9™9Ÿ?™?Ó,‘DàØ—‘˜lÒ*Ø�<Ø�DØ�sŠ{Ø˜Ÿ™Ñ#‘à˜Ÿ™Ñ#�ØˆDò- ô0 �E Ô%Ð%ro   c                 ó<  — t        |«      dk(  rŽ|\  }|j                  dv r|S |j                  dk(  rj|j                  dk(  rt        S |j                  dk(  rt        S |j                  dk(  rt
        S |j                  dk(  rt        S |j                  dk(  rt        S y y y )	Nr   )rc  rP  rQ  re  ÚeÚpiÚinfinityz	-infinityÚnan)r{   r»   Úlower_valuer%   r(   r)   r&   r'   )r‰   rZ  rB  s      rm   rg  rg  í  s£   € Ü
ˆ6ƒ{�aÒØ‰ˆØ�:‰:Ð>Ñ>ØˆLØ�Z‰Z˜7Ò"Ø× Ñ  CÒ'Ü�Ø×"Ñ" dÒ*Ü�	Ø×"Ñ" jÒ0Ü$Ð$Ø×"Ñ" kÒ1Ü%Ð%Ø×"Ñ" eÒ+Ü�
ð ,ð #ð	 ro   c           	      óê  ‡"‡#‡$‡%‡&— t        | «      syg }t        | «      Š#‰#j                  €y‰#j                  d¬«      D ]L  }|j	                  g «       |D ]4  }t        |«      rt        ||||«      }|€  y|d   j	                  |«       Œ6 ŒN ‰#j                  dk(  rt        ||d   ||«      }|€yt        |«      S ‰#j                  dv �r9dx}x}	}
|D �]"  }t        ||||«      } | € y| j                  dk(  r3|€|
d	v rt        ‚d
}
| Š&n‰d}
t        | j                  dz  |z  d¬«      x} Š&ng| j                  dk(  r,|
d
k(  rt        ‚|
dk(  r yd}
t        | j                  d¬«      Š&n,|
d
k(  rt        ‚|
dk(  r yd}
t        t        | ||«      d¬«      Š&|du xsV ‰#j                  dk(  xr ‰&j                  |j                  k  xs* ‰#j                  dk(  xr ‰&j                  |j                  kD  }|s�Œ‰&| }	}�Œ% t        |	«      S ‰#j                  dk(  �r¾d\  }Š$t        |«      dk(  rt        ||d   ||«      }�nt        |«      dk(  r�d}t        |d   «      dk(  r:|d   d   j                  |v r&|d   d   j                  }t        ||d   ||«      }|€Àyt        ||d   ||«      }t        ||d   ||«      }d||fv ry|j                  |j                  k7  ry|j                  Š$not        |«      dk(  ra|d   d   j                  }t        ||d   ||«      }t        ||d   ||«      }d||fv ry|j                  |j                  k7  ry|j                  Š$|dk(  rt        Š#nb|dk(  rt        j                  Š#nL|dk(  rt        j                   Š#n6|dk(  r0j                  dkD  rt        j                   nt        j                  Š#nyt        ˆ#ˆ$fd„«      S ‰#j                  dv r”t        ||d   ||«      }t        ||d   ||«      }d||fv ry|j                  |j                  k7  ry|j                  }|j                  }||z  Š&‰#j                  dk(  r||z  dk  r‰&t#        |«      z  Š&t        |ˆ&fd„«      S ‰#j                  d v rit        ||d   ||«      }|€y|j                  dk(  r|j                  }nt%        |«      x}€y t'        t        ‰#j                  «      |«      Š&t        ‰&«      S ‰#j                  d!v r[t        ||d   ||«      }|�|j                  dk7  ry	  t'        t        ‰#j                  «      |j                  «      Š&t        ‰&d"¬«      S ‰#j                  d#k(  r||D �cg c]  }t        ||||«      ‘Œ c}\  }}d||fv ry|j                  |j                  hdhk7  ry|j                  |j                  }}t        t        j*                  ||«      d"¬«      S ‰#j                  d$k(  rÝg }d}
|D ]�  }t        ||||«      } | € y| j                  dk(  r2|€|
dk(  rt        ‚d
}
| Š&nGd}
t        | j                  dz  |z  d¬«      } n'|
d
k(  rt        ‚d}
t        | ||«      }t        |d¬«      Š&|j	                  ‰&«       Œ� |\  }} }| j                  |j                  k  r|} | j                  |j                  kD  r|} t        | «      S ‰#j                  d%k(  rR|D �cg c]  }t        ||||«      ‘Œ c}\  }Š%d|‰%fv ry|j                  ‰%j                  hdhk7  ryt        |ˆ%fd&„«      S ‰#j                  d'k(  r0t        ||d   ||«      }|�|j                  dk7  ryt        |d(„ «      S ‰#j                  d)k(  r\|D �cg c]  }t        ||||«      ‘Œ }}d|v ryt        j,                  |D � cg c]  } | j                  ‘Œ c} Ž Š&t        |d   ˆ&fd*„«      S ‰#j                  d+k(  r€t        ||d   ||«      }|�|j                  dk7  ryt        |«      dk(  r0t        ||d   ||«      }|�|j                  dk7  ry|j                  Š"nt        j.                  Š"t        |ˆ"fd,„«      S ‰#j                  d-k(  r=t        ||d   ||«      }|�|j                  dk7  ryt        |t        j0                  «      S ‰#j                  d.k(  r$t        ||d   ||«      }|€yt        |t"        «      S ‰#j                  d/k(  r+t        ||d   ||«      }|€yt        |j                  d0„ «      S g }t3        | j4                  «      D ]I  \  } }!|!j                  d1k(  r$t        |!|||«      }|€ y|j	                  |«       Œ9|j	                  |!«       ŒK t6        j8                  j;                  | j<                  | j>                  | j                  |«      } t        | |||«      xs | S # t(        $ r Y yw xY wc c}w c c}w c c}w c c} w )2u¤  Return token with resolved math functions.

    Raise, in order of priority, ``PercentageInMath`` if percentages are mixed with
    other values with no ``refer_to`` size, or ``FontUnitInMath`` if no ``computed``
    style is available to get font size.

    ``PercentageInMath`` has to be raised before FontUnitInMath so that it can be used
    to discard validation of properties that donâ€™t accept percentages.

    NF)r0  rN  ri  r   )r  r  rQ  )rç   r¥   rO  rç   rR  rS  rc  r¥   r  r  Úround)Únearestr   r   r	   )rr  ÚupÚdownúto-zerorú   rr  rs  rt  ru  c                 ó    •—  ‰| ‰z  «      ‰z  S r“   r£   )Úxr/  Úmultiples    €€rm   ú<lambda>zresolve_math.<locals>.<lambda>r  s   ø€ ±¸¸X¹Ó0FÈÑ0Q€ ro   )ÚmodÚremr{  c                 ó   •— ‰S r“   r£   ©rw  r´   s    €rm   ry  zresolve_math.<locals>.<lambda>€  s   ø€ °€ ro   )ÚsinÚcosÚtan)ÚasinÚacosÚatanrd  Úatan2ÚclampÚpowc                 ó"   •— | ‰j                   z  S r“   )r´   )rw  Úpower_tokens    €rm   ry  zresolve_math.<locals>.<lambda>Æ  s   ø€ °°[×5FÑ5FÑ0F€ ro   Úsqrtc                 ó   — | dz  S )Ng      à?r£   ©rw  s    rm   ry  zresolve_math.<locals>.<lambda>Ì  s
   € °°S±€ ro   Úhypotc                 ó   •— ‰S r“   r£   r}  s    €rm   ry  zresolve_math.<locals>.<lambda>Õ  s   ø€ ¨u€ ro   Úlogc                 ó0   •— t        j                  | ‰«      S r“   )ÚmathrŽ  )rw  Úbases    €rm   ry  zresolve_math.<locals>.<lambda>â  s   ø€ ´·±¸¸DÓ0A€ ro   ÚexpÚabsr^  c                 ó"   — | dk(  rdS | dkD  rdS dS )Nr   r   rN  r£   r‹  s    rm   ry  zresolve_math.<locals>.<lambda>õ  s   € ¨q°Aªv¨!€ ÀÀAÂ¸1€ È2€ ro   r/  ) r   r   r;   r?  r¨   Úresolve_mathrU  r2   r»   r-   r´   r    r{   rq  r�  ÚceilÚfloorr“  r.   Úgetattrr  r„  rŒ  rk  r’  r6  r5  rÝ   r:  r>  r<  r=  )'rB  r‰   r[  r\  Úargsr"  Úargr]  Útarget_valueÚtarget_tokenrT  rZ  Úupdate_conditionÚstrategyÚnumber_tokenÚ
strategiesÚmultiple_tokenÚparameter_tokenrc  Ú	parameterÚangleÚy_tokenÚx_tokenÚyrw  Úpixels_listrh  Ú	min_tokenÚ	max_tokenrH  Ú
base_tokenr5  rF  rG  r‘  r/  rx  rˆ  r´   s'                                     @@@@@rm   r•  r•  ÿ  ss
  ü€ ô �eÔØà€DÜ˜‹€HØ‡}�}ÐØØ×$Ñ$°5Ð$Ó9ò !ˆØ�‰�BŒØò 	!ˆCÜ˜#ŒÜ" 3¨°-ÀÓJ�Ø�;ÚØ�‰H�O‰O˜CÕ ñ	!ð!ð ‡}�}˜ÒÜ" 8¨T°!©W°mÀXÓNˆØˆ>Øä˜FÓ#Ð#à	�‰˜.Ò	(Ø-1Ð1ˆÐ1�| dØó  	:ˆFÜ% h°¸ÀxÓPˆEØˆ}ÙØ�z‰z˜\Ò)ØÐ#Ø˜zÑ)Ü.Ð.Ø�DØ!‘Eà�DÜ$,¨U¯[©[¸3Ñ->ÀÑ-IÐPTÔ$UÐU�E™EØ—‘˜xÒ'Ø˜3’;Ü*Ð*Ø˜T’\ÙØ�Ü  §¡°4Ô8‘à˜3’;Ü*Ð*Ø˜R’ZÙØ�Ü ¤¨5°(¸MÓ!JÐQUÔV�à Ð$ò NØ—‘ %Ñ'ÒL¨E¯K©K¸,×:LÑ:LÑ,LòNà—‘ %Ñ'ÒL¨E¯K©K¸,×:LÑ:LÑ,Lð ó  Ø-2°E˜l’ðA 	:ôB ˜Ó%Ð%à	�‰˜'Ó	!Ø)Ñˆ�(Üˆt‹9˜Š>Ü,¨X°t¸A±wÀÈxÓXŠLÜ�‹Y˜!Š^Ø=ˆJÜ�4˜‘7‹|˜qÒ  T¨!¡W¨Q¡Z×%5Ñ%5¸Ñ%CØ ™7 1™:×+Ñ+�Ü0Ø˜d 1™g }°hó @�àÐ'Øä0Ø˜d 1™g }°hó @�ä!2Ø˜d 1™g }°hó"@�à˜L¨.Ð9Ñ9ØØ×$Ñ$¨×(;Ñ(;Ò;ØØ)×/Ñ/‘Ü�‹Y˜!Š^Ø˜A‘w˜q‘z×'Ñ'ˆHÜ,¨X°t¸A±wÀÈxÓXˆLÜ.Ø˜$˜q™' =°(ó<ˆNà˜ nÐ5Ñ5ØØ× Ñ  N×$7Ñ$7Ò7ØØ%×+Ñ+ˆHØ�yÒ ô ‰HØ˜ÒÜ—y‘y‰HØ˜ÒÜ—z‘z‰HØ˜Ò"Ø%1×%7Ñ%7¸!Ò%;”t—z’zÄÇÁ‰HàÜ˜Ô&QÓRÐRà	�‰˜.Ñ	(Ü(¨°4¸±7¸MÈ8ÓTˆÜ+¨H°d¸1±g¸}ÈhÓWˆØ�L /Ð2Ñ2ØØ×Ñ × 4Ñ 4Ò4ØØ×#Ñ#ˆØ#×)Ñ)ˆ	Ø˜Ñ"ˆØ�=‰=˜EÒ! f¨yÑ&8¸1Ò&<Ø”S˜“^Ñ#ˆEÜ˜£oÓ6Ð6à	�‰Ð/Ñ	/Ü(¨°4¸±7¸MÈ8ÓTˆØÐØØ×Ñ Ò(Ø ×&Ñ&‰EÜ  Ó.Ð.ˆeÐ7ØØ,”œ˜hŸm™mÓ,¨UÓ3ˆÜ˜‹Ðà	�‰Ð2Ñ	2Ü(¨°4¸±7¸MÈ8ÓTˆØÐ <×#4Ñ#4¸Ò#@Øð	Ø0”GœD (§-¡-Ó0°×1CÑ1CÓDˆEô ˜ EÔ*Ð*à	�‰˜'Ò	!àQUöWØJMÔ˜h¨¨]¸HÕEòWÑˆ�à�G˜WÐ%Ñ%ØØ�L‰L˜'Ÿ,™,Ð'¨H¨:Ò5ØØ�}‰}˜gŸm™mˆ1ˆÜœŸ
™
 1 aÓ(¨uÔ5Ð5à	�‰˜'Ò	!ØˆØˆØò 	&ˆFÜ% h°¸ÀxÓPˆEØˆ}ÙØ�z‰z˜\Ò)ØÐ#Ø˜t’|Ü.Ð.Ø�DØ!‘Eà�DÜ$ U§[¡[°3Ñ%6¸Ñ%AÈÔM‘Eà˜3’;Ü*Ð*Ø�Ü" 5¨(°MÓB�Ü  ¨dÔ3�Ø×Ñ˜uÕ%ð'	&ð( '2Ñ#ˆ	�5˜)Ø�;‰;˜Ÿ™Ò(ØˆEØ�;‰;˜Ÿ™Ò(ØˆEÜ˜‹Ðà	�‰˜%Ò	àQUö%WØJMÔ˜h¨¨]¸HÕEò%WÑ!ˆ�kà�L +Ð.Ñ.ØØ×Ñ˜{×/Ñ/Ð0°X°JÒ>ØÜ˜Ó&FÓGÐGà	�‰˜&Ò	 Ü(¨°4¸±7¸MÈ8ÓTˆØÐ <×#4Ñ#4¸Ò#@ØÜ˜Ñ&8Ó9Ð9à	�‰˜'Ò	!ð ö àô ˜h¨°¸xÕHð ˆð  ð �8ÑØÜ—
‘
°hÖ?¨U˜UŸ[›[Ò?Ð@ˆÜ˜ ™£_Ó5Ð5à	�‰˜%Ò	Ü(¨°4¸±7¸MÈ8ÓTˆØÐ <×#4Ñ#4¸Ò#@ØÜˆt‹9˜Š>Ü*¨8°T¸!±W¸mÈXÓVˆJØÐ! Z§_¡_¸Ò%@ØØ×#Ñ#‰Dä—6‘6ˆDÜ˜Ó&AÓBÐBà	�‰˜%Ò	Ü(¨°4¸±7¸MÈ8ÓTˆØÐ <×#4Ñ#4¸Ò#@ØÜ˜¤d§h¡hÓ/Ð/à	�‰˜%Ò	Ü(¨°4¸±7¸MÈ8ÓTˆØÐØÜ˜¤cÓ*Ð*à	�‰˜&Ò	 Ü(¨°4¸±7¸MÈ8ÓTˆØÐØÜØ×ÑÑ MóOð 	Oð €IÜ  §¡Ó1ò '‰ˆˆ8Ø�=‰=˜JÒ&Ü! (¨H°mÀXÓNˆFØˆ~ÙØ×Ñ˜VÕ$à×Ñ˜XÕ&ð'ô �L‰L×&Ñ&Ø×Ñ˜5×.Ñ.°·
±
¸IóG€Eä˜˜x¨¸ÓAÒJÀUÐJøô_ ò 	Ùð	üò
WùòP%Wùò ùò
 @s*   Ô*g Õ&g!Ûg&Ý=g+Þ,g0ç	gçgc                   ó   — e Zd ZdZd„ Zd„ Zy)r‚   z2Dummy computed style used to store initial values.c                 ó<   — d | _         | | _        i | _        || _        y r“   )r†   Ú	specifiedÚcacherI   )rW   rI   s     rm   rn   zInitialStyle.__init__  s    € Ø ˆÔØˆŒØˆŒ
Ø&ˆÕro   c                 ó"   — t         |   x}| |<   |S r“   )r   ©rW   r³   r´   s      rm   Ú__missing__zInitialStyle.__missing__  s   € Ü*¨3Ñ/Ð/ˆ��S‘	Øˆro   N)rž   rŸ   r    r¡   rn   r²  r£   ro   rm   r‚   r‚     s   „ Ù<ò'óro   r‚   c                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)ÚAnonymousStylez(Computed style used for anonymous boxes.c                 ó    — | j                  ddddddœ«       || _        d| _        | | _        |j                  | _        |j
                  | _        y )Nr   )Úborder_top_widthÚborder_bottom_widthÚborder_left_widthÚborder_right_widthÚoutline_widthF)Úupdater†   Úis_root_elementr®  r¯  rI   )rW   r†   s     rm   rn   zAnonymousStyle.__init__  sX   € ð 	�‰Ø !Ø#$Ø!"Ø"#Øñ
ô 	ð )ˆÔØ$ˆÔØˆŒØ!×'Ñ'ˆŒ
Ø'×3Ñ3ˆÕro   c                 óR   — t        | j                  «      }|j                  | «       |S r“   )r´  r†   r»  ©rW   r8  s     rm   r8  zAnonymousStyle.copy%  s#   € Ü˜d×/Ñ/Ó0ˆØ�‰�DÔØˆro   c                 óF  — |t         v s|d d dk(  r| j                  |   x}| |<   |S |dk(  r| j                  |   x}| |<   |S |d d dk(  r*t        |t        |   | j                  |   d¬«      x}| |<   |S t        |   }|t        v rt        |   | ||«      x}| |<   |S || |<   |S )Nr	   Ú__Úpageé   Útext_decoration_F)rˆ   )r   r†   r·   r   r   r   r±  s      rm   r²  zAnonymousStyle.__missing__*  sï   € Ø”)Ñ˜s 2 A˜w¨$šØ $× 1Ñ 1°#Ñ 6Ð6ˆE�D˜‘Ið ˆð �FŠ]à $× 1Ñ 1°#Ñ 6Ð6ˆE�D˜‘Ið ˆð ��"ˆXÐ+Ò+Ü /Ø”^ CÑ(¨$×*;Ñ*;¸CÑ*@È5ô!Rð RˆE�D˜‘Ið ˆô # 3Ñ'ˆEØÔ*Ñ*ä$6°sÑ$;¸DÀ#ÀuÓ$MÐM�˜˜S™	ð ˆð "��S‘	Øˆro   N©rž   rŸ   r    r¡   rn   r8  r²  r£   ro   rm   r´  r´    s   „ Ù2ò4ò"ó
ro   r´  c                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)rƒ   z,Computed style used for non-anonymous boxes.c                 ó¼   — i | _         || _        || _        |d u | _        || _        || _        || _        || _        || _        |r|j                  | _	        y i | _	        y r“   )
r®  r†   rˆ   r¼  r_   rE   r‡   rC   rI   r¯  )rW   r†   rˆ   r_   rE   r‡   rC   rI   s           rm   rn   zComputedStyle.__init__@  s_   € àˆŒØ(ˆÔØ ˆŒØ+¨tÐ3ˆÔØˆŒØ&ˆÔØ$ˆŒØ ˆŒØ&ˆÔÙ+7�\×'Ñ'ˆ�
¸Rˆ�
ro   c           	      ó  — t        | j                  | j                  | j                  | j                  | j
                  | j                  | j                  «      }|j                  | «       | j                  j                  «       |_	        |S r“   )rƒ   r†   rˆ   r_   rE   r‡   rC   rI   r»  r®  r8  r¾  s     rm   r8  zComputedStyle.copyM  se   € ÜØ×Ñ˜tŸ}™}¨d¯l©l¸D×<LÑ<LØ�O‰O˜TŸ]™]¨D×,<Ñ,<ó>ˆð 	�‰�DÔØŸ™×,Ñ,Ó.ˆŒØˆro   c                 ó®  — |dk(  r| d    n
|dk(  r| d    | j                   }|| j                  v r#| j                  |   d   }t        |t        «      }n|t        v s|d d dk(  rd}nd}d	}|dk(  r|€d}|rjg }|j
                  D ]4  }t        | ||«      }|€|j                  |«       Œ$|j                  |«       Œ6 |j                  d
d«      }	 |j                  ||«      }|dk(  r!|d d dk(  rg nt        |   }|t        vr|| |<   n|dk(  r
||   x| |<   }|d d dk(  r;|�9|t        v rt        |   | ||«      }t        ||||   || j                  v «      | |<   n.|dk(  r|dk(  r|€dn|d   }|| v r| |= n|dv r|| j                   |<   t#        |«      rP|}	g }	 	 t%        |	| |«      }|€t&        ‚|j                  |«       |j                  d
d«      }t+        ||«      d   d   }|| v r| |   S |t        v rt        |   | ||«      }|| |<   |S # t        $ r/ |t        v r|�||   x| |<   }nt        |   }|t        vr|| |<   Y �Œ`w xY w# t(        $ r |j                  |	«       Y Œ£w xY w# t&        $ rh t-        j.                  d|	j0                  |	j2                  |	j5                  «       «       |t        v r|�||   x| |<   }nt        |   }|t        vr|| |<   Y Œów xY w)NÚfloatr#  rr   r   r	   rÀ  ÚinheritÚinitialFr2  rõ   rÂ  rÃ  rÁ  Úautor¥   )r#  rÉ  rr   r   z"Invalid math function at %d:%d: %s)r†   rˆ   rW  r,   r   rZ  r7  r¨   r9  r@  Úsolver+   r   r   r   r·   r®  r   r•  Ú	Exceptionr-   r$   r   r  r<  r=  Ú	serialize)
rW   r³   r†   r´   ÚpendingÚsolved_tokensrB  rZ  Úoriginal_keyr/  s
             rm   r²  zComputedStyle.__missing__U  s|  € Ø�'Š>à�ÓØ�IÒà�ŠMà×(Ñ(ˆà�$—-‘-Ñà—M‘M #Ñ& qÑ)ˆEÜ  ¬Ó0‰Gð ”iÑ 3 r¨ 7¨d¢?Ø!‘à!�ØˆGà�IÒ ,Ð"6àˆEáàˆMØŸ™ò 1�Ü$ T¨5°,Ó?�Ø�>Ø!×(Ñ(¨Õ/à!×(Ñ(¨Õ0ð1ð Ÿ;™; s¨CÓ0ˆLð
*ØŸ™ M°<Ó@�ð �IÒØ˜b˜q˜' Tš/‘B¬~¸cÑ/BˆEØÔ.Ñ.à!��S’	Ø�iÒà ,¨SÑ 1Ð1ˆD�‰I˜àˆs�ˆ8Ð)Ò)¨lÐ.Fð Ô(Ñ(Ü*¨3Ñ/°°c¸5ÓA�Ü'Ø�U˜L¨Ñ-¨s°d·m±mÐ/CóEˆD�ŠIà�FŠ]˜u¨šð 'Ð.‘B°LÀÑ4HˆEØ�d‰{Ø˜‘IØÐ4Ñ4ð #(ˆD�N‰N˜3Ñä�eÔØˆHØˆMð*ð0Ü(¨°4¸Ó=�Eð �}Ü'˜Ø!×(Ñ(¨Ô/Ø"Ÿ{™{¨3°Ó4�Ü.¨}¸lÓKÈAÑNÈqÑQ�ð �$‰;à˜‘9ÐàÔ$Ñ$ä& sÑ+¨D°#°uÓ=ˆEàˆˆS‰	Øˆøô[ !ò *Øœ)Ñ#¨Ð(@à(4°SÑ(9Ð9�D˜‘I¡ä*¨3Ñ/�EØÔ"6Ñ6à$)˜˜S™	úð*ûô^ (ò 3Ø!×(Ñ(¨Ö2ð3ûô ò *Ü—‘Ø8Ø×(Ñ(¨(×*@Ñ*@À(×BTÑBTÓBVôXð œ)Ñ#¨Ð(@à(4°SÑ(9Ð9�D˜‘I¡ä*¨3Ñ/�EØÔ"6Ñ6à$)˜˜S™	ùð*úsC   ÃH ÆI Æ#=I# È4I È?I ÉI ÉI# ÉI É I# É#A.KËKNrÄ  r£   ro   rm   rƒ   rƒ   >  s   „ Ù6ò@òótro   rƒ   c                   ó2   — e Zd Zd„ Zed„ «       Zed„ «       Zy)ÚColorProfilec                 óf   — |d   d   | _         |d   | _        |d   | _        t        |«      | _        y )NÚsrcr   úrendering-intentÚ
components)rÖ  ÚrenderingintentrØ  r   Ú_profile)rW   Úfile_objectÚdescriptorss      rm   rn   zColorProfile.__init__Í  s9   € Ø˜uÑ% aÑ(ˆŒØ*Ð+=Ñ>ˆÔØ% lÑ3ˆŒÜ'¨Ó4ˆ�ro   c                 ó†   — | j                   j                  j                  xs  | j                   j                  j                  S r“   )rÚ  ÚprofileÚmodelÚprofile_descriptionr”   s    rm   r;   zColorProfile.nameÓ  s4   € ð �M‰M×!Ñ!×'Ñ'ò 6Ø�M‰M×!Ñ!×5Ñ5ð	7ro   c                 ó6   — | j                   j                  «       S r“   )rÚ  Útobytesr”   s    rm   rª   zColorProfile.contentÙ  s   € à�}‰}×$Ñ$Ó&Ð&ro   N)rž   rŸ   r    rn   Úpropertyr;   rª   r£   ro   rm   rÔ  rÔ  Ì  s/   „ ò5ð ñ7ó ð7ð
 ñ'ó ñ'ro   rÔ  c                 óò   — d}| j                  d«      }d}|D ]]  }|r|dz  }||z  }||v r|j                  |«      }Œ%|€ |j                  |«       t        |«      dz
  }ŒG|j	                  ||«       |dz  }Œ_ y)z,Add layer to list of layers, handling order.Nú.r¥   r   )rÎ   r:   r¨   r{   Úinsert)rl   rT   r:   ÚpartsÚ
full_layerr"  s         rm   Ú
_add_layerré  Þ  sŽ   € à€EØ�K‰K˜Ó€EØ€JØò ˆÙØ˜#ÑˆJØ�dÑˆ
Ø˜ÑØ—L‘L Ó,ˆEØØˆ=Ø�M‰M˜*Ô%Ü˜“K !‘O‰Eà�M‰M˜% Ô,Ø�Q‰J‰Eñro   c                 ó$   — |s|�t        |«      S yy)zCGet a dict of computed style mixed from parent and cascaded styles.N)r´  )r_   rˆ   r†   rE   r‡   rC   rD   s          rm   Úcomputed_from_cascadedrë  ò  s   € ñ ˜Ð0Ü˜lÓ+Ð+ð 1ˆ8ro   c                 óÀ   — | syd}d}| D ]N  }|j                   dk(  r|r||j                  z  }d}Œ&|j                   dk(  r|j                  dk(  r
|s|dz  }d}ŒN y |s|S y)z'Parse tokens representing a layer name.Nr¥   Tre  FrM  rå  )r»   r´   )rZ  Ú	new_layerÚlast_dotrB  s       rm   Ú_parse_layerrï  ú  s}   € áØØ€IØ€HØò ˆØ�:‰:˜Ò ¡XØ˜Ÿ™Ñ$ˆIØ‰HØ�Z‰Z˜9Ò$¨¯©¸Ò);ÁHØ˜ÑˆIØ‰Háðñ ØÐð ro   c                 óà   — t        t        | «      «      }t        |«      dk7  ry |d   }|j                  dk7  ry |j                  j                  d«      s|j                  dk(  r|j                  S y )Nr   r   re  z--zdevice-cmyk)rX  r0   r{   r»   r´   r|   )ÚpreluderZ  rB  s      rm   Úparse_color_profile_namerò    sf   € ÜÔ# GÓ,Ó-€Fä
ˆ6ƒ{�aÒØà�1‰I€EØ‡z�z�WÒØà‡{�{×Ñ˜dÔ# u§{¡{°mÒ'CØ�{‰{Ðð (Dro   c           	      ó°  — t        t        | j                  «      «      }g }|s|j                  dddddg d¢dœ«       |S |�r�dddddg d¢dœ}|d   j                  dk(  r(|j                  d«      }|j                  |d<   d|d   d<   t        |«      dk(  ry|s|j                  |«       |S |�r|j                  d«      }|j                  d	k7  ry|j                  d
k(  �r¸|sy|d   j                  dk(  r`|j                  d«      }|j                  }|dv r$|d   r	|d   |k7  ry||d<   |d   dxx   dz  cc<   ŒŽ|dv rd||<   |d   dxx   dz  cc<   Œ¨y|d   j                  dk(  �r/|j                  d«      }|j                  dk7  ryt        |j                  «      D ]J  \  }	}
|
j                  dk(  sŒ|
j                  dk(  sŒ&|j                  d|	dz
   }|j                  |	dz   d } n |j                  }d}t        j                  j                  |«      }|€y|�L|D �cg c]  }|j                  dvr|‘Œ }}t        |«      dk7  ry|\  }|j                  dk7  ry|j                  }g |¢|‘­|d<   |d   dxx   dz  cc<   |r|d   dxx   dz  cc<   �Œëy|j                  dk(  r|rt        |d   «      rny|r�Œ|j                  |«       |r�Œ�|S c c}w )a©  Parse a page selector rule.

    Return a list of page data if the rule is correctly parsed. Page data are a
    dict containing:

    - 'side' ('left', 'right' or None),
    - 'blank' (True or None),
    - 'first' (True or None),
    - 'index' (page number or None),
    - 'name' (page name string or None), and
    - 'specificity' (list of numbers).

    Return ``None` if something went wrong while parsing the rule.

    Nrá   )r7   r8   r9   r:   r;   r]   r   re  r;   r   r]   rM  ræ   )rw   rx   r7   r	   )r8   r9   Tr/  ÚnthÚof)ÚcommentÚ
whitespacer:   r¿   )rX  r0   rñ  r¨   r»   rV  r´   r{   ro  r;   r6  r5  rÝ   rô  Ú	parse_nthÚany)ÚrulerZ  Ú	page_dataÚtypesrB  rM  re  Úpseudo_classr/  rF  rG  rô  r_  Ú
nth_valuess                 rm   Úparse_page_selectorsrÿ    sF  € ô$ Ô# D§L¡LÓ1Ó2€FØ€Iñ Ø×ÑØ 4°$ÀØªñ4ô 	5ð Ðâ
à 4°$ÀØªñ4ˆð �!‰9�>‰>˜WÒ$Ø—J‘J˜q“MˆEØ!ŸK™KˆE�&‰MØ&'ˆE�-Ñ  Ñ#äˆv‹;˜!ÒØÙØ×Ñ˜UÔ#ØÐâØ—j‘j “mˆGØ�|‰|˜yÒ(Øà�}‰} Ó#ÙØà˜!‘9—>‘> WÒ,Ø"ŸJ™J q›M�EØ#(×#4Ñ#4�Là#Ð'8Ñ8Ø  š=¨U°6©]¸lÒ-JØ#'Ø(4˜˜f™Ø˜mÑ,¨QÓ/°1Ñ4Ó/Ø à%Ð);Ñ;Ø.2˜˜lÑ+Ø˜mÑ,¨QÓ/°1Ñ4Ó/Ø ðL ðI ˜A‘Y—^‘^ zÓ1Ø%Ÿz™z¨!›}�HØ—}‘}¨Ò-Ø#Ü'0°×1CÑ1CÓ'Dò %™˜˜8Ø#Ÿ=™=¨GÓ3¸¿¹È$Ó8NØ"*×"4Ñ"4°V°a¸!±eÐ"<˜CØ$,×$6Ñ$6°q¸1±u°vÐ$>˜EÙ!ð	%ð '×0Ñ0˜Ø $˜ä!)§¡×!7Ñ!7¸Ó!<�JØ!Ð)Ø#àÐ(à/4ö!LØ&+Ø$Ÿz™zÐ1JÑJò "ð!L˜ð !Lô ˜u›:¨š?Ø#'Ø!&™˜Ø Ÿ:™:¨Ò0Ø#'Ø %§¡˜à%9 zÐ%9°5Ñ%9�E˜'‘Nð ˜-Ñ(¨Ó+¨qÑ0Ó+ÙØ˜mÑ,¨QÓ/°1Ñ4Ó/ÙàØ—‘ #Ò%Ùœc %¨Ñ"6Ô7ØàóE ðH 	×Ñ˜Ôói ðl Ðùò7!Ls   È Kc                 ó   — |D �]ˆ  }t        |dd«      €�|j                  dk(  r6t        j                  d|j                  |j
                  |j                  «       |j                  dk7  rŒf|j                  dvr-t        j                  d||j                  |j
                  «       Œ¡|j                  dk(  �r0	 t        }t        j                  |j                  «      }t        t        |||j                  «      «      }|rät        |d	„ ¬
«      }|D ]Ð  \  }}|D �cg c]  }|d   ‘Œ	 }}|D ]²  }|j!                  |||f«       |j"                  t$        vsŒ*t        j&                  |j                  «      }|j"                  j)                  d«      r+t*        }t-        j.                  d|› d|j"                  › �«      ‚t-        j.                  d|› d|j"                  › �«      ‚ d}
ŒÒ nd}
�Œá|j                  dk(  �rs|j                  dk(  �rc|
rKt        j                  dt        j&                  |j                  «      |j                  |j
                  «       �ŒNt3        |j                  «      }d}|rj|d   j                  dk(  r4t5        ||d   j6                  dd|j                  |j
                  f¬«      }n$t9        |d   |«      }|r|d   d   dk(  r|d   d   }|€�ŒÕd}t        |dd «      }|rç|d   j                  dk(  r{|d   j:                  dk(  ri|j=                  d«      }t?        |j@                  «      x}s„t        j                  dt        j&                  |«      |j                  |j
                  «       �Œt|d   j                  dk(  r1|d   j6                  dk(  r|j=                  d«       dtC        |«      › �}|r|�|› d|› �}tE        ||«       tG        jH                  |«      }|€Kt        j                  d t        j&                  |j                  «      |j                  |j
                  «       �Œ0tG        jJ                  || «      s�ŒH|€�ŒL	 tM        ||| |||	||||¬!«
       �Œd|j                  dk(  rÊ|j                  d%k(  r»tG        jH                  |j                  «      }|€Kt        j                  d&t        j&                  |j                  «      |j                  |j
                  «       �ŒîtG        jJ                  || «      s�Œt        jT                  |j                  «      }tW        | |||||||||	d¬'«       �Œ=|j                  dk(  �r^|j                  d(k(  �rNtY        |«      }|€Kt        j                  d)t        j&                  |j                  «      |j                  |j
                  «       �Œµd}
|D ]í  } | j=                  d*«      }!t[        dFi | ¤Ž}"t        j                  |j                  «      }#t        t        ||#«      «      }|r|!d|"fg}$|j]                  ||$|f«       |#D ]z  }%|%j                  dk7  s|%j                  €Œt        t        |t        j                  |%j                  «      «      «      }|sŒT|!d+|%j                  › �|"fg}$|j]                  |%|$|f«       Œ| Œï �Œ«|j                  dk(  r¨|j                  d,k(  r™d}
t        j                  |j                  «      }#t_        ta        d,||#«      «      }&d-D ]E  }'|'|&vsŒt        j                  d.|'jc                  d/d«      |j                  |j
                  «        �ŒI |€�ŒN|je                  |&|«       �Œb|j                  dk(  �r„|j                  d0k(  �rtd}
tg        |j                  «      x}(€Kt        j                  d1t        j&                  |j                  «      |j                  |j
                  «       �Œæt        j                  |j                  «      }#ta        d0||#«      }&dd2dd3œ})|&D ]Y  \  }*}+|*|)v r|+|)|*<   Œt        j                  d4|*t        j&                  |j                  «      |j                  |j
                  «       Œ[ |)d5   €Kt        j                  d6t        j&                  |j                  «      |j                  |j
                  «       �ŒÆti        ||)d5   d   «      5 },	 tk        |,|)«      }-|-|	|(<   	 ddd«       �Œö|j                  dk(  �rÆ|j                  d8k(  �r¶to        jp                  |j                  |«      }(|(€Kt        j                  d9t        j&                  |j                  «      |j                  |j
                  «       �	Œƒd}
t        j                  |j                  «      }#dddddddddd:œ	}.ta        d8||#«      }&|&D ]
  \  }*}+|+|.|*<   Œ |.d;   €d<}/n|.d;   }/|/d   €ç|/d   d=v rGtC        |.d>   xs g «      dk  rËt        j                  d?|(|j                  |j
                  |/d   «       �
Œ,|/d   d@v rGtC        |.d>   xs g «      dAk  r}t        j                  dB|(|j                  |j
                  |/d   «       �
Œz|/d   dCk(  rCtC        |.dD   xs g «      dAk  r.t        j                  dE|(|j                  |j
                  «       �
ŒÅ|.||(<   �
ŒÌ|j                  dk(  �r�|j                  dk(  �rqg }0t3        |j                  «      }|rts        |«      ndF}1|1D ]-  }t?        |«      x}r|�|› d|› �}|0j]                  |«       Œ+d}0 n |0€Kt        j                  dGt        j&                  |j                  «      |j                  |j
                  «       �Œ‘tC        |0«      dkD  rN|j                  r-t        j                  dH|j                  |j
                  «       �ŒØ|0D ]  }tE        ||«       Œ �Œí|0r|0\  }ndtC        |«      › �}|�|› d|› �}tE        ||«       |j                  €�Œ%t        jT                  |j                  «      }tW        | |||||||||	d|¬I«       �Œ]t        j                  dJ||j                  |j
                  «       �Œ‹ yc c}w # t,        j.                  $ r"}t        j0                  d|«       Y d}~�ŒÂd}~ww xY w# tN        $ r9}t        jP                  d"||«       t        jR                  d#|¬$«       Y d}~�Œd}~ww xY w# tl        $ rU t        j                  d7t        j&                  |j                  «      |j                  |j
                  «       Y ddd«       �Œlw xY w# 1 sw Y   �ŒzxY w)KzDDo what can be done early on stylesheet, before being in a document.rª   NrÒ   zParse error at %d:%d: %szat-rule)Úimportrl   zUnknown empty rule %s at %d:%dzqualified-rulec                 ó   — | d   S )Nr   r£   r‹  s    rm   ry  z'preprocess_stylesheet.<locals>.<lambda>«  s
   € ¸aÀ¹d€ ro   )r³   r   rõ   ú'z$', ignored prefixed pseudo-element: z', unknown pseudo-element: Tz#Invalid or unsupported selector, %sr  zP@import rule %r not at the beginning of the the whole rule was ignored at %d:%d.r   rÀ   Fz@import at %s:%s)Úallow_relativeÚcontextÚcontext_argsÚexternalr/  rl   zBInvalid layer name %r the whole @import rule was ignored at %d:%d.re  z
@anonymousrå  zBInvalid media type %r the whole @import rule was ignored at %d:%d.)
rÈ   rÁ   rÂ   rI   rÃ   rÄ   rR   r‹   rT   rl   z$Failed to load stylesheet at %s : %srÊ   rË   r½   zAInvalid media type %r the whole @media rule was ignored at %d:%d.)Úignore_importsrÁ  zIUnsupported @page selector %r, the whole @page rule was ignored at %d:%d.r]   ú@z	font-face)rÖ  Úfont_familyz3Missing %s descriptor in '@font-face' rule at %d:%dr2  zcolor-profilezRInvalid color profile name %r, the whole @color-profile rule was ignored at %d:%d.zrelative-colorimetric)rÖ  r×  rØ  z4Unknown descriptor %r for profile named %r at %d:%d.rÖ  zSNo source for profile named %r, the whole @color-profile rule was ignored at %d:%d.z^Invalid profile file for profile named %r, the whole @color-profile rule was ignored at %d:%d.zcounter-stylezRInvalid counter style name %r, the whole @counter-style rule was ignored at %d:%d.)	ÚsystemÚnegativeÚprefixÚsuffixÚrangeÚpadÚfallbackÚsymbolsÚadditive_symbolsr  )NÚsymbolicN)ÚcyclicÚfixedr  r  zHIn counter style %r at %d:%d, counter style %r needs at least one symbol)Ú
alphabeticÚnumericr	   zIIn counter style %r at %d:%d, counter style %r needs at least two symbolsÚadditiver  zZIn counter style %r at %d:%d, counter style "additive" needs at least two additive symbolsr£   zKUnsupported @layer selector %r, the whole @layer rule was ignored at %d:%d.zR@layer rule with multiple layer names, the whole @layer rule was ignored at %d:%d.)r  rl   zUnknown rule %s at %d:%d):r˜  r»   r   r  r<  r=  ÚmessageÚlower_at_keywordr   rÝ   rÞ   rª   rX  r"   rñ  r   Úadd_selectorÚpseudo_elementÚPSEUDO_ELEMENTSrÏ  r|   r   Ú
cssselect2ÚSelectorErrorrŽ  r0   r   r´   r/   r;   rV  rï  r5  r{   ré  r   Úparse_media_queryrÐ   r
   r   rÒ   rÓ   Úparse_rule_listÚpreprocess_stylesheetrÿ  r6   r¨   Údictr#   r@  Úadd_font_facerò  r   rÔ  ÚBaseExceptionr   Úparse_counter_style_namer1   )2rÔ   rC   Ústylesheet_rulesrÁ   rR   r‹   rT   rI   rÃ   rÄ   r  rl   rú  Úlogger_levelÚcontentsÚselectors_declarationsÚ	selectorsr`   Údeclarationrj   rñ  ÚexcrZ  rÈ   Ú	url_tuplerí  Únext_tokensr/  r½   rÙ   Úcontent_rulesÚdatarû  r]   r�   rª   r�   Úmargin_ruleÚrule_descriptorsr³   r;   rÜ  Údescriptor_nameÚdescriptor_valueÚresponseÚcolor_profileÚcounterr  Ú
new_layersÚcomma_separated_tokenss2                                                     rm   r#  r#  �  s‚  € ð !ó S<ˆÜ�4˜ DÓ)Ð1Ø�y‰y˜GÒ#Ü—‘Ø.Ø×$Ñ$ d×&8Ñ&8¸$¿,¹,ôHð �y‰y˜IÒ%ØØ×$Ñ$Ð,?Ñ?Ü—‘Ø4Ø˜$×*Ñ*¨D×,>Ñ,>ô@ð à�9‰9Ð(Ó(ð Ü&�Ü#×9Ñ9¸$¿,¹,ÓG�Ü)-Ü+¨H°hÀÇÁÓMó*OÐ&ñ *Ü-4Ø.±Nô.DÐ*à3Iò .Ñ/˜	 <à>Jö(LØ/:˜K¨›Nð(L˜ð (Là(1ò F˜HØ#×0Ñ0°¸LÈ%Ð;PÔQØ'×6Ñ6¼oÒMÜ*2×*<Ñ*<¸T¿\¹\Ó*J Ø#+×#:Ñ#:×#EÑ#EÀcÔ#JÜ38 LÜ*4×*BÑ*BØ*+¨G¨9ð 5Là+3×+BÑ+BÐ*Cð)Eó+Fð %Fô
 +5×*BÑ*BØ*+¨G¨9ð 5Cà+3×+BÑ+BÐ*Cð)Eó+Fð %FðFð *.™ñ%.ð( &*�Nùð
 �Y‰Y˜)Ó#¨×(=Ñ(=ÀÓ(IÙÜ—‘ð;ä×&Ñ& t§|¡|Ó4Ø×$Ñ$ d×&8Ñ&8ô	:ñ
 ä& t§|¡|Ó4ˆFØˆCÙØ˜!‘9—>‘> XÒ-Ü"Ø  &¨¡)§/¡/À%Ø 2Ø&*×&6Ñ&6¸×8JÑ8JÐ%KôM‘Cô
 !(¨¨q©	°8Ó <�IÙ  Y¨q¡\°!¡_¸
Ò%BØ'¨™l¨1™o˜Øˆ{ÙàˆIÜ˜v a b˜zÓ*ˆKÙØ˜q‘>×&Ñ&¨*Ò4¸ÀQ¹×9LÑ9LÐPWÒ9WØ*Ÿ™¨qÓ1�HÜ)5°h×6HÑ6HÓ)IÐI˜IÐIÜŸ™ðKä$×.Ñ.¨xÓ8Ø ×,Ñ,¨d×.@Ñ.@ô	Bñ
 !Ø  ‘^×(Ñ(¨GÒ3¸ÀA¹×8LÑ8LÐPWÒ8WØ—O‘O AÔ&Ø",¬S°«[¨MÐ :�IÙØÐ(Ø', g¨Q¨y¨kÐ$:˜	Ü˜y¨&Ô1ä!×3Ñ3°KÓ@ˆEØˆ}Ü—‘ðCä×&Ñ& t§|¡|Ó4Ø×$Ñ$ d×&8Ñ&8ô	:ñ
 Ü ×5Ñ5°eÐ=NÔOÙØŠðXÜØ¨[ÐEVØ$/¸}Ø'5¸wØ#-°fÀI÷	Oð �Y‰Y˜)Ò#¨×(=Ñ(=ÀÒ(HÜ!×3Ñ3°D·L±LÓAˆEØˆ}Ü—‘ðBä×&Ñ& t§|¡|Ó4Ø×$Ñ$ d×&8Ñ&8ô	:ñ
 Ü ×5Ñ5°eÐ=NÔOÙÜ$×4Ñ4°T·\±\ÓBˆMÜ!Ø! 8¨]¸KÈØ˜F K°ÀØ#÷%ð
 �Y‰Y˜)Ó#¨×(=Ñ(=ÀÓ(GÜ'¨Ó-ˆDàˆ|Ü—‘ðAä×&Ñ& t§|¡|Ó4Ø×$Ñ$ d×&8Ñ&8ô	:ñ
 à!ˆNØ!ò V�	Ø'Ÿm™m¨MÓ:�Ü%5Ñ%B¸	Ñ%BÐ"Ü"×8Ñ8¸¿¹ÓF�Ü#Ô$;¸HÀgÓ$NÓO�áØ&1°4Ð9KÐ%LÐ$M�MØ×%Ñ% t¨]¸LÐ&IÔJà#*ò 
V�KØ"×'Ñ'¨9Ò4¸×8KÑ8KÐ8SØ Ü#'Ô(?Ø Ü ×6Ñ6°{×7JÑ7JÓKó)Mó $N�Lò $à'¨1¨[×-IÑ-IÐ,JÐ)KØ.ð*0ð )1˜ð #×)Ñ)¨;¸À|Ð*TÕUñ
VòVð, �Y‰Y˜)Ò#¨×(=Ñ(=ÀÒ(LØ!ˆNÜ×4Ñ4°T·\±\ÓBˆGÜ#Ü& {°H¸gÓFó HÐà-ò M�ØÐ.Ò.Ü—N‘NØMØŸ™ C¨Ó-¨t×/?Ñ/?À×ASÑASôUò ðMð Ò*Ø×-Ñ-Ð.>ÀÖLà�Y‰Y˜)Ó#¨×(=Ñ(=ÀÓ(PØ!ˆNä0°·±Ó>Ð>�ÐGÜ—‘ð@ä×&Ñ& t§|¡|Ó4°d×6FÑ6FØ×&Ñ&ô	(ñ
 ä×4Ñ4°T·\±\ÓBˆGÜ5Ø ¨7ó 4Ðð Ø$;Ø"ñˆKð
 6Fò >Ñ1�Ð!1Ø" kÑ1Ø3C�K Ò0ä—N‘NØNØ'¬×);Ñ);¸D¿L¹LÓ)IØ×(Ñ(¨$×*<Ñ*<õ>ð	>ð ˜5Ñ!Ð)Ü—‘ð@ä×&Ñ& t§|¡|Ó4°d×6FÑ6FØ×&Ñ&ô	(ñ
 ä�{ K°Ñ$6°qÑ$9Ó:ð 9¸hð
9Ü$0°¸;Ó$G�Mð ,9�N 4Ò(÷9ñ 9ð �Y‰Y˜)Ó#¨×(=Ñ(=ÀÓ(PÜ×4Ñ4°T·\±\À=ÓQˆDØˆ|Ü—‘ð@ä×&Ñ& t§|¡|Ó4°d×6FÑ6FØ×&Ñ&ô	(ñ
 à!ˆNÜ×4Ñ4°T·\±\ÓBˆGàØ ØØØØØ ØØ$(ñ
ˆGô  6Ø ¨7ó 4Ðð 6Fò <Ñ1�Ð!1Ø+;�˜Ò(ð<ð �xÑ Ð(Ø1‘à  Ñ*�à�a‰yÐ Ø˜!‘9Ð ?Ñ?Ü˜7 9Ñ-Ò3°Ó4°qÒ8ÜŸ™ðIà  $×"2Ñ"2°D×4FÑ4FÈÈqÉ	ôSñ !Ø˜A‘YÐ";Ñ;Ü˜7 9Ñ-Ò3°Ó4°qÒ8ÜŸ™ðJà  $×"2Ñ"2°D×4FÑ4FÈÈqÉ	ôSñ !Ø˜A‘Y *Ò,Ü˜7Ð#5Ñ6Ò<¸"Ó=ÀÒAÜŸ™ðBð ! $×"2Ñ"2°D×4FÑ4Fô	Hñ
 !à")ˆM˜$Óà�Y‰Y˜)Ó#¨×(=Ñ(=ÀÓ(HØˆJÜ'¨¯©Ó5ˆGÙ@G¤^°GÔ%<ÈRÐ"Ø0ò �Ü ,¨VÓ 4Ð4�9Ð4ØÐ(Ø', g¨Q¨y¨kÐ$:˜	Ø×%Ñ% iÕ0à!%�JÙðð Ð!Ü—‘ðBä×&Ñ& t§|¡|Ó4Ø×$Ñ$ d×&8Ñ&8ô	:ñ
 Ü�Z“ 1Ò$Ø—<’<Ü—N‘NðFà×(Ñ(¨$×*<Ñ*<ô>ñ Ø!+ò 2�IÜ˜y¨&Õ1ð2ááØ'‘
‘	à(¬¨V«¨Ð6�	ØÐ$Ø#( '¨¨9¨+Ð 6�IÜ�y &Ô)à�|‰|Ð#ÙÜ$×4Ñ4°T·\±\ÓBˆMÜ!Ø! 8¨]¸KÈØ˜F K°ÀØ#¨9÷6ô �N‰NØ*Ø�d×&Ñ&¨×(:Ñ(:ö<ñc
S<ùò2(Løô( ×+Ñ+ò Ü—
‘
˜<Ð)NÐPSÔTÝûðûôB (ò XÜ—L‘LÐ!GÈÈiÔXÜ—L‘LÐ!BÈY×WÓWûðXûô\ %ò Ü—N‘NðDä ×*Ñ*¨4¯<©<Ó8¸$×:JÑ:JØ×*Ñ*ô	,ð
 ÷9ñ 9ðú÷9ñ 9ús{   Â5A!rÄrÄ"-rÅBrÑsãu3ãtã)u3òròs
ò(sós
ó	tó.t
ô
tôAu0õ$u3õ/u0õ0u3õ3u=	c
                 ól  — g }
|€t        j                  «       }|€
t        «       }| j                  «       D ]  }|j	                  «       D ]
  \  }}|||<   Œ Œ! | j                  |	«      xs g D ]  }|
j                  |ddf«       Œ |r-| j                  «       xs g D ]  }|
j                  |ddf«       Œ t        | j                  | j                  | j                  | j                  |||||«	      D ]  }|
j                  |ddf«       Œ |xs g D ]  }|
j                  |ddf«       Œ t        | |
|||«      S )a   Compute all the computed styles of all elements in ``html`` document.

    Do everything from finding author stylesheets to parsing and applying them.

    Return a ``style_for`` function that takes an element and an optional
    pseudo-element type, and return a style dict object.

    Nr*  r?   rá   r+  )r   ÚCounterStyler   Ú_ua_counter_stylerD  Ú_ua_stylesheetsr¨   Ú_ph_stylesheetsrÚ   rP   rÂ   rÁ   rC   r=   )rX   Úuser_stylesheetsrZ   rI   rÃ   rÄ   r‹   rT   rD   ÚformsrY   ra   r³   r´   rg   s                  rm   Úget_all_computed_stylesrC  ê  s_  € ð €FØÐÜ ×-Ñ-Ó/ˆØÐÜ'Ó)ˆØ×'Ñ'Ó)ò 'ˆØŸ+™+›-ò 	'‰JˆC�Ø!&ˆM˜#Òñ	'ð'ð ×&Ñ& uÓ-Ò3°ò 3ˆØ�‰�u˜l¨DÐ1Õ2ð3áØ×*Ñ*Ó,Ò2°ò 	8ˆEØ�M‰M˜5 (¨IÐ6Õ7ð	8ä!Ø× Ñ  $§/¡/°4×3CÑ3CØ�M‰M˜;¨°~ÀzØóò /ˆð 	�‰�u˜h¨Ð-Õ.ð	/ð
 #Ò( bò -ˆØ�‰�u˜f dÐ+Õ,ð-ô �D˜&Ð"6¸ÐEUÓVÐVro   )FNr“   )NNNr�   )	NFNNNNNNF)]r¡   r�  Úcollectionsr   Ú	itertoolsr   Úloggingr   r   r   r  rÝ   Útinycss2.astÚtinycss2.nthÚPIL.ImageCmsr   r¥   r
   Úloggerr   r   Ú
text.fontsr   Úurlsr   r   r   r   r   r   Úcomputed_valuesr   Ú	functionsr   r   r   Ú
propertiesr   r   r   r   Úunitsr   r   r   r    r!   Ú
validationr"   Úvalidation.descriptorsr#   Úvalidation.propertiesr$   rZ  r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r  r6   r=   r¬   r·   rÚ   rK   rN   r7  rU  rY  rg  r•  r$  r‚   r´  rƒ   rÔ  ré  rë  rï  rò  rÿ  r#  rC  r£   ro   rm   ú<module>rT     sU  ðñó Ý "Ý ß "Ý ã Û Û Û Ý (å ß ,Ý *ß GÓ Gß %Ý /ß 6Ñ 6ß TÓ Tß OÕ OÝ /Ý :Ý 9÷W÷ W÷ W÷ Wð
(€ñ ØÒCóEÐ ÷nñ nòbòò&-Xó`.òDó.(òVB&òJ/&òdó$CKôL
�4ô 
ô)�Tô )ôXK�Dô K÷\'ñ 'ò$ð( IMØ59Ø,0ó,òò&òrðn GKóW<ðt
 OTØQUØKOØ"'ô"Wro   