+
    ia                     (   R t ^ RIHt R tR tR:R ltR tR tR t ! R	 R
]	4      t
R tR;R ltR:R ltR tR tR tR tR tR tR<R ltR:R lt]R8X  Ed   ^ RIt]! ]P2                  4      ^8X  d0   ^ RIt]P6                  ! ]P8                  ! 4       P:                  4       ^ RIt]P>                  ! RRR7      t ] PC                  RRRRR7       ] PC                  R R!RRR"R#7       ] PC                  R$R%RR&R'7       ] PC                  R(R)]"R*R+7       ] PG                  ]P2                  R,,          4      t$]$PJ                  '       d   ]$PL                  f   RMR- t']! ]$PJ                  4      t%](! R.4       ](! ]! ]%4      4       ]! ]%]'4      t)](! R/4       ](! ])4       ]! ])4      t*](! R04       ](! ]! ]*4      4       ]%]*8X  g   Q h](! R14       ](! ]! ]! ]%]'4      4      4       ](! R24       ](! ]! ]! ]%]'4      4      4       ]$PV                  '       Ed   ^ R3I,H-t- ]-! ]$PV                  4      t+]+R4,          P\                  P^                  ^ ,          t0]0Pb                  t2]2Pg                  4        FL  t4]2]4,          t5]5Pm                  4        ]5Pn                  PN                  t']! ]5PJ                  ]']R57      ]5n%        KN  	  ]$Pp                  f   ^ R6I9H:t: ]:! ]$PV                  RR7R87      t;M]$Pp                  t;];'       d   ](! R9];4       ]+Py                  ];4       R# R# R# R# )=aZ  T2CharString operator specializer and generalizer.

PostScript glyph drawing operations can be expressed in multiple different
ways. For example, as well as the ``lineto`` operator, there is also a
``hlineto`` operator which draws a horizontal line, removing the need to
specify a ``dx`` coordinate, and a ``vlineto`` operator which draws a
vertical line, removing the need to specify a ``dy`` coordinate. As well
as decompiling :class:`fontTools.misc.psCharStrings.T2CharString` objects
into lists of operations, this module allows for conversion between general
and specific forms of the operation.

)maxStackLimitc                     \        V \        4      '       d   V P                  4       p . pV  F   p \        V4      pTP                  T4       K"  	  V#   \         d"     \        T4      p L0  \         d      L>i ; ii ; iN)
isinstancestrsplitint
ValueErrorfloatappend)stringprogramtokens   &  |/Users/tonyclaw/.openclaw/workspace/skills/math-calculator/venv/lib/python3.14/site-packages/fontTools/cffLib/specializer.pystringToProgramr      s}    &#G	JE 	u  N  	e 	s)   AA=A**A95A=8A99A=c                 2    R P                  R V  4       4      # ) c              3   8   "   T F  p\        V4      x  K  	  R # 5ir   )r   ).0xs   & r   	<genexpr>"programToString.<locals>.<genexpr>$   s     ,GqCFFGs   )join)r   s   &r   programToStringr   #   s    88,G,,,    Nc                   Rp^ p^ p^ p. p. p\        V 4      pV EF  p	\        V	\        4      '       g   VP                  V	4       K-  V	R8X  d\   Vf   Q h^V! V4      ,           p
VR,          pW,          ^,           pW|) R .W|) R% \	        V4      pWKV,           ^,
          ,          pTpK  V	R8X  d    VR,          p\        V4      \        J g   Q hMV'       gz   V	R9   ds   RpV	R	9   pV'       d   V\	        WuR 4      ,           pM\	        V4      pV'       d<   V^,          V,          '       d&   VP                  ^ 4      pVP                  RV.34       V	R
