Ë
    £eh«ˆ  ã            
       óø  — 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	 d dl
m
Z
 d dlmZ d d	lZd d	lZd d	lZd
ZdZdZdZdZdZdZdZdZdZdZdZdZ e ee«      D � �cg c]  \  } }|d    | |d   ff‘Œ c}} «      Zd„ Z  ejB                  d«      Z"d„ Z#d„ Z$d„ Z%dZ&dZ'dZ(dZ)d Z*d!Z+d"„ Z,d#„ Z-d$„ Z.d0d%„Z/ G d&„ d'«      Z0 G d(„ d)ej                  «      Z1 G d*„ d+e2«      Z3 G d,„ d-e2«      Z4 G d.„ d/e2«      Z5y	c c}} w )1é    )Ússtruct)ÚfloatToFixedToStr)ÚbyteordÚsafeEvalé   )ÚDefaultTable)ÚgrUtils)Úarray)ÚreduceNz&
    >
    version:            16.16F
zŽ
    >
    version:            16.16F
    compilerVersion:    L
    numSilf:            H
                        x
                        x
zZ
    >
    ruleVersion:        16.16F
    passOffset:         H
    pseudosOffset:      H
aÁ  
    >
    maxGlyphID:         H
    extraAscent:        h
    extraDescent:       h
    numPasses:          B
    iSubst:             B
    iPos:               B
    iJust:              B
    iBidi:              B
    flags:              B
    maxPreContext:      B
    maxPostContext:     B
    attrPseudo:         B
    attrBreakWeight:    B
    attrDirectionality: B
    attrMirroring:      B
    attrSkipPasses:     B
    numJLevels:         B
z×
    >
    attrStretch:        B
    attrShrink:         B
    attrStep:           B
    attrWeight:         B
    runto:              B
                        x
                        x
                        x
zñ
    >
    numLigComp:         H
    numUserDefn:        B
    maxCompPerLig:      B
    direction:          B
    attCollisions:      B
                        x
                        x
                        x
    numCritFeatures:    B
z;
    >
    unicode:            L
    nPseudo:            H
z;
    >
    unicode:            H
    nPseudo:            H
z;
    >
    numClass:           H
    numLinear:          H
zo
    >
    numIDs:             H
    searchRange:        H
    entrySelector:      H
    rangeShift:         H
z;
    >
    glyphId:            H
    index:              H
as  
    >
    flags:              B
    maxRuleLoop:        B
    maxRuleContext:     B
    maxBackup:          B
    numRules:           H
    fsmOffset:          H
    pcCode:             L
    rcCode:             L
    aCode:              L
    oDebug:             L
    numRows:            H
    numTransitional:    H
    numSuccess:         H
    numColumns:         H
)C)ÚNOPr   )Ú	PUSH_BYTEÚb)ÚPUSH_BYTE_UÚB)Ú
PUSH_SHORTz>h)ÚPUSH_SHORT_Uú>H)Ú	PUSH_LONGú>L)ÚADDr   )ÚSUBr   )ÚMULr   )ÚDIVr   )ÚMINr   )ÚMAXr   )ÚNEGr   )ÚTRUNC8r   )ÚTRUNC16r   )ÚCONDr   )ÚANDr   )ÚORr   )ÚNOTr   )ÚEQUALr   )ÚNOT_EQr   )ÚLESSr   )ÚGTRr   )ÚLESS_EQr   )ÚGTR_EQr   )ÚNEXTr   )ÚNEXT_Nr   )Ú	COPY_NEXTr   )ÚPUT_GLYPH_8BIT_OBSr   )ÚPUT_SUBS_8BIT_OBSÚbBB)ÚPUT_COPYr   )ÚINSERTr   )ÚDELETEr   )ÚASSOCéÿÿÿÿ)Ú
CNTXT_ITEMÚbB)ÚATTR_SETr   )ÚATTR_ADDr   )ÚATTR_SUBr   )ÚATTR_SET_SLOTr   )ÚIATTR_SET_SLOTÚBB)ÚPUSH_SLOT_ATTRÚBb)ÚPUSH_GLYPH_ATTR_OBSr=   )ÚPUSH_GLYPH_METRICÚBbb)Ú	PUSH_FEATr=   )ÚPUSH_ATT_TO_GATTR_OBSr=   )ÚPUSH_ATT_TO_GLYPH_METRICr@   )ÚPUSH_ISLOT_ATTRr@   )ÚPUSH_IGLYPH_ATTRr@   )ÚPOP_RETr   )ÚRET_ZEROr   )ÚRET_TRUEr   )Ú	IATTR_SETr;   )Ú	IATTR_ADDr;   )Ú	IATTR_SUBr;   )ÚPUSH_PROC_STATEr   )ÚPUSH_VERSIONr   )ÚPUT_SUBSz>bHH)Ú	PUT_SUBS2r   )Ú	PUT_SUBS3r   )Ú	PUT_GLYPHr   )ÚPUSH_GLYPH_ATTRú>Hb)ÚPUSH_ATT_TO_GLYPH_ATTRrS   )ÚBITORr   )ÚBITANDr   )ÚBITNOTr   )ÚBITSETú>HH)ÚSET_FEATr=   c           	      ó>  — t        | «      }d}g }||k  �rt        | ||dz    «      }|t        t        «      kD  r
t        d   }n	t        |   }|dz  }|d   dk7  r||k\  r|S |d   dk(  rt        | |   «      }d|z  }|dz  }n|d   dk(  rd}n|d   }|dk(  r|j                  |d   «       Œ›t	        j
                  || |d  «      }|j                  |d   dz   dj                  t        t        |«      «      z   dz   «       |t	        j                  |«      z  }||k  r�Œ|S )	Nr   r   r3   ú%dBÚ ú(z, ú))
Úlenr   Ú
aCode_infoÚappendÚstructÚunpack_fromÚjoinÚmapÚstrÚcalcsize)	ÚaCodeÚcodelenÚpcÚresÚopcodeÚinstrÚcountÚfmtÚparmss	            ú]/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/fontTools/ttLib/tables/S__i_l_f.pyÚdisassemblers   É   s5  € Ü�%‹j€GØ	
€BØ
€CØ
ˆw‹,Ü˜˜r B¨¡FÐ+Ó,ˆØ”Cœ
“OÒ#Ü˜q‘M‰Eä˜vÑ&ˆEØ
ˆa‰ˆØ�‰8�qŠ=˜R 7š]ØˆJØ�‰8�rŠ>Ü˜E "™IÓ&ˆEØ˜%‘-ˆCØ�!‰G‰BØ�1‰X˜Š]Ø‰Cà˜‘(ˆCØ�"Š9Ø�J‰J�u˜Q‘xÔ ØÜ×"Ñ" 3¨¨b¨c¨
Ó3ˆØ�
‰
�5˜‘8˜c‘> D§I¡I¬c´#°u«oÓ$>Ñ>ÀÑDÔEØ
Œf�o‰o˜cÓ"Ñ"ˆð- ˆwŒ,ð. €Jó    z^\s*([^(]+)\s*(?:\(([^)]+)\))?c                 ó&  — d}| D �]  }t         j                  |«      }|r|j                  d«      t        vrŒ3t        |j                  d«         \  }}|t	        j
                  d|«      z  }|j                  d«      sŒy|dk(  rŒt        j                  d|j                  d«      «      D �cg c]  }t        |«      ‘Œ }}|dk(  r,t        |«      }|t	        j
                  d|dz   z  |g|¢­Ž z  }Œë|t	        j
                  |g|¢­Ž z  }�Œ |S c c}w )	Nrt   r   r   é   r   z,\s*r3   r\   )
ÚinstreÚmatchÚgroupÚ	aCode_maprc   ÚpackÚreÚsplitÚintr`   )	Úinstrsrl   ÚinstÚmrm   ÚparmfmtÚxrq   Úls	            rr   Úassembler…   ê   sú   € Ø
€CØó 4ˆÜ�L‰L˜ÓˆÙ˜Ÿ™ ›
¤iÑ/ØÜ# A§G¡G¨A£JÑ/‰ˆ�ØŒv�{‰{˜3 Ó'Ñ'ˆØ�7‰7�1�:Ø˜!Š|ØÜ%'§X¡X¨g°q·w±w¸q³zÓ%BÖC ”S˜•VÐCˆEÐCØ˜"Š}Ü˜“J�Ø”v—{‘{ E¨Q°©U¡O°aÐ@¸%Ò@Ñ@‘à”v—{‘{ 7Ð3¨UÒ3Ñ3’ð4ð €Jùò Ds   Â+Dc                 óê   — |j                  | «       |j                  «        t        |«      D ]#  }|j                  |«       |j                  «        Œ% |j	                  | «       |j                  «        y ©N)ÚbegintagÚnewliners   ÚwriteÚendtag)ÚtagÚwriterr   r„   s       rr   Ú	writecoderŽ   þ   sY   € Ø
‡O�O�CÔØ
‡N�NÔÜ˜Ó ò ˆØ�‰�QŒØ�‰Õðð ‡M�M�#ÔØ
‡N�NÕrt   c                 ó´   — g }t        | «      j                  d«      D ]/  }|j                  «       }t        |«      sŒ|j	                  |«       Œ1 t        |«      S )Nú
)Úcontent_stringr}   Ústripr`   rb   r…   )Úcontentrl   Úes      rr   Úreadcoder•     sR   € Ø
€CÜ˜GÓ$×*Ñ*¨4Ó0ò ˆØ�G‰G‹IˆÜ�1ŒvØØ�
‰
�1�ð	ô
 �C‹=Ðrt   )	ÚflagsÚextraAscentÚextraDescentÚ
