+
    K<i0                    T   R t ^ RIHt ^ RIHtHtHtHt ^ RIt^ RI	H
t
 ^ RIHt ^ RIt^ RIt]P                  ! ]4      t. ROt. RNRNRNRNRNR NR!NR"NR#NR$NR%NR&NR'NR(NR)NR*NR+NR,NR-NR.NR/NR0NR1NR2NR3NR4NR5NR6NR7NR8NR9NR:NR;NR<NR=NR>NR?NR@NRANRBNRCNRDNRENRFNRGNRHNRINRJNRKNRLNRMNRNNRONRPNRQNRRNRSNRTNRUNRVNRWNRXNRYNRZNR[NR\NR]NR^NR_NR`NRaNRbNRcNRdNReNRfNRgNRhNRiNRjNRkNRlNRmNRnNRoNRpNRqNRrNRsNRtNRuNRvNRwNRxNRyNRzNR{NR|NR}NR~NRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNtR t]P*                  ! R4      tR t]! ]4      w  tt]! ]4      w  tt ! R	 R
]4      tRtRtRt R]: R] : R]: R2t!]P*                  ! ]!4      t"]P*                  ! R4      t#]P*                  ! R4      t$]P*                  ! R4      t%]P*                  ! R4      t&R t' ! R R](4      t)R t*]R8X  d6   ^ RI+t+^ RI,t,]+PZ                  ! ],P\                  ! 4       P^                  4       R# R# )zSttLib.tables.ttProgram.py -- Assembler/disassembler for TrueType bytecode programs.)annotations)
num2binary
binary2numreadHexstrjoinN)StringIO)Listc                n    R p\        V4       F#  pRV ^,          ,          V,           pV ^,	          p K%  	  V# ) 01)range)valuebitssis   &&  B/usr/lib/python3/dist-packages/fontTools/ttLib/tables/ttProgram.pybitReprr      s8    
A4[!
  H    z[A-Z][A-Z0-9]*$c                    / p/ pV  Fd  w  r4rVrx\         P                  V4      '       g   Q hW5V3W$&   V'       d+   Tp	\        ^V,          4       F  p
WEW3WV
,           &   K  	  K\  V^ ^ V3W&   Kf  	  W3# )   )_mnemonicPatmatchr   )instructionList
opcodeDictmnemonicDictopmnemonicargBitsnamepopspushes	argoffsetr   s   &          r   	_makeDictr"      s    JL5D1gT!!(++++!#d!2I1<(%-	%G
6" ) &q!T1JN 6E ##r   c                  "    ] tR t^tR tR tRtR# )tt_instructions_errorc                	    Wn         R # Nerror)selfr(   s   &&r   __init__tt_instructions_error.__init__   s    
r   c                	:    R \        V P                  4      ,          # )z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                t    \         P                  W4      pVP                  ^ ,          ^,          pW18  g   Q hV# )    )_whiteREr   regs)dataposmnewPoss   &&  r   
_skipWhiterA      s0    t!AVVAYq\F==Mr   c                      ] tR t^tR R ltR R ltR R ltR R ltRR	 R
 lltR R lt	R R lt
R R ltRR R lltR R lt]tR R ltR R ltRtR# )Programc                   V ^8  d   QhRR/#    returnNoner6   )formats   "r   __annotate__Program.__annotate__   s      $ r   c                	    R # r&   r6   r.   s   &r   r*   Program.__init__   s    r   c                    V ^8  d   QhRRRR/# )rF   bytecodebytesrG   rH   r6   )rI   s   "r   rJ   rK      s      U t r   c                	j    \         P                   ! R V4      V n        \        V R4      '       d   V =R# R# )BassemblyN)arrayrO   hasattrrS   )r)   rO   s   &&r   fromBytecodeProgram.fromBytecode   s+    C24$$ %r   c                    V ^8  d   QhRRRR/# )rF   rS   zList[str] | strrG   rH   r6   )rI   s   "r   rJ   rK      s      _  r   c                	   \        V\        4      '       d   Wn        MM\        V\        4      '       d   VP	                  4       V n        M!\        R \        V4      P                   24      h\        V R4      '       d   V =	R# R# )zexpected str or List[str], got rO   N)