9   dM   V'       d   VP                  RV34       VP                  V	. 34       VP                  R\        V4      .34       MVP                  W34       . pEK  	  V'       d   VP                  RV34       V# )u  Takes a T2CharString program list and returns list of commands.
Each command is a two-tuple of commandname,arg-list.  The commandname might
be empty string if no commandname shall be emitted (used for glyph width,
hintmask/cntrmask argument, as well as stray arguments at the end of the
program (🤷).
'getNumRegions' may be None, or a callable object. It must return the
number of regions. 'getNumRegions' takes a single argument, vsindex. It
returns the numRegions for the vsindex.
The Charstring may or may not start with a width value. If the first
non-blend operator has an odd number of arguments, then the first argument is
a width, and is popped off. This is complicated with blend operators, as
there may be more than one before the first hint or moveto operator, and each
one reduces several arguments to just one list argument. We have to sum the
number of arguments that are not part of the blend arguments, and all the
'numBlends' values. We could instead have said that by definition, if there
is a blend operator, there is no width value, since CFF2 Charstrings don't
have width values. I discussed this with Behdad, and we are allowing for an
initial width value in this case because developers may assemble a CFF2
charstring from CFF Charstrings, which could have width values.
FblendNvsindexT >
   hstemvstemendcharhmovetohstemhmrmovetovmovetovstemhmcntrmaskhintmask>   r#   r&   >   r(   r)   )	iterr   r   r   lentyper   popnext)r   getNumRegionsseenWidthOpvsIndexlenBlendStacklastBlendIndexcommandsstackitr   numSourceFonts	numBlendsnumBlendArgslenStackparitynumArgswidths   &&               r   programToCommandsr>   '   s   , KGMNHE	gB%%%LLG ,,,w!77N b	I$59L%*=>%:$;E-.!5zH1A55M%NiBiG=C'''5 -
 $
 K44F (#eO.D*EEe*GaK611		!eW.,,U,OOUBK(OOR$r(,-OOUN+q r U$Or   c                     . pV  FN  p\        V\        4      '       d%   VP                  V4       VP                  R 4       K=  VP                  V4       KP  	  V# )r   )r   listextendr   )args
token_listargs   &  r   _flattenBlendArgsrE      sP    Jc4  c"g&c"  r   c                   . pV  Fv  w  r#\         ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d   \        V4      pVP                  V4       V'       g   Ke  VP                  V4       Kx  	  V# )zmTakes a commands list as returned by programToCommands() and converts
it back to a T2CharString program list.c              3   B   "   T F  p\        V\        4      x  K  	  R # 5ir   r   r@   r   rD   s   & r   r   $commandsToProgram.<locals>.<genexpr>        5z#t$$   TF)anyrE   rA   r   )r4   r   oprB   s   &   r   commandsToProgramrO      sd     G3553335555$T*Dt2NN2  Nr   c              #     "   \        V 4      pW!,          ^ 8w  d   \        V 4      h\        ^ W!4       F  pWW1,            x  K  	  R# 5i)z'Group the list el into groups of size nN)r+   r	   range)elnlis   &&  r   _everyNrV      s=     BAuzn1a^QUm s   AAc                      a  ] tR t^t o ]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t	]R 4       t
]R 4       t]R 4       t]R	 4       t]R
 4       t]R 4       t]R 4       t]R 4       tRtV tR# )!_GeneralizerDecombinerCommandsMapc              #  P   "   \        V 4      ^8w  d   \        V 4      hRV 3x  R# 5i)   r%   Nr+   r	   rB   s   &r   r%   )_GeneralizerDecombinerCommandsMap.rmoveto   s&     t9>T""$s   $&c              #  b   "   \        V 4      ^8w  d   \        V 4      hRV ^ ,          ^ .3x  R# 5i   r%   Nr[   r\   s   &r   r#   )_GeneralizerDecombinerCommandsMap.hmoveto   s.     t9>T""47A,''   -/c              #  b   "   \        V 4      ^8w  d   \        V 4      hR^ V ^ ,          .3x  R# 5ir_   r[   r\   s   &r   r&   )_GeneralizerDecombinerCommandsMap.vmoveto   s.     t9>T""1d1g,''rb   c              #  f   "   V '       g   \        V 4      h\        V ^4       F	  p RV 3x  K  	  R# 5i)rZ   rlinetoNr	   rV   r\   s   &r   rf   )_GeneralizerDecombinerCommandsMap.rlineto   s/     T""D!$Dd## %   /1c              #     "   V '       g   \        V 4      h\        V 4      p  R\        V4      ^ .3x  R^ \        V4      .3x  K%    \         d     R# i ; i5iTrf   Nr	   r*   r.   StopIterationrB   r6   s   & r   hlineto)_GeneralizerDecombinerCommandsMap.hlineto   s[     T""$Z	 48Q-00 1d2h-00 		"   A%A AAAAc              #     "   V '       g   \        V 4      h\        V 4      p  R^ \        V4      .3x  R\        V4      ^ .3x  K%    \         d     R# i ; i5irk   rl   rn   s   & r   vlineto)_GeneralizerDecombinerCommandsMap.vlineto   s[     T""$Z	 1d2h-00 48Q-00 		rq   c              #  f   "   V '       g   \        V 4      h\        V ^4       F	  p RV 3x  K  	  R# 5i)   	rrcurvetoNrg   r\   s   &r   rw   +_GeneralizerDecombinerCommandsMap.rrcurveto   s/     T""D!$D%% %ri   c              #  f  "   \        V 4      pV^8  g   V^,          ^8  d   \        V 4      hV^,          ^8X  d9   RV ^,          V ^ ,          V ^,          V ^,          V ^,          ^ .3x  V R,          p \        V ^4       F+  p RV ^ ,          ^ V ^,          V ^,          V ^,          ^ .3x  K-  	  R# 5i   rw   :   NNNr+   r	   rV   rB   rT   s   & r   	hhcurveto+_GeneralizerDecombinerCommandsMap.hhcurveto   s     Iq5AEAIT""q5A:a$q'47DGT!Wa PQQ8DD!$Da!T!Wd1gtAw JKK %   B/B1c           	   #  f  "   \        V 4      pV^8  g   V^,          ^8  d   \        V 4      hV^,          ^8X  d9   RV ^ ,          V ^,          V ^,          V ^,          ^ V ^,          .3x  V R,          p \        V ^4       F+  p R^ V ^ ,          V ^,          V ^,          ^ V ^,          .3x  K-  	  R# 5irz   r}   r~   s   & r   	vvcurveto+_GeneralizerDecombinerCommandsMap.vvcurveto   s     Iq5AEAIT""q5A:a$q'47DGQQ PQQ8DD!$DDGT!Wd1gq$q' JKK %r   c              #    "   \        V 4      pV^8  g   V^,          R9  d   \        V 4      hRpV^,          ^8X  d   V^,          ^8H  pV RR V RR r \        V ^4      p  \        V4      p RV ^ ,          ^ V ^,          V ^,          ^ V ^,          .3x  \        V4      p R^ V ^ ,          V ^,          V ^,          V ^,          ^ .3x  Ki    \         d     Mi ; iT'       dm   Tp X'       d2   RT ^ ,          ^ T ^,          T ^,          T ^,          T ^,          .3x  R# R^ T ^ ,          T ^,          T ^,          T ^,          T ^,          .3x  R# R# 5ir{   Nrw   >       r`   r{   r|   r+   r	   rV   r.   rm   rB   rT   	last_argslastStraightr6   s   &    r   	hvcurveto+_GeneralizerDecombinerCommandsMap.hvcurveto   sM    Iq5AE-T""	q5A:q5A:L"3Bibc)T1	Bx"T!Waa$q'1d1g$NOOBx"QQa$q'47A$NOO 		D"T!Waa$q'47DQRG$TUU"QQa$q'47DQRG$TUU 2   AE A)C	 	CEC
