/ Hex Artifact Content
Login

Artifact cc04fc672bfd42b1e650398cb0bf71f64f9aae032cfe75bbcfe75b9cf966029c:


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 29 7b 0a 20 20 75 6e  tic(int c){.  un
1ea0: 73 69 67 6e 65 64 20 73 68 6f 72 74 20 61 44 69  signed short aDi
1eb0: 61 5b 5d 20 3d 20 7b 0a 20 20 20 20 20 20 20 20  a[] = {.        
1ec0: 30 2c 20 20 31 37 39 37 2c 20 20 31 38 34 38 2c  0,  1797,  1848,
1ed0: 20 20 31 38 35 39 2c 20 20 31 38 39 31 2c 20 20    1859,  1891,  
1ee0: 31 39 32 38 2c 20 20 31 39 34 30 2c 20 20 31 39  1928,  1940,  19
1ef0: 39 35 2c 20 0a 20 20 20 20 20 32 30 32 34 2c 20  95, .     2024, 
1f00: 20 32 30 34 30 2c 20 20 32 30 36 30 2c 20 20 32   2040,  2060,  2
1f10: 31 31 30 2c 20 20 32 31 36 38 2c 20 20 32 32 30  110,  2168,  220
1f20: 36 2c 20 20 32 32 36 34 2c 20 20 32 32 38 36 2c  6,  2264,  2286,
1f30: 20 0a 20 20 20 20 20 32 33 34 34 2c 20 20 32 33   .     2344,  23
1f40: 38 33 2c 20 20 32 34 37 32 2c 20 20 32 34 38 38  83,  2472,  2488
1f50: 2c 20 20 32 35 31 36 2c 20 20 32 35 39 36 2c 20  ,  2516,  2596, 
1f60: 20 32 36 36 38 2c 20 20 32 37 33 32 2c 20 0a 20   2668,  2732, . 
1f70: 20 20 20 20 32 37 38 32 2c 20 20 32 38 34 32 2c      2782,  2842,
1f80: 20 20 32 38 39 34 2c 20 20 32 39 35 34 2c 20 20    2894,  2954,  
1f90: 32 39 38 34 2c 20 20 33 30 30 30 2c 20 20 33 30  2984,  3000,  30
1fa0: 32 38 2c 20 20 33 33 33 36 2c 20 0a 20 20 20 20  28,  3336, .    
1fb0: 20 33 34 35 36 2c 20 20 33 36 39 36 2c 20 20 33   3456,  3696,  3
1fc0: 37 31 32 2c 20 20 33 37 32 38 2c 20 20 33 37 34  712,  3728,  374
1fd0: 34 2c 20 20 33 38 39 36 2c 20 20 33 39 31 32 2c  4,  3896,  3912,
1fe0: 20 20 33 39 32 38 2c 20 0a 20 20 20 20 20 33 39    3928, .     39
1ff0: 36 38 2c 20 20 34 30 30 38 2c 20 20 34 30 34 30  68,  4008,  4040
2000: 2c 20 20 34 31 30 36 2c 20 20 34 31 33 38 2c 20  ,  4106,  4138, 
2010: 20 34 31 37 30 2c 20 20 34 32 30 32 2c 20 20 34   4170,  4202,  4
2020: 32 33 34 2c 20 0a 20 20 20 20 20 34 32 36 36 2c  234, .     4266,
2030: 20 20 34 32 39 36 2c 20 20 34 33 31 32 2c 20 20    4296,  4312,  
2040: 34 33 34 34 2c 20 20 34 34 30 38 2c 20 20 34 34  4344,  4408,  44
2050: 32 34 2c 20 20 34 34 37 32 2c 20 20 34 35 30 34  24,  4472,  4504
2060: 2c 20 0a 20 20 20 20 20 36 31 34 38 2c 20 20 36  , .     6148,  6
2070: 31 39 38 2c 20 20 36 32 36 34 2c 20 20 36 32 38  198,  6264,  628
2080: 30 2c 20 20 36 33 36 30 2c 20 20 36 34 32 39 2c  0,  6360,  6429,
2090: 20 20 36 35 30 35 2c 20 20 36 35 32 39 2c 20 0a    6505,  6529, .
20a0: 20 20 20 20 36 31 34 34 38 2c 20 36 31 34 36 38      61448, 61468
20b0: 2c 20 36 31 35 33 34 2c 20 36 31 35 39 32 2c 20  , 61534, 61592, 
20c0: 36 31 36 34 32 2c 20 36 31 36 38 38 2c 20 36 31  61642, 61688, 61
20d0: 37 30 34 2c 20 36 31 37 32 36 2c 20 0a 20 20 20  704, 61726, .   
20e0: 20 36 31 37 38 34 2c 20 36 31 38 30 30 2c 20 36   61784, 61800, 6
20f0: 31 38 33 36 2c 20 36 31 38 38 30 2c 20 36 31 39  1836, 61880, 619
2100: 31 34 2c 20 36 31 39 34 38 2c 20 36 31 39 39 38  14, 61948, 61998
2110: 2c 20 36 32 31 32 32 2c 20 0a 20 20 20 20 36 32  , 62122, .    62
2120: 31 35 34 2c 20 36 32 32 30 30 2c 20 36 32 32 31  154, 62200, 6221
2130: 38 2c 20 36 32 33 30 32 2c 20 36 32 33 36 34 2c  8, 62302, 62364,
2140: 20 36 32 34 34 32 2c 20 36 32 34 37 38 2c 20 36   62442, 62478, 6
2150: 32 35 33 36 2c 20 0a 20 20 20 20 36 32 35 35 34  2536, .    62554
2160: 2c 20 36 32 35 38 34 2c 20 36 32 36 30 34 2c 20  , 62584, 62604, 
2170: 36 32 36 34 30 2c 20 36 32 36 34 38 2c 20 36 32  62640, 62648, 62
2180: 36 35 36 2c 20 36 32 36 36 34 2c 20 36 32 37 33  656, 62664, 6273
2190: 30 2c 20 0a 20 20 20 20 36 32 39 32 34 2c 20 36  0, .    62924, 6
21a0: 33 30 35 30 2c 20 36 33 30 38 32 2c 20 36 33 32  3050, 63082, 632
21b0: 37 34 2c 20 36 33 33 39 30 2c 20 0a 20 20 7d 3b  74, 63390, .  };
21c0: 0a 20 20 63 68 61 72 20 61 43 68 61 72 5b 5d 20  .  char aChar[] 
21d0: 3d 20 7b 0a 20 20 20 20 27 5c 30 27 2c 20 27 61  = {.    '\0', 'a
21e0: 27 2c 20 20 27 63 27 2c 20 20 27 65 27 2c 20 20  ',  'c',  'e',  
21f0: 27 69 27 2c 20 20 27 6e 27 2c 20 20 27 6f 27 2c  'i',  'n',  'o',
2200: 20 20 27 75 27 2c 20 20 27 79 27 2c 20 20 27 79    'u',  'y',  'y
2210: 27 2c 20 20 27 61 27 2c 20 20 27 63 27 2c 20 20  ',  'a',  'c',  
2220: 0a 20 20 20 20 27 64 27 2c 20 20 27 65 27 2c 20  .    'd',  'e', 
2230: 20 27 65 27 2c 20 20 27 67 27 2c 20 20 27 68 27   'e',  'g',  'h'
2240: 2c 20 20 27 69 27 2c 20 20 27 6a 27 2c 20 20 27  ,  'i',  'j',  '
2250: 6b 27 2c 20 20 27 6c 27 2c 20 20 27 6e 27 2c 20  k',  'l',  'n', 
2260: 20 27 6f 27 2c 20 20 27 72 27 2c 20 20 0a 20 20   'o',  'r',  .  
2270: 20 20 27 73 27 2c 20 20 27 74 27 2c 20 20 27 75    's',  't',  'u
2280: 27 2c 20 20 27 75 27 2c 20 20 27 77 27 2c 20 20  ',  'u',  'w',  
2290: 27 79 27 2c 20 20 27 7a 27 2c 20 20 27 6f 27 2c  'y',  'z',  'o',
22a0: 20 20 27 75 27 2c 20 20 27 61 27 2c 20 20 27 69    'u',  'a',  'i
22b0: 27 2c 20 20 27 6f 27 2c 20 20 0a 20 20 20 20 27  ',  'o',  .    '
22c0: 75 27 2c 20 20 27 67 27 2c 20 20 27 6b 27 2c 20  u',  'g',  'k', 
22d0: 20 27 6f 27 2c 20 20 27 6a 27 2c 20 20 27 67 27   'o',  'j',  'g'
22e0: 2c 20 20 27 6e 27 2c 20 20 27 61 27 2c 20 20 27  ,  'n',  'a',  '
22f0: 65 27 2c 20 20 27 69 27 2c 20 20 27 6f 27 2c 20  e',  'i',  'o', 
2300: 20 27 72 27 2c 20 20 0a 20 20 20 20 27 75 27 2c   'r',  .    'u',
2310: 20 20 27 73 27 2c 20 20 27 74 27 2c 20 20 27 68    's',  't',  'h
2320: 27 2c 20 20 27 61 27 2c 20 20 27 65 27 2c 20 20  ',  'a',  'e',  
2330: 27 6f 27 2c 20 20 27 79 27 2c 20 20 27 5c 30 27  'o',  'y',  '\0'
2340: 2c 20 27 5c 30 27 2c 20 27 5c 30 27 2c 20 27 5c  , '\0', '\0', '\
2350: 30 27 2c 20 0a 20 20 20 20 27 5c 30 27 2c 20 27  0', .    '\0', '
2360: 5c 30 27 2c 20 27 5c 30 27 2c 20 27 5c 30 27 2c  \0', '\0', '\0',
2370: 20 27 61 27 2c 20 20 27 62 27 2c 20 20 27 64 27   'a',  'b',  'd'
2380: 2c 20 20 27 64 27 2c 20 20 27 65 27 2c 20 20 27  ,  'd',  'e',  '
2390: 66 27 2c 20 20 27 67 27 2c 20 20 27 68 27 2c 20  f',  'g',  'h', 
23a0: 20 0a 20 20 20 20 27 68 27 2c 20 20 27 69 27 2c   .    'h',  'i',
23b0: 20 20 27 6b 27 2c 20 20 27 6c 27 2c 20 20 27 6c    'k',  'l',  'l
23c0: 27 2c 20 20 27 6d 27 2c 20 20 27 6e 27 2c 20 20  ',  'm',  'n',  
23d0: 27 70 27 2c 20 20 27 72 27 2c 20 20 27 72 27 2c  'p',  'r',  'r',
23e0: 20 20 27 73 27 2c 20 20 27 74 27 2c 20 20 0a 20    's',  't',  . 
23f0: 20 20 20 27 75 27 2c 20 20 27 76 27 2c 20 20 27     'u',  'v',  '
2400: 77 27 2c 20 20 27 77 27 2c 20 20 27 78 27 2c 20  w',  'w',  'x', 
2410: 20 27 79 27 2c 20 20 27 7a 27 2c 20 20 27 68 27   'y',  'z',  'h'
2420: 2c 20 20 27 74 27 2c 20 20 27 77 27 2c 20 20 27  ,  't',  'w',  '
2430: 79 27 2c 20 20 27 61 27 2c 20 20 0a 20 20 20 20  y',  'a',  .    
2440: 27 65 27 2c 20 20 27 69 27 2c 20 20 27 6f 27 2c  'e',  'i',  'o',
2450: 20 20 27 75 27 2c 20 20 27 79 27 2c 20 20 0a 20    'u',  'y',  . 
2460: 20 7d 3b 0a 0a 20 20 75 6e 73 69 67 6e 65 64 20   };..  unsigned 
2470: 69 6e 74 20 6b 65 79 20 3d 20 28 28 28 75 6e 73  int key = (((uns
2480: 69 67 6e 65 64 20 69 6e 74 29 63 29 3c 3c 33 29  igned int)c)<<3)
2490: 20 7c 20 30 78 30 30 30 30 30 30 30 37 3b 0a 20   | 0x00000007;. 
24a0: 20 69 6e 74 20 69 52 65 73 20 3d 20 30 3b 0a 20   int iRes = 0;. 
24b0: 20 69 6e 74 20 69 48 69 20 3d 20 73 69 7a 65 6f   int iHi = sizeo
24c0: 66 28 61 44 69 61 29 2f 73 69 7a 65 6f 66 28 61  f(aDia)/sizeof(a
24d0: 44 69 61 5b 30 5d 29 20 2d 20 31 3b 0a 20 20 69  Dia[0]) - 1;.  i
24e0: 6e 74 20 69 4c 6f 20 3d 20 30 3b 0a 20 20 77 68  nt iLo = 0;.  wh
24f0: 69 6c 65 28 20 69 48 69 3e 3d 69 4c 6f 20 29 7b  ile( iHi>=iLo ){
2500: 0a 20 20 20 20 69 6e 74 20 69 54 65 73 74 20 3d  .    int iTest =
2510: 20 28 69 48 69 20 2b 20 69 4c 6f 29 20 2f 20 32   (iHi + iLo) / 2
2520: 3b 0a 20 20 20 20 69 66 28 20 6b 65 79 20 3e 3d  ;.    if( key >=
2530: 20 61 44 69 61 5b 69 54 65 73 74 5d 20 29 7b 0a   aDia[iTest] ){.
2540: 20 20 20 20 20 20 69 52 65 73 20 3d 20 69 54 65        iRes = iTe
2550: 73 74 3b 0a 20 20 20 20 20 20 69 4c 6f 20 3d 20  st;.      iLo = 
2560: 69 54 65 73 74 2b 31 3b 0a 20 20 20 20 7d 65 6c  iTest+1;.    }el
2570: 73 65 7b 0a 20 20 20 20 20 20 69 48 69 20 3d 20  se{.      iHi = 
2580: 69 54 65 73 74 2d 31 3b 0a 20 20 20 20 7d 0a 20  iTest-1;.    }. 
2590: 20 7d 0a 20 20 61 73 73 65 72 74 28 20 6b 65 79   }.  assert( key
25a0: 3e 3d 61 44 69 61 5b 69 52 65 73 5d 20 29 3b 0a  >=aDia[iRes] );.
25b0: 20 20 72 65 74 75 72 6e 20 28 28 63 20 3e 20 28    return ((c > (
25c0: 61 44 69 61 5b 69 52 65 73 5d 3e 3e 33 29 20 2b  aDia[iRes]>>3) +
25d0: 20 28 61 44 69 61 5b 69 52 65 73 5d 26 30 78 30   (aDia[iRes]&0x0
25e0: 37 29 29 20 3f 20 63 20 3a 20 28 69 6e 74 29 61  7)) ? c : (int)a
25f0: 43 68 61 72 5b 69 52 65 73 5d 29 3b 0a 7d 0a 0a  Char[iRes]);.}..
2600: 0a 2f 2a 0a 2a 2a 20 52 65 74 75 72 6e 20 74 72  ./*.** Return tr
2610: 75 65 20 69 66 20 74 68 65 20 61 72 67 75 6d 65  ue if the argume
2620: 6e 74 20 69 6e 74 65 72 70 72 65 74 65 64 20 61  nt interpreted a
2630: 73 20 61 20 75 6e 69 63 6f 64 65 20 63 6f 64 65  s a unicode code
2640: 70 6f 69 6e 74 0a 2a 2a 20 69 73 20 61 20 64 69  point.** is a di
2650: 61 63 72 69 74 69 63 61 6c 20 6d 6f 64 69 66 69  acritical modifi
2660: 65 72 20 63 68 61 72 61 63 74 65 72 2e 0a 2a 2f  er character..*/
2670: 0a 69 6e 74 20 73 71 6c 69 74 65 33 46 74 73 55  .int sqlite3FtsU
2680: 6e 69 63 6f 64 65 49 73 64 69 61 63 72 69 74 69  nicodeIsdiacriti
2690: 63 28 69 6e 74 20 63 29 7b 0a 20 20 75 6e 73 69  c(int c){.  unsi
26a0: 67 6e 65 64 20 69 6e 74 20 6d 61 73 6b 30 20 3d  gned int mask0 =
26b0: 20 30 78 30 38 30 32 39 46 44 46 3b 0a 20 20 75   0x08029FDF;.  u
26c0: 6e 73 69 67 6e 65 64 20 69 6e 74 20 6d 61 73 6b  nsigned int mask
26d0: 31 20 3d 20 30 78 30 30 30 33 36 31 46 38 3b 0a  1 = 0x000361F8;.
26e0: 20 20 69 66 28 20 63 3c 37 36 38 20 7c 7c 20 63    if( c<768 || c
26f0: 3e 38 31 37 20 29 20 72 65 74 75 72 6e 20 30 3b  >817 ) return 0;
2700: 0a 20 20 72 65 74 75 72 6e 20 28 63 20 3c 20 37  .  return (c < 7
2710: 36 38 2b 33 32 29 20 3f 0a 20 20 20 20 20 20 28  68+32) ?.      (
2720: 6d 61 73 6b 30 20 26 20 28 31 20 3c 3c 20 28 63  mask0 & (1 << (c
2730: 2d 37 36 38 29 29 29 20 3a 0a 20 20 20 20 20 20  -768))) :.      
2740: 28 6d 61 73 6b 31 20 26 20 28 31 20 3c 3c 20 28  (mask1 & (1 << (
2750: 63 2d 37 36 38 2d 33 32 29 29 29 3b 0a 7d 0a 0a  c-768-32)));.}..
2760: 0a 2f 2a 0a 2a 2a 20 49 6e 74 65 72 70 72 65 74  ./*.** Interpret
2770: 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 61 73   the argument as
2780: 20 61 20 75 6e 69 63 6f 64 65 20 63 6f 64 65 70   a unicode codep
2790: 6f 69 6e 74 2e 20 49 66 20 74 68 65 20 63 6f 64  oint. If the cod
27a0: 65 70 6f 69 6e 74 0a 2a 2a 20 69 73 20 61 6e 20  epoint.** is an 
27b0: 75 70 70 65 72 20 63 61 73 65 20 63 68 61 72 61  upper case chara
27c0: 63 74 65 72 20 74 68 61 74 20 68 61 73 20 61 20  cter that has a 
27d0: 6c 6f 77 65 72 20 63 61 73 65 20 65 71 75 69 76  lower case equiv
27e0: 61 6c 65 6e 74 2c 0a 2a 2a 20 72 65 74 75 72 6e  alent,.** return
27f0: 20 74 68 65 20 63 6f 64 65 70 6f 69 6e 74 20 63   the codepoint c
2800: 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20  orresponding to 
2810: 74 68 65 20 6c 6f 77 65 72 20 63 61 73 65 20 76  the lower case v
2820: 65 72 73 69 6f 6e 2e 0a 2a 2a 20 4f 74 68 65 72  ersion..** Other
2830: 77 69 73 65 2c 20 72 65 74 75 72 6e 20 61 20 63  wise, return a c
2840: 6f 70 79 20 6f 66 20 74 68 65 20 61 72 67 75 6d  opy of the argum
2850: 65 6e 74 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 72  ent..**.** The r
2860: 65 73 75 6c 74 73 20 61 72 65 20 75 6e 64 65 66  esults are undef
2870: 69 6e 65 64 20 69 66 20 74 68 65 20 76 61 6c 75  ined if the valu
2880: 65 20 70 61 73 73 65 64 20 74 6f 20 74 68 69 73  e passed to this
2890: 20 66 75 6e 63 74 69 6f 6e 0a 2a 2a 20 69 73 20   function.** is 
28a0: 6c 65 73 73 20 74 68 61 6e 20 7a 65 72 6f 2e 0a  less than zero..
28b0: 2a 2f 0a 69 6e 74 20 73 71 6c 69 74 65 33 46 74  */.int sqlite3Ft
28c0: 73 55 6e 69 63 6f 64 65 46 6f 6c 64 28 69 6e 74  sUnicodeFold(int
28d0: 20 63 2c 20 69 6e 74 20 62 52 65 6d 6f 76 65 44   c, int bRemoveD
28e0: 69 61 63 72 69 74 69 63 29 7b 0a 20 20 2f 2a 20  iacritic){.  /* 
28f0: 45 61 63 68 20 65 6e 74 72 79 20 69 6e 20 74 68  Each entry in th
2900: 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 72 72 61  e following arra
2910: 79 20 64 65 66 69 6e 65 73 20 61 20 72 75 6c 65  y defines a rule
2920: 20 66 6f 72 20 66 6f 6c 64 69 6e 67 20 61 20 72   for folding a r
2930: 61 6e 67 65 0a 20 20 2a 2a 20 6f 66 20 63 6f 64  ange.  ** of cod
2940: 65 70 6f 69 6e 74 73 20 74 6f 20 6c 6f 77 65 72  epoints to lower
2950: 20 63 61 73 65 2e 20 54 68 65 20 72 75 6c 65 20   case. The rule 
2960: 61 70 70 6c 69 65 73 20 74 6f 20 61 20 72 61 6e  applies to a ran
2970: 67 65 20 6f 66 20 6e 52 61 6e 67 65 0a 20 20 2a  ge of nRange.  *
2980: 2a 20 63 6f 64 65 70 6f 69 6e 74 73 20 73 74 61  * codepoints sta
2990: 72 74 69 6e 67 20 61 74 20 63 6f 64 65 70 6f 69  rting at codepoi
29a0: 6e 74 20 69 43 6f 64 65 2e 0a 20 20 2a 2a 0a 20  nt iCode..  **. 
29b0: 20 2a 2a 20 49 66 20 74 68 65 20 6c 65 61 73 74   ** If the least
29c0: 20 73 69 67 6e 69 66 69 63 61 6e 74 20 62 69 74   significant bit
29d0: 20 69 6e 20 66 6c 61 67 73 20 69 73 20 63 6c 65   in flags is cle
29e0: 61 72 2c 20 74 68 65 6e 20 74 68 65 20 72 75 6c  ar, then the rul
29f0: 65 20 61 70 70 6c 69 65 73 0a 20 20 2a 2a 20 74  e applies.  ** t
2a00: 6f 20 61 6c 6c 20 6e 52 61 6e 67 65 20 63 6f 64  o all nRange cod
2a10: 65 70 6f 69 6e 74 73 20 28 69 2e 65 2e 20 61 6c  epoints (i.e. al
2a20: 6c 20 6e 52 61 6e 67 65 20 63 6f 64 65 70 6f 69  l nRange codepoi
2a30: 6e 74 73 20 61 72 65 20 75 70 70 65 72 20 63 61  nts are upper ca
2a40: 73 65 20 61 6e 64 0a 20 20 2a 2a 20 6e 65 65 64  se and.  ** need
2a50: 20 74 6f 20 62 65 20 66 6f 6c 64 65 64 29 2e 20   to be folded). 
2a60: 4f 72 2c 20 69 66 20 69 74 20 69 73 20 73 65 74  Or, if it is set
2a70: 2c 20 74 68 65 6e 20 74 68 65 20 72 75 6c 65 20  , then the rule 
2a80: 6f 6e 6c 79 20 61 70 70 6c 69 65 73 20 74 6f 0a  only applies to.
2a90: 20 20 2a 2a 20 65 76 65 72 79 20 73 65 63 6f 6e    ** every secon
2aa0: 64 20 63 6f 64 65 70 6f 69 6e 74 20 69 6e 20 74  d codepoint in t
2ab0: 68 65 20 72 61 6e 67 65 2c 20 73 74 61 72 74 69  he range, starti
2ac0: 6e 67 20 77 69 74 68 20 63 6f 64 65 70 6f 69 6e  ng with codepoin
2ad0: 74 20 43 2e 0a 20 20 2a 2a 0a 20 20 2a 2a 20 54  t C..  **.  ** T
2ae0: 68 65 20 37 20 6d 6f 73 74 20 73 69 67 6e 69 66  he 7 most signif
2af0: 69 63 61 6e 74 20 62 69 74 73 20 69 6e 20 66 6c  icant bits in fl
2b00: 61 67 73 20 61 72 65 20 61 6e 20 69 6e 64 65 78  ags are an index
2b10: 20 69 6e 74 6f 20 74 68 65 20 61 69 4f 66 66 5b   into the aiOff[
2b20: 5d 0a 20 20 2a 2a 20 61 72 72 61 79 2e 20 49 66  ].  ** array. If
2b30: 20 61 20 73 70 65 63 69 66 69 63 20 63 6f 64 65   a specific code
2b40: 70 6f 69 6e 74 20 43 20 64 6f 65 73 20 72 65 71  point C does req
2b50: 75 69 72 65 20 66 6f 6c 64 69 6e 67 2c 20 74 68  uire folding, th
2b60: 65 6e 20 69 74 73 20 6c 6f 77 65 72 0a 20 20 2a  en its lower.  *
2b70: 2a 20 63 61 73 65 20 65 71 75 69 76 61 6c 65 6e  * case equivalen
2b80: 74 20 69 73 20 28 28 43 20 2b 20 61 69 4f 66 66  t is ((C + aiOff
2b90: 5b 66 6c 61 67 73 3e 3e 31 5d 29 20 26 20 30 78  [flags>>1]) & 0x
2ba0: 46 46 46 46 29 2e 0a 20 20 2a 2a 0a 20 20 2a 2a  FFFF)..  **.  **
2bb0: 20 54 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66   The contents of
2bc0: 20 74 68 69 73 20 61 72 72 61 79 20 61 72 65 20   this array are 
2bd0: 67 65 6e 65 72 61 74 65 64 20 62 79 20 70 61 72  generated by par
2be0: 73 69 6e 67 20 74 68 65 20 43 61 73 65 46 6f 6c  sing the CaseFol
2bf0: 64 69 6e 67 2e 74 78 74 0a 20 20 2a 2a 20 66 69  ding.txt.  ** fi
2c00: 6c 65 20 64 69 73 74 72 69 62 75 74 65 64 20 61  le distributed a
2c10: 73 20 70 61 72 74 20 6f 66 20 74 68 65 20 22 55  s part of the "U
2c20: 6e 69 63 6f 64 65 20 43 68 61 72 61 63 74 65 72  nicode Character
2c30: 20 44 61 74 61 62 61 73 65 22 2e 20 53 65 65 0a   Database". See.
2c40: 20 20 2a 2a 20 68 74 74 70 3a 2f 2f 77 77 77 2e    ** http://www.
2c50: 75 6e 69 63 6f 64 65 2e 6f 72 67 20 66 6f 72 20  unicode.org for 
2c60: 64 65 74 61 69 6c 73 2e 0a 20 20 2a 2f 0a 20 20  details..  */.  
2c70: 73 74 61 74 69 63 20 63 6f 6e 73 74 20 73 74 72  static const str
2c80: 75 63 74 20 54 61 62 6c 65 45 6e 74 72 79 20 7b  uct TableEntry {
2c90: 0a 20 20 20 20 75 6e 73 69 67 6e 65 64 20 73 68  .    unsigned sh
2ca0: 6f 72 74 20 69 43 6f 64 65 3b 0a 20 20 20 20 75  ort iCode;.    u
2cb0: 6e 73 69 67 6e 65 64 20 63 68 61 72 20 66 6c 61  nsigned char fla
2cc0: 67 73 3b 0a 20 20 20 20 75 6e 73 69 67 6e 65 64  gs;.    unsigned
2cd0: 20 63 68 61 72 20 6e 52 61 6e 67 65 3b 0a 20 20   char nRange;.  
2ce0: 7d 20 61 45 6e 74 72 79 5b 5d 20 3d 20 7b 0a 20  } aEntry[] = {. 
2cf0: 20 20 20 7b 36 35 2c 20 31 34 2c 20 32 36 7d 2c     {65, 14, 26},
2d00: 20 20 20 20 20 20 20 20 20 20 7b 31 38 31 2c 20            {181, 
2d10: 36 34 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20  64, 1},         
2d20: 20 7b 31 39 32 2c 20 31 34 2c 20 32 33 7d 2c 0a   {192, 14, 23},.
2d30: 20 20 20 20 7b 32 31 36 2c 20 31 34 2c 20 37 7d      {216, 14, 7}
2d40: 2c 20 20 20 20 20 20 20 20 20 20 7b 32 35 36 2c  ,          {256,
2d50: 20 31 2c 20 34 38 7d 2c 20 20 20 20 20 20 20 20   1, 48},        
2d60: 20 20 7b 33 30 36 2c 20 31 2c 20 36 7d 2c 0a 20    {306, 1, 6},. 
2d70: 20 20 20 7b 33 31 33 2c 20 31 2c 20 31 36 7d 2c     {313, 1, 16},
2d80: 20 20 20 20 20 20 20 20 20 20 7b 33 33 30 2c 20            {330, 
2d90: 31 2c 20 34 36 7d 2c 20 20 20 20 20 20 20 20 20  1, 46},         
2da0: 20 7b 33 37 36 2c 20 31 31 36 2c 20 31 7d 2c 0a   {376, 116, 1},.
2db0: 20 20 20 20 7b 33 37 37 2c 20 31 2c 20 36 7d 2c      {377, 1, 6},
2dc0: 20 20 20 20 20 20 20 20 20 20 20 7b 33 38 33 2c             {383,
2dd0: 20 31 30 34 2c 20 31 7d 2c 20 20 20 20 20 20 20   104, 1},       
2de0: 20 20 7b 33 38 35 2c 20 35 30 2c 20 31 7d 2c 0a    {385, 50, 1},.
2df0: 20 20 20 20 7b 33 38 36 2c 20 31 2c 20 34 7d 2c      {386, 1, 4},
2e00: 20 20 20 20 20 20 20 20 20 20 20 7b 33 39 30 2c             {390,
2e10: 20 34 34 2c 20 31 7d 2c 20 20 20 20 20 20 20 20   44, 1},        
2e20: 20 20 7b 33 39 31 2c 20 30 2c 20 31 7d 2c 0a 20    {391, 0, 1},. 
2e30: 20 20 20 7b 33 39 33 2c 20 34 32 2c 20 32 7d 2c     {393, 42, 2},
2e40: 20 20 20 20 20 20 20 20 20 20 7b 33 39 35 2c 20            {395, 
2e50: 30 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 20  0, 1},          
2e60: 20 7b 33 39 38 2c 20 33 32 2c 20 31 7d 2c 0a 20   {398, 32, 1},. 
2e70: 20 20 20 7b 33 39 39 2c 20 33 38 2c 20 31 7d 2c     {399, 38, 1},
2e80: 20 20 20 20 20 20 20 20 20 20 7b 34 30 30 2c 20            {400, 
2e90: 34 30 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20  40, 1},         
2ea0: 20 7b 34 30 31 2c 20 30 2c 20 31 7d 2c 0a 20 20   {401, 0, 1},.  
2eb0: 20 20 7b 34 30 33 2c 20 34 32 2c 20 31 7d 2c 20    {403, 42, 1}, 
2ec0: 20 20 20 20 20 20 20 20 20 7b 34 30 34 2c 20 34           {404, 4
2ed0: 36 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 20  6, 1},          
2ee0: 7b 34 30 36 2c 20 35 32 2c 20 31 7d 2c 0a 20 20  {406, 52, 1},.  
2ef0: 20 20 7b 34 30 37 2c 20 34 38 2c 20 31 7d 2c 20    {407, 48, 1}, 
2f00: 20 20 20 20 20 20 20 20 20 7b 34 30 38 2c 20 30           {408, 0
2f10: 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 20 20  , 1},           
2f20: 7b 34 31 32 2c 20 35 32 2c 20 31 7d 2c 0a 20 20  {412, 52, 1},.  
2f30: 20 20 7b 34 31 33 2c 20 35 34 2c 20 31 7d 2c 20    {413, 54, 1}, 
2f40: 20 20 20 20 20 20 20 20 20 7b 34 31 35 2c 20 35           {415, 5
2f50: 36 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 20  6, 1},          
2f60: 7b 34 31 36 2c 20 31 2c 20 36 7d 2c 0a 20 20 20  {416, 1, 6},.   
2f70: 20 7b 34 32 32 2c 20 36 30 2c 20 31 7d 2c 20 20   {422, 60, 1},  
2f80: 20 20 20 20 20 20 20 20 7b 34 32 33 2c 20 30 2c          {423, 0,
2f90: 20 31 7d 2c 20 20 20 20 20 20 20 20 20 20 20 7b   1},           {
2fa0: 34 32 35 2c 20 36 30 2c 20 31 7d 2c 0a 20 20 20  425, 60, 1},.   
2fb0: 20 7b 34 32 38 2c 20 30 2c 20 31 7d 2c 20 20 20   {428, 0, 1},   
2fc0: 20 20 20 20 20 20 20 20 7b 34 33 30 2c 20 36 30          {430, 60
2fd0: 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20 20 7b  , 1},          {
2fe0: 34 33 31 2c 20 30 2c 20 31 7d 2c 0a 20 20 20 20  431, 0, 1},.    
2ff0: 7b 34 33 33 2c 20 35 38 2c 20 32 7d 2c 20 20 20  {433, 58, 2},   
3000: 20 20 20 20 20 20 20 7b 34 33 35 2c 20 31 2c 20         {435, 1, 
3010: 34 7d 2c 20 20 20 20 20 20 20 20 20 20 20 7b 34  4},           {4
3020: 33 39 2c 20 36 32 2c 20 31 7d 2c 0a 20 20 20 20  39, 62, 1},.    
3030: 7b 34 34 30 2c 20 30 2c 20 31 7d 2c 20 20 20 20  {440, 0, 1},    
3040: 20 20 20 20 20 20 20 7b 34 34 34 2c 20 30 2c 20         {444, 0, 
3050: 31 7d 2c 20 20 20 20 20 20 20 20 20 20 20 7b 34  1},           {4
3060: 35 32 2c 20 32 2c 20 31 7d 2c 0a 20 20 20 20 7b  52, 2, 1},.    {
3070: 34 35 33 2c 20 30 2c 20 31 7d 2c 20 20 20 20 20  453, 0, 1},     
3080: 20 20 20 20 20 20 7b 34 35 35 2c 20 32 2c 20 31        {455, 2, 1
3090: 7d 2c 20 20 20 20 20 20 20 20 20 20 20 7b 34 35  },           {45
30a0: 36 2c 20 30 2c 20 31 7d 2c 0a 20 20 20 20 7b 34  6, 0, 1},.    {4
30b0: 35 38 2c 20 32 2c 20 31 7d 2c 20 20 20 20 20 20  58, 2, 1},      
30c0: 20 20 20 20 20 7b 34 35 39 2c 20 31 2c 20 31 38       {459, 1, 18
30d0: 7d 2c 20 20 20 20 20 20 20 20 20 20 7b 34 37 38  },          {478
30e0: 2c 20 31 2c 20 31 38 7d 2c 0a 20 20 20 20 7b 34  , 1, 18},.    {4
30f0: 39 37 2c 20 32 2c 20 31 7d 2c 20 20 20 20 20 20  97, 2, 1},      
3100: 20 20 20 20 20 7b 34 39 38 2c 20 31 2c 20 34 7d       {498, 1, 4}
3110: 2c 20 20 20 20 20 20 20 20 20 20 20 7b 35 30 32  ,           {502
3120: 2c 20 31 32 32 2c 20 31 7d 2c 0a 20 20 20 20 7b  , 122, 1},.    {
3130: 35 30 33 2c 20 31 33 34 2c 20 31 7d 2c 20 20 20  503, 134, 1},   
3140: 20 20 20 20 20 20 7b 35 30 34 2c 20 31 2c 20 34        {504, 1, 4
3150: 30 7d 2c 20 20 20 20 20 20 20 20 20 20 7b 35 34  0},          {54
3160: 34 2c 20 31 31 30 2c 20 31 7d 2c 0a 20 20 20 20  4, 110, 1},.    
3170: 7b 35 34 36 2c 20 31 2c 20 31 38 7d 2c 20 20 20  {546, 1, 18},   
3180: 20 20 20 20 20 20 20 7b 35 37 30 2c 20 37 30 2c         {570, 70,
3190: 20 31 7d 2c 20 20 20 20 20 20 20 20 20 20 7b 35   1},          {5
31a0: 37 31 2c 20 30 2c 20 31 7d 2c 0a 20 20 20 20 7b  71, 0, 1},.    {
31b0: 35 37 33 2c 20 31 30 38 2c 20 31 7d 2c 20 20 20  573, 108, 1},   
31c0: 20 20 20 20 20 20 7b 35 37 34 2c 20 36 38 2c 20        {574, 68, 
31d0: 31 7d 2c 20 20 20 20 20 20 20 20 20 20 7b 35 37  1},          {57
31e0: 37 2c 20 30 2c 20 31 7d 2c 0a 20 20 20 20 7b 35  7, 0, 1},.    {5
31f0: 37 39 2c 20 31 30 36 2c 20 31 7d 2c 20 20 20 20  79, 106, 1},    
3200: 20 20 20 20 20 7b 35 38 30 2c 20 32 38 2c 20 31       {580, 28, 1
3210: 7d 2c 20 20 20 20 20 20 20 20 20 20 7b 35 38 31  },          {581
3220: 2c 20 33 30 2c 20 31 7d 2c 0a 20 20 20 20 7b 35  , 30, 1},.    {5
3230: 38 32 2c 20 31 2c 20 31 30 7d 2c 20 20 20 20 20  82, 1, 10},     
3240: 20 20 20 20 20 7b 38 33 37 2c 20 33 36 2c 20 31       {837, 36, 1
3250: 7d 2c 20 20 20 20 20 20 20 20 20 20 7b 38 38 30  },          {880
3260: 2c 20 31 2c 20 34 7d 2c 0a 20 20 20 20 7b 38 38  , 1, 4},.    {88
3270: 36 2c 20 30 2c 20 31 7d 2c 20 20 20 20 20 20 20  6, 0, 1},       
3280: 20 20 20 20 7b 39 30 32 2c 20 31 38 2c 20 31 7d      {902, 18, 1}
3290: 2c 20 20 20 20 20 20 20 20 20 20 7b 39 30 34 2c  ,          {904,
32a0: 20 31 36 2c 20 33 7d 2c 0a 20 20 20 20 7b 39 30   16, 3},.    {90
32b0: 38 2c 20 32 36 2c 20 31 7d 2c 20 20 20 20 20 20  8, 26, 1},      
32c0: 20 20 20 20 7b 39 31 30 2c 20 32 34 2c 20 32 7d      {910, 24, 2}
32d0: 2c 20 20 20 20 20 20 20 20 20 20 7b 39 31 33 2c  ,          {913,
32e0: 20 31 34 2c 20 31 37 7d 2c 0a 20 20 20 20 7b 39   14, 17},.    {9
32f0: 33 31 2c 20 31 34 2c 20 39 7d 2c 20 20 20 20 20  31, 14, 9},     
3300: 20 20 20 20 20 7b 39 36 32 2c 20 30 2c 20 31 7d       {962, 0, 1}
3310: 2c 20 20 20 20 20 20 20 20 20 20 20 7b 39 37 35  ,           {975
3320: 2c 20 34 2c 20 31 7d 2c 0a 20 20 20 20 7b 39 37  , 4, 1},.    {97
3330: 36 2c 20 31 34 30 2c 20 31 7d 2c 20 20 20 20 20  6, 140, 1},     
3340: 20 20 20 20 7b 39 37 37 2c 20 31 34 32 2c 20 31      {977, 142, 1
3350: 7d 2c 20 20 20 20 20 20 20 20 20 7b 39 38 31 2c  },         {981,
3360: 20 31 34 36 2c 20 31 7d 2c 0a 20 20 20 20 7b 39   146, 1},.    {9
3370: 38 32 2c 20 31 34 34 2c 20 31 7d 2c 20 20 20 20  82, 144, 1},    
3380: 20 20 20 20 20 7b 39 38 34 2c 20 31 2c 20 32 34       {984, 1, 24
3390: 7d 2c 20 20 20 20 20 20 20 20 20 20 7b 31 30 30  },          {100
33a0: 38 2c 20 31 33 36 2c 20 31 7d 2c 0a 20 20 20 20  8, 136, 1},.    
33b0: 7b 31 30 30 39 2c 20 31 33 38 2c 20 31 7d 2c 20  {1009, 138, 1}, 
33c0: 20 20 20 20 20 20 20 7b 31 30 31 32 2c 20 31 33         {1012, 13
33d0: 30 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 7b 31  0, 1},        {1
33e0: 30 31 33 2c 20 31 32 38 2c 20 31 7d 2c 0a 20 20  013, 128, 1},.  
33f0: 20 20 7b 31 30 31 35 2c 20 30 2c 20 31 7d 2c 20    {1015, 0, 1}, 
3400: 20 20 20 20 20 20 20 20 20 7b 31 30 31 37 2c 20           {1017, 
3410: 31 35 32 2c 20 31 7d 2c 20 20 20 20 20 20 20 20  152, 1},        
3420: 7b 31 30 31 38 2c 20 30 2c 20 31 7d 2c 0a 20 20  {1018, 0, 1},.  
3430: 20 20 7b 31 30 32 31 2c 20 31 31 30 2c 20 33 7d    {1021, 110, 3}
3440: 2c 20 20 20 20 20 20 20 20 7b 31 30 32 34 2c 20  ,        {1024, 
3450: 33 34 2c 20 31 36 7d 2c 20 20 20 20 20 20 20 20  34, 16},        
3460: 7b 31 30 34 30 2c 20 31 34 2c 20 33 32 7d 2c 0a  {1040, 14, 32},.
3470: 20 20 20 20 7b 31 31 32 30 2c 20 31 2c 20 33 34      {1120, 1, 34
3480: 7d 2c 20 20 20 20 20 20 20 20 20 7b 31 31 36 32  },         {1162
3490: 2c 20 31 2c 20 35 34 7d 2c 20 20 20 20 20 20 20  , 1, 54},       
34a0: 20 20 7b 31 32 31 36 2c 20 36 2c 20 31 7d 2c 0a    {1216, 6, 1},.
34b0: 20 20 20 20 7b 31 32 31 37 2c 20 31 2c 20 31 34      {1217, 1, 14
34c0: 7d 2c 20 20 20 20 20 20 20 20 20 7b 31 32 33 32  },         {1232
34d0: 2c 20 31 2c 20 38 38 7d 2c 20 20 20 20 20 20 20  , 1, 88},       
34e0: 20 20 7b 31 33 32 39 2c 20 32 32 2c 20 33 38 7d    {1329, 22, 38}
34f0: 2c 0a 20 20 20 20 7b 34 32 35 36 2c 20 36 36 2c  ,.    {4256, 66,
3500: 20 33 38 7d 2c 20 20 20 20 20 20 20 20 7b 34 32   38},        {42
3510: 39 35 2c 20 36 36 2c 20 31 7d 2c 20 20 20 20 20  95, 66, 1},     
3520: 20 20 20 20 7b 34 33 30 31 2c 20 36 36 2c 20 31      {4301, 66, 1
3530: 7d 2c 0a 20 20 20 20 7b 37 36 38 30 2c 20 31 2c  },.    {7680, 1,
3540: 20 31 35 30 7d 2c 20 20 20 20 20 20 20 20 7b 37   150},        {7
3550: 38 33 35 2c 20 31 33 32 2c 20 31 7d 2c 20 20 20  835, 132, 1},   
3560: 20 20 20 20 20 7b 37 38 33 38 2c 20 39 36 2c 20       {7838, 96, 
3570: 31 7d 2c 0a 20 20 20 20 7b 37 38 34 30 2c 20 31  1},.    {7840, 1
3580: 2c 20 39 36 7d 2c 20 20 20 20 20 20 20 20 20 7b  , 96},         {
3590: 37 39 34 34 2c 20 31 35 30 2c 20 38 7d 2c 20 20  7944, 150, 8},  
35a0: 20 20 20 20 20 20 7b 37 39 36 30 2c 20 31 35 30        {7960, 150
35b0: 2c 20 36 7d 2c 0a 20 20 20 20 7b 37 39 37 36 2c  , 6},.    {7976,
35c0: 20 31 35 30 2c 20 38 7d 2c 20 20 20 20 20 20 20   150, 8},       
35d0: 20 7b 37 39 39 32 2c 20 31 35 30 2c 20 38 7d 2c   {7992, 150, 8},
35e0: 20 20 20 20 20 20 20 20 7b 38 30 30 38 2c 20 31          {8008, 1
35f0: 35 30 2c 20 36 7d 2c 0a 20 20 20 20 7b 38 30 32  50, 6},.    {802
3600: 35 2c 20 31 35 31 2c 20 38 7d 2c 20 20 20 20 20  5, 151, 8},     
3610: 20 20 20 7b 38 30 34 30 2c 20 31 35 30 2c 20 38     {8040, 150, 8
3620: 7d 2c 20 20 20 20 20 20 20 20 7b 38 30 37 32 2c  },        {8072,
3630: 20 31 35 30 2c 20 38 7d 2c 0a 20 20 20 20 7b 38   150, 8},.    {8
3640: 30 38 38 2c 20 31 35 30 2c 20 38 7d 2c 20 20 20  088, 150, 8},   
3650: 20 20 20 20 20 7b 38 31 30 34 2c 20 31 35 30 2c       {8104, 150,
3660: 20 38 7d 2c 20 20 20 20 20 20 20 20 7b 38 31 32   8},        {812
3670: 30 2c 20 31 35 30 2c 20 32 7d 2c 0a 20 20 20 20  0, 150, 2},.    
3680: 7b 38 31 32 32 2c 20 31 32 36 2c 20 32 7d 2c 20  {8122, 126, 2}, 
3690: 20 20 20 20 20 20 20 7b 38 31 32 34 2c 20 31 34         {8124, 14
36a0: 38 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 7b 38  8, 1},        {8
36b0: 31 32 36 2c 20 31 30 30 2c 20 31 7d 2c 0a 20 20  126, 100, 1},.  
36c0: 20 20 7b 38 31 33 36 2c 20 31 32 34 2c 20 34 7d    {8136, 124, 4}
36d0: 2c 20 20 20 20 20 20 20 20 7b 38 31 34 30 2c 20  ,        {8140, 
36e0: 31 34 38 2c 20 31 7d 2c 20 20 20 20 20 20 20 20  148, 1},        
36f0: 7b 38 31 35 32 2c 20 31 35 30 2c 20 32 7d 2c 0a  {8152, 150, 2},.
3700: 20 20 20 20 7b 38 31 35 34 2c 20 31 32 30 2c 20      {8154, 120, 
3710: 32 7d 2c 20 20 20 20 20 20 20 20 7b 38 31 36 38  2},        {8168
3720: 2c 20 31 35 30 2c 20 32 7d 2c 20 20 20 20 20 20  , 150, 2},      
3730: 20 20 7b 38 31 37 30 2c 20 31 31 38 2c 20 32 7d    {8170, 118, 2}
3740: 2c 0a 20 20 20 20 7b 38 31 37 32 2c 20 31 35 32  ,.    {8172, 152
3750: 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 7b 38 31  , 1},        {81
3760: 38 34 2c 20 31 31 32 2c 20 32 7d 2c 20 20 20 20  84, 112, 2},    
3770: 20 20 20 20 7b 38 31 38 36 2c 20 31 31 34 2c 20      {8186, 114, 
3780: 32 7d 2c 0a 20 20 20 20 7b 38 31 38 38 2c 20 31  2},.    {8188, 1
3790: 34 38 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 7b  48, 1},        {
37a0: 38 34 38 36 2c 20 39 38 2c 20 31 7d 2c 20 20 20  8486, 98, 1},   
37b0: 20 20 20 20 20 20 7b 38 34 39 30 2c 20 39 32 2c        {8490, 92,
37c0: 20 31 7d 2c 0a 20 20 20 20 7b 38 34 39 31 2c 20   1},.    {8491, 
37d0: 39 34 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20  94, 1},         
37e0: 7b 38 34 39 38 2c 20 31 32 2c 20 31 7d 2c 20 20  {8498, 12, 1},  
37f0: 20 20 20 20 20 20 20 7b 38 35 34 34 2c 20 38 2c         {8544, 8,
3800: 20 31 36 7d 2c 0a 20 20 20 20 7b 38 35 37 39 2c   16},.    {8579,
3810: 20 30 2c 20 31 7d 2c 20 20 20 20 20 20 20 20 20   0, 1},         
3820: 20 7b 39 33 39 38 2c 20 31 30 2c 20 32 36 7d 2c   {9398, 10, 26},
3830: 20 20 20 20 20 20 20 20 7b 31 31 32 36 34 2c 20          {11264, 
3840: 32 32 2c 20 34 37 7d 2c 0a 20 20 20 20 7b 31 31  22, 47},.    {11
3850: 33 36 30 2c 20 30 2c 20 31 7d 2c 20 20 20 20 20  360, 0, 1},     
3860: 20 20 20 20 7b 31 31 33 36 32 2c 20 38 38 2c 20      {11362, 88, 
3870: 31 7d 2c 20 20 20 20 20 20 20 20 7b 31 31 33 36  1},        {1136
3880: 33 2c 20 31 30 32 2c 20 31 7d 2c 0a 20 20 20 20  3, 102, 1},.    
3890: 7b 31 31 33 36 34 2c 20 39 30 2c 20 31 7d 2c 20  {11364, 90, 1}, 
38a0: 20 20 20 20 20 20 20 7b 31 31 33 36 37 2c 20 31         {11367, 1
38b0: 2c 20 36 7d 2c 20 20 20 20 20 20 20 20 20 7b 31  , 6},         {1
38c0: 31 33 37 33 2c 20 38 34 2c 20 31 7d 2c 0a 20 20  1373, 84, 1},.  
38d0: 20 20 7b 31 31 33 37 34 2c 20 38 36 2c 20 31 7d    {11374, 86, 1}
38e0: 2c 20 20 20 20 20 20 20 20 7b 31 31 33 37 35 2c  ,        {11375,
38f0: 20 38 30 2c 20 31 7d 2c 20 20 20 20 20 20 20 20   80, 1},        
3900: 7b 31 31 33 37 36 2c 20 38 32 2c 20 31 7d 2c 0a  {11376, 82, 1},.
3910: 20 20 20 20 7b 31 31 33 37 38 2c 20 30 2c 20 31      {11378, 0, 1
3920: 7d 2c 20 20 20 20 20 20 20 20 20 7b 31 31 33 38  },         {1138
3930: 31 2c 20 30 2c 20 31 7d 2c 20 20 20 20 20 20 20  1, 0, 1},       
3940: 20 20 7b 31 31 33 39 30 2c 20 37 38 2c 20 32 7d    {11390, 78, 2}
3950: 2c 0a 20 20 20 20 7b 31 31 33 39 32 2c 20 31 2c  ,.    {11392, 1,
3960: 20 31 30 30 7d 2c 20 20 20 20 20 20 20 7b 31 31   100},       {11
3970: 34 39 39 2c 20 31 2c 20 34 7d 2c 20 20 20 20 20  499, 1, 4},     
3980: 20 20 20 20 7b 31 31 35 30 36 2c 20 30 2c 20 31      {11506, 0, 1
3990: 7d 2c 0a 20 20 20 20 7b 34 32 35 36 30 2c 20 31  },.    {42560, 1
39a0: 2c 20 34 36 7d 2c 20 20 20 20 20 20 20 20 7b 34  , 46},        {4
39b0: 32 36 32 34 2c 20 31 2c 20 32 34 7d 2c 20 20 20  2624, 1, 24},   
39c0: 20 20 20 20 20 7b 34 32 37 38 36 2c 20 31 2c 20       {42786, 1, 
39d0: 31 34 7d 2c 0a 20 20 20 20 7b 34 32 38 30 32 2c  14},.    {42802,
39e0: 20 31 2c 20 36 32 7d 2c 20 20 20 20 20 20 20 20   1, 62},        
39f0: 7b 34 32 38 37 33 2c 20 31 2c 20 34 7d 2c 20 20  {42873, 1, 4},  
3a00: 20 20 20 20 20 20 20 7b 34 32 38 37 37 2c 20 37         {42877, 7
3a10: 36 2c 20 31 7d 2c 0a 20 20 20 20 7b 34 32 38 37  6, 1},.    {4287
3a20: 38 2c 20 31 2c 20 31 30 7d 2c 20 20 20 20 20 20  8, 1, 10},      
3a30: 20 20 7b 34 32 38 39 31 2c 20 30 2c 20 31 7d 2c    {42891, 0, 1},
3a40: 20 20 20 20 20 20 20 20 20 7b 34 32 38 39 33 2c           {42893,
3a50: 20 37 34 2c 20 31 7d 2c 0a 20 20 20 20 7b 34 32   74, 1},.    {42
3a60: 38 39 36 2c 20 31 2c 20 34 7d 2c 20 20 20 20 20  896, 1, 4},     
3a70: 20 20 20 20 7b 34 32 39 31 32 2c 20 31 2c 20 31      {42912, 1, 1
3a80: 30 7d 2c 20 20 20 20 20 20 20 20 7b 34 32 39 32  0},        {4292
3a90: 32 2c 20 37 32 2c 20 31 7d 2c 0a 20 20 20 20 7b  2, 72, 1},.    {
3aa0: 36 35 33 31 33 2c 20 31 34 2c 20 32 36 7d 2c 20  65313, 14, 26}, 
3ab0: 20 20 20 20 20 20 0a 20 20 7d 3b 0a 20 20 73 74        .  };.  st
3ac0: 61 74 69 63 20 63 6f 6e 73 74 20 75 6e 73 69 67  atic const unsig
3ad0: 6e 65 64 20 73 68 6f 72 74 20 61 69 4f 66 66 5b  ned short aiOff[
3ae0: 5d 20 3d 20 7b 0a 20 20 20 31 2c 20 20 20 20 20  ] = {.   1,     
3af0: 32 2c 20 20 20 20 20 38 2c 20 20 20 20 20 31 35  2,     8,     15
3b00: 2c 20 20 20 20 31 36 2c 20 20 20 20 32 36 2c 20  ,    16,    26, 
3b10: 20 20 20 32 38 2c 20 20 20 20 33 32 2c 20 20 20     28,    32,   
3b20: 20 0a 20 20 20 33 37 2c 20 20 20 20 33 38 2c 20   .   37,    38, 
3b30: 20 20 20 34 30 2c 20 20 20 20 34 38 2c 20 20 20     40,    48,   
3b40: 20 36 33 2c 20 20 20 20 36 34 2c 20 20 20 20 36   63,    64,    6
3b50: 39 2c 20 20 20 20 37 31 2c 20 20 20 20 0a 20 20  9,    71,    .  
3b60: 20 37 39 2c 20 20 20 20 38 30 2c 20 20 20 20 31   79,    80,    1
3b70: 31 36 2c 20 20 20 32 30 32 2c 20 20 20 32 30 33  16,   202,   203
3b80: 2c 20 20 20 32 30 35 2c 20 20 20 32 30 36 2c 20  ,   205,   206, 
3b90: 20 20 32 30 37 2c 20 20 20 0a 20 20 20 32 30 39    207,   .   209
3ba0: 2c 20 20 20 32 31 30 2c 20 20 20 32 31 31 2c 20  ,   210,   211, 
3bb0: 20 20 32 31 33 2c 20 20 20 32 31 34 2c 20 20 20    213,   214,   
3bc0: 32 31 37 2c 20 20 20 32 31 38 2c 20 20 20 32 31  217,   218,   21
3bd0: 39 2c 20 20 20 0a 20 20 20 37 37 35 2c 20 20 20  9,   .   775,   
3be0: 37 32 36 34 2c 20 20 31 30 37 39 32 2c 20 31 30  7264,  10792, 10
3bf0: 37 39 35 2c 20 32 33 32 32 38 2c 20 32 33 32 35  795, 23228, 2325
3c00: 36 2c 20 33 30 32 30 34 2c 20 35 34 37 32 31 2c  6, 30204, 54721,
3c10: 20 0a 20 20 20 35 34 37 35 33 2c 20 35 34 37 35   .   54753, 5475
3c20: 34 2c 20 35 34 37 35 36 2c 20 35 34 37 38 37 2c  4, 54756, 54787,
3c30: 20 35 34 37 39 33 2c 20 35 34 38 30 39 2c 20 35   54793, 54809, 5
3c40: 37 31 35 33 2c 20 35 37 32 37 34 2c 20 0a 20 20  7153, 57274, .  
3c50: 20 35 37 39 32 31 2c 20 35 38 30 31 39 2c 20 35   57921, 58019, 5
3c60: 38 33 36 33 2c 20 36 31 37 32 32 2c 20 36 35 32  8363, 61722, 652
3c70: 36 38 2c 20 36 35 33 34 31 2c 20 36 35 33 37 33  68, 65341, 65373
3c80: 2c 20 36 35 34 30 36 2c 20 0a 20 20 20 36 35 34  , 65406, .   654
3c90: 30 38 2c 20 36 35 34 31 30 2c 20 36 35 34 31 35  08, 65410, 65415
3ca0: 2c 20 36 35 34 32 34 2c 20 36 35 34 33 36 2c 20  , 65424, 65436, 
3cb0: 36 35 34 33 39 2c 20 36 35 34 35 30 2c 20 36 35  65439, 65450, 65
3cc0: 34 36 32 2c 20 0a 20 20 20 36 35 34 37 32 2c 20  462, .   65472, 
3cd0: 36 35 34 37 36 2c 20 36 35 34 37 38 2c 20 36 35  65476, 65478, 65
3ce0: 34 38 30 2c 20 36 35 34 38 32 2c 20 36 35 34 38  480, 65482, 6548
3cf0: 38 2c 20 36 35 35 30 36 2c 20 36 35 35 31 31 2c  8, 65506, 65511,
3d00: 20 0a 20 20 20 36 35 35 31 34 2c 20 36 35 35 32   .   65514, 6552
3d10: 31 2c 20 36 35 35 32 37 2c 20 36 35 35 32 38 2c  1, 65527, 65528,
3d20: 20 36 35 35 32 39 2c 20 0a 20 20 7d 3b 0a 0a 20   65529, .  };.. 
3d30: 20 69 6e 74 20 72 65 74 20 3d 20 63 3b 0a 0a 20   int ret = c;.. 
3d40: 20 61 73 73 65 72 74 28 20 73 69 7a 65 6f 66 28   assert( sizeof(
3d50: 75 6e 73 69 67 6e 65 64 20 73 68 6f 72 74 29 3d  unsigned short)=
3d60: 3d 32 20 26 26 20 73 69 7a 65 6f 66 28 75 6e 73  =2 && sizeof(uns
3d70: 69 67 6e 65 64 20 63 68 61 72 29 3d 3d 31 20 29  igned char)==1 )
3d80: 3b 0a 0a 20 20 69 66 28 20 63 3c 31 32 38 20 29  ;..  if( c<128 )
3d90: 7b 0a 20 20 20 20 69 66 28 20 63 3e 3d 27 41 27  {.    if( c>='A'
3da0: 20 26 26 20 63 3c 3d 27 5a 27 20 29 20 72 65 74   && c<='Z' ) ret
3db0: 20 3d 20 63 20 2b 20 28 27 61 27 20 2d 20 27 41   = c + ('a' - 'A
3dc0: 27 29 3b 0a 20 20 7d 65 6c 73 65 20 69 66 28 20  ');.  }else if( 
3dd0: 63 3c 36 35 35 33 36 20 29 7b 0a 20 20 20 20 63  c<65536 ){.    c
3de0: 6f 6e 73 74 20 73 74 72 75 63 74 20 54 61 62 6c  onst struct Tabl
3df0: 65 45 6e 74 72 79 20 2a 70 3b 0a 20 20 20 20 69  eEntry *p;.    i
3e00: 6e 74 20 69 48 69 20 3d 20 73 69 7a 65 6f 66 28  nt iHi = sizeof(
3e10: 61 45 6e 74 72 79 29 2f 73 69 7a 65 6f 66 28 61  aEntry)/sizeof(a
3e20: 45 6e 74 72 79 5b 30 5d 29 20 2d 20 31 3b 0a 20  Entry[0]) - 1;. 
3e30: 20 20 20 69 6e 74 20 69 4c 6f 20 3d 20 30 3b 0a     int iLo = 0;.
3e40: 20 20 20 20 69 6e 74 20 69 52 65 73 20 3d 20 2d      int iRes = -
3e50: 31 3b 0a 0a 20 20 20 20 61 73 73 65 72 74 28 20  1;..    assert( 
3e60: 63 3e 61 45 6e 74 72 79 5b 30 5d 2e 69 43 6f 64  c>aEntry[0].iCod
3e70: 65 20 29 3b 0a 20 20 20 20 77 68 69 6c 65 28 20  e );.    while( 
3e80: 69 48 69 3e 3d 69 4c 6f 20 29 7b 0a 20 20 20 20  iHi>=iLo ){.    
3e90: 20 20 69 6e 74 20 69 54 65 73 74 20 3d 20 28 69    int iTest = (i
3ea0: 48 69 20 2b 20 69 4c 6f 29 20 2f 20 32 3b 0a 20  Hi + iLo) / 2;. 
3eb0: 20 20 20 20 20 69 6e 74 20 63 6d 70 20 3d 20 28       int cmp = (
3ec0: 63 20 2d 20 61 45 6e 74 72 79 5b 69 54 65 73 74  c - aEntry[iTest
3ed0: 5d 2e 69 43 6f 64 65 29 3b 0a 20 20 20 20 20 20  ].iCode);.      
3ee0: 69 66 28 20 63 6d 70 3e 3d 30 20 29 7b 0a 20 20  if( cmp>=0 ){.  
3ef0: 20 20 20 20 20 20 69 52 65 73 20 3d 20 69 54 65        iRes = iTe
3f00: 73 74 3b 0a 20 20 20 20 20 20 20 20 69 4c 6f 20  st;.        iLo 
3f10: 3d 20 69 54 65 73 74 2b 31 3b 0a 20 20 20 20 20  = iTest+1;.     
3f20: 20 7d 65 6c 73 65 7b 0a 20 20 20 20 20 20 20 20   }else{.        
3f30: 69 48 69 20 3d 20 69 54 65 73 74 2d 31 3b 0a 20  iHi = iTest-1;. 
3f40: 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20       }.    }..  
3f50: 20 20 61 73 73 65 72 74 28 20 69 52 65 73 3e 3d    assert( iRes>=
3f60: 30 20 26 26 20 63 3e 3d 61 45 6e 74 72 79 5b 69  0 && c>=aEntry[i
3f70: 52 65 73 5d 2e 69 43 6f 64 65 20 29 3b 0a 20 20  Res].iCode );.  
3f80: 20 20 70 20 3d 20 26 61 45 6e 74 72 79 5b 69 52    p = &aEntry[iR
3f90: 65 73 5d 3b 0a 20 20 20 20 69 66 28 20 63 3c 28  es];.    if( c<(
3fa0: 70 2d 3e 69 43 6f 64 65 20 2b 20 70 2d 3e 6e 52  p->iCode + p->nR
3fb0: 61 6e 67 65 29 20 26 26 20 30 3d 3d 28 30 78 30  ange) && 0==(0x0
3fc0: 31 20 26 20 70 2d 3e 66 6c 61 67 73 20 26 20 28  1 & p->flags & (
3fd0: 70 2d 3e 69 43 6f 64 65 20 5e 20 63 29 29 20 29  p->iCode ^ c)) )
3fe0: 7b 0a 20 20 20 20 20 20 72 65 74 20 3d 20 28 63  {.      ret = (c
3ff0: 20 2b 20 28 61 69 4f 66 66 5b 70 2d 3e 66 6c 61   + (aiOff[p->fla
4000: 67 73 3e 3e 31 5d 29 29 20 26 20 30 78 30 30 30  gs>>1])) & 0x000
4010: 30 46 46 46 46 3b 0a 20 20 20 20 20 20 61 73 73  0FFFF;.      ass
4020: 65 72 74 28 20 72 65 74 3e 30 20 29 3b 0a 20 20  ert( ret>0 );.  
4030: 20 20 7d 0a 0a 20 20 20 20 69 66 28 20 62 52 65    }..    if( bRe
4040: 6d 6f 76 65 44 69 61 63 72 69 74 69 63 20 29 20  moveDiacritic ) 
4050: 72 65 74 20 3d 20 72 65 6d 6f 76 65 5f 64 69 61  ret = remove_dia
4060: 63 72 69 74 69 63 28 72 65 74 29 3b 0a 20 20 7d  critic(ret);.  }
4070: 0a 20 20 0a 20 20 65 6c 73 65 20 69 66 28 20 63  .  .  else if( c
4080: 3e 3d 36 36 35 36 30 20 26 26 20 63 3c 36 36 36  >=66560 && c<666
4090: 30 30 20 29 7b 0a 20 20 20 20 72 65 74 20 3d 20  00 ){.    ret = 
40a0: 63 20 2b 20 34 30 3b 0a 20 20 7d 0a 0a 20 20 72  c + 40;.  }..  r
40b0: 65 74 75 72 6e 20 72 65 74 3b 0a 7d 0a 23 65 6e  eturn ret;.}.#en
40c0: 64 69 66 20 2f 2a 20 64 65 66 69 6e 65 64 28 53  dif /* defined(S
40d0: 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53  QLITE_ENABLE_FTS
40e0: 33 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 53 51  3) || defined(SQ
40f0: 4c 49 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 34  LITE_ENABLE_FTS4
4100: 29 20 2a 2f 0a 23 65 6e 64 69 66 20 2f 2a 20 21  ) */.#endif /* !
4110: 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 44  defined(SQLITE_D
4120: 49 53 41 42 4c 45 5f 46 54 53 33 5f 55 4e 49 43  ISABLE_FTS3_UNIC
4130: 4f 44 45 29 20 2a 2f 0a                          ODE) */.