maxGlyphIDÚ
numLigCompÚnumUserDefnÚmaxCompPerLigÚ	directionÚlbGID)ÚiSubstÚiPosÚiJustÚiBidi)ÚmaxPreContextÚmaxPostContext)Ú
attrPseudoÚattrBreakWeightÚattrDirectionalityÚattrMirroringÚattrSkipPassesÚattCollisions)r–   ÚmaxRuleLoopÚmaxRuleContextÚ	maxBackupÚminRulePreContextÚmaxRulePreContextÚcollisionThreshold)ÚnumRowsÚnumTransitionalÚ
numSuccessÚ
numColumnsc           
      óž   — t        |D �cg c]  }|t        ||«      f‘Œ c}«      } |j                  | fi |¤Ž |j                  «        y c c}w r‡   )ÚdictÚgetattrÚ	simpletagr‰   )rŒ   Úselfr�   ÚattrkeysÚkÚattrss         rr   Úwritesimpler½   3  sG   € Ü°Ö:¨A�1”g˜d AÓ&Ò'Ò:Ó;€EØ€F×Ñ�SÑ"˜EÒ"Ø
‡N�NÕùò ;s   ŠA
c                 ó`   — |D ])  }||v sŒt        | |t        t        ||   «      «      «       Œ+ y r‡   )Úsetattrr~   r   )r¹   r¼   Ú	attr_listr»   s       rr   Ú	getSimplerÁ   9  s2   € Øò 6ˆØ�Š:Ü�D˜!œS¤¨%°©(Ó!3Ó4Õ5ñ6rt   c                 ó`   — d}| D ]  }t        |t        «      rŒ||z  }Œ |j                  «       S )Nr]   )Ú
isinstanceÚtupler’   )Úcontentsrl   Úelements      rr   r‘   r‘   ?  s:   € Ø
€CØò ˆÜ�gœuÔ%ØØˆw‰‰ðð �9‰9‹;Ðrt   c                 óî   — d}|D ]>  }t        |«      |kD  r&| j                  |d d «       | j                  «        d}||dz   z  }Œ@ t        |«      r%| j                  |d d «       | j                  «        y y )Nr]   r3   ú )r`   rŠ   r‰   )r�   ÚdatÚlengthÚcurrlineÚds        rr   ÚwraplinerÍ   H  s{   € Ø€HØò ˆÜˆx‹=˜6Ò!Ø�L‰L˜ # 2˜Ô'Ø�N‰NÔØˆHØ�A˜‘GÑ‰ðô ˆ8„}Ø�‰�X˜c˜r�]Ô#Ø�‰Õð rt   c                   ó   — e Zd Zy)Ú_ObjectN)Ú__name__Ú
__module__Ú__qualname__© rt   rr   rÏ   rÏ   U  s   „ Ørt   rÏ   c                   ó0   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zy)	Útable_S__i_l_fzhGraphite Rules table

    See also https://graphite.sil.org/graphite_techAbout#graphite-font-tables
    Nc                 óR   — t         j                   j                  | |«       g | _        y r‡   )r   Ú__init__Úsilfs)r¹   rŒ   s     rr   r×   ztable_S__i_l_f.__init___  s   € Ü×!Ñ!×*Ñ*¨4°Ô5Øˆ�
rt   c                 ó  — t        j                  t        || «       t        t	        | j
                  d¬«      «      | _        | j
                  dk\  rRt        j                  |«      \  }| _        t        j                  t        || «       t        j                  t        «      }ny| j
                  dk  r/t        j                  d|dd «      | _        d| _        d| _        d	}n;d| _        t        j                  t        || «       t        j                  t        «      }t        j                  d
| j                  z  ||d  «      }|D ]G  }t!        «       }| j"                  j%                  |«       |j'                  ||d  || j
                  «       ŒI y )Né   ©ÚprecisionBitsç      @ç      @r   é   é   r   é   ú>%dL)r   Úunpack2ÚSilf_hdr_formatÚfloatr   Úversionr	   Ú
decompressÚschemeÚSilf_hdr_format_3rh   rc   ÚunpackÚnumSilfÚcompilerVersionrd   ÚSilfrØ   rb   Ú	decompile)r¹   ÚdataÚttFontÚbaseÚsilfoffsetsÚoffsetÚss          rr   rî   ztable_S__i_l_f.decompilec  s3  € Ü�‰œ¨¨tÔ4ÜÔ.¨t¯|©|È2ÔNÓOˆŒØ�<‰<˜3ÒÜ")×"4Ñ"4°TÓ":ÑˆT�4”;Ü�O‰OÔ-¨t°TÔ:Ü×#Ñ#Ô$5Ó6‰DØ�\‰\˜CÒÜ!Ÿ=™=¨¨t°A°a¨yÓ9ˆDŒLØˆDŒKØ#$ˆDÔ Ø‰DàˆDŒKÜ�O‰OÔ-¨t°TÔ:Ü×#Ñ#Ô$5Ó6ˆDä×(Ñ(¨&°4·<±<Ñ*?À$ÀtÀuÀ+ÓNˆØ!ò 	=ˆFÜ“ˆAØ�J‰J×Ñ˜aÔ Ø�K‰K˜˜V˜W˜ v¨t¯|©|Õ<ñ	=rt   c                 ó`  — t        | j                  «      | _        | j                  dk  r?t	        j
                  t        | «      }|t        j
                  d| j                  d«      z  }nt	        j
                  t        | «      }t        |«      d| j                  z  z   }d}| j                  D ]J  }|t        j
                  d|«      z  }|j                  || j                  «      }|t        |«      z  }||z  }ŒL | j                  dk\  r#t        j                  | j                  ||z   «      S ||z   S )NrÞ   rY   r   rß   rt   r   rÝ   )r`   rØ   rë   ræ   r   r{   rä   rc   ré   Úcompiler	   Úcompressrè   )r¹   rð   Úhdrró   rï   rô   Úsubdatas          rr   rö   ztable_S__i_l_f.compilez  sû   € Ü˜4Ÿ:™:“ˆŒØ�<‰<˜#ÒÜ—,‘,œ°Ó5ˆCØ”6—;‘;˜u d§l¡l°AÓ6Ñ6‰Cä—,‘,Ô0°$Ó7ˆCÜ�S“˜A §¡Ñ,Ñ,ˆØˆØ—‘ò 	ˆAØ”6—;‘;˜t VÓ,Ñ,ˆCØ—i‘i ¨¯©Ó5ˆGØ”c˜'“lÑ"ˆFØ�G‰O‰Dð		ð
 �<‰<˜3ÒÜ×#Ñ# D§K¡K°°t±Ó<Ð<Ø�T‰zÐrt   c                 ó¬  — |j                  d«       |j                  «        |j                  d| j                  | j                  | j
                  ¬«       |j                  «        | j                  D ]a  }|j                  d«       |j                  «        |j                  ||| j                  «       |j                  d«       |j                  «        Œc y )Nz/Attributes starting with _ are informative onlyræ   )ræ   rì   ÚcompressionSchemeÚsilf)