E"	E,A$Ec              #    "   \        V 4      pV^8  g   V^,          R9  d   \        V 4      hRpV^,          ^8X  d   V^,          ^8H  pV RR V RR r \        V ^4      p  \        V4      p R^ V ^ ,          V ^,          V ^,          V ^,          ^ .3x  \        V4      p RV ^ ,          ^ V ^,          V ^,          ^ V ^,          .3x  Ki    \         d     Mi ; iT'       dm   Tp X'       d2   R^ T ^ ,          T ^,          T ^,          T ^,          T ^,          .3x  R# RT ^ ,          ^ T ^,          T ^,          T ^,          T ^,          .3x  R# R# 5ir   r   r   s   &    r   	vhcurveto+_GeneralizerDecombinerCommandsMap.vhcurveto  sM    Iq5AE-T""	q5A:q5A:L"3Bibc)T1	Bx"QQa$q'47A$NOOBx"T!Waa$q'1d1g$NOO 		D"QQa$q'47DQRG$TUU"T!Waa$q'47DQRG$TUU r   c              #     "   \        V 4      pV^8  g   V^,          ^8w  d   \        V 4      hV RR V RR r \        V ^4       F	  p RV 3x  K  	  RV3x  R# 5i)   Nrw   rf   r}   rB   rT   r   s   &  r   
rcurveline,_GeneralizerDecombinerCommandsMap.rcurveline%  sd     Iq5AEQJT""s)T"#YiD!$D%% %)$$   AAc              #     "   \        V 4      pV^8  g   V^,          ^ 8w  d   \        V 4      hV RR V RR r \        V ^4       F	  p RV 3x  K  	  RV3x  R# 5i)r   Nrf   rw   ir}   r   s   &  r   
rlinecurve,_GeneralizerDecombinerCommandsMap.rlinecurve/  sd     Iq5AEQJT""s)T"#YiD!$Dd## %I&&r    N)__name__
__module____qualname____firstlineno__staticmethodr%   r#   r&   rf   ro   rs   rw   r   r   r   r   r   r   __static_attributes____classdictcell__)__classdict__s   @r   rX   rX      s       
 ( (
 ( (
 $ $ 	 	 	 	 & & L L L L V V0 V V0 % % ' 'r   rX   c           	         \        V  Uu. uF  p\        V\        4      NK  	  up4      '       d@   V  UUu. uF0  p\        V\        4      '       d   \        V4      MV. F  pVNK  	  K2  	  pppMT pVR,          pVRR p\	        V4      pWe,          ^,
          pWW^,           ,          V8X  g   \        V 4      hVRV  Uu. uF  q.NK  	  ppWER p	\	        V	4      p
\        ^ W4       Uu. uF  q9W3V,            NK  	  pp\        W4       UUu. uF  w  rW,           ^.,           NK  	  pppV# u upi u uppi u upi u upi u uppi )r`   Nr   )rM   r   r@   _convertBlendOpToArgsr+   r	   rQ   zip)	blendListrD   erU   rB   r8   rT   
numRegionsdefaultArgs	deltaArgsnumDeltaValues	deltaListab
blend_argss   &              r   r   r   :  sb   
 Y7YcJsD!Y788 
2<Q2E2E+A.A3N N  	 
  RI 9DD	A!#Ja(A-##$()$45$4S5$4K5Z I^N/4Q/S/S!!*n%/S   +.k*EF*E$!!%1#++*EJFE 8
4 6 Gs   D,6D1?D7)D<Ec           
         . p\         pV  F  w  rE\        V Uu. uF  p\        V\        4      NK  	  up4      '       d@    V UUu. uF0  p\        V\        4      '       d   \	        V4      MV. F  pVNK  	  K2  	  ppp\        W4R4      pVf   VP                  WE34       K   V! V4       F  p	VP                  V	4       K  	  K  	  V# u upi u uppi   \
         d4    T'       d*   TP                  R T34       TP                  R T.34        Lh i ; i  \
         d6    T'       d,   TP                  R T34       TP                  R T.34        EKH  h i ; i)r   N)rX   rM   r   r@   r   r	   r   getattr)
