home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 6_2008-2009.ISO / data / zips / PolyCube_C2153625292009.psc / cJpeg.cls < prev   
Text File  |  2005-10-03  |  47KB  |  701 lines

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4.   Persistable = 0  'NotPersistable
  5.   DataBindingBehavior = 0  'vbNone
  6.   DataSourceBehavior  = 0  'vbNone
  7.   MTSTransactionMode  = 0  'NotAnMTSObject
  8. END
  9. Attribute VB_Name = "cJpeg"
  10. Attribute VB_GlobalNameSpace = False
  11. Attribute VB_Creatable = True
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = False
  14.  
  15. Option Explicit
  16.    Option Base 0
  17.    
  18.    'Class Name:   cJpeg.cls  "JPEG Encoder Class"
  19.    'Author:       John Korejwa  <korejwa@tiac.net>
  20.    'Version:      0.9 beta  [26 / November / 2003]
  21.    '
  22.    '
  23.    'Legal:
  24.    '        This class is intended for and was uploaded to www.planetsourcecode.com
  25.    '
  26.    '        This product includes JPEG compression code developed by John Korejwa.  <korejwa@tiac.net>
  27.    '        Source code, written in Visual Basic, is freely available for non-commercial,
  28.    '        non-profit use at www.planetsourcecode.com.
  29.    '
  30.    '
  31.    'Credits:
  32.    '        Special thanks to Barry G., a government research scientist who took an interest in my
  33.    '        steganography software and research in late 1999.  I never met Barry in person, but he
  34.    '        was kind enough to buy and mail me a book with the ISO DIS 10918-1 JPEG standard.
  35.    '
  36.    '
  37.    'Description:  This class contains code for compressing pictures, sampled via hDC, into
  38.    '              baseline .JPG files.  Please report any errors or unusual behavior to the email
  39.    '              address above.
  40.    '
  41.    'Dependencies: None
  42.    '
  43.    
  44.    'JPEG Marker Constants                (Note: VB compiler does not compile unused constants)
  45.    'Non-Differential Huffman Coding
  46.    Private Const SOF0    As Long = &HC0& 'Baseline DCT
  47.    Private Const SOF1    As Long = &HC1& 'Extended sequential DCT
  48.    Private Const SOF2    As Long = &HC2& 'Progressive DCT
  49.    Private Const SOF3    As Long = &HC3& 'Spatial (sequential) lossless
  50.    'Differential Huffman coding
  51.    Private Const SOF5    As Long = &HC5& 'Differential sequential DCT
  52.    Private Const SOF6    As Long = &HC6& 'Differential progressive DCT
  53.    Private Const SOF7    As Long = &HC7& 'Differential spatial
  54.    'Non-Differential arithmetic coding
  55.    Private Const JPG     As Long = &HC8& 'Reserved for JPEG extentions
  56.    Private Const SOF9    As Long = &HC9& 'Extended sequential DCT
  57.    Private Const SOF10   As Long = &HCA& 'Progressive DCT
  58.    Private Const SOF11   As Long = &HCB& 'Spatial (sequential) lossless
  59.    'Differential arithmetic coding
  60.    Private Const SOF13   As Long = &HCD& 'Differential sequential DCT
  61.    Private Const SOF14   As Long = &HCE& 'Differential progressive DCT
  62.    Private Const SOF15   As Long = &HCF& 'Differential Spatial
  63.    'Other Markers
  64.    Private Const DHT     As Long = &HC4& 'Define Huffman tables
  65.    Private Const DAC     As Long = &HCC& 'Define arithmetic coding conditioning(s)
  66.    Private Const RSTm    As Long = &HD0& 'Restart with modulo 8 count "m"
  67.    Private Const RSTm2   As Long = &HD7& 'to 'Restart with modulo 8 count "m"
  68.    Private Const SOI     As Long = &HD8& 'Start of image
  69.    Private Const EOI     As Long = &HD9& 'End of image
  70.    Private Const SOS     As Long = &HDA& 'Start of scan
  71.    Private Const DQT     As Long = &HDB& 'Define quantization table(s)
  72.    Private Const DNL     As Long = &HDC& 'Define number of lines
  73.    Private Const DRI     As Long = &HDD& 'Define restart interval
  74.    Private Const DHP     As Long = &HDE& 'Define hierarchical progression
  75.    Private Const EXP     As Long = &HDF& 'Expand reference components
  76.    Private Const APP0    As Long = &HE0& 'Reserved for application segments
  77.    Private Const APPF    As Long = &HEF& '  to Reserved for application segments
  78.    Private Const JPGn    As Long = &HF0& 'Reserved for JPEG Extentions
  79.    Private Const JPGn2   As Long = &HFD& '  to Reserved for JPEG Extentions
  80.    Private Const COM     As Long = &HFE& 'Comment
  81.    Private Const RESm    As Long = &H2&  'Reserved
  82.    Private Const RESm2   As Long = &HBF& '  to Reserved
  83.    Private Const TEM     As Long = &H1&  'For temporary use in arithmetic coding
  84.    
  85.    'Consider these arrays of constants.
  86.    'They are initialized with the class and do not change.
  87.    Private QLumin(63)    As Integer 'Standard Luminance   Quantum (for 50% quality)
  88.    Private QChrom(63)    As Integer 'Standard Chrominance Quantum (for 50% quality)
  89.    Private FDCTScale(7)  As Double  'Constants for scaling FDCT Coefficients
  90.    Private IDCTScale(7)  As Double  'Constants for scaling IDCT Coefficients
  91.    Private ZigZag(7, 7)  As Long    'Zig Zag order of 8X8 block of samples
  92.    
  93.    'API constants
  94.    Private Const BLACKONWHITE    As Long = 1 'nStretchMode constants for
  95.    Private Const COLORONCOLOR    As Long = 3 '  SetStretchBltMode() API function
  96.    Private Const HALFTONE        As Long = 4 'HALFTONE not supported in Win 95, 98, ME
  97.    
  98.    Private Const BI_RGB          As Long = 0
  99.    Private Const DIB_RGB_COLORS  As Long = 0
  100.    
  101.    'Variable types needed for DIBSections.
  102.    Private Type SAFEARRAYBOUND
  103.    cElements         As Long
  104.    lLbound           As Long
  105. End Type
  106. Private Type SAFEARRAY2D
  107. cDims             As Integer
  108. fFeatures         As Integer
  109. cbElements        As Long
  110. cLocks            As Long
  111. pvData            As Long
  112. Bounds(0 To 1)    As SAFEARRAYBOUND
  113. End Type
  114. Private Type RGBQUAD
  115. rgbBlue           As Byte
  116. rgbGreen          As Byte
  117. rgbRed            As Byte
  118. rgbReserved       As Byte
  119. End Type
  120. Private Type BITMAPINFOHEADER
  121. biSize            As Long
  122. biWidth           As Long
  123. biHeight          As Long
  124. biPlanes          As Integer
  125. biBitCount        As Integer
  126. biCompression     As Long
  127. biSizeImage       As Long
  128. biXPelsPerMeter   As Long
  129. biYPelsPerMeter   As Long
  130. biClrUsed         As Long
  131. biClrImportant    As Long
  132. End Type
  133. Private Type BITMAPINFO
  134. bmiHeader         As BITMAPINFOHEADER
  135. bmiColors         As RGBQUAD
  136. End Type
  137.  
  138. 'API needed for creating DIBSections for sampling and pixel access.
  139. Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hDC As Long) As Long
  140. Private Declare Function CreateDIBSection2 Lib "gdi32" Alias "CreateDIBSection" (ByVal hDC As Long, pBitmapInfo As BITMAPINFO, ByVal un As Long, lplpVoid As Long, ByVal handle As Long, ByVal dw As Long) As Long   'lplpVoid changed to ByRef
  141. Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
  142. Private Declare Function SelectObject Lib "gdi32" (ByVal hDC As Long, ByVal hObject As Long) As Long
  143. Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
  144. Private Declare Function DeleteDC Lib "gdi32" (ByVal hDC As Long) As Long
  145. Private Declare Function VarPtrArray Lib "msvbvm60.dll" Alias "VarPtr" (Ptr() As Any) As Long
  146. Private Declare Function SetStretchBltMode Lib "gdi32" (ByVal hDC As Long, ByVal nStretchMode As Long) As Long
  147. Private Declare Function StretchBlt Lib "gdi32" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long
  148. Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (lpvDest As Any, lpvSource As Any, ByVal cbCopy As Long)
  149.  
  150. 'Custom variable types used for this JPEG encoding implementation
  151. Private Type QUANTIZATIONTABLE
  152. Qk(63)            As Integer 'Quantization Values
  153. FScale(63)        As Single  'Multiplication values to scale and Quantize   FDCT output
  154. IScale(63)        As Single  'Multiplication values to scale and DeQuantize IDCT input
  155. End Type
  156. Private Type HUFFMANTABLE
  157. BITS(15)          As Byte    'Number of huffman codes of length i+1
  158. HUFFVAL(255)      As Byte    'Huffman symbol values
  159. EHUFSI(255)       As Long    'Huffman code size for symbol i
  160. EHUFCO(255)       As Long    'Huffman code      for symbol i
  161. MINCODE(15)       As Long    '
  162. MAXCODE(15)       As Long    'Largest code value for length i+1
  163. End Type
  164. Private Type COMPONENT
  165. Ci                As Long    'Component ID                       [0-255]
  166. Hi                As Long    'Horizontal Sampling Factor         [1-4]
  167. Vi                As Long    'Vertical   Sampling Factor         [1-4]
  168. Tqi               As Long    'Quantization Table Select          [0-3]
  169. data()            As Integer 'DCT Coefficients
  170. End Type
  171.  
  172. Private PP            As Long    'Sample Precision [8, 12]
  173. Private YY            As Long    'Number of lines             [Image Height]
  174. Private XX            As Long    'Number of samples per line  [Image Width]
  175. Private Nf            As Long    'Number of components in Frame
  176.  
  177. Private HMax          As Long    'Maximum horizontal sampling frequency
  178. Private VMax          As Long    'Maximum vertical   sampling frequency
  179.  
  180. Private m_Data()      As Byte    'JPEG File Data
  181. Private m_Chr         As Long    'Current Character in m_Data
  182. Private m_Ptr         As Long    'Byte index in m_Data
  183. Private m_Bit         As Long    'Bit  index in m_Chr
  184.  
  185. Private m_Block(7, 7) As Single  'Buffer for calculating DCT
  186.  
  187. Private QTable(3)     As QUANTIZATIONTABLE  '4 Quantization Tables
  188. Private HuffDC(3)     As HUFFMANTABLE       '4 DC Huffman Tables
  189. Private HuffAC(3)     As HUFFMANTABLE       '4 AC Huffman Tables
  190. Private Comp()        As COMPONENT          'Scan Components
  191.  
  192. Private m_Quality     As Long
  193. Private m_Comment     As String
  194.  
  195. '========================================================================================
  196.    '              D I S C R E T E   C O S I N E   T R A N S F O R M A T I O N
  197.    '========================================================================================
  198.    Private Sub FDCT()
  199.    Static t0   As Single 'Given an 8X8 block of discretely sampled values [m_Block(0-7, 0-7)],
  200.    Static t1   As Single 'replace them with their (scaled) Forward Discrete Cosine Transformation values.
  201.    Static t2   As Single '80 (+64) multiplications and 464 additions are needed.
  202.    Static t3   As Single 'Values are scaled on output, meaning that each of the 64 elements must be
  203.    Static t4   As Single 'multiplied by constants for a final FDCT.  These final constants are combined
  204.    Static t5   As Single 'with Quantization constants, so a final 64 multiplications combine the
  205.    Static t6   As Single 'completion of the FDCT and Quantization in one step.
  206.    Static t7   As Single
  207.    Static t8   As Single
  208.    Static i    As Long
  209.    
  210.    For i = 0 To 7                  'Process 1D FDCT on each row
  211.       t0 = m_Block(i, 0) + m_Block(i, 7)
  212.       t1 = m_Block(i, 0) - m_Block(i, 7)
  213.       t2 = m_Block(i, 1) + m_Block(i, 6)
  214.       t3 = m_Block(i, 1) - m_Block(i, 6)
  215.       t4 = m_Block(i, 2) + m_Block(i, 5)
  216.       t5 = m_Block(i, 2) - m_Block(i, 5)
  217.       t6 = m_Block(i, 3) + m_Block(i, 4)
  218.       t7 = m_Block(i, 3) - m_Block(i, 4)
  219.       
  220.       t7 = t7 + t5
  221.       t8 = t0 - t6
  222.       t6 = t6 + t0
  223.       t0 = t2 + t4
  224.       t2 = (t2 - t4 + t8) * 0.707106781186548   'Cos(2# * PI / 8#)
  225.       t4 = t1 + t3
  226.       t3 = (t3 + t5) * 0.707106781186548        'Cos(2# * PI / 8#)
  227.       t5 = (t4 - t7) * 0.382683432365091        'Cos(3# * PI / 8#)
  228.       t7 = t7 * 0.541196100146196 - t5          'Cos(PI / 8#) - Cos(3# * PI / 8#)
  229.       t4 = t4 * 1.30656296487638 - t5           'Cos(PI / 8#) + Cos(3# * PI / 8#)
  230.       t5 = t1 + t3
  231.       t1 = t1 - t3
  232.       
  233.       m_Block(i, 0) = t6 + t0
  234.       m_Block(i, 4) = t6 - t0
  235.       m_Block(i, 1) = t5 + t4
  236.       m_Block(i, 7) = t5 - t4
  237.       m_Block(i, 2) = t8 + t2
  238.       m_Block(i, 6) = t8 - t2
  239.       m_Block(i, 5) = t1 + t7
  240.       m_Block(i, 3) = t1 - t7
  241.    Next i
  242.    
  243.    For i = 0 To 7                   'Process 1D FDCT on each column
  244.       t0 = m_Block(0, i) + m_Block(7, i)
  245.       t1 = m_Block(0, i) - m_Block(7, i)
  246.       t2 = m_Block(1, i) + m_Block(6, i)
  247.       t3 = m_Block(1, i) - m_Block(6, i)
  248.       t4 = m_Block(2, i) + m_Block(5, i)
  249.       t5 = m_Block(2, i) - m_Block(5, i)
  250.       t6 = m_Block(3, i) + m_Block(4, i)
  251.       t7 = m_Block(3, i) - m_Block(4, i)
  252.       
  253.       t7 = t7 + t5
  254.       t8 = t0 - t6
  255.       t6 = t6 + t0
  256.       t0 = t2 + t4
  257.       t2 = (t2 - t4 + t8) * 0.707106781186548   'Cos(2# * PI / 8#)
  258.       t4 = t1 + t3
  259.       t3 = (t3 + t5) * 0.707106781186548        'Cos(2# * PI / 8#)
  260.       t5 = (t4 - t7) * 0.382683432365091        'Cos(3# * PI / 8#)
  261.       t7 = t7 * 0.541196100146196 - t5          'Cos(PI / 8#) - Cos(3# * PI / 8#)
  262.       t4 = t4 * 1.30656296487638 - t5           'Cos(PI / 8#) + Cos(3# * PI / 8#)
  263.       t5 = t1 + t3
  264.       t1 = t1 - t3
  265.       
  266.       m_Block(0, i) = t6 + t0
  267.       m_Block(4, i) = t6 - t0
  268.       m_Block(1, i) = t5 + t4
  269.       m_Block(7, i) = t5 - t4
  270.       m_Block(2, i) = t8 + t2
  271.       m_Block(6, i) = t8 - t2
  272.       m_Block(5, i) = t1 + t7
  273.       m_Block(3, i) = t1 - t7
  274.    Next i
  275. End Sub
  276.  
  277. '================================================================================
  278.    '                 H U F F M A N   T A B L E   G E N E R A T I O N
  279.    '================================================================================
  280.    Private Sub OptimizeHuffman(TheHuff As HUFFMANTABLE, freq() As Long)
  281.    'Generate optimized values for BITS and HUFFVAL in a HUFFMANTABLE
  282.    'based on symbol frequency counts.  freq must be dimensioned freq(0-256)
  283.    'and contain counts of symbols 0-255.  freq is destroyed in this procedure.
  284.    Dim i              As Long
  285.    Dim j              As Long
  286.    Dim k              As Long
  287.    Dim n              As Long
  288.    Dim V1             As Long
  289.    Dim V2             As Long
  290.    Dim others(256)    As Long
  291.    Dim codesize(256)  As Long
  292.    Dim BITS(256)      As Long
  293.    Dim swp            As Long
  294.    Dim swp2           As Long
  295.    
  296.    For i = 0 To 256  'Initialize others to -1, (this value terminates chain of indicies)
  297.       others(i) = -1
  298.    Next i
  299.    freq(256) = 1     'Add dummy symbol to guarantee no code will be all '1' bits
  300.    
  301.    'Generate codesize()   [find huffman code sizes]
  302.    Do 'do loop for (#non-zero-frequencies - 1) times
  303.       V1 = -1                            'find highest v1 for      least value of freq(v1)>0
  304.       V2 = -1                            'find highest v2 for next least value of freq(v2)>0
  305.       swp = 2147483647 'Max Long variable
  306.       swp2 = 2147483647
  307.       For i = 0 To 256
  308.          If freq(i) <> 0 Then
  309.             If (freq(i) <= swp2) Then
  310.                If (freq(i) <= swp) Then
  311.                   swp2 = swp
  312.                   V2 = V1
  313.                   swp = freq(i)
  314.                   V1 = i
  315.                Else
  316.                   swp2 = freq(i)
  317.                   V2 = i
  318.                End If
  319.             End If
  320.          End If
  321.       Next i
  322.       If V2 = -1 Then
  323.          freq(V1) = 0 'all elements in freq are now set to zero
  324.          Exit Do      'done
  325.       End If
  326.       freq(V1) = freq(V1) + freq(V2)     'merge the two branches
  327.       freq(V2) = 0
  328.       codesize(V1) = codesize(V1) + 1    'Increment all codesizes in v1's branch
  329.       While (others(V1) >= 0)
  330.          V1 = others(V1)
  331.          codesize(V1) = codesize(V1) + 1
  332.          Wend
  333.          others(V1) = V2                    'chain v2 onto v1's branch
  334.          codesize(V2) = codesize(V2) + 1    'Increment all codesizes in v2's branch
  335.          While (others(V2) >= 0)
  336.             V2 = others(V2)
  337.             codesize(V2) = codesize(V2) + 1
  338.             Wend
  339.             Loop
  340.             
  341.             'Count BITS  [find the number of codes of each size]
  342.             n = 0
  343.             For i = 0 To 256
  344.                If codesize(i) <> 0 Then
  345.                   BITS(codesize(i)) = BITS(codesize(i)) + 1
  346.                   If n < codesize(i) Then n = codesize(i)    'Keep track of largest codesize
  347.                End If
  348.             Next i
  349.             
  350.             'Adjust BITS  [limit code lengths to 16 bits]
  351.             i = n
  352.             While i > 16
  353.                While BITS(i) > 0
  354.                   For j = i - 2 To 1 Step -1        'Since symbols are paired for the longest Huffman
  355.                      If BITS(j) > 0 Then Exit For  'code, the symbols are removed from this length
  356.                   Next j                            'category two at a time.  The prefix for the pair
  357.                   BITS(i) = BITS(i) - 2             '(which is one bit shorter) is allocated to one
  358.                   BITS(i - 1) = BITS(i - 1) + 1     'of the pair;  then, (skipping the BITS entry for
  359.                   BITS(j + 1) = BITS(j + 1) + 2     'that prefix length) a code word from the next
  360.                   BITS(j) = BITS(j) - 1             'shortest non-zero BITS entry is converted into
  361.                Wend                                  'a prefix for two code words one bit longer.
  362.                i = i - 1
  363.                Wend
  364.                BITS(i) = BITS(i) - 1                  'Remove dummy symbol code from the code length count
  365.                
  366.                'Copy BITS and HUFFVAL to the HUFFMANTABLE  [HUFFVAL sorted by code length, then by value]
  367.                With TheHuff
  368.                   For i = 1 To 16
  369.                      .BITS(i - 1) = BITS(i)
  370.                   Next i
  371.                   k = 0
  372.                   For i = 1 To n
  373.                      For j = 0 To 255
  374.                         If codesize(j) = i Then
  375.                            .HUFFVAL(k) = j
  376.                            k = k + 1
  377.                         End If
  378.                      Next j
  379.                   Next i
  380.                End With
  381.                
  382.             End Sub
  383. Private Sub ExpandHuffman(TheHuff As HUFFMANTABLE, Optional MaxSymbol As Long = 255)
  384.    'Given a HUFFMANTABLE with valid BITS and HUFFVAL, generate tables for
  385.    'EHUFCO, EHUFSI, MAXCODE, and MINCODE so the table may be used for compression
  386.    'and/or decompression.  In JPEG, MaxSymbol is 255 for an AC Huffman Table.  For
  387.    'DC Tables, MaxSymbol is 11 for PP=8 bit precission, or 15 for PP=12 bit precission.
  388.    Dim i          As Long 'Index for BITS
  389.    Dim j          As Long 'Index for HUFFVAL
  390.    Dim k          As Long 'Index for last HUFFVAL of length (i+1)
  391.    Dim si         As Long 'Huffman code size  ( =2^i )
  392.    Dim code       As Long 'Huffman code
  393.    Dim symbol     As Long 'Huffman symbol
  394.    
  395.    With TheHuff
  396.       
  397.       For i = 0 To 255
  398.          .EHUFSI(i) = 0      'Clear existing values so we can
  399.          .EHUFCO(i) = -1     'check for duplicate huffman symbols
  400.       Next i
  401.       
  402.       j = 0
  403.       si = 1
  404.       code = 0
  405.       For i = 0 To 15
  406.          k = j + .BITS(i)
  407.          If k > 256 Then Err.Raise 1, , "Bad Huffman Table" 'more than 256 symbols
  408.          If j = k Then 'no codes of length i+1
  409.          .MINCODE(i) = j - code
  410.          .MAXCODE(i) = -1
  411.       Else
  412.          .MINCODE(i) = j - code
  413.           m_Block(4, ite huffman    'i e HUFFM - ,st1odesiz(= 0 To 7                 HDC& 'Define numbe   i    'i e Ht1odesiz(= 0 7an sybional MaxSy'DefiIisDVnS  D , "Bad Huffman Table ate QChrom(63)    As IntegmPm   'a    As IntegmPm  5Ht1odesionB(63) DlNt3
  414.    = j -    ) = -irR i = 1  -  
  415.    Wiman imMlsionB(6 Gbe QC '
  416.    Dimmmmmmments mustindesion9uffman symw   uman imMn symw   uma1  For     ionisDVnS  D ,  iteuff   Wiman imMlsioDV
  417.  rWhi, " ,  iteuff   W.V
  418.  rWhi, " , irR i = 1  -  
  419.    Wsiiiiiizuefek rWhi, i 1  -mNh7niteuff   W st i 1  -mNn              
  420.              6srvrG i 1LrvrS entrs mi3tineip   W st i 1  -mNd If
  421.   For1)>0
  422. n        a.5gXkax        ulating DCC  etmi3t r1      0
  423.       si ovrG i 1LrvrS entrs m===  aS entrs entrs e i 1LrvrS ent eni
  424.    Dimmmmm16 eni
  425.    Dimmm_Blo     
  426.    Dimmmmm    As Long
  427. HADimables, MaxSymbol is 11 for PP=8 bit precission, or 15 fogbit p mmmm    As Long rge t   c L E   G E N E R A T I O N
  428.  c i -h
  429.        x Long varia d As Long rge     fogbo x Long varia d move dummy symnI O N
  430.  c      6srvrG i 1LrvrS enXch
  431.   7 rg2UBting values so we ca, "Bad Hufession.  In2ortant  a, "B 1 iiQ p enXchV j -    ) = -irR i = 1 Aission, or 15 fogbi k = jk(6, iNdE   G E N E R6D e -irRn,Il=
  432.        GnXchE so tIo R6D e -ir   Gn7ai) = r8Ei k = jk(6, iNdE   G 1rD_^i )
  433. JlvaluesD e -idE   G 1rDSeo0i+         = m_iirrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrl m_iirrrrrrMsrrrrrrrr
  434.    Dimsrrrl m_iirrrrrrMsrrrrrrrr
  435.    Dirrrrrrrrrra.5gXkax        u+',les for
  436.    'EHUFCO, E2   m vpi)
  437.       t1 = m,   m_rrremsrrrjcu0rrrrra.5gXkax       k = 4rrrrrrra.5gXkdFCO, E2   m vpi)ode size  ( CO, Ec      'and/or dec)m m_ii5no zero
  438.          Exit Do      'd = m,   m_r   ITS(Atr   ?"vrS enXt9= m,   m_r   DiIgbo x Long varm,   m_r   D
  439.           "vrSo2x6freq(VhDh=A) = BITS(i)
  440.  uo2x6freq(VhDh=
  441.      DiD e -idE   G msrr  st ]v   )7ir   Gn7aXw tXw B  G 1rD_^i )
  442. JlvaluesD @rnaxSymbol is 11 E   G msrr  st ]vm_Block(1,ppppppiamboRnbles eV
  443.  rWhi, "ss 1D FDCT on each columRs 11rvrG?6        u+',les for
  444.    'EHUFCyTI'   '    bles eV
  445.  es eV
  446.  es eVI-h
  447.        x Long       g    'Count BITS  5'   eN'   desEaaaaaaaaaaaaaaaaa "Bad Hufession.  (      g    'Count BITS  aluon.  (   laluon.  (   laluon. RDulaluon. RDulaluon. RDu   End With
  448.             r   lar   lar   lar   1LrvrS entrs2o cow6Du   End Wibi, "ssfRtr
  449.    'EHUFCO, E2  .HU  var   lar   lar   1LrvrS entrs2o cJ
  450. ct D6^^^^^^^^^^^= m   1Lrv G 1rD_^i )nDAnHU  var      rD_^4i  rD_ luon. RDulaC      Wend nr   lar   tgct D6^^^^^^^h3i
  451.   i> 0 ThennleE      "vrn. RDunDAhe ttttttttVO, p9lhennm^^^^^^^h3iers(256)    As Long
  452.    Dim cogAi@E      ocwn seh a tBLrv G 1 vpi)o   'IncrehenYBhis JPEhtttVO,A7aiB4n. RDulaC     tDD.= t6 + tYf blocg
  453. H          If BITS(unctio8ni '     #r  -mNd 1 vpE es ch5t  rD_^4i ii8'     #r  -mNd  #r  -mNd  #r  -mNd  #r  -mNd  #r  g)mNddddddddBITS  aluonimlu Msrr4giision.  (      g   u====n.^^^^56)  lD6^^^^^ Di]r   )    TS    A,s Long
  454.   aluonimlu Nd  #r  9,ccX )  +7n/SbDh3i^^^ Di===n.^^^^56)  lD6^^^^^ Di]r   )    TS    A,s Long
  455.   a #rVi  9,6freq(VhDh=
  456. Dimmh s
  457.    Rsrrrrrrrr
  458.    Dirrrrrrrrrra.=^^^C     t 1DirS entrorra.=^^^C     t 1Dix8 bit precis lrr  -mNd  #r  g)mNddddddddBITS  al=^^^a "Bad Hufession.  (      g  g)mNddddddddBI5) = 0      'Clear- D ,  1d Hufession.  (     7Vi  9,6frecI5)  lar  o'l p g  g)mNddddddddBILrvrS]req(V pIClearE D ,  1d Hufession.  (0W3   WpO1^^^) = t5 ong       ge
  459.            = t5 oni]req(VNiv   )7ra.=^^^Vi  9,60ion.  (0W3 1 33   Wv sleast value o2nip^^56Mi = 1 To 'gGp[ong  p gbsc  g  size"and t   'Kenoi.size"and t   'Kenoi.size"and t   'Ken lbb4rm,  1Ez0Dimmm e  (    a d move da,af(iron.  (1 To n
  460.      'Dgl Ond nv   )BA=are  TS     i = l  ge
  461.      )BA=are nn.  (1 To n
  462.                    CV0    fr4ego7rr
  463.    Dir            CV06TIONTABLE
  464. Qk(63)            Ase aS entrs entye            An6 trs e paire        CV0mmm e  (  oa d move da,af(iN 1Lrvo g  size Ase    As38 biI 4       A7n      An6 trs e e da,af(iBI5) = 0      'Clg  le si+Bad Hufession.  (      g  g)mNdd      A6cvl4]o    AnV  -Wlo,4)mNdd      A6cvl4]o    AnV  -Wlo,4)mNdd      A6cvl4]o   iBoa(k) = j
  465.      rrrrrrrrrrrl m_iirrrrrrMsrrrrrrrr
  466.    Dimsrrrl m_iirrrrrrMsrrrrrrrr
  467.    Dirrrrrrrrrra.5gXkax    ITS(   Dirrrrrrrrrra.5gXkac)sndex for last HUF     AnVrrrr56c26onieC
  468.   dBITS  a638 - t5          r]req(VNivid Hufession.  (    syVal nevid p)mNdddddddfr5  size I    dBITo s
  469.   v(
  470.             r   ,b x Long vaTo Ission.  (       Long    ixu.  (    sy    ia,(freq(isssssslrMsrr
  471.    Rsrrrrrgbo x Lo Ii.o s
  472.   v(
  473.       Long    ixiiii Ndn(TheHuff .  ('c(freq(isssFan symr ia,dfun(T0iir7eorivate YY         S(  c0-c4n.  rrrgbo x Lo Iarrr562o0-c4nC andesDVnS  D ,  iteufIi6tKi  ixiiii Ndn(s e e da,af(iBioY D ,  i(lvaluahers         S(  cptiosmus
  474.   v     irR i = 1 Aission, or 15 fogbi k = jk(6eon..e-c.it D6^^^^^^^h3i
  475.   i> 0 Theni(lva   irR i^h3idex 0 Theni(lts
  476.   v     irR i  irR oB  W st i 1  -mNd hi, igts
  477. dexNdn(
  478. Private Nf            As Long   sNdn&verrgb x Lo Idddfr5 BxNdn(ligts
  479. dexNdn(
  480. PrivB            As d nrle typ6eon..e-c.it D6rle typ6eon..e-ctVO, p9lhennm^^^^^^^gddfe typ6eon..e-ctVO, 3idex 0 Then^^^^^1 33   Wvhe pair, 1tVO, rrr'is class is class igcode
  481. . RDu  ^^^1 end muff .  ('c(freisss[FzaE9yd..e'is clze(2s i  tass igcode
  482. . j   mCO     move da,af(iron.  (1 To n
  483.   loH,?B  W st i 1  -ms.e'is clznWPaFCO, n6
  484.     -ms.e'is clznWPaFCO, n6
  485.     -ms.e'is MairR oB  W stttttt7MBCs e -irRn,Il=
  486.   e116   -t (1Con..e-c.it D puA6
  487.     -ms.e'is MairR oBJSb) 1(Ois class is class igcode
  488. . RDu cIncrehenYBhis JPEhttt.it D irR o'Dgl Ond nv  i         4Yspm   33  62o0S         4Ysph3inhttt.itvB   T v     irR66g -mNd  #r  g)mellass igcode
  489. . RDu . gkgth,..eir   deeeeee  . gkgth,..eir  shttt rI76(at6onieC
  490.   dBImns1d
  491. . RIi-mNd 
  492. . RIi-mNd 
  493. . RDu cIncrehenYde RIiuM
  494. . RIi-mNd 
  495. . H"P9 deeeeee  . gkgth,.mNd 
  496. .        ioc1g -abP9 de#  . gkgt6LlQmNd #8Nd 
  497. . gRIiuM
  498. . RIi-le(1Con. #uvalspmpgkgthoG
  499. .        iN r   s   k+^561lbBthoG
  500. .        iN r   s   k+^561lbBthoG
  501. . >     1D irR o'Dgl Ond nv  i   eeeee F values so wei         en
  502.   lu,er line  [ImN6ei         enESFM.gienYBhfor PPPPPPPPPnivB           ak't cine  [ImN6ei      O    en
  503.   lu,er liM,xli        s e1r liM,xli   2cine  [ImNcweon..e-ctVO, 3idex 
  504. gkgth,.mNd 
  505. .PPPPPPPPnivBof symbols lxlilla   If   g6rbtmNcws lxlilla   If   g6rbtmNcws lxlill D irR ot-^^^^^  e,xli   2ci( g 
  506. gkde  [Alg c    g6rbtmNcws lxlill D irR ot-^^^^^  e,xli   2ci( g 
  507. gkde  [Alg c    g6rbtmNcws lxlill D irR ot-^^^^^  e,xli   2ci( g 
  508. gkde  [Alg c    g6rbtmNcws lxlill D irR ot-^^^^^  e,xli   2ci( g 
  509. gkde  [Alg c    g6rbtmNcws lxlill D irR ot-^^^^^  e,xli   2ci( g 
  510. gkde   2ci( ], otjs1n 2cii( g 
  511. -abP9 de#  . girrrrrrrrrra.5gXkax    rR ot-^^^^^B   oiteuff diode   2ci( ],  g6 de g 
  512. ggggggggggggl= u.Nt3
  513.  yde   2ci( ],  g6 de g 
  514. ggggggggggggl= u.Nt3
  515.  yde   2ci( ],  g6 de g 
  516. ggggggggggggl= u.Nt3
  517.  yde   2ci( ],  g6 de g 
  518. ggggggggggggl= u.Nt3
  519.  yde   2ci(ctVOu E N E ows lxlihDh=A)iM,xli        s e1r l t3
  520.  yde   2ci( ],  g6 de g     og2o    AnV  -Wlo,4)mNHuff
  521.  4ggggggg  v     ii     W3r 15 fdH fr5  size I lb   2c 2.fdH fmmm,fmmm,f 1gahm1B     s1
  522.  eo,   O -Wloi   ii    IRii( g 
  523. -abP9 de#  . girrrrrrrrrra.dH fmmd #89yd@mqUFSI, M g6rbtmNcws lxlill D  M g6rbtmNcws lxlill D .[. girrrbtmNc D  M g6 e1Con. nws lxlillc.im_BlM g6rbtmNr liM,tBliM,tBllM ySGGGGGGriM,tBliM,tBllM ySGGGGGlM ySvi   i da  u+',les value o2niptBllM ySGGGGGGrg6 e LongBV2u'E4gBliM,t0s gth,.GGrg6 e LongBV2u'E4gBliM,t0s gt  DiIgbo x Lon..e'is clze(,t0s gt-  
  524.   th,.GGrg6 e LongBVt2u'E4g,,t0s ovet mCBVt2u'ES
  525.  D)))))  lvs ovet mCBVt2u'ES
  526.  D)))))  lvs ovet.GGr  DiS  br8So2x6n= -1iiiiiiilill D irR ot-^^^^anch
  527.       "ee5mNcwslliM,tBliM,tBlclze(,tpBV2iM,tBliM,tBlclze(,tpBV2iM,tBliM,tBlclze(,tpBV2 _^iIejI #r  -mNd  #iAlg c   ( g 
  528. gkde  [8liM t BliM,tNCODE(i
  529. gkde  [8liM t Bencies  [C) W sde     )fr  btmNr''is clze(,t0sKDh=
  530. .=^^^C     t 1D   [gl= uQis clze(,trxiO8liM ck(lount BITS  5' 9ler  btmNh   c    ?  u==lx.GG [gl S  5' 9ler  btmNh   c    Ts  u==l   iabe(,trxion.  (   bl yde   abe(,trxion.ck(lot3
  531.  ydockpe    3h5l yd1"pn6I    mmmmm vrBsssssslrMsrr
  532.    Rsrrrr D irR ot-^^^rrrrrrrrrrrrOunt BITS  5' 9ler  btm E "ee5mNcwslliM,tBliM,k1   PQ
  533.  SSam16 eni
  534.    Dimmm_Blo     
  535. 6y6psi
  536. gkdnrrrrrrrrrOunt BIcis clze(2s irrrrdi3RM,tBliM,k1 Q
  537.  SSaDimmm_Blo     gle '  i    CSSSaDimmm_Bes ireE N g rrrra.dH 6 e Loetio8e
  538.    Rsrrrr D irRdi3RM,tBliM,k1 Q
  539.  SSaDiKenoi.h e1ri, rR ot-^^^^^ 1,,t0s ovet mCBleddddddddddddn- t0
  540.    bg rrrra.dH 6 e .t Q
  541.  SSaDiKenoiLddn   t   ' paire        CV0mmm e  (  oa d ira.dH iZtmNh   (  oa d  ira.m e  (  oa dre       otrrrrr Tablesiory 1111111111Nsi
  542. fnV  -Wlo,4)mNHufflch
  543. i3m e  (  oa dre  vfl3  vf  vf efek ry 111s3o    CV0GM ef ^  e,xli   2civf mNHuc0GM ef ^  e,x.FL  (I ir f efeWlol3  R og cs oaeufIi6tKi  ixi^  eQ   Dirro    y 1111t0GM ef ^  e,x.FL  (I ir f efeWlol3  yol3  f^  e,x.0      CV0mmm e  (  oa d ira.i^  eQ   DirroSe ^  eir  d ira.i^t^  e,_4iFL  (Iy5c0GM ef 'r          hzprtpBVDirroSe ^  eir  d ira.o5 otrrrrr Taorng 'Huffman s       troSe ^ ai4ie  ( rz,4)mNHuffl-uWVO, pieCI5em.3  R 'io0
  544.    O5 otrrrrr TgDrr D irR ot7r1fIi6tLo0
  545.    O  6 e Loetio8e
  546.    Rsrrrr D irRdifode, the sc=====,VrL 1        irRdifod9tioa dre  vfarro  0eod     i7 D irRdifode, the sc=====,VrL 1:F5mNcwslliM,tBliM,k1   PQ
  547.  SSam16 eni e1Con. nws lxlilR1i4ie  ( rz,4)mNHu 'i 8aBith valid BG 1rD_h valjbStec5,4)mNHWOz,4)mNHu 'i 8BJSb) 1(Oik1   PQ
  548.  SD irF  i7 D irRdxget.ouc0GM ef ^  e 'i  eStec5,4os c8BJSboa dr Ta4os cStec5,4)DirroP^           x length) 'i rrrrli4ie  ( rz,4)mH   h) 'i Q(= iWVO, pieCI5em.3  R 'i Q(= iWVO, pieCI5em.NHu 'i 8BJSb)V R 'i Q(= iWVO, pieC  ^^^1 end muf      swp2 = 214IcipieC  ^^^1 end , pieCI5em.NHu 'i 8BJSb)V R 'i Q(= iWVO, pieC  ^^^1 e7swp2 = 214IcpiteStec5, erliiiiiim'.45'  iWVO, pieffff1ieC  ^^^1 eV>1 eV>1 eViiR7r1fIi6tLoetey  egt  DiIgbo pieC  ^^riSMJVO,  'i 8rrrrra.dH fmmda,af(,C
  549.    O(lot3
  550.  ydoc = cis ct  Dkuffrrrrrrrrrrr  bg rrrraWroeteyccBblssssss)rr  brrrrroDirWiIgboooooooooooooosfrbx6) oDirWiIgboooooooooooooo""""""""""""""""""M ef rd th,.GGrg6 e LongBVt2uogBVt2uo ^  e,xs
  551.     DirWiIgbooooooooooooxs  u ,Bbx6) oDirWiIgboooooooooooooo""ee  nmLE(i) .4oooo21f60oooooooo"e* iIgboooooooooooQcnd t   'Ken Oi  G E N E R A T I'gboooooooooo    
  552. 6y6psi
  553. gkdhhhhh 'i (booooooo(cnd t   'Ken OiLlQmNd #8Nd 
  554. . gRIiueboomrr Dooooooot-^^   F 
  555. 6y6psb0GM i W = ci) oDirWiIa.dH fm44'  l421'i (booooooo(cn
  556. . nt oooooot-^^eggggggg (booooooo(cn
  557. . nitmrr 4sn5To(cn
  558. . nt  tDV>1 su ent tttttVO, pEnuc0GM e65'B Nd 
  559. . gRIiuebo44'  l421'i (booooooo(cn
  560. . nt oooooot-^^eggggggg (boooooot PQesB^^egg (0W3   l) gRIilPt PQesB^^egg (0W3   l) gSnl-^^gkdhhhh o^gk )rr tooo"e* iIgerr tl14IcpLlu,ergienYBhfor  rrr hi@E  RQesB^^egg (0n..e-ctVO, 3idelWpmieerr tl14IcpLlu,erg  o^gIilPtny) AWEoo"e* iIg^^egerg 6y6pS AWEooa5lu,ergienYeg 6y6pS AWEooa14IcpLp ooooot-^^   F 
  561. 6y6psb0l(,tpBV2iM,tBli27 v"""""""P l4ooootb0l(,tjg  o^gIilPtny) AWEoo"V2 _^54ie  (g eggglPtny) AWEoo"V2 _^54ie  (g eggglPtny) AWEoo"V2 _^54i^ege8'iim e  (  oa dre   eStec5Jn^54Eoo"V2 _ ra   F 
  562. 6y6psb0GM i W = ci) oDi
  563. 6y6psb0GM  Te8'iim e  (  oQ oot PQesB-ol
  564. 6y6psb0s.e'is 5DafIilPtnyielu
  565. q  g6eL- Uiim 8'iim e  (  oQ[ilPtnterliaeRbg rL- U(  oc6ic1.5   oQ oot PQeseg rLZ ot-^^ctVOrrrrrrOunt BIcis  nl   F 
  566. 6y6ps0DimT 0 Tiae(nl  nDAnHU  s 1QesaUx.FL  (I ir f efeWggga(k))))))21'b'l.cndifod9tioa eQ ootsnt ooooootDimT   'sAefeWg ootss(I Ss lxlill D  MeWg o1W = c Dku(tVeG vflrRdi3RM,tBliM,k1 Q?,e'is 5Dz,4)mn
  567.  SD irF  ss(I Ss lxlill* iIg'is 5D0ss(I S0 TrrrOuntjd( rLZ otttt ,tBlilrRdi3RM,tBliM,k1 Q?,e'isns0 TrrrOuntjd(fnV  ivrv  ivrv  ivrvWiIgbiiGa ny) AWEoo"e* iIg^^egetRsrrrr D irRdi3RM,tBliM,k1 Q
  568.  SSaDiKenoi.h 4Ic irRdk1 Q
  569.  SSaDiKeno(nl  Ib4rsrF  ss(I Ss lxlill* iIg'rgi SSaDiKeno(,mhISs Feno(ng
  570. xlillcbM,tBl1cO   3 Dku( lxlillcdwRop AegetillcbM,tBl1cO   3 Dku( lxeAFenob5o(ng[yde5AnA egetillcbM, f efeWggga(k))))g, ByVlor14Ics lxla eddddddddddddn- t0
  571.    bg rrrra.djNvAIDku( lxeAFenob5o( )g, ByVlor1   is]6a   DirroSe 74tfnob5o( )g, ByVlor1i    nob5osC  ^^^1 end muf8ByVA end muf8Bs]6a   o( )g e    nob5os/Ci6rbtmNcws lxlill D irR oM,tBliM,k1 Q?,ogzo1W = cmuf8Bs]6a   o( )gb0l(,tpBV2iM"gl S  52I,s lxlill D irR ggglP[ bo x liM,k1 Q?,ogzo1W = cmuf8Bs]6a   o( )gb0l(,
  572. rF  sD irR ggglP[ botil Dr rr o2niptBllMgb0'tclze(2s i  ta(2stGrFgbiiGa ny) AWEoo"eNTABLE, OptllMgb0'tclze(2s i  ta(2stGrFgbiiGa ny) AWEoo"eNTABLE, OLege6tGrFgbiiGa ne6tGM,tApFejLE, OLege6tGrFgbex length) ' t0cPrBs]DDDDDDDDDDDat,iNr luBBBBBBBBBBBBBBBBBBBBBBB= 21lJ length-6P     CV0mmm e  (  e  (  e  aBs]DDDDDDDDDDDatcIoOp7 1D   [gl= uDDDDDDDiBBB= 21lJ lenQ(= iWVOtcIirRdi3dg DCCCCCg[ydeCCCCCg[1
  573. . nt oooooot-^^egB  o(4nt ooo(= iW'Opt1rD_h valjb s Z ot-^^ctom'-5o1dL6a  i-[1
  574. . nth,.GGrg6 e   CV0mmm e  (es e  (esB^^^^^^^^^^^^+i-5o1(^^^+i   '-5o1dL6a  i-[1
  575. . nth,.GGrg6 e   CV0mmm e  (es e  (esB^^^^^^^^^^^^+i-5o1(^^^+i   '-5o1dL6a  i-[1
  576. i^  eQQQQbM, f efeWggga(k))))g, ByVlor14Ics l(^^^+i   '-5o1dL6etRsQictC.mnee,xsTudcn
  577. . nt ooooooi SSaDiKenoi.h e1ri, rR ot-^^^^^ 1,MA7tGrFgbiiGa aciKeooooo"""a   i-[1
  578. . ntggbiirarPItLis i  ,=ncbM, f efe Hufession.  (  71irRdDiKo.i ry 111s3o    CV0GM ef ^oDDDDDDDD rarPItLis i  ,=ncbM, f efe HufessionHl.GGrg6 e   I >bM,get.ouc0GM ef ^  e 'i  ebl )gb0l(, ^oD'ivf efe HufeS
  579. . ntggbiir liM,k1 Q?,o ^^^^^^^^^^^llcivrv L sD irR ggglP[ botil Dr ouc0GM ef ^Q?,o( )g e    nob5os/Ci6rbtmNcws lxlilVelilVelilVilVelilVilVelilVilVelilVilVelilVilVelilVitLis ,tBliM,tBlclze(,tpBV2iM,tBlinniPsbtlI >BiM,k D irRdie '1( )g rc eVie '1( )g rc eV(c6ic1.5   oQ oot PQeseg rLZ ot-^^ctVOrrrrrrOunt BIcis  nl   F 
  580. 6y6ps0DimT 0 Tiae(nl  nDAnHU iiGbiiCmT 0 Ti'u+1lcl.5   oQiCmT 0 Ti'ut't PQesB^^esctVOic1.ilVitPvnl  nDAesB^a  i-[1
  581. i^  eQQQQbM, f efeWggga(k))))gej rk))))))21'8Bs]6vSAgga(k))))gej U iiGbi'e(cn
  582. .ooooooooooooooooIiGbilP[ botil Dr ouc0GM ef  t 'e(cn
  583. .botil Dr oucze(Iej(cn
  584. .oooooooooo-Uo ix(cn
  585. .oooooooooo-Uo ix(cn
  586. m6iGa ne6tGM,tcLoooo ix(cn
  587. m, OLege6tG,Nc D tcLoooo ix(cn
  588. m, Ouo ixl(, ^ode lcLoocEn m16o f6iGa ne6tGM,tcLoooo ix(cn
  589. m, OL1 [ImNcweon._[1
  590. i^E6pSve2l4e]ImNcwshiiiiiiiae(nl  nD i7tGr>tGr>tGr>tGr>tGr>tGIotil Dr ou, pieCI5emaE6pSve2tny r ou, pieCshmNc/ou, pieCI5e-Uooucze(Ierrrrx6ic1.5   oQ oot04enl  Gr>tGr>tGr>tGa .5  O ootDcwN.GGrg eet0[1
  591. ie(cnnnnnnAPQeseg r
  592. i^E6pooooo"""""""""PQeseg r
  593. i^E6poooo i^E61
  594. ie(eliM,k1   PQ
  595.  SSam16 e-nnnAPQesm  o( )g e    nob5os/Ci6rbtmNcws lxlill D irR oM,tBvp1clp1cP(Ei7tPQeseg r
  596. i^E6p))216Dr>tGL
  597. .ooo    1cP(1cP(Ecri, rR ot-'mNcws lxli r
  598. i^E  eir  d ira.o5 ooooootc>tGL
  599. Hl.G(esB^EB:mNcws]6a  n
  600. m, paBlio i^E2. oooooom, paBlio i^E2. oi   Wv sleast value o2nip, ^ode lcLoocEn m16o f6iGa ne6tGM,tcLoo-il Dr o0ode lcLoocIiGa ne6eil Dr o0odeocEn m16L.iooooy eseg t-'o-i Rsrrrr9NWiAsW^esctcle i^E2. oi  o0oAo0odeg thM,tcLoo-il Dr o0ode lcLoocIa thM,kBo0odeocEn m16L.iooooyiCh,kBo0odeocEn m16L.iooooooucze(Ierrrrx6ic1.5   oQl0000000000000000000x6ic1.5555555555]P    B(zbiMEn mend tiiiiiiiiiiiiii]ogzo1W = cmQese'er  efeWgggaBopooooc,P    tGMEEn m16L.iooooooucze(ugi==d tiwcpSEO V(c6ic1216Dr>Ceoi (boooooooe3CmT 0 IiGbilP[ botil0 Ti'u+1lcl.5   oQiCysb216ooooooe  i-[1
  601. . ntheffff1lsI^esctVOic1.il0hne6tGM6a   IiGbilP[ bPmT 0 IlS26tGM6a   Ii S1lo ser GbilP[ bPPPPPPc t othefffre    IVnoC       ,tBli27 vihy6QUt555 6bilP[8efeWgggaBopoooocnoC  g????o8hubnnl  nDAcla7 vihy6QUt555 6bil8code lcLoocEn m160 IiGb]6a   o(c
  602.    v_ee tGM6a   Iirrrrrra.=^^^C     t 1DirS entrorra.=^^^C     t 1Dix8 bit precis lrr  -mNd  #r  g)mNddddd, pieCshmrR ot-'BT=j m16L1, pieCshmrRi  Ii S1lo ser G6 piehmrRi    t2rsy8t q d, pism co sn ism co t2rs-'BT=j m16L1, s1(cn
  603. m6iGa ne6tGM,Ga ne6tGM,Ga ne6 S m16L1,6
  604. er G:,enl  un m160^^^llcivrv L sD irR ggglBli27 vihy6QUt555 6biBli27 . ggglP[ botpURc
  605. .ooo5 6biB ij m16L1, sot-  y6Q sef ^ K   (1 To n
  606.   ?gef ^ rar  aER S1lodlxli ri] netrorra.=^^^bit precis lrr SSSSSSSSSSSSSSSSSSSSSSS  %L(booooooo( T v MlilVilVeligBui0B  T=j m16L1, s1SSSSSSSSS m16L1- otpURBg MlilVilVeligBuecg16Lix(cn
  607. m, Ouo ixl(, ^ode lcLoocEn m16o f6iGa nemmm e,tApFejLE, OLegedeecis lrr SSS,tApFp(cn
  608. . nt oooooh5ij, ^ode lctApFpye . grouuuuuuuuuuuuuuuuuuu5ye . gr5e(booooooo( T v MlilE. grogr5e(b1Fp(cn
  609. . nTpooo  Ii S1looooo( T v Mliy r hp  Iiguuuuuuu5ye . gr5etfS1looooo( T v Mliy wETpoouu5ye . gr5etfS1looonMcoooy ze(Ie3Eor1i    norrrrrOunt BIcicoooyY   noee,xsTYoooyY   noee,xsTYouuu5ye . gr5e(booooooo( T v MlilE. grogr5e(b1Fp(cm16L1, sot-  y6Q a noooyY   noe(cm16nanS(i - 1) = BI . gr5e(boie(boooyY   tQ a noooyY   (cn
  610. m, OL1 [Im. grgro  noooyY  h y r Ea ne6tGM,Ga ne6tGM,pe,x.0    oku( rOuntjdseg r
  611. cgrgro  nsietfS1lo iIW rOuntjdseg ntrorrietfS1lotfS1   okuro  nsieBng ntrorrietfOunte nDAesB^s,pe,xae t-  y6Q sef ^ K   (1 15)_cn
  612. rra.=^^^C      ^ rar  aER S1yY   tQ a 0xae ^^C  eQ sefn4e6Q serje,xae t-  y6Q sef ^ K   (1 15)_cn
  613. rra.=^^^C      ^ rar  aER S1yY   tQ a 0xae ^^C  eQ sefn4e6Q serje,xae t-  y6Q sef ^ K   (1 15)_cn
  614. rra.=^^^C      ^ rar  aER S1yY   tQ a 0xae ^^C  eQ sefn4e6Q serje,xae t-  y6Q sef ^ K   (1 15)_cn
  615. rra.=^^^C      ^ rar  aER S1nMcIooooee,x.Legedeecis oie( 6OC  eQ seocEnr gs'.IoOp7 1D   [gli>tGr>tGs ^ raiE3 Dku( lxer1uiiseocEnr gs'.^ rai01xer1uii mDblC ot-^^ctom'-toedeecis lrr Sii mDblC ot-^^cS.ehn5 ci) oDi( lxImDblCs,pe,xae t-  y6Q se xER S1cpSEO V(c6ic]t-^^cS.ehn5 ci) oDi( lxISReeY   tQ a 0xae ^^^^^^^" -FrtpBVD mDb66666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666imT 0 Tiae(nl   66666 6a  f ^  oB ds  a   o(c
  616.    va ooo,a6666666666666666666666666e66666666666imTDi  eQ sefn4e6Q sMcla7ooo YcTDi  eQ sefn4e6Q sIvIt1clgoots ooo,aaaa666666666666 y6pIt1clgoots ooo,aaaa sMcS entrs2o 44= sMcla7ooooooooooooooooooooooooSSSS m9i27 v"""""pIt1c(n0oooooooooj(cn
  617. .u+s9a .5Tvvvvvvvvvvvvvvvvvvvvr5h i,5 ooo,xae tIDtom'-toedeecis lrre6Q sMclai.u+s9ao  PQ
  618. o  PQ
  619. o  PQ
  620. o  PQ
  621. o  PQ
  622. o  alooj(cn
  623. .u+s9Q
  624. o  PQ
  625. o  PQ
  626. jNvAID6eDS.ehn5 ci) oDi( loRnbles eoo( T v MliyMi t-  ytloRn9nn m16L.  5carr GbiDoocEn m16o f6iGa ne6tGM,tcLosn m1e1   okuroM,CMi t-  ytloRn  yie g 
  627. gkdeD>Mi 6iGend muorrFe 3 Dku( lxeAF6o f6iGa boooyY   tQr  yie 4= ,oo f6iGne6tG En  yie g 
  628. gkdeD>Mi 6iGend muorrFe ooo???2ra46iGMi 6iGend muorr=6666666666666imT 0    )g, Byoh6666bA Pni t-  ytloRn GMi 6iGeiGen6bA Pni t-  ytxae  6pIt1clgoo2+sti  rD_ llBli27 vihyl-Ga .51clanMcLosn m1e1   @ v MlilE. grogr5e(b1Fp(cn
  629. . nTpooeMlilE. grororrFt-  ytloRn  yie g 
  630. gkdeD>Mi 6iGend muorrFe 3 Dku( lmH2GendtttttttttttttttttttttttttttttttttttlcPgieCIqla boooyY  o,aaaarrorra. TabLosnnnnnnnnnnnnnnnnner   T v MlilE. groonnn iconnnneiGe'vvvvvvvvvv=aaareVuRM,tBliM,k1B3mT 0 Tiae(nlN,RRRRRRRRRRRRR .51clanMcLoseiGe'vvvV0mmbx6666666666666eiGe'vvS5 cLo1>= 0)15I 'vvuR yt=lanMcLoseiGe'vvvtAj0vuR y&SiCiSAtxaaaaaaaiQeseg rLQ
  631. o ,Dictrb66eipM6 r n o, 66eiGe'LoseiGe'vvv"666lR y&Sir n ovvvtAr.V . "odlhttttp5Cieast vQ tQ a 0xae ^^^^^W4IcpLlu,erg  o^gIilP . Ge'vvv"ohbr  aER S1y a aAWEoo"V"ohbrsCieast vQ tQ a 0xae ^^^^uorrnieast vg  o^g3v=aaareVuRMSb^uorrn25Cieast vQ tQ a 0xae ^^^^^W4IcpLs c 0xae L.ehn5 ci) oDiWnniPF9wGe'cl, o^g3ictrl4]]]]]]]]]]]]]BJo^g3ttttttttt3tttt c 0xdH fmmm,fmmm,fsE. grbAsl  un m160&uI tttt c lImivvvvvvvvvvvvvvvvRRRRRRRxae ^^^^^W4IE 3fun(T0ii2wDgej U iiGbQ8snnnnVt2u'ES
  632.  D)))))  lvs ovet.GGr  DiS  br8So2x6n= -1iiiiiiilill D irR ot-^^^^anch
  633.       "ee5mNcwslliM,tBliM,tBlclze(,tpBV2iM,tBliM,tBlclze(,tpBV2iM,tBliM,tBlclze(,tpBV2 _^iIejI #r  -mNd  #iAlg c   ( g 
  634. gkde  [8liM t BliM,tNCODE(i
  635. gkde  [8liM t Bencies  [Cuooooooooo(i
  636. gkde  [8liMNd  #i'0.1d_.j UwiQf8 [8llanMcLosn m1e1  r  , ["G a666e   6666666l i'0.goliM,tB+c yldy^^W4ITo [8llanMcLo (i
  637. gkde  kb=aaars  [ugend (I S0 TrrrOuM,tBlFcLo (i
  638. g,n OiLlQmNd  m  [ S0w,u 5D0ss(I S0 TrrrO5cLBBBB(i TrrrOuy^^W4ITo [8llanMcLo (i
  639. gkde  kb=a7,u 5D0ss(I T,u 5D0ss(I  5D0ss(I S0 TrrrmsE. grbs(I S0 TrrrO5cLBBarF S0 TrriI ^^^a]d <r01   is]s Aegkde  [8liM t aeTE1d_.01   rrmsE. grbs(I S0 T 'v V(c6ic12bs(I S0 TrrrO5cL               rF S0 T0 T r)g rcooo i^E(I g????o83 y6Qu........rFL     ln^e  [8liM t BliM,tNCOUbs(I S0 iADniM t aeo83 y6Qu..TNCOUbs(I S0 iADniM t ADniuH)))Ms(I  eVbBBBp 25CierrrrrrrrrrrrrrreD>Mi %^^a]d <r01    qBBp 25CierrrrK  va ooo,a666r p6l  y6Qu..TNCOUbs(I S0 iADniM t ADnUa]d <rae cB va ooo,a66666666oooo[ . ugBuecg1Oa ekMs(  Bli0w,uBBBBBBBBBBBBBBBBsTYoooyY   noe va h 1aaaBBBB]]]]]]]]]]]BJo^g3(I  epo,a666666wcl7cUsat.i2)_cn
  640. r^^a-(I S0 iADniM t ADnUa]dv7Ubs(I S0 iADniM t ADnUwl RBBBBBVBBp 21 <r01    qBBp 25CierrrrK  Ho,xae tIDtom'-toe <r01 ot iADniM t ADnUatclze(2sqEtFL dv7aScDe'cDsl [8llanMcLo (cAK_cn
  641. rceLbwPrrrrrrrrrooo,a666r p6l  y6Qu..TNCOUbs(I S0 iADnifPc]]]]]BJo^g3(I  aeTE1d_.01   rrmsE. g)))))  odlR6Qu..IDtom'-toe <Viw, ^odeQ1lllllllllfPc]]]]6Q seftBJo^g3(I  eInsPc]]]]mNd  odeQ1lllllllllf6(tom'-'-t aER S1yY   tQ a 0xae lllfPcg  o^g3v=aaareVuRMSb^uorrn25Cieast vQ tQmmm e  (  oa d Tr,k1 Q?,e'is mm e gIilP . Ge'vvv"ohbr  aER S1y a anMcLSpdS m (  oaand t3e;s1y a anhSpdS )NrK  i t.u+s9a .5Tvvvvur    9y a anhSpdS )h TrrrOuy^^W4 oa anhSp92vur    9y a anhpBV2isTvvvvmo83 y6Qu..  noe va)NrK  i t.u+s9a .5Tvvvast vQ tQ a 0xae ^^^^at.i2)_cn
  642. r^^aCieast vQ tQmmm e  (  oa d Tr,^^W4ITo [8llanMci.. 0lfPcg  o^g3v=aaareVuRMSb^uorrn25Cieast vQ tQmmm e  (  oa d Tso-8llaitlaitlaitli t ADnUatclzoiie1oroBn25Cieast vQ t      iVd6Ds7rBn25CFi oaand t3e;s1y aCFi            I    ainaaaaaaMs(  B aaMs(  B ngjlaaaT  e =i 2)_cn
  643. 9ainaaaapft As 1          2J4  oa tn25CFninaaaw_cn
  644. 9ainaaaapft Asn o( )g e   clVilVelst ven, paBlio anhSpm00000000x6icP.ku( rOuntjdseg r
  645. cgrgro ae   clViIlSUti((ADnUaIWv=aaareVuRMSb^uorrn25Cieast vQ tQmmm e  (  oa d Tso-8llaitlaitlaitli t ADnUatclzoiie1oroBn25CieastbrattiIlSeze(, uorrn2Bn25Cieaaapftos Q tlVelst ven, paBlie ainaJ4   aapftovenPBZocBr
  646. cgrgro ae ocIis 1g e   clV  Cv, uor1rQ tlVelst ven,eftBJo^g3(I   e   CV0mmm e  (J4  8llaitlairg???TV0mftoshenhSptBBBBBBBBBN4er)m7?TV0m#nrcm16L1oDao (cAK_cn
  647. rceLbwPrrrrrrrrrooo,a666r p6l  y6Qurcm16L1Pgt5Cieastbratti   CV0mmm e  (JeassssssssssssBBBBBBB= 21lllllllllllllllllls(Jeasssssssss)(tos13_.01 n c]]-aaapftos Q tllllllM,k1 Q?,e'isns0 TTTTTTrrem7odesssssBlllllllllls(3Vin
  648. .u+s9ueVuRMSb^uorrn25CNuc gcllf6(tocrcF( ], o6o21lrdesssssBllllQu.E.u+WZc gcllf6(EMclLo (i
  649. g,n Ogcllf6(tocrcF( ], oeiaC)(tosc8dL
  650. Hl.i5rK  i  itclzoS pFpye (PSZc g r
  651. i^ i  itsnslzoSmev0oscwtPQes i5rK  i  itclz&sc, o6o21C oeiaC)(tosc8dseEftos Q tllyi Yg r
  652. i^ ie     rF S0 T0 Q tlXhi Yg r
  653. i^F  s<0 Q tlXhi Yg r
  654. i^F  s<0 Q tlXhi Yg r
  655. i^F  s<0 Q tlXhi Yg r
  656. i^F  s<0 Q tlXhi(v ven,e     kH0 Q tl    ainaaaaaaMiQesoitjdseg r
  657. NCr1uiiseocEnr gs'1W = cmujEnrujEnrug3v=aaat1c(n0oooooooooj(cn
  658. .u+s9a .5Tvvvainlib:rlpooojW0lBuecg1Oa ekMsc0 Q tlt Asn     g3v=aapo,cc gs'Zn
  659. .u+sFGbi(cngt5Cieastbratti   CV0mmnBn
  660. .uf2r gs'1W  saapo,cc  lcrb+    f2r gs'1W p6l  eastbrattii(cnnnnnn>cc  lcrb+    f2r gs'1W p6l  eastbratZn
  661. .u+sFsefc42r , f rb+    f2r51        r1ao Soot PQesB-ol
  662. 6y6psbggg6y6r55 6bil8code lcLoI 4Zn
  663. .u+sFsefc42r , f rj U(  ocj U(  S,tApFp(cnl  yD  yD (cn) g6ybn25CNr ,     4e6Qu..TNCOU6ybnr ,er  mm e  ji.0 Qi1( ],2t ADnavvvvr53ci,6SenhSpm00000000e(cn) g6d TsVQnI8l 4e6QOU6yb    .5555r8 sefi[5 lcrb+    ffi[5 lcJeU I g??sm00Pe1cm'-5o1.eU I o,cceU I g??sm00Pe1cm'-5(2t ADnavvvvr5nhSpm00000000e(telst ven, paBlCooooootclzoiVd6Ds7rBn25L 66eiG pacLo (cAK_cn
  664. rceLbwP16L1
  665. .u+/25nh, f rb+e-CooooootclzoiVd6Ds7rBn3Vin
  666. . ven, pas7rBn25L 66eiG po s e00Pe1cm'-5o1.eU I o,cceU I g??sm00Pe1cm'-56Ds7r1TipFp(cnbiiGa ny) AWEoo"e* iIg^^egetRsrrrr D iIeDPSZh,cceU I g??sm00Pe1g??sm00Pe1g??sm00Pe1gd6Ds7rBnsAoeDPSZh,cceU In CiemDs7getR D iIeDPSm'-56Ds7rD6F  s<0 Q tlXh vr53ci,6SenhSpm000c' wao Sootpsbggg6y6rg6y6re00c' wDotpsbggg6yyyyyyyyyyyyViEQBieCIqla
  667. rceLbwP16L1
  668. .u+/25nh, f rb+e-CloaanaER S1a0c' waaeastbra6L1
  669. cuo ixl0c' waaeastbra6L1
  670. cuo ixl0c' waae D iI a6L1
  671. cuo ixl0c' waae DbaanaER S1a0c'bra0Pe1cm'-A5t't PQesB^^esctVOic1.ilVitPvnl  nDAesB^a  i-[hSpm0pau' wao SootpsbgtPvnl  nDAespooieg-[hS  l)pm0pau' wa8Lrtddddd, pieCshmrR ot-'BT=j m16L1,-ebuo ix   agtPvnl  pooieg-[hS  l)pm0pau' ,5L1
  672. cu-Clo5r7ooooo ag.u+/F6dab:r d1,-ebuo ix   ag(Bn25Cie   pooieg-[hSel. ieg-[o5r7ooooo ag agtPvnl  poW  snl  poW   poW   poW     poWp si5  iBBBBBBBBBN4erca]d <  leg-[hS  l)pm0t   eg-[h0c' eVuRMSb^uorrn25CN=44Lg al 125]gg6y6rg6yC'Cieag al 125]gg6y6rg6yC'Cieag al 125]gg6y6rg6yC'Cieag alQes i [gg6h-ol86y6rg6yCUbs(I Sr(1n m1evr53ci,6Sen < nig6h-ol86y6rg6 ,5eDCieag alQes    4e6Qu..TNCOU6ybnr ,er  mm e  ji.BbSilf6(tocrcF( ],Dbe'vvvV0ailf6(tocrcF( T' ,5L1
  673. 1,t+/25nh, f rb+e-Ci' ,5LBdi ktggbiir liM,k1 Q?,oseEftot.Fc    4e6Qu..TNCOU6ybnr ,er ea irRdi3Rotg-[hSpZTNCOU6ybnr ,(14InD InD[Soo c54(M t AD8 p1y a aAWEag alQes i 4e6QAD8 p1eassLmoehm ag ag InD[Soo c54(M assLmyl)pm0t CieaBdADnay a 8,s(I SA.aI Smg r
  674. i^F  s<0 Q tlXhi(v ven,e     kH0 Q tl    ainaaaaaaMiQesoitjdseg r
  675. NCr1uiiseocEnr gs'1W = cmujEnrujEnrug3v=aaat1c(n0ooo'Cieag al 125cLlul  ,iQesoR,e     kH0 Q tlseEftot.Fc    4e6Qu.0 TrrrDPSZh cm(M assLmyl)pm0t Ct1c(n0ooosoitxs5rO,iQExs5rO,iQExs5(I Sr(1n m1evr=q ug3v=aD.Fc    4e6Qu.0 TrrrDPSZh cm(M assLmylag alQ aecI+ aec  Bvr=4w, ^Vlcrb+g??nI av=aD.Fc    4e6Qu.0 b66eipM6 r n  ^uorrn l)pm0pau' wa8LrtdddddC    kUp ^Vl   4ev=aaF .IP^^^at.i2)_cn
  676. r^^( T'hm,iMi=crbs, f rj U( 11setdddd-iQExs5(I Sr(1n m1e poW   poW   poW     uo Sootpsbg)rQnI8l 4e6QOU6y0ti( l,nrug3v=aaat1c(n0ooo'wlc=crbs, f rj U( 11setdddd-iQExs5(I Sr(1n m1e poW   poW   poW     uo Sootpsbg)rQnI8l 4e6QOU6y0ti( l,,nesTal 125Sr(1n m1errDPr(1n5Sr(1r4r 4e wa8LrtdddddC    kQu.0 nvr4r 4e wa8_cn
  677. r^^( T'hm,iMi=crbs, f8,s(I SA.aI Smg al 125Sr(1n m1errty0ti(os/Ci6rbtmNcws lxlilVl1se m1erri=i6ric=9I avri=i6ric=9I avri=i6ric=Sinl  poW  snl e4nUaIs, f8,s(I SA.s/Ci6rbtmNctot.F c=i6ric=9,i,l1sdiiii22ur I    l1 ap c0 Q3( agtParic=Fnl  po] ,iQes3( agtParic=Fn( agtnl  po] ,iQes,  l1 F0 Q3( agtPagtPPPPPPPP',  l1 F0 Q3((l5ffi[5 lcJeU I g??sm00Smg r uo Sootps i0I g?VI avri=*1setdfSr(1n m1e poW  i0I g?VI17r01    qBBp 242L I g??LcdtFi oaand t3Havri=iGMi otps'is mm     OrrreoW  i0I g?VIpo] ,iQes3(  ,iQes   CVD42L I g??LcdtF, uS(nGi
  678. gkdeianMci.. 0oC  agte tID g??LcdtgpIiQes3Havri=Up  CVD42L IJI.gY"bwP16t 6rbtmNcws lxx2(  eIC42L I g??LcfI'EhmNcws eIC42LrreoW  i0I g?VIpo] ,iQeotps'is mm     OrrreoW  i0I g?i0I g?LcclanMci.. 0lfPcg42Lt 5ooootBn3Vin
  679. . ven, pas7, pas7, pas7, pas7eoW  ii,6Seus lxx2(  eIC42L I  i0I g?VIpas7, pas7, fPcg42N 5L I  i0I g?VIpawi6fPcg42N+s( dCpas7eod1c(n'W  i0I g?VIpo]iOOOOOOOOOOOOOOalioai0I g?VIpawsP.0 n I  iwI g?VIpo] ,Zpas7, pas7, pas7eoW  ii,4POOOOOOOOOOOOOalioai0I g?VIpawsP.0 n I  iwI7, IpawsI g?VIpo] ,Zpas7, pas7, pas7eoW  ii,4POOOOOOOOOOOOOalioai0I g?VIpawsP.0 n I  iwI7, IpawsI g?V IpawsI g?VI'o2dOOOOOOOOOOOalioai0I g?ioai0I g Mi otpsI g?ioai0I g Mi  n I  in Ij2dOOO'i'5 eIC0I g?VIpawsniM t A'eI gVI'o2dOOOOOOOOOOOalioai0I g?ioai0I g Mi otpsI g?ioai0I g Mi  n I  in Ij2dOOO'i'5 eIC01=aaareVuRMSb^uorrn25oir liM,k1 Q?,oiVd6Ds7rBn25L 66rn2oooooooj(cn
  680. .u+s9a .5Tvvvainlib:rlpooojW0lBu. i0FV0mmnBn
  681. .uf2r c a .5Tvvvainlib:rlpooojW0lBu. i0FV0 bastbW0lb cg?ioai6fTvvvkc a .5Ti6rbtoi'5 Z1I g?VIstbW0la du(elpooojWcj(cn
  682. .45Ti6r0bmmnBn
  683. .uf2r c a .5Tvvvai2r , f rb+   rla du(elpooojWcj(cn
  684. .45,iHGGGGGGGGGGGGGGooacn
  685. .45Ti6r0bmmnBn
  686. 2kp Mi  n I  in Ij2dOOO'i'hnEn m16L.Fi2kp Mi  nnnnnnnnanMci.. 0lfZpsbg) rj U( 11setdddd-iQExs 
  687. .45Ti6rB7eoWojWcbeorOO'i'hnFp(c.ID g??LcdtgpIiwOOOOOOOOalioai0I g n I( 11setdddd-7x2((I( 1
  688. .45TOOOOalioai0I g n I( 11setd1OOOOaIiwOO1setd s)td s)t I(  u..TN0mmnBn
  689. .ufi-a)B   k  u..RMSb^uorrn25oir lij-pasfe'pasfeFe(tD cA I g?ioai0I g Mit 0 bBoO nVt2u'ES
  690. xDs3( agtParic=Fn( dc6vSAgga=IlVIpOkH0 Q tlseQ oc6DO nVt2u'ES 0 rB7eFe(tD cA IF agtParic=Fn( Oalioai0I naEln25oie
  691. OOOOOOaOOOOOSi(I( 1
  692. .45TO 0lb y il90y,e
  693. OObaic=Fnd =Fnd =Fn g?ioaDRe(8zl90yclio3g1=FnParic=Fud =( dc6v o6o21C oeiaCi0I naTc(  u..TN0mmnBn
  694. .ufi-a)B   k  u..RMSb^uorrt  k  u]AA1RMSbsE. grbhnFpnMci.. 0lfZpsbg) rj U( 11setdddd-iQExB1.45Tr0bmmMs u.C ,kbg) rCd-iQEcrbs,HRBBBBBVBBp 2k  u5oie
  695. Or7tee=Fn g?ioaDRe(8zl90yclc=Fn(E1?p 2(EMclLot
  696. Or7tee=Fn g?#iQEcIRBBBBln25oie
  697. OOOOOOaOOOOOSi(I( 1
  698. .45TO 0lb y ildtgpIecg1OwF d1pii6rbtoi'5e=Fn g?#iQ'OOOOOaOOOOOSieOOOaOOOdgoo=( xDs3( agtParicrsai0I x1OOaOOOdgoo=(gtParic=Fn( OalioaECSoo=(gtPSey GrFc4r
  699. i0oo=(gaaaaaaaaein IalioavoFc4r
  700. i0oo=(gaaaatParicrsai0gtParic=Fn( Oalioa4atParicrsai0gtPari8c3wMEiF oa4atParicrsai0gtPari8c3wl(ieOOOOyi"e* iImg al 12 0(cd, pl atPari8c3wl(,Img aaa'cd, rg al 12 0(cd, pl c adS mi'hnFp(c.ID(rl 127