Úcommentr‰   r¸   ræ   rì   rè   rØ   rˆ   ÚtoXMLr‹   )r¹   r�   rð   rô   s       rr   rþ   ztable_S__i_l_f.toXMLŒ  s¥   € Ø�‰ÐHÔIØ�‰ÔØ×ÑØØ—L‘LØ ×0Ñ0Ø"Ÿk™kð	 	ô 	
ð 	�‰ÔØ—‘ò 	ˆAØ�O‰O˜FÔ#Ø�N‰NÔØ�G‰G�F˜F D§L¡LÔ1Ø�M‰M˜&Ô!Ø�N‰NÕñ	rt   c                 óˆ  — |dk(  rUt        t        |d   «      «      | _        t        t        |d   «      «      | _        t        t        |d   «      «      | _        y |dk(  rct        «       }| j                  j                  |«       |D ]8  }t        |t        «      sŒ|\  }}}|j                  ||||| j                  «       Œ: y y )Nræ   rû   rì   rü   )r~   r   rè   rå   ræ   rì   rí   rØ   rb   rÃ   rÄ   ÚfromXML)	r¹   Únamer¼   r“   rð   rô   rÆ   rŒ   Ú
subcontents	            rr   r   ztable_S__i_l_f.fromXML�  s¹   € Ø�9ÒÜœh uÐ-@Ñ'AÓBÓCˆDŒKÜ ¤¨%°	Ñ*:Ó!;Ó<ˆDŒLÜ#&¤x°Ð6GÑ0HÓ'IÓ#JˆDÔ ØØ�6Š>Ü“ˆAØ�J‰J×Ñ˜aÔ Ø"ò H�Ü! '¬5Ô1ØØ)0Ñ&��U˜JØ—	‘	˜#˜u j°&¸$¿,¹,ÕGñ	Hð rt   r‡   ©	rÐ   rÑ   rÒ   Ú__doc__r×   rî   rö   rþ   r   rÓ   rt   rr   rÕ   rÕ   Y  s!   „ ñó
ò=ò.ò$ó"Hrt   rÕ   c                   ó6   — e Zd ZdZd„ Zdd„Zdd„Zdd„Zdd„Zy)	rí   zA particular Silf subtablec                 óJ   — g | _         g | _        g | _        g | _        i | _        y r‡   )ÚpassesÚ
scriptTagsÚcritFeaturesÚjLevelsÚpMap©r¹   s    rr   r×   zSilf.__init__°  s&   € ØˆŒØˆŒØˆÔØˆŒØˆ�	rt   c           
      óœ  — |dk\  rCt        j                  t        || «      \  }}t        t	        | j
                  d¬«      «      | _        t        j                  t        || «      \  }}t        | j                  «      D ]C  }t        j                  t        |t        «       «      \  }}| j                  j                  |«       ŒE t        j                  t        || «      \  }}| j                  r(t        j                   d| j                  z  |«      | _        || j                  dz  dz   d  }t        j                   d|«      \  }|rRt        ddd|z  z   d«      D �cg c]0  }t        j$                  d	|||dz    «      d
   j'                  d«      ‘Œ2 c}| _        |dd|z  z   d  }t        j$                  d|d d «      \  | _        | j,                  r>t        j$                  d| j,                  dz   z  |ddd| j,                  z  z    «      | _        |dd| j,                  z  z   d  }t        j$                  d|d d «      \  }	t        |	«      D ]ž  }
|dk\  r3t        j$                  t0        |dd|
z  z   dd|
z  z    t        «       «      }n2t        j$                  t2        |dd|
z  z   dd|
z  z    t        «       «      }|j5                  |j6                  «      | j8                  |j:                  <   Œ  |dd|	z  z   d  }t        j<                  t        «      t        j<                  t        «      | j                  z  z   t        j<                  t        «      z   d| j                  z  z   dz   dz   d|z  z   dz   d| j,                  z  z   dz   d|	z  z   }|dk\  r|t        j<                  t        «      z  }t?        «       | _         | j@                  jC                  |||«       t        | j,                  «      D ]`  }
tE        «       }| jF                  j                  |«       |jC                  || j.                  |
   |z
  | j.                  |
dz      |z
   ||«       Œb y c c}w )NrÞ   rÚ   rÛ   ú>%dHrv   r   r   rß   Ú4sr   Úasciir   râ   rà   rá   é   é   )$r   rã   ÚSilf_part1_format_v3rå   r   ÚruleVersionÚSilf_part1_formatÚrangeÚ
numJLevelsÚSilf_justify_formatrÏ   r
  rb   ÚSilf_part2_formatÚnumCritFeaturesrc   rd   r	  rê   Údecoder  rž   Ú	numPassesÚoPassesÚSilf_pseudomap_formatÚSilf_pseudomap_format_hÚgetGlyphNameÚnPseudor  Úunicoderh   ÚClassesÚclassesrî   ÚPassr  )r¹   rï   rð   ræ   Ú_ÚjlevelÚjÚnumScriptTagrƒ   Ú	numPseudoÚiÚpseudoÚcurrposÚps                 rr   rî   zSilf.decompile·  s(  € Ø�cŠ>Ü—o‘oÔ&:¸DÀ$ÓG‰GˆAˆtÜ$Ü! $×"2Ñ"2À"ÔEó ˆDÔô —/‘/Ô"3°T¸4Ó@‰ˆˆ4Ü˜DŸO™OÓ,ò 	#ˆFÜ—o‘oÔ&9¸4ÄÃÓK‰GˆAˆtØ�L‰L×Ñ Õ"ð	#ô —/‘/Ô"3°T¸4Ó@‰ˆˆ4Ø×ÒÜ &× 2Ñ 2Ø˜$×.Ñ.Ñ.°ó!ˆDÔð �D×(Ñ(¨1Ñ,¨qÑ0Ð2Ð3ˆÜ ×,Ñ,¨S°$Ó7‰ˆÙô ˜q ! a¨,Ñ&6Ñ"6¸Ó:öàô —‘˜d D¨¨Q°©U OÓ4°QÑ7×>Ñ>¸wÕGòˆDŒOð �A˜˜LÑ(Ñ(Ð*Ð+ˆÜŸ™ d¨D°°!¨HÓ5‰ˆŒØ�>Š>Ü!Ÿ=™=Ø˜4Ÿ>™>¨AÑ-Ñ.°°a¸!¸aÀ$Ç.Á.Ñ>PÑ:PÐ1QóˆDŒLð �A˜˜DŸN™NÑ*Ñ*Ð,Ð-ˆÜ—}‘} T¨4°°¨8Ó4‰ˆÜ�yÓ!ò 		LˆAØ˜#Š~Ü Ÿ™Ü)¨4°°A¸±E±	¸BÀÀQÁ¹JÐ+GÌËó‘ô !Ÿ™Ü+¨T°!°a¸!±e±)¸bÀ1ÀqÁ5¹jÐ-IÌ7Ë9ó�ð )/×(;Ñ(;¸F¿N¹NÓ(KˆD�I‰I�f—n‘nÒ%ð		Lð �A˜˜I™Ñ%Ð'Ð(ˆä×ÑÔ.Ó/Ü×ÑÔ2Ó3°d·o±oÑEñFä×ÑÔ0Ó1ñ2ð �$×&Ñ&Ñ&ñ'ð ñ	ð
 ñð �,Ññð ñð �$—.‘.Ñ ñ!ð ñ	ð �)‰mñ
ð 	ð �cŠ>Ø”w×'Ñ'Ô(<Ó=Ñ=ˆGÜ“yˆŒØ�‰×Ñ˜t V¨WÔ5Ü�t—~‘~Ó&ò 	ˆAÜ“ˆAØ�K‰K×Ñ˜qÔ!Ø�K‰KØ�T—\‘\ !‘_ wÑ.°·±¸aÀ!¹eÑ1DÀwÑ1NÐOØØõñ	ùòQs   Å5Q	c           	      óô  — t        | j                  «      | _        t        | j                  «      | _        t        | j
                  «      | _        t        | j                  «      }d}|dk\  rt        j                  t        «      }nd}|t        j                  t        | «      z  }| j                  D ]  }|t        j                  t        |«      z  }Œ! |t        j                  t        | «      z  }| j                  r0|t        j                  d| j                   z  g| j
                  ¢­Ž z  }|t        j                  ddt        | j"                  «      «      z  }t        | j"                  «      rP| j"                  D �cg c]'  }t        j                  d|j%                  d«      «      ‘Œ) }}|dj'                  |«      z  }|t        j                  d| j(                  «      z  }t        |«      | _        t-        j.                  |d	«      }	|t        |«      z   d
| j                  dz   z  z   }
|
t        |	«      z   | _        t3        | j                  j5                  «       «      D ]5  \  }}|	t        j                  |dk\  rdnd||j7                  |«      «      z  }	Œ7 |	| j8                  j;                  ||«      z  }	|
t        |	«      z  }
d}d}t=        | j                  «      D ]B  \  }}|
t        |«      z   }|t        j                  d|«      z  }||j;                  |||«      z  }ŒD |t        j                  d|
t        |«      z   «      z  }|dk\  rt        j                  t        | «      }nd}||z   |z   |	z   |z   S c c}w )Nrt   rÞ   r   r  r;   r  r  r   rà   rß   r   z>LHrY   r   )r`   r  r  r
  r  r	  r  r  r   rh   r  r{   r  r  r  rc   ÚnumCritFeatursr  Úencodere   rž   Ú
passOffsetr	   ÚbininfoÚpseudosOffsetÚsortedÚitemsÚ
getGlyphIDr$  rö   Ú	enumerate)r¹   rð   ræ   r*  rï   Ú	hdroffsetr(  rƒ   ÚtdataÚdata1r-  Úur.  Údata2Údataor+  rñ   Údata3s                     rr   rö   zSilf.compileú  só  € Ü˜TŸ[™[Ó)ˆŒÜ˜dŸl™lÓ+ˆŒÜ" 4×#4Ñ#4Ó5ˆÔÜ˜Ÿ	™	“Nˆ	ØˆØ�cŠ>Ü×(Ñ(Ô)=Ó>‰IàˆIØ”—‘Ô.°Ó5Ñ5ˆØ—‘ò 	9ˆAØ”G—L‘LÔ!4°aÓ8Ñ8‰Dð	9à”—‘Ô.°Ó5Ñ5ˆØ×ÒØ”F—K‘K ¨$×*=Ñ*=Ñ!=ÐSÀ×ARÑARÒSÑSˆDØ”—‘˜D !¤S¨¯©Ó%9Ó:Ñ:ˆÜˆt�‰ÔØCGÇ?Á?ÖS¸a”V—[‘[  q§x¡x°Ó'8Õ9ÐSˆEÐSØ�C—H‘H˜U“OÑ#ˆDØ”—‘˜D $§*¡*Ó-Ñ-ˆÜ˜d›)ˆŒä—‘ 	¨1Ó-ˆØœc $›iÑ'¨!¨t¯~©~ÀÑ/AÑ*BÑBˆØ$¤s¨5£zÑ1ˆÔÜ˜4Ÿ9™9Ÿ?™?Ó,Ó-ò 	‰DˆAˆqØ”V—[‘[Ø! Sš.‘¨e°a¸×9JÑ9JÈ1Ó9Móñ ‰Eð	ð 	�—‘×%Ñ% f¨gÓ6Ñ6ˆØ”3�u“:ÑˆØˆØˆÜ˜dŸk™kÓ*ò 	6‰DˆAˆqØœS ›ZÑ'ˆDØ”V—[‘[  tÓ,Ñ,ˆEØ�Q—Y‘Y˜v t¨WÓ5Ñ5‰Eð	6ð 	”—‘˜T 7¬S°«ZÑ#7Ó8Ñ8ˆà�cŠ>Ü—L‘LÔ!5°tÓ<‰EàˆEØ�t‰|˜eÑ# eÑ+¨eÑ3Ð3ùò5 Ts   Å;,M5c                 ó0  — |dk\  r-|j                  d| j                  ¬«       |j                  «        t        d| |gt        ¢­Ž  t        d| |gt
        ¢­Ž  t        d| |gt        ¢­Ž  t        d| |gt        ¢­Ž  t        | j                  «      rÃ|j                  d«       |j                  «        t        j                  t        «      \  }}}t        | j                  «      D ]L  \  }}t        |D �	cg c]  }	|	t!        ||	«      f‘Œ c}	«      }
 |j                   di |