isinstancelistrS   str
splitlines	TypeErrortyper1   rU   rO   )r)   rS   s   &&r   fromAssemblyProgram.fromAssembly   sf    h%%$M#&&$//1DM=d8n>U>U=VWXX4$$ %r   c                   V ^8  d   QhRR/# )rF   rG   rP   r6   )rI   s   "r   rJ   rK      s     ' 'U 'r   c                	z    \        V R 4      '       g   V P                  4        V P                  P                  4       # )rO   )rU   	_assemblerO   tobytesr.   s   &r   getBytecodeProgram.getBytecode   s,    tZ((NN}}$$&&r   c                   V ^8  d   QhRR/# )rF   rG   z	List[str]r6   )rI   s   "r   rJ   rK      s      I r   c                	b    \        V R 4      '       g   V P                  VR7       V P                  # )rS   preserve)rU   _disassemblerS   )r)   rk   s   &&r   getAssemblyProgram.getAssembly   s*    tZ((x0}}r   c                   V ^8  d   QhRR/# rE   r6   )rI   s   "r   rJ   rK      s     B Bt Br   c                	   \        VR 4      '       d   VP                  '       EdP    V P                  4       pV'       g   R# VP                  R4       VP	                  4        ^ p^ p\        V4      pWF8  Ed   W4,          p\        P                  V4      '       d
   V^,          pVP                  VP                  V,          4       VP                  V4       VP	                  4        \        P                  V4      pV^,           pV'       Ed   \        VP                  ^4      4      p	. p
^ p\        V	4       F  pV'       dd   V^,          '       gU   VP                  VP                  V,          4       VP                  RP                  V
4      4       VP	                  4        . p
V
P                  W4V,           ,          4       K  	  VP                  VP                  V,          4       VP                  RP                  V
4      4       VP	                  4        WK,           ^,           p\         P                  V4      '       g   EK  V^,          pEK  VP#                  R4       VP	                  4        R# V P7                  4       pV'       g   R# VP                  R4       VP	                  4        VP5                  V4       VP#                  R4       VP	                  4        R#    ^ RIp\'        4       pTP)                  TR7       RpYP+                  4       ,          p\,        P/                  T4       TP                  R4       TP	                  4        TP1                  TP3                  4       4       TP	                  4        TP5                  T P7                  4       4       TP#                  R4       TP	                  4         R# ; i)disassembleInstructionsNrS    )filezBAn exception occurred during the decompilation of glyph program:

