
    thq                     "   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZddl	m
Z
mZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ d	 Zd
 Zd Zd Zd Zi dddefdddefdddefdddefdddefdddefd d!d"efd#d$d%efd&d'd(d)d*efd+d,d-efd.d/d0efd1d2d3efd4d5d6efd7d8d9efd:d;d<efd=d>i d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSefdTdUdVefdWdXdYefdZd[d\efd]d^d_efd`dadbefdcdddeefdfdgdhefi didjdkefdldmdnefdodpdqefdrdsdtefdudvdwefdxdydzefd{d|d}efd~ddefdddefdddefdddefdddefdddefdddefdddddddddddddddddddefdZd Z G d dej                  Zd Zd ZdddddddZ dZ!d dddZ"d Z#d Z$d Z%ddZ& e
j'        ej(        e&e            e
j)        ej(        e$            e
j*        ej(        g d            e
j+        ej(        d           dS )    N   )Image	ImageFile)i16be)i32be)o8)o16be)presetsc                     t          | j                            d                    dz
  }t          j        | j        |           d S )N   )i16fpreadr   
_safe_read)selfmarkerns      g/var/www/html/mycamper/aliexpress-site/backend/venv/lib/python3.11/site-packages/PIL/JpegImagePlugin.pySkipr   7   s;    DGLLOOq A!$$$$$    c                    t          | j                            d                    dz
  }t          j        | j        |          }d|dz  z  }|| j        |<   | j                            ||f           |dk    r|d d         dk    rt          |d          x| j        d<   }t          |d	          | j        d
<   	 |d         }t          |d          t          |d          f}|dk    r
|| j        d<   || j        d<   || j        d<   ni# t          $ r Y n\w xY w|dk    rG|d d         dk    r9d| j        vr.|| j        d<   | j                                        |z
  dz   | _        n|dk    r|d d         dk    r|| j        d<   n|dk    r*|d d         dk    r| j                            |           n|dk    r|d d         dk    rd}| j                            di           }	|||dz            dk    r	 |dz  }t          ||          }
|dz  }||         }|d|z   z  }||dz  z  }t          ||          }|dz  }||||z            }|
d k    rEt          |d!          d"z  t          |d          t          |d          d"z  t          |d          d#}||	|
<   ||z  }||dz  z  }n# t           j        $ r Y nw xY w|||dz            dk    n|d$k    rJ|d d         d%k    r<t          |d          | j        d&<   	 |d'         }|| j        d(<   n]# t$          $ r Y nQw xY w|dk    rG|d d         d)k    r9|dd          | j        d*<   | j                                        |z
  dz   | j        d+<   d| j        vrd| j        v r	 |                                 }|d,         }|d-         }	 t)          |d!                   |d         z  }n# t*          $ r |}Y nw xY wt-          j        |          rt0          |d.k    r|d/z  }||f| j        d<   d S # t*          t2          t4          t0          t6          f$ r d0| j        d<   Y d S w xY wd S d S )1Nr   zAPP%d        s   JFIF   jfif   jfif_version      
   r   dpi	jfif_unitjfif_density  s   Exif exif     s   FPXR flashpix      ICC_PROFILE      s   Photoshop 3.0 	photoshops   8BIMi  r   i   )XResolutionDisplayedUnitsXYResolutionDisplayedUnitsY  s   Adobeadobe   adobe_transforms   MPF mpmpoffseti(  i     gRQ@)H   r:   )r   r   r   r   r   appapplistappendinfodivmod	Exceptiontell_exif_offseticclist