¤Ž |j                  «        ŒN |j#                  d«       |j                  «        t        | j$                  «      rŠ|j                  d	«       |j                  «        |j'                  d
j)                  t+        t,        | j$                  «      «      «       |j                  «        |j#                  d	«       |j                  «        t        | j.                  «      r||j                  d«       |j                  «        |j'                  d
j)                  | j.                  «      «       |j                  «        |j#                  d«       |j                  «        | j0                  rš|j                  d«       |j                  «        t3        | j0                  j5                  «       «      D ]2  \  }	}|j                  dt7        |	«      |¬«       |j                  «        Œ4 |j#                  d«       |j                  «        | j8                  j;                  |||«       t        | j<                  «      r·|j                  d«       |j                  «        t        | j<                  «      D ]\  \  }}|j                  d|¬«       |j                  «        |j;                  |||«       |j#                  d«       |j                  «        Œ^ |j#                  d«       |j                  «        y y c c}	w )NrÞ   ræ   )r  ÚinfoÚpassindexesÚcontextsÚ
attributesÚjustificationsr	  rÈ   r  Ú	pseudoMapr,  )r"  r,  r  Úpass©Ú_index)Újustify)r¸   r  r‰   r½   Ú
attrs_infoÚattrs_passindexesÚattrs_contextsÚattrs_attributesr`   r
  rˆ   r   Ú	getformatr  r8  r¶   r·   r‹   r	  rŠ   re   rf   rg   r  r  r5  r6  Úhexr$  rþ   r  )r¹   r�   rð   ræ   ÚjformatÚjnamesÚjfixesr+  r(  r»   r¼   Úvr.  s                rr   rþ   z
Silf.toXML(  s  € Ø�cŠ>Ø×Ñ˜Y°D×4DÑ4DÐÔEØ�N‰NÔÜ�F˜D &Ð6¬:Ó6Ü�M 4¨ÐDÔ2CÓDÜ�J  fÐ>¬~Ó>Ü�L $¨ÐBÔ1AÓBÜˆt�|‰|ÔØ�O‰OÐ,Ô-Ø�N‰NÔÜ&-×&7Ñ&7Ô8KÓ&LÑ#ˆG�V˜VÜ! $§,¡,Ó/ò !‘��1Ü¸&ÖA°Q˜q¤'¨!¨Q£-Ò0ÒAÓB�Ø �× Ñ Ñ4¨eÒ4Ø—‘Õ ð!ð �M‰MÐ*Ô+Ø�N‰NÔÜˆt× Ñ Ô!Ø�O‰O˜NÔ+Ø�N‰NÔØ�L‰L˜Ÿ™¤#¤c¨4×+<Ñ+<Ó"=Ó>Ô?Ø�N‰NÔØ�M‰M˜.Ô)Ø�N‰NÔÜˆt�‰ÔØ�O‰O˜LÔ)Ø�N‰NÔØ�L‰L˜Ÿ™ $§/¡/Ó2Ô3Ø�N‰NÔØ�M‰M˜,Ô'Ø�N‰NÔØ�9Š9Ø�O‰O˜KÔ(Ø�N‰NÔÜ˜tŸy™yŸ™Ó0Ó1ò !‘��1Ø× Ñ  ´3°q³6À!Ð ÔDØ—‘Õ ð!ð �M‰M˜+Ô&Ø�N‰NÔØ�‰×Ñ˜6 6¨7Ô3Üˆt�{‰{ÔØ�O‰O˜HÔ%Ø�N‰NÔÜ! $§+¡+Ó.ò !‘��1Ø—‘ ¨q�Ô1Ø—‘Ô Ø—‘˜ ¨Ô0Ø—‘˜fÔ%Ø—‘Õ ð!ð �M‰M˜(Ô#Ø�N‰NÕð ùò9 Bs   Ã2P
c           	      ó”  — |dk(  r)t        t        |j                  dd«      «      «      | _        |dk(  rt	        | |gt
        ¢­Ž  y |dk(  rt	        | |gt        ¢­Ž  y |dk(  rt	        | |gt        ¢­Ž  y |dk(  rt	        | |gt        ¢­Ž  y |dk(  rx|D ]r  }t        |t        «      sŒ|\  }}}|d	k(  sŒ t        «       }	|j                  «       D ]  \  }
}t        |	|
t        |«      «       Œ | j                  j!                  |	«       Œt y |d
k(  rJg | _        t%        |«      }| j"                  j'                  t)        t        |j+                  «       «      «       y |dk(  rCg | _        t%        |«      }|j+                  «       D ]  }| j,                  j!                  |«       Œ y |dk(  rNi | _        |D ]A  }t        |t        «      sŒ|\  }}}|dk(  rt        |d   d«      }
|d   }| j.                  
<   ŒC y |dk(  rMt1        «       | _        |D ]8  }t        |t        «      sŒ|\  }}}| j2                  j5                  |||||«       Œ: y |dk(  r€|D ]z  }t        |t        «      sŒ|\  }}}|dk(  sŒ t7        «       }|D ]1  }t        |t        «      sŒ|j5                  |d   |d   |d   ||«       Œ3 | j8                  j!                  |«       Œ| y y )Nræ   r  Ú0rA  rB  rC  rD  rE  rJ  r	  r  rF  r,  r"  rÚ   r$  r  rG  r   r   rv   )rå   r   Úgetr  rÁ   rK  rL  rM  rN  rÃ   rÄ   rÏ   r6  r¿   r~   r
  rb   r	  r‘   Úextendrf   r}   r  r  r#  r$  r   r%  r  )r¹   r  r¼   r“   rð   ræ   rÆ   rŒ   r  r(  r»   rT  Únr.  r”   s                  rr   r   zSilf.fromXML]  sÏ  € Ø�9ÒÜ$¤X¨e¯i©i¸ÀsÓ.KÓ%LÓMˆDÔØ�6Š>Ü�d˜EÐ/¤JÔ/Ø�]Ò"Ü�d˜EÐ6Ô$5Ô6Ø�ZÒÜ�d˜EÐ3¤NÔ3Ø�\Ò!Ü�d˜EÐ5Ô$4Ô5ØÐ%Ò%Ø"ò +�Ü! '¬5Ô1ØØ+2Ñ(��e˜ZØ˜)Ó#Ü›	�AØ %§¡£ò .™˜˜1Ü  1¤c¨!£fÕ-ð.à—L‘L×'Ñ'¨Õ*ñ+ð �^Ò#Ø "ˆDÔÜ$ WÓ-ˆGØ×Ñ×$Ñ$¤S¬¨g¯m©m«oÓ%>Õ?Ø�\Ò!Ø ˆDŒOÜ$ WÓ-ˆGØ—]‘]“_ò *�Ø—‘×&Ñ& qÕ)ñ*à�[Ò ØˆDŒIØ"ò !�Ü! '¬5Ô1ØØ+2Ñ(��e˜ZØ˜(’?Ü˜E )Ñ,¨bÓ1�AØ˜h™�AØ �—	‘	˜!’ñ!ð �YÒÜ"›9ˆDŒLØ"ò N�Ü! '¬5Ô1ØØ)0Ñ&��U˜JØ—‘×$Ñ$ S¨%°¸VÀWÕMñ	Nð
 �XÒØ"ò 
*�Ü! '¬5Ô1ØØ)0Ñ&��U˜JØ˜&“=Ü›�AØ'ò E˜Ü)¨!¬UÔ3Ø$ØŸ	™	 ! A¡$¨¨!©¨a°©d°F¸GÕDðEð —K‘K×&Ñ& qÕ)ñ
*ð rt   N©g       @r  rÓ   rt   rr   rí   rí   ­  s"   „ Ù$òóAóF,4ó\3ôj:*rt   rí   c                   ó2   — e Zd Zd„ Zdd„Zdd„Zdd„Zdd„Zy)r#  c                 ó    — g | _         g | _        y r‡   )ÚlinearÚ	nonLinearr  s    rr   r×   zClasses.__init__›  s   € ØˆŒØˆ�rt   c                 ó¾  ‡— t        j                  t        || «       |dk\  r:t        j                  d| j
                  dz   z  |ddd| j
                  z  z    «      }n9t        j                  d| j
                  dz   z  |ddd| j
                  z  z    «      }t        |d | j                   |d| j                  dz    «      D ]I  \  }}| j                  j                  ˆfd	„t        j                  d||z
  dz  z  ||| «      D «       «       ŒK t        || j                  | j
                   || j                  dz   | j
                  dz    «      D ]‡  \  }}t        |dz   |d«      D �cg c]  }t        j                  d
|||dz    «      ‘Œ  }}t        |D �cg c]  }‰j                  |d   «      |d   f‘Œ c}«      }	| j                  j                  |	«       Œ‰ y c c}w c c}w )Nç      @râ   r   rß   rá   r  rà   rv   c              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wr‡   )r   )Ú.0rƒ   rð   s     €rr   ú	<genexpr>z$Classes.decompile.<locals>.<genexpr>ª  s$   øè ø€ ò àð ×#Ñ# A×&ñùs   ƒrY   r   )r   rã   ÚSilf_classmap_formatrc   rê   ÚnumClassÚzipÚ	numLinearr]  rb   r  r¶   r   r^  )
r¹   rï   rð   ræ   ÚoClassesrô   r”   rƒ   Ú	nonLinidsÚnonLins
     `       rr   rî   zClasses.decompileŸ  sÓ  ø€ Ü�‰Ô,¨d°DÔ9Ø�cŠ>Ü—}‘}Ø˜4Ÿ=™=¨1Ñ,Ñ-°°Q¸¸QÀÇÁÑ=NÑ9NÐ0Oó‰Hô —}‘}Ø˜4Ÿ=™=¨1Ñ,Ñ-°°Q¸¸QÀÇÁÑ=NÑ9NÐ0OóˆHô ˜Ð!1 4§>¡>Ð2°H¸QÀÇÁÐRSÑASÐ4TÓUò 	‰DˆAˆqØ�K‰K×Ñó äŸ™¨°1°q±5¸A±+Ñ(>ÀÀaÈÀÓKôõ ð	ô
 Ø�T—^‘^ d§m¡mÐ4Ø�T—^‘^ aÑ'¨$¯-©-¸!Ñ*;Ð<ó
ò 	*‰DˆAˆqô
 @EÀQÈÁUÈAÈqÓ?QöØ:;”—‘˜e T¨!¨a°!©e _Õ5ðˆIð ô ÀiÖPÀ˜F×/Ñ/°°!±Ó5°q¸±tÒ<ÒPÓQˆFØ�N‰N×!Ñ! &Õ)ñ	*ùòùò Qs   Å"#GÆ G