rO   )rU   rq   rm   begintagnewlinelen_unindentREr   writeindentwhite_pushCountPatintgroupr   joinappend	_indentREendtag	tracebackr   	print_excgetvaluelogr(   commentstripdumphexrf   )r)   writerttFontrS   r   indentnInstrinstrr?   nValueslinejr   tmpmsgrO   s   &&&             r   toXMLProgram.toXML   s    9::---4!++-"  
+ Xj$KE"((//!LL!3!3f!<=LL'NN$%++E2AAAq"%aggaj/*,!&wA !b&& &V-?-?&-H I &SXXd^ < & 0') KKQ8 "0 V%7%7&%@ASXXd^4(EAI u--!j) '')HOOJ'NNNN8$MM*%NNw! j###-\||~%		#
+ syy{+ t//12j) s   K$ $COc                   V ^8  d   QhRR/# rE   r6   )rI   s   "r   rJ   rK   <  s     0 0t 0r   c                	    VR 8X  d/   V P                  \        V4      4       V P                  4        V =R# VR8X  g   Q hV P	                  \        V4      4       R# )rS   rO   N)r`   r   rd   rS   rV   r   )r)   r   attrscontentr   s   &&&&&r   fromXMLProgram.fromXML<  sM    :gg./NN:%%%gg./r   c                   V ^8  d   QhRR/# rE   r6   )rI   s   "r   rJ   rK   E  s     O3 O34 O3r   c                	
   R P                  \        V R. 4      4      p. pVP                  p\        V4      p\	        V^ 4      pWT8  Ed   \
        P                  W4      pVf#   \        RW^,
          V^,            ,          4      hVP                  4       w  rxrpVP                  ^ ,          ^,          pV'       d   \	        W4      pK  V	P                  4       p	VP                  R4      '       d   \        VR,          4      pV! V4       EMVR9  db   \        V,          w  rp\        V	4      V8w  d   \        RV: RV	: R24      hV	'       d   \        V	4      p	V! W,           4       EMV! V4       EM. p\	        W4      pWT8  d   \
        P                  W4      pVf   \        RWV^,            ,          4      hVP                  4       w  pprpV
f   Vf   MGVP                  ^ ,          ^,          p\	        W4      pVe   K  VP                  \        V
4      4       K  \        V4      pVR8X  Ed   ^ pV'       Ed   VV8  d+   V^8  d$   ^ VV,          u;8:  d   ^8:  g   M V^,          pK1  ^ pVV,           V8  d3   V^8  d,   ^ VVV,           ,          u;8:  d   ^8:  d   M MV^,          pK@  V^8  d(   VV,           ^8  d   VV,           V8w  d   VV,          pK  V'       d   V^8:  d*   \        R
,          w  rpVV,           ^,
          pV! V4       M \        R,          w  rpV! V4       V! V4       VRV  FG  pRTu;8:  d   R8  g   M Q RV,          4       hV! V^,	          ^,          4       V! V^,          4       KI  	  V'       dm    V^8:  d*   \        R	,          w  rpVV,           ^,
          pV! V4       M \        R,          w  rpV! V4       V! V4       VVVV,             F  pV! V4       K  	  VV,           pVVR pVV,          p^ pEK  MVR,          R8H  p\        V,          w  rpV^ ,          R8w  d(   V^8:  g   Q V4       hVV,           ^,
          pV! V4       MVR8  g   Q hV! V4       V! V4       V'       dO   V FG  pRTu;8:  d   R8  g   M Q RV,          4       hV! V^,	          ^,          4       V! V^,          4       KI  	  M0V F*  p^ Tu;8:  d   R8  g   M Q RV,          4       hV! V4       K,  	  \	        W4      pEK  V'       d#   \!        V4      R8  d   \#        V4      ^ 8  g   Q h\$        P$                  ! RV4      V n        R# )rr   rS   NzSyntax error in TT program (%s)INSTR:   NNPUSHNPUSHBNPUSHWPUSHBPUSHWz#Incorrect number of argument bits ([z])   zPUSH value out of range %dWN   zPUSHW value out of range %dzPUSHB value out of range %drR   )r   r   r   r   r   i )r}   getattrr~   rv   rA   _tokenREr   r$   groupsr<   r   
startswithr{   r   r   streamMnemonicDictmaxminrT   rO   )r)   rS   rO   pushlenAssemblyr>   r?   dummyr   argnumberr   r   r   r   args	_mnemonicnArgsnWordsnBytesr   nTotalwordss   &                      r   rd   Program._assembleE  s   88GD*b9: (m1%x-Ay+5q3QS88TT  56HHJ1ES'&&)A,C /))+C""7++"&R!OO$0$:!Ts8w&/HPRUV  $S/CNH /' x5Ay3=sUWx@XX  >?XXZ:E9c7~'/&&)A,C$X3C* KKF,D	v%F%"UN &%&$v,%=#%="aKF!""VOe3 & !T&6/%: Ac A"aKF"QJ &# 5 &5 8 #f,F$ "%{4Fw4O 1T%'&[1_ $R4Fx4P 1T $R $V)-gv'-'>'> !"$@5$H!"'> !%eqjD%8 9 $UT\ 2 *7 " %{4Fw4O 1T%'&[1_ $R4Fx4P 1T $R $V)-fv)G $U *H "(&#FG}!"s  x %RLC/E(:8(D%B{c)$z050z%Z!^R$s{*{RU%)E#)U#:U#:  = E#: !%1*!45 . &* &*E#$#3#3  = E#3 !K	 &* X+Cx=3&3x=A+===C2r   c                   V ^8  d   QhRR/# rE   r6   )rI   s   "r   rJ   rK     s     ?! ?!d ?!r   c                	   . p^ p\        V R. 4      p\        V4      pW58  d~   WC,          p \        V,          w  rxrV'       d3   VP                  VR\	        Wi,
          V4      : RV
: R2,           4       MVP                  VRV
,          ,           4       V^,           pK  W n
        R#   \
         Ed    T\        9   Ed   . pYC,          \        9   Ed   YC,          p\        T,          w  rxrTR,          R8H  pT'       d   Yi,
          ^,           pMT^,           pYC,          pT^,           pT^ 8  g   Q hT'       g?   \        T4       F.  pYC,          pTP                  \        T4      4       T^,           pK0  	  Mh\        T4       FY  pYC,          ^,          YC^,           ,          ,          pTR8  d
   TR,
          pTP                  \        T4      4       T^,           pK[  	  T'       g   EK*   T'       g   R	p\        T4      pT^8X  d   TP                  R
X,          4       MTP                  X: RT: R24       TP                  T4        EK3  TP                  RT,          4       T^,           p EKX  i ; i)r:   rO   r   z]	/* z */z[ ]	/* %s */r   r   i   r   z%s[ ]	/* 1 value pushed */z[ ]	/* z values pushed */z
INSTR%d[ ]Nr   )r   rv   r   r~   r   KeyErrorstreamOpcodeDictr   r-   extendrS   )r)   rk   rS   r   rO   numBytecoder   r   r   r!   r   valuesr   r   r   r   s   &&              r   rl   Program._disassemble  s   4R0(moB75?^29^ OO -7-PRVWX
 OOH~/D$DEE m  ,))F #+)99%[=Mb=Q:9 ( 3"&(nq&8G !AA&.kGE&{*{$%*7^(0 &d5k :$%E &4
 &+7^)1)9X!e_(L#(F?,1GOE &d5k :$%E &4 $8!##)!&kG!| (Dx(OP >FP OOF++OOL2$56AAY,s,   B( (BI6;B+I6,I65AI6!I65I6c                   V ^8  d   QhRR/# rF   rG   boolr6   )rI   s   "r   rJ   rK     s     
 
$ 
r   c                    \        V R4      ;'       d!    \        V P                  4      ^ 8  ;'       g-    \        V R4      ;'       d    \        V P                  4      ^ 8  # )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
rS   rO   )rU   rv   rS   rO   r.   s   &r   __bool__Program.__bool__  sS    0 j)DDc$--.@1.D 
 