r4   ignoreErrorsresultmappingrN   rB   rD   rS   funccommands
   &&        r   generalizeCommandsr   d  s\   F/G6#
3%677  $#6@d6K6K-c2RUQVV   W #    wD)<MM2*%
	:g& &3 F MC 7   MM2t*-MM2t*-   	 r4j)rB4j))	sG   C	
 C6C;C# DCD''DDE('EEc                 >    \        \        \        W4      3/ VB 4      # r   )rO   r   r>   r   r/   kwargss   &&,r   generalizeProgramr     "    ,WDOO r   c                    V ^ ,          '       g&   V ^,          '       g   RV R,          3# RV R,          3# V ^,          '       g   RV R,          3# RV 3# )aV  
Takes X,Y vector v and returns one of r, h, v, or 0 depending on which
of X and/or Y are zero, plus tuple of nonzero ones.  If both are zero,
it returns a single zero still.

>>> _categorizeVector((0,0))
('0', (0,))
>>> _categorizeVector((1,0))
('h', (1,))
>>> _categorizeVector((0,2))
('v', (2,))
>>> _categorizeVector((1,2))
('r', (1, 2))
0Nr`   Nvr`   NNhrr   )r   s   &r   _categorizeVectorr     sR     Q44tt":":tt":6Mr   c                 :    V R 8X  d   V# VR 8X  d   V # W8X  d   V # R# )r   Nr   )r   r   s   &&r   _mergeCategoriesr     s'    CxCxvr   c                 <    V R 8X  d   R# V R8X  d   R # V R9   g   Q hV # )r   r   0rr   )r   s   &r   _negateCategoryr     s'    CxCx99Hr   c                    \        V 4      p^ p. p^ pWA8  EdP   W,          pV^,          p\        V\        4      '       g   VP                  V4       V^,          pKJ  Tp\        V4      ^,
          pV.pV^V,           ,          pWA8  dX   \        W,          \        4      '       d<   W',           \        8  d+   VP                  W,          4       V^,          pW',          pK]  \        V4      p	. p
