+
    K<i}                        ^ RI HtHtHtHtH	t	 ^ RI
Ht ^ RIt^ RIHtHt ^ RIt^ RIt^ RIt^ RItRtRtRt^t^@t^t^t^?t^t^tRtRtRt ]PB                  ! ]"4      t# ! R	 R
]$4      t%R t&] ^,           3R lt'RRR/R llt(R t)R t*R t+R# )    )fixedToFloatfloatToFixedfloatToFixedToStrstrToFixedToFloatotRound)safeEvalN)Counterdefaultdict   i @  i    i  c                   `  a  ] tR t^'t o R tR tR tR tR tR t	R t
/ R3R	R
/R lltR tR t]R 4       t]R 4       t]R 4       tR!R lt]R"R	R
/R ll4       t]R 4       t]R!R l4       t]R!R l4       t]R!R l4       t]R#R l4       t]R 4       tR tR tR tR tR$R ltR tR t R t!V t"R# )%TupleVariationc                P    VP                  4       V n        \        V4      V n        R # N)copyaxeslistcoordinates)selfr   r   s   &&&G/usr/lib/python3/dist-packages/fontTools/ttLib/tables/TupleVariation.py__init__TupleVariation.__init__(   s    IIK	,    c                    R P                  \        V P                  P                  4        UUu. uF  w  rV: RV: 2NK  	  upp4      4      pRV: RV P                  : R2# u uppi ),=z<TupleVariation  >)joinsortedr   itemsr   )r   namevaluer   s   &   r   __repr__TupleVariation.__repr__,   sT    xxARSARtU+ARST
 ,01A1ABB Ts   A#c                v    V P                   VP                   8H  ;'       d    V P                  VP                  8H  # r   )r   r   )r   others   &&r   __eq__TupleVariation.__eq__2   s.    5#4#44PPejj9PPr   c                    R V P                   9  d   \        4       # \        \        V P                   4       UUu. uF  w  rVf   K  VNK  	  upp4      pV'       d   V# R # u uppi r   )r   	frozenset	enumerate)r   ipuseds   &   r   getUsedPointsTupleVariation.getUsedPoints5   sW    t''';	$2B2B(CU(Cq!!(CUVt%% Vs   A 
A 
c                    \         ;QJ d&    R V P                   4       F  '       g   K   R# 	  R# ! R V P                   4       4      # )zReturns True if this TupleVariation has any visible impact.