D*%@@#dmm*<q*@	
r   c                   V ^8  d   QhRR/# r   r6   )rI   s   "r   rJ   rK   5  s     / /t /r   c                	r    \        V 4      \        V4      8w  d   \        # V P                  VP                  8H  # r&   )r_   NotImplemented__dict__)r)   others   &&r   __eq__Program.__eq__5  s+    :e$!!}}..r   c                   V ^8  d   QhRR/# r   r6   )rI   s   "r   rJ   rK   :  s     B Bt Br   c                	J    V P                  V4      pV\        J d   V# V'       * # r&   )r   r   )r)   r   results   && r   __ne__Program.__ne__:  s$    U#>1vA6zAr   )rS   rO   N)T)F)r1   r2   r3   r4   r*   rV   r`   rf   rm   r   r   rd   rl   r   __nonzero__r   r   r5   r6   r   r   rC   rC      sQ    
'

BH0O3b?!B
8 K/
B Br   rC   c                     Rp \        4       pVP                  V 4       VP                  RR7      pVP                  V4       \	        WP                  4       8H  4       R# )z
>>> _test()
True
s  @;:9876543210/.-,+*)('&%$#"! 
	 ,CXEjC`F#D# FNM/ !#3Y-,CX+ KPX @8Y+!#3Y-,CXN%! M E%%#Jad(RX!#%! YY-,CX!!%%I%%Ja dPX!!!%%I PX PX8!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!CXE+G#DGzEi G#D QX+G#DGz!GzYYY-, 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`ab# #KKpE`  PXaFY`h:-, E%FRX%F ha%%?#!8!Y-, E%FPX%F ha%%?#!8!Y-, CC-,-,CX! F RX8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%%aF#D!F!!# 9/Y-,%%IdTX88!!Y-,CXY-,CXY-,
+# <+-,%8(+# #+CX<Y  -,KS#KQZX8!!Y-,%# <-, %I8-,KS#KQZX E`D!!Y-, 9/-Trj   N)rC   rV   rm   r`   printrf   )bcpasms      r   _testr   ?  sJ     
K>B	ANN2
---
&CNN3	"
 r   __main__))@   r   r:   