setdefaulti32structerror
IndexErrorgetexiffloat	TypeErrormathisnan
ValueErrorKeyErrorSyntaxErrorZeroDivisionError)r   r   r   sr;   versionr#   r$   offsetr.   codename_lensizedatar6   r&   resolution_unitx_resolutionr"   s                      r   APPr[   <   s6   
 	DGLLOOq ATWa((A
Vb[
!CDHSMLa!!!AbqbEW,,&)!Qii/	&G$*7C$8$8	.!		5!Iq!99c!Rjj0L A~~#/	% %.DIk"(4DIn%%  	 	 	D	 
6		aey00"" !DIf $ 2Q 6D	6		aey00 !	*	6		af(888 	A	6		af(<<<I((b99	!#$//!1f~~!V9!h,&&1*$1f~~!&4-/06>>'*4||e';+.tQ<<'*4||e';+.tR==	 D #'	$$&1*$<   3 !#$//8 
6		aex// AYY	'	;eO ,;DI'((  	 	 	D	 
6		aex//ABB%	$ !% 2Q 6	* DI&DI"5"5	&<<>>D"6lO<L#LO,,|A> # # #"#z# !  !##t"CxDIe8[*>OP 	& 	& 	&
  &DIe	& "5"5sm   :(D 
DD;B1J- -J?>J?L 
L! L!$P )O P OP O5P -P?>P?c                     t          | j                            d                    dz
  }t          j        | j        |          }|| j        d<   || j        d<   | j                            d|f           d S )Nr   commentCOM)	r   r   r   r   r   r>   r;   r<   r=   )r   r   r   rR   s       r   r^   r^      sm     	DGLLOOq ATWa((ADIiDHUOL
#####r   c                 6   t          | j                            d                    dz
  }t          j        | j        |          }t          |d          t          |d          f| _        |d         | _        | j        dk    rd| j         d}t          |          |d         | _        | j        dk    rd	| _	        n@| j        dk    rd
| _	        n-| j        dk    rd| _	        nd| j         d}t          |          |dv rdx| j
        d<   | j
        d<   | j        r| j                                         | j        d         d         t          | j                  k    r?g }| j        D ]}|                    |dd                      d                    |          }nd }|| j
        d<   g | _        t!          dt          |          d          D ]K}|||dz            }	| j                            |	d         |	d         dz  |	d         dz  |	d         f           Ld S )Nr   r9   r   r   r    zcannot handle z-bit layersr   LRGBr   CMYKz-layer images)        progressiveprogression   r-   r   icc_profiler'      r   )r   r   r   r   r   _sizebitsrP   layersmoder>   rC   sortlenr=   joinrangelayer)
r   r   r   rR   msgprofileprj   its
             r   SOFrz      s+    	DGLLOOq ATWa((AQC1II%DJ!DIyA~~5ty555#A$DK{a												9t{999#111>??	- 49]#;| <?2#dl"3"333G\ ' 'qv&&&&((7++KKK#.	- 1c!ffa   ? ?a!a%iL
1Q41QqTBY!=>>>>? ?r   c                 @   t          | j                            d                    dz
  }t          j        | j        |          }t          |          r|d         }|dz  dk    rdnd}d|dz  z   }t          |          |k     rd}t          |          t          j        |dk    rdnd|d|                   t          j	        d	k    r|dk    r
                                 fd