V F  pV
P                  V^ ,          4       K  	  V F'  pVR,          ^8X  g   Q hV
P                  V^R 4       K)  	  V
P                  V	4       VP                  V
4       Wi,           pEKV  V# r   r   )r+   r   r@   r   r   rA   )rB   num_args	stack_usenew_argsrU   rD   prev_stack_usenum_sources	blendlist
num_blendsr   s   &          r   _convertToBlendCmdsr     sA    4yHIH	A
,g	Q#t$$OOC NI&N
 c(Q,KI[(I tw--+m;  )Q(	 YJJ !!#a&) ! 2w!|#|!!#a), ! j)OOJ'&3IOr   c                    \        V\        4      '       d   \        V \        4      '       dw   \        V 4      \        V4      8w  g   V R,          VR,          8w  d   \        4       h\	        V RR VRR 4       UUu. uF  w  r#\        W#4      NK  	  uppV R,          .,           # Yr\        V \        4      '       d3   V R,          ^8X  g   Q h\        V ^ ,          V4      .V R,          ,           # W,           # u uppi )r`   Nr   r   )r   r@   r+   r	   r   _addArgs)r   r   vavbs   &&  r   r   r     s    !Ta1vQ1R5AbE> l"36q"vq"v3FG3FHR$3FG1R5'QQq!Tuzz1q!"QrU**5L Hs   :C5c                     ^ p^ pV  FK  p\        V4      \        J d-   \        W!\        V4      ,           4      pWR,          ,          pKB  V^,          pKM  	  \        W4      # r   )r,   r@   max_argsStackUse)rB   stackLenmaxLenrD   s   &   r   r   r   	  sX    HF9M#,>!>?FBHMH  x  r   Tc                    V'       d   \        WR 7      p M\        V 4      p \        \        V 4      ^,
          ^ R4       F  pRW,          ^ ,          u;8X  d   W^,
          ,          ^ ,          8X  g   K5  M K9  W^,
          ,          ^,          W,          ^,          rvR\	        V^ ,          V^ ,          4      \	        V^,          V^,          4      .3W^,
          &   W K  	  \        \        V 4      4       F  pW,          w  rVR9   d#   \        V	4      w  rWR,          ,           V	3W&   K6  VR8X  g   K?  \        V	R,          4      w  r\        V	RR 4      w  rW,           R,           WR,          ,           V,           3W&   K  	  V'       Eg   \        \        V 4      ^,
          RR4       F  pW,          w  rVR	8X  d5   \        V	4      ^8X  g   Q h\        V	R
,          4      w  rV
R,           pW3W&   VR8X  d   W KS  V'       g   K]  VR9   g   Kf  WV^,
          ,          ^ ,          8X  g   K  W^,
          ,          w  pp\        V	4      ^8X  d   \        V4      ^8X  g   Q h \	        V	^ ,          V^ ,          4      .pTT3Y^,
          &   Y K  	  \        ^\        V 4      ^,
          4       EFM  pW,          w  rW^,
          ,          ^ ,          W^,           ,          ^ ,          ppVR9   dQ   VTu;8X  d   R8X  dB   M M>\        V	4      ^8X  g   Q hV^ ,          R8X  d   ^ V	^ ,          .M
V	^ ,          ^ .p	RV	3W&   K  VR,          R8X  g   K  \        V	4      ^8X  g   K  VTu;8X  d
   R8X  g   K  M K  V^ ,          R8H  V^,          R8H  ,          '       g   Q hV^ ,          R8X  d   ^ pM$V^ ,          R8w  d   ^pMV^,          R8X  d   ^pM^pV	RV \        V	4      ! R 4      ,           V	VR ,           p	RV	3W&   EKP  	  V '       d   \        V R,          ^,          4      M^ p\        \        V 4      ^,
          ^ R4       EF  pW^,
          ,          w  ppW,          w  ppRpVV0RR08:  d4   VV8X  d   TpEM0\        V4      pVR8X  d   V^8X  d   RpEMV^8X  d   RpEMVV3R!9   d   TpMVV0RR08X  d   TpMRVR,          u;8X  d   VR,          8X  d   M MVR,          w  ppVR,          w  ppVR8X  g   VR8X  g   VTu;8X  d   R8X  d   M MK  \        VV4      pVf   K  VR8X  d%   \        VV4      pVf   EK  RV,           R,           pMWVR8X  d.   \        V\        V4      4      pVf   EK5  VR,           R,           pM#\        VV4      pVf   EKY  VV,           R,           p\        V4      p\        V\        V4      V,           4      p V'       d"   V V8  d   VW,           3W^,
          &   W T pEK  TpEK  	  \        \        V 4      4       EFT  pW,          w  rVR"9   d   RVR,          ,           V	3W&   K+  VR,          R8X  g   K;  VR,          R#9  g   KK  \        V	4      pVR,          w  p!pV!R8H  VR8H  ,          '       d   V^,          ^8X  g   Q hV!R8X  d   Rp!VR8X  d   RpV!R8X  d   Tp!VR8X  d   \        V!4      pV!V0RR08:  g
   Q V!V34       hV^,          '       dj   V!V8w  d7   V!R8H  V^,          ^8H  ,          '       d   V	RR V	RR ,           V	RR ,           p	M,V!R8X  d&   V	R,          V	R,          ,           V	R,          ,           p	V!V,           R,           V	3W&   EKW  	  \        \        V 4      4       FX  pW,          w  r\        ;QJ d    R V	 4       F  '       g   K   RM	  RM! R V	 4       4      '       g   KI  V\        V	4      3W&   KZ  	  V #   \         d     EKB  i ; i)$)r   r%   rf   r   rw   :NrZ   NNcurveto:rZ   r{   N	00curveto:r`      Nlineto0linetoro   rs   r   :rZ   NNr   r   r   r   r   :r`   rZ   Nr   c              3   B   "   T F  p\        V\        4      x  K  	  R # 5ir   rH   rI   s   & r   r   %specializeCommands.<locals>.<genexpr>>  rK   rL   TFr   >   rf   r%   r   >   ro   rs   >   r   ro   rs   )r   >   rf   r   rw   r   >   r   0moveto>   hhhvrrvhvv)r   r@   rQ   r+   r   r   r	   r,   r   r   r   r   rM   r   )"r4   r   generalizeFirstpreserveTopologymaxstackrU   v1v2rN   rB   cc1args1c2args2_
other_argsr   prvnxtposstackUseop1op2new_oprT   d0d1d2d3dargs1StackUsecombinedStackUseop0s"   &&&&&                             r   specializeCommandsr    sF   P %hJ> 3x=1$a,A<(q5/!*<<<!e_Q'Q"Q%A'"Q%A)?@HUO  -n 3x=!;'''-GAf*d*HK)$r(3IB)$rs)4IB'I-uCy/@5/HHHK "F s8}q("b1A{HB [ 4yA~%~+DI6\ h YK qR11ra!e_Q=O7O (Q:4yA~#j/Q*>>> (a*Q- @AH $&x.QK; 2B 1c(ma'(;E?1%xAq'9S22sc7NY7Nt9>!>#%a5C<AtAw<d1gq\D$d+HKb6Y3t9>cS6OK6O6OqESLRUc\2222!u|A#A#:T
4 004:=D&-HK/ )4 2:}Xb\!_-qH3x=1$a,!e_
U[
U :)[11czJ+%!q&)F!V)F3ZSSF3ZIy11F#b',SW,WFBWFBSyB#IrS R(AySy$Q+9q9,s%b/!*<=:cI-%b"-:a)+ &e,}c%j8.CD&1%u}5HUO'H$Hs -x 3x=!;''2,,HKb6Y2b61O#OD	A"vHCs
scz**1uz!zczczczcz%c*:#s+7c3Z7+1uu#:s
q1uz22#CRy494tBr{Bcz#Cy483d2h>)i/5HKE "J 3x=!;35533355551$77HK "
 OS " s    __+*_+c                 >    \        \        \        W4      3/ VB 4      # r   )rO   r  r>   r   s   &&,r   specializeProgramr  D  r   r   __main__zfonttools cffLib.specializerz&CFF CharString generalizer/specializer)descriptionr   r   *z	Commands.)metavarnargshelpz--num-regions