PushNBytesr:   r   )A   r   r:   
PushNWordsr:   r   )   r      	PushBytesr:   r   )   r   r   	PushWordsr:   r   )   AAr:   AdjustAngler   r:   )d   ABSr:   Absoluter   r   )`   ADDr:   AddrF   r   )'   ALIGNPTSr:   AlignPtsrF   r:   )<   ALIGNRPr:   AlignRelativePtr   r:   )Z   ANDr:   
LogicalAndrF   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:   DividerF   r   )    DUPr:   DuplicateTopStackr   rF   )Y   EIFr:   EndIfr:   r:   )   ELSEr:   Elser:   r:   )-   ENDFr:   EndFunctionDefinitionr:   r:   )T   EQr:   EqualrF   r   )W   EVENr:   Evenr   r   ),   FDEFr:   FunctionDefinitionr   r:   )N   FLIPOFFr:   SetAutoFlipOffr:   r:   )M   FLIPONr:   SetAutoFlipOnr:   r:   )   FLIPPTr:   	FlipPointr   r:   )   	FLIPRGOFFr:   FlipRangeOffrF   r:   )   FLIPRGONr:   FlipRangeOnrF   r:   )f   FLOORr:   Floorr   r   )F   GCr   GetCoordOnPVectorr   r   )   GETINFOr:   GetInfor   r   )   GETVARIATIONr:   GetVariationr:   r   )   GFVr:   
GetFVectorr:   rF   )   GPVr:   
GetPVectorr:   rF   )R   GTr:   GreaterThanrF   r   )S   GTEQr:   GreaterThanOrEqualrF   r   )   IDEFr:   InstructionDefinitionr   r:   )X   IFr:   Ifr   r:   )   INSTCTRLr:   SetInstrExecControlrF   r:   )9   IPr:   InterpolatePtsr   r:   )   ISECTr:   MovePtToIntersectr   r:   )0   IUPr   InterpolateUntPtsr:   r:   )   JMPRr:   Jumpr   r:   )y   JROFr:   JumpRelativeOnFalserF   r:   )x   JROTr:   JumpRelativeOnTruerF   r:   )*   LOOPCALLr:   LoopAndCallFunctionrF   r:   )P   LTr:   LessThanrF   r   )Q   LTEQr:   LessThenOrEqualrF   r   )   MAXr:   MaximumrF   r   )I   MDr   MeasureDistancerF   r   ).   MDAPr   MoveDirectAbsPtr   r:   )   MDRPr   MoveDirectRelPtr   r:   )>   MIAPr   MoveIndirectAbsPtrF   r:   )   MINr:   MinimumrF   r   )&   MINDEXr:   MoveXToTopStackr   r   )   MIRPr   MoveIndirectRelPtrF   r:   )K   MPPEMr:   MeasurePixelPerEmr:   r   )L   MPSr:   MeasurePointSizer:   r   ):   MSIRPr   MoveStackIndirRelPtrF   r:   )c   MULr:   MultiplyrF   r   )e   NEGr:   Negater   r   )U   NEQr:   NotEqualrF   r   )\   NOTr:   
LogicalNotr   r   )l   NROUNDrF   NoRoundr   r   )V   ODDr:   Oddr   r   )[   ORr:   	LogicalOrrF   r   )!   POPr:   PopTopStackr   r:   )E   RCVTr:   ReadCVTr   r   )}   RDTGr:   RoundDownToGridr:   r:   )z   ROFFr:   RoundOffr:   r:   )   ROLLr:   RollTopThreeStackr   r   )h   ROUNDrF   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:   SetCoordFromStackFPrF   r:   )   SCVTCIr:   SetCVTCutInr   r:   )^   SDBr:   SetDeltaBaseInGStater   r:   )   SDPVTLr   SetDualPVectorToLinerF   r:   )_   SDSr:   SetDeltaShiftInGStater   r:   )   SFVFSr:   SetFVectorFromStackrF   r:   )   SFVTCAr   SetFVectorToAxisr:   r:   )   SFVTLr   SetFVectorToLinerF   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:   SetPVectorFromStackrF   r:   )rF   SPVTCAr   SetPVectorToAxisr:   r:   )   SPVTLr   SetPVectorToLinerF   r:   )v   SROUNDr:   
SuperRoundr   r:   )   SRP0r:   SetRefPoint0r   r:   )   SRP1r:   SetRefPoint1r   r:   )   SRP2r:   SetRefPoint2r   r:   )   SSWr:   SetSingleWidthr   r:   )   SSWCIr:   SetSingleWidthCutInr   r:   )a   SUBr:   SubtractrF   r   )r:   SVTCAr   SetFPVectorToAxisr:   r:   )#   SWAPr:   SwapTopStackrF   rF   )   SZP0r:   SetZonePointer0r   r:   )   SZP1r:   SetZonePointer1r   r:   )   SZP2r:   SetZonePointer2r   r:   )   SZPSr:   SetZonePointerSr   r:   ))   UTPr:   	UnTouchPtr   r:   )p   WCVTFr:   WriteCVTInFUnitsrF   r:   )D   WCVTPr:   WriteCVTInPixelsrF   r:   )B   WSr:   
WriteStorerF   r:   )0__doc__
__future__r   fontTools.misc.textToolsr   r   r   r   rT   ior   typingr   relogging	getLoggerr1   r   streamInstructionsinstructionsr   compiler   r"   r   r   r   r   	Exceptionr$   _comment_instruction_number_tokenr   r;   rz   r   rw   rA   objectrC   r   sysdoctestexittestmodfailedr6   r   r   <module>ra     s   Y " M M    	  ! { D	{
 D{ D{ D{ D{ D{ D{ D{ D{ D{ D{ D{  D!{" D#{$ D%{& D'{( D){* D+{, D-{. D/{0 D1{2 D3{4 D5{6 D7{8 D9{: D;{< D={> D?{@ DA{B DC{D DE{F DG{H DI{J DK{L DM{N DO{P DQ{R DS{T DU{V DW{X DY{Z D[{\ D]{^ D_{` Da{b Dc{d De{f Dg{h Di{j Dk{l Dm{n Do{p Dq{r Ds{t Du{v Dw{x Dy{z D{{| D}{~ D{@ DA{B DC{D DE{F DG{H DI{J DK{L DM{N DO{P DQ{R DS{T DU{V DW{X DY{Z D[{\ D]{^ D_{` Da{b Dc{d De{f Dg{h Di{j Dk{l Dm{n Do{p Dq{r Ds{t Du{v Dw{x Dy{z D{{| D}{~ D{@ DA{B DC{D DE{F DG{H DI{J DK{L DM{N DO{P DQ{R DS{T DU{V DW{X DY{Z D[{\ D]{^ D_{` Da{b Dc{d De{f Dg{h Di{j Dk{l Dm{n Do{p Dq{r Ds{t Du{@ zz,-$ (11C'D $ $$\2 
L>I > .
)7H	=::f::f

KLJJ01	jj34aBf aBH! zHHW__%%&	 r   