t          D             | j        |dz  <   ||d          }t          |          d S d S )Nr   r   rk   r   @   zbad quantization table markerBHlittlec                      g | ]
}|         S  r   ).0rx   rX   s     r   
<listcomp>zDQT.<locals>.<listcomp>  s    $C$C$CT!W$C$C$Cr   r   )r   r   r   r   r   rq   rP   arraysys	byteorderbyteswapzigzag_indexquantization)	r   r   r   rR   v	precision	qt_lengthru   rX   s	           @r   DQTr      s2    	DGLLOOq ATWa((A
a&& aDr'Q,,AAQ		B&	q66I1Cc"""{)q..33c1Qy[>JJ=H$$QMMOOO$C$C$C$Cl$C$C$C!b&!ijjM a&&     r   i  SOF0zBaseline DCTi  SOF1zExtended Sequential DCTrc   SOF2zProgressive DCTi  SOF3zSpatial losslessi  DHTzDefine Huffman tablei  SOF5zDifferential sequential DCTrd   SOF6zDifferential progressive DCTi  SOF7zDifferential spatiali  )JPG	ExtensionNi  SOF9zExtended sequential DCT (AC)re   SOF10zProgressive DCT (AC)i  SOF11zSpatial lossless DCT (AC)i  DACz%Define arithmetic coding conditioningi  SOF13z Differential sequential DCT (AC)rf   SOF14z!Differential progressive DCT (AC)i  SOF15zDifferential spatial (AC)i  )RST0z	Restart 0Ni  )RST1z	Restart 1Ni  )RST2z	Restart 2Ni  )RST3z	Restart 3Ni  )RST4z	Restart 4Ni  )RST5z	Restart 5Ni  )RST6z	Restart 6Ni  )RST7z	Restart 7Ni  )SOIzStart of imageNi  )EOIzEnd of imageN  SOSzStart of scani  r   zDefine quantization tablei  DNLzDefine number of linesi  DRIzDefine restart intervali  DHPzDefine hierarchical progressioni  EXPzExpand reference componentr   APP0zApplication segment 0r%   APP1zApplication segment 1r(   APP2zApplication segment 2i  APP3zApplication segment 3i  APP4zApplication segment 4i  APP5zApplication segment 5i  APP6zApplication segment 6i  APP7zApplication segment 7i  APP8zApplication segment 8i  APP9zApplication segment 9i  APP10zApplication segment 10i  APP11zApplication segment 11i  APP12zApplication segment 12r,   APP13zApplication segment 13r3   APP14zApplication segment 14i  APP15zApplication segment 15i  )JPG0zExtension 0Ni  )JPG1zExtension 1Ni  )JPG2zExtension 2N)JPG3zExtension 3N)JPG4zExtension 4N)JPG5zExtension 5N)JPG6zExtension 6N)JPG7zExtension 7N)JPG8zExtension 8N)JPG9zExtension 9N)JPG10zExtension 10N)JPG11zExtension 11N)JPG12zExtension 12N)JPG13zExtension 13Nr^   Comment)i  i  i  i  i  i  i  i  i  i    i  c                     | d d         dk    S )Nr9   s   r   )prefixs    r   _acceptr   P  s    "1":((r   c                   @    e Zd ZdZdZd Zd Zd Zd Zd Z	d Z
d	 Zd
S )JpegImageFileJPEGzJPEG (ISO 10918)c                    | j                             d          }t          |          sd}t          |          d}dx| _        | _        g | _        i | _        i | _        i | _	        i | _
        g | _        g | _        	 |d         }|dk    r-|| j                             d          z   }t          |          }n| j                             d          }W|t          v rlt          |         \  }}}| || |           |dk    r,| j        }| j        d	k    rd
}dd| j        z   d|dffg| _        d S | j                             d          }nA|dk    s|dk    rd}n2|dk    r| j                             d          }nd}t          |          )Nr9   znot a JPEG file   r   T   r   r   rb   CMYK;Ijpegr   r    i  i   zno marker found)r   r   r   rP   rm   rn   rt   
huffman_dc
huffman_acr   r;   r<   rC   r   MARKERro   rW   tile)r   rR   ru   rx   namedescriptionhandlerrawmodes           r   _openzJpegImageFile._open]  s   GLLOOqzz 	##Cc""" #$#	DK 
	'!ADyyQ'FF GLLOOF{{-3AY*k7&GD!$$$;;"iGyF**"*"(&49*<a'2!O PDIEGLLOOa1;;fGLLOO'!#&&&;	'r   c                     | j                             |          }|s%t          j        rt	          | d          s	d| _        dS |S )z
        internal: read more image data
        For premature EOF and LOAD_TRUNCATED_IMAGES adds EOI marker
        so libjpeg can finish decoding
        _endedTs   )r   r   r   LOAD_TRUNCATED_IMAGEShasattrr   )r   
read_bytesrR   s      r   	load_readzJpegImageFile.load_read  sM     GLL$$ 	Y4 	WT8=T=T 	 DK;r   c                    t          | j                  dk    rd S | j        rd S | j        d         \  }}}}d}| j        }|d         dk    r|dv r|| _        |df}|rt          | j        d         |d         z  | j        d         |d         z            }dD ]
}	||	k    r n|d         |d         |d         |d         z
  |	z   dz
  |	z  |d         z   |d         |d         z
  |	z   dz
  |	z  |d         z   f}| j        d         |	z   dz
  |	z  | j        d         |	z   dz
  |	z  f| _        |	}||||fg| _        |df| _        dd|d         |z  |d         |z  f}