c                 ó€  — d}g }|dk\  r2ddt        | j                  «      t        | j                  «      z   z  z   }n1ddt        | j                  «      t        | j                  «      z   z  z   }| j                  D ]b  }|j                  t        |«      |z   «       |D �cg c]  }|j	                  |«      ‘Œ }}|t        j                  dt        |«      z  g|¢­Ž z  }Œd | j                  D ]³  }|j                  t        |«      |z   «       |j                  «       D �cg c]  }|j	                  |d   «      |d	   f‘Œ }}|t        j                  t        |«      «      z  }|dj                  t        |«      D �cg c]  }t        j                  d
g|¢­Ž ‘Œ c}«      z  }Œµ |j                  t        |«      |z   «       t        |«      d	z
  | _        t        | j                  «      | _        t        j                  t        | «      t        j                  |dk\  rdndt        |«      z  g|¢­Ž z   |z   S c c}w c c}w c c}w )Nrt   r`  rá   rß   rà   rv   r  r   r   rY   râ   )r`   r]  r^  rb   r7  rc   r{   r6  r	   r3  re   r5  re  rg  r   rd  )	r¹   rð   ræ   rï   rh  ró   r„   rƒ   Úgss	            rr   rö   zClasses.compile¸  sù  € ØˆØˆØ�cŠ>Ø˜œc $§+¡+Ó.´°T·^±^Ó1DÑDÑEÑE‰Fà˜œc $§+¡+Ó.´°T·^±^Ó1DÑDÑEÑEˆFØ—‘ò 	8ˆAØ�O‰OœC ›I¨Ñ.Ô/Ø01Ö2¨1�&×#Ñ# AÕ&Ð2ˆBÐ2Ø”F—K‘K ¬#¨a«&¡Ð7°BÒ7Ñ7‰Dð	8ð —‘ò 	KˆAØ�O‰OœC ›I¨Ñ.Ô/Ø;<¿7¹7»9ÖE°a�6×$Ñ$ Q q¡TÓ*¨A¨a©DÒ1ÐEˆBÐEØ”G—O‘O¤C¨£GÓ,Ñ,ˆDØ�C—H‘H¼fÀR»jÖI¸œfŸk™k¨%Ð4°!Ô4ÒIÓJÑJ‰Dð		Kð
 	�‰œ˜D›	 FÑ*Ô+Ü˜H›¨Ñ)ˆŒÜ˜TŸ[™[Ó)ˆŒä�L‰LÔ-¨tÓ4Ü�k‰kØ# sšN‘&°¼#¸h»-ÑGðØKSòñð ñ	ð	
ùò 3ùò FùâIs   ÂH1Ä H6Å8H;c                 ó¾  — |j                  d«       |j                  «        |j                  d«       |j                  «        t        | j                  «      D ]U  \  }}|j                  d|¬«       |j                  «        t	        ||«       |j                  d«       |j                  «        ŒW |j                  d«       |j                  «        |j                  d«       |j                  «        t        | j                  «      D ]’  \  }}|j                  d|| j                  z   ¬«       |j                  «        |j                  «       D ])  \  }}|j                  d||¬«       |j                  «        Œ+ |j                  d«       |j                  «        Œ” |j                  d«       |j                  «        |j                  d«       |j                  «        y )	Nr$  ÚlinearClassesr]  rH  ÚnonLinearClassesr^  rf   )ÚglyphÚindex)
rˆ   r‰   r8  r]  rÍ   r‹   r^  rg  r6  r¸   )r¹   r�   rð   ræ   r+  r„   ÚinpÚinds           rr   rþ   zClasses.toXMLÓ  sq  € Ø�‰˜	Ô"Ø�‰ÔØ�‰˜Ô(Ø�‰ÔÜ˜dŸk™kÓ*ò 	‰DˆAˆqØ�O‰O˜H¨QˆOÔ/Ø�N‰NÔÜ�V˜QÔØ�M‰M˜(Ô#Ø�N‰NÕð	ð 	�‰�oÔ&Ø�‰ÔØ�‰Ð*Ô+Ø�‰ÔÜ˜dŸn™nÓ-ò 	‰DˆAˆqØ�O‰O˜K°°D·N±NÑ0BˆOÔCØ�N‰NÔØŸG™G›Iò !‘��SØ× Ñ  ¨c¸Ð Ô=Ø—‘Õ ð!ð �M‰M˜+Ô&Ø�N‰NÕð	ð 	�‰Ð(Ô)Ø�‰ÔØ�‰�iÔ Ø�‰Õrt   c                 óÐ  — |dk(  rY|D ]S  }t        |t        «      sŒ|\  }}}|dk(  sŒ t        |«      j                  «       }	| j                  j                  |	«       ŒU y |dk(  rƒ|D ]}  }t        |t        «      sŒ|\  }}}|dk(  sŒ i }	|D ]<  }
t        |
t        «      sŒ|
\  }}}|dk(  sŒ t        t        |d   «      «      |	|d   <   Œ> | j                  j                  |	«       Œ y y )Nrn  r]  ro  r^  rf   rq  rp  )	rÃ   rÄ   r‘   r}   r]  rb   r~   r   r^  )r¹   r  r¼   r“   rð   ræ   rÆ   rŒ   r  r„   r”   Úsubsubcontents               rr   r   zClasses.fromXMLï  s  € Ø�?Ò"Ø"ò *�Ü! '¬5Ô1ØØ)0Ñ&��U˜JØ˜(“?Ü& zÓ2×8Ñ8Ó:�AØ—K‘K×&Ñ& qÕ)ñ*ð Ð'Ò'Ø"ò -�Ü! '¬5Ô1ØØ)0Ñ&��U˜JØ˜+Ó%Ø�AØ'ò N˜Ü)¨!¬UÔ3Ø$Ø45Ñ1˜˜U MØ %›<Ü03´H¸UÀ7¹^Ó4LÓ0M˜A˜e G™nÒ-ðNð —N‘N×)Ñ)¨!Õ,ñ-ð (rt   NrZ  ©rÐ   rÑ   rÒ   r×   rî   rö   rþ   r   rÓ   rt   rr   r#  r#  š  s   „ òó*ó2
ó6ô8-rt   r#  c                   ó2   — e Zd Zd„ Zdd„Zdd„Zdd„Zdd„Zy)r%  c                 ó‚   — i | _         g | _        g | _        g | _        g | _        d| _        g | _        g | _        g | _        y )Nrt   )	ÚcolMapÚrulesÚrulePreContextsÚruleSortKeysÚruleConstraintsÚpassConstraintsÚactionsÚ
stateTransÚstartStatesr  s    rr   r×   zPass.__init__	  sF   € ØˆŒØˆŒ
Ø!ˆÔØˆÔØ!ˆÔØ"ˆÔØˆŒØˆŒØˆÕrt   c           
      ó	  — t        j                  t        || «      \  }}t        j                  d|d d «      \  }}}}|dd  }t        |«      D ]Z  }t        j                  d|d|z  d|z  dz    «      \  }}}	t        ||dz   «      D ]   }
