o
    a                     @   s|   d dl Z d dlZzd dlZW n ey   dZY nw d dlZdd Zdd Zdd Zdd	d
ZdddZ	dd Z
dd ZdS )    Nc                 C   s   t d| dd \}|d? }|d@ }|dkr	 | |fS |dkrGtrGtjt d|| dd   }t||krAtd	 | |fS |} | |fS td
 | |fS )N>L         r      z<LzTable decompression failed.z:Table is compressed with an unsupported compression scheme)	structunpacklz4block
decompresspacklenwarningswarn)datacompressionschemesizeres r   @/usr/lib/python3/dist-packages/fontTools/ttLib/tables/grUtils.pyr      s   	 

r   c                 C   sj   |d d t d| d> t|d@   }| dkr|S | dkr.tr.tjj|ddd	d
}|| S td |S )Nr   r   r   r   r   r   Zhigh_compression   F)moder   Z
store_sizez:Table failed to compress by unsupported compression scheme)r   r   r   r
   r   compressr   r   )r   r   Zhdrr   r   r   r   r      s   (
r   c                 c   s    d}g }d}| D ]-\}}t |r-||d ks|r-||kr-|t | d t ||fV  g }|}|| |}q	|t | d t ||fV  d S )Nr   r   )r   append)ZattrssamevalZakZvalsZlastvkvr   r   r   _entries&   s    
 r   Fc                 C   s   t t|  dd d|}|S )Nc                 S   s   t | d S )Nr   )int)xr   r   r   <lambda>4   s    zentries.<locals>.<lambda>)key)r   sorteditems)Z
attributesr   gr   r   r   entries3   s   r'   r   c                 C   sx   | dkrt dddddS d}d}|| kr!|d9 }|d7 }|| ks|d8 }|d }||9 }| | | }t d| |||S )Nr   z>4Hr      )r   r   )Znumr   ZsrangeZselectshiftr   r   r   bininfo7   s   r*   c                 C   s4   | dk rt | S tdtd| d dd S )Ni    Z4sr   r           )strr   r	   r   replacedecodenr   r   r   num2tagE   s   $r2   c              	   C   sD   zt | W S  ty!   | d d d } td| dd  Y S w )Nz    r   r   asciir   )r    
ValueErrorr   r	   encoder0   r   r   r   tag2numK   s   
r6   )F)r   )r   r   r
   ImportErrorZ	lz4.blockr   r   r   r'   r*   r2   r6   r   r   r   r   <module>   s    