If the result is False, the TupleVariation can be omitted from the font
without making any visible difference.
c              3   (   "   T F  qR Jx  K
  	  R # 5ir    .0cs   & r   	<genexpr>+TupleVariation.hasImpact.<locals>.<genexpr>C   s     ;*:QD=*:   TF)anyr   )r   s   &r   	hasImpactTupleVariation.hasImpact=   s9     s;$*:*:;ss;s;s;$*:*:;;;r   c           	     P   VP                  R 4       VP                  4        V F  pV P                  P                  V4      pVf   K$  Vw  rTp\	        VR4      p\        VR4      pWW8X  d&   Wh8X  d    VP                  RV\        V^4      R7       M>RV3R\        V^4      3R\        V^4      3R\        V^4      3.p	VP                  RV	4       VP                  4        K  	  R	p
\        V P                  4       F  w  r\        V4      \        8X  dG   \        V4      ^8X  d7   VP                  R
W^ ,          V^,          R7       VP                  4        Rp
K_  \        V4      \        8X  d(   VP                  R
WR7       VP                  4        Rp
K  Vf   K  \        P                  R4       VP!                  RV,          4       VP                  4        Rp
K  	  V
'       g"   VP!                  R4       VP                  4        VP#                  R 4       VP                  4        R# )tupleN        coord)axisr"   rA   minr"   maxFdelta)ptxyT)cvtr"   zbad delta formatzbad delta #%dz	no deltas)begintagnewliner   getrB   rC   	simpletagfl2strr+   r   typer>   lenintlogerrorcommentendtag)r   writeraxisTagsrA   r"   minValuemaxValuedefaultMinValuedefaultMaxValueattrswrote_any_deltasr,   rD   s   &&&          r   toXMLTupleVariation.toXMLE   s    DIIMM$'E ,1)"%eS/"%eS/.83N$$W4veR?P$Q  x 45 &"34x 45	E $$We4 ! " !!$"2"23HAE{e#E
a  Q(eAh G #' e#  a = #' "		,-23 #'  4  NN;'NNgr   c           	        VR 8X  d   VR,          p\        VR,          ^4      p\        VR4      p\        VR4      p\        VP                  RV4      ^4      p\        VP                  RV4      ^4      p	WV	3V P                  V&   R# VR8X  d   RV9   dI   \        VR,          4      p
\        VR,          4      p\        VR	,          4      pW3V P                  V
&   R# R
V9   d5   \        VR
,          4      p\        VR,          4      pWPP                  V&   R# \        P                  RRP                  \        VP                  4       4      4      ,          4       R# R# )r@   rA   r"   r?   rB   rC   rD   rE   rF   rG   rH   zbad delta format: %sz, N)str2flrB   rC   rK   r   r   r   rQ   warningr   r   keys)r   r!   r[   _contentrA   r"   rY   rZ   rW   rX   pointrF   rG   rH   s   &&&&          r   fromXMLTupleVariation.fromXMLn   s   7?=D5>2.E!%oO!%oOeii?DHeii?DH'9DIIdOW_u} t-U3Z(U3Z(+,&  '%uU|, w0(-  %2TYYvejjl?S5TTU r   NoptimizeSizeTc          	        \        V P                  P                  4       4      \        V4      8:  g#   Q R V P                  P                  4       V34       h. p. pVf(   V P                  4       pVf   R# V P	                  V4      pV P                  V4      pVP                  V4      p	V	f   \        p	VP                  V4       V P                  V4      p
V
e   V	\        ,          p	VP                  V
4       V'       d   V	\        ,          p	VP                  V4       VP                  V P                  VR7      4       RP                  V4      pVP                  ^ \        P                   ! R\#        V4      V	4      4       RP                  V4      V3# )zUnknown axis tag found.r   rg   >HH)r   r   )setr   rb   r/   compilePointscompileCoordrK   EMBEDDED_PEAK_TUPLEappendcompileIntermediateCoordINTERMEDIATE_REGIONPRIVATE_POINT_NUMBERScompileDeltasr   insertstructpackrO   )r   rV   sharedCoordIndices	pointDatarg   	tupleDataauxData
usedPointsr@   flagsintermediateCoords   &&&&$      r   compileTupleVariation.compile   sc    499>>#$H5 	
%IINN8
 	
5 	++-J!**:6I!!(+"&&u-='EU# 99(C(((E./ **ENN9%t))|)DE((7#FKKs7|UCDxx	"G++r   c           
        . pV P                   pV Fb  pVP                  V4      pVf   VP                  R4       K+  VP                  \        P                  ! R\        V^,          ^4      4      4       Kd  	  RP                  V4      # )Ns     >hr   )r   rK   ro   ru   rv   fl2fir   )r   rV   resultr   rA   triples   &&    r   rm   TupleVariation.compileCoord   sk    yyDXXd^F~g&fkk$fQi0DEF  xxr   c           
         R pV FJ  pV P                   P                  VR4      w  rEp\        VR4      p\        VR4      pWG8w  g	   Wh8w  g   KH  Rp M	  V'       g   R# . p	. p
V F  pV P                   P                  VR4      w  rEpV	P	                  \
        P                  ! R\        V^4      4      4       V
P	                  \
        P                  ! R\        V^4      4      4       K  	  RP                  W,           4      # )Fr?   TNr   r   r?   r?   r?   )	r   rK   rB   rC   ro   ru   rv   r   r   )r   rV   neededrA   rW   r"   rX   rY   rZ   	minCoords	maxCoordss   &&         r   rp   'TupleVariation.compileIntermediateCoord   s    D(,		dO(L%HX!%oO!%oO+1L  		D(,		dO(L%HXV[[uXr/BCDV[[uXr/BCD  xx	-..r   c           
         / pTpV  F?  p\        \        P                  ! R WV^,            4      ^ ,          ^4      W5&   V^,          pKA  	  W43# )r   )fi2flru   unpack)rV   dataoffsetr@   posrA   s   &&&   r   decompileCoord_TupleVariation.decompileCoord_   sP    DdDsQw4G H KRPEK1HC  zr   c                (   V '       g   R # \        V 4      p V P                  4        \        V 4      p\        4       pV^8  d   VP	                  V4       M7VP	                  V^,	          ^,          4       VP	                  V^,          4       ^p^ p^ pWA8  d   ^ p\        V4      pVP	                  ^ 4       RpWA8  d   Wc8:  d   W,          p	W,
          p
Vf   ^ T
u;8*  ;'       d    ^8*  Mu pV'       d   V
^8  g   V
^ 8  d   M`V'       d   VP	                  V
4       M0VP	                  V
^,	          4       VP	                  V
^,          4       T	pV^,          pV^,          pK  V'       d   V^,
          W'&   K  V^,
          \
        ,          W'&   EK  V# )    N)r   sortrO   	bytearrayro   POINTS_ARE_WORDS)points	numPointsr   MAX_RUN_LENGTHr   	lastValue	runLength	headerPosuseByteEncodingcurValuerD   s   &          r   rl   TupleVariation.compilePoints   sN     fK	 tMM)$MM9>T12MM)d*+	oIFIMM!"O/i&A!; ,"*&'5&8&8D&8O"	 #MM%(MM%1*-MM%$,/$	qQ	$-M!%.]6F$F!r   c                   VR9   g   Q hTpW,          pV^,          pV\         ,          ^ 8w  d+   V\        ,          ^,          W,          ,          pV^,          pV^ 8X  d   \        V 4      V3# . p\        V4      V8  d   W,          pV^,          pV\        ,          ^,           p^ p	V\         ,          ^ 8w  d!   \        P                  ! R4      p
V^,          pM\        P                  ! R4      p
TpV
P                  WWK,            4       \        P                  R8w  d   V
P                  4        \        V
4      V8X  g   Q hWK,          pVP                  V
4       K  . p^ pV F  pW,          pVP                  V4       K  	  Tp?V Uu0 uF  q^ 8  g	   W8  g   K  \        V4      kK  	  ppV'       d7   \        P                  RRP                  \        V4      4      : RV: R24       Wd3# u upi )	zJ(numPoints, data, offset, tableTag) --> ([point1, point2, ...], newOffset)HBbigzpoint r   z out of range in 'z' tablecvargvar)r   POINT_RUN_COUNT_MASKrangerO   array	frombytessys	byteorderbyteswapextendro   strrQ   ra   r   r   )r   r   r   tableTagr   numPointsInDatar   	runHeadernumPointsInRunrd   r   
pointsSizeabsolutecurrentrD   r-   	badPointss   &&&&             r   decompilePoints_TupleVariation.decompilePoints_  s    ++++)q..14.1EE!KdiWO1HCa)$c**&kO+	I1HC'*>>!CNE,,2S)+a/
S)+
T(89:}}%!v;.000CMM&! EGOOG$  %+GV1uVSVV	GKK88F9-.: } Hs   G-G-c                   . p. pV P                  4       ^8X  dK   V P                   F9  pVf   K	  VP                  V^ ,          4       VP                  V^,          4       K;  	  M*V P                   F  pVf   K	  VP                  V4       K  	  \        4       pV P	                  W%VR7       V P	                  W5VR7       V# )   ri   )getCoordWidthr   ro   r   compileDeltaValues_)r   rg   deltaXdeltaYr6   bytearrs   &&    r   rs   TupleVariation.compileDeltasG  s    1$%%9ad#ad#	 & %%9a  & +  | L  | Lr   c                  Vf   \        4       p^ p\        V 4      pV'       d   W48  d   W,          pV^ 8X  d   \        P                  WV4      pK-  RTu;8:  d   ^8:  d   M M\        P	                  WV4      pKW  RTu;8:  d   R8:  d   M M\        P                  WV4      pK  \        P                  WV4      pK  M\        V 4      \        V 4      rvV^ u;8X  d   V8X  d   M M\        P                  WV4      pM~RTu;8:  d   Tu;8:  d   ^8:  d   M M\        P	                  WVRR7      pMKRTu;8:  d   Tu;8:  d   R8:  d   M M\        P                  WVRR7      pM\        P                  WVRR7      pW48X  g	   Q W434       hV# )a  [value1, value2, value3, ...] --> bytearray

Emits a sequence of runs. Each run starts with a
byte-sized header whose 6 least significant bits
(header & 0x3F) indicate how many values are encoded
in this run. The stored length is the actual length
minus one; run lengths are thus in the range [1..64].
If the header byte has its most significant bit (0x80)
set, all values in this run are zero, and no data
follows. Otherwise, the header byte is followed by
((header & 0x3F) + 1) signed values.  If (header &
0x40) is clear, the delta values are stored as signed
bytes; if (header & 0x40) is set, the delta values are
signed 16-bit integers.
  Fri    )	r   rO   r   encodeDeltaRunAsZeroes_encodeDeltaRunAsBytes_encodeDeltaRunAsWords_encodeDeltaRunAsLongs_rB   rC   )deltasr   rg   r   	numDeltasr"   minValmaxVals   &&$     r   r   "TupleVariation.compileDeltaValues_Z  sb   " ?kGK	/A:(@@gVCU)c)(??WUCu--(??WUC(??WUC " ![#f+F$f$$<<V'R060S0$;;u <  64V4u4$;;u <  %;;u <  1#!11r   c                   Tp\        V 4      pW48  d   W,          ^ 8X  d   V^,          pK  W1,
          pV^@8  d(   VP                  \        ^?,          4       V^@,          pK.  V'       d$   VP                  \        V^,
          ,          4       V# r   )rO   ro   DELTAS_ARE_ZERO)r   r   r   r   r   r   s   &&&   r   r   &TupleVariation.encodeDeltaRunAsZeroes_  sl    K	o&+"21HCL	2oNN?R/0OINN?i!m<=
r   c           	     0   Tp\        V 4      pWE8  dX   W,          pRTu;8:  d   ^8:  g   M M=V'       d+   V^ 8X  d$   V^,           V8  d   W^,           ,          ^ 8X  d   MV^,          pK]  WA,
          pV^@8  dU   VP                  ^?4       VP                  \        P                  ! RWV^@,            4      4       V^@,          pV^@,          pK[  V'       dA   VP                  V^,
          4       VP                  \        P                  ! RWV 4      4       V# )   br   )rO   ro   r   r   )r   r   r   rg   r   r   r"   r   s   &&&&    r   r   %TupleVariation.encodeDeltaRunAsBytes_  s    K	oKEE(S( QJ!Gi'7Oq(1HCL	2oNN2NN5;;sFFRK,HIJbLFOINN9q=)NN5;;sF#,>?@
r   c                D   Tp\        V 4      pWE8  d~   W,          pV'       d	   V^ 8X  d   MeV'       dA   RTu;8:  d   ^8:  d2   M M.V^,           V8  d!   RW^,           ,          u;8:  d   ^8:  d   M MMRTu;8:  d   R8:  g   M MV^,          pK  WA,
          pV^@8  d   VP                  \        ^?,          4       \        P                  ! RWV^@,            4      p\        P
                  R8w  d   VP                  4        VP                  V4       V^@,          pV^@,          pK  V'       ds   VP                  \        V^,
          ,          4       \        P                  ! RWV 4      p\        P
                  R8w  d   VP                  4        VP                  V4       V# )r   r   hr   r   r   )rO   ro   DELTAS_ARE_WORDSr   r   r   r   r   	r   r   r   rg   r   r   r"   r   as	   &&&&     r   r   %TupleVariation.encodeDeltaRunAsWords_  s7   K	oKE 
 U)c)!Gi'V!G_33e,u,1HCL	2oNN+b01C"!=>A}}%

NN1bLFOINN+y1}=>Cs!34A}}%

NN1
r   c                   Tp\        V 4      pWE8  d/   W,          pV'       d   RTu;8:  d   R8:  d   M MMV^,          pK4  WA,
          pV^@8  d   VP                  \        ^?,          4       \        P                  ! RWV^@,            4      p\        P
                  R8w  d   VP                  4        VP                  V4       V^@,          pV^@,          pK  V'       ds   VP                  \        V^,
          ,          4       \        P                  ! RWV 4      p\        P
                  R8w  d   VP                  4        VP                  V4       V# )r   r   r,   r   r   )rO   ro   DELTAS_ARE_LONGSr   r   r   r   r   r   s	   &&&&     r   r   %TupleVariation.encodeDeltaRunAsLongs_  s    K	oKE% 85 81HCL	2oNN+b01C"!=>A}}%

NN1bLFOINN+y1}=>Cs!34A}}%

NN1
r   c                6   . pTpV e   \        V4      V 8  Edi   MV\        V4      8  EdW   W,          pV^,          pV\        ,          ^,           pV\        ,          \        8X  d   VP	                  ^ .V,          4       K}  V\        ,          \
        8X  d!   \        P                  ! R4      pV^,          pMNV\        ,          \        8X  d!   \        P                  ! R4      pV^,          pM\        P                  ! R4      pTpVP                  WWH,            4       \        P                  R8w  d   VP                  4        \        V4      V8X  g   Q \        V4      V34       hWH,          pVP	                  V4       EK}  V e   \        V4      V 8X  g   Q hW43# )z>(numDeltas, data, offset) --> ([delta, delta, ...], newOffset)r,   r   r   r   )rO   DELTA_RUN_COUNT_MASKDELTAS_SIZE_MASKr   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   numDeltasInRunr   
deltasSizes	   &&&      r   decompileDeltas_TupleVariation.decompileDeltas_  sJ    )2)>c&kI%C#d)O	I1HC'*>>!CN,,@qcN23 005EE"[[-F!/!!3J"227GG"[[-F!/!!3J"[[-F!/J  C,<!=>==E)OO%6{n4Ss6{N6SS4!f% CK9$<<<}r   c                    ^pV \         ,          ^ 8w  d   W!^,          ,          pV \        ,          ^ 8w  d   W!^,          ,          pV# )   )rn   rq   )r|   	axisCountsizes   && r   getTupleSize_TupleVariation.getTupleSize_.  s@    ''A-M!D''A-M!Dr   c                    \        R V P                   4       R4      pVf   ^ # \        V4      \        \        39   d   ^# \        V4      \
        J d   \        V4      ^8X  d   ^# \        RV,          4      h)z]Return 2 if coordinates are (x, y) as in gvar, 1 if single values
as in cvar, or 0 if empty.
c              3   0   "   T F  qf   K  Vx  K  	  R # 5ir   r3   r4   s   & r   r7   /TupleVariation.getCoordWidth.<locals>.<genexpr>;  s     H&611&6s   
NzSinvalid type of delta; expected (int or float) number, or Tuple[number, number]: %r)nextr   rN   rP   floatr>   rO   	TypeError)r   
firstDeltas   & r   r   TupleVariation.getCoordWidth7  sn     Hd&6&6H$O

U|+
u$ZA)=(*45
 	
r   c                    VR 8X  d   R# V P                  4       pV P                   Uu. uF8  pVf   RM.V^8X  d	   W1,          MV^ ,          V,          V^,          V,          3NK:  	  upV n        R# u upi )g      ?N)r   r   )r   scalar
coordWidthds   &&  r   scaleDeltasTupleVariation.scaleDeltasG  sz    S='')
 %%
 & 9 #-?QZ1!v8VW &
 
s   >A0c                    V P                  4       pV P                   Uu. uF?  pVf   R M5V^8X  d   \        V4      M#\        V^ ,          4      \        V^,          4      3NKA  	  upV n        R # u upi r   )r   r   r   )r   r   r   s   &  r   roundDeltasTupleVariation.roundDeltasT  su    '')
 %%
 & 9 #-?WQZ1PQRSPT8VW &
 
s   AA.c                N   ^ RI Hp V P                  4       ^8X  d   \        R4      hRV P                  9   dn   \        V P                  4      \        V4      8w  d1   \        R\        V P                  4      \        V4      3,          4      hV! V P                  W4      V n        R# R# )r   )	iup_deltaz3Only 'gvar' TupleVariation can have inferred deltasNz(Expected len(origCoords) == %d; found %d)fontTools.varLib.iupr  r   r   r   rO   
ValueError)r   
origCoordsendPtsr  s   &&& r   calcInferredDeltas!TupleVariation.calcInferredDeltas_  s    21$QRR4###4##$J7 >4++,c*o>?   ))9)9:ND $r   c                   ^ RI Hp RV P                  9   d   R# V! V P                  WVR7      pRV9   Ed   V'       d]   \        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       d#   R.R.\	        V4      ^,
          ,          ,           p\        V P                  V4      p\        V P                  P                  4       4      pV P                  V4      w  r\	        V	4      \	        V
4      ,           pVP                  V4      w  r\	        V	4      \	        V
4      ,           pW8  d   VP                  V n        R# R# R# )r   )iup_delta_optimizeN)	tolerancec              3   (   "   T F  qR J x  K
  	  R # 5ir   r3   )r5   r   s   & r   r7   *TupleVariation.optimize.<locals>.<genexpr>v  s     "?h9hr9   FT)r   r   )
r  r	  r   allrO   r   r   r   rb   r~   )r   r  r  r
  isCompositer	  deltaOptvarOptrV   ry   rz   unoptimizedLengthoptimizedLengths   &&&&&        r   optimizeTupleVariation.optimizel  s   ;4###%jI
 8ss"?h"?sss"?h"??? #8tfH0A&BB#DIIx8F diinn./H!%h!7I #IW =!'!9I!)ns7|;O2#)#5#5  3 r   c                (    V P                  V4       V # r   )r   )r   r   s   &&r   __imul__TupleVariation.__imul__  s     r   c                ^   \        V\        4      '       g   \        # V P                  p\	        V4      pVP                  p\	        V4      V8w  d   \        R 4      hV P                  4       ^8X  dZ   \        \        V4      V4       F>  w  rVW%,          p V^ ,          V^ ,          ,           V^,          V^,          ,           3W%&   K@  	  V # \        \        V4      V4       F1  w  rVW%,          pVe   Ve   Wv,           W%&   K!  Ve   K'  Vf   K-  WbV&   K3  	  V #   \         d    \        R4      hi ; i)z7cannot sum TupleVariation deltas with different lengthsz+cannot sum gvar deltas with inferred points)

isinstancer   NotImplementedr   rO   r  r   zipr   r   )r   r&   deltas1lengthdeltas2r,   d2d1s   &&      r   __iadd__TupleVariation.__iadd__  s   %00!!""W##w<6!VWW 1$U6]G4ZT"$Q%"Q%-AA!?GJ 5  U6]G4Z>bn!#GJZBN!#AJ 5  ! T$%RSSTs   0DD,)r   r   Tr   r   )g      ?F)#__name__
__module____qualname____firstlineno__r   r#   r'   r/   r;   r]   re   r~   rm   rp   staticmethodr   rl   r   rs   r   r   r   r   r   r   r   r   r   r   r  r  r  r!  __static_attributes____classdictcell__)__classdict__s   @r   r   r   '   sM    -CQ&<'RV. ,.&,OS&,P	 /&   > >@ 0 0d& 4$ 4 4l      D 1 1f  2  :  
 
	
O66 r   r   c                     . p\        V4       F,  p\        P                  WV4      w  rcVP                  V4       K.  	  V# r   )r   r   r   ro   )rV   sharedTupleCountr   r   r   _ts   &&&&   r   decompileSharedTuplesr0    s>    F#$"2286J	a % Mr   c                    \        4       pV F(  pVP                  V 4      pW5;;,          ^,          uu&   K*  	  \        VP                  V4      R R7      pV Uu. uF  qw^,          ^8  g   K  V^ ,          NK  	  up# u upi )   c                 (    V ^,          ) V ^ ,          3# )r2  r3   )items   &r   <lambda>%compileSharedTuples.<locals>.<lambda>  s    47(DG,r   key)r	   rm   r   most_common)rV   
variationsMAX_NUM_SHARED_COORDS
coordCountvarr@   sharedCoordsr6   s   &&&     r   compileSharedTuplesr?    s{     J  *Q 
 45,L '3,QA$(DAaDD,333s   A>.A>Trg   c                
  aa ?. p. pR p\        \        4      p	V  FO  p
V
P                  4       pVf   K  W;;,          ^,          uu&   VP                  V
4       VP                  V4       KQ  	  Tp ?V '       g   R	# \	        V ^ ,          P
                  4      o\        ;QJ d    V3R lV  4       F  '       d   K   RM	  RM! V3R lV  4       4      '       g   Q R4       hV	 Uu/ uF  q\        P                  V4      bK  	  upo\	        V 4      p. p. pV'       dN   V3R lp\        V	P                  4       VR7      ^ ,          pVP                  SV,          4       V\        ,          pV Uu. uF  pW8w  d
   SV,          MRNK  	  pp\        W4       F?  w  p
pV
P                  W#VVR7      w  ppVP                  V4       VP                  V4       KA  	  RP                  V4      pRP                  V4      pWV3# u upi u upi )
Nr   c              3   T   <"   T F  p\        VP                  4      S8H  x  K  	  R # 5ir   )rO   r   )r5   vns   & r   r7   -compileTupleVariationStore.<locals>.<genexpr>  s"      )3AAMMas   %(FTz#Variation sets have different sizesc                 h   < V ^ ,          pV ^,          p\        SV,          4      V^,
          ,          # r   )rO   )pnpointSetcountcompiledPointss   &  r   r8  'compileTupleVariationStore.<locals>.key  s.    !uHqEE~h/0EAI>>r   r7  )rx   rg   )r   r   r   )r
   rP   r/   ro   rO   r   r  r   rl   rC   r    TUPLES_SHARE_POINT_NUMBERSr  r~   r   )r:  
pointCountrV   sharedTupleIndicesuseSharedPointsrg   newVariations
pointDatassharedPointspointSetCountrB  r   rG  tupleVariationCounttuplesr   r8  r-   	thisTuplethisDatarI  rC  s   &&&&&$              @@r   compileTupleVariationStorerW    s    	MJL  $M">"Q&!  JJqM%%&A3 )3333 )3   -,- 
 JWIVX...x88N j/FD	?
 =..0c:1=N<0199
 ! F #)"8vcA   
 J+1iiAL ( 
	8 	i H , XXfF88D>D,,I*s   "G;+H c                    \        V4      p. p	V\        ,          ^ 8w  d   \        P                  W5Wp4      w  rM. p
\	        V\
        ,          4       F~  p\        P                  ! RWVV^,            4      w  r\        P                  W4      pWVWn,            pWWW|,            pV	P                  \        VVV
V VVV4      4       Wn,          pW|,          pK  	  V	# )r   rj   )rO   rK  r   r   r   TUPLE_COUNT_MASKru   r   r   ro   decompileTupleVariation_)r   rV   rS  rL  sharedTuplesr   r   dataPosnumAxesr   rQ  r.  dataSizer|   	tupleSizery   pointDeltaDatas   &&&&&&&&         r   decompileTupleVariationStorera    s     (mGF88Q> . ? ?g!
g &)99: --t#'/BC"00@	s/	(:;$
	
 	# ;$ Mr   c                 "   VR9   g   Q V4       h\         P                  ! RVR,          4      ^ ,          p^pV\        ,          ^ 8X  d   W\        ,          ,          p	M\        P                  WEV4      w  rV\        ,          ^ 8w  d2   \        P                  WEV4      w  r\        P                  WEV4      w  rM\        V	4      w  r/ pV F'  pW,          W,          W,          3pVR8w  g   K#  WV&   K)  	  ^ pV\        ,          ^ 8w  d   \        P                  WW4      w  rMTpR.V ,          pVR 8X  dT   \        P                  \        V4      Wh4      w  pp\        VV4       F   w  pp^ Tu;8:  d
   V 8  g   K  M K  VVV&   K"  	  MVR8X  dy   \        P                  \        V4      Wh4      w  pp\        P                  \        V4      Wh4      w  pp\        VVV4       F#  w  ppp^ Tu;8:  d
   V 8  g   K  M K  VV3VV&   K%  	  \	        VV4      # )r   r   z>H:r   r   NNr   r   )ru   r   rn   TUPLE_INDEX_MASKr   r   rq   inferRegion_rr   r   r   rO   r  )rL  r[  rQ  r   rV   r   ry   r|   r   peakstartendr   rA   regionr   r   
deltas_cvtr-   rD   deltas_xdeltas_yrF   rG   s   &&&&&&&                 r   rZ  rZ  7  s    ''11'MM$S	*1-E
C##)$445"2283G	##)#33HCH
!11(#FS!$'
Ddj#)3_$J  C%%!+$553
 Vj F6(99#f+yV
CFJ/HAuA"
""!q	 0 
V	&77FYT#&77FYT#68X6GAq!A"
""Fq	 7 $''r   c                x    / / r!V P                  4        F!  w  r4\        VR4      W&   \        VR4      W#&   K#  	  W3# )a  Infer start and end for a (non-intermediate) region

This helper function computes the applicability region for
variation tuples whose INTERMEDIATE_REGION flag is not set in the
TupleVariationHeader structure.  Variation tuples apply only to
certain regions of the variation space; outside that region, the
tuple has no effect.  To make the binary encoding more compact,
TupleVariationHeaders can omit the intermediateStartTuple and
intermediateEndTuple fields.
r?   )r    rB   rC   )re  rf  rg  rA   r"   s   &    r   rd  rd  e  sA     R3zz|%osO	 $ <r   r#  ),fontTools.misc.fixedToolsr   r   r   r   r   rM   r   r`   r   fontTools.misc.textToolsr   r   collectionsr	   r
   iologgingru   r   rn   rq   rr   r   r   r   r   r   r   r   rK  rY  rc  	getLoggerr$  rQ   objectr   r0  r?  rW  ra  rZ  rd  r3   r   r   <module>rt     s     .  , 	   

          #   !C
V C
L 1A10D4 H- H-V$N+(\r   