|	| j                  |j                  |
«      <   Œ" Œ\ |d|z  d  }t        j                  d| j                  dz   z  |«      }|dd| j                  z  z   d  }t        j                  d|d   z  |«      }t        ||dd  «      D ��cg c]
  \  }}||| ‘Œ c}}| _        |d|d   z  d  }t        j                  d	|d d «      \  | _        | _        | j                  | j                  z
  dz   }t        j                  d|z  |dd|dz  z    «      | _        |d|dz  z   d  }t        j                  d| j                  z  |d d| j                  z   «      | _        |d| j                  z  d  }t        j                  d
| j                  z  |d | j                   «      | _        || j                  d  }t        j                  d|d d «      \  | _        }t'        t        j                  d| j                  dz   z  |dd| j                  dz  z    «      «      }|d| j                  dz  z   d  }t'        t        j                  d| j                  dz   z  |d d| j                  dz  z    «      «      }|d| j                  z  dz   d  }t        | j(                  «      D ]r  }t+        d||| j,                  z  dz  |dz   | j,                  z  dz   «      }t.        j0                  dk7  r|j3                  «        | j4                  j7                  |«       Œt || j(                  | j,                  z  dz  dz   d  }|d | | _        ||d  }t        t;        |«      dz
  dd«      D ]  }||   dk(  sŒ||dz      ||<   Œ t        ||dd  «      D ��cg c]  \  }}||z
  dkD  r||| nd‘Œ c}}| _        ||d   d  }t        ||dd  «      D ��cg c]  \  }}||z
  dkD  r||| nd‘Œ c}}| _        ||d   d  }y c c}}w c c}}w c c}}w )Nz>4Hrá   ú>3Hrà   r   r  rv   r3   r;   r\   ú>BHé   é   ÚHÚbigr   rt   r]   ) r   rã   ÚSilf_pass_formatrc   rê   r  ry  r   rd   r³   rf  rz  r®   r¯   r�  ÚnumRulesr|  r{  r°   Úlistr²   r
   r´   ÚsysÚ	byteorderÚbyteswapr€  rb   r~  r`   r}  r  )r¹   rï   rð   ræ   r&  ÚnumRanger+  ÚfirstÚlastÚcolÚgÚoRuleMaprz  rô   r”   ÚnumStartStatesÚpConstraintÚoConstraintsÚoActionsÚas                       rr   rî   zPass.decompile  sì  € Ü—/‘/Ô"2°D¸$Ó?‰ˆˆ4Ü$Ÿm™m¨E°4¸¸°8Ó<Ñˆ�1�a˜Ø�A�BˆxˆÜ�x“ò 	:ˆAÜ!'§¡¨u°d¸1¸q¹5À1ÀqÁ5È1Á9Ð6MÓ!NÑˆU�D˜#Ü˜5 $¨¡(Ó+ò :�Ø69�—‘˜F×/Ñ/°Ó2Ò3ñ:ð	:ð �A˜‘L�NÐ#ˆÜ×%Ñ% v°·±À1Ñ1DÑ'EÈÓMˆØ�A˜˜DŸO™OÑ+Ñ+Ð-Ð.ˆÜ×"Ñ" F¨X°b©\Ñ$9¸DÓAˆÜ/2°8¸XÀaÀb¸\Ó/J×K¡V a¨�e˜A˜a’jÓKˆŒ
Ø�A˜ ™Ñ$Ð&Ð'ˆÜ;A¿=¹=ÈÈtÐTVÐUVÈxÓ;XÑ8ˆÔ	 Ô!7Ø×/Ñ/°$×2HÑ2HÑHÈ1ÑLˆÜ!Ÿ=™=Ø�nÑ$ t¨A°°NÀQÑ4FÑ0FÐ'Gó
ˆÔð �A˜¨Ñ*Ñ*Ð,Ð-ˆÜ"ŸM™MØ�d—m‘mÑ# dÐ+>¨Q°·±Ñ->Ð&?ó
ˆÔð �A˜Ÿ™Ñ%Ð'Ð(ˆÜ%Ÿ}™}Ø�T—]‘]Ñ" T¨/¨D¯M©MÐ%:ó 
ˆÔð �D—M‘M�OÐ$ˆÜ17·±¸uÀdÈ2ÈAÀhÓ1OÑ.ˆÔ	  +ÜÜ�M‰MØ˜4Ÿ=™=¨1Ñ,Ñ-°°Q¸¸T¿]¹]ÈQÑ=NÑ9NÐ0Oóó
ˆð
 �A˜Ÿ™¨Ñ)Ñ)Ð+Ð,ˆÜÜ�M‰M˜6 T§]¡]°QÑ%6Ñ7¸$Ð?VÀÀTÇ]Á]ÐUVÑEVÑAVÐ:WÓXó
ˆð �A˜Ÿ™Ñ%¨Ñ)Ð+Ð,ˆÜ�t×+Ñ+Ó,ò 	&ˆAÜØ�T˜!˜dŸo™oÑ-°Ñ1°Q¸±U¸d¿o¹oÑ4MÐPQÑ4QÐRóˆAô �}‰} Ò%Ø—
‘
”Ø�O‰O×"Ñ" 1Õ%ð	&ð �D×(Ñ(¨4¯?©?Ñ:¸QÑ>ÀÑBÐDÐEˆØ# L [Ð1ˆÔØ�K�LÐ!ˆÜ”s˜<Ó(¨1Ñ,¨b°"Ó5ò 	6ˆAØ˜A‰ !Ó#Ø".¨q°1©uÑ"5�˜Q’ð	6ô
 ˜l¨L¸¸Ð,<Ó=÷ 
á��Að ˜q™5 1š9ˆT�!�A‰Y¨3Ñ.ó 
ˆÔð �L Ñ$Ð&Ð'ˆä=@ÀÈ8ÐTUÐTVÈ<Ó=X÷
Ù39°A°q˜1˜q™5 1š9ˆT�!�A‰Y¨2Ñ-ó
ˆŒð �H˜R‘L�NÐ#‰ùóa LùóP 
ùó

s   ÄQ5ÐQ;Ñ
Rc           	      óJ
  — t        d„ | j                  dgz   dg f«      d   }t        d„ | j                  dgz   dg f«      d   }ddj                  | j                  «      z   }g }| j                  D ]h  }t
        j                  dk7  r|j                  «        |j                  |j                  «       «       t
        j                  dk7  sŒY|j                  «        Œj t        |«      sdg| _        t        d„ | j                  g gz   dg f«      d   }	g }
t        | j                  j                  «       D �cg c]  }|j!                  |d   «      |d   f‘Œ c}«      }t#        j$                  |d	¬
«      D ]1  }|d   sŒ	|
j                  |d   |d   |d   z   dz
  |d   d   f«       Œ3 t        | j                  «      | _        t)        j*                  t,        «      dz   t        |
«      dz  z   t        |	«      dz  z   d|	d   z  z   dz   dt        | j                  «      z  z   d| j&                  z  z   dz   d| j&                  z  z   dz   | _        | j.                  d| j0                  z  | j2                  z  z   dz   |z   | _        | j4                  t        | j6                  «      z   | _        | j8                  t        |«      z   | _        d| _        t)        j>                  t,        | «      }|t#        j@                  t        |
«      d«      z  }|dj                  d„ |
D «       «      z  }|tC        j>                  dt        |	«      z  g|	¢­Ž z  }t        d„ | j                  g «      }|tC        j>                  d|	d   z  g|¢­Ž z  }|tC        j>                  d| jD                  | jF                  «      z  }|tC        j>                  dt        | j                  «      z  g| j                  ¢­Ž z  }|tC        j>                  d| j&                  z  g| jH                  ¢­Ž z  }|tC        j>                  d| j&                  z  g| jJ                  ¢­Ž z  }|tC        j>                  d| jL                  t        | j6                  «      «      z  }|tC        j>                  d| j&                  dz   z  g|¢­Ž z  }|tC        j>                  d| j&                  dz   z  g|¢­Ž z  }|dj                  |«      z   tC        j>                  dd«      z   | j6                  z   |z   dj                  | j                  «      z   S c c}w )Nc                 ó<   — | d   t        |«      z   | d   | d   gz   fS ©Nr   r   ©r`   ©r™  rƒ   s     rr   ú<lambda>zPass.compile.<locals>.<lambda>V  ó%   € ˜!˜A™$¤ Q£™-¨¨1©°°1±°©Ð7€ rt   rt   r   r   c                 ó<   — | d   t        |«      z   | d   | d   gz   fS rœ  r�  rž  s     rr   rŸ  zPass.compile.<locals>.<lambda>Y  r   rt   ó    rˆ  c                 ó<   — | d   t        |«      z   | d   | d   gz   fS rœ  r�  rž  s     rr   rŸ  zPass.compile.<locals>.<lambda>h  r   rt   T)Úsamevalrv   rá   rà   r3   r…  rß   c              3   óH   K  — | ]  }t        j                  d g|¢­Ž –— Œ y­w)rƒ  N)rc   r{   )rb  r.  s     rr   rc  zPass.compile.<locals>.<genexpr>†  s   è ø€ ÒD°AœŸ™ UÐ/¨QÖ/ÑDùs   ‚ "r  c                 ó   — | |z   S r‡   rÓ   rž  s     rr   rŸ  zPass.compile.<locals>.<lambda>ˆ  s
   € ¨¨A©€ rt   r;   r\   r„  r   )'r   r  r}  re   r€  rŒ  r�  rŽ  rb   Útobytesr`   r�  rz  r¶   ry  r6  r7  r	   ÚentriesrŠ  r   rh   r‰  Ú	fsmOffsetr²   r´   ÚpcCoder~  ÚrcCoderi   ÚoDebugr{   r3  rc   r®   r¯   r|  r{  r°   )r¹   rð   rñ   ræ   r˜  r—  ÚconstraintCodeÚtransesÚtr”  Ú
