
    ]Mh2                         d dl mZ d dlmZ d dlmZ d dlZd dlZ ej        d          Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Z G d de          Z G d de          Z G d de          ZdS )    timestampNow)DefaultTable)reduceNzfontTools.mergec                     t          |           } t          |           }t          |          t          fd|D                       sJ d| z              S )Nc              3   $   K   | ]
}|k    V  d S N ).0itemfirsts     T/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/fontTools/merge/util.py	<genexpr>zequal.<locals>.<genexpr>   s'      ++tu}++++++    z"Expected all items to be equal: %s)listiternextall)lsttr   s     @r   equalr      sa    
s))CS		AGGE+++++++++WW-QTW-WWWWLr   c                 :    t          t          |                     S r	   )r   r   r   s    r   r   r      s    S		??r   c                     t           S r	   NotImplementedr   s    r   recalculater      s    r   c                     t                      S r	   r   r   s    r   current_timer   "   s    >>r   c                 6    t          t          j        |           S r	   )r   operatorand_r   s    r   bitwise_andr#   &   s    (-%%%r   c                 6    t          t          j        |           S r	   )r   r!   or_r   s    r   
bitwise_orr&   *   s    (,$$$r   c                 ^    t          |           } t          |           t          |           z  S r	   )r   sumlenr   s    r   avg_intr*   .   s$    
s))Cs88s3xxr   c                       fd}|S )zReturns a filter func that when called with a list,
    only calls func on the non-NotImplemented items of the list,
    and only so if there's at least one item remaining.
    Otherwise returns NotImplemented.c                 D    d | D             }|r |          nt           S )Nc                 $    g | ]}|t           u|S r
   r   )r   r   s     r   
<listcomp>z1onlyExisting.<locals>.wrapper.<locals>.<listcomp>:   s"    DDD$^)C)C)C)C)Cr   r   )r   itemsfuncs     r   wrapperzonlyExisting.<locals>.wrapper9   s-    DD#DDD#7ttE{{{7r   r
   )r0   r1   s   ` r   onlyExistingr2   3   s#    8 8 8 8 8 Nr   c                 >    g }| D ]}|                     |           |S r	   )extend)r   lr   s      r   sumListsr6   @   ,    
A  	Hr   c                 >    i }| D ]}|                     |           |S r	   )update)r   dr   s      r   sumDictsr;   G   r7   r   c                       fd}|S )Nc                 ,   t          |           } d}t          d                   D ]j}	 |         }n:# t          $ r- 	 d         }n # t          $ r t          d|z            w xY wY nw xY wd|z   |fd| D                       }|||z  z  }k|S )Nr   size*zDon't know how to merge bit %s   c              3   <   K   | ]}t          |z            V  d S r	   )bool)r   r   
shiftedBits     r   r   z-mergeBits.<locals>.wrapper.<locals>.<genexpr>[   s0      $M$MT$*;%<%<$M$M$M$M$M$Mr   )r   rangeKeyError	Exception)r   returnValue	bitNumber
mergeLogicmergedValuerC   bitmaps        @r   r1   zmergeBits.<locals>.wrapperO   s    3iivf~.. 
	4 
	4IR#I.

 R R RR!'JJ R R R#$Dy$PQQQR JR
 iJ$*$M$M$M$M$M$M$MMMK;)33KKs'   5
A, A	A,	A&&A,+A,r
   )rK   r1   s   ` r   	mergeBitsrL   N   s#          Nr   c                       e Zd ZdZd Zd ZdS )AttendanceRecordingIdentityDictzYA dictionary-like object that records indices of items actually accessed
    from a list.c                 v    || _         d t          |          D             | _        t                      | _        d S )Nc                 4    i | ]\  }}t          |          |S r
   idr   ivs      r   
<dictcomp>z<AttendanceRecordingIdentityDict.__init__.<locals>.<dictcomp>h   s$    666tq!"Q%%666r   )r5   	enumerater:   setsselfr   s     r   __init__z(AttendanceRecordingIdentityDict.__init__f   s3    66y~~666r   c                 j    | j                             | j        t          |                              |S r	   )rY   addr:   rR   r[   rU   s     r   __getitem__z+AttendanceRecordingIdentityDict.__getitem__k   s'    

46"Q%%=!!!r   N__name__
__module____qualname____doc__r\   r`   r
   r   r   rN   rN   b   s<           
    r   rN   c                       e Zd ZdZd Zd ZdS )GregariousIdentityDictzrA dictionary-like object that welcomes guests without reservations and
    adds them to the end of the guest list.c                 P    || _         t          d |D                       | _        d S )Nc              3   4   K   | ]}t          |          V  d S r	   rQ   )r   rU   s     r   r   z2GregariousIdentityDict.__init__.<locals>.<genexpr>v   s(      ((qRUU((((((r   )r5   rX   rY   rZ   s     r   r\   zGregariousIdentityDict.__init__t   s+    ((C(((((r   c                     t          |          | j        vrA| j                            t          |                     | j                            |           |S r	   )rR   rY   r^   r5   appendr_   s     r   r`   z"GregariousIdentityDict.__getitem__x   sH    a55FJJr!uuFMM!r   Nra   r
   r   r   rg   rg   p   s<        / /) ) )    r   rg   c                   ,    e Zd ZdZddZd Zd Zd ZdS )NonhashableDictz3A dictionary-like object mapping objects to values.Nc                     | d t          |          D             | _        d S d t          ||          D             | _        d S )Nc                 4    i | ]\  }}t          |          |S r
   rQ   rS   s      r   rV   z,NonhashableDict.__init__.<locals>.<dictcomp>   s$    ;;;41abeeQ;;;r   c                 4    i | ]\  }}t          |          |S r
   rQ   )r   krU   s      r   rV   z,NonhashableDict.__init__.<locals>.<dictcomp>   s$    ===41abeeQ===r   )rW   r:   zip)r[   keysvaluess      r   r\   zNonhashableDict.__init__   sI    >;;9T??;;;DFFF==3tV+<+<===DFFFr   c                 6    | j         t          |                   S r	   r:   rR   r[   rq   s     r   r`   zNonhashableDict.__getitem__   s    vbee}r   c                 4    || j         t          |          <   d S r	   rv   )r[   rq   rU   s      r   __setitem__zNonhashableDict.__setitem__   s    r!uur   c                 0    | j         t          |          = d S r	   rv   rw   s     r   __delitem__zNonhashableDict.__delitem__   s    F2a55MMMr   r	   )rb   rc   rd   re   r\   r`   ry   r{   r
   r   r   rm   rm      s[        ==> > > >        r   rm   )fontTools.misc.timeToolsr   #fontTools.ttLib.tables.DefaultTabler   	functoolsr   r!   logging	getLoggerlogr   r   r   r   r#   r&   r*   r2   r6   r;   rL   objectrN   rg   rm   r
   r   r   <module>r      s  
 2 1 1 1 1 1 < < < < < <         g)**        & & &% % %     

 
 
      (    f       V       f     r   