1 //===----------------------------------------------------------------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
12 // int compare(size_type pos1, size_type n1, const basic_string& str,
13 // size_type pos2, size_type n2) const;
19 #include "min_allocator.h"
32 test(const S& s, typename S::size_type pos1, typename S::size_type n1,
33 const S& str, typename S::size_type pos2, typename S::size_type n2, int x)
37 assert(sign(s.compare(pos1, n1, str, pos2, n2)) == sign(x));
38 assert(pos1 <= s.size());
39 assert(pos2 <= str.size());
41 catch (std::out_of_range&)
43 assert(pos1 > s.size() || pos2 > str.size());
50 test(S(""), 0, 0, S(""), 0, 0, 0);
51 test(S(""), 0, 0, S(""), 0, 1, 0);
52 test(S(""), 0, 0, S(""), 1, 0, 0);
53 test(S(""), 0, 0, S("abcde"), 0, 0, 0);
54 test(S(""), 0, 0, S("abcde"), 0, 1, -1);
55 test(S(""), 0, 0, S("abcde"), 0, 2, -2);
56 test(S(""), 0, 0, S("abcde"), 0, 4, -4);
57 test(S(""), 0, 0, S("abcde"), 0, 5, -5);
58 test(S(""), 0, 0, S("abcde"), 0, 6, -5);
59 test(S(""), 0, 0, S("abcde"), 1, 0, 0);
60 test(S(""), 0, 0, S("abcde"), 1, 1, -1);
61 test(S(""), 0, 0, S("abcde"), 1, 2, -2);
62 test(S(""), 0, 0, S("abcde"), 1, 3, -3);
63 test(S(""), 0, 0, S("abcde"), 1, 4, -4);
64 test(S(""), 0, 0, S("abcde"), 1, 5, -4);
65 test(S(""), 0, 0, S("abcde"), 2, 0, 0);
66 test(S(""), 0, 0, S("abcde"), 2, 1, -1);
67 test(S(""), 0, 0, S("abcde"), 2, 2, -2);
68 test(S(""), 0, 0, S("abcde"), 2, 3, -3);
69 test(S(""), 0, 0, S("abcde"), 2, 4, -3);
70 test(S(""), 0, 0, S("abcde"), 4, 0, 0);
71 test(S(""), 0, 0, S("abcde"), 4, 1, -1);
72 test(S(""), 0, 0, S("abcde"), 4, 2, -1);
73 test(S(""), 0, 0, S("abcde"), 5, 0, 0);
74 test(S(""), 0, 0, S("abcde"), 5, 1, 0);
75 test(S(""), 0, 0, S("abcde"), 6, 0, 0);
76 test(S(""), 0, 0, S("abcdefghij"), 0, 0, 0);
77 test(S(""), 0, 0, S("abcdefghij"), 0, 1, -1);
78 test(S(""), 0, 0, S("abcdefghij"), 0, 5, -5);
79 test(S(""), 0, 0, S("abcdefghij"), 0, 9, -9);
80 test(S(""), 0, 0, S("abcdefghij"), 0, 10, -10);
81 test(S(""), 0, 0, S("abcdefghij"), 0, 11, -10);
82 test(S(""), 0, 0, S("abcdefghij"), 1, 0, 0);
83 test(S(""), 0, 0, S("abcdefghij"), 1, 1, -1);
84 test(S(""), 0, 0, S("abcdefghij"), 1, 4, -4);
85 test(S(""), 0, 0, S("abcdefghij"), 1, 8, -8);
86 test(S(""), 0, 0, S("abcdefghij"), 1, 9, -9);
87 test(S(""), 0, 0, S("abcdefghij"), 1, 10, -9);
88 test(S(""), 0, 0, S("abcdefghij"), 5, 0, 0);
89 test(S(""), 0, 0, S("abcdefghij"), 5, 1, -1);
90 test(S(""), 0, 0, S("abcdefghij"), 5, 2, -2);
91 test(S(""), 0, 0, S("abcdefghij"), 5, 4, -4);
92 test(S(""), 0, 0, S("abcdefghij"), 5, 5, -5);
93 test(S(""), 0, 0, S("abcdefghij"), 5, 6, -5);
94 test(S(""), 0, 0, S("abcdefghij"), 9, 0, 0);
95 test(S(""), 0, 0, S("abcdefghij"), 9, 1, -1);
96 test(S(""), 0, 0, S("abcdefghij"), 9, 2, -1);
97 test(S(""), 0, 0, S("abcdefghij"), 10, 0, 0);
98 test(S(""), 0, 0, S("abcdefghij"), 10, 1, 0);
99 test(S(""), 0, 0, S("abcdefghij"), 11, 0, 0);
100 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
101 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 0, 1, -1);
102 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 0, 10, -10);
103 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 0, 19, -19);
104 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 0, 20, -20);
105 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 0, 21, -20);
106 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
107 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 1, 1, -1);
108 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 1, 9, -9);
109 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 1, 18, -18);
110 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 1, 19, -19);
111 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 1, 20, -19);
112 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
113 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 10, 1, -1);
114 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 10, 5, -5);
115 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 10, 9, -9);
116 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 10, 10, -10);
117 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 10, 11, -10);
118 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
119 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 19, 1, -1);
120 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 19, 2, -1);
121 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
122 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
123 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
124 test(S(""), 0, 1, S(""), 0, 0, 0);
125 test(S(""), 0, 1, S(""), 0, 1, 0);
126 test(S(""), 0, 1, S(""), 1, 0, 0);
127 test(S(""), 0, 1, S("abcde"), 0, 0, 0);
128 test(S(""), 0, 1, S("abcde"), 0, 1, -1);
129 test(S(""), 0, 1, S("abcde"), 0, 2, -2);
130 test(S(""), 0, 1, S("abcde"), 0, 4, -4);
131 test(S(""), 0, 1, S("abcde"), 0, 5, -5);
132 test(S(""), 0, 1, S("abcde"), 0, 6, -5);
133 test(S(""), 0, 1, S("abcde"), 1, 0, 0);
134 test(S(""), 0, 1, S("abcde"), 1, 1, -1);
135 test(S(""), 0, 1, S("abcde"), 1, 2, -2);
136 test(S(""), 0, 1, S("abcde"), 1, 3, -3);
137 test(S(""), 0, 1, S("abcde"), 1, 4, -4);
138 test(S(""), 0, 1, S("abcde"), 1, 5, -4);
139 test(S(""), 0, 1, S("abcde"), 2, 0, 0);
140 test(S(""), 0, 1, S("abcde"), 2, 1, -1);
141 test(S(""), 0, 1, S("abcde"), 2, 2, -2);
142 test(S(""), 0, 1, S("abcde"), 2, 3, -3);
143 test(S(""), 0, 1, S("abcde"), 2, 4, -3);
144 test(S(""), 0, 1, S("abcde"), 4, 0, 0);
145 test(S(""), 0, 1, S("abcde"), 4, 1, -1);
146 test(S(""), 0, 1, S("abcde"), 4, 2, -1);
147 test(S(""), 0, 1, S("abcde"), 5, 0, 0);
148 test(S(""), 0, 1, S("abcde"), 5, 1, 0);
149 test(S(""), 0, 1, S("abcde"), 6, 0, 0);
155 test(S(""), 0, 1, S("abcdefghij"), 0, 0, 0);
156 test(S(""), 0, 1, S("abcdefghij"), 0, 1, -1);
157 test(S(""), 0, 1, S("abcdefghij"), 0, 5, -5);
158 test(S(""), 0, 1, S("abcdefghij"), 0, 9, -9);
159 test(S(""), 0, 1, S("abcdefghij"), 0, 10, -10);
160 test(S(""), 0, 1, S("abcdefghij"), 0, 11, -10);
161 test(S(""), 0, 1, S("abcdefghij"), 1, 0, 0);
162 test(S(""), 0, 1, S("abcdefghij"), 1, 1, -1);
163 test(S(""), 0, 1, S("abcdefghij"), 1, 4, -4);
164 test(S(""), 0, 1, S("abcdefghij"), 1, 8, -8);
165 test(S(""), 0, 1, S("abcdefghij"), 1, 9, -9);
166 test(S(""), 0, 1, S("abcdefghij"), 1, 10, -9);
167 test(S(""), 0, 1, S("abcdefghij"), 5, 0, 0);
168 test(S(""), 0, 1, S("abcdefghij"), 5, 1, -1);
169 test(S(""), 0, 1, S("abcdefghij"), 5, 2, -2);
170 test(S(""), 0, 1, S("abcdefghij"), 5, 4, -4);
171 test(S(""), 0, 1, S("abcdefghij"), 5, 5, -5);
172 test(S(""), 0, 1, S("abcdefghij"), 5, 6, -5);
173 test(S(""), 0, 1, S("abcdefghij"), 9, 0, 0);
174 test(S(""), 0, 1, S("abcdefghij"), 9, 1, -1);
175 test(S(""), 0, 1, S("abcdefghij"), 9, 2, -1);
176 test(S(""), 0, 1, S("abcdefghij"), 10, 0, 0);
177 test(S(""), 0, 1, S("abcdefghij"), 10, 1, 0);
178 test(S(""), 0, 1, S("abcdefghij"), 11, 0, 0);
179 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 0, 0, 0);
180 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 0, 1, -1);
181 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 0, 10, -10);
182 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 0, 19, -19);
183 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 0, 20, -20);
184 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 0, 21, -20);
185 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 1, 0, 0);
186 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 1, 1, -1);
187 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 1, 9, -9);
188 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 1, 18, -18);
189 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 1, 19, -19);
190 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 1, 20, -19);
191 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 10, 0, 0);
192 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 10, 1, -1);
193 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 10, 5, -5);
194 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 10, 9, -9);
195 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 10, 10, -10);
196 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 10, 11, -10);
197 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 19, 0, 0);
198 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 19, 1, -1);
199 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 19, 2, -1);
200 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 20, 0, 0);
201 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 20, 1, 0);
202 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 21, 0, 0);
203 test(S(""), 1, 0, S(""), 0, 0, 0);
204 test(S(""), 1, 0, S(""), 0, 1, 0);
205 test(S(""), 1, 0, S(""), 1, 0, 0);
206 test(S(""), 1, 0, S("abcde"), 0, 0, 0);
207 test(S(""), 1, 0, S("abcde"), 0, 1, 0);
208 test(S(""), 1, 0, S("abcde"), 0, 2, 0);
209 test(S(""), 1, 0, S("abcde"), 0, 4, 0);
210 test(S(""), 1, 0, S("abcde"), 0, 5, 0);
211 test(S(""), 1, 0, S("abcde"), 0, 6, 0);
212 test(S(""), 1, 0, S("abcde"), 1, 0, 0);
213 test(S(""), 1, 0, S("abcde"), 1, 1, 0);
214 test(S(""), 1, 0, S("abcde"), 1, 2, 0);
215 test(S(""), 1, 0, S("abcde"), 1, 3, 0);
216 test(S(""), 1, 0, S("abcde"), 1, 4, 0);
217 test(S(""), 1, 0, S("abcde"), 1, 5, 0);
218 test(S(""), 1, 0, S("abcde"), 2, 0, 0);
219 test(S(""), 1, 0, S("abcde"), 2, 1, 0);
220 test(S(""), 1, 0, S("abcde"), 2, 2, 0);
221 test(S(""), 1, 0, S("abcde"), 2, 3, 0);
222 test(S(""), 1, 0, S("abcde"), 2, 4, 0);
223 test(S(""), 1, 0, S("abcde"), 4, 0, 0);
224 test(S(""), 1, 0, S("abcde"), 4, 1, 0);
225 test(S(""), 1, 0, S("abcde"), 4, 2, 0);
226 test(S(""), 1, 0, S("abcde"), 5, 0, 0);
227 test(S(""), 1, 0, S("abcde"), 5, 1, 0);
228 test(S(""), 1, 0, S("abcde"), 6, 0, 0);
229 test(S(""), 1, 0, S("abcdefghij"), 0, 0, 0);
230 test(S(""), 1, 0, S("abcdefghij"), 0, 1, 0);
231 test(S(""), 1, 0, S("abcdefghij"), 0, 5, 0);
232 test(S(""), 1, 0, S("abcdefghij"), 0, 9, 0);
233 test(S(""), 1, 0, S("abcdefghij"), 0, 10, 0);
234 test(S(""), 1, 0, S("abcdefghij"), 0, 11, 0);
235 test(S(""), 1, 0, S("abcdefghij"), 1, 0, 0);
236 test(S(""), 1, 0, S("abcdefghij"), 1, 1, 0);
237 test(S(""), 1, 0, S("abcdefghij"), 1, 4, 0);
238 test(S(""), 1, 0, S("abcdefghij"), 1, 8, 0);
239 test(S(""), 1, 0, S("abcdefghij"), 1, 9, 0);
240 test(S(""), 1, 0, S("abcdefghij"), 1, 10, 0);
241 test(S(""), 1, 0, S("abcdefghij"), 5, 0, 0);
242 test(S(""), 1, 0, S("abcdefghij"), 5, 1, 0);
243 test(S(""), 1, 0, S("abcdefghij"), 5, 2, 0);
244 test(S(""), 1, 0, S("abcdefghij"), 5, 4, 0);
245 test(S(""), 1, 0, S("abcdefghij"), 5, 5, 0);
246 test(S(""), 1, 0, S("abcdefghij"), 5, 6, 0);
247 test(S(""), 1, 0, S("abcdefghij"), 9, 0, 0);
248 test(S(""), 1, 0, S("abcdefghij"), 9, 1, 0);
249 test(S(""), 1, 0, S("abcdefghij"), 9, 2, 0);
250 test(S(""), 1, 0, S("abcdefghij"), 10, 0, 0);
251 test(S(""), 1, 0, S("abcdefghij"), 10, 1, 0);
252 test(S(""), 1, 0, S("abcdefghij"), 11, 0, 0);
253 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
254 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 0, 1, 0);
260 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 0, 10, 0);
261 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 0, 19, 0);
262 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 0, 20, 0);
263 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 0, 21, 0);
264 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
265 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 1, 1, 0);
266 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 1, 9, 0);
267 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 1, 18, 0);
268 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 1, 19, 0);
269 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 1, 20, 0);
270 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
271 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 10, 1, 0);
272 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 10, 5, 0);
273 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 10, 9, 0);
274 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 10, 10, 0);
275 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 10, 11, 0);
276 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
277 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 19, 1, 0);
278 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 19, 2, 0);
279 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
280 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
281 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
282 test(S("abcde"), 0, 0, S(""), 0, 0, 0);
283 test(S("abcde"), 0, 0, S(""), 0, 1, 0);
284 test(S("abcde"), 0, 0, S(""), 1, 0, 0);
285 test(S("abcde"), 0, 0, S("abcde"), 0, 0, 0);
286 test(S("abcde"), 0, 0, S("abcde"), 0, 1, -1);
287 test(S("abcde"), 0, 0, S("abcde"), 0, 2, -2);
288 test(S("abcde"), 0, 0, S("abcde"), 0, 4, -4);
289 test(S("abcde"), 0, 0, S("abcde"), 0, 5, -5);
290 test(S("abcde"), 0, 0, S("abcde"), 0, 6, -5);
291 test(S("abcde"), 0, 0, S("abcde"), 1, 0, 0);
292 test(S("abcde"), 0, 0, S("abcde"), 1, 1, -1);
293 test(S("abcde"), 0, 0, S("abcde"), 1, 2, -2);
294 test(S("abcde"), 0, 0, S("abcde"), 1, 3, -3);
295 test(S("abcde"), 0, 0, S("abcde"), 1, 4, -4);
296 test(S("abcde"), 0, 0, S("abcde"), 1, 5, -4);
297 test(S("abcde"), 0, 0, S("abcde"), 2, 0, 0);
298 test(S("abcde"), 0, 0, S("abcde"), 2, 1, -1);
299 test(S("abcde"), 0, 0, S("abcde"), 2, 2, -2);
300 test(S("abcde"), 0, 0, S("abcde"), 2, 3, -3);
301 test(S("abcde"), 0, 0, S("abcde"), 2, 4, -3);
302 test(S("abcde"), 0, 0, S("abcde"), 4, 0, 0);
303 test(S("abcde"), 0, 0, S("abcde"), 4, 1, -1);
304 test(S("abcde"), 0, 0, S("abcde"), 4, 2, -1);
305 test(S("abcde"), 0, 0, S("abcde"), 5, 0, 0);
306 test(S("abcde"), 0, 0, S("abcde"), 5, 1, 0);
307 test(S("abcde"), 0, 0, S("abcde"), 6, 0, 0);
308 test(S("abcde"), 0, 0, S("abcdefghij"), 0, 0, 0);
309 test(S("abcde"), 0, 0, S("abcdefghij"), 0, 1, -1);
310 test(S("abcde"), 0, 0, S("abcdefghij"), 0, 5, -5);
311 test(S("abcde"), 0, 0, S("abcdefghij"), 0, 9, -9);
312 test(S("abcde"), 0, 0, S("abcdefghij"), 0, 10, -10);
313 test(S("abcde"), 0, 0, S("abcdefghij"), 0, 11, -10);
314 test(S("abcde"), 0, 0, S("abcdefghij"), 1, 0, 0);
315 test(S("abcde"), 0, 0, S("abcdefghij"), 1, 1, -1);
316 test(S("abcde"), 0, 0, S("abcdefghij"), 1, 4, -4);
317 test(S("abcde"), 0, 0, S("abcdefghij"), 1, 8, -8);
318 test(S("abcde"), 0, 0, S("abcdefghij"), 1, 9, -9);
319 test(S("abcde"), 0, 0, S("abcdefghij"), 1, 10, -9);
320 test(S("abcde"), 0, 0, S("abcdefghij"), 5, 0, 0);
321 test(S("abcde"), 0, 0, S("abcdefghij"), 5, 1, -1);
322 test(S("abcde"), 0, 0, S("abcdefghij"), 5, 2, -2);
323 test(S("abcde"), 0, 0, S("abcdefghij"), 5, 4, -4);
324 test(S("abcde"), 0, 0, S("abcdefghij"), 5, 5, -5);
325 test(S("abcde"), 0, 0, S("abcdefghij"), 5, 6, -5);
326 test(S("abcde"), 0, 0, S("abcdefghij"), 9, 0, 0);
327 test(S("abcde"), 0, 0, S("abcdefghij"), 9, 1, -1);
328 test(S("abcde"), 0, 0, S("abcdefghij"), 9, 2, -1);
329 test(S("abcde"), 0, 0, S("abcdefghij"), 10, 0, 0);
330 test(S("abcde"), 0, 0, S("abcdefghij"), 10, 1, 0);
331 test(S("abcde"), 0, 0, S("abcdefghij"), 11, 0, 0);
332 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
333 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 0, 1, -1);
334 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 0, 10, -10);
335 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 0, 19, -19);
336 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 0, 20, -20);
337 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 0, 21, -20);
338 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
339 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 1, 1, -1);
340 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 1, 9, -9);
341 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 1, 18, -18);
342 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 1, 19, -19);
343 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 1, 20, -19);
344 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
345 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 10, 1, -1);
346 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 10, 5, -5);
347 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 10, 9, -9);
348 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 10, 10, -10);
349 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 10, 11, -10);
350 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
351 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 19, 1, -1);
352 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 19, 2, -1);
353 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
354 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
355 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
356 test(S("abcde"), 0, 1, S(""), 0, 0, 1);
357 test(S("abcde"), 0, 1, S(""), 0, 1, 1);
358 test(S("abcde"), 0, 1, S(""), 1, 0, 0);
359 test(S("abcde"), 0, 1, S("abcde"), 0, 0, 1);
365 test(S("abcde"), 0, 1, S("abcde"), 0, 1, 0);
366 test(S("abcde"), 0, 1, S("abcde"), 0, 2, -1);
367 test(S("abcde"), 0, 1, S("abcde"), 0, 4, -3);
368 test(S("abcde"), 0, 1, S("abcde"), 0, 5, -4);
369 test(S("abcde"), 0, 1, S("abcde"), 0, 6, -4);
370 test(S("abcde"), 0, 1, S("abcde"), 1, 0, 1);
371 test(S("abcde"), 0, 1, S("abcde"), 1, 1, -1);
372 test(S("abcde"), 0, 1, S("abcde"), 1, 2, -1);
373 test(S("abcde"), 0, 1, S("abcde"), 1, 3, -1);
374 test(S("abcde"), 0, 1, S("abcde"), 1, 4, -1);
375 test(S("abcde"), 0, 1, S("abcde"), 1, 5, -1);
376 test(S("abcde"), 0, 1, S("abcde"), 2, 0, 1);
377 test(S("abcde"), 0, 1, S("abcde"), 2, 1, -2);
378 test(S("abcde"), 0, 1, S("abcde"), 2, 2, -2);
379 test(S("abcde"), 0, 1, S("abcde"), 2, 3, -2);
380 test(S("abcde"), 0, 1, S("abcde"), 2, 4, -2);
381 test(S("abcde"), 0, 1, S("abcde"), 4, 0, 1);
382 test(S("abcde"), 0, 1, S("abcde"), 4, 1, -4);
383 test(S("abcde"), 0, 1, S("abcde"), 4, 2, -4);
384 test(S("abcde"), 0, 1, S("abcde"), 5, 0, 1);
385 test(S("abcde"), 0, 1, S("abcde"), 5, 1, 1);
386 test(S("abcde"), 0, 1, S("abcde"), 6, 0, 0);
387 test(S("abcde"), 0, 1, S("abcdefghij"), 0, 0, 1);
388 test(S("abcde"), 0, 1, S("abcdefghij"), 0, 1, 0);
389 test(S("abcde"), 0, 1, S("abcdefghij"), 0, 5, -4);
390 test(S("abcde"), 0, 1, S("abcdefghij"), 0, 9, -8);
391 test(S("abcde"), 0, 1, S("abcdefghij"), 0, 10, -9);
392 test(S("abcde"), 0, 1, S("abcdefghij"), 0, 11, -9);
393 test(S("abcde"), 0, 1, S("abcdefghij"), 1, 0, 1);
394 test(S("abcde"), 0, 1, S("abcdefghij"), 1, 1, -1);
395 test(S("abcde"), 0, 1, S("abcdefghij"), 1, 4, -1);
396 test(S("abcde"), 0, 1, S("abcdefghij"), 1, 8, -1);
397 test(S("abcde"), 0, 1, S("abcdefghij"), 1, 9, -1);
398 test(S("abcde"), 0, 1, S("abcdefghij"), 1, 10, -1);
399 test(S("abcde"), 0, 1, S("abcdefghij"), 5, 0, 1);
400 test(S("abcde"), 0, 1, S("abcdefghij"), 5, 1, -5);
401 test(S("abcde"), 0, 1, S("abcdefghij"), 5, 2, -5);
402 test(S("abcde"), 0, 1, S("abcdefghij"), 5, 4, -5);
403 test(S("abcde"), 0, 1, S("abcdefghij"), 5, 5, -5);
404 test(S("abcde"), 0, 1, S("abcdefghij"), 5, 6, -5);
405 test(S("abcde"), 0, 1, S("abcdefghij"), 9, 0, 1);
406 test(S("abcde"), 0, 1, S("abcdefghij"), 9, 1, -9);
407 test(S("abcde"), 0, 1, S("abcdefghij"), 9, 2, -9);
408 test(S("abcde"), 0, 1, S("abcdefghij"), 10, 0, 1);
409 test(S("abcde"), 0, 1, S("abcdefghij"), 10, 1, 1);
410 test(S("abcde"), 0, 1, S("abcdefghij"), 11, 0, 0);
411 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 0, 0, 1);
412 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 0, 1, 0);
413 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 0, 10, -9);
414 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 0, 19, -18);
415 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 0, 20, -19);
416 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 0, 21, -19);
417 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 1, 0, 1);
418 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 1, 1, -1);
419 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 1, 9, -1);
420 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 1, 18, -1);
421 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 1, 19, -1);
422 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 1, 20, -1);
423 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 10, 0, 1);
424 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 10, 1, -10);
425 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 10, 5, -10);
426 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 10, 9, -10);
427 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 10, 10, -10);
428 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 10, 11, -10);
429 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 19, 0, 1);
430 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 19, 1, -19);
431 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 19, 2, -19);
432 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 20, 0, 1);
433 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 20, 1, 1);
434 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 21, 0, 0);
435 test(S("abcde"), 0, 2, S(""), 0, 0, 2);
436 test(S("abcde"), 0, 2, S(""), 0, 1, 2);
437 test(S("abcde"), 0, 2, S(""), 1, 0, 0);
438 test(S("abcde"), 0, 2, S("abcde"), 0, 0, 2);
439 test(S("abcde"), 0, 2, S("abcde"), 0, 1, 1);
440 test(S("abcde"), 0, 2, S("abcde"), 0, 2, 0);
441 test(S("abcde"), 0, 2, S("abcde"), 0, 4, -2);
442 test(S("abcde"), 0, 2, S("abcde"), 0, 5, -3);
443 test(S("abcde"), 0, 2, S("abcde"), 0, 6, -3);
444 test(S("abcde"), 0, 2, S("abcde"), 1, 0, 2);
445 test(S("abcde"), 0, 2, S("abcde"), 1, 1, -1);
446 test(S("abcde"), 0, 2, S("abcde"), 1, 2, -1);
447 test(S("abcde"), 0, 2, S("abcde"), 1, 3, -1);
448 test(S("abcde"), 0, 2, S("abcde"), 1, 4, -1);
449 test(S("abcde"), 0, 2, S("abcde"), 1, 5, -1);
450 test(S("abcde"), 0, 2, S("abcde"), 2, 0, 2);
451 test(S("abcde"), 0, 2, S("abcde"), 2, 1, -2);
452 test(S("abcde"), 0, 2, S("abcde"), 2, 2, -2);
453 test(S("abcde"), 0, 2, S("abcde"), 2, 3, -2);
454 test(S("abcde"), 0, 2, S("abcde"), 2, 4, -2);
455 test(S("abcde"), 0, 2, S("abcde"), 4, 0, 2);
456 test(S("abcde"), 0, 2, S("abcde"), 4, 1, -4);
457 test(S("abcde"), 0, 2, S("abcde"), 4, 2, -4);
458 test(S("abcde"), 0, 2, S("abcde"), 5, 0, 2);
459 test(S("abcde"), 0, 2, S("abcde"), 5, 1, 2);
460 test(S("abcde"), 0, 2, S("abcde"), 6, 0, 0);
461 test(S("abcde"), 0, 2, S("abcdefghij"), 0, 0, 2);
462 test(S("abcde"), 0, 2, S("abcdefghij"), 0, 1, 1);
463 test(S("abcde"), 0, 2, S("abcdefghij"), 0, 5, -3);
464 test(S("abcde"), 0, 2, S("abcdefghij"), 0, 9, -7);
470 test(S("abcde"), 0, 2, S("abcdefghij"), 0, 10, -8);
471 test(S("abcde"), 0, 2, S("abcdefghij"), 0, 11, -8);
472 test(S("abcde"), 0, 2, S("abcdefghij"), 1, 0, 2);
473 test(S("abcde"), 0, 2, S("abcdefghij"), 1, 1, -1);
474 test(S("abcde"), 0, 2, S("abcdefghij"), 1, 4, -1);
475 test(S("abcde"), 0, 2, S("abcdefghij"), 1, 8, -1);
476 test(S("abcde"), 0, 2, S("abcdefghij"), 1, 9, -1);
477 test(S("abcde"), 0, 2, S("abcdefghij"), 1, 10, -1);
478 test(S("abcde"), 0, 2, S("abcdefghij"), 5, 0, 2);
479 test(S("abcde"), 0, 2, S("abcdefghij"), 5, 1, -5);
480 test(S("abcde"), 0, 2, S("abcdefghij"), 5, 2, -5);
481 test(S("abcde"), 0, 2, S("abcdefghij"), 5, 4, -5);
482 test(S("abcde"), 0, 2, S("abcdefghij"), 5, 5, -5);
483 test(S("abcde"), 0, 2, S("abcdefghij"), 5, 6, -5);
484 test(S("abcde"), 0, 2, S("abcdefghij"), 9, 0, 2);
485 test(S("abcde"), 0, 2, S("abcdefghij"), 9, 1, -9);
486 test(S("abcde"), 0, 2, S("abcdefghij"), 9, 2, -9);
487 test(S("abcde"), 0, 2, S("abcdefghij"), 10, 0, 2);
488 test(S("abcde"), 0, 2, S("abcdefghij"), 10, 1, 2);
489 test(S("abcde"), 0, 2, S("abcdefghij"), 11, 0, 0);
490 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 0, 0, 2);
491 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 0, 1, 1);
492 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 0, 10, -8);
493 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 0, 19, -17);
494 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 0, 20, -18);
495 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 0, 21, -18);
496 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 1, 0, 2);
497 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 1, 1, -1);
498 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 1, 9, -1);
499 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 1, 18, -1);
500 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 1, 19, -1);
501 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 1, 20, -1);
502 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 10, 0, 2);
503 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 10, 1, -10);
504 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 10, 5, -10);
505 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 10, 9, -10);
506 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 10, 10, -10);
507 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 10, 11, -10);
508 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 19, 0, 2);
509 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 19, 1, -19);
510 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 19, 2, -19);
511 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 20, 0, 2);
512 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 20, 1, 2);
513 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 21, 0, 0);
514 test(S("abcde"), 0, 4, S(""), 0, 0, 4);
515 test(S("abcde"), 0, 4, S(""), 0, 1, 4);
516 test(S("abcde"), 0, 4, S(""), 1, 0, 0);
517 test(S("abcde"), 0, 4, S("abcde"), 0, 0, 4);
518 test(S("abcde"), 0, 4, S("abcde"), 0, 1, 3);
519 test(S("abcde"), 0, 4, S("abcde"), 0, 2, 2);
520 test(S("abcde"), 0, 4, S("abcde"), 0, 4, 0);
521 test(S("abcde"), 0, 4, S("abcde"), 0, 5, -1);
522 test(S("abcde"), 0, 4, S("abcde"), 0, 6, -1);
523 test(S("abcde"), 0, 4, S("abcde"), 1, 0, 4);
524 test(S("abcde"), 0, 4, S("abcde"), 1, 1, -1);
525 test(S("abcde"), 0, 4, S("abcde"), 1, 2, -1);
526 test(S("abcde"), 0, 4, S("abcde"), 1, 3, -1);
527 test(S("abcde"), 0, 4, S("abcde"), 1, 4, -1);
528 test(S("abcde"), 0, 4, S("abcde"), 1, 5, -1);
529 test(S("abcde"), 0, 4, S("abcde"), 2, 0, 4);
530 test(S("abcde"), 0, 4, S("abcde"), 2, 1, -2);
531 test(S("abcde"), 0, 4, S("abcde"), 2, 2, -2);
532 test(S("abcde"), 0, 4, S("abcde"), 2, 3, -2);
533 test(S("abcde"), 0, 4, S("abcde"), 2, 4, -2);
534 test(S("abcde"), 0, 4, S("abcde"), 4, 0, 4);
535 test(S("abcde"), 0, 4, S("abcde"), 4, 1, -4);
536 test(S("abcde"), 0, 4, S("abcde"), 4, 2, -4);
537 test(S("abcde"), 0, 4, S("abcde"), 5, 0, 4);
538 test(S("abcde"), 0, 4, S("abcde"), 5, 1, 4);
539 test(S("abcde"), 0, 4, S("abcde"), 6, 0, 0);
540 test(S("abcde"), 0, 4, S("abcdefghij"), 0, 0, 4);
541 test(S("abcde"), 0, 4, S("abcdefghij"), 0, 1, 3);
542 test(S("abcde"), 0, 4, S("abcdefghij"), 0, 5, -1);
543 test(S("abcde"), 0, 4, S("abcdefghij"), 0, 9, -5);
544 test(S("abcde"), 0, 4, S("abcdefghij"), 0, 10, -6);
545 test(S("abcde"), 0, 4, S("abcdefghij"), 0, 11, -6);
546 test(S("abcde"), 0, 4, S("abcdefghij"), 1, 0, 4);
547 test(S("abcde"), 0, 4, S("abcdefghij"), 1, 1, -1);
548 test(S("abcde"), 0, 4, S("abcdefghij"), 1, 4, -1);
549 test(S("abcde"), 0, 4, S("abcdefghij"), 1, 8, -1);
550 test(S("abcde"), 0, 4, S("abcdefghij"), 1, 9, -1);
551 test(S("abcde"), 0, 4, S("abcdefghij"), 1, 10, -1);
552 test(S("abcde"), 0, 4, S("abcdefghij"), 5, 0, 4);
553 test(S("abcde"), 0, 4, S("abcdefghij"), 5, 1, -5);
554 test(S("abcde"), 0, 4, S("abcdefghij"), 5, 2, -5);
555 test(S("abcde"), 0, 4, S("abcdefghij"), 5, 4, -5);
556 test(S("abcde"), 0, 4, S("abcdefghij"), 5, 5, -5);
557 test(S("abcde"), 0, 4, S("abcdefghij"), 5, 6, -5);
558 test(S("abcde"), 0, 4, S("abcdefghij"), 9, 0, 4);
559 test(S("abcde"), 0, 4, S("abcdefghij"), 9, 1, -9);
560 test(S("abcde"), 0, 4, S("abcdefghij"), 9, 2, -9);
561 test(S("abcde"), 0, 4, S("abcdefghij"), 10, 0, 4);
562 test(S("abcde"), 0, 4, S("abcdefghij"), 10, 1, 4);
563 test(S("abcde"), 0, 4, S("abcdefghij"), 11, 0, 0);
564 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 0, 0, 4);
565 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 0, 1, 3);
566 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 0, 10, -6);
567 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 0, 19, -15);
568 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 0, 20, -16);
569 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 0, 21, -16);
575 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 1, 0, 4);
576 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 1, 1, -1);
577 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 1, 9, -1);
578 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 1, 18, -1);
579 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 1, 19, -1);
580 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 1, 20, -1);
581 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 10, 0, 4);
582 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 10, 1, -10);
583 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 10, 5, -10);
584 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 10, 9, -10);
585 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 10, 10, -10);
586 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 10, 11, -10);
587 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 19, 0, 4);
588 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 19, 1, -19);
589 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 19, 2, -19);
590 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 20, 0, 4);
591 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 20, 1, 4);
592 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 21, 0, 0);
593 test(S("abcde"), 0, 5, S(""), 0, 0, 5);
594 test(S("abcde"), 0, 5, S(""), 0, 1, 5);
595 test(S("abcde"), 0, 5, S(""), 1, 0, 0);
596 test(S("abcde"), 0, 5, S("abcde"), 0, 0, 5);
597 test(S("abcde"), 0, 5, S("abcde"), 0, 1, 4);
598 test(S("abcde"), 0, 5, S("abcde"), 0, 2, 3);
599 test(S("abcde"), 0, 5, S("abcde"), 0, 4, 1);
600 test(S("abcde"), 0, 5, S("abcde"), 0, 5, 0);
601 test(S("abcde"), 0, 5, S("abcde"), 0, 6, 0);
602 test(S("abcde"), 0, 5, S("abcde"), 1, 0, 5);
603 test(S("abcde"), 0, 5, S("abcde"), 1, 1, -1);
604 test(S("abcde"), 0, 5, S("abcde"), 1, 2, -1);
605 test(S("abcde"), 0, 5, S("abcde"), 1, 3, -1);
606 test(S("abcde"), 0, 5, S("abcde"), 1, 4, -1);
607 test(S("abcde"), 0, 5, S("abcde"), 1, 5, -1);
608 test(S("abcde"), 0, 5, S("abcde"), 2, 0, 5);
609 test(S("abcde"), 0, 5, S("abcde"), 2, 1, -2);
610 test(S("abcde"), 0, 5, S("abcde"), 2, 2, -2);
611 test(S("abcde"), 0, 5, S("abcde"), 2, 3, -2);
612 test(S("abcde"), 0, 5, S("abcde"), 2, 4, -2);
613 test(S("abcde"), 0, 5, S("abcde"), 4, 0, 5);
614 test(S("abcde"), 0, 5, S("abcde"), 4, 1, -4);
615 test(S("abcde"), 0, 5, S("abcde"), 4, 2, -4);
616 test(S("abcde"), 0, 5, S("abcde"), 5, 0, 5);
617 test(S("abcde"), 0, 5, S("abcde"), 5, 1, 5);
618 test(S("abcde"), 0, 5, S("abcde"), 6, 0, 0);
619 test(S("abcde"), 0, 5, S("abcdefghij"), 0, 0, 5);
620 test(S("abcde"), 0, 5, S("abcdefghij"), 0, 1, 4);
621 test(S("abcde"), 0, 5, S("abcdefghij"), 0, 5, 0);
622 test(S("abcde"), 0, 5, S("abcdefghij"), 0, 9, -4);
623 test(S("abcde"), 0, 5, S("abcdefghij"), 0, 10, -5);
624 test(S("abcde"), 0, 5, S("abcdefghij"), 0, 11, -5);
625 test(S("abcde"), 0, 5, S("abcdefghij"), 1, 0, 5);
626 test(S("abcde"), 0, 5, S("abcdefghij"), 1, 1, -1);
627 test(S("abcde"), 0, 5, S("abcdefghij"), 1, 4, -1);
628 test(S("abcde"), 0, 5, S("abcdefghij"), 1, 8, -1);
629 test(S("abcde"), 0, 5, S("abcdefghij"), 1, 9, -1);
630 test(S("abcde"), 0, 5, S("abcdefghij"), 1, 10, -1);
631 test(S("abcde"), 0, 5, S("abcdefghij"), 5, 0, 5);
632 test(S("abcde"), 0, 5, S("abcdefghij"), 5, 1, -5);
633 test(S("abcde"), 0, 5, S("abcdefghij"), 5, 2, -5);
634 test(S("abcde"), 0, 5, S("abcdefghij"), 5, 4, -5);
635 test(S("abcde"), 0, 5, S("abcdefghij"), 5, 5, -5);
636 test(S("abcde"), 0, 5, S("abcdefghij"), 5, 6, -5);
637 test(S("abcde"), 0, 5, S("abcdefghij"), 9, 0, 5);
638 test(S("abcde"), 0, 5, S("abcdefghij"), 9, 1, -9);
639 test(S("abcde"), 0, 5, S("abcdefghij"), 9, 2, -9);
640 test(S("abcde"), 0, 5, S("abcdefghij"), 10, 0, 5);
641 test(S("abcde"), 0, 5, S("abcdefghij"), 10, 1, 5);
642 test(S("abcde"), 0, 5, S("abcdefghij"), 11, 0, 0);
643 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 0, 0, 5);
644 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 0, 1, 4);
645 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 0, 10, -5);
646 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 0, 19, -14);
647 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 0, 20, -15);
648 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 0, 21, -15);
649 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 1, 0, 5);
650 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 1, 1, -1);
651 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 1, 9, -1);
652 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 1, 18, -1);
653 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 1, 19, -1);
654 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 1, 20, -1);
655 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 10, 0, 5);
656 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 10, 1, -10);
657 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 10, 5, -10);
658 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 10, 9, -10);
659 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 10, 10, -10);
660 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 10, 11, -10);
661 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 19, 0, 5);
662 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 19, 1, -19);
663 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 19, 2, -19);
664 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 20, 0, 5);
665 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 20, 1, 5);
666 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 21, 0, 0);
667 test(S("abcde"), 0, 6, S(""), 0, 0, 5);
668 test(S("abcde"), 0, 6, S(""), 0, 1, 5);
669 test(S("abcde"), 0, 6, S(""), 1, 0, 0);
670 test(S("abcde"), 0, 6, S("abcde"), 0, 0, 5);
671 test(S("abcde"), 0, 6, S("abcde"), 0, 1, 4);
672 test(S("abcde"), 0, 6, S("abcde"), 0, 2, 3);
673 test(S("abcde"), 0, 6, S("abcde"), 0, 4, 1);
674 test(S("abcde"), 0, 6, S("abcde"), 0, 5, 0);
680 test(S("abcde"), 0, 6, S("abcde"), 0, 6, 0);
681 test(S("abcde"), 0, 6, S("abcde"), 1, 0, 5);
682 test(S("abcde"), 0, 6, S("abcde"), 1, 1, -1);
683 test(S("abcde"), 0, 6, S("abcde"), 1, 2, -1);
684 test(S("abcde"), 0, 6, S("abcde"), 1, 3, -1);
685 test(S("abcde"), 0, 6, S("abcde"), 1, 4, -1);
686 test(S("abcde"), 0, 6, S("abcde"), 1, 5, -1);
687 test(S("abcde"), 0, 6, S("abcde"), 2, 0, 5);
688 test(S("abcde"), 0, 6, S("abcde"), 2, 1, -2);
689 test(S("abcde"), 0, 6, S("abcde"), 2, 2, -2);
690 test(S("abcde"), 0, 6, S("abcde"), 2, 3, -2);
691 test(S("abcde"), 0, 6, S("abcde"), 2, 4, -2);
692 test(S("abcde"), 0, 6, S("abcde"), 4, 0, 5);
693 test(S("abcde"), 0, 6, S("abcde"), 4, 1, -4);
694 test(S("abcde"), 0, 6, S("abcde"), 4, 2, -4);
695 test(S("abcde"), 0, 6, S("abcde"), 5, 0, 5);
696 test(S("abcde"), 0, 6, S("abcde"), 5, 1, 5);
697 test(S("abcde"), 0, 6, S("abcde"), 6, 0, 0);
698 test(S("abcde"), 0, 6, S("abcdefghij"), 0, 0, 5);
699 test(S("abcde"), 0, 6, S("abcdefghij"), 0, 1, 4);
700 test(S("abcde"), 0, 6, S("abcdefghij"), 0, 5, 0);
701 test(S("abcde"), 0, 6, S("abcdefghij"), 0, 9, -4);
702 test(S("abcde"), 0, 6, S("abcdefghij"), 0, 10, -5);
703 test(S("abcde"), 0, 6, S("abcdefghij"), 0, 11, -5);
704 test(S("abcde"), 0, 6, S("abcdefghij"), 1, 0, 5);
705 test(S("abcde"), 0, 6, S("abcdefghij"), 1, 1, -1);
706 test(S("abcde"), 0, 6, S("abcdefghij"), 1, 4, -1);
707 test(S("abcde"), 0, 6, S("abcdefghij"), 1, 8, -1);
708 test(S("abcde"), 0, 6, S("abcdefghij"), 1, 9, -1);
709 test(S("abcde"), 0, 6, S("abcdefghij"), 1, 10, -1);
710 test(S("abcde"), 0, 6, S("abcdefghij"), 5, 0, 5);
711 test(S("abcde"), 0, 6, S("abcdefghij"), 5, 1, -5);
712 test(S("abcde"), 0, 6, S("abcdefghij"), 5, 2, -5);
713 test(S("abcde"), 0, 6, S("abcdefghij"), 5, 4, -5);
714 test(S("abcde"), 0, 6, S("abcdefghij"), 5, 5, -5);
715 test(S("abcde"), 0, 6, S("abcdefghij"), 5, 6, -5);
716 test(S("abcde"), 0, 6, S("abcdefghij"), 9, 0, 5);
717 test(S("abcde"), 0, 6, S("abcdefghij"), 9, 1, -9);
718 test(S("abcde"), 0, 6, S("abcdefghij"), 9, 2, -9);
719 test(S("abcde"), 0, 6, S("abcdefghij"), 10, 0, 5);
720 test(S("abcde"), 0, 6, S("abcdefghij"), 10, 1, 5);
721 test(S("abcde"), 0, 6, S("abcdefghij"), 11, 0, 0);
722 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 0, 0, 5);
723 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 0, 1, 4);
724 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 0, 10, -5);
725 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 0, 19, -14);
726 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 0, 20, -15);
727 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 0, 21, -15);
728 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 1, 0, 5);
729 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 1, 1, -1);
730 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 1, 9, -1);
731 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 1, 18, -1);
732 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 1, 19, -1);
733 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 1, 20, -1);
734 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 10, 0, 5);
735 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 10, 1, -10);
736 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 10, 5, -10);
737 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 10, 9, -10);
738 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 10, 10, -10);
739 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 10, 11, -10);
740 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 19, 0, 5);
741 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 19, 1, -19);
742 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 19, 2, -19);
743 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 20, 0, 5);
744 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 20, 1, 5);
745 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 21, 0, 0);
746 test(S("abcde"), 1, 0, S(""), 0, 0, 0);
747 test(S("abcde"), 1, 0, S(""), 0, 1, 0);
748 test(S("abcde"), 1, 0, S(""), 1, 0, 0);
749 test(S("abcde"), 1, 0, S("abcde"), 0, 0, 0);
750 test(S("abcde"), 1, 0, S("abcde"), 0, 1, -1);
751 test(S("abcde"), 1, 0, S("abcde"), 0, 2, -2);
752 test(S("abcde"), 1, 0, S("abcde"), 0, 4, -4);
753 test(S("abcde"), 1, 0, S("abcde"), 0, 5, -5);
754 test(S("abcde"), 1, 0, S("abcde"), 0, 6, -5);
755 test(S("abcde"), 1, 0, S("abcde"), 1, 0, 0);
756 test(S("abcde"), 1, 0, S("abcde"), 1, 1, -1);
757 test(S("abcde"), 1, 0, S("abcde"), 1, 2, -2);
758 test(S("abcde"), 1, 0, S("abcde"), 1, 3, -3);
759 test(S("abcde"), 1, 0, S("abcde"), 1, 4, -4);
760 test(S("abcde"), 1, 0, S("abcde"), 1, 5, -4);
761 test(S("abcde"), 1, 0, S("abcde"), 2, 0, 0);
762 test(S("abcde"), 1, 0, S("abcde"), 2, 1, -1);
763 test(S("abcde"), 1, 0, S("abcde"), 2, 2, -2);
764 test(S("abcde"), 1, 0, S("abcde"), 2, 3, -3);
765 test(S("abcde"), 1, 0, S("abcde"), 2, 4, -3);
766 test(S("abcde"), 1, 0, S("abcde"), 4, 0, 0);
767 test(S("abcde"), 1, 0, S("abcde"), 4, 1, -1);
768 test(S("abcde"), 1, 0, S("abcde"), 4, 2, -1);
769 test(S("abcde"), 1, 0, S("abcde"), 5, 0, 0);
770 test(S("abcde"), 1, 0, S("abcde"), 5, 1, 0);
771 test(S("abcde"), 1, 0, S("abcde"), 6, 0, 0);
772 test(S("abcde"), 1, 0, S("abcdefghij"), 0, 0, 0);
773 test(S("abcde"), 1, 0, S("abcdefghij"), 0, 1, -1);
774 test(S("abcde"), 1, 0, S("abcdefghij"), 0, 5, -5);
775 test(S("abcde"), 1, 0, S("abcdefghij"), 0, 9, -9);
776 test(S("abcde"), 1, 0, S("abcdefghij"), 0, 10, -10);
777 test(S("abcde"), 1, 0, S("abcdefghij"), 0, 11, -10);
778 test(S("abcde"), 1, 0, S("abcdefghij"), 1, 0, 0);
779 test(S("abcde"), 1, 0, S("abcdefghij"), 1, 1, -1);
785 test(S("abcde"), 1, 0, S("abcdefghij"), 1, 4, -4);
786 test(S("abcde"), 1, 0, S("abcdefghij"), 1, 8, -8);
787 test(S("abcde"), 1, 0, S("abcdefghij"), 1, 9, -9);
788 test(S("abcde"), 1, 0, S("abcdefghij"), 1, 10, -9);
789 test(S("abcde"), 1, 0, S("abcdefghij"), 5, 0, 0);
790 test(S("abcde"), 1, 0, S("abcdefghij"), 5, 1, -1);
791 test(S("abcde"), 1, 0, S("abcdefghij"), 5, 2, -2);
792 test(S("abcde"), 1, 0, S("abcdefghij"), 5, 4, -4);
793 test(S("abcde"), 1, 0, S("abcdefghij"), 5, 5, -5);
794 test(S("abcde"), 1, 0, S("abcdefghij"), 5, 6, -5);
795 test(S("abcde"), 1, 0, S("abcdefghij"), 9, 0, 0);
796 test(S("abcde"), 1, 0, S("abcdefghij"), 9, 1, -1);
797 test(S("abcde"), 1, 0, S("abcdefghij"), 9, 2, -1);
798 test(S("abcde"), 1, 0, S("abcdefghij"), 10, 0, 0);
799 test(S("abcde"), 1, 0, S("abcdefghij"), 10, 1, 0);
800 test(S("abcde"), 1, 0, S("abcdefghij"), 11, 0, 0);
801 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
802 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 0, 1, -1);
803 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 0, 10, -10);
804 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 0, 19, -19);
805 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 0, 20, -20);
806 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 0, 21, -20);
807 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
808 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 1, 1, -1);
809 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 1, 9, -9);
810 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 1, 18, -18);
811 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 1, 19, -19);
812 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 1, 20, -19);
813 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
814 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 10, 1, -1);
815 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 10, 5, -5);
816 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 10, 9, -9);
817 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 10, 10, -10);
818 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 10, 11, -10);
819 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
820 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 19, 1, -1);
821 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 19, 2, -1);
822 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
823 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
824 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
825 test(S("abcde"), 1, 1, S(""), 0, 0, 1);
826 test(S("abcde"), 1, 1, S(""), 0, 1, 1);
827 test(S("abcde"), 1, 1, S(""), 1, 0, 0);
828 test(S("abcde"), 1, 1, S("abcde"), 0, 0, 1);
829 test(S("abcde"), 1, 1, S("abcde"), 0, 1, 1);
830 test(S("abcde"), 1, 1, S("abcde"), 0, 2, 1);
831 test(S("abcde"), 1, 1, S("abcde"), 0, 4, 1);
832 test(S("abcde"), 1, 1, S("abcde"), 0, 5, 1);
833 test(S("abcde"), 1, 1, S("abcde"), 0, 6, 1);
834 test(S("abcde"), 1, 1, S("abcde"), 1, 0, 1);
835 test(S("abcde"), 1, 1, S("abcde"), 1, 1, 0);
836 test(S("abcde"), 1, 1, S("abcde"), 1, 2, -1);
837 test(S("abcde"), 1, 1, S("abcde"), 1, 3, -2);
838 test(S("abcde"), 1, 1, S("abcde"), 1, 4, -3);
839 test(S("abcde"), 1, 1, S("abcde"), 1, 5, -3);
840 test(S("abcde"), 1, 1, S("abcde"), 2, 0, 1);
841 test(S("abcde"), 1, 1, S("abcde"), 2, 1, -1);
842 test(S("abcde"), 1, 1, S("abcde"), 2, 2, -1);
843 test(S("abcde"), 1, 1, S("abcde"), 2, 3, -1);
844 test(S("abcde"), 1, 1, S("abcde"), 2, 4, -1);
845 test(S("abcde"), 1, 1, S("abcde"), 4, 0, 1);
846 test(S("abcde"), 1, 1, S("abcde"), 4, 1, -3);
847 test(S("abcde"), 1, 1, S("abcde"), 4, 2, -3);
848 test(S("abcde"), 1, 1, S("abcde"), 5, 0, 1);
849 test(S("abcde"), 1, 1, S("abcde"), 5, 1, 1);
850 test(S("abcde"), 1, 1, S("abcde"), 6, 0, 0);
851 test(S("abcde"), 1, 1, S("abcdefghij"), 0, 0, 1);
852 test(S("abcde"), 1, 1, S("abcdefghij"), 0, 1, 1);
853 test(S("abcde"), 1, 1, S("abcdefghij"), 0, 5, 1);
854 test(S("abcde"), 1, 1, S("abcdefghij"), 0, 9, 1);
855 test(S("abcde"), 1, 1, S("abcdefghij"), 0, 10, 1);
856 test(S("abcde"), 1, 1, S("abcdefghij"), 0, 11, 1);
857 test(S("abcde"), 1, 1, S("abcdefghij"), 1, 0, 1);
858 test(S("abcde"), 1, 1, S("abcdefghij"), 1, 1, 0);
859 test(S("abcde"), 1, 1, S("abcdefghij"), 1, 4, -3);
860 test(S("abcde"), 1, 1, S("abcdefghij"), 1, 8, -7);
861 test(S("abcde"), 1, 1, S("abcdefghij"), 1, 9, -8);
862 test(S("abcde"), 1, 1, S("abcdefghij"), 1, 10, -8);
863 test(S("abcde"), 1, 1, S("abcdefghij"), 5, 0, 1);
864 test(S("abcde"), 1, 1, S("abcdefghij"), 5, 1, -4);
865 test(S("abcde"), 1, 1, S("abcdefghij"), 5, 2, -4);
866 test(S("abcde"), 1, 1, S("abcdefghij"), 5, 4, -4);
867 test(S("abcde"), 1, 1, S("abcdefghij"), 5, 5, -4);
868 test(S("abcde"), 1, 1, S("abcdefghij"), 5, 6, -4);
869 test(S("abcde"), 1, 1, S("abcdefghij"), 9, 0, 1);
870 test(S("abcde"), 1, 1, S("abcdefghij"), 9, 1, -8);
871 test(S("abcde"), 1, 1, S("abcdefghij"), 9, 2, -8);
872 test(S("abcde"), 1, 1, S("abcdefghij"), 10, 0, 1);
873 test(S("abcde"), 1, 1, S("abcdefghij"), 10, 1, 1);
874 test(S("abcde"), 1, 1, S("abcdefghij"), 11, 0, 0);
875 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 0, 0, 1);
876 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 0, 1, 1);
877 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 0, 10, 1);
878 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 0, 19, 1);
879 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 0, 20, 1);
880 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 0, 21, 1);
881 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 1, 0, 1);
882 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 1, 1, 0);
883 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 1, 9, -8);
884 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 1, 18, -17);
890 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 1, 19, -18);
891 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 1, 20, -18);
892 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 10, 0, 1);
893 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 10, 1, -9);
894 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 10, 5, -9);
895 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 10, 9, -9);
896 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 10, 10, -9);
897 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 10, 11, -9);
898 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 19, 0, 1);
899 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 19, 1, -18);
900 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 19, 2, -18);
901 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 20, 0, 1);
902 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 20, 1, 1);
903 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 21, 0, 0);
904 test(S("abcde"), 1, 2, S(""), 0, 0, 2);
905 test(S("abcde"), 1, 2, S(""), 0, 1, 2);
906 test(S("abcde"), 1, 2, S(""), 1, 0, 0);
907 test(S("abcde"), 1, 2, S("abcde"), 0, 0, 2);
908 test(S("abcde"), 1, 2, S("abcde"), 0, 1, 1);
909 test(S("abcde"), 1, 2, S("abcde"), 0, 2, 1);
910 test(S("abcde"), 1, 2, S("abcde"), 0, 4, 1);
911 test(S("abcde"), 1, 2, S("abcde"), 0, 5, 1);
912 test(S("abcde"), 1, 2, S("abcde"), 0, 6, 1);
913 test(S("abcde"), 1, 2, S("abcde"), 1, 0, 2);
914 test(S("abcde"), 1, 2, S("abcde"), 1, 1, 1);
915 test(S("abcde"), 1, 2, S("abcde"), 1, 2, 0);
916 test(S("abcde"), 1, 2, S("abcde"), 1, 3, -1);
917 test(S("abcde"), 1, 2, S("abcde"), 1, 4, -2);
918 test(S("abcde"), 1, 2, S("abcde"), 1, 5, -2);
919 test(S("abcde"), 1, 2, S("abcde"), 2, 0, 2);
920 test(S("abcde"), 1, 2, S("abcde"), 2, 1, -1);
921 test(S("abcde"), 1, 2, S("abcde"), 2, 2, -1);
922 test(S("abcde"), 1, 2, S("abcde"), 2, 3, -1);
923 test(S("abcde"), 1, 2, S("abcde"), 2, 4, -1);
924 test(S("abcde"), 1, 2, S("abcde"), 4, 0, 2);
925 test(S("abcde"), 1, 2, S("abcde"), 4, 1, -3);
926 test(S("abcde"), 1, 2, S("abcde"), 4, 2, -3);
927 test(S("abcde"), 1, 2, S("abcde"), 5, 0, 2);
928 test(S("abcde"), 1, 2, S("abcde"), 5, 1, 2);
929 test(S("abcde"), 1, 2, S("abcde"), 6, 0, 0);
930 test(S("abcde"), 1, 2, S("abcdefghij"), 0, 0, 2);
931 test(S("abcde"), 1, 2, S("abcdefghij"), 0, 1, 1);
932 test(S("abcde"), 1, 2, S("abcdefghij"), 0, 5, 1);
933 test(S("abcde"), 1, 2, S("abcdefghij"), 0, 9, 1);
934 test(S("abcde"), 1, 2, S("abcdefghij"), 0, 10, 1);
935 test(S("abcde"), 1, 2, S("abcdefghij"), 0, 11, 1);
936 test(S("abcde"), 1, 2, S("abcdefghij"), 1, 0, 2);
937 test(S("abcde"), 1, 2, S("abcdefghij"), 1, 1, 1);
938 test(S("abcde"), 1, 2, S("abcdefghij"), 1, 4, -2);
939 test(S("abcde"), 1, 2, S("abcdefghij"), 1, 8, -6);
940 test(S("abcde"), 1, 2, S("abcdefghij"), 1, 9, -7);
941 test(S("abcde"), 1, 2, S("abcdefghij"), 1, 10, -7);
942 test(S("abcde"), 1, 2, S("abcdefghij"), 5, 0, 2);
943 test(S("abcde"), 1, 2, S("abcdefghij"), 5, 1, -4);
944 test(S("abcde"), 1, 2, S("abcdefghij"), 5, 2, -4);
945 test(S("abcde"), 1, 2, S("abcdefghij"), 5, 4, -4);
946 test(S("abcde"), 1, 2, S("abcdefghij"), 5, 5, -4);
947 test(S("abcde"), 1, 2, S("abcdefghij"), 5, 6, -4);
948 test(S("abcde"), 1, 2, S("abcdefghij"), 9, 0, 2);
949 test(S("abcde"), 1, 2, S("abcdefghij"), 9, 1, -8);
950 test(S("abcde"), 1, 2, S("abcdefghij"), 9, 2, -8);
951 test(S("abcde"), 1, 2, S("abcdefghij"), 10, 0, 2);
952 test(S("abcde"), 1, 2, S("abcdefghij"), 10, 1, 2);
953 test(S("abcde"), 1, 2, S("abcdefghij"), 11, 0, 0);
954 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 0, 0, 2);
955 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 0, 1, 1);
956 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 0, 10, 1);
957 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 0, 19, 1);
958 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 0, 20, 1);
959 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 0, 21, 1);
960 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 1, 0, 2);
961 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 1, 1, 1);
962 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 1, 9, -7);
963 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 1, 18, -16);
964 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 1, 19, -17);
965 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 1, 20, -17);
966 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 10, 0, 2);
967 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 10, 1, -9);
968 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 10, 5, -9);
969 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 10, 9, -9);
970 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 10, 10, -9);
971 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 10, 11, -9);
972 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 19, 0, 2);
973 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 19, 1, -18);
974 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 19, 2, -18);
975 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 20, 0, 2);
976 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 20, 1, 2);
977 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 21, 0, 0);
978 test(S("abcde"), 1, 3, S(""), 0, 0, 3);
979 test(S("abcde"), 1, 3, S(""), 0, 1, 3);
980 test(S("abcde"), 1, 3, S(""), 1, 0, 0);
981 test(S("abcde"), 1, 3, S("abcde"), 0, 0, 3);
982 test(S("abcde"), 1, 3, S("abcde"), 0, 1, 1);
983 test(S("abcde"), 1, 3, S("abcde"), 0, 2, 1);
984 test(S("abcde"), 1, 3, S("abcde"), 0, 4, 1);
985 test(S("abcde"), 1, 3, S("abcde"), 0, 5, 1);
986 test(S("abcde"), 1, 3, S("abcde"), 0, 6, 1);
987 test(S("abcde"), 1, 3, S("abcde"), 1, 0, 3);
988 test(S("abcde"), 1, 3, S("abcde"), 1, 1, 2);
989 test(S("abcde"), 1, 3, S("abcde"), 1, 2, 1);
995 test(S("abcde"), 1, 3, S("abcde"), 1, 3, 0);
996 test(S("abcde"), 1, 3, S("abcde"), 1, 4, -1);
997 test(S("abcde"), 1, 3, S("abcde"), 1, 5, -1);
998 test(S("abcde"), 1, 3, S("abcde"), 2, 0, 3);
999 test(S("abcde"), 1, 3, S("abcde"), 2, 1, -1);
1000 test(S("abcde"), 1, 3, S("abcde"), 2, 2, -1);
1001 test(S("abcde"), 1, 3, S("abcde"), 2, 3, -1);
1002 test(S("abcde"), 1, 3, S("abcde"), 2, 4, -1);
1003 test(S("abcde"), 1, 3, S("abcde"), 4, 0, 3);
1004 test(S("abcde"), 1, 3, S("abcde"), 4, 1, -3);
1005 test(S("abcde"), 1, 3, S("abcde"), 4, 2, -3);
1006 test(S("abcde"), 1, 3, S("abcde"), 5, 0, 3);
1007 test(S("abcde"), 1, 3, S("abcde"), 5, 1, 3);
1008 test(S("abcde"), 1, 3, S("abcde"), 6, 0, 0);
1009 test(S("abcde"), 1, 3, S("abcdefghij"), 0, 0, 3);
1010 test(S("abcde"), 1, 3, S("abcdefghij"), 0, 1, 1);
1011 test(S("abcde"), 1, 3, S("abcdefghij"), 0, 5, 1);
1012 test(S("abcde"), 1, 3, S("abcdefghij"), 0, 9, 1);
1013 test(S("abcde"), 1, 3, S("abcdefghij"), 0, 10, 1);
1014 test(S("abcde"), 1, 3, S("abcdefghij"), 0, 11, 1);
1015 test(S("abcde"), 1, 3, S("abcdefghij"), 1, 0, 3);
1016 test(S("abcde"), 1, 3, S("abcdefghij"), 1, 1, 2);
1017 test(S("abcde"), 1, 3, S("abcdefghij"), 1, 4, -1);
1018 test(S("abcde"), 1, 3, S("abcdefghij"), 1, 8, -5);
1019 test(S("abcde"), 1, 3, S("abcdefghij"), 1, 9, -6);
1020 test(S("abcde"), 1, 3, S("abcdefghij"), 1, 10, -6);
1021 test(S("abcde"), 1, 3, S("abcdefghij"), 5, 0, 3);
1022 test(S("abcde"), 1, 3, S("abcdefghij"), 5, 1, -4);
1023 test(S("abcde"), 1, 3, S("abcdefghij"), 5, 2, -4);
1024 test(S("abcde"), 1, 3, S("abcdefghij"), 5, 4, -4);
1025 test(S("abcde"), 1, 3, S("abcdefghij"), 5, 5, -4);
1026 test(S("abcde"), 1, 3, S("abcdefghij"), 5, 6, -4);
1027 test(S("abcde"), 1, 3, S("abcdefghij"), 9, 0, 3);
1028 test(S("abcde"), 1, 3, S("abcdefghij"), 9, 1, -8);
1029 test(S("abcde"), 1, 3, S("abcdefghij"), 9, 2, -8);
1030 test(S("abcde"), 1, 3, S("abcdefghij"), 10, 0, 3);
1031 test(S("abcde"), 1, 3, S("abcdefghij"), 10, 1, 3);
1032 test(S("abcde"), 1, 3, S("abcdefghij"), 11, 0, 0);
1033 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 0, 0, 3);
1034 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 0, 1, 1);
1035 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 0, 10, 1);
1036 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 0, 19, 1);
1037 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 0, 20, 1);
1038 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 0, 21, 1);
1039 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 1, 0, 3);
1040 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 1, 1, 2);
1041 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 1, 9, -6);
1042 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 1, 18, -15);
1043 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 1, 19, -16);
1044 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 1, 20, -16);
1045 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 10, 0, 3);
1046 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 10, 1, -9);
1047 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 10, 5, -9);
1048 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 10, 9, -9);
1049 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 10, 10, -9);
1050 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 10, 11, -9);
1051 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 19, 0, 3);
1052 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 19, 1, -18);
1053 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 19, 2, -18);
1054 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 20, 0, 3);
1055 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 20, 1, 3);
1056 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 21, 0, 0);
1057 test(S("abcde"), 1, 4, S(""), 0, 0, 4);
1058 test(S("abcde"), 1, 4, S(""), 0, 1, 4);
1059 test(S("abcde"), 1, 4, S(""), 1, 0, 0);
1060 test(S("abcde"), 1, 4, S("abcde"), 0, 0, 4);
1061 test(S("abcde"), 1, 4, S("abcde"), 0, 1, 1);
1062 test(S("abcde"), 1, 4, S("abcde"), 0, 2, 1);
1063 test(S("abcde"), 1, 4, S("abcde"), 0, 4, 1);
1064 test(S("abcde"), 1, 4, S("abcde"), 0, 5, 1);
1065 test(S("abcde"), 1, 4, S("abcde"), 0, 6, 1);
1066 test(S("abcde"), 1, 4, S("abcde"), 1, 0, 4);
1067 test(S("abcde"), 1, 4, S("abcde"), 1, 1, 3);
1068 test(S("abcde"), 1, 4, S("abcde"), 1, 2, 2);
1069 test(S("abcde"), 1, 4, S("abcde"), 1, 3, 1);
1070 test(S("abcde"), 1, 4, S("abcde"), 1, 4, 0);
1071 test(S("abcde"), 1, 4, S("abcde"), 1, 5, 0);
1072 test(S("abcde"), 1, 4, S("abcde"), 2, 0, 4);
1073 test(S("abcde"), 1, 4, S("abcde"), 2, 1, -1);
1074 test(S("abcde"), 1, 4, S("abcde"), 2, 2, -1);
1075 test(S("abcde"), 1, 4, S("abcde"), 2, 3, -1);
1076 test(S("abcde"), 1, 4, S("abcde"), 2, 4, -1);
1077 test(S("abcde"), 1, 4, S("abcde"), 4, 0, 4);
1078 test(S("abcde"), 1, 4, S("abcde"), 4, 1, -3);
1079 test(S("abcde"), 1, 4, S("abcde"), 4, 2, -3);
1080 test(S("abcde"), 1, 4, S("abcde"), 5, 0, 4);
1081 test(S("abcde"), 1, 4, S("abcde"), 5, 1, 4);
1082 test(S("abcde"), 1, 4, S("abcde"), 6, 0, 0);
1083 test(S("abcde"), 1, 4, S("abcdefghij"), 0, 0, 4);
1084 test(S("abcde"), 1, 4, S("abcdefghij"), 0, 1, 1);
1085 test(S("abcde"), 1, 4, S("abcdefghij"), 0, 5, 1);
1086 test(S("abcde"), 1, 4, S("abcdefghij"), 0, 9, 1);
1087 test(S("abcde"), 1, 4, S("abcdefghij"), 0, 10, 1);
1088 test(S("abcde"), 1, 4, S("abcdefghij"), 0, 11, 1);
1089 test(S("abcde"), 1, 4, S("abcdefghij"), 1, 0, 4);
1090 test(S("abcde"), 1, 4, S("abcdefghij"), 1, 1, 3);
1091 test(S("abcde"), 1, 4, S("abcdefghij"), 1, 4, 0);
1092 test(S("abcde"), 1, 4, S("abcdefghij"), 1, 8, -4);
1093 test(S("abcde"), 1, 4, S("abcdefghij"), 1, 9, -5);
1094 test(S("abcde"), 1, 4, S("abcdefghij"), 1, 10, -5);
1100 test(S("abcde"), 1, 4, S("abcdefghij"), 5, 0, 4);
1101 test(S("abcde"), 1, 4, S("abcdefghij"), 5, 1, -4);
1102 test(S("abcde"), 1, 4, S("abcdefghij"), 5, 2, -4);
1103 test(S("abcde"), 1, 4, S("abcdefghij"), 5, 4, -4);
1104 test(S("abcde"), 1, 4, S("abcdefghij"), 5, 5, -4);
1105 test(S("abcde"), 1, 4, S("abcdefghij"), 5, 6, -4);
1106 test(S("abcde"), 1, 4, S("abcdefghij"), 9, 0, 4);
1107 test(S("abcde"), 1, 4, S("abcdefghij"), 9, 1, -8);
1108 test(S("abcde"), 1, 4, S("abcdefghij"), 9, 2, -8);
1109 test(S("abcde"), 1, 4, S("abcdefghij"), 10, 0, 4);
1110 test(S("abcde"), 1, 4, S("abcdefghij"), 10, 1, 4);
1111 test(S("abcde"), 1, 4, S("abcdefghij"), 11, 0, 0);
1112 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 0, 0, 4);
1113 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 0, 1, 1);
1114 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 0, 10, 1);
1115 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 0, 19, 1);
1116 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 0, 20, 1);
1117 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 0, 21, 1);
1118 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 1, 0, 4);
1119 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 1, 1, 3);
1120 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 1, 9, -5);
1121 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 1, 18, -14);
1122 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 1, 19, -15);
1123 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 1, 20, -15);
1124 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 10, 0, 4);
1125 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 10, 1, -9);
1126 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 10, 5, -9);
1127 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 10, 9, -9);
1128 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 10, 10, -9);
1129 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 10, 11, -9);
1130 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 19, 0, 4);
1131 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 19, 1, -18);
1132 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 19, 2, -18);
1133 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 20, 0, 4);
1134 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 20, 1, 4);
1135 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 21, 0, 0);
1136 test(S("abcde"), 1, 5, S(""), 0, 0, 4);
1137 test(S("abcde"), 1, 5, S(""), 0, 1, 4);
1138 test(S("abcde"), 1, 5, S(""), 1, 0, 0);
1139 test(S("abcde"), 1, 5, S("abcde"), 0, 0, 4);
1140 test(S("abcde"), 1, 5, S("abcde"), 0, 1, 1);
1141 test(S("abcde"), 1, 5, S("abcde"), 0, 2, 1);
1142 test(S("abcde"), 1, 5, S("abcde"), 0, 4, 1);
1143 test(S("abcde"), 1, 5, S("abcde"), 0, 5, 1);
1144 test(S("abcde"), 1, 5, S("abcde"), 0, 6, 1);
1145 test(S("abcde"), 1, 5, S("abcde"), 1, 0, 4);
1146 test(S("abcde"), 1, 5, S("abcde"), 1, 1, 3);
1147 test(S("abcde"), 1, 5, S("abcde"), 1, 2, 2);
1148 test(S("abcde"), 1, 5, S("abcde"), 1, 3, 1);
1149 test(S("abcde"), 1, 5, S("abcde"), 1, 4, 0);
1150 test(S("abcde"), 1, 5, S("abcde"), 1, 5, 0);
1151 test(S("abcde"), 1, 5, S("abcde"), 2, 0, 4);
1152 test(S("abcde"), 1, 5, S("abcde"), 2, 1, -1);
1153 test(S("abcde"), 1, 5, S("abcde"), 2, 2, -1);
1154 test(S("abcde"), 1, 5, S("abcde"), 2, 3, -1);
1155 test(S("abcde"), 1, 5, S("abcde"), 2, 4, -1);
1156 test(S("abcde"), 1, 5, S("abcde"), 4, 0, 4);
1157 test(S("abcde"), 1, 5, S("abcde"), 4, 1, -3);
1158 test(S("abcde"), 1, 5, S("abcde"), 4, 2, -3);
1159 test(S("abcde"), 1, 5, S("abcde"), 5, 0, 4);
1160 test(S("abcde"), 1, 5, S("abcde"), 5, 1, 4);
1161 test(S("abcde"), 1, 5, S("abcde"), 6, 0, 0);
1162 test(S("abcde"), 1, 5, S("abcdefghij"), 0, 0, 4);
1163 test(S("abcde"), 1, 5, S("abcdefghij"), 0, 1, 1);
1164 test(S("abcde"), 1, 5, S("abcdefghij"), 0, 5, 1);
1165 test(S("abcde"), 1, 5, S("abcdefghij"), 0, 9, 1);
1166 test(S("abcde"), 1, 5, S("abcdefghij"), 0, 10, 1);
1167 test(S("abcde"), 1, 5, S("abcdefghij"), 0, 11, 1);
1168 test(S("abcde"), 1, 5, S("abcdefghij"), 1, 0, 4);
1169 test(S("abcde"), 1, 5, S("abcdefghij"), 1, 1, 3);
1170 test(S("abcde"), 1, 5, S("abcdefghij"), 1, 4, 0);
1171 test(S("abcde"), 1, 5, S("abcdefghij"), 1, 8, -4);
1172 test(S("abcde"), 1, 5, S("abcdefghij"), 1, 9, -5);
1173 test(S("abcde"), 1, 5, S("abcdefghij"), 1, 10, -5);
1174 test(S("abcde"), 1, 5, S("abcdefghij"), 5, 0, 4);
1175 test(S("abcde"), 1, 5, S("abcdefghij"), 5, 1, -4);
1176 test(S("abcde"), 1, 5, S("abcdefghij"), 5, 2, -4);
1177 test(S("abcde"), 1, 5, S("abcdefghij"), 5, 4, -4);
1178 test(S("abcde"), 1, 5, S("abcdefghij"), 5, 5, -4);
1179 test(S("abcde"), 1, 5, S("abcdefghij"), 5, 6, -4);
1180 test(S("abcde"), 1, 5, S("abcdefghij"), 9, 0, 4);
1181 test(S("abcde"), 1, 5, S("abcdefghij"), 9, 1, -8);
1182 test(S("abcde"), 1, 5, S("abcdefghij"), 9, 2, -8);
1183 test(S("abcde"), 1, 5, S("abcdefghij"), 10, 0, 4);
1184 test(S("abcde"), 1, 5, S("abcdefghij"), 10, 1, 4);
1185 test(S("abcde"), 1, 5, S("abcdefghij"), 11, 0, 0);
1186 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 0, 0, 4);
1187 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 0, 1, 1);
1188 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 0, 10, 1);
1189 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 0, 19, 1);
1190 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 0, 20, 1);
1191 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 0, 21, 1);
1192 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 1, 0, 4);
1193 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 1, 1, 3);
1194 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 1, 9, -5);
1195 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 1, 18, -14);
1196 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 1, 19, -15);
1197 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 1, 20, -15);
1198 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 10, 0, 4);
1199 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 10, 1, -9);
1205 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 10, 5, -9);
1206 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 10, 9, -9);
1207 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 10, 10, -9);
1208 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 10, 11, -9);
1209 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 19, 0, 4);
1210 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 19, 1, -18);
1211 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 19, 2, -18);
1212 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 20, 0, 4);
1213 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 20, 1, 4);
1214 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 21, 0, 0);
1215 test(S("abcde"), 2, 0, S(""), 0, 0, 0);
1216 test(S("abcde"), 2, 0, S(""), 0, 1, 0);
1217 test(S("abcde"), 2, 0, S(""), 1, 0, 0);
1218 test(S("abcde"), 2, 0, S("abcde"), 0, 0, 0);
1219 test(S("abcde"), 2, 0, S("abcde"), 0, 1, -1);
1220 test(S("abcde"), 2, 0, S("abcde"), 0, 2, -2);
1221 test(S("abcde"), 2, 0, S("abcde"), 0, 4, -4);
1222 test(S("abcde"), 2, 0, S("abcde"), 0, 5, -5);
1223 test(S("abcde"), 2, 0, S("abcde"), 0, 6, -5);
1224 test(S("abcde"), 2, 0, S("abcde"), 1, 0, 0);
1225 test(S("abcde"), 2, 0, S("abcde"), 1, 1, -1);
1226 test(S("abcde"), 2, 0, S("abcde"), 1, 2, -2);
1227 test(S("abcde"), 2, 0, S("abcde"), 1, 3, -3);
1228 test(S("abcde"), 2, 0, S("abcde"), 1, 4, -4);
1229 test(S("abcde"), 2, 0, S("abcde"), 1, 5, -4);
1230 test(S("abcde"), 2, 0, S("abcde"), 2, 0, 0);
1231 test(S("abcde"), 2, 0, S("abcde"), 2, 1, -1);
1232 test(S("abcde"), 2, 0, S("abcde"), 2, 2, -2);
1233 test(S("abcde"), 2, 0, S("abcde"), 2, 3, -3);
1234 test(S("abcde"), 2, 0, S("abcde"), 2, 4, -3);
1235 test(S("abcde"), 2, 0, S("abcde"), 4, 0, 0);
1236 test(S("abcde"), 2, 0, S("abcde"), 4, 1, -1);
1237 test(S("abcde"), 2, 0, S("abcde"), 4, 2, -1);
1238 test(S("abcde"), 2, 0, S("abcde"), 5, 0, 0);
1239 test(S("abcde"), 2, 0, S("abcde"), 5, 1, 0);
1240 test(S("abcde"), 2, 0, S("abcde"), 6, 0, 0);
1241 test(S("abcde"), 2, 0, S("abcdefghij"), 0, 0, 0);
1242 test(S("abcde"), 2, 0, S("abcdefghij"), 0, 1, -1);
1243 test(S("abcde"), 2, 0, S("abcdefghij"), 0, 5, -5);
1244 test(S("abcde"), 2, 0, S("abcdefghij"), 0, 9, -9);
1245 test(S("abcde"), 2, 0, S("abcdefghij"), 0, 10, -10);
1246 test(S("abcde"), 2, 0, S("abcdefghij"), 0, 11, -10);
1247 test(S("abcde"), 2, 0, S("abcdefghij"), 1, 0, 0);
1248 test(S("abcde"), 2, 0, S("abcdefghij"), 1, 1, -1);
1249 test(S("abcde"), 2, 0, S("abcdefghij"), 1, 4, -4);
1250 test(S("abcde"), 2, 0, S("abcdefghij"), 1, 8, -8);
1251 test(S("abcde"), 2, 0, S("abcdefghij"), 1, 9, -9);
1252 test(S("abcde"), 2, 0, S("abcdefghij"), 1, 10, -9);
1253 test(S("abcde"), 2, 0, S("abcdefghij"), 5, 0, 0);
1254 test(S("abcde"), 2, 0, S("abcdefghij"), 5, 1, -1);
1255 test(S("abcde"), 2, 0, S("abcdefghij"), 5, 2, -2);
1256 test(S("abcde"), 2, 0, S("abcdefghij"), 5, 4, -4);
1257 test(S("abcde"), 2, 0, S("abcdefghij"), 5, 5, -5);
1258 test(S("abcde"), 2, 0, S("abcdefghij"), 5, 6, -5);
1259 test(S("abcde"), 2, 0, S("abcdefghij"), 9, 0, 0);
1260 test(S("abcde"), 2, 0, S("abcdefghij"), 9, 1, -1);
1261 test(S("abcde"), 2, 0, S("abcdefghij"), 9, 2, -1);
1262 test(S("abcde"), 2, 0, S("abcdefghij"), 10, 0, 0);
1263 test(S("abcde"), 2, 0, S("abcdefghij"), 10, 1, 0);
1264 test(S("abcde"), 2, 0, S("abcdefghij"), 11, 0, 0);
1265 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
1266 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 0, 1, -1);
1267 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 0, 10, -10);
1268 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 0, 19, -19);
1269 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 0, 20, -20);
1270 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 0, 21, -20);
1271 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
1272 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 1, 1, -1);
1273 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 1, 9, -9);
1274 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 1, 18, -18);
1275 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 1, 19, -19);
1276 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 1, 20, -19);
1277 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
1278 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 10, 1, -1);
1279 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 10, 5, -5);
1280 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 10, 9, -9);
1281 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 10, 10, -10);
1282 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 10, 11, -10);
1283 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
1284 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 19, 1, -1);
1285 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 19, 2, -1);
1286 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
1287 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
1288 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
1289 test(S("abcde"), 2, 1, S(""), 0, 0, 1);
1290 test(S("abcde"), 2, 1, S(""), 0, 1, 1);
1291 test(S("abcde"), 2, 1, S(""), 1, 0, 0);
1292 test(S("abcde"), 2, 1, S("abcde"), 0, 0, 1);
1293 test(S("abcde"), 2, 1, S("abcde"), 0, 1, 2);
1294 test(S("abcde"), 2, 1, S("abcde"), 0, 2, 2);
1295 test(S("abcde"), 2, 1, S("abcde"), 0, 4, 2);
1296 test(S("abcde"), 2, 1, S("abcde"), 0, 5, 2);
1297 test(S("abcde"), 2, 1, S("abcde"), 0, 6, 2);
1298 test(S("abcde"), 2, 1, S("abcde"), 1, 0, 1);
1299 test(S("abcde"), 2, 1, S("abcde"), 1, 1, 1);
1300 test(S("abcde"), 2, 1, S("abcde"), 1, 2, 1);
1301 test(S("abcde"), 2, 1, S("abcde"), 1, 3, 1);
1302 test(S("abcde"), 2, 1, S("abcde"), 1, 4, 1);
1303 test(S("abcde"), 2, 1, S("abcde"), 1, 5, 1);
1304 test(S("abcde"), 2, 1, S("abcde"), 2, 0, 1);
1310 test(S("abcde"), 2, 1, S("abcde"), 2, 1, 0);
1311 test(S("abcde"), 2, 1, S("abcde"), 2, 2, -1);
1312 test(S("abcde"), 2, 1, S("abcde"), 2, 3, -2);
1313 test(S("abcde"), 2, 1, S("abcde"), 2, 4, -2);
1314 test(S("abcde"), 2, 1, S("abcde"), 4, 0, 1);
1315 test(S("abcde"), 2, 1, S("abcde"), 4, 1, -2);
1316 test(S("abcde"), 2, 1, S("abcde"), 4, 2, -2);
1317 test(S("abcde"), 2, 1, S("abcde"), 5, 0, 1);
1318 test(S("abcde"), 2, 1, S("abcde"), 5, 1, 1);
1319 test(S("abcde"), 2, 1, S("abcde"), 6, 0, 0);
1320 test(S("abcde"), 2, 1, S("abcdefghij"), 0, 0, 1);
1321 test(S("abcde"), 2, 1, S("abcdefghij"), 0, 1, 2);
1322 test(S("abcde"), 2, 1, S("abcdefghij"), 0, 5, 2);
1323 test(S("abcde"), 2, 1, S("abcdefghij"), 0, 9, 2);
1324 test(S("abcde"), 2, 1, S("abcdefghij"), 0, 10, 2);
1325 test(S("abcde"), 2, 1, S("abcdefghij"), 0, 11, 2);
1326 test(S("abcde"), 2, 1, S("abcdefghij"), 1, 0, 1);
1327 test(S("abcde"), 2, 1, S("abcdefghij"), 1, 1, 1);
1328 test(S("abcde"), 2, 1, S("abcdefghij"), 1, 4, 1);
1329 test(S("abcde"), 2, 1, S("abcdefghij"), 1, 8, 1);
1330 test(S("abcde"), 2, 1, S("abcdefghij"), 1, 9, 1);
1331 test(S("abcde"), 2, 1, S("abcdefghij"), 1, 10, 1);
1332 test(S("abcde"), 2, 1, S("abcdefghij"), 5, 0, 1);
1333 test(S("abcde"), 2, 1, S("abcdefghij"), 5, 1, -3);
1334 test(S("abcde"), 2, 1, S("abcdefghij"), 5, 2, -3);
1335 test(S("abcde"), 2, 1, S("abcdefghij"), 5, 4, -3);
1336 test(S("abcde"), 2, 1, S("abcdefghij"), 5, 5, -3);
1337 test(S("abcde"), 2, 1, S("abcdefghij"), 5, 6, -3);
1338 test(S("abcde"), 2, 1, S("abcdefghij"), 9, 0, 1);
1339 test(S("abcde"), 2, 1, S("abcdefghij"), 9, 1, -7);
1340 test(S("abcde"), 2, 1, S("abcdefghij"), 9, 2, -7);
1341 test(S("abcde"), 2, 1, S("abcdefghij"), 10, 0, 1);
1342 test(S("abcde"), 2, 1, S("abcdefghij"), 10, 1, 1);
1343 test(S("abcde"), 2, 1, S("abcdefghij"), 11, 0, 0);
1344 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 0, 0, 1);
1345 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 0, 1, 2);
1346 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 0, 10, 2);
1347 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 0, 19, 2);
1348 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 0, 20, 2);
1349 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 0, 21, 2);
1350 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 1, 0, 1);
1351 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 1, 1, 1);
1352 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 1, 9, 1);
1353 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 1, 18, 1);
1354 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 1, 19, 1);
1355 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 1, 20, 1);
1356 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 10, 0, 1);
1357 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 10, 1, -8);
1358 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 10, 5, -8);
1359 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 10, 9, -8);
1360 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 10, 10, -8);
1361 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 10, 11, -8);
1362 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 19, 0, 1);
1363 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 19, 1, -17);
1364 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 19, 2, -17);
1365 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 20, 0, 1);
1366 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 20, 1, 1);
1367 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 21, 0, 0);
1368 test(S("abcde"), 2, 2, S(""), 0, 0, 2);
1369 test(S("abcde"), 2, 2, S(""), 0, 1, 2);
1370 test(S("abcde"), 2, 2, S(""), 1, 0, 0);
1371 test(S("abcde"), 2, 2, S("abcde"), 0, 0, 2);
1372 test(S("abcde"), 2, 2, S("abcde"), 0, 1, 2);
1373 test(S("abcde"), 2, 2, S("abcde"), 0, 2, 2);
1374 test(S("abcde"), 2, 2, S("abcde"), 0, 4, 2);
1375 test(S("abcde"), 2, 2, S("abcde"), 0, 5, 2);
1376 test(S("abcde"), 2, 2, S("abcde"), 0, 6, 2);
1377 test(S("abcde"), 2, 2, S("abcde"), 1, 0, 2);
1378 test(S("abcde"), 2, 2, S("abcde"), 1, 1, 1);
1379 test(S("abcde"), 2, 2, S("abcde"), 1, 2, 1);
1380 test(S("abcde"), 2, 2, S("abcde"), 1, 3, 1);
1381 test(S("abcde"), 2, 2, S("abcde"), 1, 4, 1);
1382 test(S("abcde"), 2, 2, S("abcde"), 1, 5, 1);
1383 test(S("abcde"), 2, 2, S("abcde"), 2, 0, 2);
1384 test(S("abcde"), 2, 2, S("abcde"), 2, 1, 1);
1385 test(S("abcde"), 2, 2, S("abcde"), 2, 2, 0);
1386 test(S("abcde"), 2, 2, S("abcde"), 2, 3, -1);
1387 test(S("abcde"), 2, 2, S("abcde"), 2, 4, -1);
1388 test(S("abcde"), 2, 2, S("abcde"), 4, 0, 2);
1389 test(S("abcde"), 2, 2, S("abcde"), 4, 1, -2);
1390 test(S("abcde"), 2, 2, S("abcde"), 4, 2, -2);
1391 test(S("abcde"), 2, 2, S("abcde"), 5, 0, 2);
1392 test(S("abcde"), 2, 2, S("abcde"), 5, 1, 2);
1393 test(S("abcde"), 2, 2, S("abcde"), 6, 0, 0);
1394 test(S("abcde"), 2, 2, S("abcdefghij"), 0, 0, 2);
1395 test(S("abcde"), 2, 2, S("abcdefghij"), 0, 1, 2);
1396 test(S("abcde"), 2, 2, S("abcdefghij"), 0, 5, 2);
1397 test(S("abcde"), 2, 2, S("abcdefghij"), 0, 9, 2);
1398 test(S("abcde"), 2, 2, S("abcdefghij"), 0, 10, 2);
1399 test(S("abcde"), 2, 2, S("abcdefghij"), 0, 11, 2);
1400 test(S("abcde"), 2, 2, S("abcdefghij"), 1, 0, 2);
1401 test(S("abcde"), 2, 2, S("abcdefghij"), 1, 1, 1);
1402 test(S("abcde"), 2, 2, S("abcdefghij"), 1, 4, 1);
1403 test(S("abcde"), 2, 2, S("abcdefghij"), 1, 8, 1);
1404 test(S("abcde"), 2, 2, S("abcdefghij"), 1, 9, 1);
1405 test(S("abcde"), 2, 2, S("abcdefghij"), 1, 10, 1);
1406 test(S("abcde"), 2, 2, S("abcdefghij"), 5, 0, 2);
1407 test(S("abcde"), 2, 2, S("abcdefghij"), 5, 1, -3);
1408 test(S("abcde"), 2, 2, S("abcdefghij"), 5, 2, -3);
1409 test(S("abcde"), 2, 2, S("abcdefghij"), 5, 4, -3);
1415 test(S("abcde"), 2, 2, S("abcdefghij"), 5, 5, -3);
1416 test(S("abcde"), 2, 2, S("abcdefghij"), 5, 6, -3);
1417 test(S("abcde"), 2, 2, S("abcdefghij"), 9, 0, 2);
1418 test(S("abcde"), 2, 2, S("abcdefghij"), 9, 1, -7);
1419 test(S("abcde"), 2, 2, S("abcdefghij"), 9, 2, -7);
1420 test(S("abcde"), 2, 2, S("abcdefghij"), 10, 0, 2);
1421 test(S("abcde"), 2, 2, S("abcdefghij"), 10, 1, 2);
1422 test(S("abcde"), 2, 2, S("abcdefghij"), 11, 0, 0);
1423 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 0, 0, 2);
1424 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 0, 1, 2);
1425 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 0, 10, 2);
1426 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 0, 19, 2);
1427 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 0, 20, 2);
1428 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 0, 21, 2);
1429 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 1, 0, 2);
1430 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 1, 1, 1);
1431 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 1, 9, 1);
1432 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 1, 18, 1);
1433 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 1, 19, 1);
1434 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 1, 20, 1);
1435 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 10, 0, 2);
1436 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 10, 1, -8);
1437 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 10, 5, -8);
1438 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 10, 9, -8);
1439 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 10, 10, -8);
1440 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 10, 11, -8);
1441 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 19, 0, 2);
1442 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 19, 1, -17);
1443 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 19, 2, -17);
1444 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 20, 0, 2);
1445 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 20, 1, 2);
1446 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 21, 0, 0);
1447 test(S("abcde"), 2, 3, S(""), 0, 0, 3);
1448 test(S("abcde"), 2, 3, S(""), 0, 1, 3);
1449 test(S("abcde"), 2, 3, S(""), 1, 0, 0);
1450 test(S("abcde"), 2, 3, S("abcde"), 0, 0, 3);
1451 test(S("abcde"), 2, 3, S("abcde"), 0, 1, 2);
1452 test(S("abcde"), 2, 3, S("abcde"), 0, 2, 2);
1453 test(S("abcde"), 2, 3, S("abcde"), 0, 4, 2);
1454 test(S("abcde"), 2, 3, S("abcde"), 0, 5, 2);
1455 test(S("abcde"), 2, 3, S("abcde"), 0, 6, 2);
1456 test(S("abcde"), 2, 3, S("abcde"), 1, 0, 3);
1457 test(S("abcde"), 2, 3, S("abcde"), 1, 1, 1);
1458 test(S("abcde"), 2, 3, S("abcde"), 1, 2, 1);
1459 test(S("abcde"), 2, 3, S("abcde"), 1, 3, 1);
1460 test(S("abcde"), 2, 3, S("abcde"), 1, 4, 1);
1461 test(S("abcde"), 2, 3, S("abcde"), 1, 5, 1);
1462 test(S("abcde"), 2, 3, S("abcde"), 2, 0, 3);
1463 test(S("abcde"), 2, 3, S("abcde"), 2, 1, 2);
1464 test(S("abcde"), 2, 3, S("abcde"), 2, 2, 1);
1465 test(S("abcde"), 2, 3, S("abcde"), 2, 3, 0);
1466 test(S("abcde"), 2, 3, S("abcde"), 2, 4, 0);
1467 test(S("abcde"), 2, 3, S("abcde"), 4, 0, 3);
1468 test(S("abcde"), 2, 3, S("abcde"), 4, 1, -2);
1469 test(S("abcde"), 2, 3, S("abcde"), 4, 2, -2);
1470 test(S("abcde"), 2, 3, S("abcde"), 5, 0, 3);
1471 test(S("abcde"), 2, 3, S("abcde"), 5, 1, 3);
1472 test(S("abcde"), 2, 3, S("abcde"), 6, 0, 0);
1473 test(S("abcde"), 2, 3, S("abcdefghij"), 0, 0, 3);
1474 test(S("abcde"), 2, 3, S("abcdefghij"), 0, 1, 2);
1475 test(S("abcde"), 2, 3, S("abcdefghij"), 0, 5, 2);
1476 test(S("abcde"), 2, 3, S("abcdefghij"), 0, 9, 2);
1477 test(S("abcde"), 2, 3, S("abcdefghij"), 0, 10, 2);
1478 test(S("abcde"), 2, 3, S("abcdefghij"), 0, 11, 2);
1479 test(S("abcde"), 2, 3, S("abcdefghij"), 1, 0, 3);
1480 test(S("abcde"), 2, 3, S("abcdefghij"), 1, 1, 1);
1481 test(S("abcde"), 2, 3, S("abcdefghij"), 1, 4, 1);
1482 test(S("abcde"), 2, 3, S("abcdefghij"), 1, 8, 1);
1483 test(S("abcde"), 2, 3, S("abcdefghij"), 1, 9, 1);
1484 test(S("abcde"), 2, 3, S("abcdefghij"), 1, 10, 1);
1485 test(S("abcde"), 2, 3, S("abcdefghij"), 5, 0, 3);
1486 test(S("abcde"), 2, 3, S("abcdefghij"), 5, 1, -3);
1487 test(S("abcde"), 2, 3, S("abcdefghij"), 5, 2, -3);
1488 test(S("abcde"), 2, 3, S("abcdefghij"), 5, 4, -3);
1489 test(S("abcde"), 2, 3, S("abcdefghij"), 5, 5, -3);
1490 test(S("abcde"), 2, 3, S("abcdefghij"), 5, 6, -3);
1491 test(S("abcde"), 2, 3, S("abcdefghij"), 9, 0, 3);
1492 test(S("abcde"), 2, 3, S("abcdefghij"), 9, 1, -7);
1493 test(S("abcde"), 2, 3, S("abcdefghij"), 9, 2, -7);
1494 test(S("abcde"), 2, 3, S("abcdefghij"), 10, 0, 3);
1495 test(S("abcde"), 2, 3, S("abcdefghij"), 10, 1, 3);
1496 test(S("abcde"), 2, 3, S("abcdefghij"), 11, 0, 0);
1497 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 0, 0, 3);
1498 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 0, 1, 2);
1499 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 0, 10, 2);
1500 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 0, 19, 2);
1501 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 0, 20, 2);
1502 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 0, 21, 2);
1503 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 1, 0, 3);
1504 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 1, 1, 1);
1505 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 1, 9, 1);
1506 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 1, 18, 1);
1507 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 1, 19, 1);
1508 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 1, 20, 1);
1509 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 10, 0, 3);
1510 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 10, 1, -8);
1511 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 10, 5, -8);
1512 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 10, 9, -8);
1513 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 10, 10, -8);
1514 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 10, 11, -8);
1520 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 19, 0, 3);
1521 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 19, 1, -17);
1522 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 19, 2, -17);
1523 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 20, 0, 3);
1524 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 20, 1, 3);
1525 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 21, 0, 0);
1526 test(S("abcde"), 2, 4, S(""), 0, 0, 3);
1527 test(S("abcde"), 2, 4, S(""), 0, 1, 3);
1528 test(S("abcde"), 2, 4, S(""), 1, 0, 0);
1529 test(S("abcde"), 2, 4, S("abcde"), 0, 0, 3);
1530 test(S("abcde"), 2, 4, S("abcde"), 0, 1, 2);
1531 test(S("abcde"), 2, 4, S("abcde"), 0, 2, 2);
1532 test(S("abcde"), 2, 4, S("abcde"), 0, 4, 2);
1533 test(S("abcde"), 2, 4, S("abcde"), 0, 5, 2);
1534 test(S("abcde"), 2, 4, S("abcde"), 0, 6, 2);
1535 test(S("abcde"), 2, 4, S("abcde"), 1, 0, 3);
1536 test(S("abcde"), 2, 4, S("abcde"), 1, 1, 1);
1537 test(S("abcde"), 2, 4, S("abcde"), 1, 2, 1);
1538 test(S("abcde"), 2, 4, S("abcde"), 1, 3, 1);
1539 test(S("abcde"), 2, 4, S("abcde"), 1, 4, 1);
1540 test(S("abcde"), 2, 4, S("abcde"), 1, 5, 1);
1541 test(S("abcde"), 2, 4, S("abcde"), 2, 0, 3);
1542 test(S("abcde"), 2, 4, S("abcde"), 2, 1, 2);
1543 test(S("abcde"), 2, 4, S("abcde"), 2, 2, 1);
1544 test(S("abcde"), 2, 4, S("abcde"), 2, 3, 0);
1545 test(S("abcde"), 2, 4, S("abcde"), 2, 4, 0);
1546 test(S("abcde"), 2, 4, S("abcde"), 4, 0, 3);
1547 test(S("abcde"), 2, 4, S("abcde"), 4, 1, -2);
1548 test(S("abcde"), 2, 4, S("abcde"), 4, 2, -2);
1549 test(S("abcde"), 2, 4, S("abcde"), 5, 0, 3);
1550 test(S("abcde"), 2, 4, S("abcde"), 5, 1, 3);
1551 test(S("abcde"), 2, 4, S("abcde"), 6, 0, 0);
1552 test(S("abcde"), 2, 4, S("abcdefghij"), 0, 0, 3);
1553 test(S("abcde"), 2, 4, S("abcdefghij"), 0, 1, 2);
1554 test(S("abcde"), 2, 4, S("abcdefghij"), 0, 5, 2);
1555 test(S("abcde"), 2, 4, S("abcdefghij"), 0, 9, 2);
1556 test(S("abcde"), 2, 4, S("abcdefghij"), 0, 10, 2);
1557 test(S("abcde"), 2, 4, S("abcdefghij"), 0, 11, 2);
1558 test(S("abcde"), 2, 4, S("abcdefghij"), 1, 0, 3);
1559 test(S("abcde"), 2, 4, S("abcdefghij"), 1, 1, 1);
1560 test(S("abcde"), 2, 4, S("abcdefghij"), 1, 4, 1);
1561 test(S("abcde"), 2, 4, S("abcdefghij"), 1, 8, 1);
1562 test(S("abcde"), 2, 4, S("abcdefghij"), 1, 9, 1);
1563 test(S("abcde"), 2, 4, S("abcdefghij"), 1, 10, 1);
1564 test(S("abcde"), 2, 4, S("abcdefghij"), 5, 0, 3);
1565 test(S("abcde"), 2, 4, S("abcdefghij"), 5, 1, -3);
1566 test(S("abcde"), 2, 4, S("abcdefghij"), 5, 2, -3);
1567 test(S("abcde"), 2, 4, S("abcdefghij"), 5, 4, -3);
1568 test(S("abcde"), 2, 4, S("abcdefghij"), 5, 5, -3);
1569 test(S("abcde"), 2, 4, S("abcdefghij"), 5, 6, -3);
1570 test(S("abcde"), 2, 4, S("abcdefghij"), 9, 0, 3);
1571 test(S("abcde"), 2, 4, S("abcdefghij"), 9, 1, -7);
1572 test(S("abcde"), 2, 4, S("abcdefghij"), 9, 2, -7);
1573 test(S("abcde"), 2, 4, S("abcdefghij"), 10, 0, 3);
1574 test(S("abcde"), 2, 4, S("abcdefghij"), 10, 1, 3);
1575 test(S("abcde"), 2, 4, S("abcdefghij"), 11, 0, 0);
1576 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 0, 0, 3);
1577 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 0, 1, 2);
1578 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 0, 10, 2);
1579 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 0, 19, 2);
1580 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 0, 20, 2);
1581 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 0, 21, 2);
1582 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 1, 0, 3);
1583 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 1, 1, 1);
1584 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 1, 9, 1);
1585 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 1, 18, 1);
1586 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 1, 19, 1);
1587 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 1, 20, 1);
1588 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 10, 0, 3);
1589 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 10, 1, -8);
1590 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 10, 5, -8);
1591 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 10, 9, -8);
1592 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 10, 10, -8);
1593 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 10, 11, -8);
1594 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 19, 0, 3);
1595 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 19, 1, -17);
1596 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 19, 2, -17);
1597 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 20, 0, 3);
1598 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 20, 1, 3);
1599 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 21, 0, 0);
1600 test(S("abcde"), 4, 0, S(""), 0, 0, 0);
1601 test(S("abcde"), 4, 0, S(""), 0, 1, 0);
1602 test(S("abcde"), 4, 0, S(""), 1, 0, 0);
1603 test(S("abcde"), 4, 0, S("abcde"), 0, 0, 0);
1604 test(S("abcde"), 4, 0, S("abcde"), 0, 1, -1);
1605 test(S("abcde"), 4, 0, S("abcde"), 0, 2, -2);
1606 test(S("abcde"), 4, 0, S("abcde"), 0, 4, -4);
1607 test(S("abcde"), 4, 0, S("abcde"), 0, 5, -5);
1608 test(S("abcde"), 4, 0, S("abcde"), 0, 6, -5);
1609 test(S("abcde"), 4, 0, S("abcde"), 1, 0, 0);
1610 test(S("abcde"), 4, 0, S("abcde"), 1, 1, -1);
1611 test(S("abcde"), 4, 0, S("abcde"), 1, 2, -2);
1612 test(S("abcde"), 4, 0, S("abcde"), 1, 3, -3);
1613 test(S("abcde"), 4, 0, S("abcde"), 1, 4, -4);
1614 test(S("abcde"), 4, 0, S("abcde"), 1, 5, -4);
1615 test(S("abcde"), 4, 0, S("abcde"), 2, 0, 0);
1616 test(S("abcde"), 4, 0, S("abcde"), 2, 1, -1);
1617 test(S("abcde"), 4, 0, S("abcde"), 2, 2, -2);
1618 test(S("abcde"), 4, 0, S("abcde"), 2, 3, -3);
1619 test(S("abcde"), 4, 0, S("abcde"), 2, 4, -3);
1625 test(S("abcde"), 4, 0, S("abcde"), 4, 0, 0);
1626 test(S("abcde"), 4, 0, S("abcde"), 4, 1, -1);
1627 test(S("abcde"), 4, 0, S("abcde"), 4, 2, -1);
1628 test(S("abcde"), 4, 0, S("abcde"), 5, 0, 0);
1629 test(S("abcde"), 4, 0, S("abcde"), 5, 1, 0);
1630 test(S("abcde"), 4, 0, S("abcde"), 6, 0, 0);
1631 test(S("abcde"), 4, 0, S("abcdefghij"), 0, 0, 0);
1632 test(S("abcde"), 4, 0, S("abcdefghij"), 0, 1, -1);
1633 test(S("abcde"), 4, 0, S("abcdefghij"), 0, 5, -5);
1634 test(S("abcde"), 4, 0, S("abcdefghij"), 0, 9, -9);
1635 test(S("abcde"), 4, 0, S("abcdefghij"), 0, 10, -10);
1636 test(S("abcde"), 4, 0, S("abcdefghij"), 0, 11, -10);
1637 test(S("abcde"), 4, 0, S("abcdefghij"), 1, 0, 0);
1638 test(S("abcde"), 4, 0, S("abcdefghij"), 1, 1, -1);
1639 test(S("abcde"), 4, 0, S("abcdefghij"), 1, 4, -4);
1640 test(S("abcde"), 4, 0, S("abcdefghij"), 1, 8, -8);
1641 test(S("abcde"), 4, 0, S("abcdefghij"), 1, 9, -9);
1642 test(S("abcde"), 4, 0, S("abcdefghij"), 1, 10, -9);
1643 test(S("abcde"), 4, 0, S("abcdefghij"), 5, 0, 0);
1644 test(S("abcde"), 4, 0, S("abcdefghij"), 5, 1, -1);
1645 test(S("abcde"), 4, 0, S("abcdefghij"), 5, 2, -2);
1646 test(S("abcde"), 4, 0, S("abcdefghij"), 5, 4, -4);
1647 test(S("abcde"), 4, 0, S("abcdefghij"), 5, 5, -5);
1648 test(S("abcde"), 4, 0, S("abcdefghij"), 5, 6, -5);
1649 test(S("abcde"), 4, 0, S("abcdefghij"), 9, 0, 0);
1650 test(S("abcde"), 4, 0, S("abcdefghij"), 9, 1, -1);
1651 test(S("abcde"), 4, 0, S("abcdefghij"), 9, 2, -1);
1652 test(S("abcde"), 4, 0, S("abcdefghij"), 10, 0, 0);
1653 test(S("abcde"), 4, 0, S("abcdefghij"), 10, 1, 0);
1654 test(S("abcde"), 4, 0, S("abcdefghij"), 11, 0, 0);
1655 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
1656 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 0, 1, -1);
1657 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 0, 10, -10);
1658 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 0, 19, -19);
1659 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 0, 20, -20);
1660 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 0, 21, -20);
1661 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
1662 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 1, 1, -1);
1663 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 1, 9, -9);
1664 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 1, 18, -18);
1665 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 1, 19, -19);
1666 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 1, 20, -19);
1667 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
1668 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 10, 1, -1);
1669 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 10, 5, -5);
1670 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 10, 9, -9);
1671 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 10, 10, -10);
1672 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 10, 11, -10);
1673 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
1674 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 19, 1, -1);
1675 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 19, 2, -1);
1676 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
1677 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
1678 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
1679 test(S("abcde"), 4, 1, S(""), 0, 0, 1);
1680 test(S("abcde"), 4, 1, S(""), 0, 1, 1);
1681 test(S("abcde"), 4, 1, S(""), 1, 0, 0);
1682 test(S("abcde"), 4, 1, S("abcde"), 0, 0, 1);
1683 test(S("abcde"), 4, 1, S("abcde"), 0, 1, 4);
1684 test(S("abcde"), 4, 1, S("abcde"), 0, 2, 4);
1685 test(S("abcde"), 4, 1, S("abcde"), 0, 4, 4);
1686 test(S("abcde"), 4, 1, S("abcde"), 0, 5, 4);
1687 test(S("abcde"), 4, 1, S("abcde"), 0, 6, 4);
1688 test(S("abcde"), 4, 1, S("abcde"), 1, 0, 1);
1689 test(S("abcde"), 4, 1, S("abcde"), 1, 1, 3);
1690 test(S("abcde"), 4, 1, S("abcde"), 1, 2, 3);
1691 test(S("abcde"), 4, 1, S("abcde"), 1, 3, 3);
1692 test(S("abcde"), 4, 1, S("abcde"), 1, 4, 3);
1693 test(S("abcde"), 4, 1, S("abcde"), 1, 5, 3);
1694 test(S("abcde"), 4, 1, S("abcde"), 2, 0, 1);
1695 test(S("abcde"), 4, 1, S("abcde"), 2, 1, 2);
1696 test(S("abcde"), 4, 1, S("abcde"), 2, 2, 2);
1697 test(S("abcde"), 4, 1, S("abcde"), 2, 3, 2);
1698 test(S("abcde"), 4, 1, S("abcde"), 2, 4, 2);
1699 test(S("abcde"), 4, 1, S("abcde"), 4, 0, 1);
1700 test(S("abcde"), 4, 1, S("abcde"), 4, 1, 0);
1701 test(S("abcde"), 4, 1, S("abcde"), 4, 2, 0);
1702 test(S("abcde"), 4, 1, S("abcde"), 5, 0, 1);
1703 test(S("abcde"), 4, 1, S("abcde"), 5, 1, 1);
1704 test(S("abcde"), 4, 1, S("abcde"), 6, 0, 0);
1705 test(S("abcde"), 4, 1, S("abcdefghij"), 0, 0, 1);
1706 test(S("abcde"), 4, 1, S("abcdefghij"), 0, 1, 4);
1707 test(S("abcde"), 4, 1, S("abcdefghij"), 0, 5, 4);
1708 test(S("abcde"), 4, 1, S("abcdefghij"), 0, 9, 4);
1709 test(S("abcde"), 4, 1, S("abcdefghij"), 0, 10, 4);
1710 test(S("abcde"), 4, 1, S("abcdefghij"), 0, 11, 4);
1711 test(S("abcde"), 4, 1, S("abcdefghij"), 1, 0, 1);
1712 test(S("abcde"), 4, 1, S("abcdefghij"), 1, 1, 3);
1713 test(S("abcde"), 4, 1, S("abcdefghij"), 1, 4, 3);
1714 test(S("abcde"), 4, 1, S("abcdefghij"), 1, 8, 3);
1715 test(S("abcde"), 4, 1, S("abcdefghij"), 1, 9, 3);
1716 test(S("abcde"), 4, 1, S("abcdefghij"), 1, 10, 3);
1717 test(S("abcde"), 4, 1, S("abcdefghij"), 5, 0, 1);
1718 test(S("abcde"), 4, 1, S("abcdefghij"), 5, 1, -1);
1719 test(S("abcde"), 4, 1, S("abcdefghij"), 5, 2, -1);
1720 test(S("abcde"), 4, 1, S("abcdefghij"), 5, 4, -1);
1721 test(S("abcde"), 4, 1, S("abcdefghij"), 5, 5, -1);
1722 test(S("abcde"), 4, 1, S("abcdefghij"), 5, 6, -1);
1723 test(S("abcde"), 4, 1, S("abcdefghij"), 9, 0, 1);
1724 test(S("abcde"), 4, 1, S("abcdefghij"), 9, 1, -5);
1730 test(S("abcde"), 4, 1, S("abcdefghij"), 9, 2, -5);
1731 test(S("abcde"), 4, 1, S("abcdefghij"), 10, 0, 1);
1732 test(S("abcde"), 4, 1, S("abcdefghij"), 10, 1, 1);
1733 test(S("abcde"), 4, 1, S("abcdefghij"), 11, 0, 0);
1734 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 0, 0, 1);
1735 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 0, 1, 4);
1736 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 0, 10, 4);
1737 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 0, 19, 4);
1738 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 0, 20, 4);
1739 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 0, 21, 4);
1740 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 1, 0, 1);
1741 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 1, 1, 3);
1742 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 1, 9, 3);
1743 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 1, 18, 3);
1744 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 1, 19, 3);
1745 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 1, 20, 3);
1746 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 10, 0, 1);
1747 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 10, 1, -6);
1748 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 10, 5, -6);
1749 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 10, 9, -6);
1750 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 10, 10, -6);
1751 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 10, 11, -6);
1752 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 19, 0, 1);
1753 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 19, 1, -15);
1754 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 19, 2, -15);
1755 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 20, 0, 1);
1756 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 20, 1, 1);
1757 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 21, 0, 0);
1758 test(S("abcde"), 4, 2, S(""), 0, 0, 1);
1759 test(S("abcde"), 4, 2, S(""), 0, 1, 1);
1760 test(S("abcde"), 4, 2, S(""), 1, 0, 0);
1761 test(S("abcde"), 4, 2, S("abcde"), 0, 0, 1);
1762 test(S("abcde"), 4, 2, S("abcde"), 0, 1, 4);
1763 test(S("abcde"), 4, 2, S("abcde"), 0, 2, 4);
1764 test(S("abcde"), 4, 2, S("abcde"), 0, 4, 4);
1765 test(S("abcde"), 4, 2, S("abcde"), 0, 5, 4);
1766 test(S("abcde"), 4, 2, S("abcde"), 0, 6, 4);
1767 test(S("abcde"), 4, 2, S("abcde"), 1, 0, 1);
1768 test(S("abcde"), 4, 2, S("abcde"), 1, 1, 3);
1769 test(S("abcde"), 4, 2, S("abcde"), 1, 2, 3);
1770 test(S("abcde"), 4, 2, S("abcde"), 1, 3, 3);
1771 test(S("abcde"), 4, 2, S("abcde"), 1, 4, 3);
1772 test(S("abcde"), 4, 2, S("abcde"), 1, 5, 3);
1773 test(S("abcde"), 4, 2, S("abcde"), 2, 0, 1);
1774 test(S("abcde"), 4, 2, S("abcde"), 2, 1, 2);
1775 test(S("abcde"), 4, 2, S("abcde"), 2, 2, 2);
1776 test(S("abcde"), 4, 2, S("abcde"), 2, 3, 2);
1777 test(S("abcde"), 4, 2, S("abcde"), 2, 4, 2);
1778 test(S("abcde"), 4, 2, S("abcde"), 4, 0, 1);
1779 test(S("abcde"), 4, 2, S("abcde"), 4, 1, 0);
1780 test(S("abcde"), 4, 2, S("abcde"), 4, 2, 0);
1781 test(S("abcde"), 4, 2, S("abcde"), 5, 0, 1);
1782 test(S("abcde"), 4, 2, S("abcde"), 5, 1, 1);
1783 test(S("abcde"), 4, 2, S("abcde"), 6, 0, 0);
1784 test(S("abcde"), 4, 2, S("abcdefghij"), 0, 0, 1);
1785 test(S("abcde"), 4, 2, S("abcdefghij"), 0, 1, 4);
1786 test(S("abcde"), 4, 2, S("abcdefghij"), 0, 5, 4);
1787 test(S("abcde"), 4, 2, S("abcdefghij"), 0, 9, 4);
1788 test(S("abcde"), 4, 2, S("abcdefghij"), 0, 10, 4);
1789 test(S("abcde"), 4, 2, S("abcdefghij"), 0, 11, 4);
1790 test(S("abcde"), 4, 2, S("abcdefghij"), 1, 0, 1);
1791 test(S("abcde"), 4, 2, S("abcdefghij"), 1, 1, 3);
1792 test(S("abcde"), 4, 2, S("abcdefghij"), 1, 4, 3);
1793 test(S("abcde"), 4, 2, S("abcdefghij"), 1, 8, 3);
1794 test(S("abcde"), 4, 2, S("abcdefghij"), 1, 9, 3);
1795 test(S("abcde"), 4, 2, S("abcdefghij"), 1, 10, 3);
1796 test(S("abcde"), 4, 2, S("abcdefghij"), 5, 0, 1);
1797 test(S("abcde"), 4, 2, S("abcdefghij"), 5, 1, -1);
1798 test(S("abcde"), 4, 2, S("abcdefghij"), 5, 2, -1);
1799 test(S("abcde"), 4, 2, S("abcdefghij"), 5, 4, -1);
1800 test(S("abcde"), 4, 2, S("abcdefghij"), 5, 5, -1);
1801 test(S("abcde"), 4, 2, S("abcdefghij"), 5, 6, -1);
1802 test(S("abcde"), 4, 2, S("abcdefghij"), 9, 0, 1);
1803 test(S("abcde"), 4, 2, S("abcdefghij"), 9, 1, -5);
1804 test(S("abcde"), 4, 2, S("abcdefghij"), 9, 2, -5);
1805 test(S("abcde"), 4, 2, S("abcdefghij"), 10, 0, 1);
1806 test(S("abcde"), 4, 2, S("abcdefghij"), 10, 1, 1);
1807 test(S("abcde"), 4, 2, S("abcdefghij"), 11, 0, 0);
1808 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 0, 0, 1);
1809 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 0, 1, 4);
1810 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 0, 10, 4);
1811 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 0, 19, 4);
1812 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 0, 20, 4);
1813 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 0, 21, 4);
1814 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 1, 0, 1);
1815 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 1, 1, 3);
1816 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 1, 9, 3);
1817 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 1, 18, 3);
1818 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 1, 19, 3);
1819 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 1, 20, 3);
1820 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 10, 0, 1);
1821 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 10, 1, -6);
1822 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 10, 5, -6);
1823 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 10, 9, -6);
1824 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 10, 10, -6);
1825 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 10, 11, -6);
1826 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 19, 0, 1);
1827 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 19, 1, -15);
1828 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 19, 2, -15);
1829 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 20, 0, 1);
1835 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 20, 1, 1);
1836 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 21, 0, 0);
1837 test(S("abcde"), 5, 0, S(""), 0, 0, 0);
1838 test(S("abcde"), 5, 0, S(""), 0, 1, 0);
1839 test(S("abcde"), 5, 0, S(""), 1, 0, 0);
1840 test(S("abcde"), 5, 0, S("abcde"), 0, 0, 0);
1841 test(S("abcde"), 5, 0, S("abcde"), 0, 1, -1);
1842 test(S("abcde"), 5, 0, S("abcde"), 0, 2, -2);
1843 test(S("abcde"), 5, 0, S("abcde"), 0, 4, -4);
1844 test(S("abcde"), 5, 0, S("abcde"), 0, 5, -5);
1845 test(S("abcde"), 5, 0, S("abcde"), 0, 6, -5);
1846 test(S("abcde"), 5, 0, S("abcde"), 1, 0, 0);
1847 test(S("abcde"), 5, 0, S("abcde"), 1, 1, -1);
1848 test(S("abcde"), 5, 0, S("abcde"), 1, 2, -2);
1849 test(S("abcde"), 5, 0, S("abcde"), 1, 3, -3);
1850 test(S("abcde"), 5, 0, S("abcde"), 1, 4, -4);
1851 test(S("abcde"), 5, 0, S("abcde"), 1, 5, -4);
1852 test(S("abcde"), 5, 0, S("abcde"), 2, 0, 0);
1853 test(S("abcde"), 5, 0, S("abcde"), 2, 1, -1);
1854 test(S("abcde"), 5, 0, S("abcde"), 2, 2, -2);
1855 test(S("abcde"), 5, 0, S("abcde"), 2, 3, -3);
1856 test(S("abcde"), 5, 0, S("abcde"), 2, 4, -3);
1857 test(S("abcde"), 5, 0, S("abcde"), 4, 0, 0);
1858 test(S("abcde"), 5, 0, S("abcde"), 4, 1, -1);
1859 test(S("abcde"), 5, 0, S("abcde"), 4, 2, -1);
1860 test(S("abcde"), 5, 0, S("abcde"), 5, 0, 0);
1861 test(S("abcde"), 5, 0, S("abcde"), 5, 1, 0);
1862 test(S("abcde"), 5, 0, S("abcde"), 6, 0, 0);
1863 test(S("abcde"), 5, 0, S("abcdefghij"), 0, 0, 0);
1864 test(S("abcde"), 5, 0, S("abcdefghij"), 0, 1, -1);
1865 test(S("abcde"), 5, 0, S("abcdefghij"), 0, 5, -5);
1866 test(S("abcde"), 5, 0, S("abcdefghij"), 0, 9, -9);
1867 test(S("abcde"), 5, 0, S("abcdefghij"), 0, 10, -10);
1868 test(S("abcde"), 5, 0, S("abcdefghij"), 0, 11, -10);
1869 test(S("abcde"), 5, 0, S("abcdefghij"), 1, 0, 0);
1870 test(S("abcde"), 5, 0, S("abcdefghij"), 1, 1, -1);
1871 test(S("abcde"), 5, 0, S("abcdefghij"), 1, 4, -4);
1872 test(S("abcde"), 5, 0, S("abcdefghij"), 1, 8, -8);
1873 test(S("abcde"), 5, 0, S("abcdefghij"), 1, 9, -9);
1874 test(S("abcde"), 5, 0, S("abcdefghij"), 1, 10, -9);
1875 test(S("abcde"), 5, 0, S("abcdefghij"), 5, 0, 0);
1876 test(S("abcde"), 5, 0, S("abcdefghij"), 5, 1, -1);
1877 test(S("abcde"), 5, 0, S("abcdefghij"), 5, 2, -2);
1878 test(S("abcde"), 5, 0, S("abcdefghij"), 5, 4, -4);
1879 test(S("abcde"), 5, 0, S("abcdefghij"), 5, 5, -5);
1880 test(S("abcde"), 5, 0, S("abcdefghij"), 5, 6, -5);
1881 test(S("abcde"), 5, 0, S("abcdefghij"), 9, 0, 0);
1882 test(S("abcde"), 5, 0, S("abcdefghij"), 9, 1, -1);
1883 test(S("abcde"), 5, 0, S("abcdefghij"), 9, 2, -1);
1884 test(S("abcde"), 5, 0, S("abcdefghij"), 10, 0, 0);
1885 test(S("abcde"), 5, 0, S("abcdefghij"), 10, 1, 0);
1886 test(S("abcde"), 5, 0, S("abcdefghij"), 11, 0, 0);
1887 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
1888 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 0, 1, -1);
1889 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 0, 10, -10);
1890 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 0, 19, -19);
1891 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 0, 20, -20);
1892 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 0, 21, -20);
1893 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
1894 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 1, 1, -1);
1895 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 1, 9, -9);
1896 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 1, 18, -18);
1897 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 1, 19, -19);
1898 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 1, 20, -19);
1899 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
1900 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 10, 1, -1);
1901 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 10, 5, -5);
1902 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 10, 9, -9);
1903 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 10, 10, -10);
1904 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 10, 11, -10);
1905 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
1906 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 19, 1, -1);
1907 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 19, 2, -1);
1908 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
1909 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
1910 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
1911 test(S("abcde"), 5, 1, S(""), 0, 0, 0);
1912 test(S("abcde"), 5, 1, S(""), 0, 1, 0);
1913 test(S("abcde"), 5, 1, S(""), 1, 0, 0);
1914 test(S("abcde"), 5, 1, S("abcde"), 0, 0, 0);
1915 test(S("abcde"), 5, 1, S("abcde"), 0, 1, -1);
1916 test(S("abcde"), 5, 1, S("abcde"), 0, 2, -2);
1917 test(S("abcde"), 5, 1, S("abcde"), 0, 4, -4);
1918 test(S("abcde"), 5, 1, S("abcde"), 0, 5, -5);
1919 test(S("abcde"), 5, 1, S("abcde"), 0, 6, -5);
1920 test(S("abcde"), 5, 1, S("abcde"), 1, 0, 0);
1921 test(S("abcde"), 5, 1, S("abcde"), 1, 1, -1);
1922 test(S("abcde"), 5, 1, S("abcde"), 1, 2, -2);
1923 test(S("abcde"), 5, 1, S("abcde"), 1, 3, -3);
1924 test(S("abcde"), 5, 1, S("abcde"), 1, 4, -4);
1925 test(S("abcde"), 5, 1, S("abcde"), 1, 5, -4);
1926 test(S("abcde"), 5, 1, S("abcde"), 2, 0, 0);
1927 test(S("abcde"), 5, 1, S("abcde"), 2, 1, -1);
1928 test(S("abcde"), 5, 1, S("abcde"), 2, 2, -2);
1929 test(S("abcde"), 5, 1, S("abcde"), 2, 3, -3);
1930 test(S("abcde"), 5, 1, S("abcde"), 2, 4, -3);
1931 test(S("abcde"), 5, 1, S("abcde"), 4, 0, 0);
1932 test(S("abcde"), 5, 1, S("abcde"), 4, 1, -1);
1933 test(S("abcde"), 5, 1, S("abcde"), 4, 2, -1);
1934 test(S("abcde"), 5, 1, S("abcde"), 5, 0, 0);
1940 test(S("abcde"), 5, 1, S("abcde"), 5, 1, 0);
1941 test(S("abcde"), 5, 1, S("abcde"), 6, 0, 0);
1942 test(S("abcde"), 5, 1, S("abcdefghij"), 0, 0, 0);
1943 test(S("abcde"), 5, 1, S("abcdefghij"), 0, 1, -1);
1944 test(S("abcde"), 5, 1, S("abcdefghij"), 0, 5, -5);
1945 test(S("abcde"), 5, 1, S("abcdefghij"), 0, 9, -9);
1946 test(S("abcde"), 5, 1, S("abcdefghij"), 0, 10, -10);
1947 test(S("abcde"), 5, 1, S("abcdefghij"), 0, 11, -10);
1948 test(S("abcde"), 5, 1, S("abcdefghij"), 1, 0, 0);
1949 test(S("abcde"), 5, 1, S("abcdefghij"), 1, 1, -1);
1950 test(S("abcde"), 5, 1, S("abcdefghij"), 1, 4, -4);
1951 test(S("abcde"), 5, 1, S("abcdefghij"), 1, 8, -8);
1952 test(S("abcde"), 5, 1, S("abcdefghij"), 1, 9, -9);
1953 test(S("abcde"), 5, 1, S("abcdefghij"), 1, 10, -9);
1954 test(S("abcde"), 5, 1, S("abcdefghij"), 5, 0, 0);
1955 test(S("abcde"), 5, 1, S("abcdefghij"), 5, 1, -1);
1956 test(S("abcde"), 5, 1, S("abcdefghij"), 5, 2, -2);
1957 test(S("abcde"), 5, 1, S("abcdefghij"), 5, 4, -4);
1958 test(S("abcde"), 5, 1, S("abcdefghij"), 5, 5, -5);
1959 test(S("abcde"), 5, 1, S("abcdefghij"), 5, 6, -5);
1960 test(S("abcde"), 5, 1, S("abcdefghij"), 9, 0, 0);
1961 test(S("abcde"), 5, 1, S("abcdefghij"), 9, 1, -1);
1962 test(S("abcde"), 5, 1, S("abcdefghij"), 9, 2, -1);
1963 test(S("abcde"), 5, 1, S("abcdefghij"), 10, 0, 0);
1964 test(S("abcde"), 5, 1, S("abcdefghij"), 10, 1, 0);
1965 test(S("abcde"), 5, 1, S("abcdefghij"), 11, 0, 0);
1966 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 0, 0, 0);
1967 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 0, 1, -1);
1968 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 0, 10, -10);
1969 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 0, 19, -19);
1970 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 0, 20, -20);
1971 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 0, 21, -20);
1972 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 1, 0, 0);
1973 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 1, 1, -1);
1974 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 1, 9, -9);
1975 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 1, 18, -18);
1976 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 1, 19, -19);
1977 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 1, 20, -19);
1978 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 10, 0, 0);
1979 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 10, 1, -1);
1980 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 10, 5, -5);
1981 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 10, 9, -9);
1982 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 10, 10, -10);
1983 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 10, 11, -10);
1984 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 19, 0, 0);
1985 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 19, 1, -1);
1986 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 19, 2, -1);
1987 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 20, 0, 0);
1988 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 20, 1, 0);
1989 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 21, 0, 0);
1990 test(S("abcde"), 6, 0, S(""), 0, 0, 0);
1991 test(S("abcde"), 6, 0, S(""), 0, 1, 0);
1992 test(S("abcde"), 6, 0, S(""), 1, 0, 0);
1993 test(S("abcde"), 6, 0, S("abcde"), 0, 0, 0);
1994 test(S("abcde"), 6, 0, S("abcde"), 0, 1, 0);
1995 test(S("abcde"), 6, 0, S("abcde"), 0, 2, 0);
1996 test(S("abcde"), 6, 0, S("abcde"), 0, 4, 0);
1997 test(S("abcde"), 6, 0, S("abcde"), 0, 5, 0);
1998 test(S("abcde"), 6, 0, S("abcde"), 0, 6, 0);
1999 test(S("abcde"), 6, 0, S("abcde"), 1, 0, 0);
2000 test(S("abcde"), 6, 0, S("abcde"), 1, 1, 0);
2001 test(S("abcde"), 6, 0, S("abcde"), 1, 2, 0);
2002 test(S("abcde"), 6, 0, S("abcde"), 1, 3, 0);
2003 test(S("abcde"), 6, 0, S("abcde"), 1, 4, 0);
2004 test(S("abcde"), 6, 0, S("abcde"), 1, 5, 0);
2005 test(S("abcde"), 6, 0, S("abcde"), 2, 0, 0);
2006 test(S("abcde"), 6, 0, S("abcde"), 2, 1, 0);
2007 test(S("abcde"), 6, 0, S("abcde"), 2, 2, 0);
2008 test(S("abcde"), 6, 0, S("abcde"), 2, 3, 0);
2009 test(S("abcde"), 6, 0, S("abcde"), 2, 4, 0);
2010 test(S("abcde"), 6, 0, S("abcde"), 4, 0, 0);
2011 test(S("abcde"), 6, 0, S("abcde"), 4, 1, 0);
2012 test(S("abcde"), 6, 0, S("abcde"), 4, 2, 0);
2013 test(S("abcde"), 6, 0, S("abcde"), 5, 0, 0);
2014 test(S("abcde"), 6, 0, S("abcde"), 5, 1, 0);
2015 test(S("abcde"), 6, 0, S("abcde"), 6, 0, 0);
2016 test(S("abcde"), 6, 0, S("abcdefghij"), 0, 0, 0);
2017 test(S("abcde"), 6, 0, S("abcdefghij"), 0, 1, 0);
2018 test(S("abcde"), 6, 0, S("abcdefghij"), 0, 5, 0);
2019 test(S("abcde"), 6, 0, S("abcdefghij"), 0, 9, 0);
2020 test(S("abcde"), 6, 0, S("abcdefghij"), 0, 10, 0);
2021 test(S("abcde"), 6, 0, S("abcdefghij"), 0, 11, 0);
2022 test(S("abcde"), 6, 0, S("abcdefghij"), 1, 0, 0);
2023 test(S("abcde"), 6, 0, S("abcdefghij"), 1, 1, 0);
2024 test(S("abcde"), 6, 0, S("abcdefghij"), 1, 4, 0);
2025 test(S("abcde"), 6, 0, S("abcdefghij"), 1, 8, 0);
2026 test(S("abcde"), 6, 0, S("abcdefghij"), 1, 9, 0);
2027 test(S("abcde"), 6, 0, S("abcdefghij"), 1, 10, 0);
2028 test(S("abcde"), 6, 0, S("abcdefghij"), 5, 0, 0);
2029 test(S("abcde"), 6, 0, S("abcdefghij"), 5, 1, 0);
2030 test(S("abcde"), 6, 0, S("abcdefghij"), 5, 2, 0);
2031 test(S("abcde"), 6, 0, S("abcdefghij"), 5, 4, 0);
2032 test(S("abcde"), 6, 0, S("abcdefghij"), 5, 5, 0);
2033 test(S("abcde"), 6, 0, S("abcdefghij"), 5, 6, 0);
2034 test(S("abcde"), 6, 0, S("abcdefghij"), 9, 0, 0);
2035 test(S("abcde"), 6, 0, S("abcdefghij"), 9, 1, 0);
2036 test(S("abcde"), 6, 0, S("abcdefghij"), 9, 2, 0);
2037 test(S("abcde"), 6, 0, S("abcdefghij"), 10, 0, 0);
2038 test(S("abcde"), 6, 0, S("abcdefghij"), 10, 1, 0);
2039 test(S("abcde"), 6, 0, S("abcdefghij"), 11, 0, 0);
2045 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
2046 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 0, 1, 0);
2047 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 0, 10, 0);
2048 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 0, 19, 0);
2049 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 0, 20, 0);
2050 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 0, 21, 0);
2051 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
2052 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 1, 1, 0);
2053 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 1, 9, 0);
2054 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 1, 18, 0);
2055 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 1, 19, 0);
2056 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 1, 20, 0);
2057 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
2058 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 10, 1, 0);
2059 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 10, 5, 0);
2060 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 10, 9, 0);
2061 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 10, 10, 0);
2062 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 10, 11, 0);
2063 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
2064 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 19, 1, 0);
2065 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 19, 2, 0);
2066 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
2067 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
2068 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
2069 test(S("abcdefghij"), 0, 0, S(""), 0, 0, 0);
2070 test(S("abcdefghij"), 0, 0, S(""), 0, 1, 0);
2071 test(S("abcdefghij"), 0, 0, S(""), 1, 0, 0);
2072 test(S("abcdefghij"), 0, 0, S("abcde"), 0, 0, 0);
2073 test(S("abcdefghij"), 0, 0, S("abcde"), 0, 1, -1);
2074 test(S("abcdefghij"), 0, 0, S("abcde"), 0, 2, -2);
2075 test(S("abcdefghij"), 0, 0, S("abcde"), 0, 4, -4);
2076 test(S("abcdefghij"), 0, 0, S("abcde"), 0, 5, -5);
2077 test(S("abcdefghij"), 0, 0, S("abcde"), 0, 6, -5);
2078 test(S("abcdefghij"), 0, 0, S("abcde"), 1, 0, 0);
2079 test(S("abcdefghij"), 0, 0, S("abcde"), 1, 1, -1);
2080 test(S("abcdefghij"), 0, 0, S("abcde"), 1, 2, -2);
2081 test(S("abcdefghij"), 0, 0, S("abcde"), 1, 3, -3);
2082 test(S("abcdefghij"), 0, 0, S("abcde"), 1, 4, -4);
2083 test(S("abcdefghij"), 0, 0, S("abcde"), 1, 5, -4);
2084 test(S("abcdefghij"), 0, 0, S("abcde"), 2, 0, 0);
2085 test(S("abcdefghij"), 0, 0, S("abcde"), 2, 1, -1);
2086 test(S("abcdefghij"), 0, 0, S("abcde"), 2, 2, -2);
2087 test(S("abcdefghij"), 0, 0, S("abcde"), 2, 3, -3);
2088 test(S("abcdefghij"), 0, 0, S("abcde"), 2, 4, -3);
2089 test(S("abcdefghij"), 0, 0, S("abcde"), 4, 0, 0);
2090 test(S("abcdefghij"), 0, 0, S("abcde"), 4, 1, -1);
2091 test(S("abcdefghij"), 0, 0, S("abcde"), 4, 2, -1);
2092 test(S("abcdefghij"), 0, 0, S("abcde"), 5, 0, 0);
2093 test(S("abcdefghij"), 0, 0, S("abcde"), 5, 1, 0);
2094 test(S("abcdefghij"), 0, 0, S("abcde"), 6, 0, 0);
2095 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 0, 0, 0);
2096 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 0, 1, -1);
2097 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 0, 5, -5);
2098 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 0, 9, -9);
2099 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 0, 10, -10);
2100 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 0, 11, -10);
2101 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 1, 0, 0);
2102 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 1, 1, -1);
2103 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 1, 4, -4);
2104 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 1, 8, -8);
2105 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 1, 9, -9);
2106 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 1, 10, -9);
2107 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 5, 0, 0);
2108 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 5, 1, -1);
2109 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 5, 2, -2);
2110 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 5, 4, -4);
2111 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 5, 5, -5);
2112 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 5, 6, -5);
2113 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 9, 0, 0);
2114 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 9, 1, -1);
2115 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 9, 2, -1);
2116 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 10, 0, 0);
2117 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 10, 1, 0);
2118 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 11, 0, 0);
2119 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
2120 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 0, 1, -1);
2121 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 0, 10, -10);
2122 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 0, 19, -19);
2123 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 0, 20, -20);
2124 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 0, 21, -20);
2125 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
2126 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 1, 1, -1);
2127 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 1, 9, -9);
2128 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 1, 18, -18);
2129 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 1, 19, -19);
2130 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 1, 20, -19);
2131 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
2132 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 10, 1, -1);
2133 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 10, 5, -5);
2134 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 10, 9, -9);
2135 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 10, 10, -10);
2136 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 10, 11, -10);
2137 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
2138 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 19, 1, -1);
2139 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 19, 2, -1);
2140 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
2141 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
2142 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
2143 test(S("abcdefghij"), 0, 1, S(""), 0, 0, 1);
2144 test(S("abcdefghij"), 0, 1, S(""), 0, 1, 1);
2150 test(S("abcdefghij"), 0, 1, S(""), 1, 0, 0);
2151 test(S("abcdefghij"), 0, 1, S("abcde"), 0, 0, 1);
2152 test(S("abcdefghij"), 0, 1, S("abcde"), 0, 1, 0);
2153 test(S("abcdefghij"), 0, 1, S("abcde"), 0, 2, -1);
2154 test(S("abcdefghij"), 0, 1, S("abcde"), 0, 4, -3);
2155 test(S("abcdefghij"), 0, 1, S("abcde"), 0, 5, -4);
2156 test(S("abcdefghij"), 0, 1, S("abcde"), 0, 6, -4);
2157 test(S("abcdefghij"), 0, 1, S("abcde"), 1, 0, 1);
2158 test(S("abcdefghij"), 0, 1, S("abcde"), 1, 1, -1);
2159 test(S("abcdefghij"), 0, 1, S("abcde"), 1, 2, -1);
2160 test(S("abcdefghij"), 0, 1, S("abcde"), 1, 3, -1);
2161 test(S("abcdefghij"), 0, 1, S("abcde"), 1, 4, -1);
2162 test(S("abcdefghij"), 0, 1, S("abcde"), 1, 5, -1);
2163 test(S("abcdefghij"), 0, 1, S("abcde"), 2, 0, 1);
2164 test(S("abcdefghij"), 0, 1, S("abcde"), 2, 1, -2);
2165 test(S("abcdefghij"), 0, 1, S("abcde"), 2, 2, -2);
2166 test(S("abcdefghij"), 0, 1, S("abcde"), 2, 3, -2);
2167 test(S("abcdefghij"), 0, 1, S("abcde"), 2, 4, -2);
2168 test(S("abcdefghij"), 0, 1, S("abcde"), 4, 0, 1);
2169 test(S("abcdefghij"), 0, 1, S("abcde"), 4, 1, -4);
2170 test(S("abcdefghij"), 0, 1, S("abcde"), 4, 2, -4);
2171 test(S("abcdefghij"), 0, 1, S("abcde"), 5, 0, 1);
2172 test(S("abcdefghij"), 0, 1, S("abcde"), 5, 1, 1);
2173 test(S("abcdefghij"), 0, 1, S("abcde"), 6, 0, 0);
2174 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 0, 0, 1);
2175 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 0, 1, 0);
2176 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 0, 5, -4);
2177 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 0, 9, -8);
2178 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 0, 10, -9);
2179 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 0, 11, -9);
2180 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 1, 0, 1);
2181 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 1, 1, -1);
2182 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 1, 4, -1);
2183 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 1, 8, -1);
2184 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 1, 9, -1);
2185 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 1, 10, -1);
2186 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 5, 0, 1);
2187 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 5, 1, -5);
2188 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 5, 2, -5);
2189 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 5, 4, -5);
2190 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 5, 5, -5);
2191 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 5, 6, -5);
2192 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 9, 0, 1);
2193 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 9, 1, -9);
2194 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 9, 2, -9);
2195 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 10, 0, 1);
2196 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 10, 1, 1);
2197 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 11, 0, 0);
2198 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 0, 0, 1);
2199 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 0, 1, 0);
2200 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 0, 10, -9);
2201 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 0, 19, -18);
2202 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 0, 20, -19);
2203 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 0, 21, -19);
2204 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 1, 0, 1);
2205 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 1, 1, -1);
2206 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 1, 9, -1);
2207 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 1, 18, -1);
2208 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 1, 19, -1);
2209 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 1, 20, -1);
2210 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 10, 0, 1);
2211 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 10, 1, -10);
2212 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 10, 5, -10);
2213 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 10, 9, -10);
2214 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 10, 10, -10);
2215 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 10, 11, -10);
2216 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 19, 0, 1);
2217 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 19, 1, -19);
2218 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 19, 2, -19);
2219 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 20, 0, 1);
2220 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 20, 1, 1);
2221 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 21, 0, 0);
2222 test(S("abcdefghij"), 0, 5, S(""), 0, 0, 5);
2223 test(S("abcdefghij"), 0, 5, S(""), 0, 1, 5);
2224 test(S("abcdefghij"), 0, 5, S(""), 1, 0, 0);
2225 test(S("abcdefghij"), 0, 5, S("abcde"), 0, 0, 5);
2226 test(S("abcdefghij"), 0, 5, S("abcde"), 0, 1, 4);
2227 test(S("abcdefghij"), 0, 5, S("abcde"), 0, 2, 3);
2228 test(S("abcdefghij"), 0, 5, S("abcde"), 0, 4, 1);
2229 test(S("abcdefghij"), 0, 5, S("abcde"), 0, 5, 0);
2230 test(S("abcdefghij"), 0, 5, S("abcde"), 0, 6, 0);
2231 test(S("abcdefghij"), 0, 5, S("abcde"), 1, 0, 5);
2232 test(S("abcdefghij"), 0, 5, S("abcde"), 1, 1, -1);
2233 test(S("abcdefghij"), 0, 5, S("abcde"), 1, 2, -1);
2234 test(S("abcdefghij"), 0, 5, S("abcde"), 1, 3, -1);
2235 test(S("abcdefghij"), 0, 5, S("abcde"), 1, 4, -1);
2236 test(S("abcdefghij"), 0, 5, S("abcde"), 1, 5, -1);
2237 test(S("abcdefghij"), 0, 5, S("abcde"), 2, 0, 5);
2238 test(S("abcdefghij"), 0, 5, S("abcde"), 2, 1, -2);
2239 test(S("abcdefghij"), 0, 5, S("abcde"), 2, 2, -2);
2240 test(S("abcdefghij"), 0, 5, S("abcde"), 2, 3, -2);
2241 test(S("abcdefghij"), 0, 5, S("abcde"), 2, 4, -2);
2242 test(S("abcdefghij"), 0, 5, S("abcde"), 4, 0, 5);
2243 test(S("abcdefghij"), 0, 5, S("abcde"), 4, 1, -4);
2244 test(S("abcdefghij"), 0, 5, S("abcde"), 4, 2, -4);
2245 test(S("abcdefghij"), 0, 5, S("abcde"), 5, 0, 5);
2246 test(S("abcdefghij"), 0, 5, S("abcde"), 5, 1, 5);
2247 test(S("abcdefghij"), 0, 5, S("abcde"), 6, 0, 0);
2248 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 0, 0, 5);
2249 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 0, 1, 4);
2255 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 0, 5, 0);
2256 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 0, 9, -4);
2257 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 0, 10, -5);
2258 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 0, 11, -5);
2259 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 1, 0, 5);
2260 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 1, 1, -1);
2261 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 1, 4, -1);
2262 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 1, 8, -1);
2263 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 1, 9, -1);
2264 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 1, 10, -1);
2265 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 5, 0, 5);
2266 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 5, 1, -5);
2267 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 5, 2, -5);
2268 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 5, 4, -5);
2269 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 5, 5, -5);
2270 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 5, 6, -5);
2271 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 9, 0, 5);
2272 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 9, 1, -9);
2273 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 9, 2, -9);
2274 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 10, 0, 5);
2275 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 10, 1, 5);
2276 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 11, 0, 0);
2277 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 0, 0, 5);
2278 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 0, 1, 4);
2279 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 0, 10, -5);
2280 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 0, 19, -14);
2281 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 0, 20, -15);
2282 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 0, 21, -15);
2283 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 1, 0, 5);
2284 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 1, 1, -1);
2285 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 1, 9, -1);
2286 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 1, 18, -1);
2287 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 1, 19, -1);
2288 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 1, 20, -1);
2289 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 10, 0, 5);
2290 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 10, 1, -10);
2291 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 10, 5, -10);
2292 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 10, 9, -10);
2293 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 10, 10, -10);
2294 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 10, 11, -10);
2295 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 19, 0, 5);
2296 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 19, 1, -19);
2297 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 19, 2, -19);
2298 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 20, 0, 5);
2299 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 20, 1, 5);
2300 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 21, 0, 0);
2301 test(S("abcdefghij"), 0, 9, S(""), 0, 0, 9);
2302 test(S("abcdefghij"), 0, 9, S(""), 0, 1, 9);
2303 test(S("abcdefghij"), 0, 9, S(""), 1, 0, 0);
2304 test(S("abcdefghij"), 0, 9, S("abcde"), 0, 0, 9);
2305 test(S("abcdefghij"), 0, 9, S("abcde"), 0, 1, 8);
2306 test(S("abcdefghij"), 0, 9, S("abcde"), 0, 2, 7);
2307 test(S("abcdefghij"), 0, 9, S("abcde"), 0, 4, 5);
2308 test(S("abcdefghij"), 0, 9, S("abcde"), 0, 5, 4);
2309 test(S("abcdefghij"), 0, 9, S("abcde"), 0, 6, 4);
2310 test(S("abcdefghij"), 0, 9, S("abcde"), 1, 0, 9);
2311 test(S("abcdefghij"), 0, 9, S("abcde"), 1, 1, -1);
2312 test(S("abcdefghij"), 0, 9, S("abcde"), 1, 2, -1);
2313 test(S("abcdefghij"), 0, 9, S("abcde"), 1, 3, -1);
2314 test(S("abcdefghij"), 0, 9, S("abcde"), 1, 4, -1);
2315 test(S("abcdefghij"), 0, 9, S("abcde"), 1, 5, -1);
2316 test(S("abcdefghij"), 0, 9, S("abcde"), 2, 0, 9);
2317 test(S("abcdefghij"), 0, 9, S("abcde"), 2, 1, -2);
2318 test(S("abcdefghij"), 0, 9, S("abcde"), 2, 2, -2);
2319 test(S("abcdefghij"), 0, 9, S("abcde"), 2, 3, -2);
2320 test(S("abcdefghij"), 0, 9, S("abcde"), 2, 4, -2);
2321 test(S("abcdefghij"), 0, 9, S("abcde"), 4, 0, 9);
2322 test(S("abcdefghij"), 0, 9, S("abcde"), 4, 1, -4);
2323 test(S("abcdefghij"), 0, 9, S("abcde"), 4, 2, -4);
2324 test(S("abcdefghij"), 0, 9, S("abcde"), 5, 0, 9);
2325 test(S("abcdefghij"), 0, 9, S("abcde"), 5, 1, 9);
2326 test(S("abcdefghij"), 0, 9, S("abcde"), 6, 0, 0);
2327 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 0, 0, 9);
2328 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 0, 1, 8);
2329 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 0, 5, 4);
2330 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 0, 9, 0);
2331 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 0, 10, -1);
2332 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 0, 11, -1);
2333 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 1, 0, 9);
2334 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 1, 1, -1);
2335 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 1, 4, -1);
2336 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 1, 8, -1);
2337 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 1, 9, -1);
2338 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 1, 10, -1);
2339 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 5, 0, 9);
2340 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 5, 1, -5);
2341 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 5, 2, -5);
2342 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 5, 4, -5);
2343 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 5, 5, -5);
2344 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 5, 6, -5);
2345 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 9, 0, 9);
2346 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 9, 1, -9);
2347 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 9, 2, -9);
2348 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 10, 0, 9);
2349 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 10, 1, 9);
2350 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 11, 0, 0);
2351 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 0, 0, 9);
2352 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 0, 1, 8);
2353 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 0, 10, -1);
2354 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 0, 19, -10);
2360 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 0, 20, -11);
2361 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 0, 21, -11);
2362 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 1, 0, 9);
2363 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 1, 1, -1);
2364 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 1, 9, -1);
2365 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 1, 18, -1);
2366 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 1, 19, -1);
2367 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 1, 20, -1);
2368 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 10, 0, 9);
2369 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 10, 1, -10);
2370 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 10, 5, -10);
2371 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 10, 9, -10);
2372 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 10, 10, -10);
2373 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 10, 11, -10);
2374 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 19, 0, 9);
2375 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 19, 1, -19);
2376 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 19, 2, -19);
2377 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 20, 0, 9);
2378 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 20, 1, 9);
2379 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 21, 0, 0);
2380 test(S("abcdefghij"), 0, 10, S(""), 0, 0, 10);
2381 test(S("abcdefghij"), 0, 10, S(""), 0, 1, 10);
2382 test(S("abcdefghij"), 0, 10, S(""), 1, 0, 0);
2383 test(S("abcdefghij"), 0, 10, S("abcde"), 0, 0, 10);
2384 test(S("abcdefghij"), 0, 10, S("abcde"), 0, 1, 9);
2385 test(S("abcdefghij"), 0, 10, S("abcde"), 0, 2, 8);
2386 test(S("abcdefghij"), 0, 10, S("abcde"), 0, 4, 6);
2387 test(S("abcdefghij"), 0, 10, S("abcde"), 0, 5, 5);
2388 test(S("abcdefghij"), 0, 10, S("abcde"), 0, 6, 5);
2389 test(S("abcdefghij"), 0, 10, S("abcde"), 1, 0, 10);
2390 test(S("abcdefghij"), 0, 10, S("abcde"), 1, 1, -1);
2391 test(S("abcdefghij"), 0, 10, S("abcde"), 1, 2, -1);
2392 test(S("abcdefghij"), 0, 10, S("abcde"), 1, 3, -1);
2393 test(S("abcdefghij"), 0, 10, S("abcde"), 1, 4, -1);
2394 test(S("abcdefghij"), 0, 10, S("abcde"), 1, 5, -1);
2395 test(S("abcdefghij"), 0, 10, S("abcde"), 2, 0, 10);
2396 test(S("abcdefghij"), 0, 10, S("abcde"), 2, 1, -2);
2397 test(S("abcdefghij"), 0, 10, S("abcde"), 2, 2, -2);
2398 test(S("abcdefghij"), 0, 10, S("abcde"), 2, 3, -2);
2399 test(S("abcdefghij"), 0, 10, S("abcde"), 2, 4, -2);
2400 test(S("abcdefghij"), 0, 10, S("abcde"), 4, 0, 10);
2401 test(S("abcdefghij"), 0, 10, S("abcde"), 4, 1, -4);
2402 test(S("abcdefghij"), 0, 10, S("abcde"), 4, 2, -4);
2403 test(S("abcdefghij"), 0, 10, S("abcde"), 5, 0, 10);
2404 test(S("abcdefghij"), 0, 10, S("abcde"), 5, 1, 10);
2405 test(S("abcdefghij"), 0, 10, S("abcde"), 6, 0, 0);
2406 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 0, 0, 10);
2407 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 0, 1, 9);
2408 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 0, 5, 5);
2409 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 0, 9, 1);
2410 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 0, 10, 0);
2411 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 0, 11, 0);
2412 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 1, 0, 10);
2413 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 1, 1, -1);
2414 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 1, 4, -1);
2415 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 1, 8, -1);
2416 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 1, 9, -1);
2417 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 1, 10, -1);
2418 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 5, 0, 10);
2419 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 5, 1, -5);
2420 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 5, 2, -5);
2421 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 5, 4, -5);
2422 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 5, 5, -5);
2423 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 5, 6, -5);
2424 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 9, 0, 10);
2425 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 9, 1, -9);
2426 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 9, 2, -9);
2427 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 10, 0, 10);
2428 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 10, 1, 10);
2429 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 11, 0, 0);
2430 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 0, 0, 10);
2431 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 0, 1, 9);
2432 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 0, 10, 0);
2433 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 0, 19, -9);
2434 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 0, 20, -10);
2435 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 0, 21, -10);
2436 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 1, 0, 10);
2437 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 1, 1, -1);
2438 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 1, 9, -1);
2439 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 1, 18, -1);
2440 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 1, 19, -1);
2441 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 1, 20, -1);
2442 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 10, 0, 10);
2443 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 10, 1, -10);
2444 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 10, 5, -10);
2445 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 10, 9, -10);
2446 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 10, 10, -10);
2447 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 10, 11, -10);
2448 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 19, 0, 10);
2449 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 19, 1, -19);
2450 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 19, 2, -19);
2451 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 20, 0, 10);
2452 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 20, 1, 10);
2453 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 21, 0, 0);
2454 test(S("abcdefghij"), 0, 11, S(""), 0, 0, 10);
2455 test(S("abcdefghij"), 0, 11, S(""), 0, 1, 10);
2456 test(S("abcdefghij"), 0, 11, S(""), 1, 0, 0);
2457 test(S("abcdefghij"), 0, 11, S("abcde"), 0, 0, 10);
2458 test(S("abcdefghij"), 0, 11, S("abcde"), 0, 1, 9);
2459 test(S("abcdefghij"), 0, 11, S("abcde"), 0, 2, 8);
2465 test(S("abcdefghij"), 0, 11, S("abcde"), 0, 4, 6);
2466 test(S("abcdefghij"), 0, 11, S("abcde"), 0, 5, 5);
2467 test(S("abcdefghij"), 0, 11, S("abcde"), 0, 6, 5);
2468 test(S("abcdefghij"), 0, 11, S("abcde"), 1, 0, 10);
2469 test(S("abcdefghij"), 0, 11, S("abcde"), 1, 1, -1);
2470 test(S("abcdefghij"), 0, 11, S("abcde"), 1, 2, -1);
2471 test(S("abcdefghij"), 0, 11, S("abcde"), 1, 3, -1);
2472 test(S("abcdefghij"), 0, 11, S("abcde"), 1, 4, -1);
2473 test(S("abcdefghij"), 0, 11, S("abcde"), 1, 5, -1);
2474 test(S("abcdefghij"), 0, 11, S("abcde"), 2, 0, 10);
2475 test(S("abcdefghij"), 0, 11, S("abcde"), 2, 1, -2);
2476 test(S("abcdefghij"), 0, 11, S("abcde"), 2, 2, -2);
2477 test(S("abcdefghij"), 0, 11, S("abcde"), 2, 3, -2);
2478 test(S("abcdefghij"), 0, 11, S("abcde"), 2, 4, -2);
2479 test(S("abcdefghij"), 0, 11, S("abcde"), 4, 0, 10);
2480 test(S("abcdefghij"), 0, 11, S("abcde"), 4, 1, -4);
2481 test(S("abcdefghij"), 0, 11, S("abcde"), 4, 2, -4);
2482 test(S("abcdefghij"), 0, 11, S("abcde"), 5, 0, 10);
2483 test(S("abcdefghij"), 0, 11, S("abcde"), 5, 1, 10);
2484 test(S("abcdefghij"), 0, 11, S("abcde"), 6, 0, 0);
2485 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 0, 0, 10);
2486 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 0, 1, 9);
2487 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 0, 5, 5);
2488 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 0, 9, 1);
2489 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 0, 10, 0);
2490 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 0, 11, 0);
2491 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 1, 0, 10);
2492 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 1, 1, -1);
2493 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 1, 4, -1);
2494 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 1, 8, -1);
2495 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 1, 9, -1);
2496 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 1, 10, -1);
2497 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 5, 0, 10);
2498 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 5, 1, -5);
2499 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 5, 2, -5);
2500 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 5, 4, -5);
2501 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 5, 5, -5);
2502 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 5, 6, -5);
2503 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 9, 0, 10);
2504 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 9, 1, -9);
2505 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 9, 2, -9);
2506 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 10, 0, 10);
2507 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 10, 1, 10);
2508 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 11, 0, 0);
2509 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 0, 0, 10);
2510 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 0, 1, 9);
2511 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 0, 10, 0);
2512 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 0, 19, -9);
2513 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 0, 20, -10);
2514 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 0, 21, -10);
2515 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 1, 0, 10);
2516 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 1, 1, -1);
2517 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 1, 9, -1);
2518 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 1, 18, -1);
2519 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 1, 19, -1);
2520 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 1, 20, -1);
2521 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 10, 0, 10);
2522 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 10, 1, -10);
2523 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 10, 5, -10);
2524 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 10, 9, -10);
2525 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 10, 10, -10);
2526 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 10, 11, -10);
2527 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 19, 0, 10);
2528 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 19, 1, -19);
2529 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 19, 2, -19);
2530 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 20, 0, 10);
2531 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 20, 1, 10);
2532 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 21, 0, 0);
2533 test(S("abcdefghij"), 1, 0, S(""), 0, 0, 0);
2534 test(S("abcdefghij"), 1, 0, S(""), 0, 1, 0);
2535 test(S("abcdefghij"), 1, 0, S(""), 1, 0, 0);
2536 test(S("abcdefghij"), 1, 0, S("abcde"), 0, 0, 0);
2537 test(S("abcdefghij"), 1, 0, S("abcde"), 0, 1, -1);
2538 test(S("abcdefghij"), 1, 0, S("abcde"), 0, 2, -2);
2539 test(S("abcdefghij"), 1, 0, S("abcde"), 0, 4, -4);
2540 test(S("abcdefghij"), 1, 0, S("abcde"), 0, 5, -5);
2541 test(S("abcdefghij"), 1, 0, S("abcde"), 0, 6, -5);
2542 test(S("abcdefghij"), 1, 0, S("abcde"), 1, 0, 0);
2543 test(S("abcdefghij"), 1, 0, S("abcde"), 1, 1, -1);
2544 test(S("abcdefghij"), 1, 0, S("abcde"), 1, 2, -2);
2545 test(S("abcdefghij"), 1, 0, S("abcde"), 1, 3, -3);
2546 test(S("abcdefghij"), 1, 0, S("abcde"), 1, 4, -4);
2547 test(S("abcdefghij"), 1, 0, S("abcde"), 1, 5, -4);
2548 test(S("abcdefghij"), 1, 0, S("abcde"), 2, 0, 0);
2549 test(S("abcdefghij"), 1, 0, S("abcde"), 2, 1, -1);
2550 test(S("abcdefghij"), 1, 0, S("abcde"), 2, 2, -2);
2551 test(S("abcdefghij"), 1, 0, S("abcde"), 2, 3, -3);
2552 test(S("abcdefghij"), 1, 0, S("abcde"), 2, 4, -3);
2553 test(S("abcdefghij"), 1, 0, S("abcde"), 4, 0, 0);
2554 test(S("abcdefghij"), 1, 0, S("abcde"), 4, 1, -1);
2555 test(S("abcdefghij"), 1, 0, S("abcde"), 4, 2, -1);
2556 test(S("abcdefghij"), 1, 0, S("abcde"), 5, 0, 0);
2557 test(S("abcdefghij"), 1, 0, S("abcde"), 5, 1, 0);
2558 test(S("abcdefghij"), 1, 0, S("abcde"), 6, 0, 0);
2559 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 0, 0, 0);
2560 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 0, 1, -1);
2561 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 0, 5, -5);
2562 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 0, 9, -9);
2563 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 0, 10, -10);
2564 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 0, 11, -10);
2570 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 1, 0, 0);
2571 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 1, 1, -1);
2572 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 1, 4, -4);
2573 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 1, 8, -8);
2574 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 1, 9, -9);
2575 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 1, 10, -9);
2576 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 5, 0, 0);
2577 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 5, 1, -1);
2578 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 5, 2, -2);
2579 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 5, 4, -4);
2580 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 5, 5, -5);
2581 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 5, 6, -5);
2582 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 9, 0, 0);
2583 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 9, 1, -1);
2584 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 9, 2, -1);
2585 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 10, 0, 0);
2586 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 10, 1, 0);
2587 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 11, 0, 0);
2588 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
2589 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 0, 1, -1);
2590 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 0, 10, -10);
2591 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 0, 19, -19);
2592 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 0, 20, -20);
2593 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 0, 21, -20);
2594 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
2595 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 1, 1, -1);
2596 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 1, 9, -9);
2597 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 1, 18, -18);
2598 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 1, 19, -19);
2599 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 1, 20, -19);
2600 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
2601 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 10, 1, -1);
2602 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 10, 5, -5);
2603 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 10, 9, -9);
2604 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 10, 10, -10);
2605 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 10, 11, -10);
2606 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
2607 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 19, 1, -1);
2608 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 19, 2, -1);
2609 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
2610 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
2611 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
2612 test(S("abcdefghij"), 1, 1, S(""), 0, 0, 1);
2613 test(S("abcdefghij"), 1, 1, S(""), 0, 1, 1);
2614 test(S("abcdefghij"), 1, 1, S(""), 1, 0, 0);
2615 test(S("abcdefghij"), 1, 1, S("abcde"), 0, 0, 1);
2616 test(S("abcdefghij"), 1, 1, S("abcde"), 0, 1, 1);
2617 test(S("abcdefghij"), 1, 1, S("abcde"), 0, 2, 1);
2618 test(S("abcdefghij"), 1, 1, S("abcde"), 0, 4, 1);
2619 test(S("abcdefghij"), 1, 1, S("abcde"), 0, 5, 1);
2620 test(S("abcdefghij"), 1, 1, S("abcde"), 0, 6, 1);
2621 test(S("abcdefghij"), 1, 1, S("abcde"), 1, 0, 1);
2622 test(S("abcdefghij"), 1, 1, S("abcde"), 1, 1, 0);
2623 test(S("abcdefghij"), 1, 1, S("abcde"), 1, 2, -1);
2624 test(S("abcdefghij"), 1, 1, S("abcde"), 1, 3, -2);
2625 test(S("abcdefghij"), 1, 1, S("abcde"), 1, 4, -3);
2626 test(S("abcdefghij"), 1, 1, S("abcde"), 1, 5, -3);
2627 test(S("abcdefghij"), 1, 1, S("abcde"), 2, 0, 1);
2628 test(S("abcdefghij"), 1, 1, S("abcde"), 2, 1, -1);
2629 test(S("abcdefghij"), 1, 1, S("abcde"), 2, 2, -1);
2630 test(S("abcdefghij"), 1, 1, S("abcde"), 2, 3, -1);
2631 test(S("abcdefghij"), 1, 1, S("abcde"), 2, 4, -1);
2632 test(S("abcdefghij"), 1, 1, S("abcde"), 4, 0, 1);
2633 test(S("abcdefghij"), 1, 1, S("abcde"), 4, 1, -3);
2634 test(S("abcdefghij"), 1, 1, S("abcde"), 4, 2, -3);
2635 test(S("abcdefghij"), 1, 1, S("abcde"), 5, 0, 1);
2636 test(S("abcdefghij"), 1, 1, S("abcde"), 5, 1, 1);
2637 test(S("abcdefghij"), 1, 1, S("abcde"), 6, 0, 0);
2638 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 0, 0, 1);
2639 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 0, 1, 1);
2640 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 0, 5, 1);
2641 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 0, 9, 1);
2642 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 0, 10, 1);
2643 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 0, 11, 1);
2644 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 1, 0, 1);
2645 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 1, 1, 0);
2646 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 1, 4, -3);
2647 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 1, 8, -7);
2648 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 1, 9, -8);
2649 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 1, 10, -8);
2650 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 5, 0, 1);
2651 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 5, 1, -4);
2652 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 5, 2, -4);
2653 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 5, 4, -4);
2654 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 5, 5, -4);
2655 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 5, 6, -4);
2656 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 9, 0, 1);
2657 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 9, 1, -8);
2658 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 9, 2, -8);
2659 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 10, 0, 1);
2660 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 10, 1, 1);
2661 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 11, 0, 0);
2662 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 0, 0, 1);
2663 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 0, 1, 1);
2664 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 0, 10, 1);
2665 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 0, 19, 1);
2666 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 0, 20, 1);
2667 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 0, 21, 1);
2668 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 1, 0, 1);
2669 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 1, 1, 0);
2675 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 1, 9, -8);
2676 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 1, 18, -17);
2677 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 1, 19, -18);
2678 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 1, 20, -18);
2679 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 10, 0, 1);
2680 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 10, 1, -9);
2681 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 10, 5, -9);
2682 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 10, 9, -9);
2683 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 10, 10, -9);
2684 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 10, 11, -9);
2685 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 19, 0, 1);
2686 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 19, 1, -18);
2687 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 19, 2, -18);
2688 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 20, 0, 1);
2689 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 20, 1, 1);
2690 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 21, 0, 0);
2691 test(S("abcdefghij"), 1, 4, S(""), 0, 0, 4);
2692 test(S("abcdefghij"), 1, 4, S(""), 0, 1, 4);
2693 test(S("abcdefghij"), 1, 4, S(""), 1, 0, 0);
2694 test(S("abcdefghij"), 1, 4, S("abcde"), 0, 0, 4);
2695 test(S("abcdefghij"), 1, 4, S("abcde"), 0, 1, 1);
2696 test(S("abcdefghij"), 1, 4, S("abcde"), 0, 2, 1);
2697 test(S("abcdefghij"), 1, 4, S("abcde"), 0, 4, 1);
2698 test(S("abcdefghij"), 1, 4, S("abcde"), 0, 5, 1);
2699 test(S("abcdefghij"), 1, 4, S("abcde"), 0, 6, 1);
2700 test(S("abcdefghij"), 1, 4, S("abcde"), 1, 0, 4);
2701 test(S("abcdefghij"), 1, 4, S("abcde"), 1, 1, 3);
2702 test(S("abcdefghij"), 1, 4, S("abcde"), 1, 2, 2);
2703 test(S("abcdefghij"), 1, 4, S("abcde"), 1, 3, 1);
2704 test(S("abcdefghij"), 1, 4, S("abcde"), 1, 4, 0);
2705 test(S("abcdefghij"), 1, 4, S("abcde"), 1, 5, 0);
2706 test(S("abcdefghij"), 1, 4, S("abcde"), 2, 0, 4);
2707 test(S("abcdefghij"), 1, 4, S("abcde"), 2, 1, -1);
2708 test(S("abcdefghij"), 1, 4, S("abcde"), 2, 2, -1);
2709 test(S("abcdefghij"), 1, 4, S("abcde"), 2, 3, -1);
2710 test(S("abcdefghij"), 1, 4, S("abcde"), 2, 4, -1);
2711 test(S("abcdefghij"), 1, 4, S("abcde"), 4, 0, 4);
2712 test(S("abcdefghij"), 1, 4, S("abcde"), 4, 1, -3);
2713 test(S("abcdefghij"), 1, 4, S("abcde"), 4, 2, -3);
2714 test(S("abcdefghij"), 1, 4, S("abcde"), 5, 0, 4);
2715 test(S("abcdefghij"), 1, 4, S("abcde"), 5, 1, 4);
2716 test(S("abcdefghij"), 1, 4, S("abcde"), 6, 0, 0);
2717 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 0, 0, 4);
2718 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 0, 1, 1);
2719 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 0, 5, 1);
2720 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 0, 9, 1);
2721 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 0, 10, 1);
2722 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 0, 11, 1);
2723 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 1, 0, 4);
2724 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 1, 1, 3);
2725 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 1, 4, 0);
2726 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 1, 8, -4);
2727 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 1, 9, -5);
2728 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 1, 10, -5);
2729 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 5, 0, 4);
2730 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 5, 1, -4);
2731 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 5, 2, -4);
2732 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 5, 4, -4);
2733 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 5, 5, -4);
2734 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 5, 6, -4);
2735 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 9, 0, 4);
2736 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 9, 1, -8);
2737 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 9, 2, -8);
2738 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 10, 0, 4);
2739 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 10, 1, 4);
2740 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 11, 0, 0);
2741 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 0, 0, 4);
2742 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 0, 1, 1);
2743 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 0, 10, 1);
2744 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 0, 19, 1);
2745 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 0, 20, 1);
2746 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 0, 21, 1);
2747 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 1, 0, 4);
2748 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 1, 1, 3);
2749 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 1, 9, -5);
2750 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 1, 18, -14);
2751 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 1, 19, -15);
2752 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 1, 20, -15);
2753 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 10, 0, 4);
2754 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 10, 1, -9);
2755 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 10, 5, -9);
2756 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 10, 9, -9);
2757 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 10, 10, -9);
2758 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 10, 11, -9);
2759 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 19, 0, 4);
2760 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 19, 1, -18);
2761 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 19, 2, -18);
2762 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 20, 0, 4);
2763 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 20, 1, 4);
2764 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 21, 0, 0);
2765 test(S("abcdefghij"), 1, 8, S(""), 0, 0, 8);
2766 test(S("abcdefghij"), 1, 8, S(""), 0, 1, 8);
2767 test(S("abcdefghij"), 1, 8, S(""), 1, 0, 0);
2768 test(S("abcdefghij"), 1, 8, S("abcde"), 0, 0, 8);
2769 test(S("abcdefghij"), 1, 8, S("abcde"), 0, 1, 1);
2770 test(S("abcdefghij"), 1, 8, S("abcde"), 0, 2, 1);
2771 test(S("abcdefghij"), 1, 8, S("abcde"), 0, 4, 1);
2772 test(S("abcdefghij"), 1, 8, S("abcde"), 0, 5, 1);
2773 test(S("abcdefghij"), 1, 8, S("abcde"), 0, 6, 1);
2774 test(S("abcdefghij"), 1, 8, S("abcde"), 1, 0, 8);
2780 test(S("abcdefghij"), 1, 8, S("abcde"), 1, 1, 7);
2781 test(S("abcdefghij"), 1, 8, S("abcde"), 1, 2, 6);
2782 test(S("abcdefghij"), 1, 8, S("abcde"), 1, 3, 5);
2783 test(S("abcdefghij"), 1, 8, S("abcde"), 1, 4, 4);
2784 test(S("abcdefghij"), 1, 8, S("abcde"), 1, 5, 4);
2785 test(S("abcdefghij"), 1, 8, S("abcde"), 2, 0, 8);
2786 test(S("abcdefghij"), 1, 8, S("abcde"), 2, 1, -1);
2787 test(S("abcdefghij"), 1, 8, S("abcde"), 2, 2, -1);
2788 test(S("abcdefghij"), 1, 8, S("abcde"), 2, 3, -1);
2789 test(S("abcdefghij"), 1, 8, S("abcde"), 2, 4, -1);
2790 test(S("abcdefghij"), 1, 8, S("abcde"), 4, 0, 8);
2791 test(S("abcdefghij"), 1, 8, S("abcde"), 4, 1, -3);
2792 test(S("abcdefghij"), 1, 8, S("abcde"), 4, 2, -3);
2793 test(S("abcdefghij"), 1, 8, S("abcde"), 5, 0, 8);
2794 test(S("abcdefghij"), 1, 8, S("abcde"), 5, 1, 8);
2795 test(S("abcdefghij"), 1, 8, S("abcde"), 6, 0, 0);
2796 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 0, 0, 8);
2797 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 0, 1, 1);
2798 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 0, 5, 1);
2799 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 0, 9, 1);
2800 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 0, 10, 1);
2801 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 0, 11, 1);
2802 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 1, 0, 8);
2803 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 1, 1, 7);
2804 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 1, 4, 4);
2805 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 1, 8, 0);
2806 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 1, 9, -1);
2807 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 1, 10, -1);
2808 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 5, 0, 8);
2809 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 5, 1, -4);
2810 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 5, 2, -4);
2811 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 5, 4, -4);
2812 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 5, 5, -4);
2813 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 5, 6, -4);
2814 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 9, 0, 8);
2815 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 9, 1, -8);
2816 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 9, 2, -8);
2817 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 10, 0, 8);
2818 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 10, 1, 8);
2819 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 11, 0, 0);
2820 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 0, 0, 8);
2821 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 0, 1, 1);
2822 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 0, 10, 1);
2823 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 0, 19, 1);
2824 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 0, 20, 1);
2825 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 0, 21, 1);
2826 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 1, 0, 8);
2827 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 1, 1, 7);
2828 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 1, 9, -1);
2829 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 1, 18, -10);
2830 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 1, 19, -11);
2831 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 1, 20, -11);
2832 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 10, 0, 8);
2833 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 10, 1, -9);
2834 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 10, 5, -9);
2835 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 10, 9, -9);
2836 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 10, 10, -9);
2837 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 10, 11, -9);
2838 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 19, 0, 8);
2839 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 19, 1, -18);
2840 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 19, 2, -18);
2841 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 20, 0, 8);
2842 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 20, 1, 8);
2843 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 21, 0, 0);
2844 test(S("abcdefghij"), 1, 9, S(""), 0, 0, 9);
2845 test(S("abcdefghij"), 1, 9, S(""), 0, 1, 9);
2846 test(S("abcdefghij"), 1, 9, S(""), 1, 0, 0);
2847 test(S("abcdefghij"), 1, 9, S("abcde"), 0, 0, 9);
2848 test(S("abcdefghij"), 1, 9, S("abcde"), 0, 1, 1);
2849 test(S("abcdefghij"), 1, 9, S("abcde"), 0, 2, 1);
2850 test(S("abcdefghij"), 1, 9, S("abcde"), 0, 4, 1);
2851 test(S("abcdefghij"), 1, 9, S("abcde"), 0, 5, 1);
2852 test(S("abcdefghij"), 1, 9, S("abcde"), 0, 6, 1);
2853 test(S("abcdefghij"), 1, 9, S("abcde"), 1, 0, 9);
2854 test(S("abcdefghij"), 1, 9, S("abcde"), 1, 1, 8);
2855 test(S("abcdefghij"), 1, 9, S("abcde"), 1, 2, 7);
2856 test(S("abcdefghij"), 1, 9, S("abcde"), 1, 3, 6);
2857 test(S("abcdefghij"), 1, 9, S("abcde"), 1, 4, 5);
2858 test(S("abcdefghij"), 1, 9, S("abcde"), 1, 5, 5);
2859 test(S("abcdefghij"), 1, 9, S("abcde"), 2, 0, 9);
2860 test(S("abcdefghij"), 1, 9, S("abcde"), 2, 1, -1);
2861 test(S("abcdefghij"), 1, 9, S("abcde"), 2, 2, -1);
2862 test(S("abcdefghij"), 1, 9, S("abcde"), 2, 3, -1);
2863 test(S("abcdefghij"), 1, 9, S("abcde"), 2, 4, -1);
2864 test(S("abcdefghij"), 1, 9, S("abcde"), 4, 0, 9);
2865 test(S("abcdefghij"), 1, 9, S("abcde"), 4, 1, -3);
2866 test(S("abcdefghij"), 1, 9, S("abcde"), 4, 2, -3);
2867 test(S("abcdefghij"), 1, 9, S("abcde"), 5, 0, 9);
2868 test(S("abcdefghij"), 1, 9, S("abcde"), 5, 1, 9);
2869 test(S("abcdefghij"), 1, 9, S("abcde"), 6, 0, 0);
2870 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 0, 0, 9);
2871 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 0, 1, 1);
2872 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 0, 5, 1);
2873 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 0, 9, 1);
2874 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 0, 10, 1);
2875 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 0, 11, 1);
2876 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 1, 0, 9);
2877 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 1, 1, 8);
2878 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 1, 4, 5);
2879 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 1, 8, 1);
2885 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 1, 9, 0);
2886 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 1, 10, 0);
2887 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 5, 0, 9);
2888 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 5, 1, -4);
2889 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 5, 2, -4);
2890 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 5, 4, -4);
2891 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 5, 5, -4);
2892 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 5, 6, -4);
2893 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 9, 0, 9);
2894 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 9, 1, -8);
2895 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 9, 2, -8);
2896 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 10, 0, 9);
2897 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 10, 1, 9);
2898 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 11, 0, 0);
2899 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 0, 0, 9);
2900 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 0, 1, 1);
2901 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 0, 10, 1);
2902 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 0, 19, 1);
2903 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 0, 20, 1);
2904 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 0, 21, 1);
2905 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 1, 0, 9);
2906 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 1, 1, 8);
2907 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 1, 9, 0);
2908 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 1, 18, -9);
2909 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 1, 19, -10);
2910 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 1, 20, -10);
2911 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 10, 0, 9);
2912 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 10, 1, -9);
2913 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 10, 5, -9);
2914 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 10, 9, -9);
2915 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 10, 10, -9);
2916 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 10, 11, -9);
2917 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 19, 0, 9);
2918 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 19, 1, -18);
2919 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 19, 2, -18);
2920 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 20, 0, 9);
2921 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 20, 1, 9);
2922 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 21, 0, 0);
2923 test(S("abcdefghij"), 1, 10, S(""), 0, 0, 9);
2924 test(S("abcdefghij"), 1, 10, S(""), 0, 1, 9);
2925 test(S("abcdefghij"), 1, 10, S(""), 1, 0, 0);
2926 test(S("abcdefghij"), 1, 10, S("abcde"), 0, 0, 9);
2927 test(S("abcdefghij"), 1, 10, S("abcde"), 0, 1, 1);
2928 test(S("abcdefghij"), 1, 10, S("abcde"), 0, 2, 1);
2929 test(S("abcdefghij"), 1, 10, S("abcde"), 0, 4, 1);
2930 test(S("abcdefghij"), 1, 10, S("abcde"), 0, 5, 1);
2931 test(S("abcdefghij"), 1, 10, S("abcde"), 0, 6, 1);
2932 test(S("abcdefghij"), 1, 10, S("abcde"), 1, 0, 9);
2933 test(S("abcdefghij"), 1, 10, S("abcde"), 1, 1, 8);
2934 test(S("abcdefghij"), 1, 10, S("abcde"), 1, 2, 7);
2935 test(S("abcdefghij"), 1, 10, S("abcde"), 1, 3, 6);
2936 test(S("abcdefghij"), 1, 10, S("abcde"), 1, 4, 5);
2937 test(S("abcdefghij"), 1, 10, S("abcde"), 1, 5, 5);
2938 test(S("abcdefghij"), 1, 10, S("abcde"), 2, 0, 9);
2939 test(S("abcdefghij"), 1, 10, S("abcde"), 2, 1, -1);
2940 test(S("abcdefghij"), 1, 10, S("abcde"), 2, 2, -1);
2941 test(S("abcdefghij"), 1, 10, S("abcde"), 2, 3, -1);
2942 test(S("abcdefghij"), 1, 10, S("abcde"), 2, 4, -1);
2943 test(S("abcdefghij"), 1, 10, S("abcde"), 4, 0, 9);
2944 test(S("abcdefghij"), 1, 10, S("abcde"), 4, 1, -3);
2945 test(S("abcdefghij"), 1, 10, S("abcde"), 4, 2, -3);
2946 test(S("abcdefghij"), 1, 10, S("abcde"), 5, 0, 9);
2947 test(S("abcdefghij"), 1, 10, S("abcde"), 5, 1, 9);
2948 test(S("abcdefghij"), 1, 10, S("abcde"), 6, 0, 0);
2949 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 0, 0, 9);
2950 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 0, 1, 1);
2951 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 0, 5, 1);
2952 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 0, 9, 1);
2953 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 0, 10, 1);
2954 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 0, 11, 1);
2955 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 1, 0, 9);
2956 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 1, 1, 8);
2957 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 1, 4, 5);
2958 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 1, 8, 1);
2959 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 1, 9, 0);
2960 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 1, 10, 0);
2961 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 5, 0, 9);
2962 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 5, 1, -4);
2963 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 5, 2, -4);
2964 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 5, 4, -4);
2965 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 5, 5, -4);
2966 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 5, 6, -4);
2967 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 9, 0, 9);
2968 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 9, 1, -8);
2969 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 9, 2, -8);
2970 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 10, 0, 9);
2971 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 10, 1, 9);
2972 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 11, 0, 0);
2973 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 0, 0, 9);
2974 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 0, 1, 1);
2975 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 0, 10, 1);
2976 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 0, 19, 1);
2977 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 0, 20, 1);
2978 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 0, 21, 1);
2979 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 1, 0, 9);
2980 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 1, 1, 8);
2981 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 1, 9, 0);
2982 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 1, 18, -9);
2983 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 1, 19, -10);
2984 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 1, 20, -10);
2990 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 10, 0, 9);
2991 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 10, 1, -9);
2992 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 10, 5, -9);
2993 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 10, 9, -9);
2994 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 10, 10, -9);
2995 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 10, 11, -9);
2996 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 19, 0, 9);
2997 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 19, 1, -18);
2998 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 19, 2, -18);
2999 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 20, 0, 9);
3000 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 20, 1, 9);
3001 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 21, 0, 0);
3002 test(S("abcdefghij"), 5, 0, S(""), 0, 0, 0);
3003 test(S("abcdefghij"), 5, 0, S(""), 0, 1, 0);
3004 test(S("abcdefghij"), 5, 0, S(""), 1, 0, 0);
3005 test(S("abcdefghij"), 5, 0, S("abcde"), 0, 0, 0);
3006 test(S("abcdefghij"), 5, 0, S("abcde"), 0, 1, -1);
3007 test(S("abcdefghij"), 5, 0, S("abcde"), 0, 2, -2);
3008 test(S("abcdefghij"), 5, 0, S("abcde"), 0, 4, -4);
3009 test(S("abcdefghij"), 5, 0, S("abcde"), 0, 5, -5);
3010 test(S("abcdefghij"), 5, 0, S("abcde"), 0, 6, -5);
3011 test(S("abcdefghij"), 5, 0, S("abcde"), 1, 0, 0);
3012 test(S("abcdefghij"), 5, 0, S("abcde"), 1, 1, -1);
3013 test(S("abcdefghij"), 5, 0, S("abcde"), 1, 2, -2);
3014 test(S("abcdefghij"), 5, 0, S("abcde"), 1, 3, -3);
3015 test(S("abcdefghij"), 5, 0, S("abcde"), 1, 4, -4);
3016 test(S("abcdefghij"), 5, 0, S("abcde"), 1, 5, -4);
3017 test(S("abcdefghij"), 5, 0, S("abcde"), 2, 0, 0);
3018 test(S("abcdefghij"), 5, 0, S("abcde"), 2, 1, -1);
3019 test(S("abcdefghij"), 5, 0, S("abcde"), 2, 2, -2);
3020 test(S("abcdefghij"), 5, 0, S("abcde"), 2, 3, -3);
3021 test(S("abcdefghij"), 5, 0, S("abcde"), 2, 4, -3);
3022 test(S("abcdefghij"), 5, 0, S("abcde"), 4, 0, 0);
3023 test(S("abcdefghij"), 5, 0, S("abcde"), 4, 1, -1);
3024 test(S("abcdefghij"), 5, 0, S("abcde"), 4, 2, -1);
3025 test(S("abcdefghij"), 5, 0, S("abcde"), 5, 0, 0);
3026 test(S("abcdefghij"), 5, 0, S("abcde"), 5, 1, 0);
3027 test(S("abcdefghij"), 5, 0, S("abcde"), 6, 0, 0);
3028 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 0, 0, 0);
3029 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 0, 1, -1);
3030 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 0, 5, -5);
3031 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 0, 9, -9);
3032 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 0, 10, -10);
3033 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 0, 11, -10);
3034 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 1, 0, 0);
3035 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 1, 1, -1);
3036 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 1, 4, -4);
3037 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 1, 8, -8);
3038 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 1, 9, -9);
3039 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 1, 10, -9);
3040 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 5, 0, 0);
3041 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 5, 1, -1);
3042 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 5, 2, -2);
3043 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 5, 4, -4);
3044 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 5, 5, -5);
3045 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 5, 6, -5);
3046 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 9, 0, 0);
3047 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 9, 1, -1);
3048 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 9, 2, -1);
3049 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 10, 0, 0);
3050 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 10, 1, 0);
3051 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 11, 0, 0);
3052 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
3053 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 0, 1, -1);
3054 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 0, 10, -10);
3055 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 0, 19, -19);
3056 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 0, 20, -20);
3057 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 0, 21, -20);
3058 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
3059 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 1, 1, -1);
3060 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 1, 9, -9);
3061 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 1, 18, -18);
3062 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 1, 19, -19);
3063 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 1, 20, -19);
3064 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
3065 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 10, 1, -1);
3066 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 10, 5, -5);
3067 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 10, 9, -9);
3068 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 10, 10, -10);
3069 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 10, 11, -10);
3070 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
3071 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 19, 1, -1);
3072 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 19, 2, -1);
3073 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
3074 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
3075 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
3076 test(S("abcdefghij"), 5, 1, S(""), 0, 0, 1);
3077 test(S("abcdefghij"), 5, 1, S(""), 0, 1, 1);
3078 test(S("abcdefghij"), 5, 1, S(""), 1, 0, 0);
3079 test(S("abcdefghij"), 5, 1, S("abcde"), 0, 0, 1);
3080 test(S("abcdefghij"), 5, 1, S("abcde"), 0, 1, 5);
3081 test(S("abcdefghij"), 5, 1, S("abcde"), 0, 2, 5);
3082 test(S("abcdefghij"), 5, 1, S("abcde"), 0, 4, 5);
3083 test(S("abcdefghij"), 5, 1, S("abcde"), 0, 5, 5);
3084 test(S("abcdefghij"), 5, 1, S("abcde"), 0, 6, 5);
3085 test(S("abcdefghij"), 5, 1, S("abcde"), 1, 0, 1);
3086 test(S("abcdefghij"), 5, 1, S("abcde"), 1, 1, 4);
3087 test(S("abcdefghij"), 5, 1, S("abcde"), 1, 2, 4);
3088 test(S("abcdefghij"), 5, 1, S("abcde"), 1, 3, 4);
3089 test(S("abcdefghij"), 5, 1, S("abcde"), 1, 4, 4);
3095 test(S("abcdefghij"), 5, 1, S("abcde"), 1, 5, 4);
3096 test(S("abcdefghij"), 5, 1, S("abcde"), 2, 0, 1);
3097 test(S("abcdefghij"), 5, 1, S("abcde"), 2, 1, 3);
3098 test(S("abcdefghij"), 5, 1, S("abcde"), 2, 2, 3);
3099 test(S("abcdefghij"), 5, 1, S("abcde"), 2, 3, 3);
3100 test(S("abcdefghij"), 5, 1, S("abcde"), 2, 4, 3);
3101 test(S("abcdefghij"), 5, 1, S("abcde"), 4, 0, 1);
3102 test(S("abcdefghij"), 5, 1, S("abcde"), 4, 1, 1);
3103 test(S("abcdefghij"), 5, 1, S("abcde"), 4, 2, 1);
3104 test(S("abcdefghij"), 5, 1, S("abcde"), 5, 0, 1);
3105 test(S("abcdefghij"), 5, 1, S("abcde"), 5, 1, 1);
3106 test(S("abcdefghij"), 5, 1, S("abcde"), 6, 0, 0);
3107 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 0, 0, 1);
3108 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 0, 1, 5);
3109 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 0, 5, 5);
3110 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 0, 9, 5);
3111 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 0, 10, 5);
3112 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 0, 11, 5);
3113 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 1, 0, 1);
3114 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 1, 1, 4);
3115 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 1, 4, 4);
3116 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 1, 8, 4);
3117 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 1, 9, 4);
3118 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 1, 10, 4);
3119 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 5, 0, 1);
3120 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 5, 1, 0);
3121 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 5, 2, -1);
3122 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 5, 4, -3);
3123 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 5, 5, -4);
3124 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 5, 6, -4);
3125 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 9, 0, 1);
3126 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 9, 1, -4);
3127 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 9, 2, -4);
3128 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 10, 0, 1);
3129 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 10, 1, 1);
3130 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 11, 0, 0);
3131 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 0, 0, 1);
3132 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 0, 1, 5);
3133 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 0, 10, 5);
3134 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 0, 19, 5);
3135 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 0, 20, 5);
3136 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 0, 21, 5);
3137 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 1, 0, 1);
3138 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 1, 1, 4);
3139 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 1, 9, 4);
3140 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 1, 18, 4);
3141 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 1, 19, 4);
3142 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 1, 20, 4);
3143 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 10, 0, 1);
3144 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 10, 1, -5);
3145 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 10, 5, -5);
3146 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 10, 9, -5);
3147 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 10, 10, -5);
3148 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 10, 11, -5);
3149 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 19, 0, 1);
3150 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 19, 1, -14);
3151 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 19, 2, -14);
3152 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 20, 0, 1);
3153 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 20, 1, 1);
3154 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 21, 0, 0);
3155 test(S("abcdefghij"), 5, 2, S(""), 0, 0, 2);
3156 test(S("abcdefghij"), 5, 2, S(""), 0, 1, 2);
3157 test(S("abcdefghij"), 5, 2, S(""), 1, 0, 0);
3158 test(S("abcdefghij"), 5, 2, S("abcde"), 0, 0, 2);
3159 test(S("abcdefghij"), 5, 2, S("abcde"), 0, 1, 5);
3160 test(S("abcdefghij"), 5, 2, S("abcde"), 0, 2, 5);
3161 test(S("abcdefghij"), 5, 2, S("abcde"), 0, 4, 5);
3162 test(S("abcdefghij"), 5, 2, S("abcde"), 0, 5, 5);
3163 test(S("abcdefghij"), 5, 2, S("abcde"), 0, 6, 5);
3164 test(S("abcdefghij"), 5, 2, S("abcde"), 1, 0, 2);
3165 test(S("abcdefghij"), 5, 2, S("abcde"), 1, 1, 4);
3166 test(S("abcdefghij"), 5, 2, S("abcde"), 1, 2, 4);
3167 test(S("abcdefghij"), 5, 2, S("abcde"), 1, 3, 4);
3168 test(S("abcdefghij"), 5, 2, S("abcde"), 1, 4, 4);
3169 test(S("abcdefghij"), 5, 2, S("abcde"), 1, 5, 4);
3170 test(S("abcdefghij"), 5, 2, S("abcde"), 2, 0, 2);
3171 test(S("abcdefghij"), 5, 2, S("abcde"), 2, 1, 3);
3172 test(S("abcdefghij"), 5, 2, S("abcde"), 2, 2, 3);
3173 test(S("abcdefghij"), 5, 2, S("abcde"), 2, 3, 3);
3174 test(S("abcdefghij"), 5, 2, S("abcde"), 2, 4, 3);
3175 test(S("abcdefghij"), 5, 2, S("abcde"), 4, 0, 2);
3176 test(S("abcdefghij"), 5, 2, S("abcde"), 4, 1, 1);
3177 test(S("abcdefghij"), 5, 2, S("abcde"), 4, 2, 1);
3178 test(S("abcdefghij"), 5, 2, S("abcde"), 5, 0, 2);
3179 test(S("abcdefghij"), 5, 2, S("abcde"), 5, 1, 2);
3180 test(S("abcdefghij"), 5, 2, S("abcde"), 6, 0, 0);
3181 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 0, 0, 2);
3182 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 0, 1, 5);
3183 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 0, 5, 5);
3184 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 0, 9, 5);
3185 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 0, 10, 5);
3186 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 0, 11, 5);
3187 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 1, 0, 2);
3188 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 1, 1, 4);
3189 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 1, 4, 4);
3190 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 1, 8, 4);
3191 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 1, 9, 4);
3192 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 1, 10, 4);
3193 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 5, 0, 2);
3194 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 5, 1, 1);
3200 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 5, 2, 0);
3201 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 5, 4, -2);
3202 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 5, 5, -3);
3203 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 5, 6, -3);
3204 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 9, 0, 2);
3205 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 9, 1, -4);
3206 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 9, 2, -4);
3207 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 10, 0, 2);
3208 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 10, 1, 2);
3209 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 11, 0, 0);
3210 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 0, 0, 2);
3211 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 0, 1, 5);
3212 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 0, 10, 5);
3213 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 0, 19, 5);
3214 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 0, 20, 5);
3215 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 0, 21, 5);
3216 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 1, 0, 2);
3217 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 1, 1, 4);
3218 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 1, 9, 4);
3219 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 1, 18, 4);
3220 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 1, 19, 4);
3221 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 1, 20, 4);
3222 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 10, 0, 2);
3223 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 10, 1, -5);
3224 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 10, 5, -5);
3225 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 10, 9, -5);
3226 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 10, 10, -5);
3227 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 10, 11, -5);
3228 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 19, 0, 2);
3229 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 19, 1, -14);
3230 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 19, 2, -14);
3231 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 20, 0, 2);
3232 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 20, 1, 2);
3233 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 21, 0, 0);
3234 test(S("abcdefghij"), 5, 4, S(""), 0, 0, 4);
3235 test(S("abcdefghij"), 5, 4, S(""), 0, 1, 4);
3236 test(S("abcdefghij"), 5, 4, S(""), 1, 0, 0);
3237 test(S("abcdefghij"), 5, 4, S("abcde"), 0, 0, 4);
3238 test(S("abcdefghij"), 5, 4, S("abcde"), 0, 1, 5);
3239 test(S("abcdefghij"), 5, 4, S("abcde"), 0, 2, 5);
3240 test(S("abcdefghij"), 5, 4, S("abcde"), 0, 4, 5);
3241 test(S("abcdefghij"), 5, 4, S("abcde"), 0, 5, 5);
3242 test(S("abcdefghij"), 5, 4, S("abcde"), 0, 6, 5);
3243 test(S("abcdefghij"), 5, 4, S("abcde"), 1, 0, 4);
3244 test(S("abcdefghij"), 5, 4, S("abcde"), 1, 1, 4);
3245 test(S("abcdefghij"), 5, 4, S("abcde"), 1, 2, 4);
3246 test(S("abcdefghij"), 5, 4, S("abcde"), 1, 3, 4);
3247 test(S("abcdefghij"), 5, 4, S("abcde"), 1, 4, 4);
3248 test(S("abcdefghij"), 5, 4, S("abcde"), 1, 5, 4);
3249 test(S("abcdefghij"), 5, 4, S("abcde"), 2, 0, 4);
3250 test(S("abcdefghij"), 5, 4, S("abcde"), 2, 1, 3);
3251 test(S("abcdefghij"), 5, 4, S("abcde"), 2, 2, 3);
3252 test(S("abcdefghij"), 5, 4, S("abcde"), 2, 3, 3);
3253 test(S("abcdefghij"), 5, 4, S("abcde"), 2, 4, 3);
3254 test(S("abcdefghij"), 5, 4, S("abcde"), 4, 0, 4);
3255 test(S("abcdefghij"), 5, 4, S("abcde"), 4, 1, 1);
3256 test(S("abcdefghij"), 5, 4, S("abcde"), 4, 2, 1);
3257 test(S("abcdefghij"), 5, 4, S("abcde"), 5, 0, 4);
3258 test(S("abcdefghij"), 5, 4, S("abcde"), 5, 1, 4);
3259 test(S("abcdefghij"), 5, 4, S("abcde"), 6, 0, 0);
3260 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 0, 0, 4);
3261 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 0, 1, 5);
3262 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 0, 5, 5);
3263 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 0, 9, 5);
3264 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 0, 10, 5);
3265 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 0, 11, 5);
3266 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 1, 0, 4);
3267 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 1, 1, 4);
3268 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 1, 4, 4);
3269 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 1, 8, 4);
3270 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 1, 9, 4);
3271 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 1, 10, 4);
3272 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 5, 0, 4);
3273 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 5, 1, 3);
3274 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 5, 2, 2);
3275 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 5, 4, 0);
3276 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 5, 5, -1);
3277 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 5, 6, -1);
3278 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 9, 0, 4);
3279 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 9, 1, -4);
3280 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 9, 2, -4);
3281 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 10, 0, 4);
3282 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 10, 1, 4);
3283 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 11, 0, 0);
3284 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 0, 0, 4);
3285 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 0, 1, 5);
3286 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 0, 10, 5);
3287 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 0, 19, 5);
3288 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 0, 20, 5);
3289 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 0, 21, 5);
3290 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 1, 0, 4);
3291 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 1, 1, 4);
3292 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 1, 9, 4);
3293 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 1, 18, 4);
3294 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 1, 19, 4);
3295 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 1, 20, 4);
3296 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 10, 0, 4);
3297 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 10, 1, -5);
3298 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 10, 5, -5);
3299 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 10, 9, -5);
3305 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 10, 10, -5);
3306 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 10, 11, -5);
3307 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 19, 0, 4);
3308 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 19, 1, -14);
3309 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 19, 2, -14);
3310 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 20, 0, 4);
3311 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 20, 1, 4);
3312 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 21, 0, 0);
3313 test(S("abcdefghij"), 5, 5, S(""), 0, 0, 5);
3314 test(S("abcdefghij"), 5, 5, S(""), 0, 1, 5);
3315 test(S("abcdefghij"), 5, 5, S(""), 1, 0, 0);
3316 test(S("abcdefghij"), 5, 5, S("abcde"), 0, 0, 5);
3317 test(S("abcdefghij"), 5, 5, S("abcde"), 0, 1, 5);
3318 test(S("abcdefghij"), 5, 5, S("abcde"), 0, 2, 5);
3319 test(S("abcdefghij"), 5, 5, S("abcde"), 0, 4, 5);
3320 test(S("abcdefghij"), 5, 5, S("abcde"), 0, 5, 5);
3321 test(S("abcdefghij"), 5, 5, S("abcde"), 0, 6, 5);
3322 test(S("abcdefghij"), 5, 5, S("abcde"), 1, 0, 5);
3323 test(S("abcdefghij"), 5, 5, S("abcde"), 1, 1, 4);
3324 test(S("abcdefghij"), 5, 5, S("abcde"), 1, 2, 4);
3325 test(S("abcdefghij"), 5, 5, S("abcde"), 1, 3, 4);
3326 test(S("abcdefghij"), 5, 5, S("abcde"), 1, 4, 4);
3327 test(S("abcdefghij"), 5, 5, S("abcde"), 1, 5, 4);
3328 test(S("abcdefghij"), 5, 5, S("abcde"), 2, 0, 5);
3329 test(S("abcdefghij"), 5, 5, S("abcde"), 2, 1, 3);
3330 test(S("abcdefghij"), 5, 5, S("abcde"), 2, 2, 3);
3331 test(S("abcdefghij"), 5, 5, S("abcde"), 2, 3, 3);
3332 test(S("abcdefghij"), 5, 5, S("abcde"), 2, 4, 3);
3333 test(S("abcdefghij"), 5, 5, S("abcde"), 4, 0, 5);
3334 test(S("abcdefghij"), 5, 5, S("abcde"), 4, 1, 1);
3335 test(S("abcdefghij"), 5, 5, S("abcde"), 4, 2, 1);
3336 test(S("abcdefghij"), 5, 5, S("abcde"), 5, 0, 5);
3337 test(S("abcdefghij"), 5, 5, S("abcde"), 5, 1, 5);
3338 test(S("abcdefghij"), 5, 5, S("abcde"), 6, 0, 0);
3339 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 0, 0, 5);
3340 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 0, 1, 5);
3341 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 0, 5, 5);
3342 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 0, 9, 5);
3343 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 0, 10, 5);
3344 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 0, 11, 5);
3345 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 1, 0, 5);
3346 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 1, 1, 4);
3347 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 1, 4, 4);
3348 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 1, 8, 4);
3349 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 1, 9, 4);
3350 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 1, 10, 4);
3351 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 5, 0, 5);
3352 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 5, 1, 4);
3353 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 5, 2, 3);
3354 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 5, 4, 1);
3355 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 5, 5, 0);
3356 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 5, 6, 0);
3357 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 9, 0, 5);
3358 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 9, 1, -4);
3359 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 9, 2, -4);
3360 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 10, 0, 5);
3361 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 10, 1, 5);
3362 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 11, 0, 0);
3363 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 0, 0, 5);
3364 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 0, 1, 5);
3365 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 0, 10, 5);
3366 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 0, 19, 5);
3367 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 0, 20, 5);
3368 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 0, 21, 5);
3369 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 1, 0, 5);
3370 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 1, 1, 4);
3371 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 1, 9, 4);
3372 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 1, 18, 4);
3373 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 1, 19, 4);
3374 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 1, 20, 4);
3375 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 10, 0, 5);
3376 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 10, 1, -5);
3377 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 10, 5, -5);
3378 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 10, 9, -5);
3379 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 10, 10, -5);
3380 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 10, 11, -5);
3381 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 19, 0, 5);
3382 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 19, 1, -14);
3383 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 19, 2, -14);
3384 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 20, 0, 5);
3385 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 20, 1, 5);
3386 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 21, 0, 0);
3387 test(S("abcdefghij"), 5, 6, S(""), 0, 0, 5);
3388 test(S("abcdefghij"), 5, 6, S(""), 0, 1, 5);
3389 test(S("abcdefghij"), 5, 6, S(""), 1, 0, 0);
3390 test(S("abcdefghij"), 5, 6, S("abcde"), 0, 0, 5);
3391 test(S("abcdefghij"), 5, 6, S("abcde"), 0, 1, 5);
3392 test(S("abcdefghij"), 5, 6, S("abcde"), 0, 2, 5);
3393 test(S("abcdefghij"), 5, 6, S("abcde"), 0, 4, 5);
3394 test(S("abcdefghij"), 5, 6, S("abcde"), 0, 5, 5);
3395 test(S("abcdefghij"), 5, 6, S("abcde"), 0, 6, 5);
3396 test(S("abcdefghij"), 5, 6, S("abcde"), 1, 0, 5);
3397 test(S("abcdefghij"), 5, 6, S("abcde"), 1, 1, 4);
3398 test(S("abcdefghij"), 5, 6, S("abcde"), 1, 2, 4);
3399 test(S("abcdefghij"), 5, 6, S("abcde"), 1, 3, 4);
3400 test(S("abcdefghij"), 5, 6, S("abcde"), 1, 4, 4);
3401 test(S("abcdefghij"), 5, 6, S("abcde"), 1, 5, 4);
3402 test(S("abcdefghij"), 5, 6, S("abcde"), 2, 0, 5);
3403 test(S("abcdefghij"), 5, 6, S("abcde"), 2, 1, 3);
3404 test(S("abcdefghij"), 5, 6, S("abcde"), 2, 2, 3);
3410 test(S("abcdefghij"), 5, 6, S("abcde"), 2, 3, 3);
3411 test(S("abcdefghij"), 5, 6, S("abcde"), 2, 4, 3);
3412 test(S("abcdefghij"), 5, 6, S("abcde"), 4, 0, 5);
3413 test(S("abcdefghij"), 5, 6, S("abcde"), 4, 1, 1);
3414 test(S("abcdefghij"), 5, 6, S("abcde"), 4, 2, 1);
3415 test(S("abcdefghij"), 5, 6, S("abcde"), 5, 0, 5);
3416 test(S("abcdefghij"), 5, 6, S("abcde"), 5, 1, 5);
3417 test(S("abcdefghij"), 5, 6, S("abcde"), 6, 0, 0);
3418 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 0, 0, 5);
3419 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 0, 1, 5);
3420 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 0, 5, 5);
3421 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 0, 9, 5);
3422 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 0, 10, 5);
3423 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 0, 11, 5);
3424 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 1, 0, 5);
3425 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 1, 1, 4);
3426 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 1, 4, 4);
3427 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 1, 8, 4);
3428 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 1, 9, 4);
3429 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 1, 10, 4);
3430 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 5, 0, 5);
3431 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 5, 1, 4);
3432 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 5, 2, 3);
3433 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 5, 4, 1);
3434 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 5, 5, 0);
3435 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 5, 6, 0);
3436 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 9, 0, 5);
3437 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 9, 1, -4);
3438 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 9, 2, -4);
3439 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 10, 0, 5);
3440 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 10, 1, 5);
3441 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 11, 0, 0);
3442 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 0, 0, 5);
3443 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 0, 1, 5);
3444 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 0, 10, 5);
3445 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 0, 19, 5);
3446 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 0, 20, 5);
3447 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 0, 21, 5);
3448 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 1, 0, 5);
3449 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 1, 1, 4);
3450 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 1, 9, 4);
3451 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 1, 18, 4);
3452 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 1, 19, 4);
3453 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 1, 20, 4);
3454 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 10, 0, 5);
3455 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 10, 1, -5);
3456 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 10, 5, -5);
3457 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 10, 9, -5);
3458 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 10, 10, -5);
3459 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 10, 11, -5);
3460 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 19, 0, 5);
3461 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 19, 1, -14);
3462 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 19, 2, -14);
3463 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 20, 0, 5);
3464 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 20, 1, 5);
3465 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 21, 0, 0);
3466 test(S("abcdefghij"), 9, 0, S(""), 0, 0, 0);
3467 test(S("abcdefghij"), 9, 0, S(""), 0, 1, 0);
3468 test(S("abcdefghij"), 9, 0, S(""), 1, 0, 0);
3469 test(S("abcdefghij"), 9, 0, S("abcde"), 0, 0, 0);
3470 test(S("abcdefghij"), 9, 0, S("abcde"), 0, 1, -1);
3471 test(S("abcdefghij"), 9, 0, S("abcde"), 0, 2, -2);
3472 test(S("abcdefghij"), 9, 0, S("abcde"), 0, 4, -4);
3473 test(S("abcdefghij"), 9, 0, S("abcde"), 0, 5, -5);
3474 test(S("abcdefghij"), 9, 0, S("abcde"), 0, 6, -5);
3475 test(S("abcdefghij"), 9, 0, S("abcde"), 1, 0, 0);
3476 test(S("abcdefghij"), 9, 0, S("abcde"), 1, 1, -1);
3477 test(S("abcdefghij"), 9, 0, S("abcde"), 1, 2, -2);
3478 test(S("abcdefghij"), 9, 0, S("abcde"), 1, 3, -3);
3479 test(S("abcdefghij"), 9, 0, S("abcde"), 1, 4, -4);
3480 test(S("abcdefghij"), 9, 0, S("abcde"), 1, 5, -4);
3481 test(S("abcdefghij"), 9, 0, S("abcde"), 2, 0, 0);
3482 test(S("abcdefghij"), 9, 0, S("abcde"), 2, 1, -1);
3483 test(S("abcdefghij"), 9, 0, S("abcde"), 2, 2, -2);
3484 test(S("abcdefghij"), 9, 0, S("abcde"), 2, 3, -3);
3485 test(S("abcdefghij"), 9, 0, S("abcde"), 2, 4, -3);
3486 test(S("abcdefghij"), 9, 0, S("abcde"), 4, 0, 0);
3487 test(S("abcdefghij"), 9, 0, S("abcde"), 4, 1, -1);
3488 test(S("abcdefghij"), 9, 0, S("abcde"), 4, 2, -1);
3489 test(S("abcdefghij"), 9, 0, S("abcde"), 5, 0, 0);
3490 test(S("abcdefghij"), 9, 0, S("abcde"), 5, 1, 0);
3491 test(S("abcdefghij"), 9, 0, S("abcde"), 6, 0, 0);
3492 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 0, 0, 0);
3493 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 0, 1, -1);
3494 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 0, 5, -5);
3495 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 0, 9, -9);
3496 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 0, 10, -10);
3497 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 0, 11, -10);
3498 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 1, 0, 0);
3499 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 1, 1, -1);
3500 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 1, 4, -4);
3501 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 1, 8, -8);
3502 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 1, 9, -9);
3503 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 1, 10, -9);
3504 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 5, 0, 0);
3505 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 5, 1, -1);
3506 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 5, 2, -2);
3507 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 5, 4, -4);
3508 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 5, 5, -5);
3509 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 5, 6, -5);
3515 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 9, 0, 0);
3516 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 9, 1, -1);
3517 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 9, 2, -1);
3518 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 10, 0, 0);
3519 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 10, 1, 0);
3520 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 11, 0, 0);
3521 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
3522 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 0, 1, -1);
3523 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 0, 10, -10);
3524 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 0, 19, -19);
3525 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 0, 20, -20);
3526 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 0, 21, -20);
3527 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
3528 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 1, 1, -1);
3529 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 1, 9, -9);
3530 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 1, 18, -18);
3531 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 1, 19, -19);
3532 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 1, 20, -19);
3533 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
3534 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 10, 1, -1);
3535 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 10, 5, -5);
3536 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 10, 9, -9);
3537 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 10, 10, -10);
3538 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 10, 11, -10);
3539 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
3540 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 19, 1, -1);
3541 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 19, 2, -1);
3542 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
3543 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
3544 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
3545 test(S("abcdefghij"), 9, 1, S(""), 0, 0, 1);
3546 test(S("abcdefghij"), 9, 1, S(""), 0, 1, 1);
3547 test(S("abcdefghij"), 9, 1, S(""), 1, 0, 0);
3548 test(S("abcdefghij"), 9, 1, S("abcde"), 0, 0, 1);
3549 test(S("abcdefghij"), 9, 1, S("abcde"), 0, 1, 9);
3550 test(S("abcdefghij"), 9, 1, S("abcde"), 0, 2, 9);
3551 test(S("abcdefghij"), 9, 1, S("abcde"), 0, 4, 9);
3552 test(S("abcdefghij"), 9, 1, S("abcde"), 0, 5, 9);
3553 test(S("abcdefghij"), 9, 1, S("abcde"), 0, 6, 9);
3554 test(S("abcdefghij"), 9, 1, S("abcde"), 1, 0, 1);
3555 test(S("abcdefghij"), 9, 1, S("abcde"), 1, 1, 8);
3556 test(S("abcdefghij"), 9, 1, S("abcde"), 1, 2, 8);
3557 test(S("abcdefghij"), 9, 1, S("abcde"), 1, 3, 8);
3558 test(S("abcdefghij"), 9, 1, S("abcde"), 1, 4, 8);
3559 test(S("abcdefghij"), 9, 1, S("abcde"), 1, 5, 8);
3560 test(S("abcdefghij"), 9, 1, S("abcde"), 2, 0, 1);
3561 test(S("abcdefghij"), 9, 1, S("abcde"), 2, 1, 7);
3562 test(S("abcdefghij"), 9, 1, S("abcde"), 2, 2, 7);
3563 test(S("abcdefghij"), 9, 1, S("abcde"), 2, 3, 7);
3564 test(S("abcdefghij"), 9, 1, S("abcde"), 2, 4, 7);
3565 test(S("abcdefghij"), 9, 1, S("abcde"), 4, 0, 1);
3566 test(S("abcdefghij"), 9, 1, S("abcde"), 4, 1, 5);
3567 test(S("abcdefghij"), 9, 1, S("abcde"), 4, 2, 5);
3568 test(S("abcdefghij"), 9, 1, S("abcde"), 5, 0, 1);
3569 test(S("abcdefghij"), 9, 1, S("abcde"), 5, 1, 1);
3570 test(S("abcdefghij"), 9, 1, S("abcde"), 6, 0, 0);
3571 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 0, 0, 1);
3572 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 0, 1, 9);
3573 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 0, 5, 9);
3574 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 0, 9, 9);
3575 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 0, 10, 9);
3576 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 0, 11, 9);
3577 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 1, 0, 1);
3578 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 1, 1, 8);
3579 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 1, 4, 8);
3580 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 1, 8, 8);
3581 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 1, 9, 8);
3582 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 1, 10, 8);
3583 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 5, 0, 1);
3584 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 5, 1, 4);
3585 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 5, 2, 4);
3586 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 5, 4, 4);
3587 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 5, 5, 4);
3588 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 5, 6, 4);
3589 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 9, 0, 1);
3590 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 9, 1, 0);
3591 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 9, 2, 0);
3592 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 10, 0, 1);
3593 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 10, 1, 1);
3594 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 11, 0, 0);
3595 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 0, 0, 1);
3596 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 0, 1, 9);
3597 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 0, 10, 9);
3598 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 0, 19, 9);
3599 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 0, 20, 9);
3600 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 0, 21, 9);
3601 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 1, 0, 1);
3602 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 1, 1, 8);
3603 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 1, 9, 8);
3604 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 1, 18, 8);
3605 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 1, 19, 8);
3606 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 1, 20, 8);
3607 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 10, 0, 1);
3608 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 10, 1, -1);
3609 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 10, 5, -1);
3610 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 10, 9, -1);
3611 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 10, 10, -1);
3612 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 10, 11, -1);
3613 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 19, 0, 1);
3614 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 19, 1, -10);
3620 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 19, 2, -10);
3621 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 20, 0, 1);
3622 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 20, 1, 1);
3623 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 21, 0, 0);
3624 test(S("abcdefghij"), 9, 2, S(""), 0, 0, 1);
3625 test(S("abcdefghij"), 9, 2, S(""), 0, 1, 1);
3626 test(S("abcdefghij"), 9, 2, S(""), 1, 0, 0);
3627 test(S("abcdefghij"), 9, 2, S("abcde"), 0, 0, 1);
3628 test(S("abcdefghij"), 9, 2, S("abcde"), 0, 1, 9);
3629 test(S("abcdefghij"), 9, 2, S("abcde"), 0, 2, 9);
3630 test(S("abcdefghij"), 9, 2, S("abcde"), 0, 4, 9);
3631 test(S("abcdefghij"), 9, 2, S("abcde"), 0, 5, 9);
3632 test(S("abcdefghij"), 9, 2, S("abcde"), 0, 6, 9);
3633 test(S("abcdefghij"), 9, 2, S("abcde"), 1, 0, 1);
3634 test(S("abcdefghij"), 9, 2, S("abcde"), 1, 1, 8);
3635 test(S("abcdefghij"), 9, 2, S("abcde"), 1, 2, 8);
3636 test(S("abcdefghij"), 9, 2, S("abcde"), 1, 3, 8);
3637 test(S("abcdefghij"), 9, 2, S("abcde"), 1, 4, 8);
3638 test(S("abcdefghij"), 9, 2, S("abcde"), 1, 5, 8);
3639 test(S("abcdefghij"), 9, 2, S("abcde"), 2, 0, 1);
3640 test(S("abcdefghij"), 9, 2, S("abcde"), 2, 1, 7);
3641 test(S("abcdefghij"), 9, 2, S("abcde"), 2, 2, 7);
3642 test(S("abcdefghij"), 9, 2, S("abcde"), 2, 3, 7);
3643 test(S("abcdefghij"), 9, 2, S("abcde"), 2, 4, 7);
3644 test(S("abcdefghij"), 9, 2, S("abcde"), 4, 0, 1);
3645 test(S("abcdefghij"), 9, 2, S("abcde"), 4, 1, 5);
3646 test(S("abcdefghij"), 9, 2, S("abcde"), 4, 2, 5);
3647 test(S("abcdefghij"), 9, 2, S("abcde"), 5, 0, 1);
3648 test(S("abcdefghij"), 9, 2, S("abcde"), 5, 1, 1);
3649 test(S("abcdefghij"), 9, 2, S("abcde"), 6, 0, 0);
3650 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 0, 0, 1);
3651 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 0, 1, 9);
3652 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 0, 5, 9);
3653 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 0, 9, 9);
3654 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 0, 10, 9);
3655 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 0, 11, 9);
3656 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 1, 0, 1);
3657 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 1, 1, 8);
3658 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 1, 4, 8);
3659 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 1, 8, 8);
3660 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 1, 9, 8);
3661 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 1, 10, 8);
3662 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 5, 0, 1);
3663 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 5, 1, 4);
3664 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 5, 2, 4);
3665 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 5, 4, 4);
3666 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 5, 5, 4);
3667 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 5, 6, 4);
3668 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 9, 0, 1);
3669 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 9, 1, 0);
3670 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 9, 2, 0);
3671 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 10, 0, 1);
3672 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 10, 1, 1);
3673 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 11, 0, 0);
3674 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 0, 0, 1);
3675 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 0, 1, 9);
3676 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 0, 10, 9);
3677 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 0, 19, 9);
3678 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 0, 20, 9);
3679 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 0, 21, 9);
3680 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 1, 0, 1);
3681 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 1, 1, 8);
3682 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 1, 9, 8);
3683 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 1, 18, 8);
3684 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 1, 19, 8);
3685 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 1, 20, 8);
3686 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 10, 0, 1);
3687 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 10, 1, -1);
3688 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 10, 5, -1);
3689 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 10, 9, -1);
3690 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 10, 10, -1);
3691 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 10, 11, -1);
3692 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 19, 0, 1);
3693 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 19, 1, -10);
3694 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 19, 2, -10);
3695 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 20, 0, 1);
3696 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 20, 1, 1);
3697 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 21, 0, 0);
3698 test(S("abcdefghij"), 10, 0, S(""), 0, 0, 0);
3699 test(S("abcdefghij"), 10, 0, S(""), 0, 1, 0);
3700 test(S("abcdefghij"), 10, 0, S(""), 1, 0, 0);
3701 test(S("abcdefghij"), 10, 0, S("abcde"), 0, 0, 0);
3702 test(S("abcdefghij"), 10, 0, S("abcde"), 0, 1, -1);
3703 test(S("abcdefghij"), 10, 0, S("abcde"), 0, 2, -2);
3704 test(S("abcdefghij"), 10, 0, S("abcde"), 0, 4, -4);
3705 test(S("abcdefghij"), 10, 0, S("abcde"), 0, 5, -5);
3706 test(S("abcdefghij"), 10, 0, S("abcde"), 0, 6, -5);
3707 test(S("abcdefghij"), 10, 0, S("abcde"), 1, 0, 0);
3708 test(S("abcdefghij"), 10, 0, S("abcde"), 1, 1, -1);
3709 test(S("abcdefghij"), 10, 0, S("abcde"), 1, 2, -2);
3710 test(S("abcdefghij"), 10, 0, S("abcde"), 1, 3, -3);
3711 test(S("abcdefghij"), 10, 0, S("abcde"), 1, 4, -4);
3712 test(S("abcdefghij"), 10, 0, S("abcde"), 1, 5, -4);
3713 test(S("abcdefghij"), 10, 0, S("abcde"), 2, 0, 0);
3714 test(S("abcdefghij"), 10, 0, S("abcde"), 2, 1, -1);
3715 test(S("abcdefghij"), 10, 0, S("abcde"), 2, 2, -2);
3716 test(S("abcdefghij"), 10, 0, S("abcde"), 2, 3, -3);
3717 test(S("abcdefghij"), 10, 0, S("abcde"), 2, 4, -3);
3718 test(S("abcdefghij"), 10, 0, S("abcde"), 4, 0, 0);
3719 test(S("abcdefghij"), 10, 0, S("abcde"), 4, 1, -1);
3725 test(S("abcdefghij"), 10, 0, S("abcde"), 4, 2, -1);
3726 test(S("abcdefghij"), 10, 0, S("abcde"), 5, 0, 0);
3727 test(S("abcdefghij"), 10, 0, S("abcde"), 5, 1, 0);
3728 test(S("abcdefghij"), 10, 0, S("abcde"), 6, 0, 0);
3729 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 0, 0, 0);
3730 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 0, 1, -1);
3731 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 0, 5, -5);
3732 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 0, 9, -9);
3733 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 0, 10, -10);
3734 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 0, 11, -10);
3735 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 1, 0, 0);
3736 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 1, 1, -1);
3737 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 1, 4, -4);
3738 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 1, 8, -8);
3739 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 1, 9, -9);
3740 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 1, 10, -9);
3741 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 5, 0, 0);
3742 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 5, 1, -1);
3743 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 5, 2, -2);
3744 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 5, 4, -4);
3745 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 5, 5, -5);
3746 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 5, 6, -5);
3747 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 9, 0, 0);
3748 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 9, 1, -1);
3749 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 9, 2, -1);
3750 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 10, 0, 0);
3751 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 10, 1, 0);
3752 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 11, 0, 0);
3753 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
3754 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 0, 1, -1);
3755 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 0, 10, -10);
3756 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 0, 19, -19);
3757 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 0, 20, -20);
3758 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 0, 21, -20);
3759 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
3760 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 1, 1, -1);
3761 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 1, 9, -9);
3762 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 1, 18, -18);
3763 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 1, 19, -19);
3764 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 1, 20, -19);
3765 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
3766 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 10, 1, -1);
3767 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 10, 5, -5);
3768 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 10, 9, -9);
3769 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 10, 10, -10);
3770 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 10, 11, -10);
3771 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
3772 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 19, 1, -1);
3773 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 19, 2, -1);
3774 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
3775 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
3776 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
3777 test(S("abcdefghij"), 10, 1, S(""), 0, 0, 0);
3778 test(S("abcdefghij"), 10, 1, S(""), 0, 1, 0);
3779 test(S("abcdefghij"), 10, 1, S(""), 1, 0, 0);
3780 test(S("abcdefghij"), 10, 1, S("abcde"), 0, 0, 0);
3781 test(S("abcdefghij"), 10, 1, S("abcde"), 0, 1, -1);
3782 test(S("abcdefghij"), 10, 1, S("abcde"), 0, 2, -2);
3783 test(S("abcdefghij"), 10, 1, S("abcde"), 0, 4, -4);
3784 test(S("abcdefghij"), 10, 1, S("abcde"), 0, 5, -5);
3785 test(S("abcdefghij"), 10, 1, S("abcde"), 0, 6, -5);
3786 test(S("abcdefghij"), 10, 1, S("abcde"), 1, 0, 0);
3787 test(S("abcdefghij"), 10, 1, S("abcde"), 1, 1, -1);
3788 test(S("abcdefghij"), 10, 1, S("abcde"), 1, 2, -2);
3789 test(S("abcdefghij"), 10, 1, S("abcde"), 1, 3, -3);
3790 test(S("abcdefghij"), 10, 1, S("abcde"), 1, 4, -4);
3791 test(S("abcdefghij"), 10, 1, S("abcde"), 1, 5, -4);
3792 test(S("abcdefghij"), 10, 1, S("abcde"), 2, 0, 0);
3793 test(S("abcdefghij"), 10, 1, S("abcde"), 2, 1, -1);
3794 test(S("abcdefghij"), 10, 1, S("abcde"), 2, 2, -2);
3795 test(S("abcdefghij"), 10, 1, S("abcde"), 2, 3, -3);
3796 test(S("abcdefghij"), 10, 1, S("abcde"), 2, 4, -3);
3797 test(S("abcdefghij"), 10, 1, S("abcde"), 4, 0, 0);
3798 test(S("abcdefghij"), 10, 1, S("abcde"), 4, 1, -1);
3799 test(S("abcdefghij"), 10, 1, S("abcde"), 4, 2, -1);
3800 test(S("abcdefghij"), 10, 1, S("abcde"), 5, 0, 0);
3801 test(S("abcdefghij"), 10, 1, S("abcde"), 5, 1, 0);
3802 test(S("abcdefghij"), 10, 1, S("abcde"), 6, 0, 0);
3803 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 0, 0, 0);
3804 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 0, 1, -1);
3805 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 0, 5, -5);
3806 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 0, 9, -9);
3807 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 0, 10, -10);
3808 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 0, 11, -10);
3809 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 1, 0, 0);
3810 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 1, 1, -1);
3811 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 1, 4, -4);
3812 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 1, 8, -8);
3813 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 1, 9, -9);
3814 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 1, 10, -9);
3815 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 5, 0, 0);
3816 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 5, 1, -1);
3817 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 5, 2, -2);
3818 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 5, 4, -4);
3819 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 5, 5, -5);
3820 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 5, 6, -5);
3821 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 9, 0, 0);
3822 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 9, 1, -1);
3823 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 9, 2, -1);
3824 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 10, 0, 0);
3830 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 10, 1, 0);
3831 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 11, 0, 0);
3832 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 0, 0, 0);
3833 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 0, 1, -1);
3834 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 0, 10, -10);
3835 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 0, 19, -19);
3836 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 0, 20, -20);
3837 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 0, 21, -20);
3838 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 1, 0, 0);
3839 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 1, 1, -1);
3840 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 1, 9, -9);
3841 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 1, 18, -18);
3842 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 1, 19, -19);
3843 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 1, 20, -19);
3844 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 10, 0, 0);
3845 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 10, 1, -1);
3846 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 10, 5, -5);
3847 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 10, 9, -9);
3848 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 10, 10, -10);
3849 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 10, 11, -10);
3850 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 19, 0, 0);
3851 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 19, 1, -1);
3852 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 19, 2, -1);
3853 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 20, 0, 0);
3854 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 20, 1, 0);
3855 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 21, 0, 0);
3856 test(S("abcdefghij"), 11, 0, S(""), 0, 0, 0);
3857 test(S("abcdefghij"), 11, 0, S(""), 0, 1, 0);
3858 test(S("abcdefghij"), 11, 0, S(""), 1, 0, 0);
3859 test(S("abcdefghij"), 11, 0, S("abcde"), 0, 0, 0);
3860 test(S("abcdefghij"), 11, 0, S("abcde"), 0, 1, 0);
3861 test(S("abcdefghij"), 11, 0, S("abcde"), 0, 2, 0);
3862 test(S("abcdefghij"), 11, 0, S("abcde"), 0, 4, 0);
3863 test(S("abcdefghij"), 11, 0, S("abcde"), 0, 5, 0);
3864 test(S("abcdefghij"), 11, 0, S("abcde"), 0, 6, 0);
3865 test(S("abcdefghij"), 11, 0, S("abcde"), 1, 0, 0);
3866 test(S("abcdefghij"), 11, 0, S("abcde"), 1, 1, 0);
3867 test(S("abcdefghij"), 11, 0, S("abcde"), 1, 2, 0);
3868 test(S("abcdefghij"), 11, 0, S("abcde"), 1, 3, 0);
3869 test(S("abcdefghij"), 11, 0, S("abcde"), 1, 4, 0);
3870 test(S("abcdefghij"), 11, 0, S("abcde"), 1, 5, 0);
3871 test(S("abcdefghij"), 11, 0, S("abcde"), 2, 0, 0);
3872 test(S("abcdefghij"), 11, 0, S("abcde"), 2, 1, 0);
3873 test(S("abcdefghij"), 11, 0, S("abcde"), 2, 2, 0);
3874 test(S("abcdefghij"), 11, 0, S("abcde"), 2, 3, 0);
3875 test(S("abcdefghij"), 11, 0, S("abcde"), 2, 4, 0);
3876 test(S("abcdefghij"), 11, 0, S("abcde"), 4, 0, 0);
3877 test(S("abcdefghij"), 11, 0, S("abcde"), 4, 1, 0);
3878 test(S("abcdefghij"), 11, 0, S("abcde"), 4, 2, 0);
3879 test(S("abcdefghij"), 11, 0, S("abcde"), 5, 0, 0);
3880 test(S("abcdefghij"), 11, 0, S("abcde"), 5, 1, 0);
3881 test(S("abcdefghij"), 11, 0, S("abcde"), 6, 0, 0);
3882 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 0, 0, 0);
3883 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 0, 1, 0);
3884 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 0, 5, 0);
3885 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 0, 9, 0);
3886 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 0, 10, 0);
3887 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 0, 11, 0);
3888 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 1, 0, 0);
3889 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 1, 1, 0);
3890 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 1, 4, 0);
3891 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 1, 8, 0);
3892 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 1, 9, 0);
3893 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 1, 10, 0);
3894 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 5, 0, 0);
3895 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 5, 1, 0);
3896 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 5, 2, 0);
3897 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 5, 4, 0);
3898 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 5, 5, 0);
3899 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 5, 6, 0);
3900 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 9, 0, 0);
3901 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 9, 1, 0);
3902 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 9, 2, 0);
3903 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 10, 0, 0);
3904 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 10, 1, 0);
3905 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 11, 0, 0);
3906 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
3907 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 0, 1, 0);
3908 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 0, 10, 0);
3909 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 0, 19, 0);
3910 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 0, 20, 0);
3911 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 0, 21, 0);
3912 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
3913 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 1, 1, 0);
3914 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 1, 9, 0);
3915 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 1, 18, 0);
3916 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 1, 19, 0);
3917 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 1, 20, 0);
3918 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
3919 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 10, 1, 0);
3920 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 10, 5, 0);
3921 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 10, 9, 0);
3922 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 10, 10, 0);
3923 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 10, 11, 0);
3924 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
3925 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 19, 1, 0);
3926 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 19, 2, 0);
3927 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
3928 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
3929 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
3935 test(S("abcdefghijklmnopqrst"), 0, 0, S(""), 0, 0, 0);
3936 test(S("abcdefghijklmnopqrst"), 0, 0, S(""), 0, 1, 0);
3937 test(S("abcdefghijklmnopqrst"), 0, 0, S(""), 1, 0, 0);
3938 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 0, 0, 0);
3939 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 0, 1, -1);
3940 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 0, 2, -2);
3941 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 0, 4, -4);
3942 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 0, 5, -5);
3943 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 0, 6, -5);
3944 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 1, 0, 0);
3945 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 1, 1, -1);
3946 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 1, 2, -2);
3947 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 1, 3, -3);
3948 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 1, 4, -4);
3949 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 1, 5, -4);
3950 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 2, 0, 0);
3951 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 2, 1, -1);
3952 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 2, 2, -2);
3953 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 2, 3, -3);
3954 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 2, 4, -3);
3955 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 4, 0, 0);
3956 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 4, 1, -1);
3957 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 4, 2, -1);
3958 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 5, 0, 0);
3959 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 5, 1, 0);
3960 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 6, 0, 0);
3961 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 0, 0, 0);
3962 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 0, 1, -1);
3963 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 0, 5, -5);
3964 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 0, 9, -9);
3965 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 0, 10, -10);
3966 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 0, 11, -10);
3967 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 1, 0, 0);
3968 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 1, 1, -1);
3969 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 1, 4, -4);
3970 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 1, 8, -8);
3971 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 1, 9, -9);
3972 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 1, 10, -9);
3973 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 5, 0, 0);
3974 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 5, 1, -1);
3975 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 5, 2, -2);
3976 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 5, 4, -4);
3977 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 5, 5, -5);
3978 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 5, 6, -5);
3979 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 9, 0, 0);
3980 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 9, 1, -1);
3981 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 9, 2, -1);
3982 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 10, 0, 0);
3983 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 10, 1, 0);
3984 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 11, 0, 0);
3985 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
3986 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 0, 1, -1);
3987 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 0, 10, -10);
3988 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 0, 19, -19);
3989 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 0, 20, -20);
3990 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 0, 21, -20);
3991 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
3992 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 1, 1, -1);
3993 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 1, 9, -9);
3994 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 1, 18, -18);
3995 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 1, 19, -19);
3996 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 1, 20, -19);
3997 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
3998 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 10, 1, -1);
3999 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 10, 5, -5);
4000 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 10, 9, -9);
4001 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 10, 10, -10);
4002 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 10, 11, -10);
4003 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
4004 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 19, 1, -1);
4005 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 19, 2, -1);
4006 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
4007 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
4008 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
4009 test(S("abcdefghijklmnopqrst"), 0, 1, S(""), 0, 0, 1);
4010 test(S("abcdefghijklmnopqrst"), 0, 1, S(""), 0, 1, 1);
4011 test(S("abcdefghijklmnopqrst"), 0, 1, S(""), 1, 0, 0);
4012 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 0, 0, 1);
4013 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 0, 1, 0);
4014 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 0, 2, -1);
4015 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 0, 4, -3);
4016 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 0, 5, -4);
4017 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 0, 6, -4);
4018 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 1, 0, 1);
4019 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 1, 1, -1);
4020 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 1, 2, -1);
4021 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 1, 3, -1);
4022 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 1, 4, -1);
4023 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 1, 5, -1);
4024 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 2, 0, 1);
4025 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 2, 1, -2);
4026 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 2, 2, -2);
4027 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 2, 3, -2);
4028 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 2, 4, -2);
4029 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 4, 0, 1);
4030 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 4, 1, -4);
4031 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 4, 2, -4);
4032 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 5, 0, 1);
4033 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 5, 1, 1);
4034 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 6, 0, 0);
4040 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 0, 0, 1);
4041 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 0, 1, 0);
4042 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 0, 5, -4);
4043 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 0, 9, -8);
4044 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 0, 10, -9);
4045 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 0, 11, -9);
4046 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 1, 0, 1);
4047 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 1, 1, -1);
4048 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 1, 4, -1);
4049 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 1, 8, -1);
4050 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 1, 9, -1);
4051 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 1, 10, -1);
4052 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 5, 0, 1);
4053 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 5, 1, -5);
4054 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 5, 2, -5);
4055 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 5, 4, -5);
4056 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 5, 5, -5);
4057 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 5, 6, -5);
4058 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 9, 0, 1);
4059 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 9, 1, -9);
4060 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 9, 2, -9);
4061 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 10, 0, 1);
4062 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 10, 1, 1);
4063 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 11, 0, 0);
4064 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 0, 0, 1);
4065 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 0, 1, 0);
4066 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 0, 10, -9);
4067 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 0, 19, -18);
4068 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 0, 20, -19);
4069 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 0, 21, -19);
4070 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 1, 0, 1);
4071 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 1, 1, -1);
4072 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 1, 9, -1);
4073 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 1, 18, -1);
4074 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 1, 19, -1);
4075 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 1, 20, -1);
4076 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 10, 0, 1);
4077 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 10, 1, -10);
4078 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 10, 5, -10);
4079 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 10, 9, -10);
4080 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 10, 10, -10);
4081 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 10, 11, -10);
4082 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 19, 0, 1);
4083 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 19, 1, -19);
4084 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 19, 2, -19);
4085 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 20, 0, 1);
4086 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 20, 1, 1);
4087 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 21, 0, 0);
4088 test(S("abcdefghijklmnopqrst"), 0, 10, S(""), 0, 0, 10);
4089 test(S("abcdefghijklmnopqrst"), 0, 10, S(""), 0, 1, 10);
4090 test(S("abcdefghijklmnopqrst"), 0, 10, S(""), 1, 0, 0);
4091 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 0, 0, 10);
4092 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 0, 1, 9);
4093 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 0, 2, 8);
4094 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 0, 4, 6);
4095 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 0, 5, 5);
4096 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 0, 6, 5);
4097 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 1, 0, 10);
4098 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 1, 1, -1);
4099 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 1, 2, -1);
4100 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 1, 3, -1);
4101 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 1, 4, -1);
4102 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 1, 5, -1);
4103 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 2, 0, 10);
4104 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 2, 1, -2);
4105 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 2, 2, -2);
4106 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 2, 3, -2);
4107 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 2, 4, -2);
4108 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 4, 0, 10);
4109 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 4, 1, -4);
4110 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 4, 2, -4);
4111 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 5, 0, 10);
4112 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 5, 1, 10);
4113 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 6, 0, 0);
4114 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 0, 0, 10);
4115 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 0, 1, 9);
4116 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 0, 5, 5);
4117 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 0, 9, 1);
4118 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 0, 10, 0);
4119 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 0, 11, 0);
4120 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 1, 0, 10);
4121 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 1, 1, -1);
4122 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 1, 4, -1);
4123 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 1, 8, -1);
4124 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 1, 9, -1);
4125 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 1, 10, -1);
4126 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 5, 0, 10);
4127 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 5, 1, -5);
4128 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 5, 2, -5);
4129 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 5, 4, -5);
4130 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 5, 5, -5);
4131 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 5, 6, -5);
4132 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 9, 0, 10);
4133 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 9, 1, -9);
4134 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 9, 2, -9);
4135 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 10, 0, 10);
4136 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 10, 1, 10);
4137 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 11, 0, 0);
4138 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 0, 0, 10);
4139 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 0, 1, 9);
4145 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 0, 10, 0);
4146 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 0, 19, -9);
4147 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 0, 20, -10);
4148 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 0, 21, -10);
4149 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 1, 0, 10);
4150 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 1, 1, -1);
4151 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 1, 9, -1);
4152 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 1, 18, -1);
4153 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 1, 19, -1);
4154 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 1, 20, -1);
4155 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 10, 0, 10);
4156 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 10, 1, -10);
4157 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 10, 5, -10);
4158 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 10, 9, -10);
4159 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 10, 10, -10);
4160 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 10, 11, -10);
4161 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 19, 0, 10);
4162 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 19, 1, -19);
4163 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 19, 2, -19);
4164 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 20, 0, 10);
4165 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 20, 1, 10);
4166 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 21, 0, 0);
4167 test(S("abcdefghijklmnopqrst"), 0, 19, S(""), 0, 0, 19);
4168 test(S("abcdefghijklmnopqrst"), 0, 19, S(""), 0, 1, 19);
4169 test(S("abcdefghijklmnopqrst"), 0, 19, S(""), 1, 0, 0);
4170 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 0, 0, 19);
4171 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 0, 1, 18);
4172 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 0, 2, 17);
4173 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 0, 4, 15);
4174 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 0, 5, 14);
4175 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 0, 6, 14);
4176 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 1, 0, 19);
4177 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 1, 1, -1);
4178 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 1, 2, -1);
4179 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 1, 3, -1);
4180 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 1, 4, -1);
4181 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 1, 5, -1);
4182 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 2, 0, 19);
4183 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 2, 1, -2);
4184 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 2, 2, -2);
4185 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 2, 3, -2);
4186 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 2, 4, -2);
4187 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 4, 0, 19);
4188 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 4, 1, -4);
4189 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 4, 2, -4);
4190 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 5, 0, 19);
4191 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 5, 1, 19);
4192 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 6, 0, 0);
4193 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 0, 0, 19);
4194 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 0, 1, 18);
4195 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 0, 5, 14);
4196 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 0, 9, 10);
4197 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 0, 10, 9);
4198 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 0, 11, 9);
4199 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 1, 0, 19);
4200 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 1, 1, -1);
4201 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 1, 4, -1);
4202 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 1, 8, -1);
4203 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 1, 9, -1);
4204 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 1, 10, -1);
4205 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 5, 0, 19);
4206 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 5, 1, -5);
4207 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 5, 2, -5);
4208 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 5, 4, -5);
4209 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 5, 5, -5);
4210 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 5, 6, -5);
4211 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 9, 0, 19);
4212 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 9, 1, -9);
4213 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 9, 2, -9);
4214 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 10, 0, 19);
4215 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 10, 1, 19);
4216 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 11, 0, 0);
4217 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 0, 0, 19);
4218 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 0, 1, 18);
4219 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 0, 10, 9);
4220 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 0, 19, 0);
4221 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 0, 20, -1);
4222 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 0, 21, -1);
4223 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 1, 0, 19);
4224 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 1, 1, -1);
4225 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 1, 9, -1);
4226 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 1, 18, -1);
4227 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 1, 19, -1);
4228 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 1, 20, -1);
4229 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 10, 0, 19);
4230 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 10, 1, -10);
4231 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 10, 5, -10);
4232 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 10, 9, -10);
4233 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 10, 10, -10);
4234 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 10, 11, -10);
4235 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 19, 0, 19);
4236 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 19, 1, -19);
4237 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 19, 2, -19);
4238 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 20, 0, 19);
4239 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 20, 1, 19);
4240 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 21, 0, 0);
4241 test(S("abcdefghijklmnopqrst"), 0, 20, S(""), 0, 0, 20);
4242 test(S("abcdefghijklmnopqrst"), 0, 20, S(""), 0, 1, 20);
4243 test(S("abcdefghijklmnopqrst"), 0, 20, S(""), 1, 0, 0);
4244 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 0, 0, 20);
4250 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 0, 1, 19);
4251 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 0, 2, 18);
4252 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 0, 4, 16);
4253 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 0, 5, 15);
4254 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 0, 6, 15);
4255 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 1, 0, 20);
4256 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 1, 1, -1);
4257 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 1, 2, -1);
4258 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 1, 3, -1);
4259 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 1, 4, -1);
4260 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 1, 5, -1);
4261 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 2, 0, 20);
4262 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 2, 1, -2);
4263 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 2, 2, -2);
4264 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 2, 3, -2);
4265 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 2, 4, -2);
4266 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 4, 0, 20);
4267 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 4, 1, -4);
4268 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 4, 2, -4);
4269 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 5, 0, 20);
4270 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 5, 1, 20);
4271 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 6, 0, 0);
4272 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 0, 0, 20);
4273 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 0, 1, 19);
4274 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 0, 5, 15);
4275 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 0, 9, 11);
4276 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 0, 10, 10);
4277 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 0, 11, 10);
4278 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 1, 0, 20);
4279 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 1, 1, -1);
4280 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 1, 4, -1);
4281 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 1, 8, -1);
4282 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 1, 9, -1);
4283 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 1, 10, -1);
4284 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 5, 0, 20);
4285 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 5, 1, -5);
4286 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 5, 2, -5);
4287 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 5, 4, -5);
4288 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 5, 5, -5);
4289 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 5, 6, -5);
4290 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 9, 0, 20);
4291 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 9, 1, -9);
4292 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 9, 2, -9);
4293 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 10, 0, 20);
4294 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 10, 1, 20);
4295 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 11, 0, 0);
4296 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 0, 0, 20);
4297 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 0, 1, 19);
4298 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 0, 10, 10);
4299 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 0, 19, 1);
4300 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 0, 20, 0);
4301 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 0, 21, 0);
4302 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 1, 0, 20);
4303 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 1, 1, -1);
4304 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 1, 9, -1);
4305 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 1, 18, -1);
4306 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 1, 19, -1);
4307 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 1, 20, -1);
4308 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 10, 0, 20);
4309 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 10, 1, -10);
4310 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 10, 5, -10);
4311 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 10, 9, -10);
4312 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 10, 10, -10);
4313 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 10, 11, -10);
4314 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 19, 0, 20);
4315 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 19, 1, -19);
4316 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 19, 2, -19);
4317 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 20, 0, 20);
4318 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 20, 1, 20);
4319 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 21, 0, 0);
4320 test(S("abcdefghijklmnopqrst"), 0, 21, S(""), 0, 0, 20);
4321 test(S("abcdefghijklmnopqrst"), 0, 21, S(""), 0, 1, 20);
4322 test(S("abcdefghijklmnopqrst"), 0, 21, S(""), 1, 0, 0);
4323 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 0, 0, 20);
4324 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 0, 1, 19);
4325 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 0, 2, 18);
4326 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 0, 4, 16);
4327 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 0, 5, 15);
4328 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 0, 6, 15);
4329 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 1, 0, 20);
4330 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 1, 1, -1);
4331 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 1, 2, -1);
4332 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 1, 3, -1);
4333 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 1, 4, -1);
4334 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 1, 5, -1);
4335 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 2, 0, 20);
4336 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 2, 1, -2);
4337 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 2, 2, -2);
4338 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 2, 3, -2);
4339 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 2, 4, -2);
4340 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 4, 0, 20);
4341 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 4, 1, -4);
4342 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 4, 2, -4);
4343 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 5, 0, 20);
4344 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 5, 1, 20);
4345 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 6, 0, 0);
4346 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 0, 0, 20);
4347 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 0, 1, 19);
4348 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 0, 5, 15);
4349 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 0, 9, 11);
4355 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 0, 10, 10);
4356 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 0, 11, 10);
4357 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 1, 0, 20);
4358 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 1, 1, -1);
4359 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 1, 4, -1);
4360 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 1, 8, -1);
4361 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 1, 9, -1);
4362 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 1, 10, -1);
4363 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 5, 0, 20);
4364 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 5, 1, -5);
4365 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 5, 2, -5);
4366 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 5, 4, -5);
4367 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 5, 5, -5);
4368 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 5, 6, -5);
4369 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 9, 0, 20);
4370 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 9, 1, -9);
4371 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 9, 2, -9);
4372 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 10, 0, 20);
4373 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 10, 1, 20);
4374 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 11, 0, 0);
4375 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 0, 0, 20);
4376 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 0, 1, 19);
4377 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 0, 10, 10);
4378 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 0, 19, 1);
4379 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 0, 20, 0);
4380 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 0, 21, 0);
4381 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 1, 0, 20);
4382 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 1, 1, -1);
4383 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 1, 9, -1);
4384 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 1, 18, -1);
4385 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 1, 19, -1);
4386 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 1, 20, -1);
4387 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 10, 0, 20);
4388 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 10, 1, -10);
4389 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 10, 5, -10);
4390 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 10, 9, -10);
4391 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 10, 10, -10);
4392 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 10, 11, -10);
4393 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 19, 0, 20);
4394 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 19, 1, -19);
4395 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 19, 2, -19);
4396 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 20, 0, 20);
4397 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 20, 1, 20);
4398 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 21, 0, 0);
4399 test(S("abcdefghijklmnopqrst"), 1, 0, S(""), 0, 0, 0);
4400 test(S("abcdefghijklmnopqrst"), 1, 0, S(""), 0, 1, 0);
4401 test(S("abcdefghijklmnopqrst"), 1, 0, S(""), 1, 0, 0);
4402 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 0, 0, 0);
4403 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 0, 1, -1);
4404 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 0, 2, -2);
4405 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 0, 4, -4);
4406 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 0, 5, -5);
4407 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 0, 6, -5);
4408 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 1, 0, 0);
4409 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 1, 1, -1);
4410 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 1, 2, -2);
4411 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 1, 3, -3);
4412 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 1, 4, -4);
4413 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 1, 5, -4);
4414 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 2, 0, 0);
4415 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 2, 1, -1);
4416 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 2, 2, -2);
4417 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 2, 3, -3);
4418 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 2, 4, -3);
4419 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 4, 0, 0);
4420 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 4, 1, -1);
4421 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 4, 2, -1);
4422 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 5, 0, 0);
4423 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 5, 1, 0);
4424 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 6, 0, 0);
4425 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 0, 0, 0);
4426 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 0, 1, -1);
4427 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 0, 5, -5);
4428 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 0, 9, -9);
4429 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 0, 10, -10);
4430 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 0, 11, -10);
4431 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 1, 0, 0);
4432 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 1, 1, -1);
4433 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 1, 4, -4);
4434 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 1, 8, -8);
4435 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 1, 9, -9);
4436 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 1, 10, -9);
4437 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 5, 0, 0);
4438 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 5, 1, -1);
4439 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 5, 2, -2);
4440 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 5, 4, -4);
4441 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 5, 5, -5);
4442 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 5, 6, -5);
4443 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 9, 0, 0);
4444 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 9, 1, -1);
4445 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 9, 2, -1);
4446 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 10, 0, 0);
4447 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 10, 1, 0);
4448 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 11, 0, 0);
4449 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
4450 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 0, 1, -1);
4451 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 0, 10, -10);
4452 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 0, 19, -19);
4453 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 0, 20, -20);
4454 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 0, 21, -20);
4460 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
4461 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 1, 1, -1);
4462 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 1, 9, -9);
4463 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 1, 18, -18);
4464 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 1, 19, -19);
4465 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 1, 20, -19);
4466 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
4467 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 10, 1, -1);
4468 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 10, 5, -5);
4469 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 10, 9, -9);
4470 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 10, 10, -10);
4471 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 10, 11, -10);
4472 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
4473 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 19, 1, -1);
4474 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 19, 2, -1);
4475 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
4476 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
4477 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
4478 test(S("abcdefghijklmnopqrst"), 1, 1, S(""), 0, 0, 1);
4479 test(S("abcdefghijklmnopqrst"), 1, 1, S(""), 0, 1, 1);
4480 test(S("abcdefghijklmnopqrst"), 1, 1, S(""), 1, 0, 0);
4481 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 0, 0, 1);
4482 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 0, 1, 1);
4483 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 0, 2, 1);
4484 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 0, 4, 1);
4485 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 0, 5, 1);
4486 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 0, 6, 1);
4487 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 1, 0, 1);
4488 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 1, 1, 0);
4489 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 1, 2, -1);
4490 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 1, 3, -2);
4491 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 1, 4, -3);
4492 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 1, 5, -3);
4493 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 2, 0, 1);
4494 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 2, 1, -1);
4495 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 2, 2, -1);
4496 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 2, 3, -1);
4497 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 2, 4, -1);
4498 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 4, 0, 1);
4499 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 4, 1, -3);
4500 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 4, 2, -3);
4501 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 5, 0, 1);
4502 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 5, 1, 1);
4503 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 6, 0, 0);
4504 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 0, 0, 1);
4505 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 0, 1, 1);
4506 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 0, 5, 1);
4507 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 0, 9, 1);
4508 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 0, 10, 1);
4509 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 0, 11, 1);
4510 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 1, 0, 1);
4511 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 1, 1, 0);
4512 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 1, 4, -3);
4513 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 1, 8, -7);
4514 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 1, 9, -8);
4515 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 1, 10, -8);
4516 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 5, 0, 1);
4517 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 5, 1, -4);
4518 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 5, 2, -4);
4519 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 5, 4, -4);
4520 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 5, 5, -4);
4521 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 5, 6, -4);
4522 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 9, 0, 1);
4523 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 9, 1, -8);
4524 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 9, 2, -8);
4525 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 10, 0, 1);
4526 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 10, 1, 1);
4527 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 11, 0, 0);
4528 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 0, 0, 1);
4529 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 0, 1, 1);
4530 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 0, 10, 1);
4531 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 0, 19, 1);
4532 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 0, 20, 1);
4533 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 0, 21, 1);
4534 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 1, 0, 1);
4535 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 1, 1, 0);
4536 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 1, 9, -8);
4537 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 1, 18, -17);
4538 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 1, 19, -18);
4539 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 1, 20, -18);
4540 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 10, 0, 1);
4541 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 10, 1, -9);
4542 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 10, 5, -9);
4543 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 10, 9, -9);
4544 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 10, 10, -9);
4545 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 10, 11, -9);
4546 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 19, 0, 1);
4547 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 19, 1, -18);
4548 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 19, 2, -18);
4549 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 20, 0, 1);
4550 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 20, 1, 1);
4551 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 21, 0, 0);
4552 test(S("abcdefghijklmnopqrst"), 1, 9, S(""), 0, 0, 9);
4553 test(S("abcdefghijklmnopqrst"), 1, 9, S(""), 0, 1, 9);
4554 test(S("abcdefghijklmnopqrst"), 1, 9, S(""), 1, 0, 0);
4555 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 0, 0, 9);
4556 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 0, 1, 1);
4557 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 0, 2, 1);
4558 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 0, 4, 1);
4559 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 0, 5, 1);
4565 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 0, 6, 1);
4566 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 1, 0, 9);
4567 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 1, 1, 8);
4568 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 1, 2, 7);
4569 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 1, 3, 6);
4570 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 1, 4, 5);
4571 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 1, 5, 5);
4572 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 2, 0, 9);
4573 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 2, 1, -1);
4574 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 2, 2, -1);
4575 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 2, 3, -1);
4576 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 2, 4, -1);
4577 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 4, 0, 9);
4578 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 4, 1, -3);
4579 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 4, 2, -3);
4580 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 5, 0, 9);
4581 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 5, 1, 9);
4582 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 6, 0, 0);
4583 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 0, 0, 9);
4584 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 0, 1, 1);
4585 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 0, 5, 1);
4586 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 0, 9, 1);
4587 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 0, 10, 1);
4588 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 0, 11, 1);
4589 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 1, 0, 9);
4590 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 1, 1, 8);
4591 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 1, 4, 5);
4592 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 1, 8, 1);
4593 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 1, 9, 0);
4594 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 1, 10, 0);
4595 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 5, 0, 9);
4596 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 5, 1, -4);
4597 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 5, 2, -4);
4598 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 5, 4, -4);
4599 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 5, 5, -4);
4600 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 5, 6, -4);
4601 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 9, 0, 9);
4602 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 9, 1, -8);
4603 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 9, 2, -8);
4604 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 10, 0, 9);
4605 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 10, 1, 9);
4606 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 11, 0, 0);
4607 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 0, 0, 9);
4608 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 0, 1, 1);
4609 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 0, 10, 1);
4610 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 0, 19, 1);
4611 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 0, 20, 1);
4612 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 0, 21, 1);
4613 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 1, 0, 9);
4614 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 1, 1, 8);
4615 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 1, 9, 0);
4616 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 1, 18, -9);
4617 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 1, 19, -10);
4618 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 1, 20, -10);
4619 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 10, 0, 9);
4620 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 10, 1, -9);
4621 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 10, 5, -9);
4622 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 10, 9, -9);
4623 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 10, 10, -9);
4624 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 10, 11, -9);
4625 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 19, 0, 9);
4626 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 19, 1, -18);
4627 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 19, 2, -18);
4628 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 20, 0, 9);
4629 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 20, 1, 9);
4630 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 21, 0, 0);
4631 test(S("abcdefghijklmnopqrst"), 1, 18, S(""), 0, 0, 18);
4632 test(S("abcdefghijklmnopqrst"), 1, 18, S(""), 0, 1, 18);
4633 test(S("abcdefghijklmnopqrst"), 1, 18, S(""), 1, 0, 0);
4634 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 0, 0, 18);
4635 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 0, 1, 1);
4636 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 0, 2, 1);
4637 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 0, 4, 1);
4638 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 0, 5, 1);
4639 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 0, 6, 1);
4640 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 1, 0, 18);
4641 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 1, 1, 17);
4642 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 1, 2, 16);
4643 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 1, 3, 15);
4644 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 1, 4, 14);
4645 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 1, 5, 14);
4646 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 2, 0, 18);
4647 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 2, 1, -1);
4648 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 2, 2, -1);
4649 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 2, 3, -1);
4650 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 2, 4, -1);
4651 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 4, 0, 18);
4652 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 4, 1, -3);
4653 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 4, 2, -3);
4654 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 5, 0, 18);
4655 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 5, 1, 18);
4656 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 6, 0, 0);
4657 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 0, 0, 18);
4658 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 0, 1, 1);
4659 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 0, 5, 1);
4660 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 0, 9, 1);
4661 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 0, 10, 1);
4662 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 0, 11, 1);
4663 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 1, 0, 18);
4664 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 1, 1, 17);
4670 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 1, 4, 14);
4671 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 1, 8, 10);
4672 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 1, 9, 9);
4673 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 1, 10, 9);
4674 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 5, 0, 18);
4675 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 5, 1, -4);
4676 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 5, 2, -4);
4677 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 5, 4, -4);
4678 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 5, 5, -4);
4679 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 5, 6, -4);
4680 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 9, 0, 18);
4681 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 9, 1, -8);
4682 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 9, 2, -8);
4683 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 10, 0, 18);
4684 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 10, 1, 18);
4685 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 11, 0, 0);
4686 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 0, 0, 18);
4687 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 0, 1, 1);
4688 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 0, 10, 1);
4689 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 0, 19, 1);
4690 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 0, 20, 1);
4691 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 0, 21, 1);
4692 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 1, 0, 18);
4693 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 1, 1, 17);
4694 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 1, 9, 9);
4695 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 1, 18, 0);
4696 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 1, 19, -1);
4697 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 1, 20, -1);
4698 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 10, 0, 18);
4699 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 10, 1, -9);
4700 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 10, 5, -9);
4701 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 10, 9, -9);
4702 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 10, 10, -9);
4703 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 10, 11, -9);
4704 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 19, 0, 18);
4705 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 19, 1, -18);
4706 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 19, 2, -18);
4707 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 20, 0, 18);
4708 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 20, 1, 18);
4709 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 21, 0, 0);
4710 test(S("abcdefghijklmnopqrst"), 1, 19, S(""), 0, 0, 19);
4711 test(S("abcdefghijklmnopqrst"), 1, 19, S(""), 0, 1, 19);
4712 test(S("abcdefghijklmnopqrst"), 1, 19, S(""), 1, 0, 0);
4713 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 0, 0, 19);
4714 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 0, 1, 1);
4715 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 0, 2, 1);
4716 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 0, 4, 1);
4717 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 0, 5, 1);
4718 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 0, 6, 1);
4719 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 1, 0, 19);
4720 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 1, 1, 18);
4721 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 1, 2, 17);
4722 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 1, 3, 16);
4723 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 1, 4, 15);
4724 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 1, 5, 15);
4725 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 2, 0, 19);
4726 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 2, 1, -1);
4727 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 2, 2, -1);
4728 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 2, 3, -1);
4729 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 2, 4, -1);
4730 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 4, 0, 19);
4731 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 4, 1, -3);
4732 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 4, 2, -3);
4733 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 5, 0, 19);
4734 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 5, 1, 19);
4735 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 6, 0, 0);
4736 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 0, 0, 19);
4737 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 0, 1, 1);
4738 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 0, 5, 1);
4739 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 0, 9, 1);
4740 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 0, 10, 1);
4741 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 0, 11, 1);
4742 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 1, 0, 19);
4743 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 1, 1, 18);
4744 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 1, 4, 15);
4745 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 1, 8, 11);
4746 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 1, 9, 10);
4747 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 1, 10, 10);
4748 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 5, 0, 19);
4749 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 5, 1, -4);
4750 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 5, 2, -4);
4751 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 5, 4, -4);
4752 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 5, 5, -4);
4753 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 5, 6, -4);
4754 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 9, 0, 19);
4755 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 9, 1, -8);
4756 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 9, 2, -8);
4757 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 10, 0, 19);
4758 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 10, 1, 19);
4759 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 11, 0, 0);
4760 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 0, 0, 19);
4761 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 0, 1, 1);
4762 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 0, 10, 1);
4763 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 0, 19, 1);
4764 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 0, 20, 1);
4765 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 0, 21, 1);
4766 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 1, 0, 19);
4767 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 1, 1, 18);
4768 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 1, 9, 10);
4769 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 1, 18, 1);
4775 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 1, 19, 0);
4776 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 1, 20, 0);
4777 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 10, 0, 19);
4778 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 10, 1, -9);
4779 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 10, 5, -9);
4780 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 10, 9, -9);
4781 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 10, 10, -9);
4782 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 10, 11, -9);
4783 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 19, 0, 19);
4784 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 19, 1, -18);
4785 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 19, 2, -18);
4786 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 20, 0, 19);
4787 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 20, 1, 19);
4788 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 21, 0, 0);
4789 test(S("abcdefghijklmnopqrst"), 1, 20, S(""), 0, 0, 19);
4790 test(S("abcdefghijklmnopqrst"), 1, 20, S(""), 0, 1, 19);
4791 test(S("abcdefghijklmnopqrst"), 1, 20, S(""), 1, 0, 0);
4792 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 0, 0, 19);
4793 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 0, 1, 1);
4794 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 0, 2, 1);
4795 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 0, 4, 1);
4796 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 0, 5, 1);
4797 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 0, 6, 1);
4798 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 1, 0, 19);
4799 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 1, 1, 18);
4800 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 1, 2, 17);
4801 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 1, 3, 16);
4802 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 1, 4, 15);
4803 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 1, 5, 15);
4804 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 2, 0, 19);
4805 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 2, 1, -1);
4806 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 2, 2, -1);
4807 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 2, 3, -1);
4808 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 2, 4, -1);
4809 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 4, 0, 19);
4810 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 4, 1, -3);
4811 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 4, 2, -3);
4812 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 5, 0, 19);
4813 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 5, 1, 19);
4814 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 6, 0, 0);
4815 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 0, 0, 19);
4816 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 0, 1, 1);
4817 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 0, 5, 1);
4818 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 0, 9, 1);
4819 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 0, 10, 1);
4820 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 0, 11, 1);
4821 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 1, 0, 19);
4822 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 1, 1, 18);
4823 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 1, 4, 15);
4824 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 1, 8, 11);
4825 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 1, 9, 10);
4826 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 1, 10, 10);
4827 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 5, 0, 19);
4828 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 5, 1, -4);
4829 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 5, 2, -4);
4830 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 5, 4, -4);
4831 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 5, 5, -4);
4832 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 5, 6, -4);
4833 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 9, 0, 19);
4834 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 9, 1, -8);
4835 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 9, 2, -8);
4836 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 10, 0, 19);
4837 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 10, 1, 19);
4838 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 11, 0, 0);
4839 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 0, 0, 19);
4840 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 0, 1, 1);
4841 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 0, 10, 1);
4842 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 0, 19, 1);
4843 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 0, 20, 1);
4844 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 0, 21, 1);
4845 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 1, 0, 19);
4846 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 1, 1, 18);
4847 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 1, 9, 10);
4848 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 1, 18, 1);
4849 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 1, 19, 0);
4850 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 1, 20, 0);
4851 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 10, 0, 19);
4852 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 10, 1, -9);
4853 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 10, 5, -9);
4854 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 10, 9, -9);
4855 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 10, 10, -9);
4856 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 10, 11, -9);
4857 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 19, 0, 19);
4858 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 19, 1, -18);
4859 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 19, 2, -18);
4860 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 20, 0, 19);
4861 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 20, 1, 19);
4862 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 21, 0, 0);
4863 test(S("abcdefghijklmnopqrst"), 10, 0, S(""), 0, 0, 0);
4864 test(S("abcdefghijklmnopqrst"), 10, 0, S(""), 0, 1, 0);
4865 test(S("abcdefghijklmnopqrst"), 10, 0, S(""), 1, 0, 0);
4866 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 0, 0, 0);
4867 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 0, 1, -1);
4868 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 0, 2, -2);
4869 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 0, 4, -4);
4870 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 0, 5, -5);
4871 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 0, 6, -5);
4872 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 1, 0, 0);
4873 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 1, 1, -1);
4874 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 1, 2, -2);
4880 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 1, 3, -3);
4881 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 1, 4, -4);
4882 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 1, 5, -4);
4883 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 2, 0, 0);
4884 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 2, 1, -1);
4885 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 2, 2, -2);
4886 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 2, 3, -3);
4887 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 2, 4, -3);
4888 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 4, 0, 0);
4889 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 4, 1, -1);
4890 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 4, 2, -1);
4891 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 5, 0, 0);
4892 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 5, 1, 0);
4893 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 6, 0, 0);
4894 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 0, 0, 0);
4895 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 0, 1, -1);
4896 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 0, 5, -5);
4897 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 0, 9, -9);
4898 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 0, 10, -10);
4899 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 0, 11, -10);
4900 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 1, 0, 0);
4901 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 1, 1, -1);
4902 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 1, 4, -4);
4903 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 1, 8, -8);
4904 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 1, 9, -9);
4905 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 1, 10, -9);
4906 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 5, 0, 0);
4907 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 5, 1, -1);
4908 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 5, 2, -2);
4909 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 5, 4, -4);
4910 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 5, 5, -5);
4911 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 5, 6, -5);
4912 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 9, 0, 0);
4913 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 9, 1, -1);
4914 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 9, 2, -1);
4915 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 10, 0, 0);
4916 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 10, 1, 0);
4917 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 11, 0, 0);
4918 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
4919 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 0, 1, -1);
4920 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 0, 10, -10);
4921 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 0, 19, -19);
4922 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 0, 20, -20);
4923 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 0, 21, -20);
4924 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
4925 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 1, 1, -1);
4926 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 1, 9, -9);
4927 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 1, 18, -18);
4928 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 1, 19, -19);
4929 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 1, 20, -19);
4930 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
4931 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 10, 1, -1);
4932 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 10, 5, -5);
4933 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 10, 9, -9);
4934 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 10, 10, -10);
4935 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 10, 11, -10);
4936 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
4937 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 19, 1, -1);
4938 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 19, 2, -1);
4939 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
4940 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
4941 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
4942 test(S("abcdefghijklmnopqrst"), 10, 1, S(""), 0, 0, 1);
4943 test(S("abcdefghijklmnopqrst"), 10, 1, S(""), 0, 1, 1);
4944 test(S("abcdefghijklmnopqrst"), 10, 1, S(""), 1, 0, 0);
4945 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 0, 0, 1);
4946 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 0, 1, 10);
4947 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 0, 2, 10);
4948 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 0, 4, 10);
4949 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 0, 5, 10);
4950 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 0, 6, 10);
4951 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 1, 0, 1);
4952 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 1, 1, 9);
4953 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 1, 2, 9);
4954 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 1, 3, 9);
4955 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 1, 4, 9);
4956 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 1, 5, 9);
4957 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 2, 0, 1);
4958 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 2, 1, 8);
4959 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 2, 2, 8);
4960 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 2, 3, 8);
4961 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 2, 4, 8);
4962 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 4, 0, 1);
4963 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 4, 1, 6);
4964 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 4, 2, 6);
4965 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 5, 0, 1);
4966 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 5, 1, 1);
4967 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 6, 0, 0);
4968 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 0, 0, 1);
4969 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 0, 1, 10);
4970 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 0, 5, 10);
4971 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 0, 9, 10);
4972 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 0, 10, 10);
4973 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 0, 11, 10);
4974 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 1, 0, 1);
4975 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 1, 1, 9);
4976 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 1, 4, 9);
4977 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 1, 8, 9);
4978 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 1, 9, 9);
4979 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 1, 10, 9);
4985 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 5, 0, 1);
4986 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 5, 1, 5);
4987 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 5, 2, 5);
4988 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 5, 4, 5);
4989 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 5, 5, 5);
4990 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 5, 6, 5);
4991 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 9, 0, 1);
4992 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 9, 1, 1);
4993 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 9, 2, 1);
4994 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 10, 0, 1);
4995 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 10, 1, 1);
4996 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 11, 0, 0);
4997 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 0, 0, 1);
4998 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 0, 1, 10);
4999 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 0, 10, 10);
5000 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 0, 19, 10);
5001 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 0, 20, 10);
5002 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 0, 21, 10);
5003 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 1, 0, 1);
5004 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 1, 1, 9);
5005 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 1, 9, 9);
5006 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 1, 18, 9);
5007 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 1, 19, 9);
5008 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 1, 20, 9);
5009 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 10, 0, 1);
5010 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 10, 1, 0);
5011 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 10, 5, -4);
5012 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 10, 9, -8);
5013 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 10, 10, -9);
5014 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 10, 11, -9);
5015 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 19, 0, 1);
5016 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 19, 1, -9);
5017 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 19, 2, -9);
5018 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 20, 0, 1);
5019 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 20, 1, 1);
5020 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 21, 0, 0);
5021 test(S("abcdefghijklmnopqrst"), 10, 5, S(""), 0, 0, 5);
5022 test(S("abcdefghijklmnopqrst"), 10, 5, S(""), 0, 1, 5);
5023 test(S("abcdefghijklmnopqrst"), 10, 5, S(""), 1, 0, 0);
5024 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 0, 0, 5);
5025 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 0, 1, 10);
5026 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 0, 2, 10);
5027 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 0, 4, 10);
5028 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 0, 5, 10);
5029 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 0, 6, 10);
5030 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 1, 0, 5);
5031 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 1, 1, 9);
5032 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 1, 2, 9);
5033 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 1, 3, 9);
5034 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 1, 4, 9);
5035 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 1, 5, 9);
5036 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 2, 0, 5);
5037 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 2, 1, 8);
5038 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 2, 2, 8);
5039 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 2, 3, 8);
5040 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 2, 4, 8);
5041 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 4, 0, 5);
5042 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 4, 1, 6);
5043 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 4, 2, 6);
5044 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 5, 0, 5);
5045 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 5, 1, 5);
5046 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 6, 0, 0);
5047 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 0, 0, 5);
5048 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 0, 1, 10);
5049 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 0, 5, 10);
5050 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 0, 9, 10);
5051 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 0, 10, 10);
5052 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 0, 11, 10);
5053 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 1, 0, 5);
5054 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 1, 1, 9);
5055 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 1, 4, 9);
5056 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 1, 8, 9);
5057 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 1, 9, 9);
5058 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 1, 10, 9);
5059 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 5, 0, 5);
5060 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 5, 1, 5);
5061 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 5, 2, 5);
5062 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 5, 4, 5);
5063 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 5, 5, 5);
5064 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 5, 6, 5);
5065 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 9, 0, 5);
5066 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 9, 1, 1);
5067 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 9, 2, 1);
5068 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 10, 0, 5);
5069 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 10, 1, 5);
5070 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 11, 0, 0);
5071 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 0, 0, 5);
5072 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 0, 1, 10);
5073 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 0, 10, 10);
5074 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 0, 19, 10);
5075 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 0, 20, 10);
5076 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 0, 21, 10);
5077 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 1, 0, 5);
5078 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 1, 1, 9);
5079 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 1, 9, 9);
5080 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 1, 18, 9);
5081 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 1, 19, 9);
5082 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 1, 20, 9);
5083 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 10, 0, 5);
5084 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 10, 1, 4);
5090 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 10, 5, 0);
5091 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 10, 9, -4);
5092 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 10, 10, -5);
5093 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 10, 11, -5);
5094 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 19, 0, 5);
5095 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 19, 1, -9);
5096 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 19, 2, -9);
5097 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 20, 0, 5);
5098 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 20, 1, 5);
5099 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 21, 0, 0);
5100 test(S("abcdefghijklmnopqrst"), 10, 9, S(""), 0, 0, 9);
5101 test(S("abcdefghijklmnopqrst"), 10, 9, S(""), 0, 1, 9);
5102 test(S("abcdefghijklmnopqrst"), 10, 9, S(""), 1, 0, 0);
5103 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 0, 0, 9);
5104 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 0, 1, 10);
5105 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 0, 2, 10);
5106 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 0, 4, 10);
5107 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 0, 5, 10);
5108 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 0, 6, 10);
5109 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 1, 0, 9);
5110 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 1, 1, 9);
5111 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 1, 2, 9);
5112 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 1, 3, 9);
5113 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 1, 4, 9);
5114 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 1, 5, 9);
5115 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 2, 0, 9);
5116 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 2, 1, 8);
5117 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 2, 2, 8);
5118 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 2, 3, 8);
5119 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 2, 4, 8);
5120 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 4, 0, 9);
5121 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 4, 1, 6);
5122 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 4, 2, 6);
5123 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 5, 0, 9);
5124 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 5, 1, 9);
5125 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 6, 0, 0);
5126 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 0, 0, 9);
5127 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 0, 1, 10);
5128 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 0, 5, 10);
5129 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 0, 9, 10);
5130 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 0, 10, 10);
5131 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 0, 11, 10);
5132 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 1, 0, 9);
5133 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 1, 1, 9);
5134 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 1, 4, 9);
5135 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 1, 8, 9);
5136 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 1, 9, 9);
5137 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 1, 10, 9);
5138 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 5, 0, 9);
5139 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 5, 1, 5);
5140 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 5, 2, 5);
5141 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 5, 4, 5);
5142 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 5, 5, 5);
5143 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 5, 6, 5);
5144 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 9, 0, 9);
5145 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 9, 1, 1);
5146 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 9, 2, 1);
5147 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 10, 0, 9);
5148 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 10, 1, 9);
5149 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 11, 0, 0);
5150 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 0, 0, 9);
5151 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 0, 1, 10);
5152 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 0, 10, 10);
5153 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 0, 19, 10);
5154 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 0, 20, 10);
5155 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 0, 21, 10);
5156 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 1, 0, 9);
5157 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 1, 1, 9);
5158 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 1, 9, 9);
5159 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 1, 18, 9);
5160 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 1, 19, 9);
5161 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 1, 20, 9);
5162 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 10, 0, 9);
5163 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 10, 1, 8);
5164 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 10, 5, 4);
5165 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 10, 9, 0);
5166 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 10, 10, -1);
5167 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 10, 11, -1);
5168 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 19, 0, 9);
5169 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 19, 1, -9);
5170 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 19, 2, -9);
5171 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 20, 0, 9);
5172 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 20, 1, 9);
5173 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 21, 0, 0);
5174 test(S("abcdefghijklmnopqrst"), 10, 10, S(""), 0, 0, 10);
5175 test(S("abcdefghijklmnopqrst"), 10, 10, S(""), 0, 1, 10);
5176 test(S("abcdefghijklmnopqrst"), 10, 10, S(""), 1, 0, 0);
5177 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 0, 0, 10);
5178 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 0, 1, 10);
5179 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 0, 2, 10);
5180 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 0, 4, 10);
5181 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 0, 5, 10);
5182 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 0, 6, 10);
5183 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 1, 0, 10);
5184 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 1, 1, 9);
5185 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 1, 2, 9);
5186 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 1, 3, 9);
5187 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 1, 4, 9);
5188 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 1, 5, 9);
5189 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 2, 0, 10);
5195 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 2, 1, 8);
5196 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 2, 2, 8);
5197 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 2, 3, 8);
5198 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 2, 4, 8);
5199 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 4, 0, 10);
5200 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 4, 1, 6);
5201 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 4, 2, 6);
5202 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 5, 0, 10);
5203 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 5, 1, 10);
5204 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 6, 0, 0);
5205 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 0, 0, 10);
5206 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 0, 1, 10);
5207 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 0, 5, 10);
5208 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 0, 9, 10);
5209 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 0, 10, 10);
5210 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 0, 11, 10);
5211 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 1, 0, 10);
5212 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 1, 1, 9);
5213 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 1, 4, 9);
5214 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 1, 8, 9);
5215 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 1, 9, 9);
5216 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 1, 10, 9);
5217 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 5, 0, 10);
5218 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 5, 1, 5);
5219 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 5, 2, 5);
5220 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 5, 4, 5);
5221 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 5, 5, 5);
5222 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 5, 6, 5);
5223 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 9, 0, 10);
5224 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 9, 1, 1);
5225 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 9, 2, 1);
5226 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 10, 0, 10);
5227 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 10, 1, 10);
5228 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 11, 0, 0);
5229 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 0, 0, 10);
5230 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 0, 1, 10);
5231 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 0, 10, 10);
5232 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 0, 19, 10);
5233 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 0, 20, 10);
5234 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 0, 21, 10);
5235 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 1, 0, 10);
5236 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 1, 1, 9);
5237 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 1, 9, 9);
5238 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 1, 18, 9);
5239 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 1, 19, 9);
5240 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 1, 20, 9);
5241 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 10, 0, 10);
5242 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 10, 1, 9);
5243 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 10, 5, 5);
5244 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 10, 9, 1);
5245 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 10, 10, 0);
5246 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 10, 11, 0);
5247 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 19, 0, 10);
5248 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 19, 1, -9);
5249 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 19, 2, -9);
5250 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 20, 0, 10);
5251 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 20, 1, 10);
5252 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 21, 0, 0);
5253 test(S("abcdefghijklmnopqrst"), 10, 11, S(""), 0, 0, 10);
5254 test(S("abcdefghijklmnopqrst"), 10, 11, S(""), 0, 1, 10);
5255 test(S("abcdefghijklmnopqrst"), 10, 11, S(""), 1, 0, 0);
5256 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 0, 0, 10);
5257 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 0, 1, 10);
5258 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 0, 2, 10);
5259 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 0, 4, 10);
5260 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 0, 5, 10);
5261 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 0, 6, 10);
5262 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 1, 0, 10);
5263 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 1, 1, 9);
5264 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 1, 2, 9);
5265 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 1, 3, 9);
5266 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 1, 4, 9);
5267 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 1, 5, 9);
5268 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 2, 0, 10);
5269 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 2, 1, 8);
5270 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 2, 2, 8);
5271 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 2, 3, 8);
5272 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 2, 4, 8);
5273 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 4, 0, 10);
5274 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 4, 1, 6);
5275 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 4, 2, 6);
5276 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 5, 0, 10);
5277 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 5, 1, 10);
5278 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 6, 0, 0);
5279 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 0, 0, 10);
5280 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 0, 1, 10);
5281 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 0, 5, 10);
5282 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 0, 9, 10);
5283 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 0, 10, 10);
5284 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 0, 11, 10);
5285 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 1, 0, 10);
5286 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 1, 1, 9);
5287 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 1, 4, 9);
5288 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 1, 8, 9);
5289 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 1, 9, 9);
5290 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 1, 10, 9);
5291 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 5, 0, 10);
5292 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 5, 1, 5);
5293 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 5, 2, 5);
5294 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 5, 4, 5);
5300 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 5, 5, 5);
5301 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 5, 6, 5);
5302 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 9, 0, 10);
5303 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 9, 1, 1);
5304 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 9, 2, 1);
5305 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 10, 0, 10);
5306 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 10, 1, 10);
5307 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 11, 0, 0);
5308 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 0, 0, 10);
5309 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 0, 1, 10);
5310 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 0, 10, 10);
5311 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 0, 19, 10);
5312 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 0, 20, 10);
5313 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 0, 21, 10);
5314 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 1, 0, 10);
5315 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 1, 1, 9);
5316 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 1, 9, 9);
5317 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 1, 18, 9);
5318 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 1, 19, 9);
5319 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 1, 20, 9);
5320 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 10, 0, 10);
5321 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 10, 1, 9);
5322 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 10, 5, 5);
5323 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 10, 9, 1);
5324 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 10, 10, 0);
5325 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 10, 11, 0);
5326 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 19, 0, 10);
5327 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 19, 1, -9);
5328 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 19, 2, -9);
5329 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 20, 0, 10);
5330 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 20, 1, 10);
5331 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 21, 0, 0);
5332 test(S("abcdefghijklmnopqrst"), 19, 0, S(""), 0, 0, 0);
5333 test(S("abcdefghijklmnopqrst"), 19, 0, S(""), 0, 1, 0);
5334 test(S("abcdefghijklmnopqrst"), 19, 0, S(""), 1, 0, 0);
5335 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 0, 0, 0);
5336 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 0, 1, -1);
5337 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 0, 2, -2);
5338 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 0, 4, -4);
5339 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 0, 5, -5);
5340 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 0, 6, -5);
5341 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 1, 0, 0);
5342 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 1, 1, -1);
5343 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 1, 2, -2);
5344 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 1, 3, -3);
5345 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 1, 4, -4);
5346 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 1, 5, -4);
5347 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 2, 0, 0);
5348 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 2, 1, -1);
5349 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 2, 2, -2);
5350 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 2, 3, -3);
5351 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 2, 4, -3);
5352 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 4, 0, 0);
5353 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 4, 1, -1);
5354 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 4, 2, -1);
5355 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 5, 0, 0);
5356 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 5, 1, 0);
5357 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 6, 0, 0);
5358 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 0, 0, 0);
5359 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 0, 1, -1);
5360 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 0, 5, -5);
5361 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 0, 9, -9);
5362 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 0, 10, -10);
5363 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 0, 11, -10);
5364 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 1, 0, 0);
5365 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 1, 1, -1);
5366 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 1, 4, -4);
5367 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 1, 8, -8);
5368 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 1, 9, -9);
5369 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 1, 10, -9);
5370 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 5, 0, 0);
5371 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 5, 1, -1);
5372 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 5, 2, -2);
5373 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 5, 4, -4);
5374 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 5, 5, -5);
5375 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 5, 6, -5);
5376 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 9, 0, 0);
5377 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 9, 1, -1);
5378 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 9, 2, -1);
5379 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 10, 0, 0);
5380 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 10, 1, 0);
5381 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 11, 0, 0);
5382 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
5383 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 0, 1, -1);
5384 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 0, 10, -10);
5385 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 0, 19, -19);
5386 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 0, 20, -20);
5387 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 0, 21, -20);
5388 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
5389 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 1, 1, -1);
5390 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 1, 9, -9);
5391 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 1, 18, -18);
5392 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 1, 19, -19);
5393 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 1, 20, -19);
5394 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
5395 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 10, 1, -1);
5396 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 10, 5, -5);
5397 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 10, 9, -9);
5398 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 10, 10, -10);
5399 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 10, 11, -10);
5405 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
5406 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 19, 1, -1);
5407 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 19, 2, -1);
5408 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
5409 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
5410 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
5411 test(S("abcdefghijklmnopqrst"), 19, 1, S(""), 0, 0, 1);
5412 test(S("abcdefghijklmnopqrst"), 19, 1, S(""), 0, 1, 1);
5413 test(S("abcdefghijklmnopqrst"), 19, 1, S(""), 1, 0, 0);
5414 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 0, 0, 1);
5415 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 0, 1, 19);
5416 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 0, 2, 19);
5417 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 0, 4, 19);
5418 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 0, 5, 19);
5419 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 0, 6, 19);
5420 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 1, 0, 1);
5421 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 1, 1, 18);
5422 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 1, 2, 18);
5423 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 1, 3, 18);
5424 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 1, 4, 18);
5425 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 1, 5, 18);
5426 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 2, 0, 1);
5427 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 2, 1, 17);
5428 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 2, 2, 17);
5429 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 2, 3, 17);
5430 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 2, 4, 17);
5431 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 4, 0, 1);
5432 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 4, 1, 15);
5433 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 4, 2, 15);
5434 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 5, 0, 1);
5435 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 5, 1, 1);
5436 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 6, 0, 0);
5437 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 0, 0, 1);
5438 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 0, 1, 19);
5439 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 0, 5, 19);
5440 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 0, 9, 19);
5441 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 0, 10, 19);
5442 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 0, 11, 19);
5443 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 1, 0, 1);
5444 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 1, 1, 18);
5445 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 1, 4, 18);
5446 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 1, 8, 18);
5447 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 1, 9, 18);
5448 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 1, 10, 18);
5449 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 5, 0, 1);
5450 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 5, 1, 14);
5451 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 5, 2, 14);
5452 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 5, 4, 14);
5453 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 5, 5, 14);
5454 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 5, 6, 14);
5455 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 9, 0, 1);
5456 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 9, 1, 10);
5457 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 9, 2, 10);
5458 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 10, 0, 1);
5459 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 10, 1, 1);
5460 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 11, 0, 0);
5461 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 0, 0, 1);
5462 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 0, 1, 19);
5463 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 0, 10, 19);
5464 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 0, 19, 19);
5465 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 0, 20, 19);
5466 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 0, 21, 19);
5467 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 1, 0, 1);
5468 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 1, 1, 18);
5469 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 1, 9, 18);
5470 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 1, 18, 18);
5471 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 1, 19, 18);
5472 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 1, 20, 18);
5473 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 10, 0, 1);
5474 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 10, 1, 9);
5475 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 10, 5, 9);
5476 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 10, 9, 9);
5477 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 10, 10, 9);
5478 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 10, 11, 9);
5479 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 19, 0, 1);
5480 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 19, 1, 0);
5481 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 19, 2, 0);
5482 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 20, 0, 1);
5483 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 20, 1, 1);
5484 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 21, 0, 0);
5485 test(S("abcdefghijklmnopqrst"), 19, 2, S(""), 0, 0, 1);
5486 test(S("abcdefghijklmnopqrst"), 19, 2, S(""), 0, 1, 1);
5487 test(S("abcdefghijklmnopqrst"), 19, 2, S(""), 1, 0, 0);
5488 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 0, 0, 1);
5489 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 0, 1, 19);
5490 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 0, 2, 19);
5491 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 0, 4, 19);
5492 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 0, 5, 19);
5493 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 0, 6, 19);
5494 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 1, 0, 1);
5495 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 1, 1, 18);
5496 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 1, 2, 18);
5497 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 1, 3, 18);
5498 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 1, 4, 18);
5499 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 1, 5, 18);
5500 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 2, 0, 1);
5501 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 2, 1, 17);
5502 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 2, 2, 17);
5503 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 2, 3, 17);
5504 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 2, 4, 17);
5510 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 4, 0, 1);
5511 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 4, 1, 15);
5512 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 4, 2, 15);
5513 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 5, 0, 1);
5514 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 5, 1, 1);
5515 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 6, 0, 0);
5516 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 0, 0, 1);
5517 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 0, 1, 19);
5518 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 0, 5, 19);
5519 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 0, 9, 19);
5520 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 0, 10, 19);
5521 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 0, 11, 19);
5522 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 1, 0, 1);
5523 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 1, 1, 18);
5524 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 1, 4, 18);
5525 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 1, 8, 18);
5526 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 1, 9, 18);
5527 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 1, 10, 18);
5528 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 5, 0, 1);
5529 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 5, 1, 14);
5530 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 5, 2, 14);
5531 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 5, 4, 14);
5532 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 5, 5, 14);
5533 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 5, 6, 14);
5534 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 9, 0, 1);
5535 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 9, 1, 10);
5536 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 9, 2, 10);
5537 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 10, 0, 1);
5538 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 10, 1, 1);
5539 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 11, 0, 0);
5540 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 0, 0, 1);
5541 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 0, 1, 19);
5542 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 0, 10, 19);
5543 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 0, 19, 19);
5544 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 0, 20, 19);
5545 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 0, 21, 19);
5546 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 1, 0, 1);
5547 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 1, 1, 18);
5548 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 1, 9, 18);
5549 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 1, 18, 18);
5550 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 1, 19, 18);
5551 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 1, 20, 18);
5552 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 10, 0, 1);
5553 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 10, 1, 9);
5554 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 10, 5, 9);
5555 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 10, 9, 9);
5556 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 10, 10, 9);
5557 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 10, 11, 9);
5558 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 19, 0, 1);
5559 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 19, 1, 0);
5560 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 19, 2, 0);
5561 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 20, 0, 1);
5562 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 20, 1, 1);
5563 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 21, 0, 0);
5564 test(S("abcdefghijklmnopqrst"), 20, 0, S(""), 0, 0, 0);
5565 test(S("abcdefghijklmnopqrst"), 20, 0, S(""), 0, 1, 0);
5566 test(S("abcdefghijklmnopqrst"), 20, 0, S(""), 1, 0, 0);
5567 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 0, 0, 0);
5568 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 0, 1, -1);
5569 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 0, 2, -2);
5570 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 0, 4, -4);
5571 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 0, 5, -5);
5572 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 0, 6, -5);
5573 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 1, 0, 0);
5574 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 1, 1, -1);
5575 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 1, 2, -2);
5576 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 1, 3, -3);
5577 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 1, 4, -4);
5578 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 1, 5, -4);
5579 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 2, 0, 0);
5580 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 2, 1, -1);
5581 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 2, 2, -2);
5582 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 2, 3, -3);
5583 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 2, 4, -3);
5584 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 4, 0, 0);
5585 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 4, 1, -1);
5586 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 4, 2, -1);
5587 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 5, 0, 0);
5588 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 5, 1, 0);
5589 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 6, 0, 0);
5590 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 0, 0, 0);
5591 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 0, 1, -1);
5592 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 0, 5, -5);
5593 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 0, 9, -9);
5594 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 0, 10, -10);
5595 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 0, 11, -10);
5596 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 1, 0, 0);
5597 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 1, 1, -1);
5598 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 1, 4, -4);
5599 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 1, 8, -8);
5600 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 1, 9, -9);
5601 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 1, 10, -9);
5602 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 5, 0, 0);
5603 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 5, 1, -1);
5604 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 5, 2, -2);
5605 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 5, 4, -4);
5606 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 5, 5, -5);
5607 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 5, 6, -5);
5608 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 9, 0, 0);
5609 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 9, 1, -1);
5615 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 9, 2, -1);
5616 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 10, 0, 0);
5617 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 10, 1, 0);
5618 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 11, 0, 0);
5619 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
5620 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 0, 1, -1);
5621 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 0, 10, -10);
5622 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 0, 19, -19);
5623 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 0, 20, -20);
5624 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 0, 21, -20);
5625 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
5626 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 1, 1, -1);
5627 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 1, 9, -9);
5628 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 1, 18, -18);
5629 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 1, 19, -19);
5630 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 1, 20, -19);
5631 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
5632 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 10, 1, -1);
5633 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 10, 5, -5);
5634 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 10, 9, -9);
5635 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 10, 10, -10);
5636 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 10, 11, -10);
5637 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
5638 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 19, 1, -1);
5639 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 19, 2, -1);
5640 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
5641 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
5642 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
5643 test(S("abcdefghijklmnopqrst"), 20, 1, S(""), 0, 0, 0);
5644 test(S("abcdefghijklmnopqrst"), 20, 1, S(""), 0, 1, 0);
5645 test(S("abcdefghijklmnopqrst"), 20, 1, S(""), 1, 0, 0);
5646 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 0, 0, 0);
5647 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 0, 1, -1);
5648 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 0, 2, -2);
5649 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 0, 4, -4);
5650 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 0, 5, -5);
5651 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 0, 6, -5);
5652 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 1, 0, 0);
5653 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 1, 1, -1);
5654 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 1, 2, -2);
5655 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 1, 3, -3);
5656 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 1, 4, -4);
5657 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 1, 5, -4);
5658 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 2, 0, 0);
5659 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 2, 1, -1);
5660 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 2, 2, -2);
5661 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 2, 3, -3);
5662 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 2, 4, -3);
5663 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 4, 0, 0);
5664 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 4, 1, -1);
5665 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 4, 2, -1);
5666 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 5, 0, 0);
5667 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 5, 1, 0);
5668 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 6, 0, 0);
5669 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 0, 0, 0);
5670 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 0, 1, -1);
5671 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 0, 5, -5);
5672 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 0, 9, -9);
5673 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 0, 10, -10);
5674 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 0, 11, -10);
5675 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 1, 0, 0);
5676 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 1, 1, -1);
5677 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 1, 4, -4);
5678 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 1, 8, -8);
5679 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 1, 9, -9);
5680 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 1, 10, -9);
5681 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 5, 0, 0);
5682 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 5, 1, -1);
5683 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 5, 2, -2);
5684 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 5, 4, -4);
5685 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 5, 5, -5);
5686 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 5, 6, -5);
5687 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 9, 0, 0);
5688 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 9, 1, -1);
5689 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 9, 2, -1);
5690 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 10, 0, 0);
5691 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 10, 1, 0);
5692 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 11, 0, 0);
5693 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 0, 0, 0);
5694 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 0, 1, -1);
5695 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 0, 10, -10);
5696 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 0, 19, -19);
5697 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 0, 20, -20);
5698 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 0, 21, -20);
5699 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 1, 0, 0);
5700 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 1, 1, -1);
5701 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 1, 9, -9);
5702 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 1, 18, -18);
5703 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 1, 19, -19);
5704 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 1, 20, -19);
5705 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 10, 0, 0);
5706 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 10, 1, -1);
5707 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 10, 5, -5);
5708 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 10, 9, -9);
5709 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 10, 10, -10);
5710 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 10, 11, -10);
5711 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 19, 0, 0);
5712 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 19, 1, -1);
5713 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 19, 2, -1);
5714 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 20, 0, 0);
5720 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 20, 1, 0);
5721 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 21, 0, 0);
5722 test(S("abcdefghijklmnopqrst"), 21, 0, S(""), 0, 0, 0);
5723 test(S("abcdefghijklmnopqrst"), 21, 0, S(""), 0, 1, 0);
5724 test(S("abcdefghijklmnopqrst"), 21, 0, S(""), 1, 0, 0);
5725 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 0, 0, 0);
5726 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 0, 1, 0);
5727 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 0, 2, 0);
5728 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 0, 4, 0);
5729 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 0, 5, 0);
5730 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 0, 6, 0);
5731 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 1, 0, 0);
5732 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 1, 1, 0);
5733 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 1, 2, 0);
5734 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 1, 3, 0);
5735 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 1, 4, 0);
5736 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 1, 5, 0);
5737 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 2, 0, 0);
5738 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 2, 1, 0);
5739 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 2, 2, 0);
5740 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 2, 3, 0);
5741 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 2, 4, 0);
5742 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 4, 0, 0);
5743 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 4, 1, 0);
5744 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 4, 2, 0);
5745 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 5, 0, 0);
5746 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 5, 1, 0);
5747 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 6, 0, 0);
5748 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 0, 0, 0);
5749 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 0, 1, 0);
5750 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 0, 5, 0);
5751 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 0, 9, 0);
5752 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 0, 10, 0);
5753 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 0, 11, 0);
5754 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 1, 0, 0);
5755 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 1, 1, 0);
5756 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 1, 4, 0);
5757 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 1, 8, 0);
5758 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 1, 9, 0);
5759 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 1, 10, 0);
5760 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 5, 0, 0);
5761 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 5, 1, 0);
5762 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 5, 2, 0);
5763 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 5, 4, 0);
5764 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 5, 5, 0);
5765 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 5, 6, 0);
5766 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 9, 0, 0);
5767 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 9, 1, 0);
5768 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 9, 2, 0);
5769 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 10, 0, 0);
5770 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 10, 1, 0);
5771 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 11, 0, 0);
5772 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
5773 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 0, 1, 0);
5774 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 0, 10, 0);
5775 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 0, 19, 0);
5776 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 0, 20, 0);
5777 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 0, 21, 0);
5778 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
5779 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 1, 1, 0);
5780 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 1, 9, 0);
5781 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 1, 18, 0);
5782 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 1, 19, 0);
5783 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 1, 20, 0);
5784 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
5785 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 10, 1, 0);
5786 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 10, 5, 0);
5787 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 10, 9, 0);
5788 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 10, 10, 0);
5789 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 10, 11, 0);
5790 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
5791 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 19, 1, 0);
5792 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 19, 2, 0);
5793 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
5794 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
5795 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
5801 typedef std::string S;
5858 #if __cplusplus >= 201103L
5860 typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;