passRangesrƒ   Ú	gidcolmapr”   rï   Ú	flatruless                   rr   rö   zPass.compileS  sÜ  € äÙ7¸¿¹ÈÈÑ9MÐPQÐSUÈwó
à
ñˆô Ù7Ø× Ñ  C 5Ñ(Ø�ˆGó
ð ñ	ˆð
 ! 3§8¡8¨D×,@Ñ,@Ó#AÑAˆØˆØ—‘ò 	ˆAÜ�}‰} Ò%Ø—
‘
”Ø�N‰N˜1Ÿ9™9›;Ô'Ü�}‰} Ó%Ø—
‘
•ð	ô �7Œ|Ø !˜sˆDÔÜÙ7¸¿¹ÀrÀdÑ9JÈQÐPRÈGó
à
ñˆð ˆ
ÜÀ4Ç;Á;×CTÑCTÓCVÖW¸a˜6×,Ñ,¨Q¨q©TÓ2°A°a±DÒ9ÒWÓXˆ	Ü—‘ °DÔ9ò 	DˆAØ�‹tØ×!Ñ! 1 Q¡4¨¨1©°°!±©°q©¸!¸A¹$¸q¹'Ð"BÕCð	Dô ˜DŸL™LÓ)ˆŒä×ÑÔ-Ó.Øñä�*‹o Ñ!ñ"ô �(‹m˜aÑñ ð �(˜2‘,Ññ	ð
 ñð ”#�d×&Ñ&Ó'Ñ'ñ(ð �$—-‘-Ññ ð ñð �$—-‘-Ññ	 ð ñ
ð 	Œð �N‰N˜Q ×!5Ñ!5Ñ5¸¿¹ÑGÑGÈ!ÑKÈdÑRð 	Œð —k‘k¤C¨×(<Ñ(<Ó$=Ñ=ˆŒØ—[‘[¤3 ~Ó#6Ñ6ˆŒ
ØˆŒä�|‰|Ô,¨dÓ3ˆØ”—‘¤ J£°Ó3Ñ3ˆØ�—‘ÑD¸ÔDÓDÑDˆØ”—‘˜V¤c¨(£mÑ3Ð@°xÒ@Ñ@ˆÜÑ-¨t¯z©z¸2Ó>ˆ	Ø”—‘˜V h¨r¡lÑ2Ð@°iÒ@Ñ@ˆØ”—‘˜D $×"8Ñ"8¸$×:PÑ:PÓQÑQˆØ”—‘˜V¤c¨$×*:Ñ*:Ó&;Ñ;ÐP¸t×?OÑ?OÒPÑPˆØ”—‘˜V d§m¡mÑ3ÐI°t×7HÑ7HÒIÑIˆØ”—‘˜U T§]¡]Ñ2ÐK°d×6JÑ6JÒKÑKˆØ”—‘˜E 4×#:Ñ#:¼CÀ×@TÑ@TÓ<UÓVÑVˆØ”—‘˜V t§}¡}°qÑ'8Ñ9ÐJ¸\ÒJÑJˆØ”—‘˜V t§}¡}°qÑ'8Ñ9ÐF¸XÒFÑFˆàØ�h‰h�wÓñ ä�k‰k˜#˜qÓ!ñ"ð ×"Ñ"ñ#ð ñ	ð
 �h‰h�t—|‘|Ó$ñ%ð	
ùòM Xs   Ä1 T c                 óè  ‡— t        d| |gt        ¢­Ž  t        d| |gt        ¢­Ž  |j                  d«       |j	                  «        t        |t        | j                  j                  «       ˆfd„¬«      D �cg c]  } dj                  |Ž ‘Œ c}«       |j                  d«       |j	                  «        |j                  d«       |j	                  «        t        | j                  «      D ]`  \  }}|j                  d| j                  | j                  z
  |z   d	j!                  t#        t$        |«      «      ¬
«       |j	                  «        Œb |j                  d«       |j	                  «        |j                  d«       |j	                  «        t'        t)        | j*                  «      «      D ]®  }|j                  d|| j,                  |   | j.                  |   ¬«       |j	                  «        t)        | j0                  |   «      rt3        d|| j0                  |   «       t3        d|| j*                  |   «       |j                  d«       |j	                  «        Œ° |j                  d«       |j	                  «        t)        | j4                  «      rt3        d|| j4                  «       t)        | j6                  «      �r,|j                  d«       |j	                  «        |j                  d«       |j9                  d	j!                  t#        t$        | j:                  «      «      «       |j                  d«       |j	                  «        t        | j6                  «      D ]g  \  }}|j                  d|¬«       |j9                  d	j!                  t#        t$        |«      «      «       |j                  d«       |j	                  «        Œi |j                  d«       |j	                  «        y y c c}w )NrA  ÚfsminfoÚcolmapc                 ó,   •— ‰j                  | d   «      S )Nr   )r7  )rƒ   rð   s    €rr   rŸ  zPass.toXML.<locals>.<lambda>¤  s   ø€ °v×7HÑ7HÈÈ1ÉÓ7N€ rt   )Úkeyz{}={}ÚstaterulemapÚstaterÈ   )Únumberrz  rz  Úrule)rq  Ú
precontextÚsortkeyÚ
constraintÚactionÚpassConstraintÚfsmÚstartsÚrow)Ú_i)r½   Úpass_attrs_infoÚpass_attrs_fsmrˆ   r‰   rÍ   r5  ry  r6  Úformatr‹   r8  rz  r¸   r±   r³   re   rf   rg   r  r`   r  r{  r|  r}  rŽ   r~  r€  rŠ   r�  )r¹   r�   rð   ræ   rƒ   r+  Úrrô   s     `     rr   rþ   z
Pass.toXMLš  s  ø€ Ü�F˜D &Ð;¬?Ó;Ü�I˜t VÐ=¬nÓ=Ø�‰˜Ô!Ø�‰ÔÜØô  Ø—K‘K×%Ñ%Ó'Ó-Nôöàð �—‘ Ò"òô	
ð 	�‰�hÔØ�‰ÔØ�‰˜Ô'Ø�‰ÔÜ˜dŸj™jÓ)ò 	‰DˆAˆqØ×ÑØØ—|‘| d§o¡oÑ5¸Ñ9Ø—h‘hœs¤3¨›{Ó+ð ô ð
 �N‰NÕð	ð 	�‰�nÔ%Ø�‰ÔØ�‰˜Ô Ø�‰ÔÜ”s˜4Ÿ<™<Ó(Ó)ò 	ˆAØ�O‰OØØØ×/Ñ/°Ñ2Ø×)Ñ)¨!Ñ,ð	 ô ð �N‰NÔÜ�4×'Ñ'¨Ñ*Ô+Ü˜,¨°×0DÑ0DÀQÑ0GÔHÜ�h ¨¯©°Q©Ô8Ø�M‰M˜&Ô!Ø�N‰NÕð	ð 	�‰�gÔØ�‰ÔÜˆt×#Ñ#Ô$ÜÐ&¨°×0DÑ0DÔEÜˆt�‰ÕØ�O‰O˜EÔ"Ø�N‰NÔØ�O‰O˜HÔ%Ø�L‰L˜Ÿ™¤#¤c¨4×+;Ñ+;Ó"<Ó=Ô>Ø�M‰M˜(Ô#Ø�N‰NÔÜ! $§/¡/Ó2ò !‘��1Ø—‘ ¨!�Ô,à—‘˜SŸX™X¤c¬#¨q£kÓ2Ô3Ø—‘˜eÔ$Ø—‘Õ ð!ð �M‰M˜%Ô Ø�N‰NÕð  ùòOs   Á7O/
c           	      óÜ  — |dk(  rt        | |gt        ¢­Ž  y |dk(  rt        | |gt        ¢­Ž  y |dk(  rot        |«      }|j	                  «       D ]P  }|j	                  d«      }t        |«      dk7  s|d   dk(  s|d   dk(  rŒ3t        |d   «      | j                  |d   <   ŒR y |d	k(  ri|D ]c  }t        |t        «      sŒ|\  }	}
}|	d
k(  sŒ | j                  j                  |
d   j	                  d«      D �cg c]  }t        |«      ‘Œ c}«       Œe y |dk(  rí|D ]ç  }t        |t        «      sŒ|\  }	}
}|	dk7  rŒ | j                  j                  t        |
d   «      «       | j                  j                  t        |
d   «      «       d}d}|D ];  }t        |t        «      sŒ|\  }	}
}|	dk(  rt        |«      }Œ+|	dk(  sŒ1t        |«      }Œ= | j                  j                  |«       | j                   j                  |«       Œé y |dk(  rt        |«      | _        y |dk(  rÊ|D ]Ä  }t        |t        «      sŒ|\  }	}
}|	dk(  r_t%        d«      }t        |«      }|j'                  t)        t        |j	                  «       «      «       | j*                  j                  |«       Œ~|	dk(  sŒ„g }t        |«      }|j'                  t)        t        |j	                  «       «      «       || _        ŒÆ y y c c}w )NrA  r´  rµ  ú=rv   r   r]   r   r¸  r¹  rz  rÈ   r»  r¼  r½  rt   r¾  r¿  rÀ  rÁ  rÃ  r‡  rÂ  )rÁ   rÅ  rÆ  r‘   r}   r`   r~   ry  rÃ   rÄ   rz  rb   r{  r|  r•   r  r}  r~  r
   rX  rf   r€  r�  )r¹   r  r¼   r“   rð   ræ   r”   Úwrƒ   rŒ   r™  ÚcrÆ   ÚconÚactÚsubcrô   s                    rr   r   zPass.fromXMLØ  sÄ  € Ø�6Š>Ü�d˜EÐ4¤OÔ4Ø�YÒÜ�d˜EÐ3¤NÔ3Ø�XÒÜ˜wÓ'ˆAØ—W‘W“Yò .�Ø—G‘G˜C“L�Ü�q“6˜Q’; ! A¡$¨"¢*°°!±¸²
