/ Hex Artifact Content
Login

Artifact 90e65f4291c8ecceee284ecc8d5d48734e95ecd4b008e06f36f14e77f93d655f:


0000: 2f 2a 0a 2a 2a 20 32 30 31 32 20 4d 61 79 20 32  /*.** 2012 May 2
0010: 35 0a 2a 2a 0a 2a 2a 20 54 68 65 20 61 75 74 68  5.**.** The auth
0020: 6f 72 20 64 69 73 63 6c 61 69 6d 73 20 63 6f 70  or disclaims cop
0030: 79 72 69 67 68 74 20 74 6f 20 74 68 69 73 20 73  yright to this s
0040: 6f 75 72 63 65 20 63 6f 64 65 2e 20 20 49 6e 20  ource code.  In 
0050: 70 6c 61 63 65 20 6f 66 0a 2a 2a 20 61 20 6c 65  place of.** a le
0060: 67 61 6c 20 6e 6f 74 69 63 65 2c 20 68 65 72 65  gal notice, here
0070: 20 69 73 20 61 20 62 6c 65 73 73 69 6e 67 3a 0a   is a blessing:.
0080: 2a 2a 0a 2a 2a 20 20 20 20 4d 61 79 20 79 6f 75  **.**    May you
0090: 20 64 6f 20 67 6f 6f 64 20 61 6e 64 20 6e 6f 74   do good and not
00a0: 20 65 76 69 6c 2e 0a 2a 2a 20 20 20 20 4d 61 79   evil..**    May
00b0: 20 79 6f 75 20 66 69 6e 64 20 66 6f 72 67 69 76   you find forgiv
00c0: 65 6e 65 73 73 20 66 6f 72 20 79 6f 75 72 73 65  eness for yourse
00d0: 6c 66 20 61 6e 64 20 66 6f 72 67 69 76 65 20 6f  lf and forgive o
00e0: 74 68 65 72 73 2e 0a 2a 2a 20 20 20 20 4d 61 79  thers..**    May
00f0: 20 79 6f 75 20 73 68 61 72 65 20 66 72 65 65 6c   you share freel
0100: 79 2c 20 6e 65 76 65 72 20 74 61 6b 69 6e 67 20  y, never taking 
0110: 6d 6f 72 65 20 74 68 61 6e 20 79 6f 75 20 67 69  more than you gi
0120: 76 65 2e 0a 2a 2a 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ve..**.*********
0130: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0140: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0150: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0160: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0170: 2a 2a 2a 2a 2a 0a 2a 2f 0a 0a 2f 2a 0a 2a 2a 20  *****.*/../*.** 
0180: 44 4f 20 4e 4f 54 20 45 44 49 54 20 54 48 49 53  DO NOT EDIT THIS
0190: 20 4d 41 43 48 49 4e 45 20 47 45 4e 45 52 41 54   MACHINE GENERAT
01a0: 45 44 20 46 49 4c 45 2e 0a 2a 2f 0a 0a 23 69 66  ED FILE..*/..#if
01b0: 6e 64 65 66 20 53 51 4c 49 54 45 5f 44 49 53 41  ndef SQLITE_DISA
01c0: 42 4c 45 5f 46 54 53 33 5f 55 4e 49 43 4f 44 45  BLE_FTS3_UNICODE
01d0: 0a 23 69 66 20 64 65 66 69 6e 65 64 28 53 51 4c  .#if defined(SQL
01e0: 49 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 33 29  ITE_ENABLE_FTS3)
01f0: 20 7c 7c 20 64 65 66 69 6e 65 64 28 53 51 4c 49   || defined(SQLI
0200: 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 34 29 0a  TE_ENABLE_FTS4).
0210: 0a 23 69 6e 63 6c 75 64 65 20 3c 61 73 73 65 72  .#include <asser
0220: 74 2e 68 3e 0a 0a 2f 2a 0a 2a 2a 20 52 65 74 75  t.h>../*.** Retu
0230: 72 6e 20 74 72 75 65 20 69 66 20 74 68 65 20 61  rn true if the a
0240: 72 67 75 6d 65 6e 74 20 63 6f 72 72 65 73 70 6f  rgument correspo
0250: 6e 64 73 20 74 6f 20 61 20 75 6e 69 63 6f 64 65  nds to a unicode
0260: 20 63 6f 64 65 70 6f 69 6e 74 0a 2a 2a 20 63 6c   codepoint.** cl
0270: 61 73 73 69 66 69 65 64 20 61 73 20 65 69 74 68  assified as eith
0280: 65 72 20 61 20 6c 65 74 74 65 72 20 6f 72 20 61  er a letter or a
0290: 20 6e 75 6d 62 65 72 2e 20 4f 74 68 65 72 77 69   number. Otherwi
02a0: 73 65 20 66 61 6c 73 65 2e 0a 2a 2a 0a 2a 2a 20  se false..**.** 
02b0: 54 68 65 20 72 65 73 75 6c 74 73 20 61 72 65 20  The results are 
02c0: 75 6e 64 65 66 69 6e 65 64 20 69 66 20 74 68 65  undefined if the
02d0: 20 76 61 6c 75 65 20 70 61 73 73 65 64 20 74 6f   value passed to
02e0: 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 0a 2a   this function.*
02f0: 2a 20 69 73 20 6c 65 73 73 20 74 68 61 6e 20 7a  * is less than z
0300: 65 72 6f 2e 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69  ero..*/.int sqli
0310: 74 65 33 46 74 73 55 6e 69 63 6f 64 65 49 73 61  te3FtsUnicodeIsa
0320: 6c 6e 75 6d 28 69 6e 74 20 63 29 7b 0a 20 20 2f  lnum(int c){.  /
0330: 2a 20 45 61 63 68 20 75 6e 73 69 67 6e 65 64 20  * Each unsigned 
0340: 69 6e 74 65 67 65 72 20 69 6e 20 74 68 65 20 66  integer in the f
0350: 6f 6c 6c 6f 77 69 6e 67 20 61 72 72 61 79 20 63  ollowing array c
0360: 6f 72 72 65 73 70 6f 6e 64 73 20 74 6f 20 61 20  orresponds to a 
0370: 63 6f 6e 74 69 67 75 6f 75 73 0a 20 20 2a 2a 20  contiguous.  ** 
0380: 72 61 6e 67 65 20 6f 66 20 75 6e 69 63 6f 64 65  range of unicode
0390: 20 63 6f 64 65 70 6f 69 6e 74 73 20 74 68 61 74   codepoints that
03a0: 20 61 72 65 20 6e 6f 74 20 65 69 74 68 65 72 20   are not either 
03b0: 6c 65 74 74 65 72 73 20 6f 72 20 6e 75 6d 62 65  letters or numbe
03c0: 72 73 20 28 69 2e 65 2e 0a 20 20 2a 2a 20 63 6f  rs (i.e..  ** co
03d0: 64 65 70 6f 69 6e 74 73 20 66 6f 72 20 77 68 69  depoints for whi
03e0: 63 68 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e  ch this function
03f0: 20 73 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 30   should return 0
0400: 29 2e 0a 20 20 2a 2a 0a 20 20 2a 2a 20 54 68 65  )..  **.  ** The
0410: 20 6d 6f 73 74 20 73 69 67 6e 69 66 69 63 61 6e   most significan
0420: 74 20 32 32 20 62 69 74 73 20 69 6e 20 65 61 63  t 22 bits in eac
0430: 68 20 33 32 2d 62 69 74 20 76 61 6c 75 65 20 63  h 32-bit value c
0440: 6f 6e 74 61 69 6e 20 74 68 65 20 66 69 72 73 74  ontain the first
0450: 20 0a 20 20 2a 2a 20 63 6f 64 65 70 6f 69 6e 74   .  ** codepoint
0460: 20 69 6e 20 74 68 65 20 72 61 6e 67 65 2e 20 54   in the range. T
0470: 68 65 20 6c 65 61 73 74 20 73 69 67 6e 69 66 69  he least signifi
0480: 63 61 6e 74 20 31 30 20 62 69 74 73 20 61 72 65  cant 10 bits are
0490: 20 75 73 65 64 20 74 6f 20 73 74 6f 72 65 0a 20   used to store. 
04a0: 20 2a 2a 20 74 68 65 20 73 69 7a 65 20 6f 66 20   ** the size of 
04b0: 74 68 65 20 72 61 6e 67 65 20 28 61 6c 77 61 79  the range (alway
04c0: 73 20 61 74 20 6c 65 61 73 74 20 31 29 2e 20 49  s at least 1). I
04d0: 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c 20 74  n other words, t
04e0: 68 65 20 76 61 6c 75 65 20 0a 20 20 2a 2a 20 28  he value .  ** (
04f0: 28 43 3c 3c 32 32 29 20 2b 20 4e 29 20 72 65 70  (C<<22) + N) rep
0500: 72 65 73 65 6e 74 73 20 61 20 72 61 6e 67 65 20  resents a range 
0510: 6f 66 20 4e 20 63 6f 64 65 70 6f 69 6e 74 73 20  of N codepoints 
0520: 73 74 61 72 74 69 6e 67 20 77 69 74 68 20 63 6f  starting with co
0530: 64 65 70 6f 69 6e 74 20 0a 20 20 2a 2a 20 43 2e  depoint .  ** C.
0540: 20 49 74 20 69 73 20 6e 6f 74 20 70 6f 73 73 69   It is not possi
0550: 62 6c 65 20 74 6f 20 72 65 70 72 65 73 65 6e 74  ble to represent
0560: 20 61 20 72 61 6e 67 65 20 6c 61 72 67 65 72 20   a range larger 
0570: 74 68 61 6e 20 31 30 32 33 20 63 6f 64 65 70 6f  than 1023 codepo
0580: 69 6e 74 73 20 0a 20 20 2a 2a 20 75 73 69 6e 67  ints .  ** using
0590: 20 74 68 69 73 20 66 6f 72 6d 61 74 2e 0a 20 20   this format..  
05a0: 2a 2f 0a 20 20 73 74 61 74 69 63 20 63 6f 6e 73  */.  static cons
05b0: 74 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 61  t unsigned int a
05c0: 45 6e 74 72 79 5b 5d 20 3d 20 7b 0a 20 20 20 20  Entry[] = {.    
05d0: 30 78 30 30 30 30 30 30 33 30 2c 20 30 78 30 30  0x00000030, 0x00
05e0: 30 30 45 38 30 37 2c 20 30 78 30 30 30 31 36 43  00E807, 0x00016C
05f0: 30 36 2c 20 30 78 30 30 30 31 45 43 32 46 2c 20  06, 0x0001EC2F, 
0600: 30 78 30 30 30 32 41 43 30 37 2c 0a 20 20 20 20  0x0002AC07,.    
0610: 30 78 30 30 30 32 44 30 30 31 2c 20 30 78 30 30  0x0002D001, 0x00
0620: 30 32 44 38 30 33 2c 20 30 78 30 30 30 32 45 43  02D803, 0x0002EC
0630: 30 31 2c 20 30 78 30 30 30 32 46 43 30 31 2c 20  01, 0x0002FC01, 
0640: 30 78 30 30 30 33 35 43 30 31 2c 0a 20 20 20 20  0x00035C01,.    
0650: 30 78 30 30 30 33 44 43 30 31 2c 20 30 78 30 30  0x0003DC01, 0x00
0660: 30 42 30 38 30 34 2c 20 30 78 30 30 30 42 34 38  0B0804, 0x000B48
0670: 30 45 2c 20 30 78 30 30 30 42 39 34 30 37 2c 20  0E, 0x000B9407, 
0680: 30 78 30 30 30 42 42 34 30 31 2c 0a 20 20 20 20  0x000BB401,.    
0690: 30 78 30 30 30 42 42 43 38 31 2c 20 30 78 30 30  0x000BBC81, 0x00
06a0: 30 44 44 34 30 31 2c 20 30 78 30 30 30 44 46 38  0DD401, 0x000DF8
06b0: 30 31 2c 20 30 78 30 30 30 45 31 30 30 32 2c 20  01, 0x000E1002, 
06c0: 30 78 30 30 30 45 31 43 30 31 2c 0a 20 20 20 20  0x000E1C01,.    
06d0: 30 78 30 30 30 46 44 38 30 31 2c 20 30 78 30 30  0x000FD801, 0x00
06e0: 31 32 30 38 30 38 2c 20 30 78 30 30 31 35 36 38  120808, 0x001568
06f0: 30 36 2c 20 30 78 30 30 31 36 32 34 30 32 2c 20  06, 0x00162402, 
0700: 30 78 30 30 31 36 33 43 30 31 2c 0a 20 20 20 20  0x00163C01,.    
0710: 30 78 30 30 31 36 34 34 33 37 2c 20 30 78 30 30  0x00164437, 0x00
0720: 31 37 43 43 30 32 2c 20 30 78 30 30 31 38 30 30  17CC02, 0x001800
0730: 30 35 2c 20 30 78 30 30 31 38 31 38 31 36 2c 20  05, 0x00181816, 
0740: 30 78 30 30 31 38 37 38 30 32 2c 0a 20 20 20 20  0x00187802,.    
0750: 30 78 30 30 31 39 32 43 31 35 2c 20 30 78 30 30  0x00192C15, 0x00
0760: 31 39 41 38 30 34 2c 20 30 78 30 30 31 39 43 30  19A804, 0x0019C0
0770: 30 31 2c 20 30 78 30 30 31 42 35 30 30 31 2c 20  01, 0x001B5001, 
0780: 30 78 30 30 31 42 35 38 30 46 2c 0a 20 20 20 20  0x001B580F,.    
0790: 30 78 30 30 31 42 39 43 30 37 2c 20 30 78 30 30  0x001B9C07, 0x00
07a0: 31 42 46 34 30 32 2c 20 30 78 30 30 31 43 30 30  1BF402, 0x001C00
07b0: 30 45 2c 20 30 78 30 30 31 43 33 43 30 31 2c 20  0E, 0x001C3C01, 
07c0: 30 78 30 30 31 43 34 34 30 31 2c 0a 20 20 20 20  0x001C4401,.    
07d0: 30 78 30 30 31 43 43 30 31 42 2c 20 30 78 30 30  0x001CC01B, 0x00
07e0: 31 45 39 38 30 42 2c 20 30 78 30 30 31 46 41 43  1E980B, 0x001FAC
07f0: 30 39 2c 20 30 78 30 30 31 46 44 38 30 34 2c 20  09, 0x001FD804, 
0800: 30 78 30 30 32 30 35 38 30 34 2c 0a 20 20 20 20  0x00205804,.    
0810: 30 78 30 30 32 30 36 43 30 39 2c 20 30 78 30 30  0x00206C09, 0x00
0820: 32 30 39 34 30 33 2c 20 30 78 30 30 32 30 41 34  209403, 0x0020A4
0830: 30 35 2c 20 30 78 30 30 32 30 43 30 30 46 2c 20  05, 0x0020C00F, 
0840: 30 78 30 30 32 31 36 34 30 33 2c 0a 20 20 20 20  0x00216403,.    
0850: 30 78 30 30 32 31 37 38 30 31 2c 20 30 78 30 30  0x00217801, 0x00
0860: 32 33 39 30 31 42 2c 20 30 78 30 30 32 34 30 30  23901B, 0x002400
0870: 30 34 2c 20 30 78 30 30 32 34 45 38 30 33 2c 20  04, 0x0024E803, 
0880: 30 78 30 30 32 34 46 38 31 32 2c 0a 20 20 20 20  0x0024F812,.    
0890: 30 78 30 30 32 35 34 34 30 37 2c 20 30 78 30 30  0x00254407, 0x00
08a0: 32 35 38 38 30 34 2c 20 30 78 30 30 32 35 43 30  258804, 0x0025C0
08b0: 30 31 2c 20 30 78 30 30 32 36 30 34 30 33 2c 20  01, 0x00260403, 
08c0: 30 78 30 30 32 36 46 30 30 31 2c 0a 20 20 20 20  0x0026F001,.    
08d0: 30 78 30 30 32 36 46 38 30 37 2c 20 30 78 30 30  0x0026F807, 0x00
08e0: 32 37 31 43 30 32 2c 20 30 78 30 30 32 37 32 43  271C02, 0x00272C
08f0: 30 33 2c 20 30 78 30 30 32 37 35 43 30 31 2c 20  03, 0x00275C01, 
0900: 30 78 30 30 32 37 38 38 30 32 2c 0a 20 20 20 20  0x00278802,.    
0910: 30 78 30 30 32 37 43 38 30 32 2c 20 30 78 30 30  0x0027C802, 0x00
0920: 32 37 45 38 30 32 2c 20 30 78 30 30 32 38 30 34  27E802, 0x002804
0930: 30 33 2c 20 30 78 30 30 32 38 46 30 30 31 2c 20  03, 0x0028F001, 
0940: 30 78 30 30 32 38 46 38 30 35 2c 0a 20 20 20 20  0x0028F805,.    
0950: 30 78 30 30 32 39 31 43 30 32 2c 20 30 78 30 30  0x00291C02, 0x00
0960: 32 39 32 43 30 33 2c 20 30 78 30 30 32 39 34 34  292C03, 0x002944
0970: 30 31 2c 20 30 78 30 30 32 39 43 30 30 32 2c 20  01, 0x0029C002, 
0980: 30 78 30 30 32 39 44 34 30 31 2c 0a 20 20 20 20  0x0029D401,.    
0990: 30 78 30 30 32 41 30 34 30 33 2c 20 30 78 30 30  0x002A0403, 0x00
09a0: 32 41 46 30 30 31 2c 20 30 78 30 30 32 41 46 38  2AF001, 0x002AF8
09b0: 30 38 2c 20 30 78 30 30 32 42 31 43 30 33 2c 20  08, 0x002B1C03, 
09c0: 30 78 30 30 32 42 32 43 30 33 2c 0a 20 20 20 20  0x002B2C03,.    
09d0: 30 78 30 30 32 42 38 38 30 32 2c 20 30 78 30 30  0x002B8802, 0x00
09e0: 32 42 43 30 30 32 2c 20 30 78 30 30 32 43 30 34  2BC002, 0x002C04
09f0: 30 33 2c 20 30 78 30 30 32 43 46 30 30 31 2c 20  03, 0x002CF001, 
0a00: 30 78 30 30 32 43 46 38 30 37 2c 0a 20 20 20 20  0x002CF807,.    
0a10: 30 78 30 30 32 44 31 43 30 32 2c 20 30 78 30 30  0x002D1C02, 0x00
0a20: 32 44 32 43 30 33 2c 20 30 78 30 30 32 44 35 38  2D2C03, 0x002D58
0a30: 30 32 2c 20 30 78 30 30 32 44 38 38 30 32 2c 20  02, 0x002D8802, 
0a40: 30 78 30 30 32 44 43 30 30 31 2c 0a 20 20 20 20  0x002DC001,.    
0a50: 30 78 30 30 32 45 30 38 30 31 2c 20 30 78 30 30  0x002E0801, 0x00
0a60: 32 45 46 38 30 35 2c 20 30 78 30 30 32 46 31 38  2EF805, 0x002F18
0a70: 30 33 2c 20 30 78 30 30 32 46 32 38 30 34 2c 20  03, 0x002F2804, 
0a80: 30 78 30 30 32 46 35 43 30 31 2c 0a 20 20 20 20  0x002F5C01,.    
0a90: 30 78 30 30 32 46 43 43 30 38 2c 20 30 78 30 30  0x002FCC08, 0x00
0aa0: 33 30 30 34 30 33 2c 20 30 78 30 30 33 30 46 38  300403, 0x0030F8
0ab0: 30 37 2c 20 30 78 30 30 33 31 31 38 30 33 2c 20  07, 0x00311803, 
0ac0: 30 78 30 30 33 31 32 38 30 34 2c 0a 20 20 20 20  0x00312804,.    
0ad0: 30 78 30 30 33 31 35 34 30 32 2c 20 30 78 30 30  0x00315402, 0x00
0ae0: 33 31 38 38 30 32 2c 20 30 78 30 30 33 31 46 43  318802, 0x0031FC
0af0: 30 31 2c 20 30 78 30 30 33 32 30 38 30 32 2c 20  01, 0x00320802, 
0b00: 30 78 30 30 33 32 46 30 30 31 2c 0a 20 20 20 20  0x0032F001,.    
0b10: 30 78 30 30 33 32 46 38 30 37 2c 20 30 78 30 30  0x0032F807, 0x00
0b20: 33 33 31 38 30 33 2c 20 30 78 30 30 33 33 32 38  331803, 0x003328
0b30: 30 34 2c 20 30 78 30 30 33 33 35 34 30 32 2c 20  04, 0x00335402, 
0b40: 30 78 30 30 33 33 38 38 30 32 2c 0a 20 20 20 20  0x00338802,.    
0b50: 30 78 30 30 33 34 30 38 30 32 2c 20 30 78 30 30  0x00340802, 0x00
0b60: 33 34 46 38 30 37 2c 20 30 78 30 30 33 35 31 38  34F807, 0x003518
0b70: 30 33 2c 20 30 78 30 30 33 35 32 38 30 34 2c 20  03, 0x00352804, 
0b80: 30 78 30 30 33 35 35 43 30 31 2c 0a 20 20 20 20  0x00355C01,.    
0b90: 30 78 30 30 33 35 38 38 30 32 2c 20 30 78 30 30  0x00358802, 0x00
0ba0: 33 35 45 34 30 31 2c 20 30 78 30 30 33 36 30 38  35E401, 0x003608
0bb0: 30 32 2c 20 30 78 30 30 33 37 32 38 30 31 2c 20  02, 0x00372801, 
0bc0: 30 78 30 30 33 37 33 43 30 36 2c 0a 20 20 20 20  0x00373C06,.    
0bd0: 30 78 30 30 33 37 35 38 30 31 2c 20 30 78 30 30  0x00375801, 0x00
0be0: 33 37 36 30 30 38 2c 20 30 78 30 30 33 37 43 38  376008, 0x0037C8
0bf0: 30 33 2c 20 30 78 30 30 33 38 43 34 30 31 2c 20  03, 0x0038C401, 
0c00: 30 78 30 30 33 38 44 30 30 37 2c 0a 20 20 20 20  0x0038D007,.    
0c10: 30 78 30 30 33 38 46 43 30 31 2c 20 30 78 30 30  0x0038FC01, 0x00
0c20: 33 39 31 43 30 39 2c 20 30 78 30 30 33 39 36 38  391C09, 0x003968
0c30: 30 32 2c 20 30 78 30 30 33 41 43 34 30 31 2c 20  02, 0x003AC401, 
0c40: 30 78 30 30 33 41 44 30 30 36 2c 0a 20 20 20 20  0x003AD006,.    
0c50: 30 78 30 30 33 41 45 43 30 32 2c 20 30 78 30 30  0x003AEC02, 0x00
0c60: 33 42 32 30 30 36 2c 20 30 78 30 30 33 43 30 34  3B2006, 0x003C04
0c70: 31 46 2c 20 30 78 30 30 33 43 44 30 30 43 2c 20  1F, 0x003CD00C, 
0c80: 30 78 30 30 33 44 43 34 31 37 2c 0a 20 20 20 20  0x003DC417,.    
0c90: 30 78 30 30 33 45 33 34 30 42 2c 20 30 78 30 30  0x003E340B, 0x00
0ca0: 33 45 36 34 32 34 2c 20 30 78 30 30 33 45 46 38  3E6424, 0x003EF8
0cb0: 30 46 2c 20 30 78 30 30 33 46 33 38 30 44 2c 20  0F, 0x003F380D, 
0cc0: 30 78 30 30 34 30 41 43 31 34 2c 0a 20 20 20 20  0x0040AC14,.    
0cd0: 30 78 30 30 34 31 32 38 30 36 2c 20 30 78 30 30  0x00412806, 0x00
0ce0: 34 31 35 38 30 34 2c 20 30 78 30 30 34 31 37 38  415804, 0x004178
0cf0: 30 33 2c 20 30 78 30 30 34 31 38 38 30 33 2c 20  03, 0x00418803, 
0d00: 30 78 30 30 34 31 39 43 30 37 2c 0a 20 20 20 20  0x00419C07,.    
0d10: 30 78 30 30 34 31 43 34 30 34 2c 20 30 78 30 30  0x0041C404, 0x00
0d20: 34 32 30 38 30 43 2c 20 30 78 30 30 34 32 33 43  42080C, 0x00423C
0d30: 30 31 2c 20 30 78 30 30 34 32 36 38 30 36 2c 20  01, 0x00426806, 
0d40: 30 78 30 30 34 33 45 43 30 31 2c 0a 20 20 20 20  0x0043EC01,.    
0d50: 30 78 30 30 34 44 37 34 30 43 2c 20 30 78 30 30  0x004D740C, 0x00
0d60: 34 45 34 30 30 41 2c 20 30 78 30 30 35 30 30 30  4E400A, 0x005000
0d70: 30 31 2c 20 30 78 30 30 35 39 42 34 30 32 2c 20  01, 0x0059B402, 
0d80: 30 78 30 30 35 41 30 30 30 31 2c 0a 20 20 20 20  0x005A0001,.    
0d90: 30 78 30 30 35 41 36 43 30 32 2c 20 30 78 30 30  0x005A6C02, 0x00
0da0: 35 42 41 43 30 33 2c 20 30 78 30 30 35 43 34 38  5BAC03, 0x005C48
0db0: 30 33 2c 20 30 78 30 30 35 43 43 38 30 35 2c 20  03, 0x005CC805, 
0dc0: 30 78 30 30 35 44 34 38 30 32 2c 0a 20 20 20 20  0x005D4802,.    
0dd0: 30 78 30 30 35 44 43 38 30 32 2c 20 30 78 30 30  0x005DC802, 0x00
0de0: 35 45 44 30 32 33 2c 20 30 78 30 30 35 46 36 30  5ED023, 0x005F60
0df0: 30 34 2c 20 30 78 30 30 35 46 37 34 30 31 2c 20  04, 0x005F7401, 
0e00: 30 78 30 30 36 30 30 30 30 46 2c 0a 20 20 20 20  0x0060000F,.    
0e10: 30 78 30 30 36 32 41 34 30 31 2c 20 30 78 30 30  0x0062A401, 0x00
0e20: 36 34 38 30 30 43 2c 20 30 78 30 30 36 34 43 30  64800C, 0x0064C0
0e30: 30 43 2c 20 30 78 30 30 36 35 30 30 30 31 2c 20  0C, 0x00650001, 
0e40: 30 78 30 30 36 35 31 30 30 32 2c 0a 20 20 20 20  0x00651002,.    
0e50: 30 78 30 30 36 36 43 30 31 31 2c 20 30 78 30 30  0x0066C011, 0x00
0e60: 36 37 32 30 30 32 2c 20 30 78 30 30 36 37 37 38  672002, 0x006778
0e70: 32 32 2c 20 30 78 30 30 36 38 35 43 30 35 2c 20  22, 0x00685C05, 
0e80: 30 78 30 30 36 38 37 38 30 32 2c 0a 20 20 20 20  0x00687802,.    
0e90: 30 78 30 30 36 39 35 34 30 41 2c 20 30 78 30 30  0x0069540A, 0x00
0ea0: 36 39 38 30 31 44 2c 20 30 78 30 30 36 39 46 43  69801D, 0x0069FC
0eb0: 30 31 2c 20 30 78 30 30 36 41 38 30 30 37 2c 20  01, 0x006A8007, 
0ec0: 30 78 30 30 36 41 41 30 30 36 2c 0a 20 20 20 20  0x006AA006,.    
0ed0: 30 78 30 30 36 43 30 30 30 35 2c 20 30 78 30 30  0x006C0005, 0x00
0ee0: 36 43 44 30 31 31 2c 20 30 78 30 30 36 44 36 38  6CD011, 0x006D68
0ef0: 32 33 2c 20 30 78 30 30 36 45 30 30 30 33 2c 20  23, 0x006E0003, 
0f00: 30 78 30 30 36 45 38 34 30 44 2c 0a 20 20 20 20  0x006E840D,.    
0f10: 30 78 30 30 36 46 39 38 30 45 2c 20 30 78 30 30  0x006F980E, 0x00
0f20: 36 46 46 30 30 34 2c 20 30 78 30 30 37 30 39 30  6FF004, 0x007090
0f30: 31 34 2c 20 30 78 30 30 37 30 45 43 30 35 2c 20  14, 0x0070EC05, 
0f40: 30 78 30 30 37 31 46 38 30 32 2c 0a 20 20 20 20  0x0071F802,.    
0f50: 30 78 30 30 37 33 30 30 30 38 2c 20 30 78 30 30  0x00730008, 0x00
0f60: 37 33 34 30 31 39 2c 20 30 78 30 30 37 33 42 34  734019, 0x0073B4
0f70: 30 31 2c 20 30 78 30 30 37 33 43 38 30 33 2c 20  01, 0x0073C803, 
0f80: 30 78 30 30 37 37 30 30 32 37 2c 0a 20 20 20 20  0x00770027,.    
0f90: 30 78 30 30 37 37 46 30 30 34 2c 20 30 78 30 30  0x0077F004, 0x00
0fa0: 37 45 46 34 30 31 2c 20 30 78 30 30 37 45 46 43  7EF401, 0x007EFC
0fb0: 30 33 2c 20 30 78 30 30 37 46 33 34 30 33 2c 20  03, 0x007F3403, 
0fc0: 30 78 30 30 37 46 37 34 30 33 2c 0a 20 20 20 20  0x007F7403,.    
0fd0: 30 78 30 30 37 46 42 34 30 33 2c 20 30 78 30 30  0x007FB403, 0x00
0fe0: 37 46 46 34 30 32 2c 20 30 78 30 30 38 30 30 30  7FF402, 0x008000
0ff0: 36 35 2c 20 30 78 30 30 38 31 41 38 30 36 2c 20  65, 0x0081A806, 
1000: 30 78 30 30 38 31 45 38 30 35 2c 0a 20 20 20 20  0x0081E805,.    
1010: 30 78 30 30 38 32 32 38 30 35 2c 20 30 78 30 30  0x00822805, 0x00
1020: 38 32 38 30 31 41 2c 20 30 78 30 30 38 33 34 30  82801A, 0x008340
1030: 32 31 2c 20 30 78 30 30 38 34 30 30 30 32 2c 20  21, 0x00840002, 
1040: 30 78 30 30 38 34 30 43 30 34 2c 0a 20 20 20 20  0x00840C04,.    
1050: 30 78 30 30 38 34 32 30 30 32 2c 20 30 78 30 30  0x00842002, 0x00
1060: 38 34 35 30 30 31 2c 20 30 78 30 30 38 34 35 38  845001, 0x008458
1070: 30 33 2c 20 30 78 30 30 38 34 37 38 30 36 2c 20  03, 0x00847806, 
1080: 30 78 30 30 38 34 39 34 30 31 2c 0a 20 20 20 20  0x00849401,.    
1090: 30 78 30 30 38 34 39 43 30 31 2c 20 30 78 30 30  0x00849C01, 0x00
10a0: 38 34 41 34 30 31 2c 20 30 78 30 30 38 34 42 38  84A401, 0x0084B8
10b0: 30 31 2c 20 30 78 30 30 38 34 45 38 30 32 2c 20  01, 0x0084E802, 
10c0: 30 78 30 30 38 35 30 30 30 35 2c 0a 20 20 20 20  0x00850005,.    
10d0: 30 78 30 30 38 35 32 38 30 34 2c 20 30 78 30 30  0x00852804, 0x00
10e0: 38 35 33 43 30 31 2c 20 30 78 30 30 38 36 34 32  853C01, 0x008642
10f0: 36 34 2c 20 30 78 30 30 39 30 30 30 32 37 2c 20  64, 0x00900027, 
1100: 30 78 30 30 39 31 30 30 30 42 2c 0a 20 20 20 20  0x0091000B,.    
1110: 30 78 30 30 39 32 37 30 34 45 2c 20 30 78 30 30  0x0092704E, 0x00
1120: 39 34 30 32 30 30 2c 20 30 78 30 30 39 43 30 34  940200, 0x009C04
1130: 37 35 2c 20 30 78 30 30 39 45 35 33 42 39 2c 20  75, 0x009E53B9, 
1140: 30 78 30 30 41 44 34 30 30 41 2c 0a 20 20 20 20  0x00AD400A,.    
1150: 30 78 30 30 42 33 39 34 30 36 2c 20 30 78 30 30  0x00B39406, 0x00
1160: 42 33 42 43 30 33 2c 20 30 78 30 30 42 33 45 34  B3BC03, 0x00B3E4
1170: 30 34 2c 20 30 78 30 30 42 33 46 38 30 32 2c 20  04, 0x00B3F802, 
1180: 30 78 30 30 42 35 43 30 30 31 2c 0a 20 20 20 20  0x00B5C001,.    
1190: 30 78 30 30 42 35 46 43 30 31 2c 20 30 78 30 30  0x00B5FC01, 0x00
11a0: 42 37 38 30 34 46 2c 20 30 78 30 30 42 38 43 30  B7804F, 0x00B8C0
11b0: 30 43 2c 20 30 78 30 30 42 41 30 30 31 41 2c 20  0C, 0x00BA001A, 
11c0: 30 78 30 30 42 41 36 43 35 39 2c 0a 20 20 20 20  0x00BA6C59,.    
11d0: 30 78 30 30 42 43 30 30 44 36 2c 20 30 78 30 30  0x00BC00D6, 0x00
11e0: 42 46 43 30 30 43 2c 20 30 78 30 30 43 30 30 30  BFC00C, 0x00C000
11f0: 30 35 2c 20 30 78 30 30 43 30 32 30 31 39 2c 20  05, 0x00C02019, 
1200: 30 78 30 30 43 30 41 38 30 37 2c 0a 20 20 20 20  0x00C0A807,.    
1210: 30 78 30 30 43 30 44 38 30 32 2c 20 30 78 30 30  0x00C0D802, 0x00
1220: 43 30 46 34 30 33 2c 20 30 78 30 30 43 32 36 34  C0F403, 0x00C264
1230: 30 34 2c 20 30 78 30 30 43 32 38 30 30 31 2c 20  04, 0x00C28001, 
1240: 30 78 30 30 43 33 45 43 30 31 2c 0a 20 20 20 20  0x00C3EC01,.    
1250: 30 78 30 30 43 36 34 30 30 32 2c 20 30 78 30 30  0x00C64002, 0x00
1260: 43 36 35 38 30 41 2c 20 30 78 30 30 43 37 30 30  C6580A, 0x00C700
1270: 32 34 2c 20 30 78 30 30 43 38 30 30 31 46 2c 20  24, 0x00C8001F, 
1280: 30 78 30 30 43 38 41 38 31 45 2c 0a 20 20 20 20  0x00C8A81E,.    
1290: 30 78 30 30 43 39 34 30 30 31 2c 20 30 78 30 30  0x00C94001, 0x00
12a0: 43 39 38 30 32 30 2c 20 30 78 30 30 43 41 32 38  C98020, 0x00CA28
12b0: 32 37 2c 20 30 78 30 30 43 42 30 30 33 46 2c 20  27, 0x00CB003F, 
12c0: 30 78 30 30 43 43 30 31 30 30 2c 0a 20 20 20 20  0x00CC0100,.    
12d0: 30 78 30 31 33 37 30 30 34 30 2c 20 30 78 30 32  0x01370040, 0x02
12e0: 39 32 34 30 33 37 2c 20 30 78 30 32 39 33 46 38  924037, 0x0293F8
12f0: 30 32 2c 20 30 78 30 32 39 38 33 34 30 33 2c 20  02, 0x02983403, 
1300: 30 78 30 32 39 39 42 43 31 30 2c 0a 20 20 20 20  0x0299BC10,.    
1310: 30 78 30 32 39 41 37 43 30 31 2c 20 30 78 30 32  0x029A7C01, 0x02
1320: 39 42 43 30 30 38 2c 20 30 78 30 32 39 43 30 30  9BC008, 0x029C00
1330: 31 37 2c 20 30 78 30 32 39 43 38 30 30 32 2c 20  17, 0x029C8002, 
1340: 30 78 30 32 39 45 32 34 30 32 2c 0a 20 20 20 20  0x029E2402,.    
1350: 30 78 30 32 41 30 30 38 30 31 2c 20 30 78 30 32  0x02A00801, 0x02
1360: 41 30 31 38 30 31 2c 20 30 78 30 32 41 30 32 43  A01801, 0x02A02C
1370: 30 31 2c 20 30 78 30 32 41 30 38 43 30 39 2c 20  01, 0x02A08C09, 
1380: 30 78 30 32 41 30 44 38 30 34 2c 0a 20 20 20 20  0x02A0D804,.    
1390: 30 78 30 32 41 31 44 30 30 34 2c 20 30 78 30 32  0x02A1D004, 0x02
13a0: 41 32 30 30 30 32 2c 20 30 78 30 32 41 32 44 30  A20002, 0x02A2D0
13b0: 31 31 2c 20 30 78 30 32 41 33 33 38 30 32 2c 20  11, 0x02A33802, 
13c0: 30 78 30 32 41 33 38 30 31 32 2c 0a 20 20 20 20  0x02A38012,.    
13d0: 30 78 30 32 41 33 45 30 30 33 2c 20 30 78 30 32  0x02A3E003, 0x02
13e0: 41 34 39 38 30 41 2c 20 30 78 30 32 41 35 31 43  A4980A, 0x02A51C
13f0: 30 44 2c 20 30 78 30 32 41 35 37 43 30 31 2c 20  0D, 0x02A57C01, 
1400: 30 78 30 32 41 36 30 30 30 34 2c 0a 20 20 20 20  0x02A60004,.    
1410: 30 78 30 32 41 36 43 43 31 42 2c 20 30 78 30 32  0x02A6CC1B, 0x02
1420: 41 37 37 38 30 32 2c 20 30 78 30 32 41 38 41 34  A77802, 0x02A8A4
1430: 30 45 2c 20 30 78 30 32 41 39 30 43 30 31 2c 20  0E, 0x02A90C01, 
1440: 30 78 30 32 41 39 33 30 30 32 2c 0a 20 20 20 20  0x02A93002,.    
1450: 30 78 30 32 41 39 37 30 30 34 2c 20 30 78 30 32  0x02A97004, 0x02
1460: 41 39 44 43 30 33 2c 20 30 78 30 32 41 39 45 43  A9DC03, 0x02A9EC
1470: 30 31 2c 20 30 78 30 32 41 41 43 30 30 31 2c 20  01, 0x02AAC001, 
1480: 30 78 30 32 41 41 43 38 30 33 2c 0a 20 20 20 20  0x02AAC803,.    
1490: 30 78 30 32 41 41 44 43 30 32 2c 20 30 78 30 32  0x02AADC02, 0x02
14a0: 41 41 46 38 30 32 2c 20 30 78 30 32 41 42 30 34  AAF802, 0x02AB04
14b0: 30 31 2c 20 30 78 30 32 41 42 37 38 30 32 2c 20  01, 0x02AB7802, 
14c0: 30 78 30 32 41 42 41 43 30 37 2c 0a 20 20 20 20  0x02ABAC07,.    
14d0: 30 78 30 32 41 42 44 34 30 32 2c 20 30 78 30 32  0x02ABD402, 0x02
14e0: 41 46 38 43 30 42 2c 20 30 78 30 33 36 30 30 30  AF8C0B, 0x036000
14f0: 30 31 2c 20 30 78 30 33 36 44 46 43 30 32 2c 20  01, 0x036DFC02, 
1500: 30 78 30 33 36 46 46 43 30 32 2c 0a 20 20 20 20  0x036FFC02,.    
1510: 30 78 30 33 37 46 46 43 30 31 2c 20 30 78 30 33  0x037FFC01, 0x03
1520: 45 43 37 38 30 31 2c 20 30 78 30 33 45 43 41 34  EC7801, 0x03ECA4
1530: 30 31 2c 20 30 78 30 33 45 45 43 38 31 30 2c 20  01, 0x03EEC810, 
1540: 30 78 30 33 46 34 46 38 30 32 2c 0a 20 20 20 20  0x03F4F802,.    
1550: 30 78 30 33 46 37 46 30 30 32 2c 20 30 78 30 33  0x03F7F002, 0x03
1560: 46 38 30 30 31 41 2c 20 30 78 30 33 46 38 38 30  F8001A, 0x03F880
1570: 30 37 2c 20 30 78 30 33 46 38 43 30 32 33 2c 20  07, 0x03F8C023, 
1580: 30 78 30 33 46 39 35 30 31 33 2c 0a 20 20 20 20  0x03F95013,.    
1590: 30 78 30 33 46 39 41 30 30 34 2c 20 30 78 30 33  0x03F9A004, 0x03
15a0: 46 42 46 43 30 31 2c 20 30 78 30 33 46 43 30 34  FBFC01, 0x03FC04
15b0: 30 46 2c 20 30 78 30 33 46 43 36 38 30 37 2c 20  0F, 0x03FC6807, 
15c0: 30 78 30 33 46 43 45 43 30 36 2c 0a 20 20 20 20  0x03FCEC06,.    
15d0: 30 78 30 33 46 44 36 43 30 42 2c 20 30 78 30 33  0x03FD6C0B, 0x03
15e0: 46 46 38 30 30 37 2c 20 30 78 30 33 46 46 41 30  FF8007, 0x03FFA0
15f0: 30 37 2c 20 30 78 30 33 46 46 45 34 30 35 2c 20  07, 0x03FFE405, 
1600: 30 78 30 34 30 34 30 30 30 33 2c 0a 20 20 20 20  0x04040003,.    
1610: 30 78 30 34 30 34 44 43 30 39 2c 20 30 78 30 34  0x0404DC09, 0x04
1620: 30 35 45 34 31 31 2c 20 30 78 30 34 30 36 34 30  05E411, 0x040640
1630: 30 43 2c 20 30 78 30 34 30 37 34 30 32 45 2c 20  0C, 0x0407402E, 
1640: 30 78 30 34 30 45 37 43 30 31 2c 0a 20 20 20 20  0x040E7C01,.    
1650: 30 78 30 34 30 46 34 30 30 31 2c 20 30 78 30 34  0x040F4001, 0x04
1660: 32 31 35 43 30 31 2c 20 30 78 30 34 32 34 37 43  215C01, 0x04247C
1670: 30 31 2c 20 30 78 30 34 32 34 46 43 30 31 2c 20  01, 0x0424FC01, 
1680: 30 78 30 34 32 38 30 34 30 33 2c 0a 20 20 20 20  0x04280403,.    
1690: 30 78 30 34 32 38 31 34 30 32 2c 20 30 78 30 34  0x04281402, 0x04
16a0: 32 38 33 30 30 34 2c 20 30 78 30 34 32 38 45 30  283004, 0x0428E0
16b0: 30 33 2c 20 30 78 30 34 32 38 46 43 30 31 2c 20  03, 0x0428FC01, 
16c0: 30 78 30 34 32 39 34 30 30 39 2c 0a 20 20 20 20  0x04294009,.    
16d0: 30 78 30 34 32 39 46 43 30 31 2c 20 30 78 30 34  0x0429FC01, 0x04
16e0: 32 43 45 34 30 37 2c 20 30 78 30 34 34 30 30 30  2CE407, 0x044000
16f0: 30 33 2c 20 30 78 30 34 34 30 45 30 31 36 2c 20  03, 0x0440E016, 
1700: 30 78 30 34 34 32 30 30 30 33 2c 0a 20 20 20 20  0x04420003,.    
1710: 30 78 30 34 34 32 43 30 31 32 2c 20 30 78 30 34  0x0442C012, 0x04
1720: 34 34 30 30 30 33 2c 20 30 78 30 34 34 34 39 43  440003, 0x04449C
1730: 30 45 2c 20 30 78 30 34 34 35 30 30 30 34 2c 20  0E, 0x04450004, 
1740: 30 78 30 34 34 36 30 30 30 33 2c 0a 20 20 20 20  0x04460003,.    
1750: 30 78 30 34 34 36 43 43 30 45 2c 20 30 78 30 34  0x0446CC0E, 0x04
1760: 34 37 31 34 30 34 2c 20 30 78 30 34 35 41 41 43  471404, 0x045AAC
1770: 30 44 2c 20 30 78 30 34 39 31 43 30 30 34 2c 20  0D, 0x0491C004, 
1780: 30 78 30 35 42 44 34 34 32 45 2c 0a 20 20 20 20  0x05BD442E,.    
1790: 30 78 30 35 42 45 33 43 30 34 2c 20 30 78 30 37  0x05BE3C04, 0x07
17a0: 34 30 30 30 46 36 2c 20 30 78 30 37 34 34 30 30  4000F6, 0x074400
17b0: 32 37 2c 20 30 78 30 37 34 34 41 34 42 35 2c 20  27, 0x0744A4B5, 
17c0: 30 78 30 37 34 38 30 30 34 36 2c 0a 20 20 20 20  0x07480046,.    
17d0: 30 78 30 37 34 43 30 30 35 37 2c 20 30 78 30 37  0x074C0057, 0x07
17e0: 35 42 30 34 30 31 2c 20 30 78 30 37 35 42 36 43  5B0401, 0x075B6C
17f0: 30 31 2c 20 30 78 30 37 35 42 45 43 30 31 2c 20  01, 0x075BEC01, 
1800: 30 78 30 37 35 43 35 34 30 31 2c 0a 20 20 20 20  0x075C5401,.    
1810: 30 78 30 37 35 43 44 34 30 31 2c 20 30 78 30 37  0x075CD401, 0x07
1820: 35 44 33 43 30 31 2c 20 30 78 30 37 35 44 42 43  5D3C01, 0x075DBC
1830: 30 31 2c 20 30 78 30 37 35 45 32 34 30 31 2c 20  01, 0x075E2401, 
1840: 30 78 30 37 35 45 41 34 30 31 2c 0a 20 20 20 20  0x075EA401,.    
1850: 30 78 30 37 35 46 30 43 30 31 2c 20 30 78 30 37  0x075F0C01, 0x07
1860: 42 42 43 30 30 32 2c 20 30 78 30 37 43 30 30 30  BBC002, 0x07C000
1870: 32 43 2c 20 30 78 30 37 43 30 43 30 36 34 2c 20  2C, 0x07C0C064, 
1880: 30 78 30 37 43 32 38 30 30 46 2c 0a 20 20 20 20  0x07C2800F,.    
1890: 30 78 30 37 43 32 43 34 30 45 2c 20 30 78 30 37  0x07C2C40E, 0x07
18a0: 43 33 30 34 30 46 2c 20 30 78 30 37 43 33 34 34  C3040F, 0x07C344
18b0: 30 46 2c 20 30 78 30 37 43 34 34 30 31 46 2c 20  0F, 0x07C4401F, 
18c0: 30 78 30 37 43 34 43 30 33 43 2c 0a 20 20 20 20  0x07C4C03C,.    
18d0: 30 78 30 37 43 35 43 30 32 42 2c 20 30 78 30 37  0x07C5C02B, 0x07
18e0: 43 37 39 38 31 44 2c 20 30 78 30 37 43 38 34 30  C7981D, 0x07C840
18f0: 32 42 2c 20 30 78 30 37 43 39 30 30 30 39 2c 20  2B, 0x07C90009, 
1900: 30 78 30 37 43 39 34 30 30 32 2c 0a 20 20 20 20  0x07C94002,.    
1910: 30 78 30 37 43 43 30 30 32 31 2c 20 30 78 30 37  0x07CC0021, 0x07
1920: 43 43 43 30 30 36 2c 20 30 78 30 37 43 43 44 43  CCC006, 0x07CCDC
1930: 34 36 2c 20 30 78 30 37 43 45 30 30 31 34 2c 20  46, 0x07CE0014, 
1940: 30 78 30 37 43 45 38 30 32 35 2c 0a 20 20 20 20  0x07CE8025,.    
1950: 30 78 30 37 43 46 31 38 30 35 2c 20 30 78 30 37  0x07CF1805, 0x07
1960: 43 46 38 30 31 31 2c 20 30 78 30 37 44 30 30 30  CF8011, 0x07D000
1970: 33 46 2c 20 30 78 30 37 44 31 30 30 30 31 2c 20  3F, 0x07D10001, 
1980: 30 78 30 37 44 31 30 38 42 36 2c 0a 20 20 20 20  0x07D108B6,.    
1990: 30 78 30 37 44 33 45 34 30 34 2c 20 30 78 30 37  0x07D3E404, 0x07
19a0: 44 34 30 30 33 45 2c 20 30 78 30 37 44 35 30 30  D4003E, 0x07D500
19b0: 30 34 2c 20 30 78 30 37 44 35 34 30 31 38 2c 20  04, 0x07D54018, 
19c0: 30 78 30 37 44 37 45 43 34 36 2c 0a 20 20 20 20  0x07D7EC46,.    
19d0: 30 78 30 37 44 39 31 34 30 42 2c 20 30 78 30 37  0x07D9140B, 0x07
19e0: 44 41 30 30 34 36 2c 20 30 78 30 37 44 43 30 30  DA0046, 0x07DC00
19f0: 37 34 2c 20 30 78 33 38 30 30 30 34 30 31 2c 20  74, 0x38000401, 
1a00: 30 78 33 38 30 30 38 30 36 30 2c 0a 20 20 20 20  0x38008060,.    
1a10: 30 78 33 38 30 34 30 30 46 30 2c 0a 20 20 7d 3b  0x380400F0,.  };
1a20: 0a 20 20 73 74 61 74 69 63 20 63 6f 6e 73 74 20  .  static const 
1a30: 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 61 41 73  unsigned int aAs
1a40: 63 69 69 5b 34 5d 20 3d 20 7b 0a 20 20 20 20 30  cii[4] = {.    0
1a50: 78 46 46 46 46 46 46 46 46 2c 20 30 78 46 43 30  xFFFFFFFF, 0xFC0
1a60: 30 46 46 46 46 2c 20 30 78 46 38 30 30 30 30 30  0FFFF, 0xF800000
1a70: 31 2c 20 30 78 46 38 30 30 30 30 30 31 2c 0a 20  1, 0xF8000001,. 
1a80: 20 7d 3b 0a 0a 20 20 69 66 28 20 28 75 6e 73 69   };..  if( (unsi
1a90: 67 6e 65 64 20 69 6e 74 29 63 3c 31 32 38 20 29  gned int)c<128 )
1aa0: 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 28 20 28  {.    return ( (
1ab0: 61 41 73 63 69 69 5b 63 20 3e 3e 20 35 5d 20 26  aAscii[c >> 5] &
1ac0: 20 28 28 75 6e 73 69 67 6e 65 64 20 69 6e 74 29   ((unsigned int)
1ad0: 31 20 3c 3c 20 28 63 20 26 20 30 78 30 30 31 46  1 << (c & 0x001F
1ae0: 29 29 29 3d 3d 30 20 29 3b 0a 20 20 7d 65 6c 73  )))==0 );.  }els
1af0: 65 20 69 66 28 20 28 75 6e 73 69 67 6e 65 64 20  e if( (unsigned 
1b00: 69 6e 74 29 63 3c 28 31 3c 3c 32 32 29 20 29 7b  int)c<(1<<22) ){
1b10: 0a 20 20 20 20 75 6e 73 69 67 6e 65 64 20 69 6e  .    unsigned in
1b20: 74 20 6b 65 79 20 3d 20 28 28 28 75 6e 73 69 67  t key = (((unsig
1b30: 6e 65 64 20 69 6e 74 29 63 29 3c 3c 31 30 29 20  ned int)c)<<10) 
1b40: 7c 20 30 78 30 30 30 30 30 33 46 46 3b 0a 20 20  | 0x000003FF;.  
1b50: 20 20 69 6e 74 20 69 52 65 73 20 3d 20 30 3b 0a    int iRes = 0;.
1b60: 20 20 20 20 69 6e 74 20 69 48 69 20 3d 20 73 69      int iHi = si
1b70: 7a 65 6f 66 28 61 45 6e 74 72 79 29 2f 73 69 7a  zeof(aEntry)/siz
1b80: 65 6f 66 28 61 45 6e 74 72 79 5b 30 5d 29 20 2d  eof(aEntry[0]) -
1b90: 20 31 3b 0a 20 20 20 20 69 6e 74 20 69 4c 6f 20   1;.    int iLo 
1ba0: 3d 20 30 3b 0a 20 20 20 20 77 68 69 6c 65 28 20  = 0;.    while( 
1bb0: 69 48 69 3e 3d 69 4c 6f 20 29 7b 0a 20 20 20 20  iHi>=iLo ){.    
1bc0: 20 20 69 6e 74 20 69 54 65 73 74 20 3d 20 28 69    int iTest = (i
1bd0: 48 69 20 2b 20 69 4c 6f 29 20 2f 20 32 3b 0a 20  Hi + iLo) / 2;. 
1be0: 20 20 20 20 20 69 66 28 20 6b 65 79 20 3e 3d 20       if( key >= 
1bf0: 61 45 6e 74 72 79 5b 69 54 65 73 74 5d 20 29 7b  aEntry[iTest] ){
1c00: 0a 20 20 20 20 20 20 20 20 69 52 65 73 20 3d 20  .        iRes = 
1c10: 69 54 65 73 74 3b 0a 20 20 20 20 20 20 20 20 69  iTest;.        i
1c20: 4c 6f 20 3d 20 69 54 65 73 74 2b 31 3b 0a 20 20  Lo = iTest+1;.  
1c30: 20 20 20 20 7d 65 6c 73 65 7b 0a 20 20 20 20 20      }else{.     
1c40: 20 20 20 69 48 69 20 3d 20 69 54 65 73 74 2d 31     iHi = iTest-1
1c50: 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a  ;.      }.    }.
1c60: 20 20 20 20 61 73 73 65 72 74 28 20 61 45 6e 74      assert( aEnt
1c70: 72 79 5b 30 5d 3c 6b 65 79 20 29 3b 0a 20 20 20  ry[0]<key );.   
1c80: 20 61 73 73 65 72 74 28 20 6b 65 79 3e 3d 61 45   assert( key>=aE
1c90: 6e 74 72 79 5b 69 52 65 73 5d 20 29 3b 0a 20 20  ntry[iRes] );.  
1ca0: 20 20 72 65 74 75 72 6e 20 28 28 28 75 6e 73 69    return (((unsi
1cb0: 67 6e 65 64 20 69 6e 74 29 63 29 20 3e 3d 20 28  gned int)c) >= (
1cc0: 28 61 45 6e 74 72 79 5b 69 52 65 73 5d 3e 3e 31  (aEntry[iRes]>>1
1cd0: 30 29 20 2b 20 28 61 45 6e 74 72 79 5b 69 52 65  0) + (aEntry[iRe
1ce0: 73 5d 26 30 78 33 46 46 29 29 29 3b 0a 20 20 7d  s]&0x3FF)));.  }
1cf0: 0a 20 20 72 65 74 75 72 6e 20 31 3b 0a 7d 0a 0a  .  return 1;.}..
1d00: 0a 2f 2a 0a 2a 2a 20 49 66 20 74 68 65 20 61 72  ./*.** If the ar
1d10: 67 75 6d 65 6e 74 20 69 73 20 61 20 63 6f 64 65  gument is a code
1d20: 70 6f 69 6e 74 20 63 6f 72 72 65 73 70 6f 6e 64  point correspond
1d30: 69 6e 67 20 74 6f 20 61 20 6c 6f 77 65 72 63 61  ing to a lowerca
1d40: 73 65 20 6c 65 74 74 65 72 0a 2a 2a 20 69 6e 20  se letter.** in 
1d50: 74 68 65 20 41 53 43 49 49 20 72 61 6e 67 65 20  the ASCII range 
1d60: 77 69 74 68 20 61 20 64 69 61 63 72 69 74 69 63  with a diacritic
1d70: 20 61 64 64 65 64 2c 20 72 65 74 75 72 6e 20 74   added, return t
1d80: 68 65 20 63 6f 64 65 70 6f 69 6e 74 0a 2a 2a 20  he codepoint.** 
1d90: 6f 66 20 74 68 65 20 41 53 43 49 49 20 6c 65 74  of the ASCII let
1da0: 74 65 72 20 6f 6e 6c 79 2e 20 46 6f 72 20 65 78  ter only. For ex
1db0: 61 6d 70 6c 65 2c 20 69 66 20 70 61 73 73 65 64  ample, if passed
1dc0: 20 32 33 35 20 2d 20 22 4c 41 54 49 4e 0a 2a 2a   235 - "LATIN.**
1dd0: 20 53 4d 41 4c 4c 20 4c 45 54 54 45 52 20 45 20   SMALL LETTER E 
1de0: 57 49 54 48 20 44 49 41 45 52 45 53 49 53 22 20  WITH DIAERESIS" 
1df0: 2d 20 72 65 74 75 72 6e 20 36 35 20 28 22 4c 41  - return 65 ("LA
1e00: 54 49 4e 20 53 4d 41 4c 4c 20 4c 45 54 54 45 52  TIN SMALL LETTER
1e10: 0a 2a 2a 20 45 22 29 2e 20 54 68 65 20 72 65 73  .** E"). The res
1e20: 75 6c 73 20 6f 66 20 70 61 73 73 69 6e 67 20 61  uls of passing a
1e30: 20 63 6f 64 65 70 6f 69 6e 74 20 74 68 61 74 20   codepoint that 
1e40: 63 6f 72 72 65 73 70 6f 6e 64 73 20 74 6f 20 61  corresponds to a
1e50: 6e 0a 2a 2a 20 75 70 70 65 72 63 61 73 65 20 6c  n.** uppercase l
1e60: 65 74 74 65 72 20 61 72 65 20 75 6e 64 65 66 69  etter are undefi
1e70: 6e 65 64 2e 0a 2a 2f 0a 73 74 61 74 69 63 20 69  ned..*/.static i
1e80: 6e 74 20 72 65 6d 6f 76 65 5f 64 69 61 63 72 69  nt remove_diacri
1e90: 74 69 63 28 69 6e 74 20 63 2c 20 69 6e 74 20 62  tic(int c, int b
1ea0: 43 6f 6d 70 6c 65 78 29 7b 0a 20 20 75 6e 73 69  Complex){.  unsi
1eb0: 67 6e 65 64 20 73 68 6f 72 74 20 61 44 69 61 5b  gned short aDia[
1ec0: 5d 20 3d 20 7b 0a 20 20 20 20 20 20 20 20 30 2c  ] = {.        0,
1ed0: 20 20 31 37 39 37 2c 20 20 31 38 34 38 2c 20 20    1797,  1848,  
1ee0: 31 38 35 39 2c 20 20 31 38 39 31 2c 20 20 31 39  1859,  1891,  19
1ef0: 32 38 2c 20 20 31 39 34 30 2c 20 20 31 39 39 35  28,  1940,  1995
1f00: 2c 20 0a 20 20 20 20 20 32 30 32 34 2c 20 20 32  , .     2024,  2
1f10: 30 34 30 2c 20 20 32 30 36 30 2c 20 20 32 31 31  040,  2060,  211
1f20: 30 2c 20 20 32 31 36 38 2c 20 20 32 32 30 36 2c  0,  2168,  2206,
1f30: 20 20 32 32 36 34 2c 20 20 32 32 38 36 2c 20 0a    2264,  2286, .
1f40: 20 20 20 20 20 32 33 34 34 2c 20 20 32 33 38 33       2344,  2383
1f50: 2c 20 20 32 34 37 32 2c 20 20 32 34 38 38 2c 20  ,  2472,  2488, 
1f60: 20 32 35 31 36 2c 20 20 32 35 39 36 2c 20 20 32   2516,  2596,  2
1f70: 36 36 38 2c 20 20 32 37 33 32 2c 20 0a 20 20 20  668,  2732, .   
1f80: 20 20 32 37 38 32 2c 20 20 32 38 34 32 2c 20 20    2782,  2842,  
1f90: 32 38 39 34 2c 20 20 32 39 35 34 2c 20 20 32 39  2894,  2954,  29
1fa0: 38 34 2c 20 20 33 30 30 30 2c 20 20 33 30 32 38  84,  3000,  3028
1fb0: 2c 20 20 33 33 33 36 2c 20 0a 20 20 20 20 20 33  ,  3336, .     3
1fc0: 34 35 36 2c 20 20 33 36 39 36 2c 20 20 33 37 31  456,  3696,  371
1fd0: 32 2c 20 20 33 37 32 38 2c 20 20 33 37 34 34 2c  2,  3728,  3744,
1fe0: 20 20 33 37 36 36 2c 20 20 33 38 33 32 2c 20 20    3766,  3832,  
1ff0: 33 38 39 36 2c 20 0a 20 20 20 20 20 33 39 31 32  3896, .     3912
2000: 2c 20 20 33 39 32 38 2c 20 20 33 39 34 34 2c 20  ,  3928,  3944, 
2010: 20 33 39 36 38 2c 20 20 34 30 30 38 2c 20 20 34   3968,  4008,  4
2020: 30 34 30 2c 20 20 34 30 35 36 2c 20 20 34 31 30  040,  4056,  410
2030: 36 2c 20 0a 20 20 20 20 20 34 31 33 38 2c 20 20  6, .     4138,  
2040: 34 31 37 30 2c 20 20 34 32 30 32 2c 20 20 34 32  4170,  4202,  42
2050: 33 34 2c 20 20 34 32 36 36 2c 20 20 34 32 39 36  34,  4266,  4296
2060: 2c 20 20 34 33 31 32 2c 20 20 34 33 34 34 2c 20  ,  4312,  4344, 
2070: 0a 20 20 20 20 20 34 34 30 38 2c 20 20 34 34 32  .     4408,  442
2080: 34 2c 20 20 34 34 34 32 2c 20 20 34 34 37 32 2c  4,  4442,  4472,
2090: 20 20 34 34 38 38 2c 20 20 34 35 30 34 2c 20 20    4488,  4504,  
20a0: 36 31 34 38 2c 20 20 36 31 39 38 2c 20 0a 20 20  6148,  6198, .  
20b0: 20 20 20 36 32 36 34 2c 20 20 36 32 38 30 2c 20     6264,  6280, 
20c0: 20 36 33 36 30 2c 20 20 36 34 32 39 2c 20 20 36   6360,  6429,  6
20d0: 35 30 35 2c 20 20 36 35 32 39 2c 20 36 31 34 34  505,  6529, 6144
20e0: 38 2c 20 36 31 34 36 38 2c 20 0a 20 20 20 20 36  8, 61468, .    6
20f0: 31 35 31 32 2c 20 36 31 35 33 34 2c 20 36 31 35  1512, 61534, 615
2100: 39 32 2c 20 36 31 36 31 30 2c 20 36 31 36 34 32  92, 61610, 61642
2110: 2c 20 36 31 36 37 32 2c 20 36 31 36 38 38 2c 20  , 61672, 61688, 
2120: 36 31 37 30 34 2c 20 0a 20 20 20 20 36 31 37 32  61704, .    6172
2130: 36 2c 20 36 31 37 38 34 2c 20 36 31 38 30 30 2c  6, 61784, 61800,
2140: 20 36 31 38 31 36 2c 20 36 31 38 33 36 2c 20 36   61816, 61836, 6
2150: 31 38 38 30 2c 20 36 31 38 39 36 2c 20 36 31 39  1880, 61896, 619
2160: 31 34 2c 20 0a 20 20 20 20 36 31 39 34 38 2c 20  14, .    61948, 
2170: 36 31 39 39 38 2c 20 36 32 30 36 32 2c 20 36 32  61998, 62062, 62
2180: 31 32 32 2c 20 36 32 31 35 34 2c 20 36 32 31 38  122, 62154, 6218
2190: 34 2c 20 36 32 32 30 30 2c 20 36 32 32 31 38 2c  4, 62200, 62218,
21a0: 20 0a 20 20 20 20 36 32 32 35 32 2c 20 36 32 33   .    62252, 623
21b0: 30 32 2c 20 36 32 33 36 34 2c 20 36 32 34 31 30  02, 62364, 62410
21c0: 2c 20 36 32 34 34 32 2c 20 36 32 34 37 38 2c 20  , 62442, 62478, 
21d0: 36 32 35 33 36 2c 20 36 32 35 35 34 2c 20 0a 20  62536, 62554, . 
21e0: 20 20 20 36 32 35 38 34 2c 20 36 32 36 30 34 2c     62584, 62604,
21f0: 20 36 32 36 34 30 2c 20 36 32 36 34 38 2c 20 36   62640, 62648, 6
2200: 32 36 35 36 2c 20 36 32 36 36 34 2c 20 36 32 37  2656, 62664, 627
2210: 33 30 2c 20 36 32 37 36 36 2c 20 0a 20 20 20 20  30, 62766, .    
2220: 36 32 38 33 30 2c 20 36 32 38 39 30 2c 20 36 32  62830, 62890, 62
2230: 39 32 34 2c 20 36 32 39 37 34 2c 20 36 33 30 33  924, 62974, 6303
2240: 32 2c 20 36 33 30 35 30 2c 20 36 33 30 38 32 2c  2, 63050, 63082,
2250: 20 36 33 31 31 38 2c 20 0a 20 20 20 20 36 33 31   63118, .    631
2260: 38 32 2c 20 36 33 32 34 32 2c 20 36 33 32 37 34  82, 63242, 63274
2270: 2c 20 36 33 33 31 30 2c 20 36 33 33 36 38 2c 20  , 63310, 63368, 
2280: 36 33 33 39 30 2c 20 0a 20 20 7d 3b 0a 20 20 63  63390, .  };.  c
2290: 68 61 72 20 61 43 68 61 72 5b 5d 20 3d 20 7b 0a  har aChar[] = {.
22a0: 20 20 20 20 27 5c 30 27 2c 20 20 20 20 20 20 27      '\0',      '
22b0: 61 27 7c 30 78 30 30 2c 20 20 27 63 27 7c 30 78  a'|0x00,  'c'|0x
22c0: 30 30 2c 20 20 27 65 27 7c 30 78 30 30 2c 20 20  00,  'e'|0x00,  
22d0: 27 69 27 7c 30 78 30 30 2c 20 20 27 6e 27 7c 30  'i'|0x00,  'n'|0
22e0: 78 30 30 2c 20 20 0a 20 20 20 20 27 6f 27 7c 30  x00,  .    'o'|0
22f0: 78 30 30 2c 20 20 27 75 27 7c 30 78 30 30 2c 20  x00,  'u'|0x00, 
2300: 20 27 79 27 7c 30 78 30 30 2c 20 20 27 79 27 7c   'y'|0x00,  'y'|
2310: 30 78 30 30 2c 20 20 27 61 27 7c 30 78 30 30 2c  0x00,  'a'|0x00,
2320: 20 20 27 63 27 7c 30 78 30 30 2c 20 20 0a 20 20    'c'|0x00,  .  
2330: 20 20 27 64 27 7c 30 78 30 30 2c 20 20 27 65 27    'd'|0x00,  'e'
2340: 7c 30 78 30 30 2c 20 20 27 65 27 7c 30 78 30 30  |0x00,  'e'|0x00
2350: 2c 20 20 27 67 27 7c 30 78 30 30 2c 20 20 27 68  ,  'g'|0x00,  'h
2360: 27 7c 30 78 30 30 2c 20 20 27 69 27 7c 30 78 30  '|0x00,  'i'|0x0
2370: 30 2c 20 20 0a 20 20 20 20 27 6a 27 7c 30 78 30  0,  .    'j'|0x0
2380: 30 2c 20 20 27 6b 27 7c 30 78 30 30 2c 20 20 27  0,  'k'|0x00,  '
2390: 6c 27 7c 30 78 30 30 2c 20 20 27 6e 27 7c 30 78  l'|0x00,  'n'|0x
23a0: 30 30 2c 20 20 27 6f 27 7c 30 78 30 30 2c 20 20  00,  'o'|0x00,  
23b0: 27 72 27 7c 30 78 30 30 2c 20 20 0a 20 20 20 20  'r'|0x00,  .    
23c0: 27 73 27 7c 30 78 30 30 2c 20 20 27 74 27 7c 30  's'|0x00,  't'|0
23d0: 78 30 30 2c 20 20 27 75 27 7c 30 78 30 30 2c 20  x00,  'u'|0x00, 
23e0: 20 27 75 27 7c 30 78 30 30 2c 20 20 27 77 27 7c   'u'|0x00,  'w'|
23f0: 30 78 30 30 2c 20 20 27 79 27 7c 30 78 30 30 2c  0x00,  'y'|0x00,
2400: 20 20 0a 20 20 20 20 27 7a 27 7c 30 78 30 30 2c    .    'z'|0x00,
2410: 20 20 27 6f 27 7c 30 78 30 30 2c 20 20 27 75 27    'o'|0x00,  'u'
2420: 7c 30 78 30 30 2c 20 20 27 61 27 7c 30 78 30 30  |0x00,  'a'|0x00
2430: 2c 20 20 27 69 27 7c 30 78 30 30 2c 20 20 27 6f  ,  'i'|0x00,  'o
2440: 27 7c 30 78 30 30 2c 20 20 0a 20 20 20 20 27 75  '|0x00,  .    'u
2450: 27 7c 30 78 30 30 2c 20 20 27 75 27 7c 30 78 38  '|0x00,  'u'|0x8
2460: 30 2c 20 20 27 61 27 7c 30 78 38 30 2c 20 20 27  0,  'a'|0x80,  '
2470: 67 27 7c 30 78 30 30 2c 20 20 27 6b 27 7c 30 78  g'|0x00,  'k'|0x
2480: 30 30 2c 20 20 27 6f 27 7c 30 78 30 30 2c 20 20  00,  'o'|0x00,  
2490: 0a 20 20 20 20 27 6f 27 7c 30 78 38 30 2c 20 20  .    'o'|0x80,  
24a0: 27 6a 27 7c 30 78 30 30 2c 20 20 27 67 27 7c 30  'j'|0x00,  'g'|0
24b0: 78 30 30 2c 20 20 27 6e 27 7c 30 78 30 30 2c 20  x00,  'n'|0x00, 
24c0: 20 27 61 27 7c 30 78 38 30 2c 20 20 27 61 27 7c   'a'|0x80,  'a'|
24d0: 30 78 30 30 2c 20 20 0a 20 20 20 20 27 65 27 7c  0x00,  .    'e'|
24e0: 30 78 30 30 2c 20 20 27 69 27 7c 30 78 30 30 2c  0x00,  'i'|0x00,
24f0: 20 20 27 6f 27 7c 30 78 30 30 2c 20 20 27 72 27    'o'|0x00,  'r'
2500: 7c 30 78 30 30 2c 20 20 27 75 27 7c 30 78 30 30  |0x00,  'u'|0x00
2510: 2c 20 20 27 73 27 7c 30 78 30 30 2c 20 20 0a 20  ,  's'|0x00,  . 
2520: 20 20 20 27 74 27 7c 30 78 30 30 2c 20 20 27 68     't'|0x00,  'h
2530: 27 7c 30 78 30 30 2c 20 20 27 61 27 7c 30 78 30  '|0x00,  'a'|0x0
2540: 30 2c 20 20 27 65 27 7c 30 78 30 30 2c 20 20 27  0,  'e'|0x00,  '
2550: 6f 27 7c 30 78 38 30 2c 20 20 27 6f 27 7c 30 78  o'|0x80,  'o'|0x
2560: 30 30 2c 20 20 0a 20 20 20 20 27 6f 27 7c 30 78  00,  .    'o'|0x
2570: 38 30 2c 20 20 27 79 27 7c 30 78 30 30 2c 20 20  80,  'y'|0x00,  
2580: 27 5c 30 27 2c 20 20 20 20 20 20 27 5c 30 27 2c  '\0',      '\0',
2590: 20 20 20 20 20 20 27 5c 30 27 2c 20 20 20 20 20        '\0',     
25a0: 20 27 5c 30 27 2c 20 20 20 20 20 20 0a 20 20 20   '\0',      .   
25b0: 20 27 5c 30 27 2c 20 20 20 20 20 20 27 5c 30 27   '\0',      '\0'
25c0: 2c 20 20 20 20 20 20 27 5c 30 27 2c 20 20 20 20  ,      '\0',    
25d0: 20 20 27 5c 30 27 2c 20 20 20 20 20 20 27 61 27    '\0',      'a'
25e0: 7c 30 78 30 30 2c 20 20 27 62 27 7c 30 78 30 30  |0x00,  'b'|0x00
25f0: 2c 20 20 0a 20 20 20 20 27 63 27 7c 30 78 38 30  ,  .    'c'|0x80
2600: 2c 20 20 27 64 27 7c 30 78 30 30 2c 20 20 27 64  ,  'd'|0x00,  'd
2610: 27 7c 30 78 30 30 2c 20 20 27 65 27 7c 30 78 38  '|0x00,  'e'|0x8
2620: 30 2c 20 20 27 65 27 7c 30 78 30 30 2c 20 20 27  0,  'e'|0x00,  '
2630: 65 27 7c 30 78 38 30 2c 20 20 0a 20 20 20 20 27  e'|0x80,  .    '
2640: 66 27 7c 30 78 30 30 2c 20 20 27 67 27 7c 30 78  f'|0x00,  'g'|0x
2650: 30 30 2c 20 20 27 68 27 7c 30 78 30 30 2c 20 20  00,  'h'|0x00,  
2660: 27 68 27 7c 30 78 30 30 2c 20 20 27 69 27 7c 30  'h'|0x00,  'i'|0
2670: 78 30 30 2c 20 20 27 69 27 7c 30 78 38 30 2c 20  x00,  'i'|0x80, 
2680: 20 0a 20 20 20 20 27 6b 27 7c 30 78 30 30 2c 20   .    'k'|0x00, 
2690: 20 27 6c 27 7c 30 78 30 30 2c 20 20 27 6c 27 7c   'l'|0x00,  'l'|
26a0: 30 78 38 30 2c 20 20 27 6c 27 7c 30 78 30 30 2c  0x80,  'l'|0x00,
26b0: 20 20 27 6d 27 7c 30 78 30 30 2c 20 20 27 6e 27    'm'|0x00,  'n'
26c0: 7c 30 78 30 30 2c 20 20 0a 20 20 20 20 27 6f 27  |0x00,  .    'o'
26d0: 7c 30 78 38 30 2c 20 20 27 70 27 7c 30 78 30 30  |0x80,  'p'|0x00
26e0: 2c 20 20 27 72 27 7c 30 78 30 30 2c 20 20 27 72  ,  'r'|0x00,  'r
26f0: 27 7c 30 78 38 30 2c 20 20 27 72 27 7c 30 78 30  '|0x80,  'r'|0x0
2700: 30 2c 20 20 27 73 27 7c 30 78 30 30 2c 20 20 0a  0,  's'|0x00,  .
2710: 20 20 20 20 27 73 27 7c 30 78 38 30 2c 20 20 27      's'|0x80,  '
2720: 74 27 7c 30 78 30 30 2c 20 20 27 75 27 7c 30 78  t'|0x00,  'u'|0x
2730: 30 30 2c 20 20 27 75 27 7c 30 78 38 30 2c 20 20  00,  'u'|0x80,  
2740: 27 76 27 7c 30 78 30 30 2c 20 20 27 77 27 7c 30  'v'|0x00,  'w'|0
2750: 78 30 30 2c 20 20 0a 20 20 20 20 27 77 27 7c 30  x00,  .    'w'|0
2760: 78 30 30 2c 20 20 27 78 27 7c 30 78 30 30 2c 20  x00,  'x'|0x00, 
2770: 20 27 79 27 7c 30 78 30 30 2c 20 20 27 7a 27 7c   'y'|0x00,  'z'|
2780: 30 78 30 30 2c 20 20 27 68 27 7c 30 78 30 30 2c  0x00,  'h'|0x00,
2790: 20 20 27 74 27 7c 30 78 30 30 2c 20 20 0a 20 20    't'|0x00,  .  
27a0: 20 20 27 77 27 7c 30 78 30 30 2c 20 20 27 79 27    'w'|0x00,  'y'
27b0: 7c 30 78 30 30 2c 20 20 27 61 27 7c 30 78 30 30  |0x00,  'a'|0x00
27c0: 2c 20 20 27 61 27 7c 30 78 38 30 2c 20 20 27 61  ,  'a'|0x80,  'a
27d0: 27 7c 30 78 38 30 2c 20 20 27 61 27 7c 30 78 38  '|0x80,  'a'|0x8
27e0: 30 2c 20 20 0a 20 20 20 20 27 65 27 7c 30 78 30  0,  .    'e'|0x0
27f0: 30 2c 20 20 27 65 27 7c 30 78 38 30 2c 20 20 27  0,  'e'|0x80,  '
2800: 65 27 7c 30 78 38 30 2c 20 20 27 69 27 7c 30 78  e'|0x80,  'i'|0x
2810: 30 30 2c 20 20 27 6f 27 7c 30 78 30 30 2c 20 20  00,  'o'|0x00,  
2820: 27 6f 27 7c 30 78 38 30 2c 20 20 0a 20 20 20 20  'o'|0x80,  .    
2830: 27 6f 27 7c 30 78 38 30 2c 20 20 27 6f 27 7c 30  'o'|0x80,  'o'|0
2840: 78 38 30 2c 20 20 27 75 27 7c 30 78 30 30 2c 20  x80,  'u'|0x00, 
2850: 20 27 75 27 7c 30 78 38 30 2c 20 20 27 75 27 7c   'u'|0x80,  'u'|
2860: 30 78 38 30 2c 20 20 27 79 27 7c 30 78 30 30 2c  0x80,  'y'|0x00,
2870: 20 20 0a 20 20 7d 3b 0a 0a 20 20 75 6e 73 69 67    .  };..  unsig
2880: 6e 65 64 20 69 6e 74 20 6b 65 79 20 3d 20 28 28  ned int key = ((
2890: 28 75 6e 73 69 67 6e 65 64 20 69 6e 74 29 63 29  (unsigned int)c)
28a0: 3c 3c 33 29 20 7c 20 30 78 30 30 30 30 30 30 30  <<3) | 0x0000000
28b0: 37 3b 0a 20 20 69 6e 74 20 69 52 65 73 20 3d 20  7;.  int iRes = 
28c0: 30 3b 0a 20 20 69 6e 74 20 69 48 69 20 3d 20 73  0;.  int iHi = s
28d0: 69 7a 65 6f 66 28 61 44 69 61 29 2f 73 69 7a 65  izeof(aDia)/size
28e0: 6f 66 28 61 44 69 61 5b 30 5d 29 20 2d 20 31 3b  of(aDia[0]) - 1;
28f0: 0a 20 20 69 6e 74 20 69 4c 6f 20 3d 20 30 3b 0a  .  int iLo = 0;.
2900: 20 20 77 68 69 6c 65 28 20 69 48 69 3e 3d 69 4c    while( iHi>=iL
2910: 6f 20 29 7b 0a 20 20 20 20 69 6e 74 20 69 54 65  o ){.    int iTe
2920: 73 74 20 3d 20 28 69 48 69 20 2b 20 69 4c 6f 29  st = (iHi + iLo)
2930: 20 2f 20 32 3b 0a 20 20 20 20 69 66 28 20 6b 65   / 2;.    if( ke
2940: 79 20 3e 3d 20 61 44 69 61 5b 69 54 65 73 74 5d  y >= aDia[iTest]
2950: 20 29 7b 0a 20 20 20 20 20 20 69 52 65 73 20 3d   ){.      iRes =
2960: 20 69 54 65 73 74 3b 0a 20 20 20 20 20 20 69 4c   iTest;.      iL
2970: 6f 20 3d 20 69 54 65 73 74 2b 31 3b 0a 20 20 20  o = iTest+1;.   
2980: 20 7d 65 6c 73 65 7b 0a 20 20 20 20 20 20 69 48   }else{.      iH
2990: 69 20 3d 20 69 54 65 73 74 2d 31 3b 0a 20 20 20  i = iTest-1;.   
29a0: 20 7d 0a 20 20 7d 0a 20 20 61 73 73 65 72 74 28   }.  }.  assert(
29b0: 20 6b 65 79 3e 3d 61 44 69 61 5b 69 52 65 73 5d   key>=aDia[iRes]
29c0: 20 29 3b 0a 20 20 69 66 28 20 62 43 6f 6d 70 6c   );.  if( bCompl
29d0: 65 78 3d 3d 30 20 26 26 20 28 61 43 68 61 72 5b  ex==0 && (aChar[
29e0: 69 52 65 73 5d 20 26 20 30 78 38 30 29 20 29 20  iRes] & 0x80) ) 
29f0: 72 65 74 75 72 6e 20 63 3b 0a 20 20 72 65 74 75  return c;.  retu
2a00: 72 6e 20 28 63 20 3e 20 28 61 44 69 61 5b 69 52  rn (c > (aDia[iR
2a10: 65 73 5d 3e 3e 33 29 20 2b 20 28 61 44 69 61 5b  es]>>3) + (aDia[
2a20: 69 52 65 73 5d 26 30 78 30 37 29 29 20 3f 20 63  iRes]&0x07)) ? c
2a30: 20 3a 20 28 28 69 6e 74 29 61 43 68 61 72 5b 69   : ((int)aChar[i
2a40: 52 65 73 5d 20 26 20 30 78 37 46 29 3b 0a 7d 0a  Res] & 0x7F);.}.
2a50: 0a 0a 2f 2a 0a 2a 2a 20 52 65 74 75 72 6e 20 74  ../*.** Return t
2a60: 72 75 65 20 69 66 20 74 68 65 20 61 72 67 75 6d  rue if the argum
2a70: 65 6e 74 20 69 6e 74 65 72 70 72 65 74 65 64 20  ent interpreted 
2a80: 61 73 20 61 20 75 6e 69 63 6f 64 65 20 63 6f 64  as a unicode cod
2a90: 65 70 6f 69 6e 74 0a 2a 2a 20 69 73 20 61 20 64  epoint.** is a d
2aa0: 69 61 63 72 69 74 69 63 61 6c 20 6d 6f 64 69 66  iacritical modif
2ab0: 69 65 72 20 63 68 61 72 61 63 74 65 72 2e 0a 2a  ier character..*
2ac0: 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 46 74 73  /.int sqlite3Fts
2ad0: 55 6e 69 63 6f 64 65 49 73 64 69 61 63 72 69 74  UnicodeIsdiacrit
2ae0: 69 63 28 69 6e 74 20 63 29 7b 0a 20 20 75 6e 73  ic(int c){.  uns
2af0: 69 67 6e 65 64 20 69 6e 74 20 6d 61 73 6b 30 20  igned int mask0 
2b00: 3d 20 30 78 30 38 30 32 39 46 44 46 3b 0a 20 20  = 0x08029FDF;.  
2b10: 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 6d 61 73  unsigned int mas
2b20: 6b 31 20 3d 20 30 78 30 30 30 33 36 31 46 38 3b  k1 = 0x000361F8;
2b30: 0a 20 20 69 66 28 20 63 3c 37 36 38 20 7c 7c 20  .  if( c<768 || 
2b40: 63 3e 38 31 37 20 29 20 72 65 74 75 72 6e 20 30  c>817 ) return 0
2b50: 3b 0a 20 20 72 65 74 75 72 6e 20 28 63 20 3c 20  ;.  return (c < 
2b60: 37 36 38 2b 33 32 29 20 3f 0a 20 20 20 20 20 20  768+32) ?.      
2b70: 28 6d 61 73 6b 30 20 26 20 28 31 20 3c 3c 20 28  (mask0 & (1 << (
2b80: 63 2d 37 36 38 29 29 29 20 3a 0a 20 20 20 20 20  c-768))) :.     
2b90: 20 28 6d 61 73 6b 31 20 26 20 28 31 20 3c 3c 20   (mask1 & (1 << 
2ba0: 28 63 2d 37 36 38 2d 33 32 29 29 29 3b 0a 7d 0a  (c-768-32)));.}.
2bb0: 0a 0a 2f 2a 0a 2a 2a 20 49 6e 74 65 72 70 72 65  ../*.** Interpre
2bc0: 74 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 61  t the argument a
2bd0: 73 20 61 20 75 6e 69 63 6f 64 65 20 63 6f 64 65  s a unicode code
2be0: 70 6f 69 6e 74 2e 20 49 66 20 74 68 65 20 63 6f  point. If the co
2bf0: 64 65 70 6f 69 6e 74 0a 2a 2a 20 69 73 20 61 6e  depoint.** is an
2c00: 20 75 70 70 65 72 20 63 61 73 65 20 63 68 61 72   upper case char
2c10: 61 63 74 65 72 20 74 68 61 74 20 68 61 73 20 61  acter that has a
2c20: 20 6c 6f 77 65 72 20 63 61 73 65 20 65 71 75 69   lower case equi
2c30: 76 61 6c 65 6e 74 2c 0a 2a 2a 20 72 65 74 75 72  valent,.** retur
2c40: 6e 20 74 68 65 20 63 6f 64 65 70 6f 69 6e 74 20  n the codepoint 
2c50: 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f  corresponding to
2c60: 20 74 68 65 20 6c 6f 77 65 72 20 63 61 73 65 20   the lower case 
2c70: 76 65 72 73 69 6f 6e 2e 0a 2a 2a 20 4f 74 68 65  version..** Othe
2c80: 72 77 69 73 65 2c 20 72 65 74 75 72 6e 20 61 20  rwise, return a 
2c90: 63 6f 70 79 20 6f 66 20 74 68 65 20 61 72 67 75  copy of the argu
2ca0: 6d 65 6e 74 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  ment..**.** The 
2cb0: 72 65 73 75 6c 74 73 20 61 72 65 20 75 6e 64 65  results are unde
2cc0: 66 69 6e 65 64 20 69 66 20 74 68 65 20 76 61 6c  fined if the val
2cd0: 75 65 20 70 61 73 73 65 64 20 74 6f 20 74 68 69  ue passed to thi
2ce0: 73 20 66 75 6e 63 74 69 6f 6e 0a 2a 2a 20 69 73  s function.** is
2cf0: 20 6c 65 73 73 20 74 68 61 6e 20 7a 65 72 6f 2e   less than zero.
2d00: 0a 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 46  .*/.int sqlite3F
2d10: 74 73 55 6e 69 63 6f 64 65 46 6f 6c 64 28 69 6e  tsUnicodeFold(in
2d20: 74 20 63 2c 20 69 6e 74 20 65 52 65 6d 6f 76 65  t c, int eRemove
2d30: 44 69 61 63 72 69 74 69 63 29 7b 0a 20 20 2f 2a  Diacritic){.  /*
2d40: 20 45 61 63 68 20 65 6e 74 72 79 20 69 6e 20 74   Each entry in t
2d50: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 72 72  he following arr
2d60: 61 79 20 64 65 66 69 6e 65 73 20 61 20 72 75 6c  ay defines a rul
2d70: 65 20 66 6f 72 20 66 6f 6c 64 69 6e 67 20 61 20  e for folding a 
2d80: 72 61 6e 67 65 0a 20 20 2a 2a 20 6f 66 20 63 6f  range.  ** of co
2d90: 64 65 70 6f 69 6e 74 73 20 74 6f 20 6c 6f 77 65  depoints to lowe
2da0: 72 20 63 61 73 65 2e 20 54 68 65 20 72 75 6c 65  r case. The rule
2db0: 20 61 70 70 6c 69 65 73 20 74 6f 20 61 20 72 61   applies to a ra
2dc0: 6e 67 65 20 6f 66 20 6e 52 61 6e 67 65 0a 20 20  nge of nRange.  
2dd0: 2a 2a 20 63 6f 64 65 70 6f 69 6e 74 73 20 73 74  ** codepoints st
2de0: 61 72 74 69 6e 67 20 61 74 20 63 6f 64 65 70 6f  arting at codepo
2df0: 69 6e 74 20 69 43 6f 64 65 2e 0a 20 20 2a 2a 0a  int iCode..  **.
2e00: 20 20 2a 2a 20 49 66 20 74 68 65 20 6c 65 61 73    ** If the leas
2e10: 74 20 73 69 67 6e 69 66 69 63 61 6e 74 20 62 69  t significant bi
2e20: 74 20 69 6e 20 66 6c 61 67 73 20 69 73 20 63 6c  t in flags is cl
2e30: 65 61 72 2c 20 74 68 65 6e 20 74 68 65 20 72 75  ear, then the ru
2e40: 6c 65 20 61 70 70 6c 69 65 73 0a 20 20 2a 2a 20  le applies.  ** 
2e50: 74 6f 20 61 6c 6c 20 6e 52 61 6e 67 65 20 63 6f  to all nRange co
2e60: 64 65 70 6f 69 6e 74 73 20 28 69 2e 65 2e 20 61  depoints (i.e. a
2e70: 6c 6c 20 6e 52 61 6e 67 65 20 63 6f 64 65 70 6f  ll nRange codepo
2e80: 69 6e 74 73 20 61 72 65 20 75 70 70 65 72 20 63  ints are upper c
2e90: 61 73 65 20 61 6e 64 0a 20 20 2a 2a 20 6e 65 65  ase and.  ** nee
2ea0: 64 20 74 6f 20 62 65 20 66 6f 6c 64 65 64 29 2e  d to be folded).
2eb0: 20 4f 72 2c 20 69 66 20 69 74 20 69 73 20 73 65   Or, if it is se
2ec0: 74 2c 20 74 68 65 6e 20 74 68 65 20 72 75 6c 65  t, then the rule
2ed0: 20 6f 6e 6c 79 20 61 70 70 6c 69 65 73 20 74 6f   only applies to
2ee0: 0a 20 20 2a 2a 20 65 76 65 72 79 20 73 65 63 6f  .  ** every seco
2ef0: 6e 64 20 63 6f 64 65 70 6f 69 6e 74 20 69 6e 20  nd codepoint in 
2f00: 74 68 65 20 72 61 6e 67 65 2c 20 73 74 61 72 74  the range, start
2f10: 69 6e 67 20 77 69 74 68 20 63 6f 64 65 70 6f 69  ing with codepoi
2f20: 6e 74 20 43 2e 0a 20 20 2a 2a 0a 20 20 2a 2a 20  nt C..  **.  ** 
2f30: 54 68 65 20 37 20 6d 6f 73 74 20 73 69 67 6e 69  The 7 most signi
2f40: 66 69 63 61 6e 74 20 62 69 74 73 20 69 6e 20 66  ficant bits in f
2f50: 6c 61 67 73 20 61 72 65 20 61 6e 20 69 6e 64 65  lags are an inde
2f60: 78 20 69 6e 74 6f 20 74 68 65 20 61 69 4f 66 66  x into the aiOff
2f70: 5b 5d 0a 20 20 2a 2a 20 61 72 72 61 79 2e 20 49  [].  ** array. I
2f80: 66 20 61 20 73 70 65 63 69 66 69 63 20 63 6f 64  f a specific cod
2f90: 65 70 6f 69 6e 74 20 43 20 64 6f 65 73 20 72 65  epoint C does re
2fa0: 71 75 69 72 65 20 66 6f 6c 64 69 6e 67 2c 20 74  quire folding, t
2fb0: 68 65 6e 20 69 74 73 20 6c 6f 77 65 72 0a 20 20  hen its lower.  
2fc0: 2a 2a 20 63 61 73 65 20 65 71 75 69 76 61 6c 65  ** case equivale
2fd0: 6e 74 20 69 73 20 28 28 43 20 2b 20 61 69 4f 66  nt is ((C + aiOf
2fe0: 66 5b 66 6c 61 67 73 3e 3e 31 5d 29 20 26 20 30  f[flags>>1]) & 0
2ff0: 78 46 46 46 46 29 2e 0a 20 20 2a 2a 0a 20 20 2a  xFFFF)..  **.  *
3000: 2a 20 54 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f  * The contents o
3010: 66 20 74 68 69 73 20 61 72 72 61 79 20 61 72 65  f this array are
3020: 20 67 65 6e 65 72 61 74 65 64 20 62 79 20 70 61   generated by pa
3030: 72 73 69 6e 67 20 74 68 65 20 43 61 73 65 46 6f  rsing the CaseFo
3040: 6c 64 69 6e 67 2e 74 78 74 0a 20 20 2a 2a 20 66  lding.txt.  ** f
3050: 69 6c 65 20 64 69 73 74 72 69 62 75 74 65 64 20  ile distributed 
3060: 61 73 20 70 61 72 74 20 6f 66 20 74 68 65 20 22  as part of the "
3070: 55 6e 69 63 6f 64 65 20 43 68 61 72 61 63 74 65  Unicode Characte
3080: 72 20 44 61 74 61 62 61 73 65 22 2e 20 53 65 65  r Database". See
3090: 0a 20 20 2a 2a 20 68 74 74 70 3a 2f 2f 77 77 77  .  ** http://www
30a0: 2e 75 6e 69 63 6f 64 65 2e 6f 72 67 20 66 6f 72  .unicode.org for
30b0: 20 64 65 74 61 69 6c 73 2e 0a 20 20 2a 2f 0a 20   details..  */. 
30c0: 20 73 74 61 74 69 63 20 63 6f 6e 73 74 20 73 74   static const st
30d0: 72 75 63 74 20 54 61 62 6c 65 45 6e 74 72 79 20  ruct TableEntry 
30e0: 7b 0a 20 20 20 20 75 6e 73 69 67 6e 65 64 20 73  {.    unsigned s
30f0: 68 6f 72 74 20 69 43 6f 64 65 3b 0a 20 20 20 20  hort iCode;.    
3100: 75 6e 73 69 67 6e 65 64 20 63 68 61 72 20 66 6c  unsigned char fl
3110: 61 67 73 3b 0a 20 20 20 20 75 6e 73 69 67 6e 65  ags;.    unsigne
3120: 64 20 63 68 61 72 20 6e 52 61 6e 67 65 3b 0a 20  d char nRange;. 
3130: 20 7d 20 61 45 6e 74 72 79 5b 5d 20 3d 20 7b 0a   } aEntry[] = {.
3140: 20 20 20 20 7b 36 35 2c 20 31 34 2c 20 32 36 7d      {65, 14, 26}
3150: 2c 20 20 20 20 20 20 20 20 20 20 7b 31 38 31 2c  ,          {181,
3160: 20 36 34 2c 20 31 7d 2c 20 20 20 20 20 20 20 20   64, 1},        
3170: 20 20 7b 31 39 32 2c 20 31 34 2c 20 32 33 7d 2c    {192, 14, 23},
3180: 0a 20 20 20 20 7b 32 31 36 2c 20 31 34 2c 20 37  .    {216, 14, 7
3190: 7d 2c 20 20 20 20 20 20 20 20 20 20 7b 32 35 36  },          {256
31a0: 2c 20 31 2c 20 34 38 7d 2c 20 20 20 20 20 20 20  , 1, 48},       
31b0: 20 20 20 7b 33 30 36 2c 20 31 2c 20 36 7d 2c 0a     {306, 1, 6},.
31c0: 20 20 20 20 7b 33 31 33 2c 20 31 2c 20 31 36 7d      {313, 1, 16}
31d0: 2c 20 20 20 20 20 20 20 20 20 20 7b 33 33 30 2c  ,          {330,
31e0: 20 31 2c 20 34 36 7d 2c 20 20 20 20 20 20 20 20   1, 46},        
31f0: 20 20 7b 33 37 36 2c 20 31 31 36 2c 20 31 7d 2c    {376, 116, 1},
3200: 0a 20 20 20 20 7b 33 37 37 2c 20 31 2c 20 36 7d  .    {377, 1, 6}
3210: 2c 20 20 20 20 20 20 20 20 20 20 20 7b 33 38 33  ,           {383
3220: 2c 20 31 30 34 2c 20 31 7d 2c 20 20 20 20 20 20  , 104, 1},      
3230: 20 20 20 7b 33 38 35 2c 20 35 30 2c 20 31 7d 2c     {385, 50, 1},
3240: 0a 20 20 20 20 7b 33 38 36 2c 20 31 2c 20 34 7d  .    {386, 1, 4}
3250: 2c 20 20 20 20 20 20 20 20 20 20 20 7b 33 39 30  ,           {390
3260: 2c 20 34 34 2c 20 31 7d 2c 20 20 20 20 20 20 20  , 44, 1},       
3270: 20 20 20 7b 33 39 31 2c 20 30 2c 20 31 7d 2c 0a     {391, 0, 1},.
3280: 20 20 20 20 7b 33 39 33 2c 20 34 32 2c 20 32 7d      {393, 42, 2}
3290: 2c 20 20 20 20 20 20 20 20 20 20 7b 33 39 35 2c  ,          {395,
32a0: 20 30 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20   0, 1},         
32b0: 20 20 7b 33 39 38 2c 20 33 32 2c 20 31 7d 2c 0a    {398, 32, 1},.
32c0: 20 20 20 20 7b 33 39 39 2c 20 33 38 2c 20 31 7d      {399, 38, 1}
32d0: 2c 20 20 20 20 20 20 20 20 20 20 7b 34 30 30 2c  ,          {400,
32e0: 20 34 30 2c 20 31 7d 2c 20 20 20 20 20 20 20 20   40, 1},        
32f0: 20 20 7b 34 30 31 2c 20 30 2c 20 31 7d 2c 0a 20    {401, 0, 1},. 
3300: 20 20 20 7b 34 30 33 2c 20 34 32 2c 20 31 7d 2c     {403, 42, 1},
3310: 20 20 20 20 20 20 20 20 20 20 7b 34 30 34 2c 20            {404, 
3320: 34 36 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20  46, 1},         
3330: 20 7b 34 30 36 2c 20 35 32 2c 20 31 7d 2c 0a 20   {406, 52, 1},. 
3340: 20 20 20 7b 34 30 37 2c 20 34 38 2c 20 31 7d 2c     {407, 48, 1},
3350: 20 20 20 20 20 20 20 20 20 20 7b 34 30 38 2c 20            {408, 
3360: 30 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 20  0, 1},          
3370: 20 7b 34 31 32 2c 20 35 32 2c 20 31 7d 2c 0a 20   {412, 52, 1},. 
3380: 20 20 20 7b 34 31 33 2c 20 35 34 2c 20 31 7d 2c     {413, 54, 1},
3390: 20 20 20 20 20 20 20 20 20 20 7b 34 31 35 2c 20            {415, 
33a0: 35 36 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20  56, 1},         
33b0: 20 7b 34 31 36 2c 20 31 2c 20 36 7d 2c 0a 20 20   {416, 1, 6},.  
33c0: 20 20 7b 34 32 32 2c 20 36 30 2c 20 31 7d 2c 20    {422, 60, 1}, 
33d0: 20 20 20 20 20 20 20 20 20 7b 34 32 33 2c 20 30           {423, 0
33e0: 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 20 20  , 1},           
33f0: 7b 34 32 35 2c 20 36 30 2c 20 31 7d 2c 0a 20 20  {425, 60, 1},.  
3400: 20 20 7b 34 32 38 2c 20 30 2c 20 31 7d 2c 20 20    {428, 0, 1},  
3410: 20 20 20 20 20 20 20 20 20 7b 34 33 30 2c 20 36           {430, 6
3420: 30 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 20  0, 1},          
3430: 7b 34 33 31 2c 20 30 2c 20 31 7d 2c 0a 20 20 20  {431, 0, 1},.   
3440: 20 7b 34 33 33 2c 20 35 38 2c 20 32 7d 2c 20 20   {433, 58, 2},  
3450: 20 20 20 20 20 20 20 20 7b 34 33 35 2c 20 31 2c          {435, 1,
3460: 20 34 7d 2c 20 20 20 20 20 20 20 20 20 20 20 7b   4},           {
3470: 34 33 39 2c 20 36 32 2c 20 31 7d 2c 0a 20 20 20  439, 62, 1},.   
3480: 20 7b 34 34 30 2c 20 30 2c 20 31 7d 2c 20 20 20   {440, 0, 1},   
3490: 20 20 20 20 20 20 20 20 7b 34 34 34 2c 20 30 2c          {444, 0,
34a0: 20 31 7d 2c 20 20 20 20 20 20 20 20 20 20 20 7b   1},           {
34b0: 34 35 32 2c 20 32 2c 20 31 7d 2c 0a 20 20 20 20  452, 2, 1},.    
34c0: 7b 34 35 33 2c 20 30 2c 20 31 7d 2c 20 20 20 20  {453, 0, 1},    
34d0: 20 20 20 20 20 20 20 7b 34 35 35 2c 20 32 2c 20         {455, 2, 
34e0: 31 7d 2c 20 20 20 20 20 20 20 20 20 20 20 7b 34  1},           {4
34f0: 35 36 2c 20 30 2c 20 31 7d 2c 0a 20 20 20 20 7b  56, 0, 1},.    {
3500: 34 35 38 2c 20 32 2c 20 31 7d 2c 20 20 20 20 20  458, 2, 1},     
3510: 20 20 20 20 20 20 7b 34 35 39 2c 20 31 2c 20 31        {459, 1, 1
3520: 38 7d 2c 20 20 20 20 20 20 20 20 20 20 7b 34 37  8},          {47
3530: 38 2c 20 31 2c 20 31 38 7d 2c 0a 20 20 20 20 7b  8, 1, 18},.    {
3540: 34 39 37 2c 20 32 2c 20 31 7d 2c 20 20 20 20 20  497, 2, 1},     
3550: 20 20 20 20 20 20 7b 34 39 38 2c 20 31 2c 20 34        {498, 1, 4
3560: 7d 2c 20 20 20 20 20 20 20 20 20 20 20 7b 35 30  },           {50
3570: 32 2c 20 31 32 32 2c 20 31 7d 2c 0a 20 20 20 20  2, 122, 1},.    
3580: 7b 35 30 33 2c 20 31 33 34 2c 20 31 7d 2c 20 20  {503, 134, 1},  
3590: 20 20 20 20 20 20 20 7b 35 30 34 2c 20 31 2c 20         {504, 1, 
35a0: 34 30 7d 2c 20 20 20 20 20 20 20 20 20 20 7b 35  40},          {5
35b0: 34 34 2c 20 31 31 30 2c 20 31 7d 2c 0a 20 20 20  44, 110, 1},.   
35c0: 20 7b 35 34 36 2c 20 31 2c 20 31 38 7d 2c 20 20   {546, 1, 18},  
35d0: 20 20 20 20 20 20 20 20 7b 35 37 30 2c 20 37 30          {570, 70
35e0: 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 20 7b  , 1},          {
35f0: 35 37 31 2c 20 30 2c 20 31 7d 2c 0a 20 20 20 20  571, 0, 1},.    
3600: 7b 35 37 33 2c 20 31 30 38 2c 20 31 7d 2c 20 20  {573, 108, 1},  
3610: 20 20 20 20 20 20 20 7b 35 37 34 2c 20 36 38 2c         {574, 68,
3620: 20 31 7d 2c 20 20 20 20 20 20 20 20 20 20 7b 35   1},          {5
3630: 37 37 2c 20 30 2c 20 31 7d 2c 0a 20 20 20 20 7b  77, 0, 1},.    {
3640: 35 37 39 2c 20 31 30 36 2c 20 31 7d 2c 20 20 20  579, 106, 1},   
3650: 20 20 20 20 20 20 7b 35 38 30 2c 20 32 38 2c 20        {580, 28, 
3660: 31 7d 2c 20 20 20 20 20 20 20 20 20 20 7b 35 38  1},          {58
3670: 31 2c 20 33 30 2c 20 31 7d 2c 0a 20 20 20 20 7b  1, 30, 1},.    {
3680: 35 38 32 2c 20 31 2c 20 31 30 7d 2c 20 20 20 20  582, 1, 10},    
3690: 20 20 20 20 20 20 7b 38 33 37 2c 20 33 36 2c 20        {837, 36, 
36a0: 31 7d 2c 20 20 20 20 20 20 20 20 20 20 7b 38 38  1},          {88
36b0: 30 2c 20 31 2c 20 34 7d 2c 0a 20 20 20 20 7b 38  0, 1, 4},.    {8
36c0: 38 36 2c 20 30 2c 20 31 7d 2c 20 20 20 20 20 20  86, 0, 1},      
36d0: 20 20 20 20 20 7b 39 30 32 2c 20 31 38 2c 20 31       {902, 18, 1
36e0: 7d 2c 20 20 20 20 20 20 20 20 20 20 7b 39 30 34  },          {904
36f0: 2c 20 31 36 2c 20 33 7d 2c 0a 20 20 20 20 7b 39  , 16, 3},.    {9
3700: 30 38 2c 20 32 36 2c 20 31 7d 2c 20 20 20 20 20  08, 26, 1},     
3710: 20 20 20 20 20 7b 39 31 30 2c 20 32 34 2c 20 32       {910, 24, 2
3720: 7d 2c 20 20 20 20 20 20 20 20 20 20 7b 39 31 33  },          {913
3730: 2c 20 31 34 2c 20 31 37 7d 2c 0a 20 20 20 20 7b  , 14, 17},.    {
3740: 39 33 31 2c 20 31 34 2c 20 39 7d 2c 20 20 20 20  931, 14, 9},    
3750: 20 20 20 20 20 20 7b 39 36 32 2c 20 30 2c 20 31        {962, 0, 1
3760: 7d 2c 20 20 20 20 20 20 20 20 20 20 20 7b 39 37  },           {97
3770: 35 2c 20 34 2c 20 31 7d 2c 0a 20 20 20 20 7b 39  5, 4, 1},.    {9
3780: 37 36 2c 20 31 34 30 2c 20 31 7d 2c 20 20 20 20  76, 140, 1},    
3790: 20 20 20 20 20 7b 39 37 37 2c 20 31 34 32 2c 20       {977, 142, 
37a0: 31 7d 2c 20 20 20 20 20 20 20 20 20 7b 39 38 31  1},         {981
37b0: 2c 20 31 34 36 2c 20 31 7d 2c 0a 20 20 20 20 7b  , 146, 1},.    {
37c0: 39 38 32 2c 20 31 34 34 2c 20 31 7d 2c 20 20 20  982, 144, 1},   
37d0: 20 20 20 20 20 20 7b 39 38 34 2c 20 31 2c 20 32        {984, 1, 2
37e0: 34 7d 2c 20 20 20 20 20 20 20 20 20 20 7b 31 30  4},          {10
37f0: 30 38 2c 20 31 33 36 2c 20 31 7d 2c 0a 20 20 20  08, 136, 1},.   
3800: 20 7b 31 30 30 39 2c 20 31 33 38 2c 20 31 7d 2c   {1009, 138, 1},
3810: 20 20 20 20 20 20 20 20 7b 31 30 31 32 2c 20 31          {1012, 1
3820: 33 30 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 7b  30, 1},        {
3830: 31 30 31 33 2c 20 31 32 38 2c 20 31 7d 2c 0a 20  1013, 128, 1},. 
3840: 20 20 20 7b 31 30 31 35 2c 20 30 2c 20 31 7d 2c     {1015, 0, 1},
3850: 20 20 20 20 20 20 20 20 20 20 7b 31 30 31 37 2c            {1017,
3860: 20 31 35 32 2c 20 31 7d 2c 20 20 20 20 20 20 20   152, 1},       
3870: 20 7b 31 30 31 38 2c 20 30 2c 20 31 7d 2c 0a 20   {1018, 0, 1},. 
3880: 20 20 20 7b 31 30 32 31 2c 20 31 31 30 2c 20 33     {1021, 110, 3
3890: 7d 2c 20 20 20 20 20 20 20 20 7b 31 30 32 34 2c  },        {1024,
38a0: 20 33 34 2c 20 31 36 7d 2c 20 20 20 20 20 20 20   34, 16},       
38b0: 20 7b 31 30 34 30 2c 20 31 34 2c 20 33 32 7d 2c   {1040, 14, 32},
38c0: 0a 20 20 20 20 7b 31 31 32 30 2c 20 31 2c 20 33  .    {1120, 1, 3
38d0: 34 7d 2c 20 20 20 20 20 20 20 20 20 7b 31 31 36  4},         {116
38e0: 32 2c 20 31 2c 20 35 34 7d 2c 20 20 20 20 20 20  2, 1, 54},      
38f0: 20 20 20 7b 31 32 31 36 2c 20 36 2c 20 31 7d 2c     {1216, 6, 1},
3900: 0a 20 20 20 20 7b 31 32 31 37 2c 20 31 2c 20 31  .    {1217, 1, 1
3910: 34 7d 2c 20 20 20 20 20 20 20 20 20 7b 31 32 33  4},         {123
3920: 32 2c 20 31 2c 20 38 38 7d 2c 20 20 20 20 20 20  2, 1, 88},      
3930: 20 20 20 7b 31 33 32 39 2c 20 32 32 2c 20 33 38     {1329, 22, 38
3940: 7d 2c 0a 20 20 20 20 7b 34 32 35 36 2c 20 36 36  },.    {4256, 66
3950: 2c 20 33 38 7d 2c 20 20 20 20 20 20 20 20 7b 34  , 38},        {4
3960: 32 39 35 2c 20 36 36 2c 20 31 7d 2c 20 20 20 20  295, 66, 1},    
3970: 20 20 20 20 20 7b 34 33 30 31 2c 20 36 36 2c 20       {4301, 66, 
3980: 31 7d 2c 0a 20 20 20 20 7b 37 36 38 30 2c 20 31  1},.    {7680, 1
3990: 2c 20 31 35 30 7d 2c 20 20 20 20 20 20 20 20 7b  , 150},        {
39a0: 37 38 33 35 2c 20 31 33 32 2c 20 31 7d 2c 20 20  7835, 132, 1},  
39b0: 20 20 20 20 20 20 7b 37 38 33 38 2c 20 39 36 2c        {7838, 96,
39c0: 20 31 7d 2c 0a 20 20 20 20 7b 37 38 34 30 2c 20   1},.    {7840, 
39d0: 31 2c 20 39 36 7d 2c 20 20 20 20 20 20 20 20 20  1, 96},         
39e0: 7b 37 39 34 34 2c 20 31 35 30 2c 20 38 7d 2c 20  {7944, 150, 8}, 
39f0: 20 20 20 20 20 20 20 7b 37 39 36 30 2c 20 31 35         {7960, 15
3a00: 30 2c 20 36 7d 2c 0a 20 20 20 20 7b 37 39 37 36  0, 6},.    {7976
3a10: 2c 20 31 35 30 2c 20 38 7d 2c 20 20 20 20 20 20  , 150, 8},      
3a20: 20 20 7b 37 39 39 32 2c 20 31 35 30 2c 20 38 7d    {7992, 150, 8}
3a30: 2c 20 20 20 20 20 20 20 20 7b 38 30 30 38 2c 20  ,        {8008, 
3a40: 31 35 30 2c 20 36 7d 2c 0a 20 20 20 20 7b 38 30  150, 6},.    {80
3a50: 32 35 2c 20 31 35 31 2c 20 38 7d 2c 20 20 20 20  25, 151, 8},    
3a60: 20 20 20 20 7b 38 30 34 30 2c 20 31 35 30 2c 20      {8040, 150, 
3a70: 38 7d 2c 20 20 20 20 20 20 20 20 7b 38 30 37 32  8},        {8072
3a80: 2c 20 31 35 30 2c 20 38 7d 2c 0a 20 20 20 20 7b  , 150, 8},.    {
3a90: 38 30 38 38 2c 20 31 35 30 2c 20 38 7d 2c 20 20  8088, 150, 8},  
3aa0: 20 20 20 20 20 20 7b 38 31 30 34 2c 20 31 35 30        {8104, 150
3ab0: 2c 20 38 7d 2c 20 20 20 20 20 20 20 20 7b 38 31  , 8},        {81
3ac0: 32 30 2c 20 31 35 30 2c 20 32 7d 2c 0a 20 20 20  20, 150, 2},.   
3ad0: 20 7b 38 31 32 32 2c 20 31 32 36 2c 20 32 7d 2c   {8122, 126, 2},
3ae0: 20 20 20 20 20 20 20 20 7b 38 31 32 34 2c 20 31          {8124, 1
3af0: 34 38 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 7b  48, 1},        {
3b00: 38 31 32 36 2c 20 31 30 30 2c 20 31 7d 2c 0a 20  8126, 100, 1},. 
3b10: 20 20 20 7b 38 31 33 36 2c 20 31 32 34 2c 20 34     {8136, 124, 4
3b20: 7d 2c 20 20 20 20 20 20 20 20 7b 38 31 34 30 2c  },        {8140,
3b30: 20 31 34 38 2c 20 31 7d 2c 20 20 20 20 20 20 20   148, 1},       
3b40: 20 7b 38 31 35 32 2c 20 31 35 30 2c 20 32 7d 2c   {8152, 150, 2},
3b50: 0a 20 20 20 20 7b 38 31 35 34 2c 20 31 32 30 2c  .    {8154, 120,
3b60: 20 32 7d 2c 20 20 20 20 20 20 20 20 7b 38 31 36   2},        {816
3b70: 38 2c 20 31 35 30 2c 20 32 7d 2c 20 20 20 20 20  8, 150, 2},     
3b80: 20 20 20 7b 38 31 37 30 2c 20 31 31 38 2c 20 32     {8170, 118, 2
3b90: 7d 2c 0a 20 20 20 20 7b 38 31 37 32 2c 20 31 35  },.    {8172, 15
3ba0: 32 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 7b 38  2, 1},        {8
3bb0: 31 38 34 2c 20 31 31 32 2c 20 32 7d 2c 20 20 20  184, 112, 2},   
3bc0: 20 20 20 20 20 7b 38 31 38 36 2c 20 31 31 34 2c       {8186, 114,
3bd0: 20 32 7d 2c 0a 20 20 20 20 7b 38 31 38 38 2c 20   2},.    {8188, 
3be0: 31 34 38 2c 20 31 7d 2c 20 20 20 20 20 20 20 20  148, 1},        
3bf0: 7b 38 34 38 36 2c 20 39 38 2c 20 31 7d 2c 20 20  {8486, 98, 1},  
3c00: 20 20 20 20 20 20 20 7b 38 34 39 30 2c 20 39 32         {8490, 92
3c10: 2c 20 31 7d 2c 0a 20 20 20 20 7b 38 34 39 31 2c  , 1},.    {8491,
3c20: 20 39 34 2c 20 31 7d 2c 20 20 20 20 20 20 20 20   94, 1},        
3c30: 20 7b 38 34 39 38 2c 20 31 32 2c 20 31 7d 2c 20   {8498, 12, 1}, 
3c40: 20 20 20 20 20 20 20 20 7b 38 35 34 34 2c 20 38          {8544, 8
3c50: 2c 20 31 36 7d 2c 0a 20 20 20 20 7b 38 35 37 39  , 16},.    {8579
3c60: 2c 20 30 2c 20 31 7d 2c 20 20 20 20 20 20 20 20  , 0, 1},        
3c70: 20 20 7b 39 33 39 38 2c 20 31 30 2c 20 32 36 7d    {9398, 10, 26}
3c80: 2c 20 20 20 20 20 20 20 20 7b 31 31 32 36 34 2c  ,        {11264,
3c90: 20 32 32 2c 20 34 37 7d 2c 0a 20 20 20 20 7b 31   22, 47},.    {1
3ca0: 31 33 36 30 2c 20 30 2c 20 31 7d 2c 20 20 20 20  1360, 0, 1},    
3cb0: 20 20 20 20 20 7b 31 31 33 36 32 2c 20 38 38 2c       {11362, 88,
3cc0: 20 31 7d 2c 20 20 20 20 20 20 20 20 7b 31 31 33   1},        {113
3cd0: 36 33 2c 20 31 30 32 2c 20 31 7d 2c 0a 20 20 20  63, 102, 1},.   
3ce0: 20 7b 31 31 33 36 34 2c 20 39 30 2c 20 31 7d 2c   {11364, 90, 1},
3cf0: 20 20 20 20 20 20 20 20 7b 31 31 33 36 37 2c 20          {11367, 
3d00: 31 2c 20 36 7d 2c 20 20 20 20 20 20 20 20 20 7b  1, 6},         {
3d10: 31 31 33 37 33 2c 20 38 34 2c 20 31 7d 2c 0a 20  11373, 84, 1},. 
3d20: 20 20 20 7b 31 31 33 37 34 2c 20 38 36 2c 20 31     {11374, 86, 1
3d30: 7d 2c 20 20 20 20 20 20 20 20 7b 31 31 33 37 35  },        {11375
3d40: 2c 20 38 30 2c 20 31 7d 2c 20 20 20 20 20 20 20  , 80, 1},       
3d50: 20 7b 31 31 33 37 36 2c 20 38 32 2c 20 31 7d 2c   {11376, 82, 1},
3d60: 0a 20 20 20 20 7b 31 31 33 37 38 2c 20 30 2c 20  .    {11378, 0, 
3d70: 31 7d 2c 20 20 20 20 20 20 20 20 20 7b 31 31 33  1},         {113
3d80: 38 31 2c 20 30 2c 20 31 7d 2c 20 20 20 20 20 20  81, 0, 1},      
3d90: 20 20 20 7b 31 31 33 39 30 2c 20 37 38 2c 20 32     {11390, 78, 2
3da0: 7d 2c 0a 20 20 20 20 7b 31 31 33 39 32 2c 20 31  },.    {11392, 1
3db0: 2c 20 31 30 30 7d 2c 20 20 20 20 20 20 20 7b 31  , 100},       {1
3dc0: 31 34 39 39 2c 20 31 2c 20 34 7d 2c 20 20 20 20  1499, 1, 4},    
3dd0: 20 20 20 20 20 7b 31 31 35 30 36 2c 20 30 2c 20       {11506, 0, 
3de0: 31 7d 2c 0a 20 20 20 20 7b 34 32 35 36 30 2c 20  1},.    {42560, 
3df0: 31 2c 20 34 36 7d 2c 20 20 20 20 20 20 20 20 7b  1, 46},        {
3e00: 34 32 36 32 34 2c 20 31 2c 20 32 34 7d 2c 20 20  42624, 1, 24},  
3e10: 20 20 20 20 20 20 7b 34 32 37 38 36 2c 20 31 2c        {42786, 1,
3e20: 20 31 34 7d 2c 0a 20 20 20 20 7b 34 32 38 30 32   14},.    {42802
3e30: 2c 20 31 2c 20 36 32 7d 2c 20 20 20 20 20 20 20  , 1, 62},       
3e40: 20 7b 34 32 38 37 33 2c 20 31 2c 20 34 7d 2c 20   {42873, 1, 4}, 
3e50: 20 20 20 20 20 20 20 20 7b 34 32 38 37 37 2c 20          {42877, 
3e60: 37 36 2c 20 31 7d 2c 0a 20 20 20 20 7b 34 32 38  76, 1},.    {428
3e70: 37 38 2c 20 31 2c 20 31 30 7d 2c 20 20 20 20 20  78, 1, 10},     
3e80: 20 20 20 7b 34 32 38 39 31 2c 20 30 2c 20 31 7d     {42891, 0, 1}
3e90: 2c 20 20 20 20 20 20 20 20 20 7b 34 32 38 39 33  ,         {42893
3ea0: 2c 20 37 34 2c 20 31 7d 2c 0a 20 20 20 20 7b 34  , 74, 1},.    {4
3eb0: 32 38 39 36 2c 20 31 2c 20 34 7d 2c 20 20 20 20  2896, 1, 4},    
3ec0: 20 20 20 20 20 7b 34 32 39 31 32 2c 20 31 2c 20       {42912, 1, 
3ed0: 31 30 7d 2c 20 20 20 20 20 20 20 20 7b 34 32 39  10},        {429
3ee0: 32 32 2c 20 37 32 2c 20 31 7d 2c 0a 20 20 20 20  22, 72, 1},.    
3ef0: 7b 36 35 33 31 33 2c 20 31 34 2c 20 32 36 7d 2c  {65313, 14, 26},
3f00: 20 20 20 20 20 20 20 0a 20 20 7d 3b 0a 20 20 73         .  };.  s
3f10: 74 61 74 69 63 20 63 6f 6e 73 74 20 75 6e 73 69  tatic const unsi
3f20: 67 6e 65 64 20 73 68 6f 72 74 20 61 69 4f 66 66  gned short aiOff
3f30: 5b 5d 20 3d 20 7b 0a 20 20 20 31 2c 20 20 20 20  [] = {.   1,    
3f40: 20 32 2c 20 20 20 20 20 38 2c 20 20 20 20 20 31   2,     8,     1
3f50: 35 2c 20 20 20 20 31 36 2c 20 20 20 20 32 36 2c  5,    16,    26,
3f60: 20 20 20 20 32 38 2c 20 20 20 20 33 32 2c 20 20      28,    32,  
3f70: 20 20 0a 20 20 20 33 37 2c 20 20 20 20 33 38 2c    .   37,    38,
3f80: 20 20 20 20 34 30 2c 20 20 20 20 34 38 2c 20 20      40,    48,  
3f90: 20 20 36 33 2c 20 20 20 20 36 34 2c 20 20 20 20    63,    64,    
3fa0: 36 39 2c 20 20 20 20 37 31 2c 20 20 20 20 0a 20  69,    71,    . 
3fb0: 20 20 37 39 2c 20 20 20 20 38 30 2c 20 20 20 20    79,    80,    
3fc0: 31 31 36 2c 20 20 20 32 30 32 2c 20 20 20 32 30  116,   202,   20
3fd0: 33 2c 20 20 20 32 30 35 2c 20 20 20 32 30 36 2c  3,   205,   206,
3fe0: 20 20 20 32 30 37 2c 20 20 20 0a 20 20 20 32 30     207,   .   20
3ff0: 39 2c 20 20 20 32 31 30 2c 20 20 20 32 31 31 2c  9,   210,   211,
4000: 20 20 20 32 31 33 2c 20 20 20 32 31 34 2c 20 20     213,   214,  
4010: 20 32 31 37 2c 20 20 20 32 31 38 2c 20 20 20 32   217,   218,   2
4020: 31 39 2c 20 20 20 0a 20 20 20 37 37 35 2c 20 20  19,   .   775,  
4030: 20 37 32 36 34 2c 20 20 31 30 37 39 32 2c 20 31   7264,  10792, 1
4040: 30 37 39 35 2c 20 32 33 32 32 38 2c 20 32 33 32  0795, 23228, 232
4050: 35 36 2c 20 33 30 32 30 34 2c 20 35 34 37 32 31  56, 30204, 54721
4060: 2c 20 0a 20 20 20 35 34 37 35 33 2c 20 35 34 37  , .   54753, 547
4070: 35 34 2c 20 35 34 37 35 36 2c 20 35 34 37 38 37  54, 54756, 54787
4080: 2c 20 35 34 37 39 33 2c 20 35 34 38 30 39 2c 20  , 54793, 54809, 
4090: 35 37 31 35 33 2c 20 35 37 32 37 34 2c 20 0a 20  57153, 57274, . 
40a0: 20 20 35 37 39 32 31 2c 20 35 38 30 31 39 2c 20    57921, 58019, 
40b0: 35 38 33 36 33 2c 20 36 31 37 32 32 2c 20 36 35  58363, 61722, 65
40c0: 32 36 38 2c 20 36 35 33 34 31 2c 20 36 35 33 37  268, 65341, 6537
40d0: 33 2c 20 36 35 34 30 36 2c 20 0a 20 20 20 36 35  3, 65406, .   65
40e0: 34 30 38 2c 20 36 35 34 31 30 2c 20 36 35 34 31  408, 65410, 6541
40f0: 35 2c 20 36 35 34 32 34 2c 20 36 35 34 33 36 2c  5, 65424, 65436,
4100: 20 36 35 34 33 39 2c 20 36 35 34 35 30 2c 20 36   65439, 65450, 6
4110: 35 34 36 32 2c 20 0a 20 20 20 36 35 34 37 32 2c  5462, .   65472,
4120: 20 36 35 34 37 36 2c 20 36 35 34 37 38 2c 20 36   65476, 65478, 6
4130: 35 34 38 30 2c 20 36 35 34 38 32 2c 20 36 35 34  5480, 65482, 654
4140: 38 38 2c 20 36 35 35 30 36 2c 20 36 35 35 31 31  88, 65506, 65511
4150: 2c 20 0a 20 20 20 36 35 35 31 34 2c 20 36 35 35  , .   65514, 655
4160: 32 31 2c 20 36 35 35 32 37 2c 20 36 35 35 32 38  21, 65527, 65528
4170: 2c 20 36 35 35 32 39 2c 20 0a 20 20 7d 3b 0a 0a  , 65529, .  };..
4180: 20 20 69 6e 74 20 72 65 74 20 3d 20 63 3b 0a 0a    int ret = c;..
4190: 20 20 61 73 73 65 72 74 28 20 73 69 7a 65 6f 66    assert( sizeof
41a0: 28 75 6e 73 69 67 6e 65 64 20 73 68 6f 72 74 29  (unsigned short)
41b0: 3d 3d 32 20 26 26 20 73 69 7a 65 6f 66 28 75 6e  ==2 && sizeof(un
41c0: 73 69 67 6e 65 64 20 63 68 61 72 29 3d 3d 31 20  signed char)==1 
41d0: 29 3b 0a 0a 20 20 69 66 28 20 63 3c 31 32 38 20  );..  if( c<128 
41e0: 29 7b 0a 20 20 20 20 69 66 28 20 63 3e 3d 27 41  ){.    if( c>='A
41f0: 27 20 26 26 20 63 3c 3d 27 5a 27 20 29 20 72 65  ' && c<='Z' ) re
4200: 74 20 3d 20 63 20 2b 20 28 27 61 27 20 2d 20 27  t = c + ('a' - '
4210: 41 27 29 3b 0a 20 20 7d 65 6c 73 65 20 69 66 28  A');.  }else if(
4220: 20 63 3c 36 35 35 33 36 20 29 7b 0a 20 20 20 20   c<65536 ){.    
4230: 63 6f 6e 73 74 20 73 74 72 75 63 74 20 54 61 62  const struct Tab
4240: 6c 65 45 6e 74 72 79 20 2a 70 3b 0a 20 20 20 20  leEntry *p;.    
4250: 69 6e 74 20 69 48 69 20 3d 20 73 69 7a 65 6f 66  int iHi = sizeof
4260: 28 61 45 6e 74 72 79 29 2f 73 69 7a 65 6f 66 28  (aEntry)/sizeof(
4270: 61 45 6e 74 72 79 5b 30 5d 29 20 2d 20 31 3b 0a  aEntry[0]) - 1;.
4280: 20 20 20 20 69 6e 74 20 69 4c 6f 20 3d 20 30 3b      int iLo = 0;
4290: 0a 20 20 20 20 69 6e 74 20 69 52 65 73 20 3d 20  .    int iRes = 
42a0: 2d 31 3b 0a 0a 20 20 20 20 61 73 73 65 72 74 28  -1;..    assert(
42b0: 20 63 3e 61 45 6e 74 72 79 5b 30 5d 2e 69 43 6f   c>aEntry[0].iCo
42c0: 64 65 20 29 3b 0a 20 20 20 20 77 68 69 6c 65 28  de );.    while(
42d0: 20 69 48 69 3e 3d 69 4c 6f 20 29 7b 0a 20 20 20   iHi>=iLo ){.   
42e0: 20 20 20 69 6e 74 20 69 54 65 73 74 20 3d 20 28     int iTest = (
42f0: 69 48 69 20 2b 20 69 4c 6f 29 20 2f 20 32 3b 0a  iHi + iLo) / 2;.
4300: 20 20 20 20 20 20 69 6e 74 20 63 6d 70 20 3d 20        int cmp = 
4310: 28 63 20 2d 20 61 45 6e 74 72 79 5b 69 54 65 73  (c - aEntry[iTes
4320: 74 5d 2e 69 43 6f 64 65 29 3b 0a 20 20 20 20 20  t].iCode);.     
4330: 20 69 66 28 20 63 6d 70 3e 3d 30 20 29 7b 0a 20   if( cmp>=0 ){. 
4340: 20 20 20 20 20 20 20 69 52 65 73 20 3d 20 69 54         iRes = iT
4350: 65 73 74 3b 0a 20 20 20 20 20 20 20 20 69 4c 6f  est;.        iLo
4360: 20 3d 20 69 54 65 73 74 2b 31 3b 0a 20 20 20 20   = iTest+1;.    
4370: 20 20 7d 65 6c 73 65 7b 0a 20 20 20 20 20 20 20    }else{.       
4380: 20 69 48 69 20 3d 20 69 54 65 73 74 2d 31 3b 0a   iHi = iTest-1;.
4390: 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20        }.    }.. 
43a0: 20 20 20 61 73 73 65 72 74 28 20 69 52 65 73 3e     assert( iRes>
43b0: 3d 30 20 26 26 20 63 3e 3d 61 45 6e 74 72 79 5b  =0 && c>=aEntry[
43c0: 69 52 65 73 5d 2e 69 43 6f 64 65 20 29 3b 0a 20  iRes].iCode );. 
43d0: 20 20 20 70 20 3d 20 26 61 45 6e 74 72 79 5b 69     p = &aEntry[i
43e0: 52 65 73 5d 3b 0a 20 20 20 20 69 66 28 20 63 3c  Res];.    if( c<
43f0: 28 70 2d 3e 69 43 6f 64 65 20 2b 20 70 2d 3e 6e  (p->iCode + p->n
4400: 52 61 6e 67 65 29 20 26 26 20 30 3d 3d 28 30 78  Range) && 0==(0x
4410: 30 31 20 26 20 70 2d 3e 66 6c 61 67 73 20 26 20  01 & p->flags & 
4420: 28 70 2d 3e 69 43 6f 64 65 20 5e 20 63 29 29 20  (p->iCode ^ c)) 
4430: 29 7b 0a 20 20 20 20 20 20 72 65 74 20 3d 20 28  ){.      ret = (
4440: 63 20 2b 20 28 61 69 4f 66 66 5b 70 2d 3e 66 6c  c + (aiOff[p->fl
4450: 61 67 73 3e 3e 31 5d 29 29 20 26 20 30 78 30 30  ags>>1])) & 0x00
4460: 30 30 46 46 46 46 3b 0a 20 20 20 20 20 20 61 73  00FFFF;.      as
4470: 73 65 72 74 28 20 72 65 74 3e 30 20 29 3b 0a 20  sert( ret>0 );. 
4480: 20 20 20 7d 0a 0a 20 20 20 20 69 66 28 20 65 52     }..    if( eR
4490: 65 6d 6f 76 65 44 69 61 63 72 69 74 69 63 20 29  emoveDiacritic )
44a0: 7b 0a 20 20 20 20 20 20 72 65 74 20 3d 20 72 65  {.      ret = re
44b0: 6d 6f 76 65 5f 64 69 61 63 72 69 74 69 63 28 72  move_diacritic(r
44c0: 65 74 2c 20 65 52 65 6d 6f 76 65 44 69 61 63 72  et, eRemoveDiacr
44d0: 69 74 69 63 3d 3d 32 29 3b 0a 20 20 20 20 7d 0a  itic==2);.    }.
44e0: 20 20 7d 0a 20 20 0a 20 20 65 6c 73 65 20 69 66    }.  .  else if
44f0: 28 20 63 3e 3d 36 36 35 36 30 20 26 26 20 63 3c  ( c>=66560 && c<
4500: 36 36 36 30 30 20 29 7b 0a 20 20 20 20 72 65 74  66600 ){.    ret
4510: 20 3d 20 63 20 2b 20 34 30 3b 0a 20 20 7d 0a 0a   = c + 40;.  }..
4520: 20 20 72 65 74 75 72 6e 20 72 65 74 3b 0a 7d 0a    return ret;.}.
4530: 23 65 6e 64 69 66 20 2f 2a 20 64 65 66 69 6e 65  #endif /* define
4540: 64 28 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  d(SQLITE_ENABLE_
4550: 46 54 53 33 29 20 7c 7c 20 64 65 66 69 6e 65 64  FTS3) || defined
4560: 28 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 46  (SQLITE_ENABLE_F
4570: 54 53 34 29 20 2a 2f 0a 23 65 6e 64 69 66 20 2f  TS4) */.#endif /
4580: 2a 20 21 64 65 66 69 6e 65 64 28 53 51 4c 49 54  * !defined(SQLIT
4590: 45 5f 44 49 53 41 42 4c 45 5f 46 54 53 33 5f 55  E_DISABLE_FTS3_U
45a0: 4e 49 43 4f 44 45 29 20 2a 2f 0a                 NICODE) */.