| j        |
fS )	Nr   r   ra   )r`   YCbCrr   )r    r   r   r   r   r9   )rq   r   decoderconfigrW   ro   minrl   )r   ro   rW   deoascaleoriginal_sizerR   boxs              r   draftzJpegImageFile.draft  s   ty>>QF  	FYq\
1a	Q45==T^33DIbA 		!Q/1a1HIIE!  A::E  !!1!q1$*QqT11!q1$*QqT1	A  9Q<!+a/A5	!q8H18LQR7RSDJEAq\N	#QZ!]1%-}Q/?%/GHy#~r   c                    t          j                    \  }}t          j        |           t          j                            | j                  rt          j        dd|| j        g           n7	 t          j	        |           n# t          $ r Y nw xY wd}t          |          	 t          j        |          5 }|                                 |j        | _        d d d            n# 1 swxY w Y   	 t          j	        |           n:# t          $ r Y n.w xY w# 	 t          j	        |           w # t          $ r Y w w xY wxY w| j        j        | _        | j        j        | _        g | _        d S )Ndjpeg-outfilezInvalid Filename)tempfilemkstemposclosepathexistsfilename
subprocess
check_callunlinkOSErrorrN   r   openloadimro   rW   rl   r   )r   fr   ru   _ims        r   
load_djpegzJpegImageFile.load_djpeg  s    "$$4
7>>$-(( 		"!7Jdm"LMMMM	$    %CS//!	D!! !S


&! ! ! ! ! ! ! ! ! ! ! ! ! ! !	$   	$    GL	W\
			sx   .B 
BB%D 9!C&D &C**D -C*.D 2D 
DDD>D.-D>.
D;8D>:D;;D>c                      t          |           S N)_getexifr   s    r   r  zJpegImageFile._getexif  s    ~~r   c                      t          |           S r  )_getmpr  s    r   r  zJpegImageFile._getmp  s    d||r   c                     | j         D ]A\  }}|dk    r6|                    dd          \  }}|dk    r|                     |          c S Bi S )z
        Returns a dictionary containing the XMP tags.
        Requires defusedxml to be installed.

        :returns: XMP tags in a dictionary.
        r       r   s   http://ns.adobe.com/xap/1.0/)r<   rsplit_getxmp)r   segmentcontentr   xmp_tagss        r   getxmpzJpegImageFile.getxmp  sg     !% 	2 	2GW&  #*>>'1#=#= <<<<<11111	r   N)__name__
__module____qualname__formatformat_descriptionr   r   r   r
  r  r  r  r   r   r   r   r   Y  s        F+1' 1' 1'f   " " "H  >        r   r   c                 d    d| j         vrd S |                                                                 S )Nr&   )r>   rI   _get_merged_dictr  s    r   r  r    s.    TYt<<>>**,,,r   c           	         	 | j         d         }n# t          $ r Y d S w xY wt          j        |          }|                    d          }|d d         dk    rdnd}ddlm} 	 |                    |          }|                    |j	                   |
                    |           t          |          }n$# t          $ r}d	}	t          |	          |d }~ww xY w	 |d
         }
n$# t          $ r}d}	t          |	          |d }~ww xY wg }	 |d         }t          d|
          D ]}t          j        | d||dz            }d}t          t#          ||                    }t%          |d         dz            t%          |d         dz            t%          |d         dz            |d         dz  dz	  |d         dz  dz	  |d         dz  d}|d         dk    rd|d<   nd}	t          |	          ddd d!d"d#d$d%}|                    |d&         d'          |d&<   ||d<   |                    |           ||d<   n$# t          $ r}d(}	t          |	          |d }~ww xY w|S ))Nr7   r    r   s   MM *><r   )TiffImagePluginz)malformed MP Index (unreadable directory)  z(malformed MP Index (no number of images)i  r   LLLHHrk   )	AttributeSize
DataOffsetEntryNo1EntryNo2r&  l        i   @i    i      i      i )DependentParentImageFlagDependentChildImageFlagRepresentativeImageFlagReservedImageDataFormatMPTyper1  r   z!unsupported picture format in MPO	Undefinedz Large Thumbnail (VGA Equivalent)z$Large Thumbnail (Full HD Equivalent)zMulti-Frame Image (Panorama)zMulti-Frame Image: (Disparity)z Multi-Frame Image: (Multi-Angle)zBaseline MP Primary Image)r   i  i  i  i  i  i   r2  Unknownz!malformed MP Index (bad MP Entry))r>   rO   ioBytesIOr   r   r#  ImageFileDirectory_v2seeknextr  dictr@   rP   rs   rF   unpack_fromzipboolgetr=   )r   rX   file_contentshead
endiannessr#  r>   r7   r   ru   quant	mpentriesrawmpentriesentrynumunpackedentrylabelsmpentrympentryattr	mptypemaps                      r   r  r    s   y   ttJt$$Ma  DRaR$777SJ!!!!!!&44T::49%%%		-   $ZZ & & &9#A%&&6
 & & &8#A%& I$&&za 	& 	&H".$$$lHrM M QF3v}5566G,01E1Q,R,R+/0D0P+Q+Q+/0D0P+Q+Q$[1W="D$+K$8G$D#K!+.; K ,-2217-..9!#&&&%<@8:<5 I %.MM+h2G$S$SK!#.GK W%%%%6

 & & &1#A%& IsV    
#AB7 7
CCCC% %
D/DDD/H< <
IIIr`   ra   r   r   )1r`   ra   RGBXrb   r   )@r   r   r   r'   r-   r   r+     r   r   r   ri   rk         *   r9   r    r*            )   +   	   r5      r,     (   ,   5   r!             '   -   4   6         !   &   .   3   7   <      "   %   /   2   8   ;   =   #   $   0   1   9   :   >   ?   r   ))r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   c                     t          | d          r	| j        dv rdS | j        d         dd         | j        d         dd         z   | j        d         dd         z   }t                              |d          S )Nrn   )r   r   r   r   r9   r   )r   rn   rt   	samplingsr>  )r  samplings     r   get_samplingr  k  sw     2x   BI$7$7rx{1Q3"(1+ac"22RXa[15EEH==2&&&r   c                 
   | j         dk    s| j        dk    rd}t          |          	 t          | j                 }n-# t
          $ r }d| j         d}t          |          |d }~ww xY w| j        }d |                    dd          D             }|                    dd	          }|                    d
d	          }	|                    d          }
|dk    rd	}d}	d}
n|t          v r;t          |         }d	}|                    d
d	          }	|                    d          }
nt          |t                    sd}t          |          |	t          v r!t          |	                             d
d	          }	t          |
t                    r)|
t          v r t          |
                             d          }
|	dk    rd}	nL|	dk    rd}	nC|	dk    rd}	n:|	dk    rd}	n1|	dk    r+| j        dk    rd}t          |          t          |           }	d }|
dk    r-| j        dk    rd}t          |          t          | dd           }
 ||
          }
|                    dd          }d}|                    d          }|rd}||z
  }g }|r)|                    |d |                    ||d          }|)d}|D ]d}t#          d|z   t%          |          z             }|d|z   dz   t'          |          z   t'          t%          |                    z   |z   z  }|dz  }e|                    d| j                            d                    }|                    d d!          p|                    d"d!          }|                    d#d!          }|                    d$d          }t          |t*          j                  r|                                }t%          |          |k    rd%}t          |          |||                    d&d          ||                    d'd          |d         |d         |	|
|||f| _        d}|s|rp| j        d(k    rd)| j        d         z  | j        d         z  }nF|d*k    s|d	k    rd| j        d         z  | j        d         z  }n| j        d         | j        d         z  }t5          t6          j        |t%          |          d+z   t%          |          dz             }t7          j        | |d,d| j        z   d|fg|           d S )-Nr   z cannot write empty image as JPEGzcannot write mode z as JPEGc                 ,    g | ]}t          |          S r   )round)r   xs     r   r   z_save.<locals>.<listcomp>  s    
5
5
5588
5
5
5r   r"   r   qualityr|  subsamplingqtableskeepr   zInvalid quality settingz4:4:4z4:2:2r   z4:2:0r   z4:1:1r   z3Cannot use 'keep' when original image is not a JPEGc                 v      S t           t                    rn	 d                                  D             fdt          dt	                    d          D              n$# t
          $ r}d}t          |          |d }~ww xY wt           t          t          t          f          rt           t                    r) fdt          t	                               D              n$t           t                    rt                      dt	                     cxk     rdk     sn d}t          |          t                     D ]k\  }}	 t	          |          dk    rt          t          j        d	|          }t          |           |<   H# t          $ r}d}t          |          |d }~ww xY w S d S )
Nc                     g | ]B}|                     d d          d                                          D ]}t          |          CS )#r   r   )splitint)r   linenums      r   r   z3_save.<locals>.validate_qtables.<locals>.<listcomp>  sd       #zz#q11!4::<<   HH   r   c                 *    g | ]}||d z            S )r|   r   )r   rR   liness     r   r   z3_save.<locals>.validate_qtables.<locals>.<listcomp>  s&    OOO5QV,OOOr   r   r|   zInvalid quantization tablec                 (    g | ]}|v |         S r   r   )r   keyr  s     r   r   z3_save.<locals>.validate_qtables.<locals>.<listcomp>  s)       %(3'>>GCL>>>r   r   z$None or too many quantization tablesr~   )
isinstancestr
splitlinesrs   rq   rN   tuplelistr:  	enumeraterK   r   )r  r   ru   idxtabler  s   `    @r   validate_qtablesz_save.<locals>.validate_qtables  s   ?Ngs## 	P
P  ' 2 2 4 4   POOOeAs5zz26N6NOOO	  - - -2 oo1,-
 gtT233 	'4(( (   ,1#g,,,?,?   GU++ (w--G((((q((((< oo%'00 	/ 	/