ØÜ$'¨¨!©£I�—‘˜A˜a™DÒ!ñ	.ð
 �^Ò#Øò O�Ü! !¤UÔ+ØØ‘	��Q˜Ø˜'“>Ø—J‘J×%Ñ%°q¸±z×7GÑ7GÈÓ7LÖ&M°!¤s¨1¥vÒ&MÕNñOð �WŠ_Ø"ò 1�Ü! '¬5Ô1ØØ#‘	��Q˜Ø˜&’=ØØ×$Ñ$×+Ñ+¬C°°,±Ó,@ÔAØ×!Ñ!×(Ñ(¬¨Q¨y©\Ó):Ô;Ø�Ø�Øò -�AÜ% a¬Ô/Ø Ø#$‘L�C˜˜DØ˜lÒ*Ü& t›n™Ø ›Ü& t›n™ð-ð —‘×#Ñ# CÔ(Ø×$Ñ$×+Ñ+¨CÕ0ñ'1ð( Ð%Ò%Ü#+¨GÓ#4ˆDÕ Ø�UŠ]Ø"ò )�Ü! '¬5Ô1ØØ#‘	��Q˜Ø˜%’<Ü˜c›
�AÜ& qÓ)�AØ—H‘HœS¤ a§g¡g£iÓ0Ô1Ø—O‘O×*Ñ*¨1Õ-Ø˜H“_Ø�AÜ& qÓ)�AØ—H‘HœS¤ a§g¡g£iÓ0Ô1Ø'(�DÕ$ñ)ð ùò1 'Ns   Ã5K)
NrZ  rv  rÓ   rt   rr   r%  r%    s   „ ò	ó<$ó~E
óN<ô|8)rt   r%  )éP   )6ÚfontTools.miscr   ÚfontTools.misc.fixedToolsr   ÚfontTools.misc.textToolsr   r   r]   r   r	   r
   Ú	functoolsr   rc   r|   rŒ  rä   ré   r  r  r  r  r  r  rd  ÚSilf_lookupclass_formatÚSilf_lookuppair_formatr‰  ra   r¶   r8  rz   rs   rö   rw   r…   rŽ   r•   rK  rL  rM  rN  rÅ  rÆ  r½   rÁ   r‘   rÍ   rÏ   rÕ   Úobjectrí   r#  r%  )r+  rƒ   s   00rr   ú<module>rØ     su  ðÝ "Ý 7ß 6õ Ý Ý Ý ß Ó ð€ð
Ð ðÐ ðÐ ð*
Ð ðÐ ðÐ ðÐ ðÐ ðÐ ðÐ ðÐ ð$D€
ñJ ±	¸*Ó0E×F©¨¨1�1�Q‘4˜!˜Q˜q™T˜Ò#ÓFÓG€	òð< 
ˆ�‰Ð5Ó	6€òò(òð
€
ð 9Ð Ø4€ðÐ ð€ð L€òò6òó
÷	ñ 	ôQH�\×.Ñ.ô QHôhj*ˆ6ô j*ôZk-ˆfô k-ô\H)ˆ6õ H)ùóE Gs   Á C6