NumRegionsz5Number of variable-font regions for blend opertaions.)r  r  defaultr  z--fontFONTFILEzCFF2 font to specialize.)r  r  r  z-oz--output-filezOutput font file name.)r,   r  r   c                 b    \        \        P                  V f   ^ ,          4      # T ,          4      # r   )r   optionsnum_regions)r1   s   &r   <lambda>r  s  s&    ##AF">EF"r   zProgram:z	Commands:zProgram from commands:zGeneralized program:zSpecialized program:)TTFontCFF2)r   )makeOutputFileNamez.specialized)	overWritesuffixSavingr   )F)FTF0   )=__doc__fontTools.cffLibr   r   r   r>   rE   rO   rV   objectrX   r   r   r   r   r   r   r   r   r   r  r  r   sysr+   argvdoctestexittestmodfailedargparseArgumentParserparseradd_argumentr   
parse_argsr  r   r  r/   printr4   program2fontfontTools.ttLibr  cfftopDictIndexcff2CharStringscharstringskeys	glyphName
charstring	decompileprivateoutput_filefontTools.misc.cliToolsr  outfilesaver   r   r   <module>rB     s"   + -Yx
S' S'l'T&R67t
!k\	 z
388}"))*$$&<F 	9CkR
D   '	   %	   -G ""*  	 "'//2jog&'$Wm<kh$X.&'oh'(("""$%o/GHI$%o/GHI|||*gll#F|,,Q/&&$))+I$Y/J  "&..<<M!2""MM"J	 , &B(^G ))G(G$IIg - { r   