/ Hex Artifact Content
Login

Artifact 0fd1a5bcb5dcc76a639bd26f27e2641034a508a3:


0000: 23 20 32 30 31 34 20 4a 75 6e 65 20 31 37 0a 23  # 2014 June 17.#
0010: 0a 23 20 54 68 65 20 61 75 74 68 6f 72 20 64 69  .# The author di
0020: 73 63 6c 61 69 6d 73 20 63 6f 70 79 72 69 67 68  sclaims copyrigh
0030: 74 20 74 6f 20 74 68 69 73 20 73 6f 75 72 63 65  t to this source
0040: 20 63 6f 64 65 2e 20 20 49 6e 20 70 6c 61 63 65   code.  In place
0050: 20 6f 66 0a 23 20 61 20 6c 65 67 61 6c 20 6e 6f   of.# a legal no
0060: 74 69 63 65 2c 20 68 65 72 65 20 69 73 20 61 20  tice, here is a 
0070: 62 6c 65 73 73 69 6e 67 3a 0a 23 0a 23 20 20 20  blessing:.#.#   
0080: 20 4d 61 79 20 79 6f 75 20 64 6f 20 67 6f 6f 64   May you do good
0090: 20 61 6e 64 20 6e 6f 74 20 65 76 69 6c 2e 0a 23   and not evil..#
00a0: 20 20 20 20 4d 61 79 20 79 6f 75 20 66 69 6e 64      May you find
00b0: 20 66 6f 72 67 69 76 65 6e 65 73 73 20 66 6f 72   forgiveness for
00c0: 20 79 6f 75 72 73 65 6c 66 20 61 6e 64 20 66 6f   yourself and fo
00d0: 72 67 69 76 65 20 6f 74 68 65 72 73 2e 0a 23 20  rgive others..# 
00e0: 20 20 20 4d 61 79 20 79 6f 75 20 73 68 61 72 65     May you share
00f0: 20 66 72 65 65 6c 79 2c 20 6e 65 76 65 72 20 74   freely, never t
0100: 61 6b 69 6e 67 20 6d 6f 72 65 20 74 68 61 6e 20  aking more than 
0110: 79 6f 75 20 67 69 76 65 2e 0a 23 0a 23 2a 2a 2a  you give..#.#***
0120: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
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 0a 23 20 54 68 69 73 20 66 69  ******.# This fi
0170: 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 73 20 72 65  le implements re
0180: 67 72 65 73 73 69 6f 6e 20 74 65 73 74 73 20 66  gression tests f
0190: 6f 72 20 53 51 4c 69 74 65 20 6c 69 62 72 61 72  or SQLite librar
01a0: 79 2e 20 20 54 68 65 0a 23 20 66 6f 63 75 73 20  y.  The.# focus 
01b0: 6f 66 20 74 68 69 73 20 73 63 72 69 70 74 20 69  of this script i
01c0: 73 20 74 65 73 74 69 6e 67 20 74 68 65 20 46 54  s testing the FT
01d0: 53 35 20 6d 6f 64 75 6c 65 2e 0a 23 0a 23 0a 0a  S5 module..#.#..
01e0: 73 6f 75 72 63 65 20 5b 66 69 6c 65 20 6a 6f 69  source [file joi
01f0: 6e 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20  n [file dirname 
0200: 5b 69 6e 66 6f 20 73 63 72 69 70 74 5d 5d 20 66  [info script]] f
0210: 74 73 35 5f 63 6f 6d 6d 6f 6e 2e 74 63 6c 5d 0a  ts5_common.tcl].
0220: 73 65 74 20 74 65 73 74 70 72 65 66 69 78 20 66  set testprefix f
0230: 74 73 35 61 64 0a 0a 23 20 49 66 20 53 51 4c 49  ts5ad..# If SQLI
0240: 54 45 5f 45 4e 41 42 4c 45 5f 46 54 53 35 20 69  TE_ENABLE_FTS5 i
0250: 73 20 64 65 66 69 6e 65 64 2c 20 6f 6d 69 74 20  s defined, omit 
0260: 74 68 69 73 20 66 69 6c 65 2e 0a 69 66 63 61 70  this file..ifcap
0270: 61 62 6c 65 20 21 66 74 73 35 20 7b 0a 20 20 66  able !fts5 {.  f
0280: 69 6e 69 73 68 5f 74 65 73 74 0a 20 20 72 65 74  inish_test.  ret
0290: 75 72 6e 0a 7d 0a 0a 64 6f 5f 65 78 65 63 73 71  urn.}..do_execsq
02a0: 6c 5f 74 65 73 74 20 31 2e 30 20 7b 0a 20 20 43  l_test 1.0 {.  C
02b0: 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54 41  REATE VIRTUAL TA
02c0: 42 4c 45 20 79 79 20 55 53 49 4e 47 20 66 74 73  BLE yy USING fts
02d0: 35 28 78 2c 20 79 29 3b 0a 20 20 49 4e 53 45 52  5(x, y);.  INSER
02e0: 54 20 49 4e 54 4f 20 79 79 20 56 41 4c 55 45 53  T INTO yy VALUES
02f0: 28 27 43 68 61 6e 67 65 73 20 74 68 65 20 72 65  ('Changes the re
0300: 73 75 6c 74 20 74 6f 20 62 65 27 2c 20 27 74 68  sult to be', 'th
0310: 65 20 6c 69 73 74 20 6f 66 20 61 6c 6c 20 6d 61  e list of all ma
0320: 74 63 68 69 6e 67 27 29 3b 0a 20 20 49 4e 53 45  tching');.  INSE
0330: 52 54 20 49 4e 54 4f 20 79 79 20 56 41 4c 55 45  RT INTO yy VALUE
0340: 53 28 27 69 6e 64 69 63 65 73 20 28 6f 72 20 61  S('indices (or a
0350: 6c 6c 20 20 6d 61 74 63 68 69 6e 67 27 2c 20 27  ll  matching', '
0360: 76 61 6c 75 65 73 20 69 66 20 2d 69 6e 6c 69 6e  values if -inlin
0370: 65 20 69 73 27 29 3b 0a 20 20 49 4e 53 45 52 54  e is');.  INSERT
0380: 20 49 4e 54 4f 20 79 79 20 56 41 4c 55 45 53 28   INTO yy VALUES(
0390: 27 73 70 65 63 69 66 69 65 64 20 61 73 20 20 77  'specified as  w
03a0: 65 6c 6c 2e 29 20 49 66 27 2c 20 27 69 6e 64 69  ell.) If', 'indi
03b0: 63 65 73 20 61 72 65 20 72 65 74 75 72 6e 65 64  ces are returned
03c0: 2c 20 74 68 65 27 29 3b 0a 7d 20 7b 7d 0a 0a 66  , the');.} {}..f
03d0: 6f 72 65 61 63 68 20 7b 74 6e 20 6d 61 74 63 68  oreach {tn match
03e0: 20 72 65 73 7d 20 7b 0a 20 20 31 20 7b 63 2a 7d   res} {.  1 {c*}
03f0: 20 7b 31 7d 0a 20 20 32 20 7b 69 2a 7d 20 7b 33   {1}.  2 {i*} {3
0400: 20 32 7d 0a 20 20 33 20 7b 74 2a 7d 20 7b 33 20   2}.  3 {t*} {3 
0410: 31 7d 0a 20 20 34 20 7b 72 2a 7d 20 7b 33 20 31  1}.  4 {r*} {3 1
0420: 7d 0a 7d 20 7b 0a 20 20 64 6f 5f 65 78 65 63 73  }.} {.  do_execs
0430: 71 6c 5f 74 65 73 74 20 31 2e 24 74 6e 20 7b 0a  ql_test 1.$tn {.
0440: 20 20 20 20 53 45 4c 45 43 54 20 72 6f 77 69 64      SELECT rowid
0450: 20 46 52 4f 4d 20 79 79 20 57 48 45 52 45 20 79   FROM yy WHERE y
0460: 79 20 4d 41 54 43 48 20 24 6d 61 74 63 68 20 4f  y MATCH $match O
0470: 52 44 45 52 20 42 59 20 72 6f 77 69 64 20 44 45  RDER BY rowid DE
0480: 53 43 0a 20 20 7d 20 24 72 65 73 0a 7d 0a 0a 66  SC.  } $res.}..f
0490: 6f 72 65 61 63 68 20 7b 74 6e 20 6d 61 74 63 68  oreach {tn match
04a0: 20 72 65 73 7d 20 7b 0a 20 20 35 20 7b 63 2a 7d   res} {.  5 {c*}
04b0: 20 7b 31 7d 0a 20 20 36 20 7b 69 2a 7d 20 7b 32   {1}.  6 {i*} {2
04c0: 20 33 7d 0a 20 20 37 20 7b 74 2a 7d 20 7b 31 20   3}.  7 {t*} {1 
04d0: 33 7d 0a 20 20 38 20 7b 72 2a 7d 20 7b 31 20 33  3}.  8 {r*} {1 3
04e0: 7d 0a 7d 20 7b 0a 20 20 64 6f 5f 65 78 65 63 73  }.} {.  do_execs
04f0: 71 6c 5f 74 65 73 74 20 31 2e 24 74 6e 20 7b 0a  ql_test 1.$tn {.
0500: 20 20 20 20 53 45 4c 45 43 54 20 72 6f 77 69 64      SELECT rowid
0510: 20 46 52 4f 4d 20 79 79 20 57 48 45 52 45 20 79   FROM yy WHERE y
0520: 79 20 4d 41 54 43 48 20 24 6d 61 74 63 68 0a 20  y MATCH $match. 
0530: 20 7d 20 24 72 65 73 0a 7d 0a 0a 66 6f 72 65 61   } $res.}..forea
0540: 63 68 20 7b 54 20 63 72 65 61 74 65 7d 20 7b 0a  ch {T create} {.
0550: 20 20 32 20 7b 0a 20 20 20 20 43 52 45 41 54 45    2 {.    CREATE
0560: 20 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20 74   VIRTUAL TABLE t
0570: 31 20 55 53 49 4e 47 20 66 74 73 35 28 61 2c 20  1 USING fts5(a, 
0580: 62 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49  b);.    INSERT I
0590: 4e 54 4f 20 74 31 28 74 31 2c 20 72 61 6e 6b 29  NTO t1(t1, rank)
05a0: 20 56 41 4c 55 45 53 28 27 70 67 73 7a 27 2c 20   VALUES('pgsz', 
05b0: 33 32 29 3b 0a 20 20 7d 0a 20 20 0a 20 20 33 20  32);.  }.  .  3 
05c0: 7b 0a 20 20 20 20 43 52 45 41 54 45 20 56 49 52  {.    CREATE VIR
05d0: 54 55 41 4c 20 54 41 42 4c 45 20 74 31 20 55 53  TUAL TABLE t1 US
05e0: 49 4e 47 20 66 74 73 35 28 61 2c 20 62 2c 20 70  ING fts5(a, b, p
05f0: 72 65 66 69 78 3d 31 2c 32 2c 33 2c 34 2c 35 29  refix=1,2,3,4,5)
0600: 3b 0a 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54  ;.    INSERT INT
0610: 4f 20 74 31 28 74 31 2c 20 72 61 6e 6b 29 20 56  O t1(t1, rank) V
0620: 41 4c 55 45 53 28 27 70 67 73 7a 27 2c 20 33 32  ALUES('pgsz', 32
0630: 29 3b 0a 20 20 7d 0a 0a 20 20 34 20 7b 0a 20 20  );.  }..  4 {.  
0640: 20 20 43 52 45 41 54 45 20 56 49 52 54 55 41 4c    CREATE VIRTUAL
0650: 20 54 41 42 4c 45 20 74 31 20 55 53 49 4e 47 20   TABLE t1 USING 
0660: 66 74 73 35 28 61 2c 20 62 29 3b 0a 20 20 20 20  fts5(a, b);.    
0670: 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31 28 74  INSERT INTO t1(t
0680: 31 2c 20 72 61 6e 6b 29 20 56 41 4c 55 45 53 28  1, rank) VALUES(
0690: 27 70 67 73 7a 27 2c 20 33 32 29 3b 0a 20 20 20  'pgsz', 32);.   
06a0: 20 42 45 47 49 4e 3b 0a 20 20 7d 0a 20 20 0a 20   BEGIN;.  }.  . 
06b0: 20 35 20 7b 0a 20 20 20 20 43 52 45 41 54 45 20   5 {.    CREATE 
06c0: 56 49 52 54 55 41 4c 20 54 41 42 4c 45 20 74 31  VIRTUAL TABLE t1
06d0: 20 55 53 49 4e 47 20 66 74 73 35 28 61 2c 20 62   USING fts5(a, b
06e0: 2c 20 70 72 65 66 69 78 3d 31 2c 32 2c 33 2c 34  , prefix=1,2,3,4
06f0: 2c 35 29 3b 0a 20 20 20 20 49 4e 53 45 52 54 20  ,5);.    INSERT 
0700: 49 4e 54 4f 20 74 31 28 74 31 2c 20 72 61 6e 6b  INTO t1(t1, rank
0710: 29 20 56 41 4c 55 45 53 28 27 70 67 73 7a 27 2c  ) VALUES('pgsz',
0720: 20 33 32 29 3b 0a 20 20 20 20 42 45 47 49 4e 3b   32);.    BEGIN;
0730: 0a 20 20 7d 0a 0a 20 20 36 20 7b 0a 20 20 20 20  .  }..  6 {.    
0740: 43 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54  CREATE VIRTUAL T
0750: 41 42 4c 45 20 74 31 20 55 53 49 4e 47 20 66 74  ABLE t1 USING ft
0760: 73 35 28 61 2c 20 62 2c 20 64 65 74 61 69 6c 3d  s5(a, b, detail=
0770: 63 6f 6c 29 3b 0a 20 20 20 20 49 4e 53 45 52 54  col);.    INSERT
0780: 20 49 4e 54 4f 20 74 31 28 74 31 2c 20 72 61 6e   INTO t1(t1, ran
0790: 6b 29 20 56 41 4c 55 45 53 28 27 70 67 73 7a 27  k) VALUES('pgsz'
07a0: 2c 20 33 32 29 3b 0a 20 20 7d 0a 0a 20 20 37 20  , 32);.  }..  7 
07b0: 7b 0a 20 20 20 20 43 52 45 41 54 45 20 56 49 52  {.    CREATE VIR
07c0: 54 55 41 4c 20 54 41 42 4c 45 20 74 31 20 55 53  TUAL TABLE t1 US
07d0: 49 4e 47 20 66 74 73 35 28 61 2c 20 62 2c 20 64  ING fts5(a, b, d
07e0: 65 74 61 69 6c 3d 63 6f 6c 2c 20 70 72 65 66 69  etail=col, prefi
07f0: 78 3d 22 31 2c 32 2c 33 2c 34 2c 35 22 29 3b 0a  x="1,2,3,4,5");.
0800: 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20      INSERT INTO 
0810: 74 31 28 74 31 2c 20 72 61 6e 6b 29 20 56 41 4c  t1(t1, rank) VAL
0820: 55 45 53 28 27 70 67 73 7a 27 2c 20 33 32 29 3b  UES('pgsz', 32);
0830: 0a 20 20 7d 0a 0a 20 20 38 20 7b 0a 20 20 20 20  .  }..  8 {.    
0840: 43 52 45 41 54 45 20 56 49 52 54 55 41 4c 20 54  CREATE VIRTUAL T
0850: 41 42 4c 45 20 74 31 20 55 53 49 4e 47 20 66 74  ABLE t1 USING ft
0860: 73 35 28 61 2c 20 62 2c 20 64 65 74 61 69 6c 3d  s5(a, b, detail=
0870: 63 6f 6c 2c 20 70 72 65 66 69 78 3d 22 31 2c 32  col, prefix="1,2
0880: 2c 33 2c 34 2c 35 22 29 3b 0a 20 20 20 20 49 4e  ,3,4,5");.    IN
0890: 53 45 52 54 20 49 4e 54 4f 20 74 31 28 74 31 2c  SERT INTO t1(t1,
08a0: 20 72 61 6e 6b 29 20 56 41 4c 55 45 53 28 27 70   rank) VALUES('p
08b0: 67 73 7a 27 2c 20 33 32 29 3b 0a 20 20 20 20 42  gsz', 32);.    B
08c0: 45 47 49 4e 3b 0a 20 20 7d 0a 0a 7d 20 7b 0a 0a  EGIN;.  }..} {..
08d0: 20 20 64 6f 5f 74 65 73 74 20 24 54 2e 31 20 7b    do_test $T.1 {
08e0: 20 0a 20 20 20 20 65 78 65 63 73 71 6c 20 7b 20   .    execsql { 
08f0: 44 52 4f 50 20 54 41 42 4c 45 20 49 46 20 45 58  DROP TABLE IF EX
0900: 49 53 54 53 20 74 31 20 7d 0a 20 20 20 20 65 78  ISTS t1 }.    ex
0910: 65 63 73 71 6c 20 24 63 72 65 61 74 65 0a 20 20  ecsql $create.  
0920: 7d 20 7b 7d 0a 20 20 0a 20 20 64 6f 5f 74 65 73  } {}.  .  do_tes
0930: 74 20 24 54 2e 31 20 7b 0a 20 20 20 20 66 6f 72  t $T.1 {.    for
0940: 65 61 63 68 20 7b 72 6f 77 69 64 20 61 20 62 7d  each {rowid a b}
0950: 20 7b 0a 20 20 20 20 20 20 30 20 20 20 7b 66 67   {.      0   {fg
0960: 68 69 6a 20 75 76 77 78 79 7a 20 6b 6c 6d 6e 20  hij uvwxyz klmn 
0970: 70 71 20 75 76 77 78 7d 20 20 20 20 20 20 20 20  pq uvwx}        
0980: 20 7b 6b 6c 6d 6e 20 66 20 66 67 68 20 75 76 20   {klmn f fgh uv 
0990: 66 67 68 69 6a 20 6b 6c 6d 6e 6f 7d 0a 20 20 20  fghij klmno}.   
09a0: 20 20 20 31 20 20 20 7b 75 76 20 66 20 61 62 63     1   {uv f abc
09b0: 64 20 61 62 63 64 20 66 67 68 69 7d 20 20 20 20  d abcd fghi}    
09c0: 20 20 20 20 20 20 20 20 20 20 20 7b 70 71 20 6b             {pq k
09d0: 6c 6d 20 75 76 20 75 76 20 66 67 68 20 75 76 20  lm uv uv fgh uv 
09e0: 61 7d 0a 20 20 20 20 20 20 32 20 20 20 7b 6b 6c  a}.      2   {kl
09f0: 6d 6e 20 6b 6c 6d 20 70 71 72 73 20 66 67 68 69  mn klm pqrs fghi
0a00: 6a 20 75 76 7d 20 20 20 20 20 20 20 20 20 20 20  j uv}           
0a10: 20 7b 66 20 6b 20 75 76 77 20 61 62 20 61 62 63   {f k uvw ab abc
0a20: 64 20 70 71 72 20 75 76 7d 0a 20 20 20 20 20 20  d pqr uv}.      
0a30: 33 20 20 20 7b 61 62 20 70 71 72 73 74 20 61 20  3   {ab pqrst a 
0a40: 66 67 68 69 20 61 62 20 70 71 72 20 66 67 7d 20  fghi ab pqr fg} 
0a50: 20 20 20 20 20 20 20 20 7b 6b 20 6b 6c 6d 6e 6f          {k klmno
0a60: 20 61 20 66 67 20 61 62 63 64 7d 0a 20 20 20 20   a fg abcd}.    
0a70: 20 20 34 20 20 20 7b 61 62 63 64 20 70 71 72 73    4   {abcd pqrs
0a80: 74 20 75 76 77 78 20 61 20 66 67 68 7d 20 20 20  t uvwx a fgh}   
0a90: 20 20 20 20 20 20 20 20 20 20 7b 66 20 6b 6c 6d            {f klm
0aa0: 6e 6f 20 66 67 68 69 6a 20 6b 6c 20 70 71 72 73  no fghij kl pqrs
0ab0: 74 7d 0a 20 20 20 20 20 20 35 20 20 20 7b 75 76  t}.      5   {uv
0ac0: 77 78 79 7a 20 6b 20 61 62 63 64 65 20 75 20 61  wxyz k abcde u a
0ad0: 7d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  }               
0ae0: 20 7b 75 76 20 6b 20 6b 20 6b 6c 20 6b 6c 6d 6e   {uv k k kl klmn
0af0: 7d 0a 20 20 20 20 20 20 36 20 20 20 7b 75 76 77  }.      6   {uvw
0b00: 78 79 7a 20 6b 20 6b 6c 6d 6e 20 70 71 72 73 74  xyz k klmn pqrst
0b10: 20 75 76 7d 20 20 20 20 20 20 20 20 20 20 20 20   uv}            
0b20: 7b 66 67 68 69 20 70 71 72 73 20 61 62 63 64 65  {fghi pqrs abcde
0b30: 20 75 20 6b 7d 0a 20 20 20 20 20 20 37 20 20 20   u k}.      7   
0b40: 7b 75 76 77 78 79 20 6b 6c 6d 6e 20 75 20 70 20  {uvwxy klmn u p 
0b50: 70 71 72 73 74 20 66 67 68 7d 20 20 20 20 20 20  pqrst fgh}      
0b60: 20 20 20 20 7b 70 20 66 20 66 67 68 69 20 61 62      {p f fghi ab
0b70: 63 64 20 75 76 77 20 6b 6c 20 75 76 7d 0a 20 20  cd uvw kl uv}.  
0b80: 20 20 20 20 38 20 20 20 7b 66 20 6b 6c 6d 6e 6f      8   {f klmno
0b90: 20 70 71 72 73 74 20 75 76 77 78 79 20 70 71 72   pqrst uvwxy pqr
0ba0: 73 74 7d 20 20 20 20 20 20 20 20 20 7b 75 76 20  st}         {uv 
0bb0: 61 62 63 64 65 20 6b 6c 6d 20 70 71 20 70 71 72  abcde klm pq pqr
0bc0: 7d 0a 20 20 20 20 20 20 39 20 20 20 7b 66 20 61  }.      9   {f a
0bd0: 62 63 64 65 20 61 20 75 76 77 78 79 7a 20 70 71  bcde a uvwxyz pq
0be0: 72 73 74 7d 20 20 20 20 20 20 20 20 20 20 20 20  rst}            
0bf0: 7b 66 67 68 69 6a 20 61 62 63 20 6b 20 75 76 77  {fghij abc k uvw
0c00: 78 20 70 71 72 20 66 67 68 69 6a 20 75 76 77 78  x pqr fghij uvwx
0c10: 79 7d 0a 20 20 20 20 20 20 31 30 20 20 7b 61 62  y}.      10  {ab
0c20: 20 75 76 20 66 20 66 67 20 70 71 72 73 74 20 75   uv f fg pqrst u
0c30: 76 77 78 79 7d 20 20 20 20 20 20 20 20 20 20 20  vwxy}           
0c40: 20 7b 66 67 68 20 70 20 75 76 20 6b 20 61 62 63   {fgh p uv k abc
0c50: 20 6b 6c 6d 20 75 76 77 7d 0a 20 20 20 20 20 20   klm uvw}.      
0c60: 31 31 20 20 7b 70 71 20 6b 6c 6d 6e 6f 20 61 20  11  {pq klmno a 
0c70: 75 76 77 20 61 62 63 64 65 20 75 76 77 78 79 7a  uvw abcde uvwxyz
0c80: 7d 20 20 20 20 20 20 20 7b 66 67 68 69 6a 20 70  }       {fghij p
0c90: 71 20 75 76 77 78 79 7a 20 70 71 72 20 66 67 68  q uvwxyz pqr fgh
0ca0: 69 7d 0a 20 20 20 20 20 20 31 32 20 20 7b 66 67  i}.      12  {fg
0cb0: 68 20 75 20 70 71 20 66 67 68 20 75 76 77 7d 20  h u pq fgh uvw} 
0cc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0cd0: 20 7b 75 76 77 20 70 71 72 20 66 20 75 76 77 78   {uvw pqr f uvwx
0ce0: 79 20 75 76 77 78 7d 0a 20 20 20 20 20 20 31 33  y uvwx}.      13
0cf0: 20 20 7b 75 76 77 78 20 6b 6c 6d 6e 20 66 20 66    {uvwx klmn f f
0d00: 67 68 20 61 62 63 64 20 70 71 72 7d 20 20 20 20  gh abcd pqr}    
0d10: 20 20 20 20 20 20 7b 75 76 77 20 6b 20 66 67 20        {uvw k fg 
0d20: 75 76 20 6b 6c 6d 20 61 62 63 64 7d 0a 20 20 20  uv klm abcd}.   
0d30: 20 20 20 31 34 20 20 7b 61 62 20 75 76 77 78 20     14  {ab uvwx 
0d40: 70 71 72 73 74 20 70 71 72 20 75 76 77 78 79 7a  pqrst pqr uvwxyz
0d50: 20 70 71 72 73 7d 20 20 20 20 20 7b 75 76 77 78   pqrs}     {uvwx
0d60: 79 7a 20 61 62 63 64 65 20 61 62 20 61 62 20 75  yz abcde ab ab u
0d70: 76 77 20 61 62 63 64 65 7d 0a 20 20 20 20 20 20  vw abcde}.      
0d80: 31 35 20 20 7b 61 62 63 20 61 62 63 64 65 20 75  15  {abc abcde u
0d90: 76 77 78 79 7a 20 61 62 63 20 6b 6c 20 6b 20 70  vwxyz abc kl k p
0da0: 71 72 7d 20 20 20 20 20 7b 6b 6c 6d 20 6b 20 6b  qr}     {klm k k
0db0: 20 6b 6c 6d 6e 6f 20 75 20 66 67 68 7d 0a 20 20   klmno u fgh}.  
0dc0: 20 20 20 20 31 36 20 20 7b 66 67 68 69 20 61 62      16  {fghi ab
0dd0: 63 64 20 66 67 68 69 6a 20 75 76 20 75 76 77 78  cd fghij uv uvwx
0de0: 79 7a 20 61 62 20 75 76 7d 20 20 20 7b 6b 6c 6d  yz ab uv}   {klm
0df0: 6e 20 70 71 72 20 61 20 75 76 77 20 66 67 68 69  n pqr a uvw fghi
0e00: 7d 0a 20 20 20 20 20 20 31 37 20 20 7b 61 62 63  }.      17  {abc
0e10: 20 70 71 72 73 74 20 66 67 68 69 20 75 76 77 78   pqrst fghi uvwx
0e20: 20 75 76 77 20 6b 6c 6d 6e 20 66 67 68 69 7d 20   uvw klmn fghi} 
0e30: 7b 61 62 20 66 67 20 70 71 72 20 70 71 72 73 20  {ab fg pqr pqrs 
0e40: 70 7d 0a 20 20 20 20 20 20 31 38 20 20 7b 70 71  p}.      18  {pq
0e50: 72 20 6b 6c 20 61 20 66 67 68 69 6a 20 66 67 68  r kl a fghij fgh
0e60: 20 66 67 20 6b 6c 7d 20 20 20 20 20 20 20 20 20   fg kl}         
0e70: 20 7b 70 71 72 20 75 76 77 78 79 7a 20 75 76 77   {pqr uvwxyz uvw
0e80: 20 61 62 63 64 20 75 76 77 78 79 7a 7d 0a 20 20   abcd uvwxyz}.  
0e90: 20 20 20 20 31 39 20 20 7b 66 67 68 69 20 66 67      19  {fghi fg
0ea0: 68 69 20 70 71 72 20 6b 6c 20 66 67 68 69 20 66  hi pqr kl fghi f
0eb0: 7d 20 20 20 20 20 20 20 20 20 20 20 7b 6b 6c 6d  }           {klm
0ec0: 6e 20 75 20 75 20 6b 6c 6d 6e 6f 20 6b 6c 6d 6e  n u u klmno klmn
0ed0: 6f 7d 0a 20 20 20 20 20 20 32 30 20 20 7b 61 62  o}.      20  {ab
0ee0: 63 20 70 71 72 73 74 20 6b 6c 6d 6e 6f 20 6b 6c  c pqrst klmno kl
0ef0: 20 70 71 20 75 76 77 78 79 7d 20 20 20 20 20 20   pq uvwxy}      
0f00: 20 7b 61 62 63 20 6b 20 66 67 68 69 20 70 71 72   {abc k fghi pqr
0f10: 73 20 6b 6c 6d 7d 0a 20 20 20 20 20 20 32 31 20  s klm}.      21 
0f20: 20 7b 61 20 70 71 72 20 75 76 77 78 79 7a 20 75   {a pqr uvwxyz u
0f30: 76 20 66 67 68 69 20 61 20 66 67 68 7d 20 20 20  v fghi a fgh}   
0f40: 20 20 20 20 20 7b 61 62 63 20 70 71 72 73 20 70       {abc pqrs p
0f50: 71 72 73 74 20 70 71 20 6b 6c 6d 7d 0a 20 20 20  qrst pq klm}.   
0f60: 20 20 20 32 32 20 20 7b 6b 6c 6d 20 61 62 63 20     22  {klm abc 
0f70: 75 76 77 78 79 7a 20 6b 6c 6d 20 70 71 72 73 74  uvwxyz klm pqrst
0f80: 7d 20 20 20 20 20 20 20 20 20 20 7b 66 67 68 69  }          {fghi
0f90: 6a 20 6b 20 70 71 20 70 71 72 20 75 20 6b 6c 6d  j k pq pqr u klm
0fa0: 20 66 67 68 69 6a 7d 0a 20 20 20 20 20 20 32 33   fghij}.      23
0fb0: 20 20 7b 70 20 6b 6c 6d 20 75 76 20 70 20 61 20    {p klm uv p a 
0fc0: 61 7d 20 20 20 20 20 20 20 20 20 20 20 20 20 20  a}              
0fd0: 20 20 20 20 20 20 7b 75 76 77 78 79 20 6b 6c 6d        {uvwxy klm
0fe0: 6e 20 75 76 77 20 61 62 63 64 65 20 70 71 7d 0a  n uvw abcde pq}.
0ff0: 20 20 20 20 20 20 32 34 20 20 7b 75 76 20 66 67        24  {uv fg
1000: 68 20 66 67 20 70 71 20 75 76 77 78 79 20 75 20  h fg pq uvwxy u 
1010: 75 76 77 78 79 7d 20 20 20 20 20 20 20 20 7b 70  uvwxy}        {p
1020: 71 72 73 20 61 20 75 76 77 20 70 20 75 76 77 78  qrs a uvw p uvwx
1030: 20 75 76 77 78 79 7a 20 66 67 7d 0a 20 20 20 20   uvwxyz fg}.    
1040: 20 20 32 35 20 20 7b 66 67 68 69 6a 20 66 67 68    25  {fghij fgh
1050: 69 20 6b 6c 6d 6e 20 61 62 63 64 20 70 71 20 6b  i klmn abcd pq k
1060: 6c 7d 20 20 20 20 20 20 20 20 7b 66 67 68 69 20  l}        {fghi 
1070: 61 62 63 64 65 20 70 71 72 73 20 61 62 63 64 20  abcde pqrs abcd 
1080: 66 67 68 20 75 76 77 78 79 7d 0a 20 20 20 20 20  fgh uvwxy}.     
1090: 20 32 36 20 20 7b 70 71 20 66 67 68 20 61 20 61   26  {pq fgh a a
10a0: 62 63 20 6b 6c 6d 6e 6f 20 6b 6c 6d 6e 7d 20 20  bc klmno klmn}  
10b0: 20 20 20 20 20 20 20 20 20 7b 66 67 68 20 70 20           {fgh p 
10c0: 6b 20 70 20 66 67 20 66 67 68 69 6a 7d 0a 20 20  k p fg fghij}.  
10d0: 20 20 20 20 32 37 20 20 7b 66 67 20 70 71 20 6b      27  {fg pq k
10e0: 6c 20 75 76 77 78 20 66 67 68 69 6a 20 70 71 72  l uvwx fghij pqr
10f0: 73 74 20 6b 6c 6d 6e 7d 20 20 20 20 7b 61 62 63  st klmn}    {abc
1100: 64 20 75 76 77 20 61 62 63 64 20 66 67 68 69 6a  d uvw abcd fghij
1110: 20 66 20 66 67 68 69 6a 7d 0a 20 20 20 20 20 20   f fghij}.      
1120: 32 38 20 20 7b 75 76 77 20 66 67 68 69 20 70 20  28  {uvw fghi p 
1130: 66 67 68 69 6a 20 70 71 20 66 67 68 20 75 76 77  fghij pq fgh uvw
1140: 78 7d 20 20 20 20 20 20 7b 6b 20 66 67 68 69 6a  x}      {k fghij
1150: 20 61 62 63 64 20 75 76 77 78 20 70 71 72 20 66   abcd uvwx pqr f
1160: 67 68 69 7d 0a 20 20 20 20 20 20 32 39 20 20 7b  ghi}.      29  {
1170: 6b 6c 6d 20 70 71 20 61 62 63 64 20 70 71 20 66  klm pq abcd pq f
1180: 20 75 76 77 78 79 7d 20 20 20 20 20 20 20 20 20   uvwxy}         
1190: 20 20 20 7b 70 71 72 73 74 20 70 20 66 67 68 69     {pqrst p fghi
11a0: 6a 20 70 71 72 20 70 7d 0a 20 20 20 20 20 20 33  j pqr p}.      3
11b0: 30 20 20 7b 61 62 20 75 76 77 78 20 66 67 20 75  0  {ab uvwx fg u
11c0: 76 77 78 20 6b 6c 6d 6e 20 6b 6c 6d 7d 20 20 20  vwx klmn klm}   
11d0: 20 20 20 20 20 20 20 7b 6b 6c 6d 6e 20 6b 6c 6d         {klmn klm
11e0: 6e 6f 20 66 67 68 69 6a 20 6b 6c 6d 6e 20 6b 6c  no fghij klmn kl
11f0: 6d 7d 0a 20 20 20 20 20 20 33 31 20 20 7b 70 71  m}.      31  {pq
1200: 20 6b 20 70 71 72 20 61 62 63 64 20 61 20 70 71   k pqr abcd a pq
1210: 72 73 7d 20 20 20 20 20 20 20 20 20 20 20 20 20  rs}             
1220: 20 7b 61 62 63 64 20 61 62 63 64 20 75 76 77 20   {abcd abcd uvw 
1230: 61 20 61 62 63 64 20 6b 6c 6d 6e 6f 20 61 62 7d  a abcd klmno ab}
1240: 0a 20 20 20 20 20 20 33 32 20 20 7b 70 71 72 73  .      32  {pqrs
1250: 74 20 75 20 61 62 63 20 70 71 20 6b 6c 6d 7d 20  t u abc pq klm} 
1260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1270: 61 62 63 20 6b 6c 20 75 76 77 78 79 7a 20 66 67  abc kl uvwxyz fg
1280: 68 69 6a 20 75 20 66 67 68 69 20 70 7d 0a 20 20  hij u fghi p}.  
1290: 20 20 20 20 33 33 20 20 7b 66 20 75 76 77 78 79      33  {f uvwxy
12a0: 20 75 20 6b 20 66 20 75 76 77 20 75 76 77 78 7d   u k f uvw uvwx}
12b0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 70 71 72              {pqr
12c0: 73 20 75 76 77 20 66 67 68 69 20 66 67 20 70 71  s uvw fghi fg pq
12d0: 72 73 74 20 6b 6c 6d 7d 0a 20 20 20 20 20 20 33  rst klm}.      3
12e0: 34 20 20 7b 70 71 72 73 20 70 71 20 66 67 68 69  4  {pqrs pq fghi
12f0: 6a 20 75 76 77 78 79 7a 20 70 71 72 7d 20 20 20  j uvwxyz pqr}   
1300: 20 20 20 20 20 20 20 7b 61 62 20 61 62 63 20 61         {ab abc a
1310: 62 63 20 75 76 77 20 66 20 70 71 20 66 7d 0a 20  bc uvw f pq f}. 
1320: 20 20 20 20 20 33 35 20 20 7b 75 76 77 78 79 20       35  {uvwxy 
1330: 61 62 20 75 76 77 78 79 20 6b 6c 6d 6e 6f 20 6b  ab uvwxy klmno k
1340: 6c 20 70 71 72 73 7d 20 20 20 20 20 20 7b 61 62  l pqrs}      {ab
1350: 63 64 65 20 75 76 77 20 70 71 72 73 20 75 76 77  cde uvw pqrs uvw
1360: 78 20 6b 20 6b 7d 0a 20 20 20 20 20 20 33 36 20  x k k}.      36 
1370: 20 7b 75 76 77 78 79 7a 20 6b 20 61 62 20 61 62   {uvwxyz k ab ab
1380: 63 64 65 20 61 62 63 20 75 76 77 7d 20 20 20 20  cde abc uvw}    
1390: 20 20 20 20 20 7b 75 76 77 20 61 62 63 64 65 20       {uvw abcde 
13a0: 75 76 77 20 6b 6c 6d 6e 20 75 76 20 6b 6c 6d 6e  uvw klmn uv klmn
13b0: 7d 0a 20 20 20 20 20 20 33 37 20 20 7b 6b 20 6b  }.      37  {k k
13c0: 6c 20 75 76 20 61 62 63 64 65 20 75 76 77 78 20  l uv abcde uvwx 
13d0: 66 67 20 75 7d 20 20 20 20 20 20 20 20 20 20 20  fg u}           
13e0: 7b 75 20 61 62 63 20 75 76 77 78 79 20 6b 20 66  {u abc uvwxy k f
13f0: 67 20 61 62 63 64 7d 0a 20 20 20 20 20 20 33 38  g abcd}.      38
1400: 20 20 7b 66 67 68 69 20 70 71 72 73 74 20 66 67    {fghi pqrst fg
1410: 68 69 20 70 71 72 20 70 71 72 73 74 20 75 76 77  hi pqr pqrst uvw
1420: 78 7d 20 20 20 20 7b 75 20 75 76 20 75 76 77 78  x}    {u uv uvwx
1430: 20 66 67 68 69 20 61 62 63 64 65 7d 0a 20 20 20   fghi abcde}.   
1440: 20 20 20 33 39 20 20 7b 6b 20 70 71 72 73 74 20     39  {k pqrst 
1450: 6b 20 75 76 77 20 66 67 20 70 71 72 73 74 20 66  k uvw fg pqrst f
1460: 67 68 69 6a 7d 20 20 20 20 20 20 7b 75 76 77 78  ghij}      {uvwx
1470: 79 20 61 62 20 6b 6c 20 6b 6c 6d 6e 20 75 76 77  y ab kl klmn uvw
1480: 78 79 7a 20 61 62 63 64 65 7d 0a 20 20 20 20 20  xyz abcde}.     
1490: 20 34 30 20 20 7b 66 67 20 75 76 77 78 79 20 70   40  {fg uvwxy p
14a0: 71 72 73 20 6b 6c 6d 6e 20 75 76 77 78 79 7a 20  qrs klmn uvwxyz 
14b0: 6b 6c 6d 20 70 7d 20 20 20 7b 6b 20 75 76 20 61  klm p}   {k uv a
14c0: 62 20 66 67 68 69 6a 20 66 67 68 20 6b 20 70 71  b fghij fgh k pq
14d0: 72 73 7d 0a 20 20 20 20 20 20 34 31 20 20 7b 75  rs}.      41  {u
14e0: 76 77 78 20 61 62 63 20 66 20 70 71 20 75 76 77  vwx abc f pq uvw
14f0: 78 79 20 6b 7d 20 20 20 20 20 20 20 20 20 20 20  xy k}           
1500: 20 20 7b 61 62 20 75 76 77 78 79 7a 20 61 62 63    {ab uvwxyz abc
1510: 20 66 20 66 67 68 69 6a 7d 0a 20 20 20 20 20 20   f fghij}.      
1520: 34 32 20 20 7b 75 76 77 78 79 20 6b 6c 6d 6e 6f  42  {uvwxy klmno
1530: 20 75 76 77 78 79 7a 20 75 76 77 78 79 7a 20 70   uvwxyz uvwxyz p
1540: 71 72 73 74 7d 20 20 20 7b 75 76 20 6b 6c 20 6b  qrst}   {uv kl k
1550: 6c 20 6b 6c 6d 6e 6f 20 6b 20 66 20 61 62 63 64  l klmno k f abcd
1560: 65 7d 0a 20 20 20 20 20 20 34 33 20 20 7b 61 62  e}.      43  {ab
1570: 63 64 65 20 61 62 20 70 71 72 73 20 66 67 20 66  cde ab pqrs fg f
1580: 20 66 67 68 7d 20 20 20 20 20 20 20 20 20 20 20   fgh}           
1590: 20 7b 61 62 63 20 66 67 68 69 6a 20 66 67 68 69   {abc fghij fghi
15a0: 20 6b 20 6b 7d 0a 20 20 20 20 20 20 34 34 20 20   k k}.      44  
15b0: 7b 75 76 77 20 61 62 63 64 20 61 20 61 62 20 70  {uvw abcd a ab p
15c0: 71 72 73 74 20 6b 6c 6d 6e 20 66 67 7d 20 20 20  qrst klmn fg}   
15d0: 20 20 20 20 7b 70 71 72 73 74 20 75 20 75 76 77      {pqrst u uvw
15e0: 78 20 70 71 72 73 74 20 66 67 68 69 6a 20 66 20  x pqrst fghij f 
15f0: 70 71 72 73 74 7d 0a 20 20 20 20 20 20 34 35 20  pqrst}.      45 
1600: 20 7b 75 76 77 78 79 20 70 20 6b 6c 20 75 76 77   {uvwxy p kl uvw
1610: 78 79 7a 20 61 62 20 70 71 72 73 74 20 66 67 68  xyz ab pqrst fgh
1620: 69 7d 20 20 20 7b 61 62 63 20 66 20 70 71 72 20  i}   {abc f pqr 
1630: 66 67 20 61 20 6b 7d 0a 20 20 20 20 20 20 34 36  fg a k}.      46
1640: 20 20 7b 75 20 70 20 66 20 61 20 66 67 68 7d 20    {u p f a fgh} 
1650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1660: 20 20 20 20 20 20 7b 61 20 6b 6c 20 70 71 20 75        {a kl pq u
1670: 76 20 66 7d 0a 20 20 20 20 20 20 34 37 20 20 7b  v f}.      47  {
1680: 70 71 72 73 20 61 62 63 20 66 67 68 69 6a 20 66  pqrs abc fghij f
1690: 67 20 61 62 63 64 65 20 61 62 20 61 7d 20 20 20  g abcde ab a}   
16a0: 20 20 20 7b 70 20 61 62 20 75 76 20 70 71 72 73     {p ab uv pqrs
16b0: 20 6b 6c 20 66 67 68 69 20 61 62 63 64 7d 0a 20   kl fghi abcd}. 
16c0: 20 20 20 20 20 34 38 20 20 7b 61 62 63 64 65 20       48  {abcde 
16d0: 75 76 77 78 79 20 70 71 72 73 74 20 75 76 20 61  uvwxy pqrst uv a
16e0: 62 63 20 70 71 72 20 75 76 77 78 7d 20 7b 75 76  bc pqr uvwx} {uv
16f0: 77 78 79 20 6b 6c 6d 20 75 76 77 78 79 20 75 76  wxy klm uvwxy uv
1700: 77 78 20 6b 7d 0a 20 20 20 20 20 20 34 39 20 20  wx k}.      49  
1710: 7b 66 67 68 20 6b 6c 6d 20 61 62 63 64 65 20 6b  {fgh klm abcde k
1720: 6c 6d 6e 6f 20 75 7d 20 20 20 20 20 20 20 20 20  lmno u}         
1730: 20 20 20 20 7b 61 20 66 20 66 67 68 69 6a 20 66      {a f fghij f
1740: 20 75 76 77 78 79 7a 20 61 62 63 20 75 7d 0a 20   uvwxyz abc u}. 
1750: 20 20 20 20 20 35 30 20 20 7b 75 76 20 75 76 77       50  {uv uvw
1760: 20 75 76 77 78 79 7a 20 75 76 77 78 79 7a 20 75   uvwxyz uvwxyz u
1770: 76 20 61 62 7d 20 20 20 20 20 20 20 20 7b 75 76  v ab}        {uv
1780: 77 78 20 70 71 20 66 67 20 75 20 6b 20 75 76 77  wx pq fg u k uvw
1790: 78 79 7d 0a 20 20 20 20 20 20 35 31 20 20 7b 75  xy}.      51  {u
17a0: 76 77 78 79 20 70 71 20 70 20 6b 6c 20 66 67 68  vwxy pq p kl fgh
17b0: 69 7d 20 20 20 20 20 20 20 20 20 20 20 20 20 20  i}              
17c0: 20 20 7b 70 71 72 73 20 66 67 68 69 20 70 71 72    {pqrs fghi pqr
17d0: 73 20 61 62 63 64 65 20 75 76 77 78 79 7a 20 61  s abcde uvwxyz a
17e0: 62 7d 0a 20 20 20 20 20 20 35 32 20 20 7b 70 71  b}.      52  {pq
17f0: 72 20 70 20 75 76 77 78 79 20 6b 6c 20 70 71 72  r p uvwxy kl pqr
1800: 73 20 6b 6c 6d 6e 6f 20 66 67 68 69 6a 7d 20 20  s klmno fghij}  
1810: 20 7b 61 62 20 61 62 63 64 65 20 61 62 63 20 70   {ab abcde abc p
1820: 71 72 73 74 20 70 71 72 73 20 75 76 7d 0a 20 20  qrst pqrs uv}.  
1830: 20 20 20 20 35 33 20 20 7b 66 67 68 20 70 71 72      53  {fgh pqr
1840: 73 74 20 70 20 61 20 6b 6c 6d 6e 6f 7d 20 20 20  st p a klmno}   
1850: 20 20 20 20 20 20 20 20 20 20 20 20 7b 61 62 20              {ab 
1860: 61 62 20 70 71 72 73 74 20 70 71 72 20 6b 6c 20  ab pqrst pqr kl 
1870: 70 71 72 73 74 7d 0a 20 20 20 20 20 20 35 34 20  pqrst}.      54 
1880: 20 7b 61 62 63 64 20 6b 6c 6d 20 61 62 20 75 76   {abcd klm ab uv
1890: 77 20 61 20 66 67 20 75 7d 20 20 20 20 20 20 20  w a fg u}       
18a0: 20 20 20 20 20 7b 66 20 70 71 72 20 66 20 61 62       {f pqr f ab
18b0: 63 64 20 75 76 7d 0a 20 20 20 20 20 20 35 35 20  cd uv}.      55 
18c0: 20 7b 75 20 66 67 20 75 76 77 78 79 7a 20 6b 20   {u fg uvwxyz k 
18d0: 75 76 77 7d 20 20 20 20 20 20 20 20 20 20 20 20  uvw}            
18e0: 20 20 20 20 20 7b 61 62 63 20 70 71 72 73 20 66       {abc pqrs f
18f0: 20 66 67 68 69 6a 20 66 67 20 70 71 72 73 20 75   fghij fg pqrs u
1900: 76 77 78 79 7d 0a 20 20 20 20 20 20 35 36 20 20  vwxy}.      56  
1910: 7b 6b 6c 6d 20 66 67 20 70 20 66 67 68 69 20 66  {klm fg p fghi f
1920: 67 20 61 7d 20 20 20 20 20 20 20 20 20 20 20 20  g a}            
1930: 20 20 20 20 7b 75 76 20 61 20 66 67 68 69 20 75      {uv a fghi u
1940: 76 77 78 79 7a 20 61 20 66 67 68 69 7d 0a 20 20  vwxyz a fghi}.  
1950: 20 20 20 20 35 37 20 20 7b 75 76 77 78 79 20 6b      57  {uvwxy k
1960: 20 61 62 63 64 65 20 66 67 68 20 66 20 66 67 68   abcde fgh f fgh
1970: 69 7d 20 20 20 20 20 20 20 20 20 20 7b 66 20 6b  i}          {f k
1980: 6c 20 6b 6c 6d 6e 20 66 20 66 67 68 69 20 6b 6c  l klmn f fghi kl
1990: 6d 7d 0a 20 20 20 20 20 20 35 38 20 20 7b 6b 6c  m}.      58  {kl
19a0: 6d 20 6b 20 66 67 68 20 75 76 77 20 66 67 68 20  m k fgh uvw fgh 
19b0: 66 67 68 69 7d 20 20 20 20 20 20 20 20 20 20 20  fghi}           
19c0: 20 7b 6b 6c 6d 6e 6f 20 75 76 77 78 20 75 20 70   {klmno uvwx u p
19d0: 71 72 73 74 20 75 7d 0a 20 20 20 20 20 20 35 39  qrst u}.      59
19e0: 20 20 7b 66 67 68 69 20 70 71 72 20 70 71 72 73    {fghi pqr pqrs
19f0: 74 20 70 20 75 76 77 20 66 67 68 69 6a 7d 20 20  t p uvw fghij}  
1a00: 20 20 20 20 20 20 7b 75 76 20 70 71 72 73 74 20        {uv pqrst 
1a10: 70 71 72 73 20 70 71 20 66 67 68 69 6a 20 6b 6c  pqrs pq fghij kl
1a20: 6d 7d 0a 20 20 20 20 20 20 36 30 20 20 7b 75 76  m}.      60  {uv
1a30: 77 78 20 6b 6c 6d 20 75 76 77 78 79 20 75 76 20  wx klm uvwxy uv 
1a40: 6b 6c 6d 6e 7d 20 20 20 20 20 20 20 20 20 20 20  klmn}           
1a50: 20 7b 70 20 61 20 61 20 61 62 63 20 6b 6c 6d 6e   {p a a abc klmn
1a60: 20 61 62 20 6b 7d 0a 20 20 20 20 20 20 36 31 20   ab k}.      61 
1a70: 20 7b 75 76 77 78 79 20 75 76 77 78 20 6b 6c 6d   {uvwxy uvwx klm
1a80: 20 75 76 77 78 20 6b 6c 6d 7d 20 20 20 20 20 20   uvwx klm}      
1a90: 20 20 20 20 20 7b 70 71 72 73 20 61 62 20 61 62       {pqrs ab ab
1aa0: 20 75 76 77 78 79 7a 20 66 67 7d 0a 20 20 20 20   uvwxyz fg}.    
1ab0: 20 20 36 32 20 20 7b 6b 6c 20 75 76 20 75 76 20    62  {kl uv uv 
1ac0: 75 76 77 20 66 67 20 6b 6c 20 6b 7d 20 20 20 20  uvw fg kl k}    
1ad0: 20 20 20 20 20 20 20 20 20 20 7b 61 62 63 64 65            {abcde
1ae0: 20 75 76 77 20 66 67 68 20 75 76 77 78 79 20 6b   uvw fgh uvwxy k
1af0: 6c 6d 7d 0a 20 20 20 20 20 20 36 33 20 20 7b 61  lm}.      63  {a
1b00: 20 61 62 63 20 66 67 68 20 75 20 6b 6c 6d 20 61   abc fgh u klm a
1b10: 62 63 64 7d 20 20 20 20 20 20 20 20 20 20 20 20  bcd}            
1b20: 20 20 7b 66 67 68 20 70 71 72 20 75 76 20 6b 6c    {fgh pqr uv kl
1b30: 6d 6e 20 66 67 68 69 6a 7d 0a 20 20 20 20 20 20  mn fghij}.      
1b40: 36 34 20 20 7b 6b 6c 6d 6e 20 6b 20 6b 6c 6d 6e  64  {klmn k klmn
1b50: 20 6b 6c 6d 6e 6f 20 70 71 72 73 20 70 71 72 7d   klmno pqrs pqr}
1b60: 20 20 20 20 20 20 20 20 7b 66 67 20 6b 6c 20 61          {fg kl a
1b70: 62 63 64 65 20 6b 6c 6d 6e 6f 20 75 76 77 78 79  bcde klmno uvwxy
1b80: 20 6b 6c 20 70 71 7d 0a 20 20 20 20 20 20 36 35   kl pq}.      65
1b90: 20 20 7b 75 76 77 78 79 7a 20 6b 6c 6d 20 66 67    {uvwxyz klm fg
1ba0: 68 69 20 61 62 63 20 61 62 63 64 65 20 6b 6c 7d  hi abc abcde kl}
1bb0: 20 20 20 20 20 20 7b 75 76 77 78 79 20 75 76 77        {uvwxy uvw
1bc0: 20 75 76 77 78 79 7a 20 75 76 77 78 79 7a 20 70   uvwxyz uvwxyz p
1bd0: 71 20 70 71 72 73 74 7d 0a 20 20 20 20 20 20 36  q pqrst}.      6
1be0: 36 20 20 7b 70 71 20 6b 6c 6d 20 61 62 63 20 70  6  {pq klm abc p
1bf0: 71 72 73 74 20 66 67 68 20 66 7d 20 20 20 20 20  qrst fgh f}     
1c00: 20 20 20 20 20 20 20 7b 75 20 61 62 63 64 65 20         {u abcde 
1c10: 70 71 72 73 74 20 61 62 63 64 65 20 66 67 7d 0a  pqrst abcde fg}.
1c20: 20 20 20 20 20 20 36 37 20 20 7b 75 20 70 71 72        67  {u pqr
1c30: 73 74 20 6b 6c 20 75 20 75 76 77 20 6b 6c 6d 6e  st kl u uvw klmn
1c40: 6f 7d 20 20 20 20 20 20 20 20 20 20 20 20 7b 75  o}            {u
1c50: 20 70 71 72 20 70 71 72 73 20 66 67 68 20 75 20   pqr pqrs fgh u 
1c60: 70 7d 0a 20 20 20 20 20 20 36 38 20 20 7b 61 62  p}.      68  {ab
1c70: 63 20 66 67 68 69 20 75 76 77 78 79 20 66 67 68  c fghi uvwxy fgh
1c80: 20 6b 20 70 71 7d 20 20 20 20 20 20 20 20 20 20   k pq}          
1c90: 20 7b 75 76 20 70 20 75 76 77 78 20 75 76 77 78   {uv p uvwx uvwx
1ca0: 79 7a 20 61 62 7d 0a 20 20 20 20 20 20 36 39 20  yz ab}.      69 
1cb0: 20 7b 6b 6c 6d 6e 6f 20 66 20 75 76 77 78 79 7a   {klmno f uvwxyz
1cc0: 20 75 76 77 78 79 20 6b 6c 6d 6e 20 66 67 20 61   uvwxy klmn fg a
1cd0: 62 7d 20 20 20 7b 66 67 68 20 6b 6c 20 61 20 70  b}   {fgh kl a p
1ce0: 71 72 20 61 62 63 64 20 70 71 72 7d 0a 20 20 20  qr abcd pqr}.   
1cf0: 20 20 20 37 30 20 20 7b 66 67 68 69 20 70 71 72     70  {fghi pqr
1d00: 73 74 20 70 71 72 73 74 20 75 76 20 61 7d 20 20  st pqrst uv a}  
1d10: 20 20 20 20 20 20 20 20 20 20 20 7b 75 76 77 78             {uvwx
1d20: 79 20 6b 20 70 20 75 76 77 20 75 76 77 78 20 61  y k p uvw uvwx a
1d30: 7d 0a 20 20 20 20 20 20 37 31 20 20 7b 61 20 66  }.      71  {a f
1d40: 67 68 69 6a 20 66 20 70 20 75 76 77 7d 20 20 20  ghij f p uvw}   
1d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d60: 7b 6b 6c 6d 20 66 67 20 61 62 63 64 20 61 62 63  {klm fg abcd abc
1d70: 64 65 20 6b 6c 6d 6e 6f 20 70 71 72 73 7d 0a 20  de klmno pqrs}. 
1d80: 20 20 20 20 20 37 32 20 20 7b 75 76 20 75 76 77       72  {uv uvw
1d90: 78 20 75 76 77 78 20 75 76 77 20 6b 6c 6d 7d 20  x uvwx uvw klm} 
1da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 75 76               {uv
1db0: 20 66 67 68 69 20 6b 6c 6d 6e 6f 20 75 76 77 78   fghi klmno uvwx
1dc0: 79 20 75 76 77 7d 0a 20 20 20 20 20 20 37 33 20  y uvw}.      73 
1dd0: 20 7b 6b 6c 20 75 76 77 78 79 20 61 62 20 66 20   {kl uvwxy ab f 
1de0: 70 71 20 6b 6c 6d 20 75 7d 20 20 20 20 20 20 20  pq klm u}       
1df0: 20 20 20 20 20 7b 75 76 77 78 79 20 6b 6c 6d 6e       {uvwxy klmn
1e00: 20 6b 6c 6d 20 61 62 63 64 20 70 71 20 66 67 20   klm abcd pq fg 
1e10: 6b 7d 0a 20 20 20 20 20 20 37 34 20 20 7b 75 76  k}.      74  {uv
1e20: 77 20 70 71 72 73 74 20 61 62 63 64 20 75 76 77  w pqrst abcd uvw
1e30: 78 79 7a 20 61 62 7d 20 20 20 20 20 20 20 20 20  xyz ab}         
1e40: 20 7b 66 67 68 20 66 67 68 20 6b 6c 6d 6e 20 61   {fgh fgh klmn a
1e50: 62 63 20 70 71 7d 0a 20 20 20 20 20 20 37 35 20  bc pq}.      75 
1e60: 20 7b 75 76 77 78 79 7a 20 6b 6c 6d 20 70 71 20   {uvwxyz klm pq 
1e70: 61 62 63 64 20 6b 6c 6d 6e 6f 20 70 71 72 20 75  abcd klmno pqr u
1e80: 76 77 78 79 7a 7d 20 7b 6b 6c 20 66 20 61 20 66  vwxyz} {kl f a f
1e90: 67 20 70 71 72 20 6b 6c 6d 6e 7d 0a 20 20 20 20  g pqr klmn}.    
1ea0: 20 20 37 36 20 20 7b 75 76 77 20 75 76 77 78 79    76  {uvw uvwxy
1eb0: 20 70 71 72 20 6b 20 70 71 72 73 74 20 6b 6c 7d   pqr k pqrst kl}
1ec0: 20 20 20 20 20 20 20 20 20 20 7b 75 76 77 78 79            {uvwxy
1ed0: 20 61 62 63 20 75 76 77 20 75 76 77 20 75 7d 0a   abc uvw uvw u}.
1ee0: 20 20 20 20 20 20 37 37 20 20 7b 66 67 68 20 6b        77  {fgh k
1ef0: 6c 6d 20 75 20 75 76 77 78 79 7a 20 66 20 75 76  lm u uvwxyz f uv
1f00: 77 78 79 20 61 62 63 64 65 7d 20 20 20 20 7b 75  wxy abcde}    {u
1f10: 76 20 61 62 63 64 65 20 6b 6c 6d 6e 6f 20 75 20  v abcde klmno u 
1f20: 75 20 61 62 7d 0a 20 20 20 20 20 20 37 38 20 20  u ab}.      78  
1f30: 7b 6b 6c 6d 6e 6f 20 61 62 63 20 70 71 20 70 71  {klmno abc pq pq
1f40: 72 20 66 67 68 7d 20 20 20 20 20 20 20 20 20 20  r fgh}          
1f50: 20 20 20 20 7b 70 20 75 76 20 61 62 63 64 20 66      {p uv abcd f
1f60: 67 68 20 61 62 63 20 75 20 6b 7d 0a 20 20 20 20  gh abc u k}.    
1f70: 20 20 37 39 20 20 7b 66 67 20 70 71 72 20 75 76    79  {fg pqr uv
1f80: 77 20 70 71 20 75 76 77 78 7d 20 20 20 20 20 20  w pq uvwx}      
1f90: 20 20 20 20 20 20 20 20 20 20 7b 75 76 20 75 76            {uv uv
1fa0: 77 20 66 67 68 69 6a 20 70 71 72 73 20 66 67 20  w fghij pqrs fg 
1fb0: 70 7d 0a 20 20 20 20 20 20 38 30 20 20 7b 61 62  p}.      80  {ab
1fc0: 63 64 20 70 71 72 73 20 75 76 77 78 20 75 76 77  cd pqrs uvwx uvw
1fd0: 78 79 20 75 76 77 78 7d 20 20 20 20 20 20 20 20  xy uvwx}        
1fe0: 20 7b 75 20 75 76 77 20 70 71 72 73 74 20 70 71   {u uvw pqrst pq
1ff0: 72 20 61 62 63 64 65 20 70 71 72 73 20 6b 6c 7d  r abcde pqrs kl}
2000: 0a 20 20 20 20 20 20 38 31 20 20 7b 75 76 77 78  .      81  {uvwx
2010: 79 7a 20 6b 6c 6d 20 70 71 20 75 76 77 78 79 20  yz klm pq uvwxy 
2020: 66 67 68 69 6a 7d 20 20 20 20 20 20 20 20 20 7b  fghij}         {
2030: 70 20 70 71 20 6b 6c 6d 20 66 67 68 69 6a 20 75  p pq klm fghij u
2040: 20 61 20 61 7d 0a 20 20 20 20 20 20 38 32 20 20   a a}.      82  
2050: 7b 75 76 77 78 20 6b 20 75 76 77 78 79 7a 20 6b  {uvwx k uvwxyz k
2060: 6c 6d 6e 6f 20 70 71 72 73 74 20 6b 6c 7d 20 20  lmno pqrst kl}  
2070: 20 20 20 20 7b 61 62 63 64 65 20 70 20 66 20 70      {abcde p f p
2080: 71 72 73 74 20 61 62 63 64 20 75 76 77 78 79 7a  qrst abcd uvwxyz
2090: 20 70 7d 0a 20 20 20 20 20 20 38 33 20 20 7b 61   p}.      83  {a
20a0: 62 63 64 20 61 62 63 64 65 20 6b 6c 6d 20 70 71  bcd abcde klm pq
20b0: 72 73 74 20 75 76 77 78 79 7a 7d 20 20 20 20 20  rst uvwxyz}     
20c0: 20 20 7b 75 76 77 20 70 71 72 73 74 20 75 20 70    {uvw pqrst u p
20d0: 20 75 76 77 78 79 7a 20 61 20 70 71 72 73 7d 0a   uvwxyz a pqrs}.
20e0: 20 20 20 20 20 20 38 34 20 20 7b 6b 20 6b 6c 6d        84  {k klm
20f0: 20 61 62 63 20 75 76 20 75 76 77 78 79 20 6b 6c   abc uv uvwxy kl
2100: 6d 20 6b 6c 6d 6e 7d 20 20 20 20 20 20 20 7b 6b  m klmn}       {k
2110: 20 61 62 63 20 70 71 72 20 61 20 61 62 63 20 70   abc pqr a abc p
2120: 20 6b 6c 7d 0a 20 20 20 20 20 20 38 35 20 20 7b   kl}.      85  {
2130: 6b 6c 6d 6e 20 61 62 63 64 20 70 71 72 73 20 70  klmn abcd pqrs p
2140: 20 70 71 20 6b 6c 6d 20 61 7d 20 20 20 20 20 20   pq klm a}      
2150: 20 20 20 7b 6b 6c 6d 6e 20 6b 6c 20 61 62 20 75     {klmn kl ab u
2160: 76 77 20 70 71 7d 0a 20 20 20 20 20 20 38 36 20  vw pq}.      86 
2170: 20 7b 6b 6c 6d 6e 20 61 20 70 71 72 73 20 61 62   {klmn a pqrs ab
2180: 63 20 75 76 77 20 70 71 72 73 74 7d 20 20 20 20  c uvw pqrst}    
2190: 20 20 20 20 20 7b 61 20 70 71 72 20 6b 6c 20 6b       {a pqr kl k
21a0: 6c 6d 20 61 20 6b 20 66 7d 0a 20 20 20 20 20 20  lm a k f}.      
21b0: 38 37 20 20 7b 70 71 72 73 20 61 62 20 75 76 77  87  {pqrs ab uvw
21c0: 78 20 75 76 77 78 79 20 61 20 70 71 72 20 66 7d  x uvwxy a pqr f}
21d0: 20 20 20 20 20 20 20 20 7b 66 67 20 6b 6c 6d 20          {fg klm 
21e0: 75 76 77 78 20 70 71 72 20 70 71 72 7d 0a 20 20  uvwx pqr pqr}.  
21f0: 20 20 20 20 38 38 20 20 7b 6b 6c 6d 6e 6f 20 61      88  {klmno a
2200: 62 20 6b 20 6b 6c 20 75 20 75 76 77 78 79 7a 7d  b k kl u uvwxyz}
2210: 20 20 20 20 20 20 20 20 20 20 20 20 7b 75 76 20              {uv 
2220: 6b 6c 20 75 76 77 20 66 67 68 69 20 75 76 20 75  kl uvw fghi uv u
2230: 76 77 7d 0a 20 20 20 20 20 20 38 39 20 20 7b 70  vw}.      89  {p
2240: 71 20 66 67 68 69 20 70 71 72 73 74 20 6b 6c 6d  q fghi pqrst klm
2250: 6e 20 75 76 77 78 79 20 61 62 63 20 70 71 72 73  n uvwxy abc pqrs
2260: 7d 20 7b 66 67 20 66 20 66 20 66 67 20 61 62 63  } {fg f f fg abc
2270: 20 61 62 63 64 65 20 6b 6c 6d 7d 0a 20 20 20 20   abcde klm}.    
2280: 20 20 39 30 20 20 7b 6b 6c 20 61 20 6b 20 66 67    90  {kl a k fg
2290: 68 69 20 75 76 77 78 20 66 67 68 69 20 75 7d 20  hi uvwx fghi u} 
22a0: 20 20 20 20 20 20 20 20 20 20 7b 61 62 20 75 76            {ab uv
22b0: 77 20 70 71 72 20 66 67 20 61 20 70 20 61 62 63  w pqr fg a p abc
22c0: 7d 0a 20 20 20 20 20 20 39 31 20 20 7b 75 76 77  }.      91  {uvw
22d0: 78 20 70 71 72 73 20 6b 6c 6d 6e 6f 20 61 62 20  x pqrs klmno ab 
22e0: 66 67 68 20 75 76 77 78 7d 20 20 20 20 20 20 20  fgh uvwx}       
22f0: 7b 70 71 72 20 75 76 77 78 20 61 62 63 20 6b 6c  {pqr uvwx abc kl
2300: 20 66 20 6b 6c 6d 6e 6f 20 6b 6c 7d 0a 20 20 20   f klmno kl}.   
2310: 20 20 20 39 32 20 20 7b 66 67 68 69 6a 20 70 71     92  {fghij pq
2320: 20 70 71 72 73 20 66 67 68 69 6a 20 66 20 70 71   pqrs fghij f pq
2330: 72 73 74 7d 20 20 20 20 20 20 20 7b 75 20 61 62  rst}       {u ab
2340: 63 64 65 20 66 67 20 70 71 20 70 71 72 20 66 67  cde fg pq pqr fg
2350: 68 20 6b 7d 0a 20 20 20 20 20 20 39 33 20 20 7b  h k}.      93  {
2360: 66 67 68 20 75 20 70 71 72 73 20 61 62 63 64 65  fgh u pqrs abcde
2370: 20 6b 6c 6d 6e 6f 20 61 62 63 7d 20 20 20 20 20   klmno abc}     
2380: 20 20 20 7b 61 62 63 20 66 67 20 70 71 72 73 74     {abc fg pqrst
2390: 20 70 71 72 20 61 62 63 64 65 7d 0a 20 20 20 20   pqr abcde}.    
23a0: 20 20 39 34 20 20 7b 75 76 77 78 20 70 20 61 62    94  {uvwx p ab
23b0: 63 20 66 20 70 71 72 20 70 7d 20 20 20 20 20 20  c f pqr p}      
23c0: 20 20 20 20 20 20 20 20 20 20 7b 6b 20 70 71 72            {k pqr
23d0: 73 20 6b 6c 20 6b 6c 6d 20 61 62 63 20 66 67 68  s kl klm abc fgh
23e0: 69 20 6b 6c 6d 7d 0a 20 20 20 20 20 20 39 35 20  i klm}.      95 
23f0: 20 7b 6b 6c 20 70 20 6b 6c 6d 6e 6f 20 75 76 77   {kl p klmno uvw
2400: 78 79 7a 20 6b 6c 6d 6e 7d 20 20 20 20 20 20 20  xyz klmn}       
2410: 20 20 20 20 20 7b 66 67 68 69 20 61 62 20 61 20       {fghi ab a 
2420: 66 67 68 69 20 70 71 72 73 20 6b 6c 7d 0a 20 20  fghi pqrs kl}.  
2430: 20 20 20 20 39 36 20 20 7b 70 71 72 20 66 67 68      96  {pqr fgh
2440: 20 70 71 20 75 76 77 78 20 61 7d 20 20 20 20 20   pq uvwx a}     
2450: 20 20 20 20 20 20 20 20 20 20 20 20 7b 75 76 77              {uvw
2460: 20 6b 6c 6d 20 6b 6c 6d 6e 6f 20 66 67 20 75 76   klm klmno fg uv
2470: 77 78 79 20 75 76 77 78 7d 0a 20 20 20 20 20 20  wxy uvwx}.      
2480: 39 37 20 20 7b 66 67 20 61 62 63 20 75 76 77 78  97  {fg abc uvwx
2490: 79 7a 20 66 67 68 69 20 70 71 72 73 74 20 70 71  yz fghi pqrst pq
24a0: 7d 20 20 20 20 20 20 20 7b 61 62 63 20 6b 20 61  }       {abc k a
24b0: 20 61 62 20 61 62 63 64 65 20 66 7d 0a 20 20 20   ab abcde f}.   
24c0: 20 20 20 39 38 20 20 7b 75 76 77 78 79 20 66 67     98  {uvwxy fg
24d0: 68 69 20 75 76 77 78 79 20 75 20 61 62 63 64 65  hi uvwxy u abcde
24e0: 20 61 62 63 64 65 20 75 76 77 7d 20 7b 6b 6c 6d   abcde uvw} {klm
24f0: 6e 20 75 76 77 78 20 70 71 72 73 20 75 76 77 20  n uvwx pqrs uvw 
2500: 75 76 77 78 79 20 61 62 63 64 65 7d 0a 20 20 20  uvwxy abcde}.   
2510: 20 20 20 39 39 20 20 7b 70 71 20 66 67 20 66 67     99  {pq fg fg
2520: 68 69 20 75 76 77 78 20 75 76 77 78 20 66 67 68  hi uvwx uvwx fgh
2530: 69 6a 20 75 76 77 78 79 7d 20 20 7b 6b 6c 6d 6e  ij uvwxy}  {klmn
2540: 20 6b 6c 6d 6e 20 66 20 61 62 63 20 66 67 20 61   klmn f abc fg a
2550: 7d 0a 20 20 20 20 7d 20 7b 0a 20 20 20 20 20 20  }.    } {.      
2560: 65 78 65 63 73 71 6c 20 7b 0a 20 20 20 20 20 20  execsql {.      
2570: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 74 31    INSERT INTO t1
2580: 28 72 6f 77 69 64 2c 20 61 2c 20 62 29 20 56 41  (rowid, a, b) VA
2590: 4c 55 45 53 28 24 72 6f 77 69 64 2c 20 24 61 2c  LUES($rowid, $a,
25a0: 20 24 62 29 3b 0a 20 20 20 20 20 20 7d 0a 20 20   $b);.      }.  
25b0: 20 20 7d 0a 20 20 7d 20 7b 7d 0a 20 20 0a 20 20    }.  } {}.  .  
25c0: 70 72 6f 63 20 70 72 65 66 69 78 5f 71 75 65 72  proc prefix_quer
25d0: 79 20 7b 70 72 65 66 69 78 6c 69 73 74 7d 20 7b  y {prefixlist} {
25e0: 0a 20 20 20 20 73 65 74 20 72 65 74 20 5b 6c 69  .    set ret [li
25f0: 73 74 5d 0a 20 20 20 20 64 62 20 65 76 61 6c 20  st].    db eval 
2600: 7b 53 45 4c 45 43 54 20 72 6f 77 69 64 2c 20 61  {SELECT rowid, a
2610: 2c 20 62 20 46 52 4f 4d 20 74 31 20 4f 52 44 45  , b FROM t1 ORDE
2620: 52 20 42 59 20 72 6f 77 69 64 20 44 45 53 43 7d  R BY rowid DESC}
2630: 20 7b 0a 20 20 20 20 20 20 73 65 74 20 62 4d 61   {.      set bMa
2640: 74 63 68 20 31 0a 20 20 20 20 20 20 66 6f 72 65  tch 1.      fore
2650: 61 63 68 20 70 72 65 66 20 24 70 72 65 66 69 78  ach pref $prefix
2660: 6c 69 73 74 20 7b 0a 20 20 20 20 20 20 20 20 69  list {.        i
2670: 66 20 7b 20 5b 6c 73 65 61 72 63 68 20 2d 67 6c  f { [lsearch -gl
2680: 6f 62 20 24 61 20 24 70 72 65 66 5d 3c 30 20 26  ob $a $pref]<0 &
2690: 26 20 5b 6c 73 65 61 72 63 68 20 2d 67 6c 6f 62  & [lsearch -glob
26a0: 20 24 62 20 24 70 72 65 66 5d 3c 30 20 7d 20 7b   $b $pref]<0 } {
26b0: 0a 20 20 20 20 20 20 20 20 20 20 73 65 74 20 62  .          set b
26c0: 4d 61 74 63 68 20 30 0a 20 20 20 20 20 20 20 20  Match 0.        
26d0: 20 20 62 72 65 61 6b 0a 20 20 20 20 20 20 20 20    break.        
26e0: 7d 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20  }.      }.      
26f0: 69 66 20 7b 24 62 4d 61 74 63 68 7d 20 7b 20 6c  if {$bMatch} { l
2700: 61 70 70 65 6e 64 20 72 65 74 20 24 72 6f 77 69  append ret $rowi
2710: 64 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 72 65  d }.    }.    re
2720: 74 75 72 6e 20 24 72 65 74 0a 20 20 7d 0a 0a 20  turn $ret.  }.. 
2730: 20 64 6f 5f 65 78 65 63 73 71 6c 5f 74 65 73 74   do_execsql_test
2740: 20 24 54 2e 69 6e 74 65 67 72 69 74 79 20 7b 0a   $T.integrity {.
2750: 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20      INSERT INTO 
2760: 74 31 28 74 31 29 20 56 41 4c 55 45 53 28 27 69  t1(t1) VALUES('i
2770: 6e 74 65 67 72 69 74 79 2d 63 68 65 63 6b 27 29  ntegrity-check')
2780: 3b 0a 20 20 7d 0a 20 20 0a 20 20 66 6f 72 65 61  ;.  }.  .  forea
2790: 63 68 20 7b 62 41 73 63 20 73 71 6c 7d 20 7b 0a  ch {bAsc sql} {.
27a0: 20 20 20 20 31 20 7b 53 45 4c 45 43 54 20 72 6f      1 {SELECT ro
27b0: 77 69 64 20 46 52 4f 4d 20 74 31 20 57 48 45 52  wid FROM t1 WHER
27c0: 45 20 74 31 20 4d 41 54 43 48 20 24 70 72 65 66  E t1 MATCH $pref
27d0: 69 78 7d 0a 20 20 20 20 30 20 7b 53 45 4c 45 43  ix}.    0 {SELEC
27e0: 54 20 72 6f 77 69 64 20 46 52 4f 4d 20 74 31 20  T rowid FROM t1 
27f0: 57 48 45 52 45 20 74 31 20 4d 41 54 43 48 20 24  WHERE t1 MATCH $
2800: 70 72 65 66 69 78 20 4f 52 44 45 52 20 42 59 20  prefix ORDER BY 
2810: 72 6f 77 69 64 20 44 45 53 43 7d 0a 20 20 7d 20  rowid DESC}.  } 
2820: 7b 0a 20 20 20 20 66 6f 72 65 61 63 68 20 7b 74  {.    foreach {t
2830: 6e 20 70 72 65 66 69 78 7d 20 7b 0a 20 20 20 20  n prefix} {.    
2840: 20 20 31 20 20 7b 61 2a 7d 20 32 20 7b 61 62 2a    1  {a*} 2 {ab*
2850: 7d 20 33 20 7b 61 62 63 2a 7d 20 34 20 7b 61 62  } 3 {abc*} 4 {ab
2860: 63 64 2a 7d 20 35 20 7b 61 62 63 64 65 2a 7d 20  cd*} 5 {abcde*} 
2870: 0a 20 20 20 20 20 20 36 20 20 7b 66 2a 7d 20 37  .      6  {f*} 7
2880: 20 7b 66 67 2a 7d 20 38 20 7b 66 67 68 2a 7d 20   {fg*} 8 {fgh*} 
2890: 39 20 7b 66 67 68 69 2a 7d 20 31 30 20 7b 66 67  9 {fghi*} 10 {fg
28a0: 68 69 6a 2a 7d 0a 20 20 20 20 20 20 31 31 20 7b  hij*}.      11 {
28b0: 6b 2a 7d 20 31 32 20 7b 6b 6c 2a 7d 20 31 33 20  k*} 12 {kl*} 13 
28c0: 7b 6b 6c 6d 2a 7d 20 31 34 20 7b 6b 6c 6d 6e 2a  {klm*} 14 {klmn*
28d0: 7d 20 31 35 20 7b 6b 6c 6d 6e 6f 2a 7d 0a 20 20  } 15 {klmno*}.  
28e0: 20 20 20 20 31 36 20 7b 70 2a 7d 20 31 37 20 7b      16 {p*} 17 {
28f0: 70 71 2a 7d 20 31 38 20 7b 70 71 72 2a 7d 20 31  pq*} 18 {pqr*} 1
2900: 39 20 7b 70 71 72 73 2a 7d 20 32 30 20 7b 70 71  9 {pqrs*} 20 {pq
2910: 72 73 74 2a 7d 0a 20 20 20 20 20 20 32 31 20 7b  rst*}.      21 {
2920: 75 2a 7d 20 32 32 20 7b 75 76 2a 7d 20 32 33 20  u*} 22 {uv*} 23 
2930: 7b 75 76 77 2a 7d 20 32 34 20 7b 75 76 77 78 2a  {uvw*} 24 {uvwx*
2940: 7d 20 32 35 20 7b 75 76 77 78 79 2a 7d 20 32 36  } 25 {uvwxy*} 26
2950: 20 7b 75 76 77 78 79 7a 2a 7d 0a 20 20 20 20 20   {uvwxyz*}.     
2960: 20 32 37 20 7b 78 2a 7d 0a 20 20 20 20 20 20 32   27 {x*}.      2
2970: 38 20 7b 61 20 66 2a 7d 20 32 39 20 7b 61 2a 20  8 {a f*} 29 {a* 
2980: 66 2a 7d 20 33 30 20 7b 61 2a 20 66 67 68 69 6a  f*} 30 {a* fghij
2990: 2a 7d 0a 20 20 20 20 7d 20 7b 0a 20 20 20 20 20  *}.    } {.     
29a0: 20 73 65 74 20 72 65 73 20 5b 70 72 65 66 69 78   set res [prefix
29b0: 5f 71 75 65 72 79 20 24 70 72 65 66 69 78 5d 0a  _query $prefix].
29c0: 20 20 20 20 20 20 69 66 20 7b 24 62 41 73 63 7d        if {$bAsc}
29d0: 20 7b 0a 20 20 20 20 20 20 20 20 73 65 74 20 72   {.        set r
29e0: 65 73 20 5b 6c 73 6f 72 74 20 2d 69 6e 74 65 67  es [lsort -integ
29f0: 65 72 20 2d 69 6e 63 72 65 61 73 69 6e 67 20 24  er -increasing $
2a00: 72 65 73 5d 0a 20 20 20 20 20 20 7d 0a 20 20 20  res].      }.   
2a10: 20 20 20 73 65 74 20 6e 20 5b 6c 6c 65 6e 67 74     set n [llengt
2a20: 68 20 24 72 65 73 5d 0a 20 20 20 20 20 20 69 66  h $res].      if
2a30: 20 7b 24 54 3d 3d 35 7d 20 62 72 65 61 6b 70 6f   {$T==5} breakpo
2a40: 69 6e 74 20 0a 20 20 20 20 20 20 64 6f 5f 65 78  int .      do_ex
2a50: 65 63 73 71 6c 5f 74 65 73 74 20 24 54 2e 24 62  ecsql_test $T.$b
2a60: 41 73 63 2e 24 74 6e 2e 24 6e 20 24 73 71 6c 20  Asc.$tn.$n $sql 
2a70: 24 72 65 73 0a 20 20 20 20 7d 0a 20 20 7d 0a 0a  $res.    }.  }..
2a80: 20 20 63 61 74 63 68 73 71 6c 20 43 4f 4d 4d 49    catchsql COMMI
2a90: 54 0a 7d 0a 0a 66 69 6e 69 73 68 5f 74 65 73 74  T.}..finish_test
2aa0: 0a 0a                                            ..