U/5zzR'''!KU33E
 $(;;GCLL	 ! 1 1 16C$S//q01
 N)	 	s/   A& &
B0BB/F
F4F//F4extrar   r   rj   r-   s   r+   r]   rg   Frh   optimizer&   zEXIF data is too longsmooth
streamtyperb   r   _   r   r   )widthheightrN   RAWMODEro   rO   r  encoderinfor>  r
   r  r  r  r  r  getattrr=   o16rq   r   r>   r   ExiftobytesencoderconfigrW   maxr   MAXBLOCK_save)r  r   r   ru   r   r   r>   r"   r  r  r  presetr  r  MAX_BYTES_IN_MARKERrj   ICC_OVERHEAD_LENMAX_DATA_BYTES_IN_MARKERmarkersrx   r   rW   r]   rg   r  r&   bufsizes                              r   r  r  y  s   	x1}}	Q0oo""'" " " "427444cll!" >D
5
5TXXeV44
5
5
5Chhy"%%G((="--Khhy!!G&	G		!jj33**^,,%% ;'oo'!!!+.22="EEKgs## 	;7(:(:g&**>::Gg									 			9GCS//!"2&&# # #J &9GCS//!"nd33w''GHHWc""E((=))K #69I#I  	ANN;'@(@'@ABBB%&>&?&?@K  	A  
	 
	Fq++c&kk9::D"# Q%% S\\""	#
 E FAAhhy"'++i"8"899G
 ((=%00RDHH]E4R4RKxx
E**H88FC  D$
## ||~~
4yy&&&%oo 	1q!!AAB& G .; .7f"'!*nrwqz1GG]]gmm"'!*nrwqz1GGgaj271:-G )$gs4yy1}c%jj1nMMGOBffrw&67CDgNNNNNs   < 
A&A!!A&c                     |                                  }t          j        dd||g           	 t          j        |           d S # t
          $ r Y d S w xY w)Ncjpegr   )_dumpr  r  r   r  r  )r  r   r   r   s       r   _save_cjpegr  (  sf    xxzzH7J(CDDD
	(   s   A 
AAc                    t          | |          }	 |                                }|d         dk    rddlm} |                    ||          }n6# t
          t          f$ r Y n#t          $ r t          j	        d           Y nw xY w|S )Nr$  r   )MpoImageFilezTImage appears to be a malformed MPO file, it will be interpreted as a base JPEG file)
r   r  MpoImagePluginr  adoptrK   rH   rP   warningswarn)r   r   r  mpheaderr  s        r   jpeg_factoryr  4  s    	r8	$	$B
99;;E?Q444444 ##B11Bz"    
 
 
.	
 	
 	
 	
 	


 Is   <A B"BB)z.jfifz.jpez.jpgz.jpegz
image/jpeg)NN),r   r5  rL   r   rF   r  r   r   r  r   r   r   _binaryr   r   r   rE   r   r	   r  JpegPresetsr
   r   r[   r^   rz   r   r   r   r   r  r  r  r   r}  r  r  r  r  register_openr  register_saveregister_extensionsregister_mimer   r   r   <module>r     s  D  				  				      



           ! ! ! ! ! ! ! ! ! ! ! !       ! ! ! ! ! !            % % %
v& v& v&r$ $ $/? /? /?d  6@

V^S)@

V.4@
 V&,@
 V'-	@

 U*D1@
 V2C8@
 V3S9@
 V+S1@
 &@
 V3S9@
 W,c2@
 W137@
 U;TB@
 W8#>@
 W93?@
  W137!@
" '#@
 @
$ '%@
& ''@
( ')@
* '+@
, '-@
. '/@
0 '1@
2 +3@
4 )5@
6 UOT*7@
8 U/59@
: U,d3;@
< U-t4=@
> U5s;?@
@ U0$7A@
B V,c2C@
D V,c2E@
 @
 @
F V,c2G@
H V,c2I@
J V,c2K@
L V,c2M@
N V,c2O@
P V,c2Q@
R V,c2S@
T V,c2U@
V W.4W@
X W.4Y@
Z W.4[@
\ W.4]@
^ W.4_@
` W.4a@
b )c@
d )e@
f )g@
 @
h *))))))++++Is#@
 @
 @
F) ) )] ] ] ] ]I' ] ] ]@- - -I I I` 
	 	  	' ' 'lO lO lO^     0  M(, @ @ @  M(% 0 0 0  -.0R0R0R S S S  M(, 7 7 7 7 7r   