ó
    oñ:i0Œ  ã                  óv  • S r SSKJr  SSKJrJrJrJr  SSKrSSK	J
r
  SSKJr  SSKrSSKr\R                  " \5      r/ SQr/ SQrS	 r\R*                  " S
5      rS r\" \5      u  rr\" \5      u  rr " S S\5      rSrSrSr S\< S\ < S\< S3r!\R*                  " \!5      r"\R*                  " S5      r#\R*                  " S5      r$\R*                  " S5      r%\R*                  " S5      r&S r' " S S\(5      r)S r*\S:X  a4  SSK+r+SSK,r,\+RZ                  " \,R\                  " 5       R^                  5        gg)zSttLib.tables.ttProgram.py -- Assembler/disassembler for TrueType bytecode programs.é    )Úannotations)Ú
num2binaryÚ
binary2numÚreadHexÚstrjoinN)ÚStringIO)ÚList))é@   ÚNPUSHBr   Ú
PushNBytesr   éÿÿÿÿ)éA   ÚNPUSHWr   Ú
PushNWordsr   r   )é°   ÚPUSHBé   Ú	PushBytesr   r   )é¸   ÚPUSHWr   Ú	PushWordsr   r   )w)é   ÚAAr   ÚAdjustAngleé   r   )éd   ÚABSr   ÚAbsoluter   r   )é`   ÚADDr   ÚAddé   r   )é'   ÚALIGNPTSr   ÚAlignPtsr"   r   )é<   ÚALIGNRPr   ÚAlignRelativePtr   r   )éZ   ÚANDr   Ú
LogicalAndr"   r   )é+   ÚCALLr   ÚCallFunctionr   r   )ég   ÚCEILINGr   ÚCeilingr   r   )é%   ÚCINDEXr   ÚCopyXToTopStackr   r   )é"   ÚCLEARr   Ú
ClearStackr   r   )éO   ÚDEBUGr   Ú	DebugCallr   r   )és   ÚDELTAC1r   ÚDeltaExceptionC1r   r   )ét   ÚDELTAC2r   ÚDeltaExceptionC2r   r   )éu   ÚDELTAC3r   ÚDeltaExceptionC3r   r   )é]   ÚDELTAP1r   ÚDeltaExceptionP1r   r   )éq   ÚDELTAP2r   ÚDeltaExceptionP2r   r   )ér   ÚDELTAP3r   ÚDeltaExceptionP3r   r   )é$   ÚDEPTHr   ÚGetDepthStackr   r   )éb   ÚDIVr   ÚDivider"   r   )é    ÚDUPr   ÚDuplicateTopStackr   r"   )éY   ÚEIFr   ÚEndIfr   r   )é   ÚELSEr   ÚElser   r   )é-   ÚENDFr   ÚEndFunctionDefinitionr   r   )éT   ÚEQr   ÚEqualr"   r   )éW   ÚEVENr   ÚEvenr   r   )é,   ÚFDEFr   ÚFunctionDefinitionr   r   )éN   ÚFLIPOFFr   ÚSetAutoFlipOffr   r   )éM   ÚFLIPONr   ÚSetAutoFlipOnr   r   )é€   ÚFLIPPTr   Ú	FlipPointr   r   )é‚   Ú	FLIPRGOFFr   ÚFlipRangeOffr"   r   )é�   ÚFLIPRGONr   ÚFlipRangeOnr"   r   )éf   ÚFLOORr   ÚFloorr   r   )éF   ÚGCr   ÚGetCoordOnPVectorr   r   )éˆ   ÚGETINFOr   ÚGetInfor   r   )é‘   ÚGETVARIATIONr   ÚGetVariationr   r   )é   ÚGFVr   Ú
GetFVectorr   r"   )é   ÚGPVr   Ú
GetPVectorr   r"   )éR   ÚGTr   ÚGreaterThanr"   r   )éS   ÚGTEQr   ÚGreaterThanOrEqualr"   r   )é‰   ÚIDEFr   ÚInstructionDefinitionr   r   )éX   ÚIFr   ÚIfr   r   )éŽ   ÚINSTCTRLr   ÚSetInstrExecControlr"   r   )é9   ÚIPr   ÚInterpolatePtsr   r   )é   ÚISECTr   ÚMovePtToIntersecté   r   )é0   ÚIUPr   ÚInterpolateUntPtsr   r   )é   ÚJMPRr   ÚJumpr   r   )éy   ÚJROFr   ÚJumpRelativeOnFalser"   r   )éx   ÚJROTr   ÚJumpRelativeOnTruer"   r   )é*   ÚLOOPCALLr   ÚLoopAndCallFunctionr"   r   )éP   ÚLTr   ÚLessThanr"   r   )éQ   ÚLTEQr   ÚLessThenOrEqualr"   r   )é‹   ÚMAXr   ÚMaximumr"   r   )éI   ÚMDr   ÚMeasureDistancer"   r   )é.   ÚMDAPr   ÚMoveDirectAbsPtr   r   )éÀ   ÚMDRPrž   ÚMoveDirectRelPtr   r   )é>   ÚMIAPr   ÚMoveIndirectAbsPtr"   r   )éŒ   ÚMINr   ÚMinimumr"   r   )é&   ÚMINDEXr   ÚMoveXToTopStackr   r   )éà   ÚMIRPrž   ÚMoveIndirectRelPtr"   r   )éK   ÚMPPEMr   ÚMeasurePixelPerEmr   r   )éL   ÚMPSr   ÚMeasurePointSizer   r   )é:   ÚMSIRPr   ÚMoveStackIndirRelPtr"   r   )éc   ÚMULr   ÚMultiplyr"   r   )ée   ÚNEGr   ÚNegater   r   )éU   ÚNEQr   ÚNotEqualr"   r   )é\   ÚNOTr   Ú
LogicalNotr   r   )él   ÚNROUNDr"   ÚNoRoundr   r   )éV   ÚODDr   ÚOddr   r   )é[   ÚORr   Ú	LogicalOrr"   r   )é!   ÚPOPr   ÚPopTopStackr   r   )éE   ÚRCVTr   ÚReadCVTr   r   )é}   ÚRDTGr   ÚRoundDownToGridr   r   )éz   ÚROFFr   ÚRoundOffr   r   )éŠ   ÚROLLr   ÚRollTopThreeStackr   r   )éh   ÚROUNDr"   ÚRoundr   r   )éC   ÚRSr   Ú	ReadStorer   r   )é=   ÚRTDGr   ÚRoundToDoubleGridr   r   )é   ÚRTGr   ÚRoundToGridr   r   )é   ÚRTHGr   ÚRoundToHalfGridr   r   )é|   ÚRUTGr   ÚRoundUpToGridr   r   )éw   ÚS45ROUNDr   ÚSuperRound45Degreesr   r   )é~   ÚSANGWr   ÚSetAngleWeightr   r   )é…   ÚSCANCTRLr   ÚScanConversionControlr   r   )é�   ÚSCANTYPEr   ÚScanTyper   r   )éH   ÚSCFSr   ÚSetCoordFromStackFPr"   r   )é   ÚSCVTCIr   ÚSetCVTCutInr   r   )é^   ÚSDBr   ÚSetDeltaBaseInGStater   r   )é†   ÚSDPVTLr   ÚSetDualPVectorToLiner"   r   )é_   ÚSDSr   ÚSetDeltaShiftInGStater   r   )é   ÚSFVFSr   ÚSetFVectorFromStackr"   r   )é   ÚSFVTCAr   ÚSetFVectorToAxisr   r   )é   ÚSFVTLr   ÚSetFVectorToLiner"   r   )é   ÚSFVTPVr   ÚSetFVectorToPVectorr   r   )é4   ÚSHCr   ÚShiftContourByLastPtr   r   )é2   ÚSHPr   ÚShiftPointByLastPointr   r   )é8   ÚSHPIXr   ÚShiftZoneByPixelr   r   )é6   ÚSHZr   ÚShiftZoneByLastPointr   r   )é   ÚSLOOPr   ÚSetLoopVariabler   r   )é   ÚSMDr   ÚSetMinimumDistancer   r   )é
   ÚSPVFSr   ÚSetPVectorFromStackr"   r   )r"   ÚSPVTCAr   ÚSetPVectorToAxisr   r   )é   ÚSPVTLr   ÚSetPVectorToLiner"   r   )év   ÚSROUNDr   Ú
SuperRoundr   r   )é   ÚSRP0r   ÚSetRefPoint0r   r   )é   ÚSRP1r   ÚSetRefPoint1r   r   )é   ÚSRP2r   ÚSetRefPoint2r   r   )é   ÚSSWr   ÚSetSingleWidthr   r   )é   ÚSSWCIr   ÚSetSingleWidthCutInr   r   )éa   ÚSUBr   ÚSubtractr"   r   )r   ÚSVTCAr   ÚSetFPVectorToAxisr   r   )é#   ÚSWAPr   ÚSwapTopStackr"   r"   )é   ÚSZP0r   ÚSetZonePointer0r   r   )é   ÚSZP1r   ÚSetZonePointer1r   r   )é   ÚSZP2r   ÚSetZonePointer2r   r   )é   ÚSZPSr   ÚSetZonePointerSr   r   )é)   ÚUTPr   Ú	UnTouchPtr   r   )ép   ÚWCVTFr   ÚWriteCVTInFUnitsr"   r   )éD   ÚWCVTPr   ÚWriteCVTInPixelsr"   r   )éB   ÚWSr   Ú
WriteStorer"   r   c                óN   • Sn[        U5       H  nSU S-     U-   nU S-	  n M     U$ )NÚ Ú01r   )Úrange)ÚvalueÚbitsÚsÚis       Úc/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/fontTools/ttLib/tables/ttProgram.pyÚbitReprr‡      s8   € Ø
€AÜ�4Ž[ˆØ�˜‘Ñ Ñ!ˆØ˜‘
Šñ ð €Hó    z[A-Z][A-Z0-9]*$c                óÐ   • 0 n0 nU  HZ  u  p4pVpx[         R                  U5      (       d   eX5U4X$'   U(       a"  Un	[        SU-  5       H  n
XEX–4XU
-   '   M     MR  USSU4X'   M\     X4$ )Nr   r   )Ú_mnemonicPatÚmatchr�  )ÚinstructionListÚ
opcodeDictÚmnemonicDictÚopÚmnemonicÚargBitsÚnameÚpopsÚpushesÚ	argoffsetr…  s              r†  Ú	_makeDictr–  «   s‹   € Ø€JØ€LÛ5DÑ1ˆ�g TÜ×!Ñ! (×+Ñ+Ð+Ð+Ø!#¨dÐ!2ˆÑÞØˆIÜ˜1 ™<Ö(�Ø%-¸	Ð%G�
 ™6Ó"ó )ð & q¨!¨TÐ1ˆJ‹Nñ 6Eð Ð#Ð#rˆ  c                  ó    • \ rS rSrS rS rSrg)Útt_instructions_erroré¾   c                ó   • Xl         g ©N©Úerror)Úselfr�  s     r†  Ú__init__Útt_instructions_error.__init__¿   s   € Ø�
rˆ  c                ó2   • S[        U R                  5      -  $ )NzTT instructions error: %s)Úreprr�  ©rž  s    r†  Ú__str__Útt_instructions_error.__str__Â   s   € Ø*¬T°$·*±*Ó-=Ñ=Ð=rˆ  rœ  N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rŸ  r¤  Ú__static_attributes__© rˆ  r†  r˜  r˜  ¾   s   † òõ>rˆ  r˜  z	/\*.*?\*/z([A-Z][A-Z0-9]*)\s*\[(.*?)\]z-?[0-9]+Ú(z)|(Ú)z\s*z-[A-Z][A-Z0-9]*\s*\[.*?\]\s*/\* ([0-9]+).*?\*/z^FDEF|IF|ELSE\[ \]\t.+z^ELSE|ENDF|EIF\[ \]\t.+c                ób   • [         R                  X5      nUR                  S   S   nX1:¼  d   eU$ )Nr   r   )Ú_whiteREr‹  Úregs)ÚdataÚposÚmÚnewPoss       r†  Ú
_skipWhiterµ  Ô   s0   € Ü�‰�tÓ!€AØ�V‰V�A‰Y�q‰\€FØ‹=Ðˆ=Ø€Mrˆ  c                  ó˜   • \ rS rSrSS jrSS jrSS jrSS jrSSS jjrSS jr	SS jr
SS	 jrSSS
 jjrSS jr\rSS jrSS jrSrg)ÚPrograméÛ   c                ó   • g r›  r«  r£  s    r†  rŸ  ÚProgram.__init__Ü   s   € Ørˆ  c                ód   • [         R                   " SU5      U l        [        U S5      (       a  U ?g g )NÚBÚassembly)ÚarrayÚbytecodeÚhasattrr½  )rž  r¿  s     r†  ÚfromBytecodeÚProgram.fromBytecodeß   s+   € ÜŸš C¨Ó2ˆŒÜ�4˜×$Ñ$Ø‘ð %rˆ  c                óü   • [        U[        5      (       a  Xl        OL[        U[        5      (       a  UR	                  5       U l        O![        S[        U5      R                   35      e[        U S5      (       a  U ?	g g )Nzexpected str or List[str], got r¿  )
Ú
isinstanceÚlistr½  ÚstrÚ
splitlinesÚ	TypeErrorÚtyper¦  rÀ  r¿  )rž  r½  s     r†  ÚfromAssemblyÚProgram.fromAssemblyä   sf   € Ü�h¤×%Ñ%Ø$�MÜ˜¤#×&Ñ&Ø$×/Ñ/Ó1ˆD�MäÐ=¼dÀ8»n×>UÑ>UÐ=VÐWÓXÐXÜ�4˜×$Ñ$Ø‘ð %rˆ  c                óx   • [        U S5      (       d  U R                  5         U R                  R                  5       $ )Nr¿  )rÀ  Ú	_assembler¿  Útobytesr£  s    r†  ÚgetBytecodeÚProgram.getBytecodeî   s,   € Ü�t˜Z×(Ñ(Ø�N‰NÔØ�}‰}×$Ñ$Ó&Ð&rˆ  c                óZ   • [        U S5      (       d  U R                  US9  U R                  $ )Nr½  ©Úpreserve)rÀ  Ú_disassembler½  )rž  rÓ  s     r†  ÚgetAssemblyÚProgram.getAssemblyó   s*   € Ü�t˜Z×(Ñ(Ø×Ñ xÐÑ0Ø�}‰}Ðrˆ  c                ó  • [        US5      (       a  UR                  (       Ga   U R                  5       nU(       d  g UR                  S5        UR	                  5         SnSn[        U5      nXF:  Ga¦  X4   n[        R                  U5      (       a  US-  nUR                  UR                  U-  5        UR                  U5        UR	                  5         [        R                  U5      nUS-   nU(       aü  [        UR                  S5      5      n	/ n
Sn[        U	5       Hz  nU(       aZ  US-  (       dP  UR                  UR                  U-  5        UR                  SR                  U
5      5        UR	                  5         / n
U
R                  X4U-      5        M|     UR                  UR                  U-  5        UR                  SR                  U
5      5        UR	                  5         XK-   S-   n[         R                  U5      (       a  US-  nXF:  a  GM¦  UR#                  S5        UR	                  5         g U R7                  5       nU(       d  g UR                  S	5        UR	                  5         UR5                  U5        UR#                  S	5        UR	                  5         g !   SS Kn['        5       nUR)                  US9  SnXíR+                  5       -  n[,        R/                  U5        UR                  S	5        UR	                  5         UR1                  UR3                  5       5        UR	                  5         UR5                  U R7                  5       5        UR#                  S	5        UR	                  5          g = f)
NÚdisassembleInstructionsr½  r   r   r  Ú )ÚfilezBAn exception occurred during the decompilation of glyph program:

r¿  )rÀ  rØ  rÕ  ÚbegintagÚnewlineÚlenÚ_unindentREr‹  ÚwriteÚindentwhiteÚ_pushCountPatÚintÚgroupr�  ÚjoinÚappendÚ	_indentREÚendtagÚ	tracebackr   Ú	print_excÚgetvalueÚlogr�  ÚcommentÚstripÚdumphexrÏ  )rž  ÚwriterÚttFontr½  r…  ÚindentÚnInstrÚinstrr³  ÚnValuesÚlineÚjrè  ÚtmpÚmsgr¿  s                   r†  ÚtoXMLÚProgram.toXMLø   s°  € ä˜Ð 9×:Ñ:Ø×-×-Ð-ð4!Ø×+Ñ+Ó-�ö"  ØØ—‘ 
Ô+Ø—‘Ô Ø�Ø�Ü˜X›�Ø”jØ$™K�EÜ"×(Ñ(¨×/Ñ/Ø !™˜Ø—L‘L ×!3Ñ!3°fÑ!<Ô=Ø—L‘L Ô'Ø—N‘NÔ$Ü%×+Ñ+¨EÓ2�AØ˜A™�AÞÜ"% a§g¡g¨a£j£/˜Ø*,˜Ø˜Ü!& w¦˜AÞ ¨!¨b¯&Ø &§¡¨V×-?Ñ-?À&Ñ-HÔ IØ &§¡¨S¯X©X°d«^Ô <Ø &§¡Ô 0Ø') Ø ŸK™K¨°Q±©Ö8ñ "0ð Ÿ™ V×%7Ñ%7¸&Ñ%@ÔAØŸ™ S§X¡X¨d£^Ô4ØŸ™Ô(Ø™E A™I˜Ü —‘ u×-Ñ-Ø !™˜ð3 –jð4 —‘˜jÔ)Ø—‘Õ à×'Ñ'Ó)ˆHÞØØ�O‰O˜JÔ'Ø�N‰NÔØ�N‰N˜8Ô$Ø�M‰M˜*Ô%Ø�N‰NÕøðw!Û ä“j�Ø×#Ñ#¨Ð#Ñ-Ø\�Ø—|‘|“~Ñ%�Ü—	‘	˜#”Ø—‘ 
Ô+Ø—‘Ô Ø—‘˜sŸy™y›{Ô+Ø—‘Ô Ø—‘˜t×/Ñ/Ó1Ô2Ø—‘˜jÔ)Ø—‘Ö ús   ¥J' Ê'CNc                ó®   • US:X  a-  U R                  [        U5      5        U R                  5         U ?g US:X  d   eU R	                  [        U5      5        g )Nr½  r¿  )rÊ  r   rÍ  r½  rÁ  r   )rž  r’  ÚattrsÚcontentrð  s        r†  ÚfromXMLÚProgram.fromXML<  sM   € Ø�:ÓØ×Ñœg gÓ.Ô/Ø�N‰NÔØ‘à˜:Ó%Ð%Ð%Ø×Ñœg gÓ.Õ/rˆ  c                óš	  • SR                  [        U S/ 5      5      n/ nUR                  n[        U5      n[	        US5      nXT:  GaA  [
        R                  X5      nUc  [        SXS-
  US-    -  5      eUR                  5       u  pxpšnUR                  S   S   nU(       a  [	        X5      nMn  U	R                  5       n	UR                  S5      (       a  [        USS  5      nU" U5        GOˆUS	;  aW  [        U   u  pÍn[        U	5      U:w  a  [        S
U< SU	< S35      eU	(       a  [        U	5      n	U" XÉ-   5        GO5U" U5        GO+/ n[	        X5      nXT:  aŠ  [
        R                  X5      nUc  [        SXUS-    -  5      eUR                  5       u  nnpšnU
c  Uc  OCUR                  S   S   n[	        X5      nUb  Mn  UR                  [        U
5      5        XT:  a  MŠ  [        U5      nUS:X  Ga½  SnU(       Ga²  UU:  a>  US:  a8  SUU   s=::  a  S::  d(  O  US-  nUU:  a  US:  a  SUU   s=::  a  S::  d  M#  O  N&SnUU-   U:  aG  US:  aA  SUUU-      s=::  a  S::  a.  O  O+US-  nUU-   U:  a  US:  a  SUUU-      s=::  a  S::  a  M)  O  US:  a  UU-   S:  a  UU-   U:w  a  UU-  nM½  U(       a}  US::  a  [        S   u  pÍnUU-   S-
  nU" U5        O[        S   u  pÍnU" U5        U" U5        US U  H5  nSUs=::  a  S:  d  O   SU-  5       eU" US-	  S-  5        U" US-  5        M7     U(       aW   US::  a  [        S   u  pÍnUU-   S-
  nU" U5        O[        S   u  pÍnU" U5        U" U5        UUUU-     H  nU" U5        M     UU-   nUUS  nUU-  nSnU(       a  GM²  OÀUS   S:H  n[        U   u  pÍnUS   S:w  a  US::  d   U5       eUU-   S-
  nU" U5        OUS:  d   eU" U5        U" U5        U(       a<  U H5  nSUs=::  a  S:  d  O   SU-  5       eU" US-	  S-  5        U" US-  5        M7     O*U H$  nSUs=::  a  S:  d  O   SU-  5       eU" U5        M&     [	        X5      nXT:  a  GMA  U(       a   [!        U5      S:  a  [#        U5      S:¼  d   e[$        R$                  " SU5      U l        g )NrÙ  r½  r   zSyntax error in TT program (%s)rž   r›   r   ÚINSTR)ÚPUSHr   r   r   r   z#Incorrect number of argument bits (Ú[z])r  éÿ   r"   r,  r   r   i €ÿÿé €  zPUSH value out of range %dr   r   r   ÚWÚNé   zPUSHW value out of range %dzPUSHB value out of range %dr¼  )rä  Úgetattrrå  rÝ  rµ  Ú_tokenREr‹  r˜  Úgroupsr°  rí  Ú
startswithrâ  rŽ  r   ÚstreamMnemonicDictÚmaxÚminr¾  r¿  )rž  r½  r¿  ÚpushÚlenAssemblyr²  r³  Údummyr�  ÚargÚnumberrì  r�  r‘  r’  ÚargsÚ	_mnemonicÚnArgsÚnWordsÚnBytesr‚  ÚnTotalÚwordss                          r†  rÍ  ÚProgram._assembleE  sH  € Ø—8‘8œG D¨*°bÓ9Ó:ˆØ ˆØ�‰ˆÜ˜(“mˆÜ˜ 1Ó%ˆØÔÜ—‘˜xÓ-ˆAØ‰yÜ+Ø5¸ÀqÁÈ3ÐQSÉ8Ð8TÑTóð ð 56·H±H³JÑ1ˆE˜S¨'Ø—&‘&˜‘)˜A‘,ˆCÞÜ  Ó/�Ùà—)‘)“+ˆCØ×"Ñ" 7×+Ñ+ä˜ ! "˜Ó&�Ù�R–ØÐ!OÓOÜ$0°Ñ$:Ñ!�˜TÜ�s“8˜wÓ&Ý/ÛHPÓRUÐVóð ö Ü$ S›/�CÙ˜™–Ná˜–Hà�Ü  Ó/�ØÓ'Ü Ÿ™ xÓ5�AØ‘yÜ3Ø=ÀÈsÐUWÉxÐ@XÑXóð ð >?¿X¹X»ZÑ:�E˜9 c°7Ø‘~¨'©/ØØŸ&™& ™) A™,�CÜ$ XÓ3�CØÑ*Ù Ø—K‘K¤ F£Ô,ð Õ'ô ˜D›	�Ø˜vÔ%à�Fßà" U›NØ &¨£Ø%&¨$¨v©,Õ%=¸#Õ%=à" a™K˜Fð	 # U›NØ &¨£Ø%&¨$¨v©,Õ%=¸#×%=Ð%=ð "#˜à" V™O¨eÓ3Ø &¨£Ø ! T¨&°6©/Ñ%:Õ A¸cÖ Aà" a™K˜Fð	 # V™O¨eÓ3Ø &¨£Ø ! T¨&°6©/Ñ%:Õ A¸c× Að # Q›JØ &¨¡°#Ó 5Ø &¨¡°5Ó 8ð # fÑ,˜FÙ$ö "Ø%¨›{Ü4FÀwÑ4OÑ 1 ¨TØ%'¨&¡[°1¡_ Ù $ R¥ä4FÀxÑ4PÑ 1 ¨TÙ $ R¤Ù $ V¤Ø)-¨g¨v« Ø'-°Õ'>¸Õ'>ð !"Ø$@À5Ñ$Hó!"Ð'>ñ !% e¨q¡j°DÑ%8Ô 9Ù $ U¨T¡\Ö 2ñ *7ö "Ø Ø%¨›{Ü4FÀwÑ4OÑ 1 ¨TØ%'¨&¡[°1¡_ Ù $ R¥ä4FÀxÑ4PÑ 1 ¨TÙ $ R¤Ù $ V¤Ø)-¨f°vÀ±Ó)G Ù $ U¦ñ *Hð "(¨&¡˜Ø# F G˜}˜Ø ™˜Ø!"˜÷s  ™%øðx % R™L¨CÑ/�EÜ(:¸8Ñ(DÑ%�B Ø ‘{ cÓ)Ø$¨›zÐ0¨5Ó0˜zØ %™Z¨!™^˜Ù˜R�à$ s›{Ð*˜{Ù˜RœÙ˜UœÞÛ%)˜EØ#)¨UÕ#:°UÕ#:ð Ø =ÀÑ EóÐ#:ñ ! %¨1¡*°Ñ!4Ô5Ù  ¨¡Ö.ò &*ó &*˜EØ#$¨Õ#3°Õ#3ð Ø =ÀÑ EóÐ#3ñ ! žKñ	 &*ô ˜XÓ+ˆCðK ÖöN Ü�x“= 3Ó&¬3¨x«=¸AÓ+=Ð=Ð=ÜŸš C¨Ó2ˆ�rˆ  c                ó  • / nSn[        U S/ 5      n[        U5      nX5:  ae  XC   n [        U   u  pxpšU(       a*  UR                  US[	        Xi-
  U5      < SU
< S3-   5        OUR                  USU
-  -   5        US-   nX5:  a  Me  X l
        g ! [
         Gam    U[        ;   GaE  / nXC   [        ;   aÛ  XC   n[        U   u  pxpšUS   S	:H  nU(       a  Xi-
  S-   nO	US-   nXC   nUS-   nUS:”  d   eU(       d6  [        U5       H&  nXC   nUR                  [        U5      5        US-   nM(     OK[        U5       H<  nXC   S
-  XCS-      -  nUS:¼  a  US-
  nUR                  [        U5      5        US-   nM>     U(       a  OXC   [        ;   a  MÛ  U(       d  Sn[        U5      nUS:X  a  UR                  SW-  5        OUR                  W< SU< S35        UR                  U5         GNiUR                  SU-  5        US-   n GN…f = f)Nr   r¿  r  z]	/* z */z[ ]	/* %s */r   r   r  r,  r  i   r"   r  z%s[ ]	/* 1 value pushed */z[ ]	/* z values pushed */z
INSTR%d[ ])r	  rÝ  r�  rå  r   ÚKeyErrorÚstreamOpcodeDictr�  r¢  Úextendr½  )rž  rÓ  r½  r…  r¿  ÚnumBytecoder�  r�  r‘  r•  r’  Úvaluesr  rô  rö  r‚  s                   r†  rÔ  ÚProgram._disassembleÖ  s$  € ØˆØˆÜ˜4 ¨RÓ0ˆÜ˜(“mˆØ‹oØ‘ˆBð7Ü5?À±^Ñ2� 9ö^ Ø—O‘OÙ Ü-7¸¹ÈÖ-PÓRVÐWñXõð
 —O‘O H¨~ÀÑ/DÑ$DÔEØ˜‘E�ðs �oðt !�øôm ô ,ØÔ)Ô)Ø�Fð #™+Ô)9Ó9Ø%™[˜Ü=MÈbÑ=QÑ:˜¨9Ø (¨¡°Ñ 3˜Þ"Ø&(¡n°qÑ&8™Gà ! A¡˜AØ&.¡k˜GØ ™E˜Ø&¨›{Ð*˜{Þ$Ü%*¨7¦^ Ø(0© Ø &§¡¬d°5«kÔ :Ø$%¨¡E¢ò &4ô
 &+¨7¦^ à)1©¸Ñ)9¸XÈ!Áe¹_Ñ(L Ø#(¨F£?Ø,1°G©O EØ &§¡¬d°5«kÔ :Ø$%¨¡E¢ñ &4ö $Ø!ð3 #™+Ô)9Õ9ö6 $Ø#)˜Ü! &›k�GØ !“|Ø Ÿ™Ð(DÀxÑ(OÕPà Ÿ™Û>FËÐPôð —O‘O F×+à—O‘O L°2Ñ$5Ô6Ø˜A™“AðY,ús   §B ÂC=HÆAHÇ)HÈHc                ó¼   • [        U S5      =(       a    [        U R                  5      S:„  =(       d+    [        U S5      =(       a    [        U R                  5      S:„  $ )a  
>>> p = Program()
>>> bool(p)
False
>>> bc = array.array("B", [0])
>>> p.fromBytecode(bc)
>>> bool(p)
True
>>> p.bytecode.pop()
0
>>> bool(p)
False

>>> p = Program()
>>> asm = ['SVTCA[0]']
>>> p.fromAssembly(asm)
>>> bool(p)
True
>>> p.assembly.pop()
'SVTCA[0]'
>>> bool(p)
False
r½  r   r¿  )rÀ  rÝ  r½  r¿  r£  s    r†  Ú__bool__ÚProgram.__bool__  sH   € ô0 ˜˜jÓ)×D¬c°$·-±-Ó.@À1Ñ.D÷ 
Ü�D˜*Ó%×@¬#¨d¯m©mÓ*<¸qÑ*@ð	
rˆ  c                óp   • [        U 5      [        U5      :w  a  [        $ U R                  UR                  :H  $ r›  )rÉ  ÚNotImplementedÚ__dict__)rž  Úothers     r†  Ú__eq__ÚProgram.__eq__5  s+   € Ü�‹:œ˜e›Ó$Ü!Ð!Ø�}‰} §¡Ñ.Ð.rˆ  c                óH   • U R                  U5      nU[        L a  U$ U(       + $ r›  )r+  r(  )rž  r*  Úresults      r†  Ú__ne__ÚProgram.__ne__:  s$   € Ø—‘˜UÓ#ˆØ¤>Ò1ˆvÐA¸6´zÐArˆ  )r½  r¿  N)ÚreturnÚNone)r¿  Úbytesr1  r2  )r½  zList[str] | strr1  r2  )r1  r3  )T)r1  z	List[str])F)r1  Úbool)r¦  r§  r¨  r©  rŸ  rÁ  rÊ  rÏ  rÕ  rù  rþ  rÍ  rÔ  r%  Ú__nonzero__r+  r/  rª  r«  rˆ  r†  r·  r·  Û   sK   † ôôô
ô'ö
ô
BôH0ôO3öb?!ôB
ð8 €Kô/÷
Brˆ  r·  c                 ó´   • Sn [        5       nUR                  U 5        UR                  SS9nUR                  U5        [	        XR                  5       :H  5        g)z
>>> _test()
True
s·  @;:9876543210/.-,+*)('&%$#"! 
	 ,°CXEj°C`°F#D# °FNðM/° !#3Y-,°CX°+° K°PX± @8Y°+!#3Y-,°CXN°%ò!° M E°%°%#Jad°(RX!#Ö°%ò!° YY-,°CX!!°%°%I°%°%Ja d°PX!!!°%°%I° PX° PX¸ÿâ8!°8!Y° RX°8!¸ÿð8!YYYY-,°CX°+° K°PX¹  ÿÀ8Y°+!#3Y-,NŠ±FCD° ± Fâ° ¹  ÿð8 ° <°(+°%° <-,° /°ò°°M° -,°CX°+° ¹  ÿà8°+!#3Y-,°CXEdj#Edi°Cd``°F#D# °Fð/° !! Š ŠRX3!!YY-,±
C#Ce
-, ±
C#C-, °F#p±F>°F#p±FE:± -,°+°%E°%Ej°@‹`°%#D!!!-,°+°%E°%Ej¸ÿÀŒ`°%#D!!!-,° °+!!!-,° °+!!!-,°C°Ce
-, i°@a° ‹ ±,ÀŠŒ¸ b`+d#da\X°aY-,± %EhT°KPZX°%E°%E`h °%#D°%#D°% Eh Š#D°%Eh`°%#DY-,°% Eh Š#D°%Edhe`°%°`#D-,°	CX‡!À°CX‡E°+°G#D°GzäŠEi °G#DŠŠ‡ ° QX°+°G#D°Gzä!°GzäYYY-, ŠE#Eh`D-,EjB-,/-,°CX°%°%Id#Edi°@‹a °€bj°%°%aŒ°C`°F#D!Š°Fö!!!!!Y-,°CX°%E°%Ed`j°%Eja °%Ej Š‹e°%#DŒ°%#D!! EjD EjDY-, E° U°CZXEh#Ei°@‹a °€bj Š#a °%‹e°%#DŒ°%#D!!!!°+Y-,ŠŠEd#EdadB-,°%°%°+°CX°%°%°%°+°%C°@T°%C° TZX°% E°@aDY°%C° T°%C°@TZX°% E°@`DYY!!!!-,KRXC°%E#aD!!Y-,KRXC°%E#`D!!Y-,KRXED!!Y-, °%#I°@`° c ° RX#°%8#°%e8 Šc8!!!!!Y-,KPXED!!Y-,°%# Šõ °`#íì-,°%# Šõ °a#íì-,°%õ íì-,F#F`ŠŠF# FŠ`Ša¸ÿ€b# #Š±KKŠpE` ° PX°a¸ÿº‹°FŒY°`h:-, E°%FRX°%F ha°%°%?#!8!Y-, E°%FPX°%F ha°%°%?#!8!Y-, °C°C-,Šì-,°CX! F° RX¸ÿð8°8YY-, ° UX¸ c°%Ed°%Eda° SX°°@a°Y%EiSXED!!Y!°%E°%Ead°(QXED!!YY-,!!d#d‹¸@ b-,!°€QXd#d‹¸  b² @/+Y°`-,!°ÀQXd#d‹¸Ub² €/+Y°`-,d#d‹¸@ b`#!-,KSX°%°%Id#Edi°@‹a °€bj°%°%aŒ°F#D!Š°Fö!!Š# 9/Y-,°%°%Id°ÀTX¸ÿø8°8!!Y-,°CXY-,°CXY-,°
+# <°+-,°%¸ÿð8°(+Š# Ð#°+°CXÀ<Y ° -,KS#KQZX8!!Y-,°%Ð#É°° °<°-,° °°%I°8°-,KS#KQZX EŠ`D!!Y-, 9/-TrÒ  N)r·  rÁ  rÕ  rÊ  ÚprintrÏ  )ÚbcÚpÚasms      r†  Ú_testr;  ?  sJ   € ð 
K>€Bä‹	€AØ‡N�N�2ÔØ
�-‰- ˆ-Ð
&€CØ‡N�N�3ÔÜ	ˆ"—‘“Ñ
Õ rˆ  Ú__main__)0Ú__doc__Ú
__future__r   ÚfontTools.misc.textToolsr   r   r   r   r¾  Úior   Útypingr	   ÚreÚloggingÚ	getLoggerr¦  rë  ÚstreamInstructionsÚinstructionsr‡  ÚcompilerŠ  r–  r  r  r�  rŽ  Ú	Exceptionr˜  Ú_commentÚ_instructionÚ_numberÚ_tokenr
  r¯  rá  ræ  rÞ  rµ  Úobjectr·  r;  ÚsysÚdoctestÚexitÚtestmodÚfailedr«  rˆ  r†  Ú<module>rS     s<  ðÙ Yå "ç MÓ MÛ Ý Ý Û 	Û ð ×Ò˜Ó!€òÐ ò{€ò@ð �zŠzÐ,Ó-€ò$ñ (1Ð1CÓ'DÑ $Ð Ð$Ù$ \Ó2Ñ €
ˆLô>˜Iô >ð €Ø.€Ø
�Û)«7³HÐ	=€à�:Š:�fÓ€Ø�:Š:�fÓ€à—
’
ÐKÓL€à�JŠJÐ0Ó1€	Ø�jŠjÐ3Ó4€òôaBˆfô aBòH!ð ˆzÓÛÛà‡H‚HˆW�_Š_Ó×%Ñ%Õ&ð	 rˆ  