Lines Matching refs:test

33 test(const S& s, typename S::size_type pos1, typename S::size_type n1,
68 test(S(""), 0, 0, S(""), 0, 0, 0);
69 test(S(""), 0, 0, S(""), 0, 1, 0);
70 test(S(""), 0, 0, S(""), 1, 0, 0);
71 test(S(""), 0, 0, S("abcde"), 0, 0, 0);
72 test(S(""), 0, 0, S("abcde"), 0, 1, -1);
73 test(S(""), 0, 0, S("abcde"), 0, 2, -2);
74 test(S(""), 0, 0, S("abcde"), 0, 4, -4);
75 test(S(""), 0, 0, S("abcde"), 0, 5, -5);
76 test(S(""), 0, 0, S("abcde"), 0, 6, -5);
77 test(S(""), 0, 0, S("abcde"), 1, 0, 0);
78 test(S(""), 0, 0, S("abcde"), 1, 1, -1);
79 test(S(""), 0, 0, S("abcde"), 1, 2, -2);
80 test(S(""), 0, 0, S("abcde"), 1, 3, -3);
81 test(S(""), 0, 0, S("abcde"), 1, 4, -4);
82 test(S(""), 0, 0, S("abcde"), 1, 5, -4);
83 test(S(""), 0, 0, S("abcde"), 2, 0, 0);
84 test(S(""), 0, 0, S("abcde"), 2, 1, -1);
85 test(S(""), 0, 0, S("abcde"), 2, 2, -2);
86 test(S(""), 0, 0, S("abcde"), 2, 3, -3);
87 test(S(""), 0, 0, S("abcde"), 2, 4, -3);
88 test(S(""), 0, 0, S("abcde"), 4, 0, 0);
89 test(S(""), 0, 0, S("abcde"), 4, 1, -1);
90 test(S(""), 0, 0, S("abcde"), 4, 2, -1);
91 test(S(""), 0, 0, S("abcde"), 5, 0, 0);
92 test(S(""), 0, 0, S("abcde"), 5, 1, 0);
93 test(S(""), 0, 0, S("abcde"), 6, 0, 0);
94 test(S(""), 0, 0, S("abcdefghij"), 0, 0, 0);
95 test(S(""), 0, 0, S("abcdefghij"), 0, 1, -1);
96 test(S(""), 0, 0, S("abcdefghij"), 0, 5, -5);
97 test(S(""), 0, 0, S("abcdefghij"), 0, 9, -9);
98 test(S(""), 0, 0, S("abcdefghij"), 0, 10, -10);
99 test(S(""), 0, 0, S("abcdefghij"), 0, 11, -10);
100 test(S(""), 0, 0, S("abcdefghij"), 1, 0, 0);
101 test(S(""), 0, 0, S("abcdefghij"), 1, 1, -1);
102 test(S(""), 0, 0, S("abcdefghij"), 1, 4, -4);
103 test(S(""), 0, 0, S("abcdefghij"), 1, 8, -8);
104 test(S(""), 0, 0, S("abcdefghij"), 1, 9, -9);
105 test(S(""), 0, 0, S("abcdefghij"), 1, 10, -9);
106 test(S(""), 0, 0, S("abcdefghij"), 5, 0, 0);
107 test(S(""), 0, 0, S("abcdefghij"), 5, 1, -1);
108 test(S(""), 0, 0, S("abcdefghij"), 5, 2, -2);
109 test(S(""), 0, 0, S("abcdefghij"), 5, 4, -4);
110 test(S(""), 0, 0, S("abcdefghij"), 5, 5, -5);
111 test(S(""), 0, 0, S("abcdefghij"), 5, 6, -5);
112 test(S(""), 0, 0, S("abcdefghij"), 9, 0, 0);
113 test(S(""), 0, 0, S("abcdefghij"), 9, 1, -1);
114 test(S(""), 0, 0, S("abcdefghij"), 9, 2, -1);
115 test(S(""), 0, 0, S("abcdefghij"), 10, 0, 0);
116 test(S(""), 0, 0, S("abcdefghij"), 10, 1, 0);
117 test(S(""), 0, 0, S("abcdefghij"), 11, 0, 0);
118 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
119 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 0, 1, -1);
120 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 0, 10, -10);
121 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 0, 19, -19);
122 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 0, 20, -20);
123 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 0, 21, -20);
124 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
125 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 1, 1, -1);
126 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 1, 9, -9);
127 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 1, 18, -18);
128 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 1, 19, -19);
129 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 1, 20, -19);
130 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
131 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 10, 1, -1);
132 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 10, 5, -5);
133 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 10, 9, -9);
134 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 10, 10, -10);
135 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 10, 11, -10);
136 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
137 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 19, 1, -1);
138 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 19, 2, -1);
139 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
140 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
141 test(S(""), 0, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
142 test(S(""), 0, 1, S(""), 0, 0, 0);
143 test(S(""), 0, 1, S(""), 0, 1, 0);
144 test(S(""), 0, 1, S(""), 1, 0, 0);
145 test(S(""), 0, 1, S("abcde"), 0, 0, 0);
146 test(S(""), 0, 1, S("abcde"), 0, 1, -1);
147 test(S(""), 0, 1, S("abcde"), 0, 2, -2);
148 test(S(""), 0, 1, S("abcde"), 0, 4, -4);
149 test(S(""), 0, 1, S("abcde"), 0, 5, -5);
150 test(S(""), 0, 1, S("abcde"), 0, 6, -5);
151 test(S(""), 0, 1, S("abcde"), 1, 0, 0);
152 test(S(""), 0, 1, S("abcde"), 1, 1, -1);
153 test(S(""), 0, 1, S("abcde"), 1, 2, -2);
154 test(S(""), 0, 1, S("abcde"), 1, 3, -3);
155 test(S(""), 0, 1, S("abcde"), 1, 4, -4);
156 test(S(""), 0, 1, S("abcde"), 1, 5, -4);
157 test(S(""), 0, 1, S("abcde"), 2, 0, 0);
158 test(S(""), 0, 1, S("abcde"), 2, 1, -1);
159 test(S(""), 0, 1, S("abcde"), 2, 2, -2);
160 test(S(""), 0, 1, S("abcde"), 2, 3, -3);
161 test(S(""), 0, 1, S("abcde"), 2, 4, -3);
162 test(S(""), 0, 1, S("abcde"), 4, 0, 0);
163 test(S(""), 0, 1, S("abcde"), 4, 1, -1);
164 test(S(""), 0, 1, S("abcde"), 4, 2, -1);
165 test(S(""), 0, 1, S("abcde"), 5, 0, 0);
166 test(S(""), 0, 1, S("abcde"), 5, 1, 0);
167 test(S(""), 0, 1, S("abcde"), 6, 0, 0);
173 test(S(""), 0, 1, S("abcdefghij"), 0, 0, 0);
174 test(S(""), 0, 1, S("abcdefghij"), 0, 1, -1);
175 test(S(""), 0, 1, S("abcdefghij"), 0, 5, -5);
176 test(S(""), 0, 1, S("abcdefghij"), 0, 9, -9);
177 test(S(""), 0, 1, S("abcdefghij"), 0, 10, -10);
178 test(S(""), 0, 1, S("abcdefghij"), 0, 11, -10);
179 test(S(""), 0, 1, S("abcdefghij"), 1, 0, 0);
180 test(S(""), 0, 1, S("abcdefghij"), 1, 1, -1);
181 test(S(""), 0, 1, S("abcdefghij"), 1, 4, -4);
182 test(S(""), 0, 1, S("abcdefghij"), 1, 8, -8);
183 test(S(""), 0, 1, S("abcdefghij"), 1, 9, -9);
184 test(S(""), 0, 1, S("abcdefghij"), 1, 10, -9);
185 test(S(""), 0, 1, S("abcdefghij"), 5, 0, 0);
186 test(S(""), 0, 1, S("abcdefghij"), 5, 1, -1);
187 test(S(""), 0, 1, S("abcdefghij"), 5, 2, -2);
188 test(S(""), 0, 1, S("abcdefghij"), 5, 4, -4);
189 test(S(""), 0, 1, S("abcdefghij"), 5, 5, -5);
190 test(S(""), 0, 1, S("abcdefghij"), 5, 6, -5);
191 test(S(""), 0, 1, S("abcdefghij"), 9, 0, 0);
192 test(S(""), 0, 1, S("abcdefghij"), 9, 1, -1);
193 test(S(""), 0, 1, S("abcdefghij"), 9, 2, -1);
194 test(S(""), 0, 1, S("abcdefghij"), 10, 0, 0);
195 test(S(""), 0, 1, S("abcdefghij"), 10, 1, 0);
196 test(S(""), 0, 1, S("abcdefghij"), 11, 0, 0);
197 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 0, 0, 0);
198 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 0, 1, -1);
199 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 0, 10, -10);
200 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 0, 19, -19);
201 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 0, 20, -20);
202 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 0, 21, -20);
203 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 1, 0, 0);
204 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 1, 1, -1);
205 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 1, 9, -9);
206 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 1, 18, -18);
207 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 1, 19, -19);
208 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 1, 20, -19);
209 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 10, 0, 0);
210 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 10, 1, -1);
211 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 10, 5, -5);
212 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 10, 9, -9);
213 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 10, 10, -10);
214 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 10, 11, -10);
215 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 19, 0, 0);
216 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 19, 1, -1);
217 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 19, 2, -1);
218 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 20, 0, 0);
219 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 20, 1, 0);
220 test(S(""), 0, 1, S("abcdefghijklmnopqrst"), 21, 0, 0);
221 test(S(""), 1, 0, S(""), 0, 0, 0);
222 test(S(""), 1, 0, S(""), 0, 1, 0);
223 test(S(""), 1, 0, S(""), 1, 0, 0);
224 test(S(""), 1, 0, S("abcde"), 0, 0, 0);
225 test(S(""), 1, 0, S("abcde"), 0, 1, 0);
226 test(S(""), 1, 0, S("abcde"), 0, 2, 0);
227 test(S(""), 1, 0, S("abcde"), 0, 4, 0);
228 test(S(""), 1, 0, S("abcde"), 0, 5, 0);
229 test(S(""), 1, 0, S("abcde"), 0, 6, 0);
230 test(S(""), 1, 0, S("abcde"), 1, 0, 0);
231 test(S(""), 1, 0, S("abcde"), 1, 1, 0);
232 test(S(""), 1, 0, S("abcde"), 1, 2, 0);
233 test(S(""), 1, 0, S("abcde"), 1, 3, 0);
234 test(S(""), 1, 0, S("abcde"), 1, 4, 0);
235 test(S(""), 1, 0, S("abcde"), 1, 5, 0);
236 test(S(""), 1, 0, S("abcde"), 2, 0, 0);
237 test(S(""), 1, 0, S("abcde"), 2, 1, 0);
238 test(S(""), 1, 0, S("abcde"), 2, 2, 0);
239 test(S(""), 1, 0, S("abcde"), 2, 3, 0);
240 test(S(""), 1, 0, S("abcde"), 2, 4, 0);
241 test(S(""), 1, 0, S("abcde"), 4, 0, 0);
242 test(S(""), 1, 0, S("abcde"), 4, 1, 0);
243 test(S(""), 1, 0, S("abcde"), 4, 2, 0);
244 test(S(""), 1, 0, S("abcde"), 5, 0, 0);
245 test(S(""), 1, 0, S("abcde"), 5, 1, 0);
246 test(S(""), 1, 0, S("abcde"), 6, 0, 0);
247 test(S(""), 1, 0, S("abcdefghij"), 0, 0, 0);
248 test(S(""), 1, 0, S("abcdefghij"), 0, 1, 0);
249 test(S(""), 1, 0, S("abcdefghij"), 0, 5, 0);
250 test(S(""), 1, 0, S("abcdefghij"), 0, 9, 0);
251 test(S(""), 1, 0, S("abcdefghij"), 0, 10, 0);
252 test(S(""), 1, 0, S("abcdefghij"), 0, 11, 0);
253 test(S(""), 1, 0, S("abcdefghij"), 1, 0, 0);
254 test(S(""), 1, 0, S("abcdefghij"), 1, 1, 0);
255 test(S(""), 1, 0, S("abcdefghij"), 1, 4, 0);
256 test(S(""), 1, 0, S("abcdefghij"), 1, 8, 0);
257 test(S(""), 1, 0, S("abcdefghij"), 1, 9, 0);
258 test(S(""), 1, 0, S("abcdefghij"), 1, 10, 0);
259 test(S(""), 1, 0, S("abcdefghij"), 5, 0, 0);
260 test(S(""), 1, 0, S("abcdefghij"), 5, 1, 0);
261 test(S(""), 1, 0, S("abcdefghij"), 5, 2, 0);
262 test(S(""), 1, 0, S("abcdefghij"), 5, 4, 0);
263 test(S(""), 1, 0, S("abcdefghij"), 5, 5, 0);
264 test(S(""), 1, 0, S("abcdefghij"), 5, 6, 0);
265 test(S(""), 1, 0, S("abcdefghij"), 9, 0, 0);
266 test(S(""), 1, 0, S("abcdefghij"), 9, 1, 0);
267 test(S(""), 1, 0, S("abcdefghij"), 9, 2, 0);
268 test(S(""), 1, 0, S("abcdefghij"), 10, 0, 0);
269 test(S(""), 1, 0, S("abcdefghij"), 10, 1, 0);
270 test(S(""), 1, 0, S("abcdefghij"), 11, 0, 0);
271 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
272 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 0, 1, 0);
278 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 0, 10, 0);
279 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 0, 19, 0);
280 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 0, 20, 0);
281 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 0, 21, 0);
282 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
283 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 1, 1, 0);
284 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 1, 9, 0);
285 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 1, 18, 0);
286 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 1, 19, 0);
287 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 1, 20, 0);
288 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
289 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 10, 1, 0);
290 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 10, 5, 0);
291 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 10, 9, 0);
292 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 10, 10, 0);
293 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 10, 11, 0);
294 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
295 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 19, 1, 0);
296 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 19, 2, 0);
297 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
298 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
299 test(S(""), 1, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
300 test(S("abcde"), 0, 0, S(""), 0, 0, 0);
301 test(S("abcde"), 0, 0, S(""), 0, 1, 0);
302 test(S("abcde"), 0, 0, S(""), 1, 0, 0);
303 test(S("abcde"), 0, 0, S("abcde"), 0, 0, 0);
304 test(S("abcde"), 0, 0, S("abcde"), 0, 1, -1);
305 test(S("abcde"), 0, 0, S("abcde"), 0, 2, -2);
306 test(S("abcde"), 0, 0, S("abcde"), 0, 4, -4);
307 test(S("abcde"), 0, 0, S("abcde"), 0, 5, -5);
308 test(S("abcde"), 0, 0, S("abcde"), 0, 6, -5);
309 test(S("abcde"), 0, 0, S("abcde"), 1, 0, 0);
310 test(S("abcde"), 0, 0, S("abcde"), 1, 1, -1);
311 test(S("abcde"), 0, 0, S("abcde"), 1, 2, -2);
312 test(S("abcde"), 0, 0, S("abcde"), 1, 3, -3);
313 test(S("abcde"), 0, 0, S("abcde"), 1, 4, -4);
314 test(S("abcde"), 0, 0, S("abcde"), 1, 5, -4);
315 test(S("abcde"), 0, 0, S("abcde"), 2, 0, 0);
316 test(S("abcde"), 0, 0, S("abcde"), 2, 1, -1);
317 test(S("abcde"), 0, 0, S("abcde"), 2, 2, -2);
318 test(S("abcde"), 0, 0, S("abcde"), 2, 3, -3);
319 test(S("abcde"), 0, 0, S("abcde"), 2, 4, -3);
320 test(S("abcde"), 0, 0, S("abcde"), 4, 0, 0);
321 test(S("abcde"), 0, 0, S("abcde"), 4, 1, -1);
322 test(S("abcde"), 0, 0, S("abcde"), 4, 2, -1);
323 test(S("abcde"), 0, 0, S("abcde"), 5, 0, 0);
324 test(S("abcde"), 0, 0, S("abcde"), 5, 1, 0);
325 test(S("abcde"), 0, 0, S("abcde"), 6, 0, 0);
326 test(S("abcde"), 0, 0, S("abcdefghij"), 0, 0, 0);
327 test(S("abcde"), 0, 0, S("abcdefghij"), 0, 1, -1);
328 test(S("abcde"), 0, 0, S("abcdefghij"), 0, 5, -5);
329 test(S("abcde"), 0, 0, S("abcdefghij"), 0, 9, -9);
330 test(S("abcde"), 0, 0, S("abcdefghij"), 0, 10, -10);
331 test(S("abcde"), 0, 0, S("abcdefghij"), 0, 11, -10);
332 test(S("abcde"), 0, 0, S("abcdefghij"), 1, 0, 0);
333 test(S("abcde"), 0, 0, S("abcdefghij"), 1, 1, -1);
334 test(S("abcde"), 0, 0, S("abcdefghij"), 1, 4, -4);
335 test(S("abcde"), 0, 0, S("abcdefghij"), 1, 8, -8);
336 test(S("abcde"), 0, 0, S("abcdefghij"), 1, 9, -9);
337 test(S("abcde"), 0, 0, S("abcdefghij"), 1, 10, -9);
338 test(S("abcde"), 0, 0, S("abcdefghij"), 5, 0, 0);
339 test(S("abcde"), 0, 0, S("abcdefghij"), 5, 1, -1);
340 test(S("abcde"), 0, 0, S("abcdefghij"), 5, 2, -2);
341 test(S("abcde"), 0, 0, S("abcdefghij"), 5, 4, -4);
342 test(S("abcde"), 0, 0, S("abcdefghij"), 5, 5, -5);
343 test(S("abcde"), 0, 0, S("abcdefghij"), 5, 6, -5);
344 test(S("abcde"), 0, 0, S("abcdefghij"), 9, 0, 0);
345 test(S("abcde"), 0, 0, S("abcdefghij"), 9, 1, -1);
346 test(S("abcde"), 0, 0, S("abcdefghij"), 9, 2, -1);
347 test(S("abcde"), 0, 0, S("abcdefghij"), 10, 0, 0);
348 test(S("abcde"), 0, 0, S("abcdefghij"), 10, 1, 0);
349 test(S("abcde"), 0, 0, S("abcdefghij"), 11, 0, 0);
350 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
351 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 0, 1, -1);
352 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 0, 10, -10);
353 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 0, 19, -19);
354 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 0, 20, -20);
355 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 0, 21, -20);
356 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
357 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 1, 1, -1);
358 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 1, 9, -9);
359 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 1, 18, -18);
360 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 1, 19, -19);
361 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 1, 20, -19);
362 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
363 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 10, 1, -1);
364 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 10, 5, -5);
365 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 10, 9, -9);
366 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 10, 10, -10);
367 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 10, 11, -10);
368 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
369 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 19, 1, -1);
370 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 19, 2, -1);
371 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
372 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
373 test(S("abcde"), 0, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
374 test(S("abcde"), 0, 1, S(""), 0, 0, 1);
375 test(S("abcde"), 0, 1, S(""), 0, 1, 1);
376 test(S("abcde"), 0, 1, S(""), 1, 0, 0);
377 test(S("abcde"), 0, 1, S("abcde"), 0, 0, 1);
383 test(S("abcde"), 0, 1, S("abcde"), 0, 1, 0);
384 test(S("abcde"), 0, 1, S("abcde"), 0, 2, -1);
385 test(S("abcde"), 0, 1, S("abcde"), 0, 4, -3);
386 test(S("abcde"), 0, 1, S("abcde"), 0, 5, -4);
387 test(S("abcde"), 0, 1, S("abcde"), 0, 6, -4);
388 test(S("abcde"), 0, 1, S("abcde"), 1, 0, 1);
389 test(S("abcde"), 0, 1, S("abcde"), 1, 1, -1);
390 test(S("abcde"), 0, 1, S("abcde"), 1, 2, -1);
391 test(S("abcde"), 0, 1, S("abcde"), 1, 3, -1);
392 test(S("abcde"), 0, 1, S("abcde"), 1, 4, -1);
393 test(S("abcde"), 0, 1, S("abcde"), 1, 5, -1);
394 test(S("abcde"), 0, 1, S("abcde"), 2, 0, 1);
395 test(S("abcde"), 0, 1, S("abcde"), 2, 1, -2);
396 test(S("abcde"), 0, 1, S("abcde"), 2, 2, -2);
397 test(S("abcde"), 0, 1, S("abcde"), 2, 3, -2);
398 test(S("abcde"), 0, 1, S("abcde"), 2, 4, -2);
399 test(S("abcde"), 0, 1, S("abcde"), 4, 0, 1);
400 test(S("abcde"), 0, 1, S("abcde"), 4, 1, -4);
401 test(S("abcde"), 0, 1, S("abcde"), 4, 2, -4);
402 test(S("abcde"), 0, 1, S("abcde"), 5, 0, 1);
403 test(S("abcde"), 0, 1, S("abcde"), 5, 1, 1);
404 test(S("abcde"), 0, 1, S("abcde"), 6, 0, 0);
405 test(S("abcde"), 0, 1, S("abcdefghij"), 0, 0, 1);
406 test(S("abcde"), 0, 1, S("abcdefghij"), 0, 1, 0);
407 test(S("abcde"), 0, 1, S("abcdefghij"), 0, 5, -4);
408 test(S("abcde"), 0, 1, S("abcdefghij"), 0, 9, -8);
409 test(S("abcde"), 0, 1, S("abcdefghij"), 0, 10, -9);
410 test(S("abcde"), 0, 1, S("abcdefghij"), 0, 11, -9);
411 test(S("abcde"), 0, 1, S("abcdefghij"), 1, 0, 1);
412 test(S("abcde"), 0, 1, S("abcdefghij"), 1, 1, -1);
413 test(S("abcde"), 0, 1, S("abcdefghij"), 1, 4, -1);
414 test(S("abcde"), 0, 1, S("abcdefghij"), 1, 8, -1);
415 test(S("abcde"), 0, 1, S("abcdefghij"), 1, 9, -1);
416 test(S("abcde"), 0, 1, S("abcdefghij"), 1, 10, -1);
417 test(S("abcde"), 0, 1, S("abcdefghij"), 5, 0, 1);
418 test(S("abcde"), 0, 1, S("abcdefghij"), 5, 1, -5);
419 test(S("abcde"), 0, 1, S("abcdefghij"), 5, 2, -5);
420 test(S("abcde"), 0, 1, S("abcdefghij"), 5, 4, -5);
421 test(S("abcde"), 0, 1, S("abcdefghij"), 5, 5, -5);
422 test(S("abcde"), 0, 1, S("abcdefghij"), 5, 6, -5);
423 test(S("abcde"), 0, 1, S("abcdefghij"), 9, 0, 1);
424 test(S("abcde"), 0, 1, S("abcdefghij"), 9, 1, -9);
425 test(S("abcde"), 0, 1, S("abcdefghij"), 9, 2, -9);
426 test(S("abcde"), 0, 1, S("abcdefghij"), 10, 0, 1);
427 test(S("abcde"), 0, 1, S("abcdefghij"), 10, 1, 1);
428 test(S("abcde"), 0, 1, S("abcdefghij"), 11, 0, 0);
429 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 0, 0, 1);
430 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 0, 1, 0);
431 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 0, 10, -9);
432 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 0, 19, -18);
433 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 0, 20, -19);
434 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 0, 21, -19);
435 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 1, 0, 1);
436 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 1, 1, -1);
437 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 1, 9, -1);
438 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 1, 18, -1);
439 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 1, 19, -1);
440 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 1, 20, -1);
441 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 10, 0, 1);
442 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 10, 1, -10);
443 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 10, 5, -10);
444 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 10, 9, -10);
445 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 10, 10, -10);
446 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 10, 11, -10);
447 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 19, 0, 1);
448 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 19, 1, -19);
449 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 19, 2, -19);
450 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 20, 0, 1);
451 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 20, 1, 1);
452 test(S("abcde"), 0, 1, S("abcdefghijklmnopqrst"), 21, 0, 0);
453 test(S("abcde"), 0, 2, S(""), 0, 0, 2);
454 test(S("abcde"), 0, 2, S(""), 0, 1, 2);
455 test(S("abcde"), 0, 2, S(""), 1, 0, 0);
456 test(S("abcde"), 0, 2, S("abcde"), 0, 0, 2);
457 test(S("abcde"), 0, 2, S("abcde"), 0, 1, 1);
458 test(S("abcde"), 0, 2, S("abcde"), 0, 2, 0);
459 test(S("abcde"), 0, 2, S("abcde"), 0, 4, -2);
460 test(S("abcde"), 0, 2, S("abcde"), 0, 5, -3);
461 test(S("abcde"), 0, 2, S("abcde"), 0, 6, -3);
462 test(S("abcde"), 0, 2, S("abcde"), 1, 0, 2);
463 test(S("abcde"), 0, 2, S("abcde"), 1, 1, -1);
464 test(S("abcde"), 0, 2, S("abcde"), 1, 2, -1);
465 test(S("abcde"), 0, 2, S("abcde"), 1, 3, -1);
466 test(S("abcde"), 0, 2, S("abcde"), 1, 4, -1);
467 test(S("abcde"), 0, 2, S("abcde"), 1, 5, -1);
468 test(S("abcde"), 0, 2, S("abcde"), 2, 0, 2);
469 test(S("abcde"), 0, 2, S("abcde"), 2, 1, -2);
470 test(S("abcde"), 0, 2, S("abcde"), 2, 2, -2);
471 test(S("abcde"), 0, 2, S("abcde"), 2, 3, -2);
472 test(S("abcde"), 0, 2, S("abcde"), 2, 4, -2);
473 test(S("abcde"), 0, 2, S("abcde"), 4, 0, 2);
474 test(S("abcde"), 0, 2, S("abcde"), 4, 1, -4);
475 test(S("abcde"), 0, 2, S("abcde"), 4, 2, -4);
476 test(S("abcde"), 0, 2, S("abcde"), 5, 0, 2);
477 test(S("abcde"), 0, 2, S("abcde"), 5, 1, 2);
478 test(S("abcde"), 0, 2, S("abcde"), 6, 0, 0);
479 test(S("abcde"), 0, 2, S("abcdefghij"), 0, 0, 2);
480 test(S("abcde"), 0, 2, S("abcdefghij"), 0, 1, 1);
481 test(S("abcde"), 0, 2, S("abcdefghij"), 0, 5, -3);
482 test(S("abcde"), 0, 2, S("abcdefghij"), 0, 9, -7);
488 test(S("abcde"), 0, 2, S("abcdefghij"), 0, 10, -8);
489 test(S("abcde"), 0, 2, S("abcdefghij"), 0, 11, -8);
490 test(S("abcde"), 0, 2, S("abcdefghij"), 1, 0, 2);
491 test(S("abcde"), 0, 2, S("abcdefghij"), 1, 1, -1);
492 test(S("abcde"), 0, 2, S("abcdefghij"), 1, 4, -1);
493 test(S("abcde"), 0, 2, S("abcdefghij"), 1, 8, -1);
494 test(S("abcde"), 0, 2, S("abcdefghij"), 1, 9, -1);
495 test(S("abcde"), 0, 2, S("abcdefghij"), 1, 10, -1);
496 test(S("abcde"), 0, 2, S("abcdefghij"), 5, 0, 2);
497 test(S("abcde"), 0, 2, S("abcdefghij"), 5, 1, -5);
498 test(S("abcde"), 0, 2, S("abcdefghij"), 5, 2, -5);
499 test(S("abcde"), 0, 2, S("abcdefghij"), 5, 4, -5);
500 test(S("abcde"), 0, 2, S("abcdefghij"), 5, 5, -5);
501 test(S("abcde"), 0, 2, S("abcdefghij"), 5, 6, -5);
502 test(S("abcde"), 0, 2, S("abcdefghij"), 9, 0, 2);
503 test(S("abcde"), 0, 2, S("abcdefghij"), 9, 1, -9);
504 test(S("abcde"), 0, 2, S("abcdefghij"), 9, 2, -9);
505 test(S("abcde"), 0, 2, S("abcdefghij"), 10, 0, 2);
506 test(S("abcde"), 0, 2, S("abcdefghij"), 10, 1, 2);
507 test(S("abcde"), 0, 2, S("abcdefghij"), 11, 0, 0);
508 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 0, 0, 2);
509 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 0, 1, 1);
510 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 0, 10, -8);
511 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 0, 19, -17);
512 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 0, 20, -18);
513 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 0, 21, -18);
514 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 1, 0, 2);
515 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 1, 1, -1);
516 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 1, 9, -1);
517 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 1, 18, -1);
518 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 1, 19, -1);
519 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 1, 20, -1);
520 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 10, 0, 2);
521 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 10, 1, -10);
522 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 10, 5, -10);
523 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 10, 9, -10);
524 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 10, 10, -10);
525 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 10, 11, -10);
526 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 19, 0, 2);
527 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 19, 1, -19);
528 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 19, 2, -19);
529 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 20, 0, 2);
530 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 20, 1, 2);
531 test(S("abcde"), 0, 2, S("abcdefghijklmnopqrst"), 21, 0, 0);
532 test(S("abcde"), 0, 4, S(""), 0, 0, 4);
533 test(S("abcde"), 0, 4, S(""), 0, 1, 4);
534 test(S("abcde"), 0, 4, S(""), 1, 0, 0);
535 test(S("abcde"), 0, 4, S("abcde"), 0, 0, 4);
536 test(S("abcde"), 0, 4, S("abcde"), 0, 1, 3);
537 test(S("abcde"), 0, 4, S("abcde"), 0, 2, 2);
538 test(S("abcde"), 0, 4, S("abcde"), 0, 4, 0);
539 test(S("abcde"), 0, 4, S("abcde"), 0, 5, -1);
540 test(S("abcde"), 0, 4, S("abcde"), 0, 6, -1);
541 test(S("abcde"), 0, 4, S("abcde"), 1, 0, 4);
542 test(S("abcde"), 0, 4, S("abcde"), 1, 1, -1);
543 test(S("abcde"), 0, 4, S("abcde"), 1, 2, -1);
544 test(S("abcde"), 0, 4, S("abcde"), 1, 3, -1);
545 test(S("abcde"), 0, 4, S("abcde"), 1, 4, -1);
546 test(S("abcde"), 0, 4, S("abcde"), 1, 5, -1);
547 test(S("abcde"), 0, 4, S("abcde"), 2, 0, 4);
548 test(S("abcde"), 0, 4, S("abcde"), 2, 1, -2);
549 test(S("abcde"), 0, 4, S("abcde"), 2, 2, -2);
550 test(S("abcde"), 0, 4, S("abcde"), 2, 3, -2);
551 test(S("abcde"), 0, 4, S("abcde"), 2, 4, -2);
552 test(S("abcde"), 0, 4, S("abcde"), 4, 0, 4);
553 test(S("abcde"), 0, 4, S("abcde"), 4, 1, -4);
554 test(S("abcde"), 0, 4, S("abcde"), 4, 2, -4);
555 test(S("abcde"), 0, 4, S("abcde"), 5, 0, 4);
556 test(S("abcde"), 0, 4, S("abcde"), 5, 1, 4);
557 test(S("abcde"), 0, 4, S("abcde"), 6, 0, 0);
558 test(S("abcde"), 0, 4, S("abcdefghij"), 0, 0, 4);
559 test(S("abcde"), 0, 4, S("abcdefghij"), 0, 1, 3);
560 test(S("abcde"), 0, 4, S("abcdefghij"), 0, 5, -1);
561 test(S("abcde"), 0, 4, S("abcdefghij"), 0, 9, -5);
562 test(S("abcde"), 0, 4, S("abcdefghij"), 0, 10, -6);
563 test(S("abcde"), 0, 4, S("abcdefghij"), 0, 11, -6);
564 test(S("abcde"), 0, 4, S("abcdefghij"), 1, 0, 4);
565 test(S("abcde"), 0, 4, S("abcdefghij"), 1, 1, -1);
566 test(S("abcde"), 0, 4, S("abcdefghij"), 1, 4, -1);
567 test(S("abcde"), 0, 4, S("abcdefghij"), 1, 8, -1);
568 test(S("abcde"), 0, 4, S("abcdefghij"), 1, 9, -1);
569 test(S("abcde"), 0, 4, S("abcdefghij"), 1, 10, -1);
570 test(S("abcde"), 0, 4, S("abcdefghij"), 5, 0, 4);
571 test(S("abcde"), 0, 4, S("abcdefghij"), 5, 1, -5);
572 test(S("abcde"), 0, 4, S("abcdefghij"), 5, 2, -5);
573 test(S("abcde"), 0, 4, S("abcdefghij"), 5, 4, -5);
574 test(S("abcde"), 0, 4, S("abcdefghij"), 5, 5, -5);
575 test(S("abcde"), 0, 4, S("abcdefghij"), 5, 6, -5);
576 test(S("abcde"), 0, 4, S("abcdefghij"), 9, 0, 4);
577 test(S("abcde"), 0, 4, S("abcdefghij"), 9, 1, -9);
578 test(S("abcde"), 0, 4, S("abcdefghij"), 9, 2, -9);
579 test(S("abcde"), 0, 4, S("abcdefghij"), 10, 0, 4);
580 test(S("abcde"), 0, 4, S("abcdefghij"), 10, 1, 4);
581 test(S("abcde"), 0, 4, S("abcdefghij"), 11, 0, 0);
582 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 0, 0, 4);
583 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 0, 1, 3);
584 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 0, 10, -6);
585 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 0, 19, -15);
586 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 0, 20, -16);
587 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 0, 21, -16);
593 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 1, 0, 4);
594 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 1, 1, -1);
595 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 1, 9, -1);
596 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 1, 18, -1);
597 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 1, 19, -1);
598 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 1, 20, -1);
599 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 10, 0, 4);
600 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 10, 1, -10);
601 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 10, 5, -10);
602 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 10, 9, -10);
603 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 10, 10, -10);
604 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 10, 11, -10);
605 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 19, 0, 4);
606 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 19, 1, -19);
607 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 19, 2, -19);
608 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 20, 0, 4);
609 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 20, 1, 4);
610 test(S("abcde"), 0, 4, S("abcdefghijklmnopqrst"), 21, 0, 0);
611 test(S("abcde"), 0, 5, S(""), 0, 0, 5);
612 test(S("abcde"), 0, 5, S(""), 0, 1, 5);
613 test(S("abcde"), 0, 5, S(""), 1, 0, 0);
614 test(S("abcde"), 0, 5, S("abcde"), 0, 0, 5);
615 test(S("abcde"), 0, 5, S("abcde"), 0, 1, 4);
616 test(S("abcde"), 0, 5, S("abcde"), 0, 2, 3);
617 test(S("abcde"), 0, 5, S("abcde"), 0, 4, 1);
618 test(S("abcde"), 0, 5, S("abcde"), 0, 5, 0);
619 test(S("abcde"), 0, 5, S("abcde"), 0, 6, 0);
620 test(S("abcde"), 0, 5, S("abcde"), 1, 0, 5);
621 test(S("abcde"), 0, 5, S("abcde"), 1, 1, -1);
622 test(S("abcde"), 0, 5, S("abcde"), 1, 2, -1);
623 test(S("abcde"), 0, 5, S("abcde"), 1, 3, -1);
624 test(S("abcde"), 0, 5, S("abcde"), 1, 4, -1);
625 test(S("abcde"), 0, 5, S("abcde"), 1, 5, -1);
626 test(S("abcde"), 0, 5, S("abcde"), 2, 0, 5);
627 test(S("abcde"), 0, 5, S("abcde"), 2, 1, -2);
628 test(S("abcde"), 0, 5, S("abcde"), 2, 2, -2);
629 test(S("abcde"), 0, 5, S("abcde"), 2, 3, -2);
630 test(S("abcde"), 0, 5, S("abcde"), 2, 4, -2);
631 test(S("abcde"), 0, 5, S("abcde"), 4, 0, 5);
632 test(S("abcde"), 0, 5, S("abcde"), 4, 1, -4);
633 test(S("abcde"), 0, 5, S("abcde"), 4, 2, -4);
634 test(S("abcde"), 0, 5, S("abcde"), 5, 0, 5);
635 test(S("abcde"), 0, 5, S("abcde"), 5, 1, 5);
636 test(S("abcde"), 0, 5, S("abcde"), 6, 0, 0);
637 test(S("abcde"), 0, 5, S("abcdefghij"), 0, 0, 5);
638 test(S("abcde"), 0, 5, S("abcdefghij"), 0, 1, 4);
639 test(S("abcde"), 0, 5, S("abcdefghij"), 0, 5, 0);
640 test(S("abcde"), 0, 5, S("abcdefghij"), 0, 9, -4);
641 test(S("abcde"), 0, 5, S("abcdefghij"), 0, 10, -5);
642 test(S("abcde"), 0, 5, S("abcdefghij"), 0, 11, -5);
643 test(S("abcde"), 0, 5, S("abcdefghij"), 1, 0, 5);
644 test(S("abcde"), 0, 5, S("abcdefghij"), 1, 1, -1);
645 test(S("abcde"), 0, 5, S("abcdefghij"), 1, 4, -1);
646 test(S("abcde"), 0, 5, S("abcdefghij"), 1, 8, -1);
647 test(S("abcde"), 0, 5, S("abcdefghij"), 1, 9, -1);
648 test(S("abcde"), 0, 5, S("abcdefghij"), 1, 10, -1);
649 test(S("abcde"), 0, 5, S("abcdefghij"), 5, 0, 5);
650 test(S("abcde"), 0, 5, S("abcdefghij"), 5, 1, -5);
651 test(S("abcde"), 0, 5, S("abcdefghij"), 5, 2, -5);
652 test(S("abcde"), 0, 5, S("abcdefghij"), 5, 4, -5);
653 test(S("abcde"), 0, 5, S("abcdefghij"), 5, 5, -5);
654 test(S("abcde"), 0, 5, S("abcdefghij"), 5, 6, -5);
655 test(S("abcde"), 0, 5, S("abcdefghij"), 9, 0, 5);
656 test(S("abcde"), 0, 5, S("abcdefghij"), 9, 1, -9);
657 test(S("abcde"), 0, 5, S("abcdefghij"), 9, 2, -9);
658 test(S("abcde"), 0, 5, S("abcdefghij"), 10, 0, 5);
659 test(S("abcde"), 0, 5, S("abcdefghij"), 10, 1, 5);
660 test(S("abcde"), 0, 5, S("abcdefghij"), 11, 0, 0);
661 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 0, 0, 5);
662 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 0, 1, 4);
663 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 0, 10, -5);
664 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 0, 19, -14);
665 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 0, 20, -15);
666 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 0, 21, -15);
667 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 1, 0, 5);
668 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 1, 1, -1);
669 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 1, 9, -1);
670 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 1, 18, -1);
671 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 1, 19, -1);
672 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 1, 20, -1);
673 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 10, 0, 5);
674 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 10, 1, -10);
675 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 10, 5, -10);
676 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 10, 9, -10);
677 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 10, 10, -10);
678 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 10, 11, -10);
679 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 19, 0, 5);
680 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 19, 1, -19);
681 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 19, 2, -19);
682 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 20, 0, 5);
683 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 20, 1, 5);
684 test(S("abcde"), 0, 5, S("abcdefghijklmnopqrst"), 21, 0, 0);
685 test(S("abcde"), 0, 6, S(""), 0, 0, 5);
686 test(S("abcde"), 0, 6, S(""), 0, 1, 5);
687 test(S("abcde"), 0, 6, S(""), 1, 0, 0);
688 test(S("abcde"), 0, 6, S("abcde"), 0, 0, 5);
689 test(S("abcde"), 0, 6, S("abcde"), 0, 1, 4);
690 test(S("abcde"), 0, 6, S("abcde"), 0, 2, 3);
691 test(S("abcde"), 0, 6, S("abcde"), 0, 4, 1);
692 test(S("abcde"), 0, 6, S("abcde"), 0, 5, 0);
698 test(S("abcde"), 0, 6, S("abcde"), 0, 6, 0);
699 test(S("abcde"), 0, 6, S("abcde"), 1, 0, 5);
700 test(S("abcde"), 0, 6, S("abcde"), 1, 1, -1);
701 test(S("abcde"), 0, 6, S("abcde"), 1, 2, -1);
702 test(S("abcde"), 0, 6, S("abcde"), 1, 3, -1);
703 test(S("abcde"), 0, 6, S("abcde"), 1, 4, -1);
704 test(S("abcde"), 0, 6, S("abcde"), 1, 5, -1);
705 test(S("abcde"), 0, 6, S("abcde"), 2, 0, 5);
706 test(S("abcde"), 0, 6, S("abcde"), 2, 1, -2);
707 test(S("abcde"), 0, 6, S("abcde"), 2, 2, -2);
708 test(S("abcde"), 0, 6, S("abcde"), 2, 3, -2);
709 test(S("abcde"), 0, 6, S("abcde"), 2, 4, -2);
710 test(S("abcde"), 0, 6, S("abcde"), 4, 0, 5);
711 test(S("abcde"), 0, 6, S("abcde"), 4, 1, -4);
712 test(S("abcde"), 0, 6, S("abcde"), 4, 2, -4);
713 test(S("abcde"), 0, 6, S("abcde"), 5, 0, 5);
714 test(S("abcde"), 0, 6, S("abcde"), 5, 1, 5);
715 test(S("abcde"), 0, 6, S("abcde"), 6, 0, 0);
716 test(S("abcde"), 0, 6, S("abcdefghij"), 0, 0, 5);
717 test(S("abcde"), 0, 6, S("abcdefghij"), 0, 1, 4);
718 test(S("abcde"), 0, 6, S("abcdefghij"), 0, 5, 0);
719 test(S("abcde"), 0, 6, S("abcdefghij"), 0, 9, -4);
720 test(S("abcde"), 0, 6, S("abcdefghij"), 0, 10, -5);
721 test(S("abcde"), 0, 6, S("abcdefghij"), 0, 11, -5);
722 test(S("abcde"), 0, 6, S("abcdefghij"), 1, 0, 5);
723 test(S("abcde"), 0, 6, S("abcdefghij"), 1, 1, -1);
724 test(S("abcde"), 0, 6, S("abcdefghij"), 1, 4, -1);
725 test(S("abcde"), 0, 6, S("abcdefghij"), 1, 8, -1);
726 test(S("abcde"), 0, 6, S("abcdefghij"), 1, 9, -1);
727 test(S("abcde"), 0, 6, S("abcdefghij"), 1, 10, -1);
728 test(S("abcde"), 0, 6, S("abcdefghij"), 5, 0, 5);
729 test(S("abcde"), 0, 6, S("abcdefghij"), 5, 1, -5);
730 test(S("abcde"), 0, 6, S("abcdefghij"), 5, 2, -5);
731 test(S("abcde"), 0, 6, S("abcdefghij"), 5, 4, -5);
732 test(S("abcde"), 0, 6, S("abcdefghij"), 5, 5, -5);
733 test(S("abcde"), 0, 6, S("abcdefghij"), 5, 6, -5);
734 test(S("abcde"), 0, 6, S("abcdefghij"), 9, 0, 5);
735 test(S("abcde"), 0, 6, S("abcdefghij"), 9, 1, -9);
736 test(S("abcde"), 0, 6, S("abcdefghij"), 9, 2, -9);
737 test(S("abcde"), 0, 6, S("abcdefghij"), 10, 0, 5);
738 test(S("abcde"), 0, 6, S("abcdefghij"), 10, 1, 5);
739 test(S("abcde"), 0, 6, S("abcdefghij"), 11, 0, 0);
740 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 0, 0, 5);
741 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 0, 1, 4);
742 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 0, 10, -5);
743 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 0, 19, -14);
744 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 0, 20, -15);
745 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 0, 21, -15);
746 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 1, 0, 5);
747 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 1, 1, -1);
748 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 1, 9, -1);
749 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 1, 18, -1);
750 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 1, 19, -1);
751 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 1, 20, -1);
752 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 10, 0, 5);
753 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 10, 1, -10);
754 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 10, 5, -10);
755 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 10, 9, -10);
756 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 10, 10, -10);
757 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 10, 11, -10);
758 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 19, 0, 5);
759 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 19, 1, -19);
760 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 19, 2, -19);
761 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 20, 0, 5);
762 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 20, 1, 5);
763 test(S("abcde"), 0, 6, S("abcdefghijklmnopqrst"), 21, 0, 0);
764 test(S("abcde"), 1, 0, S(""), 0, 0, 0);
765 test(S("abcde"), 1, 0, S(""), 0, 1, 0);
766 test(S("abcde"), 1, 0, S(""), 1, 0, 0);
767 test(S("abcde"), 1, 0, S("abcde"), 0, 0, 0);
768 test(S("abcde"), 1, 0, S("abcde"), 0, 1, -1);
769 test(S("abcde"), 1, 0, S("abcde"), 0, 2, -2);
770 test(S("abcde"), 1, 0, S("abcde"), 0, 4, -4);
771 test(S("abcde"), 1, 0, S("abcde"), 0, 5, -5);
772 test(S("abcde"), 1, 0, S("abcde"), 0, 6, -5);
773 test(S("abcde"), 1, 0, S("abcde"), 1, 0, 0);
774 test(S("abcde"), 1, 0, S("abcde"), 1, 1, -1);
775 test(S("abcde"), 1, 0, S("abcde"), 1, 2, -2);
776 test(S("abcde"), 1, 0, S("abcde"), 1, 3, -3);
777 test(S("abcde"), 1, 0, S("abcde"), 1, 4, -4);
778 test(S("abcde"), 1, 0, S("abcde"), 1, 5, -4);
779 test(S("abcde"), 1, 0, S("abcde"), 2, 0, 0);
780 test(S("abcde"), 1, 0, S("abcde"), 2, 1, -1);
781 test(S("abcde"), 1, 0, S("abcde"), 2, 2, -2);
782 test(S("abcde"), 1, 0, S("abcde"), 2, 3, -3);
783 test(S("abcde"), 1, 0, S("abcde"), 2, 4, -3);
784 test(S("abcde"), 1, 0, S("abcde"), 4, 0, 0);
785 test(S("abcde"), 1, 0, S("abcde"), 4, 1, -1);
786 test(S("abcde"), 1, 0, S("abcde"), 4, 2, -1);
787 test(S("abcde"), 1, 0, S("abcde"), 5, 0, 0);
788 test(S("abcde"), 1, 0, S("abcde"), 5, 1, 0);
789 test(S("abcde"), 1, 0, S("abcde"), 6, 0, 0);
790 test(S("abcde"), 1, 0, S("abcdefghij"), 0, 0, 0);
791 test(S("abcde"), 1, 0, S("abcdefghij"), 0, 1, -1);
792 test(S("abcde"), 1, 0, S("abcdefghij"), 0, 5, -5);
793 test(S("abcde"), 1, 0, S("abcdefghij"), 0, 9, -9);
794 test(S("abcde"), 1, 0, S("abcdefghij"), 0, 10, -10);
795 test(S("abcde"), 1, 0, S("abcdefghij"), 0, 11, -10);
796 test(S("abcde"), 1, 0, S("abcdefghij"), 1, 0, 0);
797 test(S("abcde"), 1, 0, S("abcdefghij"), 1, 1, -1);
803 test(S("abcde"), 1, 0, S("abcdefghij"), 1, 4, -4);
804 test(S("abcde"), 1, 0, S("abcdefghij"), 1, 8, -8);
805 test(S("abcde"), 1, 0, S("abcdefghij"), 1, 9, -9);
806 test(S("abcde"), 1, 0, S("abcdefghij"), 1, 10, -9);
807 test(S("abcde"), 1, 0, S("abcdefghij"), 5, 0, 0);
808 test(S("abcde"), 1, 0, S("abcdefghij"), 5, 1, -1);
809 test(S("abcde"), 1, 0, S("abcdefghij"), 5, 2, -2);
810 test(S("abcde"), 1, 0, S("abcdefghij"), 5, 4, -4);
811 test(S("abcde"), 1, 0, S("abcdefghij"), 5, 5, -5);
812 test(S("abcde"), 1, 0, S("abcdefghij"), 5, 6, -5);
813 test(S("abcde"), 1, 0, S("abcdefghij"), 9, 0, 0);
814 test(S("abcde"), 1, 0, S("abcdefghij"), 9, 1, -1);
815 test(S("abcde"), 1, 0, S("abcdefghij"), 9, 2, -1);
816 test(S("abcde"), 1, 0, S("abcdefghij"), 10, 0, 0);
817 test(S("abcde"), 1, 0, S("abcdefghij"), 10, 1, 0);
818 test(S("abcde"), 1, 0, S("abcdefghij"), 11, 0, 0);
819 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
820 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 0, 1, -1);
821 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 0, 10, -10);
822 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 0, 19, -19);
823 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 0, 20, -20);
824 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 0, 21, -20);
825 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
826 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 1, 1, -1);
827 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 1, 9, -9);
828 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 1, 18, -18);
829 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 1, 19, -19);
830 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 1, 20, -19);
831 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
832 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 10, 1, -1);
833 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 10, 5, -5);
834 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 10, 9, -9);
835 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 10, 10, -10);
836 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 10, 11, -10);
837 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
838 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 19, 1, -1);
839 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 19, 2, -1);
840 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
841 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
842 test(S("abcde"), 1, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
843 test(S("abcde"), 1, 1, S(""), 0, 0, 1);
844 test(S("abcde"), 1, 1, S(""), 0, 1, 1);
845 test(S("abcde"), 1, 1, S(""), 1, 0, 0);
846 test(S("abcde"), 1, 1, S("abcde"), 0, 0, 1);
847 test(S("abcde"), 1, 1, S("abcde"), 0, 1, 1);
848 test(S("abcde"), 1, 1, S("abcde"), 0, 2, 1);
849 test(S("abcde"), 1, 1, S("abcde"), 0, 4, 1);
850 test(S("abcde"), 1, 1, S("abcde"), 0, 5, 1);
851 test(S("abcde"), 1, 1, S("abcde"), 0, 6, 1);
852 test(S("abcde"), 1, 1, S("abcde"), 1, 0, 1);
853 test(S("abcde"), 1, 1, S("abcde"), 1, 1, 0);
854 test(S("abcde"), 1, 1, S("abcde"), 1, 2, -1);
855 test(S("abcde"), 1, 1, S("abcde"), 1, 3, -2);
856 test(S("abcde"), 1, 1, S("abcde"), 1, 4, -3);
857 test(S("abcde"), 1, 1, S("abcde"), 1, 5, -3);
858 test(S("abcde"), 1, 1, S("abcde"), 2, 0, 1);
859 test(S("abcde"), 1, 1, S("abcde"), 2, 1, -1);
860 test(S("abcde"), 1, 1, S("abcde"), 2, 2, -1);
861 test(S("abcde"), 1, 1, S("abcde"), 2, 3, -1);
862 test(S("abcde"), 1, 1, S("abcde"), 2, 4, -1);
863 test(S("abcde"), 1, 1, S("abcde"), 4, 0, 1);
864 test(S("abcde"), 1, 1, S("abcde"), 4, 1, -3);
865 test(S("abcde"), 1, 1, S("abcde"), 4, 2, -3);
866 test(S("abcde"), 1, 1, S("abcde"), 5, 0, 1);
867 test(S("abcde"), 1, 1, S("abcde"), 5, 1, 1);
868 test(S("abcde"), 1, 1, S("abcde"), 6, 0, 0);
869 test(S("abcde"), 1, 1, S("abcdefghij"), 0, 0, 1);
870 test(S("abcde"), 1, 1, S("abcdefghij"), 0, 1, 1);
871 test(S("abcde"), 1, 1, S("abcdefghij"), 0, 5, 1);
872 test(S("abcde"), 1, 1, S("abcdefghij"), 0, 9, 1);
873 test(S("abcde"), 1, 1, S("abcdefghij"), 0, 10, 1);
874 test(S("abcde"), 1, 1, S("abcdefghij"), 0, 11, 1);
875 test(S("abcde"), 1, 1, S("abcdefghij"), 1, 0, 1);
876 test(S("abcde"), 1, 1, S("abcdefghij"), 1, 1, 0);
877 test(S("abcde"), 1, 1, S("abcdefghij"), 1, 4, -3);
878 test(S("abcde"), 1, 1, S("abcdefghij"), 1, 8, -7);
879 test(S("abcde"), 1, 1, S("abcdefghij"), 1, 9, -8);
880 test(S("abcde"), 1, 1, S("abcdefghij"), 1, 10, -8);
881 test(S("abcde"), 1, 1, S("abcdefghij"), 5, 0, 1);
882 test(S("abcde"), 1, 1, S("abcdefghij"), 5, 1, -4);
883 test(S("abcde"), 1, 1, S("abcdefghij"), 5, 2, -4);
884 test(S("abcde"), 1, 1, S("abcdefghij"), 5, 4, -4);
885 test(S("abcde"), 1, 1, S("abcdefghij"), 5, 5, -4);
886 test(S("abcde"), 1, 1, S("abcdefghij"), 5, 6, -4);
887 test(S("abcde"), 1, 1, S("abcdefghij"), 9, 0, 1);
888 test(S("abcde"), 1, 1, S("abcdefghij"), 9, 1, -8);
889 test(S("abcde"), 1, 1, S("abcdefghij"), 9, 2, -8);
890 test(S("abcde"), 1, 1, S("abcdefghij"), 10, 0, 1);
891 test(S("abcde"), 1, 1, S("abcdefghij"), 10, 1, 1);
892 test(S("abcde"), 1, 1, S("abcdefghij"), 11, 0, 0);
893 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 0, 0, 1);
894 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 0, 1, 1);
895 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 0, 10, 1);
896 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 0, 19, 1);
897 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 0, 20, 1);
898 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 0, 21, 1);
899 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 1, 0, 1);
900 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 1, 1, 0);
901 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 1, 9, -8);
902 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 1, 18, -17);
908 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 1, 19, -18);
909 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 1, 20, -18);
910 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 10, 0, 1);
911 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 10, 1, -9);
912 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 10, 5, -9);
913 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 10, 9, -9);
914 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 10, 10, -9);
915 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 10, 11, -9);
916 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 19, 0, 1);
917 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 19, 1, -18);
918 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 19, 2, -18);
919 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 20, 0, 1);
920 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 20, 1, 1);
921 test(S("abcde"), 1, 1, S("abcdefghijklmnopqrst"), 21, 0, 0);
922 test(S("abcde"), 1, 2, S(""), 0, 0, 2);
923 test(S("abcde"), 1, 2, S(""), 0, 1, 2);
924 test(S("abcde"), 1, 2, S(""), 1, 0, 0);
925 test(S("abcde"), 1, 2, S("abcde"), 0, 0, 2);
926 test(S("abcde"), 1, 2, S("abcde"), 0, 1, 1);
927 test(S("abcde"), 1, 2, S("abcde"), 0, 2, 1);
928 test(S("abcde"), 1, 2, S("abcde"), 0, 4, 1);
929 test(S("abcde"), 1, 2, S("abcde"), 0, 5, 1);
930 test(S("abcde"), 1, 2, S("abcde"), 0, 6, 1);
931 test(S("abcde"), 1, 2, S("abcde"), 1, 0, 2);
932 test(S("abcde"), 1, 2, S("abcde"), 1, 1, 1);
933 test(S("abcde"), 1, 2, S("abcde"), 1, 2, 0);
934 test(S("abcde"), 1, 2, S("abcde"), 1, 3, -1);
935 test(S("abcde"), 1, 2, S("abcde"), 1, 4, -2);
936 test(S("abcde"), 1, 2, S("abcde"), 1, 5, -2);
937 test(S("abcde"), 1, 2, S("abcde"), 2, 0, 2);
938 test(S("abcde"), 1, 2, S("abcde"), 2, 1, -1);
939 test(S("abcde"), 1, 2, S("abcde"), 2, 2, -1);
940 test(S("abcde"), 1, 2, S("abcde"), 2, 3, -1);
941 test(S("abcde"), 1, 2, S("abcde"), 2, 4, -1);
942 test(S("abcde"), 1, 2, S("abcde"), 4, 0, 2);
943 test(S("abcde"), 1, 2, S("abcde"), 4, 1, -3);
944 test(S("abcde"), 1, 2, S("abcde"), 4, 2, -3);
945 test(S("abcde"), 1, 2, S("abcde"), 5, 0, 2);
946 test(S("abcde"), 1, 2, S("abcde"), 5, 1, 2);
947 test(S("abcde"), 1, 2, S("abcde"), 6, 0, 0);
948 test(S("abcde"), 1, 2, S("abcdefghij"), 0, 0, 2);
949 test(S("abcde"), 1, 2, S("abcdefghij"), 0, 1, 1);
950 test(S("abcde"), 1, 2, S("abcdefghij"), 0, 5, 1);
951 test(S("abcde"), 1, 2, S("abcdefghij"), 0, 9, 1);
952 test(S("abcde"), 1, 2, S("abcdefghij"), 0, 10, 1);
953 test(S("abcde"), 1, 2, S("abcdefghij"), 0, 11, 1);
954 test(S("abcde"), 1, 2, S("abcdefghij"), 1, 0, 2);
955 test(S("abcde"), 1, 2, S("abcdefghij"), 1, 1, 1);
956 test(S("abcde"), 1, 2, S("abcdefghij"), 1, 4, -2);
957 test(S("abcde"), 1, 2, S("abcdefghij"), 1, 8, -6);
958 test(S("abcde"), 1, 2, S("abcdefghij"), 1, 9, -7);
959 test(S("abcde"), 1, 2, S("abcdefghij"), 1, 10, -7);
960 test(S("abcde"), 1, 2, S("abcdefghij"), 5, 0, 2);
961 test(S("abcde"), 1, 2, S("abcdefghij"), 5, 1, -4);
962 test(S("abcde"), 1, 2, S("abcdefghij"), 5, 2, -4);
963 test(S("abcde"), 1, 2, S("abcdefghij"), 5, 4, -4);
964 test(S("abcde"), 1, 2, S("abcdefghij"), 5, 5, -4);
965 test(S("abcde"), 1, 2, S("abcdefghij"), 5, 6, -4);
966 test(S("abcde"), 1, 2, S("abcdefghij"), 9, 0, 2);
967 test(S("abcde"), 1, 2, S("abcdefghij"), 9, 1, -8);
968 test(S("abcde"), 1, 2, S("abcdefghij"), 9, 2, -8);
969 test(S("abcde"), 1, 2, S("abcdefghij"), 10, 0, 2);
970 test(S("abcde"), 1, 2, S("abcdefghij"), 10, 1, 2);
971 test(S("abcde"), 1, 2, S("abcdefghij"), 11, 0, 0);
972 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 0, 0, 2);
973 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 0, 1, 1);
974 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 0, 10, 1);
975 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 0, 19, 1);
976 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 0, 20, 1);
977 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 0, 21, 1);
978 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 1, 0, 2);
979 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 1, 1, 1);
980 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 1, 9, -7);
981 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 1, 18, -16);
982 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 1, 19, -17);
983 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 1, 20, -17);
984 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 10, 0, 2);
985 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 10, 1, -9);
986 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 10, 5, -9);
987 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 10, 9, -9);
988 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 10, 10, -9);
989 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 10, 11, -9);
990 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 19, 0, 2);
991 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 19, 1, -18);
992 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 19, 2, -18);
993 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 20, 0, 2);
994 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 20, 1, 2);
995 test(S("abcde"), 1, 2, S("abcdefghijklmnopqrst"), 21, 0, 0);
996 test(S("abcde"), 1, 3, S(""), 0, 0, 3);
997 test(S("abcde"), 1, 3, S(""), 0, 1, 3);
998 test(S("abcde"), 1, 3, S(""), 1, 0, 0);
999 test(S("abcde"), 1, 3, S("abcde"), 0, 0, 3);
1000 test(S("abcde"), 1, 3, S("abcde"), 0, 1, 1);
1001 test(S("abcde"), 1, 3, S("abcde"), 0, 2, 1);
1002 test(S("abcde"), 1, 3, S("abcde"), 0, 4, 1);
1003 test(S("abcde"), 1, 3, S("abcde"), 0, 5, 1);
1004 test(S("abcde"), 1, 3, S("abcde"), 0, 6, 1);
1005 test(S("abcde"), 1, 3, S("abcde"), 1, 0, 3);
1006 test(S("abcde"), 1, 3, S("abcde"), 1, 1, 2);
1007 test(S("abcde"), 1, 3, S("abcde"), 1, 2, 1);
1013 test(S("abcde"), 1, 3, S("abcde"), 1, 3, 0);
1014 test(S("abcde"), 1, 3, S("abcde"), 1, 4, -1);
1015 test(S("abcde"), 1, 3, S("abcde"), 1, 5, -1);
1016 test(S("abcde"), 1, 3, S("abcde"), 2, 0, 3);
1017 test(S("abcde"), 1, 3, S("abcde"), 2, 1, -1);
1018 test(S("abcde"), 1, 3, S("abcde"), 2, 2, -1);
1019 test(S("abcde"), 1, 3, S("abcde"), 2, 3, -1);
1020 test(S("abcde"), 1, 3, S("abcde"), 2, 4, -1);
1021 test(S("abcde"), 1, 3, S("abcde"), 4, 0, 3);
1022 test(S("abcde"), 1, 3, S("abcde"), 4, 1, -3);
1023 test(S("abcde"), 1, 3, S("abcde"), 4, 2, -3);
1024 test(S("abcde"), 1, 3, S("abcde"), 5, 0, 3);
1025 test(S("abcde"), 1, 3, S("abcde"), 5, 1, 3);
1026 test(S("abcde"), 1, 3, S("abcde"), 6, 0, 0);
1027 test(S("abcde"), 1, 3, S("abcdefghij"), 0, 0, 3);
1028 test(S("abcde"), 1, 3, S("abcdefghij"), 0, 1, 1);
1029 test(S("abcde"), 1, 3, S("abcdefghij"), 0, 5, 1);
1030 test(S("abcde"), 1, 3, S("abcdefghij"), 0, 9, 1);
1031 test(S("abcde"), 1, 3, S("abcdefghij"), 0, 10, 1);
1032 test(S("abcde"), 1, 3, S("abcdefghij"), 0, 11, 1);
1033 test(S("abcde"), 1, 3, S("abcdefghij"), 1, 0, 3);
1034 test(S("abcde"), 1, 3, S("abcdefghij"), 1, 1, 2);
1035 test(S("abcde"), 1, 3, S("abcdefghij"), 1, 4, -1);
1036 test(S("abcde"), 1, 3, S("abcdefghij"), 1, 8, -5);
1037 test(S("abcde"), 1, 3, S("abcdefghij"), 1, 9, -6);
1038 test(S("abcde"), 1, 3, S("abcdefghij"), 1, 10, -6);
1039 test(S("abcde"), 1, 3, S("abcdefghij"), 5, 0, 3);
1040 test(S("abcde"), 1, 3, S("abcdefghij"), 5, 1, -4);
1041 test(S("abcde"), 1, 3, S("abcdefghij"), 5, 2, -4);
1042 test(S("abcde"), 1, 3, S("abcdefghij"), 5, 4, -4);
1043 test(S("abcde"), 1, 3, S("abcdefghij"), 5, 5, -4);
1044 test(S("abcde"), 1, 3, S("abcdefghij"), 5, 6, -4);
1045 test(S("abcde"), 1, 3, S("abcdefghij"), 9, 0, 3);
1046 test(S("abcde"), 1, 3, S("abcdefghij"), 9, 1, -8);
1047 test(S("abcde"), 1, 3, S("abcdefghij"), 9, 2, -8);
1048 test(S("abcde"), 1, 3, S("abcdefghij"), 10, 0, 3);
1049 test(S("abcde"), 1, 3, S("abcdefghij"), 10, 1, 3);
1050 test(S("abcde"), 1, 3, S("abcdefghij"), 11, 0, 0);
1051 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 0, 0, 3);
1052 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 0, 1, 1);
1053 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 0, 10, 1);
1054 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 0, 19, 1);
1055 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 0, 20, 1);
1056 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 0, 21, 1);
1057 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 1, 0, 3);
1058 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 1, 1, 2);
1059 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 1, 9, -6);
1060 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 1, 18, -15);
1061 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 1, 19, -16);
1062 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 1, 20, -16);
1063 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 10, 0, 3);
1064 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 10, 1, -9);
1065 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 10, 5, -9);
1066 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 10, 9, -9);
1067 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 10, 10, -9);
1068 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 10, 11, -9);
1069 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 19, 0, 3);
1070 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 19, 1, -18);
1071 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 19, 2, -18);
1072 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 20, 0, 3);
1073 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 20, 1, 3);
1074 test(S("abcde"), 1, 3, S("abcdefghijklmnopqrst"), 21, 0, 0);
1075 test(S("abcde"), 1, 4, S(""), 0, 0, 4);
1076 test(S("abcde"), 1, 4, S(""), 0, 1, 4);
1077 test(S("abcde"), 1, 4, S(""), 1, 0, 0);
1078 test(S("abcde"), 1, 4, S("abcde"), 0, 0, 4);
1079 test(S("abcde"), 1, 4, S("abcde"), 0, 1, 1);
1080 test(S("abcde"), 1, 4, S("abcde"), 0, 2, 1);
1081 test(S("abcde"), 1, 4, S("abcde"), 0, 4, 1);
1082 test(S("abcde"), 1, 4, S("abcde"), 0, 5, 1);
1083 test(S("abcde"), 1, 4, S("abcde"), 0, 6, 1);
1084 test(S("abcde"), 1, 4, S("abcde"), 1, 0, 4);
1085 test(S("abcde"), 1, 4, S("abcde"), 1, 1, 3);
1086 test(S("abcde"), 1, 4, S("abcde"), 1, 2, 2);
1087 test(S("abcde"), 1, 4, S("abcde"), 1, 3, 1);
1088 test(S("abcde"), 1, 4, S("abcde"), 1, 4, 0);
1089 test(S("abcde"), 1, 4, S("abcde"), 1, 5, 0);
1090 test(S("abcde"), 1, 4, S("abcde"), 2, 0, 4);
1091 test(S("abcde"), 1, 4, S("abcde"), 2, 1, -1);
1092 test(S("abcde"), 1, 4, S("abcde"), 2, 2, -1);
1093 test(S("abcde"), 1, 4, S("abcde"), 2, 3, -1);
1094 test(S("abcde"), 1, 4, S("abcde"), 2, 4, -1);
1095 test(S("abcde"), 1, 4, S("abcde"), 4, 0, 4);
1096 test(S("abcde"), 1, 4, S("abcde"), 4, 1, -3);
1097 test(S("abcde"), 1, 4, S("abcde"), 4, 2, -3);
1098 test(S("abcde"), 1, 4, S("abcde"), 5, 0, 4);
1099 test(S("abcde"), 1, 4, S("abcde"), 5, 1, 4);
1100 test(S("abcde"), 1, 4, S("abcde"), 6, 0, 0);
1101 test(S("abcde"), 1, 4, S("abcdefghij"), 0, 0, 4);
1102 test(S("abcde"), 1, 4, S("abcdefghij"), 0, 1, 1);
1103 test(S("abcde"), 1, 4, S("abcdefghij"), 0, 5, 1);
1104 test(S("abcde"), 1, 4, S("abcdefghij"), 0, 9, 1);
1105 test(S("abcde"), 1, 4, S("abcdefghij"), 0, 10, 1);
1106 test(S("abcde"), 1, 4, S("abcdefghij"), 0, 11, 1);
1107 test(S("abcde"), 1, 4, S("abcdefghij"), 1, 0, 4);
1108 test(S("abcde"), 1, 4, S("abcdefghij"), 1, 1, 3);
1109 test(S("abcde"), 1, 4, S("abcdefghij"), 1, 4, 0);
1110 test(S("abcde"), 1, 4, S("abcdefghij"), 1, 8, -4);
1111 test(S("abcde"), 1, 4, S("abcdefghij"), 1, 9, -5);
1112 test(S("abcde"), 1, 4, S("abcdefghij"), 1, 10, -5);
1118 test(S("abcde"), 1, 4, S("abcdefghij"), 5, 0, 4);
1119 test(S("abcde"), 1, 4, S("abcdefghij"), 5, 1, -4);
1120 test(S("abcde"), 1, 4, S("abcdefghij"), 5, 2, -4);
1121 test(S("abcde"), 1, 4, S("abcdefghij"), 5, 4, -4);
1122 test(S("abcde"), 1, 4, S("abcdefghij"), 5, 5, -4);
1123 test(S("abcde"), 1, 4, S("abcdefghij"), 5, 6, -4);
1124 test(S("abcde"), 1, 4, S("abcdefghij"), 9, 0, 4);
1125 test(S("abcde"), 1, 4, S("abcdefghij"), 9, 1, -8);
1126 test(S("abcde"), 1, 4, S("abcdefghij"), 9, 2, -8);
1127 test(S("abcde"), 1, 4, S("abcdefghij"), 10, 0, 4);
1128 test(S("abcde"), 1, 4, S("abcdefghij"), 10, 1, 4);
1129 test(S("abcde"), 1, 4, S("abcdefghij"), 11, 0, 0);
1130 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 0, 0, 4);
1131 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 0, 1, 1);
1132 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 0, 10, 1);
1133 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 0, 19, 1);
1134 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 0, 20, 1);
1135 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 0, 21, 1);
1136 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 1, 0, 4);
1137 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 1, 1, 3);
1138 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 1, 9, -5);
1139 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 1, 18, -14);
1140 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 1, 19, -15);
1141 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 1, 20, -15);
1142 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 10, 0, 4);
1143 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 10, 1, -9);
1144 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 10, 5, -9);
1145 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 10, 9, -9);
1146 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 10, 10, -9);
1147 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 10, 11, -9);
1148 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 19, 0, 4);
1149 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 19, 1, -18);
1150 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 19, 2, -18);
1151 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 20, 0, 4);
1152 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 20, 1, 4);
1153 test(S("abcde"), 1, 4, S("abcdefghijklmnopqrst"), 21, 0, 0);
1154 test(S("abcde"), 1, 5, S(""), 0, 0, 4);
1155 test(S("abcde"), 1, 5, S(""), 0, 1, 4);
1156 test(S("abcde"), 1, 5, S(""), 1, 0, 0);
1157 test(S("abcde"), 1, 5, S("abcde"), 0, 0, 4);
1158 test(S("abcde"), 1, 5, S("abcde"), 0, 1, 1);
1159 test(S("abcde"), 1, 5, S("abcde"), 0, 2, 1);
1160 test(S("abcde"), 1, 5, S("abcde"), 0, 4, 1);
1161 test(S("abcde"), 1, 5, S("abcde"), 0, 5, 1);
1162 test(S("abcde"), 1, 5, S("abcde"), 0, 6, 1);
1163 test(S("abcde"), 1, 5, S("abcde"), 1, 0, 4);
1164 test(S("abcde"), 1, 5, S("abcde"), 1, 1, 3);
1165 test(S("abcde"), 1, 5, S("abcde"), 1, 2, 2);
1166 test(S("abcde"), 1, 5, S("abcde"), 1, 3, 1);
1167 test(S("abcde"), 1, 5, S("abcde"), 1, 4, 0);
1168 test(S("abcde"), 1, 5, S("abcde"), 1, 5, 0);
1169 test(S("abcde"), 1, 5, S("abcde"), 2, 0, 4);
1170 test(S("abcde"), 1, 5, S("abcde"), 2, 1, -1);
1171 test(S("abcde"), 1, 5, S("abcde"), 2, 2, -1);
1172 test(S("abcde"), 1, 5, S("abcde"), 2, 3, -1);
1173 test(S("abcde"), 1, 5, S("abcde"), 2, 4, -1);
1174 test(S("abcde"), 1, 5, S("abcde"), 4, 0, 4);
1175 test(S("abcde"), 1, 5, S("abcde"), 4, 1, -3);
1176 test(S("abcde"), 1, 5, S("abcde"), 4, 2, -3);
1177 test(S("abcde"), 1, 5, S("abcde"), 5, 0, 4);
1178 test(S("abcde"), 1, 5, S("abcde"), 5, 1, 4);
1179 test(S("abcde"), 1, 5, S("abcde"), 6, 0, 0);
1180 test(S("abcde"), 1, 5, S("abcdefghij"), 0, 0, 4);
1181 test(S("abcde"), 1, 5, S("abcdefghij"), 0, 1, 1);
1182 test(S("abcde"), 1, 5, S("abcdefghij"), 0, 5, 1);
1183 test(S("abcde"), 1, 5, S("abcdefghij"), 0, 9, 1);
1184 test(S("abcde"), 1, 5, S("abcdefghij"), 0, 10, 1);
1185 test(S("abcde"), 1, 5, S("abcdefghij"), 0, 11, 1);
1186 test(S("abcde"), 1, 5, S("abcdefghij"), 1, 0, 4);
1187 test(S("abcde"), 1, 5, S("abcdefghij"), 1, 1, 3);
1188 test(S("abcde"), 1, 5, S("abcdefghij"), 1, 4, 0);
1189 test(S("abcde"), 1, 5, S("abcdefghij"), 1, 8, -4);
1190 test(S("abcde"), 1, 5, S("abcdefghij"), 1, 9, -5);
1191 test(S("abcde"), 1, 5, S("abcdefghij"), 1, 10, -5);
1192 test(S("abcde"), 1, 5, S("abcdefghij"), 5, 0, 4);
1193 test(S("abcde"), 1, 5, S("abcdefghij"), 5, 1, -4);
1194 test(S("abcde"), 1, 5, S("abcdefghij"), 5, 2, -4);
1195 test(S("abcde"), 1, 5, S("abcdefghij"), 5, 4, -4);
1196 test(S("abcde"), 1, 5, S("abcdefghij"), 5, 5, -4);
1197 test(S("abcde"), 1, 5, S("abcdefghij"), 5, 6, -4);
1198 test(S("abcde"), 1, 5, S("abcdefghij"), 9, 0, 4);
1199 test(S("abcde"), 1, 5, S("abcdefghij"), 9, 1, -8);
1200 test(S("abcde"), 1, 5, S("abcdefghij"), 9, 2, -8);
1201 test(S("abcde"), 1, 5, S("abcdefghij"), 10, 0, 4);
1202 test(S("abcde"), 1, 5, S("abcdefghij"), 10, 1, 4);
1203 test(S("abcde"), 1, 5, S("abcdefghij"), 11, 0, 0);
1204 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 0, 0, 4);
1205 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 0, 1, 1);
1206 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 0, 10, 1);
1207 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 0, 19, 1);
1208 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 0, 20, 1);
1209 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 0, 21, 1);
1210 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 1, 0, 4);
1211 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 1, 1, 3);
1212 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 1, 9, -5);
1213 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 1, 18, -14);
1214 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 1, 19, -15);
1215 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 1, 20, -15);
1216 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 10, 0, 4);
1217 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 10, 1, -9);
1223 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 10, 5, -9);
1224 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 10, 9, -9);
1225 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 10, 10, -9);
1226 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 10, 11, -9);
1227 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 19, 0, 4);
1228 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 19, 1, -18);
1229 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 19, 2, -18);
1230 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 20, 0, 4);
1231 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 20, 1, 4);
1232 test(S("abcde"), 1, 5, S("abcdefghijklmnopqrst"), 21, 0, 0);
1233 test(S("abcde"), 2, 0, S(""), 0, 0, 0);
1234 test(S("abcde"), 2, 0, S(""), 0, 1, 0);
1235 test(S("abcde"), 2, 0, S(""), 1, 0, 0);
1236 test(S("abcde"), 2, 0, S("abcde"), 0, 0, 0);
1237 test(S("abcde"), 2, 0, S("abcde"), 0, 1, -1);
1238 test(S("abcde"), 2, 0, S("abcde"), 0, 2, -2);
1239 test(S("abcde"), 2, 0, S("abcde"), 0, 4, -4);
1240 test(S("abcde"), 2, 0, S("abcde"), 0, 5, -5);
1241 test(S("abcde"), 2, 0, S("abcde"), 0, 6, -5);
1242 test(S("abcde"), 2, 0, S("abcde"), 1, 0, 0);
1243 test(S("abcde"), 2, 0, S("abcde"), 1, 1, -1);
1244 test(S("abcde"), 2, 0, S("abcde"), 1, 2, -2);
1245 test(S("abcde"), 2, 0, S("abcde"), 1, 3, -3);
1246 test(S("abcde"), 2, 0, S("abcde"), 1, 4, -4);
1247 test(S("abcde"), 2, 0, S("abcde"), 1, 5, -4);
1248 test(S("abcde"), 2, 0, S("abcde"), 2, 0, 0);
1249 test(S("abcde"), 2, 0, S("abcde"), 2, 1, -1);
1250 test(S("abcde"), 2, 0, S("abcde"), 2, 2, -2);
1251 test(S("abcde"), 2, 0, S("abcde"), 2, 3, -3);
1252 test(S("abcde"), 2, 0, S("abcde"), 2, 4, -3);
1253 test(S("abcde"), 2, 0, S("abcde"), 4, 0, 0);
1254 test(S("abcde"), 2, 0, S("abcde"), 4, 1, -1);
1255 test(S("abcde"), 2, 0, S("abcde"), 4, 2, -1);
1256 test(S("abcde"), 2, 0, S("abcde"), 5, 0, 0);
1257 test(S("abcde"), 2, 0, S("abcde"), 5, 1, 0);
1258 test(S("abcde"), 2, 0, S("abcde"), 6, 0, 0);
1259 test(S("abcde"), 2, 0, S("abcdefghij"), 0, 0, 0);
1260 test(S("abcde"), 2, 0, S("abcdefghij"), 0, 1, -1);
1261 test(S("abcde"), 2, 0, S("abcdefghij"), 0, 5, -5);
1262 test(S("abcde"), 2, 0, S("abcdefghij"), 0, 9, -9);
1263 test(S("abcde"), 2, 0, S("abcdefghij"), 0, 10, -10);
1264 test(S("abcde"), 2, 0, S("abcdefghij"), 0, 11, -10);
1265 test(S("abcde"), 2, 0, S("abcdefghij"), 1, 0, 0);
1266 test(S("abcde"), 2, 0, S("abcdefghij"), 1, 1, -1);
1267 test(S("abcde"), 2, 0, S("abcdefghij"), 1, 4, -4);
1268 test(S("abcde"), 2, 0, S("abcdefghij"), 1, 8, -8);
1269 test(S("abcde"), 2, 0, S("abcdefghij"), 1, 9, -9);
1270 test(S("abcde"), 2, 0, S("abcdefghij"), 1, 10, -9);
1271 test(S("abcde"), 2, 0, S("abcdefghij"), 5, 0, 0);
1272 test(S("abcde"), 2, 0, S("abcdefghij"), 5, 1, -1);
1273 test(S("abcde"), 2, 0, S("abcdefghij"), 5, 2, -2);
1274 test(S("abcde"), 2, 0, S("abcdefghij"), 5, 4, -4);
1275 test(S("abcde"), 2, 0, S("abcdefghij"), 5, 5, -5);
1276 test(S("abcde"), 2, 0, S("abcdefghij"), 5, 6, -5);
1277 test(S("abcde"), 2, 0, S("abcdefghij"), 9, 0, 0);
1278 test(S("abcde"), 2, 0, S("abcdefghij"), 9, 1, -1);
1279 test(S("abcde"), 2, 0, S("abcdefghij"), 9, 2, -1);
1280 test(S("abcde"), 2, 0, S("abcdefghij"), 10, 0, 0);
1281 test(S("abcde"), 2, 0, S("abcdefghij"), 10, 1, 0);
1282 test(S("abcde"), 2, 0, S("abcdefghij"), 11, 0, 0);
1283 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
1284 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 0, 1, -1);
1285 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 0, 10, -10);
1286 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 0, 19, -19);
1287 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 0, 20, -20);
1288 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 0, 21, -20);
1289 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
1290 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 1, 1, -1);
1291 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 1, 9, -9);
1292 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 1, 18, -18);
1293 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 1, 19, -19);
1294 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 1, 20, -19);
1295 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
1296 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 10, 1, -1);
1297 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 10, 5, -5);
1298 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 10, 9, -9);
1299 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 10, 10, -10);
1300 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 10, 11, -10);
1301 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
1302 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 19, 1, -1);
1303 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 19, 2, -1);
1304 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
1305 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
1306 test(S("abcde"), 2, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
1307 test(S("abcde"), 2, 1, S(""), 0, 0, 1);
1308 test(S("abcde"), 2, 1, S(""), 0, 1, 1);
1309 test(S("abcde"), 2, 1, S(""), 1, 0, 0);
1310 test(S("abcde"), 2, 1, S("abcde"), 0, 0, 1);
1311 test(S("abcde"), 2, 1, S("abcde"), 0, 1, 2);
1312 test(S("abcde"), 2, 1, S("abcde"), 0, 2, 2);
1313 test(S("abcde"), 2, 1, S("abcde"), 0, 4, 2);
1314 test(S("abcde"), 2, 1, S("abcde"), 0, 5, 2);
1315 test(S("abcde"), 2, 1, S("abcde"), 0, 6, 2);
1316 test(S("abcde"), 2, 1, S("abcde"), 1, 0, 1);
1317 test(S("abcde"), 2, 1, S("abcde"), 1, 1, 1);
1318 test(S("abcde"), 2, 1, S("abcde"), 1, 2, 1);
1319 test(S("abcde"), 2, 1, S("abcde"), 1, 3, 1);
1320 test(S("abcde"), 2, 1, S("abcde"), 1, 4, 1);
1321 test(S("abcde"), 2, 1, S("abcde"), 1, 5, 1);
1322 test(S("abcde"), 2, 1, S("abcde"), 2, 0, 1);
1328 test(S("abcde"), 2, 1, S("abcde"), 2, 1, 0);
1329 test(S("abcde"), 2, 1, S("abcde"), 2, 2, -1);
1330 test(S("abcde"), 2, 1, S("abcde"), 2, 3, -2);
1331 test(S("abcde"), 2, 1, S("abcde"), 2, 4, -2);
1332 test(S("abcde"), 2, 1, S("abcde"), 4, 0, 1);
1333 test(S("abcde"), 2, 1, S("abcde"), 4, 1, -2);
1334 test(S("abcde"), 2, 1, S("abcde"), 4, 2, -2);
1335 test(S("abcde"), 2, 1, S("abcde"), 5, 0, 1);
1336 test(S("abcde"), 2, 1, S("abcde"), 5, 1, 1);
1337 test(S("abcde"), 2, 1, S("abcde"), 6, 0, 0);
1338 test(S("abcde"), 2, 1, S("abcdefghij"), 0, 0, 1);
1339 test(S("abcde"), 2, 1, S("abcdefghij"), 0, 1, 2);
1340 test(S("abcde"), 2, 1, S("abcdefghij"), 0, 5, 2);
1341 test(S("abcde"), 2, 1, S("abcdefghij"), 0, 9, 2);
1342 test(S("abcde"), 2, 1, S("abcdefghij"), 0, 10, 2);
1343 test(S("abcde"), 2, 1, S("abcdefghij"), 0, 11, 2);
1344 test(S("abcde"), 2, 1, S("abcdefghij"), 1, 0, 1);
1345 test(S("abcde"), 2, 1, S("abcdefghij"), 1, 1, 1);
1346 test(S("abcde"), 2, 1, S("abcdefghij"), 1, 4, 1);
1347 test(S("abcde"), 2, 1, S("abcdefghij"), 1, 8, 1);
1348 test(S("abcde"), 2, 1, S("abcdefghij"), 1, 9, 1);
1349 test(S("abcde"), 2, 1, S("abcdefghij"), 1, 10, 1);
1350 test(S("abcde"), 2, 1, S("abcdefghij"), 5, 0, 1);
1351 test(S("abcde"), 2, 1, S("abcdefghij"), 5, 1, -3);
1352 test(S("abcde"), 2, 1, S("abcdefghij"), 5, 2, -3);
1353 test(S("abcde"), 2, 1, S("abcdefghij"), 5, 4, -3);
1354 test(S("abcde"), 2, 1, S("abcdefghij"), 5, 5, -3);
1355 test(S("abcde"), 2, 1, S("abcdefghij"), 5, 6, -3);
1356 test(S("abcde"), 2, 1, S("abcdefghij"), 9, 0, 1);
1357 test(S("abcde"), 2, 1, S("abcdefghij"), 9, 1, -7);
1358 test(S("abcde"), 2, 1, S("abcdefghij"), 9, 2, -7);
1359 test(S("abcde"), 2, 1, S("abcdefghij"), 10, 0, 1);
1360 test(S("abcde"), 2, 1, S("abcdefghij"), 10, 1, 1);
1361 test(S("abcde"), 2, 1, S("abcdefghij"), 11, 0, 0);
1362 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 0, 0, 1);
1363 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 0, 1, 2);
1364 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 0, 10, 2);
1365 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 0, 19, 2);
1366 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 0, 20, 2);
1367 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 0, 21, 2);
1368 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 1, 0, 1);
1369 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 1, 1, 1);
1370 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 1, 9, 1);
1371 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 1, 18, 1);
1372 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 1, 19, 1);
1373 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 1, 20, 1);
1374 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 10, 0, 1);
1375 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 10, 1, -8);
1376 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 10, 5, -8);
1377 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 10, 9, -8);
1378 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 10, 10, -8);
1379 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 10, 11, -8);
1380 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 19, 0, 1);
1381 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 19, 1, -17);
1382 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 19, 2, -17);
1383 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 20, 0, 1);
1384 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 20, 1, 1);
1385 test(S("abcde"), 2, 1, S("abcdefghijklmnopqrst"), 21, 0, 0);
1386 test(S("abcde"), 2, 2, S(""), 0, 0, 2);
1387 test(S("abcde"), 2, 2, S(""), 0, 1, 2);
1388 test(S("abcde"), 2, 2, S(""), 1, 0, 0);
1389 test(S("abcde"), 2, 2, S("abcde"), 0, 0, 2);
1390 test(S("abcde"), 2, 2, S("abcde"), 0, 1, 2);
1391 test(S("abcde"), 2, 2, S("abcde"), 0, 2, 2);
1392 test(S("abcde"), 2, 2, S("abcde"), 0, 4, 2);
1393 test(S("abcde"), 2, 2, S("abcde"), 0, 5, 2);
1394 test(S("abcde"), 2, 2, S("abcde"), 0, 6, 2);
1395 test(S("abcde"), 2, 2, S("abcde"), 1, 0, 2);
1396 test(S("abcde"), 2, 2, S("abcde"), 1, 1, 1);
1397 test(S("abcde"), 2, 2, S("abcde"), 1, 2, 1);
1398 test(S("abcde"), 2, 2, S("abcde"), 1, 3, 1);
1399 test(S("abcde"), 2, 2, S("abcde"), 1, 4, 1);
1400 test(S("abcde"), 2, 2, S("abcde"), 1, 5, 1);
1401 test(S("abcde"), 2, 2, S("abcde"), 2, 0, 2);
1402 test(S("abcde"), 2, 2, S("abcde"), 2, 1, 1);
1403 test(S("abcde"), 2, 2, S("abcde"), 2, 2, 0);
1404 test(S("abcde"), 2, 2, S("abcde"), 2, 3, -1);
1405 test(S("abcde"), 2, 2, S("abcde"), 2, 4, -1);
1406 test(S("abcde"), 2, 2, S("abcde"), 4, 0, 2);
1407 test(S("abcde"), 2, 2, S("abcde"), 4, 1, -2);
1408 test(S("abcde"), 2, 2, S("abcde"), 4, 2, -2);
1409 test(S("abcde"), 2, 2, S("abcde"), 5, 0, 2);
1410 test(S("abcde"), 2, 2, S("abcde"), 5, 1, 2);
1411 test(S("abcde"), 2, 2, S("abcde"), 6, 0, 0);
1412 test(S("abcde"), 2, 2, S("abcdefghij"), 0, 0, 2);
1413 test(S("abcde"), 2, 2, S("abcdefghij"), 0, 1, 2);
1414 test(S("abcde"), 2, 2, S("abcdefghij"), 0, 5, 2);
1415 test(S("abcde"), 2, 2, S("abcdefghij"), 0, 9, 2);
1416 test(S("abcde"), 2, 2, S("abcdefghij"), 0, 10, 2);
1417 test(S("abcde"), 2, 2, S("abcdefghij"), 0, 11, 2);
1418 test(S("abcde"), 2, 2, S("abcdefghij"), 1, 0, 2);
1419 test(S("abcde"), 2, 2, S("abcdefghij"), 1, 1, 1);
1420 test(S("abcde"), 2, 2, S("abcdefghij"), 1, 4, 1);
1421 test(S("abcde"), 2, 2, S("abcdefghij"), 1, 8, 1);
1422 test(S("abcde"), 2, 2, S("abcdefghij"), 1, 9, 1);
1423 test(S("abcde"), 2, 2, S("abcdefghij"), 1, 10, 1);
1424 test(S("abcde"), 2, 2, S("abcdefghij"), 5, 0, 2);
1425 test(S("abcde"), 2, 2, S("abcdefghij"), 5, 1, -3);
1426 test(S("abcde"), 2, 2, S("abcdefghij"), 5, 2, -3);
1427 test(S("abcde"), 2, 2, S("abcdefghij"), 5, 4, -3);
1433 test(S("abcde"), 2, 2, S("abcdefghij"), 5, 5, -3);
1434 test(S("abcde"), 2, 2, S("abcdefghij"), 5, 6, -3);
1435 test(S("abcde"), 2, 2, S("abcdefghij"), 9, 0, 2);
1436 test(S("abcde"), 2, 2, S("abcdefghij"), 9, 1, -7);
1437 test(S("abcde"), 2, 2, S("abcdefghij"), 9, 2, -7);
1438 test(S("abcde"), 2, 2, S("abcdefghij"), 10, 0, 2);
1439 test(S("abcde"), 2, 2, S("abcdefghij"), 10, 1, 2);
1440 test(S("abcde"), 2, 2, S("abcdefghij"), 11, 0, 0);
1441 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 0, 0, 2);
1442 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 0, 1, 2);
1443 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 0, 10, 2);
1444 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 0, 19, 2);
1445 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 0, 20, 2);
1446 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 0, 21, 2);
1447 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 1, 0, 2);
1448 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 1, 1, 1);
1449 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 1, 9, 1);
1450 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 1, 18, 1);
1451 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 1, 19, 1);
1452 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 1, 20, 1);
1453 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 10, 0, 2);
1454 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 10, 1, -8);
1455 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 10, 5, -8);
1456 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 10, 9, -8);
1457 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 10, 10, -8);
1458 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 10, 11, -8);
1459 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 19, 0, 2);
1460 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 19, 1, -17);
1461 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 19, 2, -17);
1462 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 20, 0, 2);
1463 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 20, 1, 2);
1464 test(S("abcde"), 2, 2, S("abcdefghijklmnopqrst"), 21, 0, 0);
1465 test(S("abcde"), 2, 3, S(""), 0, 0, 3);
1466 test(S("abcde"), 2, 3, S(""), 0, 1, 3);
1467 test(S("abcde"), 2, 3, S(""), 1, 0, 0);
1468 test(S("abcde"), 2, 3, S("abcde"), 0, 0, 3);
1469 test(S("abcde"), 2, 3, S("abcde"), 0, 1, 2);
1470 test(S("abcde"), 2, 3, S("abcde"), 0, 2, 2);
1471 test(S("abcde"), 2, 3, S("abcde"), 0, 4, 2);
1472 test(S("abcde"), 2, 3, S("abcde"), 0, 5, 2);
1473 test(S("abcde"), 2, 3, S("abcde"), 0, 6, 2);
1474 test(S("abcde"), 2, 3, S("abcde"), 1, 0, 3);
1475 test(S("abcde"), 2, 3, S("abcde"), 1, 1, 1);
1476 test(S("abcde"), 2, 3, S("abcde"), 1, 2, 1);
1477 test(S("abcde"), 2, 3, S("abcde"), 1, 3, 1);
1478 test(S("abcde"), 2, 3, S("abcde"), 1, 4, 1);
1479 test(S("abcde"), 2, 3, S("abcde"), 1, 5, 1);
1480 test(S("abcde"), 2, 3, S("abcde"), 2, 0, 3);
1481 test(S("abcde"), 2, 3, S("abcde"), 2, 1, 2);
1482 test(S("abcde"), 2, 3, S("abcde"), 2, 2, 1);
1483 test(S("abcde"), 2, 3, S("abcde"), 2, 3, 0);
1484 test(S("abcde"), 2, 3, S("abcde"), 2, 4, 0);
1485 test(S("abcde"), 2, 3, S("abcde"), 4, 0, 3);
1486 test(S("abcde"), 2, 3, S("abcde"), 4, 1, -2);
1487 test(S("abcde"), 2, 3, S("abcde"), 4, 2, -2);
1488 test(S("abcde"), 2, 3, S("abcde"), 5, 0, 3);
1489 test(S("abcde"), 2, 3, S("abcde"), 5, 1, 3);
1490 test(S("abcde"), 2, 3, S("abcde"), 6, 0, 0);
1491 test(S("abcde"), 2, 3, S("abcdefghij"), 0, 0, 3);
1492 test(S("abcde"), 2, 3, S("abcdefghij"), 0, 1, 2);
1493 test(S("abcde"), 2, 3, S("abcdefghij"), 0, 5, 2);
1494 test(S("abcde"), 2, 3, S("abcdefghij"), 0, 9, 2);
1495 test(S("abcde"), 2, 3, S("abcdefghij"), 0, 10, 2);
1496 test(S("abcde"), 2, 3, S("abcdefghij"), 0, 11, 2);
1497 test(S("abcde"), 2, 3, S("abcdefghij"), 1, 0, 3);
1498 test(S("abcde"), 2, 3, S("abcdefghij"), 1, 1, 1);
1499 test(S("abcde"), 2, 3, S("abcdefghij"), 1, 4, 1);
1500 test(S("abcde"), 2, 3, S("abcdefghij"), 1, 8, 1);
1501 test(S("abcde"), 2, 3, S("abcdefghij"), 1, 9, 1);
1502 test(S("abcde"), 2, 3, S("abcdefghij"), 1, 10, 1);
1503 test(S("abcde"), 2, 3, S("abcdefghij"), 5, 0, 3);
1504 test(S("abcde"), 2, 3, S("abcdefghij"), 5, 1, -3);
1505 test(S("abcde"), 2, 3, S("abcdefghij"), 5, 2, -3);
1506 test(S("abcde"), 2, 3, S("abcdefghij"), 5, 4, -3);
1507 test(S("abcde"), 2, 3, S("abcdefghij"), 5, 5, -3);
1508 test(S("abcde"), 2, 3, S("abcdefghij"), 5, 6, -3);
1509 test(S("abcde"), 2, 3, S("abcdefghij"), 9, 0, 3);
1510 test(S("abcde"), 2, 3, S("abcdefghij"), 9, 1, -7);
1511 test(S("abcde"), 2, 3, S("abcdefghij"), 9, 2, -7);
1512 test(S("abcde"), 2, 3, S("abcdefghij"), 10, 0, 3);
1513 test(S("abcde"), 2, 3, S("abcdefghij"), 10, 1, 3);
1514 test(S("abcde"), 2, 3, S("abcdefghij"), 11, 0, 0);
1515 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 0, 0, 3);
1516 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 0, 1, 2);
1517 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 0, 10, 2);
1518 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 0, 19, 2);
1519 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 0, 20, 2);
1520 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 0, 21, 2);
1521 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 1, 0, 3);
1522 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 1, 1, 1);
1523 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 1, 9, 1);
1524 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 1, 18, 1);
1525 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 1, 19, 1);
1526 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 1, 20, 1);
1527 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 10, 0, 3);
1528 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 10, 1, -8);
1529 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 10, 5, -8);
1530 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 10, 9, -8);
1531 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 10, 10, -8);
1532 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 10, 11, -8);
1538 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 19, 0, 3);
1539 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 19, 1, -17);
1540 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 19, 2, -17);
1541 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 20, 0, 3);
1542 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 20, 1, 3);
1543 test(S("abcde"), 2, 3, S("abcdefghijklmnopqrst"), 21, 0, 0);
1544 test(S("abcde"), 2, 4, S(""), 0, 0, 3);
1545 test(S("abcde"), 2, 4, S(""), 0, 1, 3);
1546 test(S("abcde"), 2, 4, S(""), 1, 0, 0);
1547 test(S("abcde"), 2, 4, S("abcde"), 0, 0, 3);
1548 test(S("abcde"), 2, 4, S("abcde"), 0, 1, 2);
1549 test(S("abcde"), 2, 4, S("abcde"), 0, 2, 2);
1550 test(S("abcde"), 2, 4, S("abcde"), 0, 4, 2);
1551 test(S("abcde"), 2, 4, S("abcde"), 0, 5, 2);
1552 test(S("abcde"), 2, 4, S("abcde"), 0, 6, 2);
1553 test(S("abcde"), 2, 4, S("abcde"), 1, 0, 3);
1554 test(S("abcde"), 2, 4, S("abcde"), 1, 1, 1);
1555 test(S("abcde"), 2, 4, S("abcde"), 1, 2, 1);
1556 test(S("abcde"), 2, 4, S("abcde"), 1, 3, 1);
1557 test(S("abcde"), 2, 4, S("abcde"), 1, 4, 1);
1558 test(S("abcde"), 2, 4, S("abcde"), 1, 5, 1);
1559 test(S("abcde"), 2, 4, S("abcde"), 2, 0, 3);
1560 test(S("abcde"), 2, 4, S("abcde"), 2, 1, 2);
1561 test(S("abcde"), 2, 4, S("abcde"), 2, 2, 1);
1562 test(S("abcde"), 2, 4, S("abcde"), 2, 3, 0);
1563 test(S("abcde"), 2, 4, S("abcde"), 2, 4, 0);
1564 test(S("abcde"), 2, 4, S("abcde"), 4, 0, 3);
1565 test(S("abcde"), 2, 4, S("abcde"), 4, 1, -2);
1566 test(S("abcde"), 2, 4, S("abcde"), 4, 2, -2);
1567 test(S("abcde"), 2, 4, S("abcde"), 5, 0, 3);
1568 test(S("abcde"), 2, 4, S("abcde"), 5, 1, 3);
1569 test(S("abcde"), 2, 4, S("abcde"), 6, 0, 0);
1570 test(S("abcde"), 2, 4, S("abcdefghij"), 0, 0, 3);
1571 test(S("abcde"), 2, 4, S("abcdefghij"), 0, 1, 2);
1572 test(S("abcde"), 2, 4, S("abcdefghij"), 0, 5, 2);
1573 test(S("abcde"), 2, 4, S("abcdefghij"), 0, 9, 2);
1574 test(S("abcde"), 2, 4, S("abcdefghij"), 0, 10, 2);
1575 test(S("abcde"), 2, 4, S("abcdefghij"), 0, 11, 2);
1576 test(S("abcde"), 2, 4, S("abcdefghij"), 1, 0, 3);
1577 test(S("abcde"), 2, 4, S("abcdefghij"), 1, 1, 1);
1578 test(S("abcde"), 2, 4, S("abcdefghij"), 1, 4, 1);
1579 test(S("abcde"), 2, 4, S("abcdefghij"), 1, 8, 1);
1580 test(S("abcde"), 2, 4, S("abcdefghij"), 1, 9, 1);
1581 test(S("abcde"), 2, 4, S("abcdefghij"), 1, 10, 1);
1582 test(S("abcde"), 2, 4, S("abcdefghij"), 5, 0, 3);
1583 test(S("abcde"), 2, 4, S("abcdefghij"), 5, 1, -3);
1584 test(S("abcde"), 2, 4, S("abcdefghij"), 5, 2, -3);
1585 test(S("abcde"), 2, 4, S("abcdefghij"), 5, 4, -3);
1586 test(S("abcde"), 2, 4, S("abcdefghij"), 5, 5, -3);
1587 test(S("abcde"), 2, 4, S("abcdefghij"), 5, 6, -3);
1588 test(S("abcde"), 2, 4, S("abcdefghij"), 9, 0, 3);
1589 test(S("abcde"), 2, 4, S("abcdefghij"), 9, 1, -7);
1590 test(S("abcde"), 2, 4, S("abcdefghij"), 9, 2, -7);
1591 test(S("abcde"), 2, 4, S("abcdefghij"), 10, 0, 3);
1592 test(S("abcde"), 2, 4, S("abcdefghij"), 10, 1, 3);
1593 test(S("abcde"), 2, 4, S("abcdefghij"), 11, 0, 0);
1594 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 0, 0, 3);
1595 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 0, 1, 2);
1596 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 0, 10, 2);
1597 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 0, 19, 2);
1598 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 0, 20, 2);
1599 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 0, 21, 2);
1600 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 1, 0, 3);
1601 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 1, 1, 1);
1602 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 1, 9, 1);
1603 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 1, 18, 1);
1604 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 1, 19, 1);
1605 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 1, 20, 1);
1606 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 10, 0, 3);
1607 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 10, 1, -8);
1608 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 10, 5, -8);
1609 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 10, 9, -8);
1610 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 10, 10, -8);
1611 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 10, 11, -8);
1612 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 19, 0, 3);
1613 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 19, 1, -17);
1614 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 19, 2, -17);
1615 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 20, 0, 3);
1616 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 20, 1, 3);
1617 test(S("abcde"), 2, 4, S("abcdefghijklmnopqrst"), 21, 0, 0);
1618 test(S("abcde"), 4, 0, S(""), 0, 0, 0);
1619 test(S("abcde"), 4, 0, S(""), 0, 1, 0);
1620 test(S("abcde"), 4, 0, S(""), 1, 0, 0);
1621 test(S("abcde"), 4, 0, S("abcde"), 0, 0, 0);
1622 test(S("abcde"), 4, 0, S("abcde"), 0, 1, -1);
1623 test(S("abcde"), 4, 0, S("abcde"), 0, 2, -2);
1624 test(S("abcde"), 4, 0, S("abcde"), 0, 4, -4);
1625 test(S("abcde"), 4, 0, S("abcde"), 0, 5, -5);
1626 test(S("abcde"), 4, 0, S("abcde"), 0, 6, -5);
1627 test(S("abcde"), 4, 0, S("abcde"), 1, 0, 0);
1628 test(S("abcde"), 4, 0, S("abcde"), 1, 1, -1);
1629 test(S("abcde"), 4, 0, S("abcde"), 1, 2, -2);
1630 test(S("abcde"), 4, 0, S("abcde"), 1, 3, -3);
1631 test(S("abcde"), 4, 0, S("abcde"), 1, 4, -4);
1632 test(S("abcde"), 4, 0, S("abcde"), 1, 5, -4);
1633 test(S("abcde"), 4, 0, S("abcde"), 2, 0, 0);
1634 test(S("abcde"), 4, 0, S("abcde"), 2, 1, -1);
1635 test(S("abcde"), 4, 0, S("abcde"), 2, 2, -2);
1636 test(S("abcde"), 4, 0, S("abcde"), 2, 3, -3);
1637 test(S("abcde"), 4, 0, S("abcde"), 2, 4, -3);
1643 test(S("abcde"), 4, 0, S("abcde"), 4, 0, 0);
1644 test(S("abcde"), 4, 0, S("abcde"), 4, 1, -1);
1645 test(S("abcde"), 4, 0, S("abcde"), 4, 2, -1);
1646 test(S("abcde"), 4, 0, S("abcde"), 5, 0, 0);
1647 test(S("abcde"), 4, 0, S("abcde"), 5, 1, 0);
1648 test(S("abcde"), 4, 0, S("abcde"), 6, 0, 0);
1649 test(S("abcde"), 4, 0, S("abcdefghij"), 0, 0, 0);
1650 test(S("abcde"), 4, 0, S("abcdefghij"), 0, 1, -1);
1651 test(S("abcde"), 4, 0, S("abcdefghij"), 0, 5, -5);
1652 test(S("abcde"), 4, 0, S("abcdefghij"), 0, 9, -9);
1653 test(S("abcde"), 4, 0, S("abcdefghij"), 0, 10, -10);
1654 test(S("abcde"), 4, 0, S("abcdefghij"), 0, 11, -10);
1655 test(S("abcde"), 4, 0, S("abcdefghij"), 1, 0, 0);
1656 test(S("abcde"), 4, 0, S("abcdefghij"), 1, 1, -1);
1657 test(S("abcde"), 4, 0, S("abcdefghij"), 1, 4, -4);
1658 test(S("abcde"), 4, 0, S("abcdefghij"), 1, 8, -8);
1659 test(S("abcde"), 4, 0, S("abcdefghij"), 1, 9, -9);
1660 test(S("abcde"), 4, 0, S("abcdefghij"), 1, 10, -9);
1661 test(S("abcde"), 4, 0, S("abcdefghij"), 5, 0, 0);
1662 test(S("abcde"), 4, 0, S("abcdefghij"), 5, 1, -1);
1663 test(S("abcde"), 4, 0, S("abcdefghij"), 5, 2, -2);
1664 test(S("abcde"), 4, 0, S("abcdefghij"), 5, 4, -4);
1665 test(S("abcde"), 4, 0, S("abcdefghij"), 5, 5, -5);
1666 test(S("abcde"), 4, 0, S("abcdefghij"), 5, 6, -5);
1667 test(S("abcde"), 4, 0, S("abcdefghij"), 9, 0, 0);
1668 test(S("abcde"), 4, 0, S("abcdefghij"), 9, 1, -1);
1669 test(S("abcde"), 4, 0, S("abcdefghij"), 9, 2, -1);
1670 test(S("abcde"), 4, 0, S("abcdefghij"), 10, 0, 0);
1671 test(S("abcde"), 4, 0, S("abcdefghij"), 10, 1, 0);
1672 test(S("abcde"), 4, 0, S("abcdefghij"), 11, 0, 0);
1673 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
1674 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 0, 1, -1);
1675 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 0, 10, -10);
1676 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 0, 19, -19);
1677 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 0, 20, -20);
1678 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 0, 21, -20);
1679 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
1680 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 1, 1, -1);
1681 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 1, 9, -9);
1682 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 1, 18, -18);
1683 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 1, 19, -19);
1684 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 1, 20, -19);
1685 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
1686 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 10, 1, -1);
1687 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 10, 5, -5);
1688 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 10, 9, -9);
1689 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 10, 10, -10);
1690 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 10, 11, -10);
1691 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
1692 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 19, 1, -1);
1693 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 19, 2, -1);
1694 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
1695 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
1696 test(S("abcde"), 4, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
1697 test(S("abcde"), 4, 1, S(""), 0, 0, 1);
1698 test(S("abcde"), 4, 1, S(""), 0, 1, 1);
1699 test(S("abcde"), 4, 1, S(""), 1, 0, 0);
1700 test(S("abcde"), 4, 1, S("abcde"), 0, 0, 1);
1701 test(S("abcde"), 4, 1, S("abcde"), 0, 1, 4);
1702 test(S("abcde"), 4, 1, S("abcde"), 0, 2, 4);
1703 test(S("abcde"), 4, 1, S("abcde"), 0, 4, 4);
1704 test(S("abcde"), 4, 1, S("abcde"), 0, 5, 4);
1705 test(S("abcde"), 4, 1, S("abcde"), 0, 6, 4);
1706 test(S("abcde"), 4, 1, S("abcde"), 1, 0, 1);
1707 test(S("abcde"), 4, 1, S("abcde"), 1, 1, 3);
1708 test(S("abcde"), 4, 1, S("abcde"), 1, 2, 3);
1709 test(S("abcde"), 4, 1, S("abcde"), 1, 3, 3);
1710 test(S("abcde"), 4, 1, S("abcde"), 1, 4, 3);
1711 test(S("abcde"), 4, 1, S("abcde"), 1, 5, 3);
1712 test(S("abcde"), 4, 1, S("abcde"), 2, 0, 1);
1713 test(S("abcde"), 4, 1, S("abcde"), 2, 1, 2);
1714 test(S("abcde"), 4, 1, S("abcde"), 2, 2, 2);
1715 test(S("abcde"), 4, 1, S("abcde"), 2, 3, 2);
1716 test(S("abcde"), 4, 1, S("abcde"), 2, 4, 2);
1717 test(S("abcde"), 4, 1, S("abcde"), 4, 0, 1);
1718 test(S("abcde"), 4, 1, S("abcde"), 4, 1, 0);
1719 test(S("abcde"), 4, 1, S("abcde"), 4, 2, 0);
1720 test(S("abcde"), 4, 1, S("abcde"), 5, 0, 1);
1721 test(S("abcde"), 4, 1, S("abcde"), 5, 1, 1);
1722 test(S("abcde"), 4, 1, S("abcde"), 6, 0, 0);
1723 test(S("abcde"), 4, 1, S("abcdefghij"), 0, 0, 1);
1724 test(S("abcde"), 4, 1, S("abcdefghij"), 0, 1, 4);
1725 test(S("abcde"), 4, 1, S("abcdefghij"), 0, 5, 4);
1726 test(S("abcde"), 4, 1, S("abcdefghij"), 0, 9, 4);
1727 test(S("abcde"), 4, 1, S("abcdefghij"), 0, 10, 4);
1728 test(S("abcde"), 4, 1, S("abcdefghij"), 0, 11, 4);
1729 test(S("abcde"), 4, 1, S("abcdefghij"), 1, 0, 1);
1730 test(S("abcde"), 4, 1, S("abcdefghij"), 1, 1, 3);
1731 test(S("abcde"), 4, 1, S("abcdefghij"), 1, 4, 3);
1732 test(S("abcde"), 4, 1, S("abcdefghij"), 1, 8, 3);
1733 test(S("abcde"), 4, 1, S("abcdefghij"), 1, 9, 3);
1734 test(S("abcde"), 4, 1, S("abcdefghij"), 1, 10, 3);
1735 test(S("abcde"), 4, 1, S("abcdefghij"), 5, 0, 1);
1736 test(S("abcde"), 4, 1, S("abcdefghij"), 5, 1, -1);
1737 test(S("abcde"), 4, 1, S("abcdefghij"), 5, 2, -1);
1738 test(S("abcde"), 4, 1, S("abcdefghij"), 5, 4, -1);
1739 test(S("abcde"), 4, 1, S("abcdefghij"), 5, 5, -1);
1740 test(S("abcde"), 4, 1, S("abcdefghij"), 5, 6, -1);
1741 test(S("abcde"), 4, 1, S("abcdefghij"), 9, 0, 1);
1742 test(S("abcde"), 4, 1, S("abcdefghij"), 9, 1, -5);
1748 test(S("abcde"), 4, 1, S("abcdefghij"), 9, 2, -5);
1749 test(S("abcde"), 4, 1, S("abcdefghij"), 10, 0, 1);
1750 test(S("abcde"), 4, 1, S("abcdefghij"), 10, 1, 1);
1751 test(S("abcde"), 4, 1, S("abcdefghij"), 11, 0, 0);
1752 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 0, 0, 1);
1753 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 0, 1, 4);
1754 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 0, 10, 4);
1755 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 0, 19, 4);
1756 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 0, 20, 4);
1757 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 0, 21, 4);
1758 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 1, 0, 1);
1759 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 1, 1, 3);
1760 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 1, 9, 3);
1761 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 1, 18, 3);
1762 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 1, 19, 3);
1763 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 1, 20, 3);
1764 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 10, 0, 1);
1765 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 10, 1, -6);
1766 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 10, 5, -6);
1767 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 10, 9, -6);
1768 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 10, 10, -6);
1769 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 10, 11, -6);
1770 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 19, 0, 1);
1771 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 19, 1, -15);
1772 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 19, 2, -15);
1773 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 20, 0, 1);
1774 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 20, 1, 1);
1775 test(S("abcde"), 4, 1, S("abcdefghijklmnopqrst"), 21, 0, 0);
1776 test(S("abcde"), 4, 2, S(""), 0, 0, 1);
1777 test(S("abcde"), 4, 2, S(""), 0, 1, 1);
1778 test(S("abcde"), 4, 2, S(""), 1, 0, 0);
1779 test(S("abcde"), 4, 2, S("abcde"), 0, 0, 1);
1780 test(S("abcde"), 4, 2, S("abcde"), 0, 1, 4);
1781 test(S("abcde"), 4, 2, S("abcde"), 0, 2, 4);
1782 test(S("abcde"), 4, 2, S("abcde"), 0, 4, 4);
1783 test(S("abcde"), 4, 2, S("abcde"), 0, 5, 4);
1784 test(S("abcde"), 4, 2, S("abcde"), 0, 6, 4);
1785 test(S("abcde"), 4, 2, S("abcde"), 1, 0, 1);
1786 test(S("abcde"), 4, 2, S("abcde"), 1, 1, 3);
1787 test(S("abcde"), 4, 2, S("abcde"), 1, 2, 3);
1788 test(S("abcde"), 4, 2, S("abcde"), 1, 3, 3);
1789 test(S("abcde"), 4, 2, S("abcde"), 1, 4, 3);
1790 test(S("abcde"), 4, 2, S("abcde"), 1, 5, 3);
1791 test(S("abcde"), 4, 2, S("abcde"), 2, 0, 1);
1792 test(S("abcde"), 4, 2, S("abcde"), 2, 1, 2);
1793 test(S("abcde"), 4, 2, S("abcde"), 2, 2, 2);
1794 test(S("abcde"), 4, 2, S("abcde"), 2, 3, 2);
1795 test(S("abcde"), 4, 2, S("abcde"), 2, 4, 2);
1796 test(S("abcde"), 4, 2, S("abcde"), 4, 0, 1);
1797 test(S("abcde"), 4, 2, S("abcde"), 4, 1, 0);
1798 test(S("abcde"), 4, 2, S("abcde"), 4, 2, 0);
1799 test(S("abcde"), 4, 2, S("abcde"), 5, 0, 1);
1800 test(S("abcde"), 4, 2, S("abcde"), 5, 1, 1);
1801 test(S("abcde"), 4, 2, S("abcde"), 6, 0, 0);
1802 test(S("abcde"), 4, 2, S("abcdefghij"), 0, 0, 1);
1803 test(S("abcde"), 4, 2, S("abcdefghij"), 0, 1, 4);
1804 test(S("abcde"), 4, 2, S("abcdefghij"), 0, 5, 4);
1805 test(S("abcde"), 4, 2, S("abcdefghij"), 0, 9, 4);
1806 test(S("abcde"), 4, 2, S("abcdefghij"), 0, 10, 4);
1807 test(S("abcde"), 4, 2, S("abcdefghij"), 0, 11, 4);
1808 test(S("abcde"), 4, 2, S("abcdefghij"), 1, 0, 1);
1809 test(S("abcde"), 4, 2, S("abcdefghij"), 1, 1, 3);
1810 test(S("abcde"), 4, 2, S("abcdefghij"), 1, 4, 3);
1811 test(S("abcde"), 4, 2, S("abcdefghij"), 1, 8, 3);
1812 test(S("abcde"), 4, 2, S("abcdefghij"), 1, 9, 3);
1813 test(S("abcde"), 4, 2, S("abcdefghij"), 1, 10, 3);
1814 test(S("abcde"), 4, 2, S("abcdefghij"), 5, 0, 1);
1815 test(S("abcde"), 4, 2, S("abcdefghij"), 5, 1, -1);
1816 test(S("abcde"), 4, 2, S("abcdefghij"), 5, 2, -1);
1817 test(S("abcde"), 4, 2, S("abcdefghij"), 5, 4, -1);
1818 test(S("abcde"), 4, 2, S("abcdefghij"), 5, 5, -1);
1819 test(S("abcde"), 4, 2, S("abcdefghij"), 5, 6, -1);
1820 test(S("abcde"), 4, 2, S("abcdefghij"), 9, 0, 1);
1821 test(S("abcde"), 4, 2, S("abcdefghij"), 9, 1, -5);
1822 test(S("abcde"), 4, 2, S("abcdefghij"), 9, 2, -5);
1823 test(S("abcde"), 4, 2, S("abcdefghij"), 10, 0, 1);
1824 test(S("abcde"), 4, 2, S("abcdefghij"), 10, 1, 1);
1825 test(S("abcde"), 4, 2, S("abcdefghij"), 11, 0, 0);
1826 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 0, 0, 1);
1827 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 0, 1, 4);
1828 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 0, 10, 4);
1829 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 0, 19, 4);
1830 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 0, 20, 4);
1831 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 0, 21, 4);
1832 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 1, 0, 1);
1833 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 1, 1, 3);
1834 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 1, 9, 3);
1835 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 1, 18, 3);
1836 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 1, 19, 3);
1837 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 1, 20, 3);
1838 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 10, 0, 1);
1839 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 10, 1, -6);
1840 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 10, 5, -6);
1841 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 10, 9, -6);
1842 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 10, 10, -6);
1843 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 10, 11, -6);
1844 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 19, 0, 1);
1845 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 19, 1, -15);
1846 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 19, 2, -15);
1847 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 20, 0, 1);
1853 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 20, 1, 1);
1854 test(S("abcde"), 4, 2, S("abcdefghijklmnopqrst"), 21, 0, 0);
1855 test(S("abcde"), 5, 0, S(""), 0, 0, 0);
1856 test(S("abcde"), 5, 0, S(""), 0, 1, 0);
1857 test(S("abcde"), 5, 0, S(""), 1, 0, 0);
1858 test(S("abcde"), 5, 0, S("abcde"), 0, 0, 0);
1859 test(S("abcde"), 5, 0, S("abcde"), 0, 1, -1);
1860 test(S("abcde"), 5, 0, S("abcde"), 0, 2, -2);
1861 test(S("abcde"), 5, 0, S("abcde"), 0, 4, -4);
1862 test(S("abcde"), 5, 0, S("abcde"), 0, 5, -5);
1863 test(S("abcde"), 5, 0, S("abcde"), 0, 6, -5);
1864 test(S("abcde"), 5, 0, S("abcde"), 1, 0, 0);
1865 test(S("abcde"), 5, 0, S("abcde"), 1, 1, -1);
1866 test(S("abcde"), 5, 0, S("abcde"), 1, 2, -2);
1867 test(S("abcde"), 5, 0, S("abcde"), 1, 3, -3);
1868 test(S("abcde"), 5, 0, S("abcde"), 1, 4, -4);
1869 test(S("abcde"), 5, 0, S("abcde"), 1, 5, -4);
1870 test(S("abcde"), 5, 0, S("abcde"), 2, 0, 0);
1871 test(S("abcde"), 5, 0, S("abcde"), 2, 1, -1);
1872 test(S("abcde"), 5, 0, S("abcde"), 2, 2, -2);
1873 test(S("abcde"), 5, 0, S("abcde"), 2, 3, -3);
1874 test(S("abcde"), 5, 0, S("abcde"), 2, 4, -3);
1875 test(S("abcde"), 5, 0, S("abcde"), 4, 0, 0);
1876 test(S("abcde"), 5, 0, S("abcde"), 4, 1, -1);
1877 test(S("abcde"), 5, 0, S("abcde"), 4, 2, -1);
1878 test(S("abcde"), 5, 0, S("abcde"), 5, 0, 0);
1879 test(S("abcde"), 5, 0, S("abcde"), 5, 1, 0);
1880 test(S("abcde"), 5, 0, S("abcde"), 6, 0, 0);
1881 test(S("abcde"), 5, 0, S("abcdefghij"), 0, 0, 0);
1882 test(S("abcde"), 5, 0, S("abcdefghij"), 0, 1, -1);
1883 test(S("abcde"), 5, 0, S("abcdefghij"), 0, 5, -5);
1884 test(S("abcde"), 5, 0, S("abcdefghij"), 0, 9, -9);
1885 test(S("abcde"), 5, 0, S("abcdefghij"), 0, 10, -10);
1886 test(S("abcde"), 5, 0, S("abcdefghij"), 0, 11, -10);
1887 test(S("abcde"), 5, 0, S("abcdefghij"), 1, 0, 0);
1888 test(S("abcde"), 5, 0, S("abcdefghij"), 1, 1, -1);
1889 test(S("abcde"), 5, 0, S("abcdefghij"), 1, 4, -4);
1890 test(S("abcde"), 5, 0, S("abcdefghij"), 1, 8, -8);
1891 test(S("abcde"), 5, 0, S("abcdefghij"), 1, 9, -9);
1892 test(S("abcde"), 5, 0, S("abcdefghij"), 1, 10, -9);
1893 test(S("abcde"), 5, 0, S("abcdefghij"), 5, 0, 0);
1894 test(S("abcde"), 5, 0, S("abcdefghij"), 5, 1, -1);
1895 test(S("abcde"), 5, 0, S("abcdefghij"), 5, 2, -2);
1896 test(S("abcde"), 5, 0, S("abcdefghij"), 5, 4, -4);
1897 test(S("abcde"), 5, 0, S("abcdefghij"), 5, 5, -5);
1898 test(S("abcde"), 5, 0, S("abcdefghij"), 5, 6, -5);
1899 test(S("abcde"), 5, 0, S("abcdefghij"), 9, 0, 0);
1900 test(S("abcde"), 5, 0, S("abcdefghij"), 9, 1, -1);
1901 test(S("abcde"), 5, 0, S("abcdefghij"), 9, 2, -1);
1902 test(S("abcde"), 5, 0, S("abcdefghij"), 10, 0, 0);
1903 test(S("abcde"), 5, 0, S("abcdefghij"), 10, 1, 0);
1904 test(S("abcde"), 5, 0, S("abcdefghij"), 11, 0, 0);
1905 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
1906 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 0, 1, -1);
1907 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 0, 10, -10);
1908 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 0, 19, -19);
1909 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 0, 20, -20);
1910 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 0, 21, -20);
1911 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
1912 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 1, 1, -1);
1913 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 1, 9, -9);
1914 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 1, 18, -18);
1915 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 1, 19, -19);
1916 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 1, 20, -19);
1917 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
1918 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 10, 1, -1);
1919 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 10, 5, -5);
1920 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 10, 9, -9);
1921 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 10, 10, -10);
1922 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 10, 11, -10);
1923 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
1924 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 19, 1, -1);
1925 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 19, 2, -1);
1926 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
1927 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
1928 test(S("abcde"), 5, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
1929 test(S("abcde"), 5, 1, S(""), 0, 0, 0);
1930 test(S("abcde"), 5, 1, S(""), 0, 1, 0);
1931 test(S("abcde"), 5, 1, S(""), 1, 0, 0);
1932 test(S("abcde"), 5, 1, S("abcde"), 0, 0, 0);
1933 test(S("abcde"), 5, 1, S("abcde"), 0, 1, -1);
1934 test(S("abcde"), 5, 1, S("abcde"), 0, 2, -2);
1935 test(S("abcde"), 5, 1, S("abcde"), 0, 4, -4);
1936 test(S("abcde"), 5, 1, S("abcde"), 0, 5, -5);
1937 test(S("abcde"), 5, 1, S("abcde"), 0, 6, -5);
1938 test(S("abcde"), 5, 1, S("abcde"), 1, 0, 0);
1939 test(S("abcde"), 5, 1, S("abcde"), 1, 1, -1);
1940 test(S("abcde"), 5, 1, S("abcde"), 1, 2, -2);
1941 test(S("abcde"), 5, 1, S("abcde"), 1, 3, -3);
1942 test(S("abcde"), 5, 1, S("abcde"), 1, 4, -4);
1943 test(S("abcde"), 5, 1, S("abcde"), 1, 5, -4);
1944 test(S("abcde"), 5, 1, S("abcde"), 2, 0, 0);
1945 test(S("abcde"), 5, 1, S("abcde"), 2, 1, -1);
1946 test(S("abcde"), 5, 1, S("abcde"), 2, 2, -2);
1947 test(S("abcde"), 5, 1, S("abcde"), 2, 3, -3);
1948 test(S("abcde"), 5, 1, S("abcde"), 2, 4, -3);
1949 test(S("abcde"), 5, 1, S("abcde"), 4, 0, 0);
1950 test(S("abcde"), 5, 1, S("abcde"), 4, 1, -1);
1951 test(S("abcde"), 5, 1, S("abcde"), 4, 2, -1);
1952 test(S("abcde"), 5, 1, S("abcde"), 5, 0, 0);
1958 test(S("abcde"), 5, 1, S("abcde"), 5, 1, 0);
1959 test(S("abcde"), 5, 1, S("abcde"), 6, 0, 0);
1960 test(S("abcde"), 5, 1, S("abcdefghij"), 0, 0, 0);
1961 test(S("abcde"), 5, 1, S("abcdefghij"), 0, 1, -1);
1962 test(S("abcde"), 5, 1, S("abcdefghij"), 0, 5, -5);
1963 test(S("abcde"), 5, 1, S("abcdefghij"), 0, 9, -9);
1964 test(S("abcde"), 5, 1, S("abcdefghij"), 0, 10, -10);
1965 test(S("abcde"), 5, 1, S("abcdefghij"), 0, 11, -10);
1966 test(S("abcde"), 5, 1, S("abcdefghij"), 1, 0, 0);
1967 test(S("abcde"), 5, 1, S("abcdefghij"), 1, 1, -1);
1968 test(S("abcde"), 5, 1, S("abcdefghij"), 1, 4, -4);
1969 test(S("abcde"), 5, 1, S("abcdefghij"), 1, 8, -8);
1970 test(S("abcde"), 5, 1, S("abcdefghij"), 1, 9, -9);
1971 test(S("abcde"), 5, 1, S("abcdefghij"), 1, 10, -9);
1972 test(S("abcde"), 5, 1, S("abcdefghij"), 5, 0, 0);
1973 test(S("abcde"), 5, 1, S("abcdefghij"), 5, 1, -1);
1974 test(S("abcde"), 5, 1, S("abcdefghij"), 5, 2, -2);
1975 test(S("abcde"), 5, 1, S("abcdefghij"), 5, 4, -4);
1976 test(S("abcde"), 5, 1, S("abcdefghij"), 5, 5, -5);
1977 test(S("abcde"), 5, 1, S("abcdefghij"), 5, 6, -5);
1978 test(S("abcde"), 5, 1, S("abcdefghij"), 9, 0, 0);
1979 test(S("abcde"), 5, 1, S("abcdefghij"), 9, 1, -1);
1980 test(S("abcde"), 5, 1, S("abcdefghij"), 9, 2, -1);
1981 test(S("abcde"), 5, 1, S("abcdefghij"), 10, 0, 0);
1982 test(S("abcde"), 5, 1, S("abcdefghij"), 10, 1, 0);
1983 test(S("abcde"), 5, 1, S("abcdefghij"), 11, 0, 0);
1984 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 0, 0, 0);
1985 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 0, 1, -1);
1986 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 0, 10, -10);
1987 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 0, 19, -19);
1988 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 0, 20, -20);
1989 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 0, 21, -20);
1990 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 1, 0, 0);
1991 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 1, 1, -1);
1992 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 1, 9, -9);
1993 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 1, 18, -18);
1994 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 1, 19, -19);
1995 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 1, 20, -19);
1996 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 10, 0, 0);
1997 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 10, 1, -1);
1998 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 10, 5, -5);
1999 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 10, 9, -9);
2000 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 10, 10, -10);
2001 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 10, 11, -10);
2002 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 19, 0, 0);
2003 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 19, 1, -1);
2004 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 19, 2, -1);
2005 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 20, 0, 0);
2006 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 20, 1, 0);
2007 test(S("abcde"), 5, 1, S("abcdefghijklmnopqrst"), 21, 0, 0);
2008 test(S("abcde"), 6, 0, S(""), 0, 0, 0);
2009 test(S("abcde"), 6, 0, S(""), 0, 1, 0);
2010 test(S("abcde"), 6, 0, S(""), 1, 0, 0);
2011 test(S("abcde"), 6, 0, S("abcde"), 0, 0, 0);
2012 test(S("abcde"), 6, 0, S("abcde"), 0, 1, 0);
2013 test(S("abcde"), 6, 0, S("abcde"), 0, 2, 0);
2014 test(S("abcde"), 6, 0, S("abcde"), 0, 4, 0);
2015 test(S("abcde"), 6, 0, S("abcde"), 0, 5, 0);
2016 test(S("abcde"), 6, 0, S("abcde"), 0, 6, 0);
2017 test(S("abcde"), 6, 0, S("abcde"), 1, 0, 0);
2018 test(S("abcde"), 6, 0, S("abcde"), 1, 1, 0);
2019 test(S("abcde"), 6, 0, S("abcde"), 1, 2, 0);
2020 test(S("abcde"), 6, 0, S("abcde"), 1, 3, 0);
2021 test(S("abcde"), 6, 0, S("abcde"), 1, 4, 0);
2022 test(S("abcde"), 6, 0, S("abcde"), 1, 5, 0);
2023 test(S("abcde"), 6, 0, S("abcde"), 2, 0, 0);
2024 test(S("abcde"), 6, 0, S("abcde"), 2, 1, 0);
2025 test(S("abcde"), 6, 0, S("abcde"), 2, 2, 0);
2026 test(S("abcde"), 6, 0, S("abcde"), 2, 3, 0);
2027 test(S("abcde"), 6, 0, S("abcde"), 2, 4, 0);
2028 test(S("abcde"), 6, 0, S("abcde"), 4, 0, 0);
2029 test(S("abcde"), 6, 0, S("abcde"), 4, 1, 0);
2030 test(S("abcde"), 6, 0, S("abcde"), 4, 2, 0);
2031 test(S("abcde"), 6, 0, S("abcde"), 5, 0, 0);
2032 test(S("abcde"), 6, 0, S("abcde"), 5, 1, 0);
2033 test(S("abcde"), 6, 0, S("abcde"), 6, 0, 0);
2034 test(S("abcde"), 6, 0, S("abcdefghij"), 0, 0, 0);
2035 test(S("abcde"), 6, 0, S("abcdefghij"), 0, 1, 0);
2036 test(S("abcde"), 6, 0, S("abcdefghij"), 0, 5, 0);
2037 test(S("abcde"), 6, 0, S("abcdefghij"), 0, 9, 0);
2038 test(S("abcde"), 6, 0, S("abcdefghij"), 0, 10, 0);
2039 test(S("abcde"), 6, 0, S("abcdefghij"), 0, 11, 0);
2040 test(S("abcde"), 6, 0, S("abcdefghij"), 1, 0, 0);
2041 test(S("abcde"), 6, 0, S("abcdefghij"), 1, 1, 0);
2042 test(S("abcde"), 6, 0, S("abcdefghij"), 1, 4, 0);
2043 test(S("abcde"), 6, 0, S("abcdefghij"), 1, 8, 0);
2044 test(S("abcde"), 6, 0, S("abcdefghij"), 1, 9, 0);
2045 test(S("abcde"), 6, 0, S("abcdefghij"), 1, 10, 0);
2046 test(S("abcde"), 6, 0, S("abcdefghij"), 5, 0, 0);
2047 test(S("abcde"), 6, 0, S("abcdefghij"), 5, 1, 0);
2048 test(S("abcde"), 6, 0, S("abcdefghij"), 5, 2, 0);
2049 test(S("abcde"), 6, 0, S("abcdefghij"), 5, 4, 0);
2050 test(S("abcde"), 6, 0, S("abcdefghij"), 5, 5, 0);
2051 test(S("abcde"), 6, 0, S("abcdefghij"), 5, 6, 0);
2052 test(S("abcde"), 6, 0, S("abcdefghij"), 9, 0, 0);
2053 test(S("abcde"), 6, 0, S("abcdefghij"), 9, 1, 0);
2054 test(S("abcde"), 6, 0, S("abcdefghij"), 9, 2, 0);
2055 test(S("abcde"), 6, 0, S("abcdefghij"), 10, 0, 0);
2056 test(S("abcde"), 6, 0, S("abcdefghij"), 10, 1, 0);
2057 test(S("abcde"), 6, 0, S("abcdefghij"), 11, 0, 0);
2063 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
2064 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 0, 1, 0);
2065 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 0, 10, 0);
2066 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 0, 19, 0);
2067 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 0, 20, 0);
2068 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 0, 21, 0);
2069 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
2070 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 1, 1, 0);
2071 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 1, 9, 0);
2072 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 1, 18, 0);
2073 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 1, 19, 0);
2074 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 1, 20, 0);
2075 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
2076 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 10, 1, 0);
2077 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 10, 5, 0);
2078 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 10, 9, 0);
2079 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 10, 10, 0);
2080 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 10, 11, 0);
2081 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
2082 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 19, 1, 0);
2083 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 19, 2, 0);
2084 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
2085 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
2086 test(S("abcde"), 6, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
2087 test(S("abcdefghij"), 0, 0, S(""), 0, 0, 0);
2088 test(S("abcdefghij"), 0, 0, S(""), 0, 1, 0);
2089 test(S("abcdefghij"), 0, 0, S(""), 1, 0, 0);
2090 test(S("abcdefghij"), 0, 0, S("abcde"), 0, 0, 0);
2091 test(S("abcdefghij"), 0, 0, S("abcde"), 0, 1, -1);
2092 test(S("abcdefghij"), 0, 0, S("abcde"), 0, 2, -2);
2093 test(S("abcdefghij"), 0, 0, S("abcde"), 0, 4, -4);
2094 test(S("abcdefghij"), 0, 0, S("abcde"), 0, 5, -5);
2095 test(S("abcdefghij"), 0, 0, S("abcde"), 0, 6, -5);
2096 test(S("abcdefghij"), 0, 0, S("abcde"), 1, 0, 0);
2097 test(S("abcdefghij"), 0, 0, S("abcde"), 1, 1, -1);
2098 test(S("abcdefghij"), 0, 0, S("abcde"), 1, 2, -2);
2099 test(S("abcdefghij"), 0, 0, S("abcde"), 1, 3, -3);
2100 test(S("abcdefghij"), 0, 0, S("abcde"), 1, 4, -4);
2101 test(S("abcdefghij"), 0, 0, S("abcde"), 1, 5, -4);
2102 test(S("abcdefghij"), 0, 0, S("abcde"), 2, 0, 0);
2103 test(S("abcdefghij"), 0, 0, S("abcde"), 2, 1, -1);
2104 test(S("abcdefghij"), 0, 0, S("abcde"), 2, 2, -2);
2105 test(S("abcdefghij"), 0, 0, S("abcde"), 2, 3, -3);
2106 test(S("abcdefghij"), 0, 0, S("abcde"), 2, 4, -3);
2107 test(S("abcdefghij"), 0, 0, S("abcde"), 4, 0, 0);
2108 test(S("abcdefghij"), 0, 0, S("abcde"), 4, 1, -1);
2109 test(S("abcdefghij"), 0, 0, S("abcde"), 4, 2, -1);
2110 test(S("abcdefghij"), 0, 0, S("abcde"), 5, 0, 0);
2111 test(S("abcdefghij"), 0, 0, S("abcde"), 5, 1, 0);
2112 test(S("abcdefghij"), 0, 0, S("abcde"), 6, 0, 0);
2113 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 0, 0, 0);
2114 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 0, 1, -1);
2115 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 0, 5, -5);
2116 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 0, 9, -9);
2117 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 0, 10, -10);
2118 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 0, 11, -10);
2119 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 1, 0, 0);
2120 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 1, 1, -1);
2121 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 1, 4, -4);
2122 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 1, 8, -8);
2123 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 1, 9, -9);
2124 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 1, 10, -9);
2125 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 5, 0, 0);
2126 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 5, 1, -1);
2127 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 5, 2, -2);
2128 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 5, 4, -4);
2129 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 5, 5, -5);
2130 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 5, 6, -5);
2131 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 9, 0, 0);
2132 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 9, 1, -1);
2133 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 9, 2, -1);
2134 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 10, 0, 0);
2135 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 10, 1, 0);
2136 test(S("abcdefghij"), 0, 0, S("abcdefghij"), 11, 0, 0);
2137 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
2138 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 0, 1, -1);
2139 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 0, 10, -10);
2140 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 0, 19, -19);
2141 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 0, 20, -20);
2142 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 0, 21, -20);
2143 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
2144 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 1, 1, -1);
2145 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 1, 9, -9);
2146 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 1, 18, -18);
2147 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 1, 19, -19);
2148 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 1, 20, -19);
2149 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
2150 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 10, 1, -1);
2151 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 10, 5, -5);
2152 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 10, 9, -9);
2153 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 10, 10, -10);
2154 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 10, 11, -10);
2155 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
2156 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 19, 1, -1);
2157 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 19, 2, -1);
2158 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
2159 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
2160 test(S("abcdefghij"), 0, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
2161 test(S("abcdefghij"), 0, 1, S(""), 0, 0, 1);
2162 test(S("abcdefghij"), 0, 1, S(""), 0, 1, 1);
2168 test(S("abcdefghij"), 0, 1, S(""), 1, 0, 0);
2169 test(S("abcdefghij"), 0, 1, S("abcde"), 0, 0, 1);
2170 test(S("abcdefghij"), 0, 1, S("abcde"), 0, 1, 0);
2171 test(S("abcdefghij"), 0, 1, S("abcde"), 0, 2, -1);
2172 test(S("abcdefghij"), 0, 1, S("abcde"), 0, 4, -3);
2173 test(S("abcdefghij"), 0, 1, S("abcde"), 0, 5, -4);
2174 test(S("abcdefghij"), 0, 1, S("abcde"), 0, 6, -4);
2175 test(S("abcdefghij"), 0, 1, S("abcde"), 1, 0, 1);
2176 test(S("abcdefghij"), 0, 1, S("abcde"), 1, 1, -1);
2177 test(S("abcdefghij"), 0, 1, S("abcde"), 1, 2, -1);
2178 test(S("abcdefghij"), 0, 1, S("abcde"), 1, 3, -1);
2179 test(S("abcdefghij"), 0, 1, S("abcde"), 1, 4, -1);
2180 test(S("abcdefghij"), 0, 1, S("abcde"), 1, 5, -1);
2181 test(S("abcdefghij"), 0, 1, S("abcde"), 2, 0, 1);
2182 test(S("abcdefghij"), 0, 1, S("abcde"), 2, 1, -2);
2183 test(S("abcdefghij"), 0, 1, S("abcde"), 2, 2, -2);
2184 test(S("abcdefghij"), 0, 1, S("abcde"), 2, 3, -2);
2185 test(S("abcdefghij"), 0, 1, S("abcde"), 2, 4, -2);
2186 test(S("abcdefghij"), 0, 1, S("abcde"), 4, 0, 1);
2187 test(S("abcdefghij"), 0, 1, S("abcde"), 4, 1, -4);
2188 test(S("abcdefghij"), 0, 1, S("abcde"), 4, 2, -4);
2189 test(S("abcdefghij"), 0, 1, S("abcde"), 5, 0, 1);
2190 test(S("abcdefghij"), 0, 1, S("abcde"), 5, 1, 1);
2191 test(S("abcdefghij"), 0, 1, S("abcde"), 6, 0, 0);
2192 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 0, 0, 1);
2193 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 0, 1, 0);
2194 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 0, 5, -4);
2195 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 0, 9, -8);
2196 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 0, 10, -9);
2197 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 0, 11, -9);
2198 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 1, 0, 1);
2199 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 1, 1, -1);
2200 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 1, 4, -1);
2201 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 1, 8, -1);
2202 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 1, 9, -1);
2203 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 1, 10, -1);
2204 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 5, 0, 1);
2205 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 5, 1, -5);
2206 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 5, 2, -5);
2207 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 5, 4, -5);
2208 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 5, 5, -5);
2209 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 5, 6, -5);
2210 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 9, 0, 1);
2211 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 9, 1, -9);
2212 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 9, 2, -9);
2213 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 10, 0, 1);
2214 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 10, 1, 1);
2215 test(S("abcdefghij"), 0, 1, S("abcdefghij"), 11, 0, 0);
2216 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 0, 0, 1);
2217 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 0, 1, 0);
2218 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 0, 10, -9);
2219 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 0, 19, -18);
2220 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 0, 20, -19);
2221 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 0, 21, -19);
2222 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 1, 0, 1);
2223 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 1, 1, -1);
2224 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 1, 9, -1);
2225 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 1, 18, -1);
2226 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 1, 19, -1);
2227 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 1, 20, -1);
2228 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 10, 0, 1);
2229 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 10, 1, -10);
2230 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 10, 5, -10);
2231 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 10, 9, -10);
2232 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 10, 10, -10);
2233 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 10, 11, -10);
2234 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 19, 0, 1);
2235 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 19, 1, -19);
2236 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 19, 2, -19);
2237 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 20, 0, 1);
2238 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 20, 1, 1);
2239 test(S("abcdefghij"), 0, 1, S("abcdefghijklmnopqrst"), 21, 0, 0);
2240 test(S("abcdefghij"), 0, 5, S(""), 0, 0, 5);
2241 test(S("abcdefghij"), 0, 5, S(""), 0, 1, 5);
2242 test(S("abcdefghij"), 0, 5, S(""), 1, 0, 0);
2243 test(S("abcdefghij"), 0, 5, S("abcde"), 0, 0, 5);
2244 test(S("abcdefghij"), 0, 5, S("abcde"), 0, 1, 4);
2245 test(S("abcdefghij"), 0, 5, S("abcde"), 0, 2, 3);
2246 test(S("abcdefghij"), 0, 5, S("abcde"), 0, 4, 1);
2247 test(S("abcdefghij"), 0, 5, S("abcde"), 0, 5, 0);
2248 test(S("abcdefghij"), 0, 5, S("abcde"), 0, 6, 0);
2249 test(S("abcdefghij"), 0, 5, S("abcde"), 1, 0, 5);
2250 test(S("abcdefghij"), 0, 5, S("abcde"), 1, 1, -1);
2251 test(S("abcdefghij"), 0, 5, S("abcde"), 1, 2, -1);
2252 test(S("abcdefghij"), 0, 5, S("abcde"), 1, 3, -1);
2253 test(S("abcdefghij"), 0, 5, S("abcde"), 1, 4, -1);
2254 test(S("abcdefghij"), 0, 5, S("abcde"), 1, 5, -1);
2255 test(S("abcdefghij"), 0, 5, S("abcde"), 2, 0, 5);
2256 test(S("abcdefghij"), 0, 5, S("abcde"), 2, 1, -2);
2257 test(S("abcdefghij"), 0, 5, S("abcde"), 2, 2, -2);
2258 test(S("abcdefghij"), 0, 5, S("abcde"), 2, 3, -2);
2259 test(S("abcdefghij"), 0, 5, S("abcde"), 2, 4, -2);
2260 test(S("abcdefghij"), 0, 5, S("abcde"), 4, 0, 5);
2261 test(S("abcdefghij"), 0, 5, S("abcde"), 4, 1, -4);
2262 test(S("abcdefghij"), 0, 5, S("abcde"), 4, 2, -4);
2263 test(S("abcdefghij"), 0, 5, S("abcde"), 5, 0, 5);
2264 test(S("abcdefghij"), 0, 5, S("abcde"), 5, 1, 5);
2265 test(S("abcdefghij"), 0, 5, S("abcde"), 6, 0, 0);
2266 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 0, 0, 5);
2267 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 0, 1, 4);
2273 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 0, 5, 0);
2274 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 0, 9, -4);
2275 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 0, 10, -5);
2276 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 0, 11, -5);
2277 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 1, 0, 5);
2278 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 1, 1, -1);
2279 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 1, 4, -1);
2280 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 1, 8, -1);
2281 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 1, 9, -1);
2282 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 1, 10, -1);
2283 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 5, 0, 5);
2284 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 5, 1, -5);
2285 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 5, 2, -5);
2286 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 5, 4, -5);
2287 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 5, 5, -5);
2288 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 5, 6, -5);
2289 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 9, 0, 5);
2290 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 9, 1, -9);
2291 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 9, 2, -9);
2292 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 10, 0, 5);
2293 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 10, 1, 5);
2294 test(S("abcdefghij"), 0, 5, S("abcdefghij"), 11, 0, 0);
2295 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 0, 0, 5);
2296 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 0, 1, 4);
2297 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 0, 10, -5);
2298 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 0, 19, -14);
2299 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 0, 20, -15);
2300 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 0, 21, -15);
2301 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 1, 0, 5);
2302 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 1, 1, -1);
2303 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 1, 9, -1);
2304 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 1, 18, -1);
2305 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 1, 19, -1);
2306 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 1, 20, -1);
2307 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 10, 0, 5);
2308 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 10, 1, -10);
2309 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 10, 5, -10);
2310 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 10, 9, -10);
2311 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 10, 10, -10);
2312 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 10, 11, -10);
2313 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 19, 0, 5);
2314 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 19, 1, -19);
2315 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 19, 2, -19);
2316 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 20, 0, 5);
2317 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 20, 1, 5);
2318 test(S("abcdefghij"), 0, 5, S("abcdefghijklmnopqrst"), 21, 0, 0);
2319 test(S("abcdefghij"), 0, 9, S(""), 0, 0, 9);
2320 test(S("abcdefghij"), 0, 9, S(""), 0, 1, 9);
2321 test(S("abcdefghij"), 0, 9, S(""), 1, 0, 0);
2322 test(S("abcdefghij"), 0, 9, S("abcde"), 0, 0, 9);
2323 test(S("abcdefghij"), 0, 9, S("abcde"), 0, 1, 8);
2324 test(S("abcdefghij"), 0, 9, S("abcde"), 0, 2, 7);
2325 test(S("abcdefghij"), 0, 9, S("abcde"), 0, 4, 5);
2326 test(S("abcdefghij"), 0, 9, S("abcde"), 0, 5, 4);
2327 test(S("abcdefghij"), 0, 9, S("abcde"), 0, 6, 4);
2328 test(S("abcdefghij"), 0, 9, S("abcde"), 1, 0, 9);
2329 test(S("abcdefghij"), 0, 9, S("abcde"), 1, 1, -1);
2330 test(S("abcdefghij"), 0, 9, S("abcde"), 1, 2, -1);
2331 test(S("abcdefghij"), 0, 9, S("abcde"), 1, 3, -1);
2332 test(S("abcdefghij"), 0, 9, S("abcde"), 1, 4, -1);
2333 test(S("abcdefghij"), 0, 9, S("abcde"), 1, 5, -1);
2334 test(S("abcdefghij"), 0, 9, S("abcde"), 2, 0, 9);
2335 test(S("abcdefghij"), 0, 9, S("abcde"), 2, 1, -2);
2336 test(S("abcdefghij"), 0, 9, S("abcde"), 2, 2, -2);
2337 test(S("abcdefghij"), 0, 9, S("abcde"), 2, 3, -2);
2338 test(S("abcdefghij"), 0, 9, S("abcde"), 2, 4, -2);
2339 test(S("abcdefghij"), 0, 9, S("abcde"), 4, 0, 9);
2340 test(S("abcdefghij"), 0, 9, S("abcde"), 4, 1, -4);
2341 test(S("abcdefghij"), 0, 9, S("abcde"), 4, 2, -4);
2342 test(S("abcdefghij"), 0, 9, S("abcde"), 5, 0, 9);
2343 test(S("abcdefghij"), 0, 9, S("abcde"), 5, 1, 9);
2344 test(S("abcdefghij"), 0, 9, S("abcde"), 6, 0, 0);
2345 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 0, 0, 9);
2346 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 0, 1, 8);
2347 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 0, 5, 4);
2348 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 0, 9, 0);
2349 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 0, 10, -1);
2350 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 0, 11, -1);
2351 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 1, 0, 9);
2352 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 1, 1, -1);
2353 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 1, 4, -1);
2354 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 1, 8, -1);
2355 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 1, 9, -1);
2356 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 1, 10, -1);
2357 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 5, 0, 9);
2358 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 5, 1, -5);
2359 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 5, 2, -5);
2360 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 5, 4, -5);
2361 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 5, 5, -5);
2362 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 5, 6, -5);
2363 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 9, 0, 9);
2364 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 9, 1, -9);
2365 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 9, 2, -9);
2366 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 10, 0, 9);
2367 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 10, 1, 9);
2368 test(S("abcdefghij"), 0, 9, S("abcdefghij"), 11, 0, 0);
2369 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 0, 0, 9);
2370 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 0, 1, 8);
2371 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 0, 10, -1);
2372 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 0, 19, -10);
2378 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 0, 20, -11);
2379 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 0, 21, -11);
2380 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 1, 0, 9);
2381 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 1, 1, -1);
2382 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 1, 9, -1);
2383 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 1, 18, -1);
2384 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 1, 19, -1);
2385 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 1, 20, -1);
2386 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 10, 0, 9);
2387 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 10, 1, -10);
2388 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 10, 5, -10);
2389 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 10, 9, -10);
2390 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 10, 10, -10);
2391 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 10, 11, -10);
2392 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 19, 0, 9);
2393 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 19, 1, -19);
2394 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 19, 2, -19);
2395 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 20, 0, 9);
2396 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 20, 1, 9);
2397 test(S("abcdefghij"), 0, 9, S("abcdefghijklmnopqrst"), 21, 0, 0);
2398 test(S("abcdefghij"), 0, 10, S(""), 0, 0, 10);
2399 test(S("abcdefghij"), 0, 10, S(""), 0, 1, 10);
2400 test(S("abcdefghij"), 0, 10, S(""), 1, 0, 0);
2401 test(S("abcdefghij"), 0, 10, S("abcde"), 0, 0, 10);
2402 test(S("abcdefghij"), 0, 10, S("abcde"), 0, 1, 9);
2403 test(S("abcdefghij"), 0, 10, S("abcde"), 0, 2, 8);
2404 test(S("abcdefghij"), 0, 10, S("abcde"), 0, 4, 6);
2405 test(S("abcdefghij"), 0, 10, S("abcde"), 0, 5, 5);
2406 test(S("abcdefghij"), 0, 10, S("abcde"), 0, 6, 5);
2407 test(S("abcdefghij"), 0, 10, S("abcde"), 1, 0, 10);
2408 test(S("abcdefghij"), 0, 10, S("abcde"), 1, 1, -1);
2409 test(S("abcdefghij"), 0, 10, S("abcde"), 1, 2, -1);
2410 test(S("abcdefghij"), 0, 10, S("abcde"), 1, 3, -1);
2411 test(S("abcdefghij"), 0, 10, S("abcde"), 1, 4, -1);
2412 test(S("abcdefghij"), 0, 10, S("abcde"), 1, 5, -1);
2413 test(S("abcdefghij"), 0, 10, S("abcde"), 2, 0, 10);
2414 test(S("abcdefghij"), 0, 10, S("abcde"), 2, 1, -2);
2415 test(S("abcdefghij"), 0, 10, S("abcde"), 2, 2, -2);
2416 test(S("abcdefghij"), 0, 10, S("abcde"), 2, 3, -2);
2417 test(S("abcdefghij"), 0, 10, S("abcde"), 2, 4, -2);
2418 test(S("abcdefghij"), 0, 10, S("abcde"), 4, 0, 10);
2419 test(S("abcdefghij"), 0, 10, S("abcde"), 4, 1, -4);
2420 test(S("abcdefghij"), 0, 10, S("abcde"), 4, 2, -4);
2421 test(S("abcdefghij"), 0, 10, S("abcde"), 5, 0, 10);
2422 test(S("abcdefghij"), 0, 10, S("abcde"), 5, 1, 10);
2423 test(S("abcdefghij"), 0, 10, S("abcde"), 6, 0, 0);
2424 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 0, 0, 10);
2425 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 0, 1, 9);
2426 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 0, 5, 5);
2427 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 0, 9, 1);
2428 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 0, 10, 0);
2429 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 0, 11, 0);
2430 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 1, 0, 10);
2431 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 1, 1, -1);
2432 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 1, 4, -1);
2433 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 1, 8, -1);
2434 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 1, 9, -1);
2435 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 1, 10, -1);
2436 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 5, 0, 10);
2437 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 5, 1, -5);
2438 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 5, 2, -5);
2439 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 5, 4, -5);
2440 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 5, 5, -5);
2441 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 5, 6, -5);
2442 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 9, 0, 10);
2443 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 9, 1, -9);
2444 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 9, 2, -9);
2445 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 10, 0, 10);
2446 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 10, 1, 10);
2447 test(S("abcdefghij"), 0, 10, S("abcdefghij"), 11, 0, 0);
2448 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 0, 0, 10);
2449 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 0, 1, 9);
2450 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 0, 10, 0);
2451 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 0, 19, -9);
2452 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 0, 20, -10);
2453 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 0, 21, -10);
2454 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 1, 0, 10);
2455 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 1, 1, -1);
2456 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 1, 9, -1);
2457 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 1, 18, -1);
2458 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 1, 19, -1);
2459 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 1, 20, -1);
2460 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 10, 0, 10);
2461 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 10, 1, -10);
2462 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 10, 5, -10);
2463 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 10, 9, -10);
2464 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 10, 10, -10);
2465 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 10, 11, -10);
2466 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 19, 0, 10);
2467 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 19, 1, -19);
2468 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 19, 2, -19);
2469 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 20, 0, 10);
2470 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 20, 1, 10);
2471 test(S("abcdefghij"), 0, 10, S("abcdefghijklmnopqrst"), 21, 0, 0);
2472 test(S("abcdefghij"), 0, 11, S(""), 0, 0, 10);
2473 test(S("abcdefghij"), 0, 11, S(""), 0, 1, 10);
2474 test(S("abcdefghij"), 0, 11, S(""), 1, 0, 0);
2475 test(S("abcdefghij"), 0, 11, S("abcde"), 0, 0, 10);
2476 test(S("abcdefghij"), 0, 11, S("abcde"), 0, 1, 9);
2477 test(S("abcdefghij"), 0, 11, S("abcde"), 0, 2, 8);
2483 test(S("abcdefghij"), 0, 11, S("abcde"), 0, 4, 6);
2484 test(S("abcdefghij"), 0, 11, S("abcde"), 0, 5, 5);
2485 test(S("abcdefghij"), 0, 11, S("abcde"), 0, 6, 5);
2486 test(S("abcdefghij"), 0, 11, S("abcde"), 1, 0, 10);
2487 test(S("abcdefghij"), 0, 11, S("abcde"), 1, 1, -1);
2488 test(S("abcdefghij"), 0, 11, S("abcde"), 1, 2, -1);
2489 test(S("abcdefghij"), 0, 11, S("abcde"), 1, 3, -1);
2490 test(S("abcdefghij"), 0, 11, S("abcde"), 1, 4, -1);
2491 test(S("abcdefghij"), 0, 11, S("abcde"), 1, 5, -1);
2492 test(S("abcdefghij"), 0, 11, S("abcde"), 2, 0, 10);
2493 test(S("abcdefghij"), 0, 11, S("abcde"), 2, 1, -2);
2494 test(S("abcdefghij"), 0, 11, S("abcde"), 2, 2, -2);
2495 test(S("abcdefghij"), 0, 11, S("abcde"), 2, 3, -2);
2496 test(S("abcdefghij"), 0, 11, S("abcde"), 2, 4, -2);
2497 test(S("abcdefghij"), 0, 11, S("abcde"), 4, 0, 10);
2498 test(S("abcdefghij"), 0, 11, S("abcde"), 4, 1, -4);
2499 test(S("abcdefghij"), 0, 11, S("abcde"), 4, 2, -4);
2500 test(S("abcdefghij"), 0, 11, S("abcde"), 5, 0, 10);
2501 test(S("abcdefghij"), 0, 11, S("abcde"), 5, 1, 10);
2502 test(S("abcdefghij"), 0, 11, S("abcde"), 6, 0, 0);
2503 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 0, 0, 10);
2504 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 0, 1, 9);
2505 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 0, 5, 5);
2506 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 0, 9, 1);
2507 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 0, 10, 0);
2508 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 0, 11, 0);
2509 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 1, 0, 10);
2510 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 1, 1, -1);
2511 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 1, 4, -1);
2512 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 1, 8, -1);
2513 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 1, 9, -1);
2514 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 1, 10, -1);
2515 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 5, 0, 10);
2516 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 5, 1, -5);
2517 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 5, 2, -5);
2518 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 5, 4, -5);
2519 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 5, 5, -5);
2520 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 5, 6, -5);
2521 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 9, 0, 10);
2522 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 9, 1, -9);
2523 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 9, 2, -9);
2524 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 10, 0, 10);
2525 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 10, 1, 10);
2526 test(S("abcdefghij"), 0, 11, S("abcdefghij"), 11, 0, 0);
2527 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 0, 0, 10);
2528 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 0, 1, 9);
2529 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 0, 10, 0);
2530 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 0, 19, -9);
2531 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 0, 20, -10);
2532 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 0, 21, -10);
2533 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 1, 0, 10);
2534 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 1, 1, -1);
2535 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 1, 9, -1);
2536 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 1, 18, -1);
2537 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 1, 19, -1);
2538 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 1, 20, -1);
2539 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 10, 0, 10);
2540 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 10, 1, -10);
2541 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 10, 5, -10);
2542 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 10, 9, -10);
2543 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 10, 10, -10);
2544 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 10, 11, -10);
2545 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 19, 0, 10);
2546 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 19, 1, -19);
2547 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 19, 2, -19);
2548 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 20, 0, 10);
2549 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 20, 1, 10);
2550 test(S("abcdefghij"), 0, 11, S("abcdefghijklmnopqrst"), 21, 0, 0);
2551 test(S("abcdefghij"), 1, 0, S(""), 0, 0, 0);
2552 test(S("abcdefghij"), 1, 0, S(""), 0, 1, 0);
2553 test(S("abcdefghij"), 1, 0, S(""), 1, 0, 0);
2554 test(S("abcdefghij"), 1, 0, S("abcde"), 0, 0, 0);
2555 test(S("abcdefghij"), 1, 0, S("abcde"), 0, 1, -1);
2556 test(S("abcdefghij"), 1, 0, S("abcde"), 0, 2, -2);
2557 test(S("abcdefghij"), 1, 0, S("abcde"), 0, 4, -4);
2558 test(S("abcdefghij"), 1, 0, S("abcde"), 0, 5, -5);
2559 test(S("abcdefghij"), 1, 0, S("abcde"), 0, 6, -5);
2560 test(S("abcdefghij"), 1, 0, S("abcde"), 1, 0, 0);
2561 test(S("abcdefghij"), 1, 0, S("abcde"), 1, 1, -1);
2562 test(S("abcdefghij"), 1, 0, S("abcde"), 1, 2, -2);
2563 test(S("abcdefghij"), 1, 0, S("abcde"), 1, 3, -3);
2564 test(S("abcdefghij"), 1, 0, S("abcde"), 1, 4, -4);
2565 test(S("abcdefghij"), 1, 0, S("abcde"), 1, 5, -4);
2566 test(S("abcdefghij"), 1, 0, S("abcde"), 2, 0, 0);
2567 test(S("abcdefghij"), 1, 0, S("abcde"), 2, 1, -1);
2568 test(S("abcdefghij"), 1, 0, S("abcde"), 2, 2, -2);
2569 test(S("abcdefghij"), 1, 0, S("abcde"), 2, 3, -3);
2570 test(S("abcdefghij"), 1, 0, S("abcde"), 2, 4, -3);
2571 test(S("abcdefghij"), 1, 0, S("abcde"), 4, 0, 0);
2572 test(S("abcdefghij"), 1, 0, S("abcde"), 4, 1, -1);
2573 test(S("abcdefghij"), 1, 0, S("abcde"), 4, 2, -1);
2574 test(S("abcdefghij"), 1, 0, S("abcde"), 5, 0, 0);
2575 test(S("abcdefghij"), 1, 0, S("abcde"), 5, 1, 0);
2576 test(S("abcdefghij"), 1, 0, S("abcde"), 6, 0, 0);
2577 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 0, 0, 0);
2578 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 0, 1, -1);
2579 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 0, 5, -5);
2580 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 0, 9, -9);
2581 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 0, 10, -10);
2582 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 0, 11, -10);
2588 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 1, 0, 0);
2589 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 1, 1, -1);
2590 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 1, 4, -4);
2591 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 1, 8, -8);
2592 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 1, 9, -9);
2593 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 1, 10, -9);
2594 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 5, 0, 0);
2595 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 5, 1, -1);
2596 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 5, 2, -2);
2597 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 5, 4, -4);
2598 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 5, 5, -5);
2599 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 5, 6, -5);
2600 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 9, 0, 0);
2601 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 9, 1, -1);
2602 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 9, 2, -1);
2603 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 10, 0, 0);
2604 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 10, 1, 0);
2605 test(S("abcdefghij"), 1, 0, S("abcdefghij"), 11, 0, 0);
2606 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
2607 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 0, 1, -1);
2608 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 0, 10, -10);
2609 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 0, 19, -19);
2610 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 0, 20, -20);
2611 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 0, 21, -20);
2612 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
2613 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 1, 1, -1);
2614 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 1, 9, -9);
2615 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 1, 18, -18);
2616 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 1, 19, -19);
2617 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 1, 20, -19);
2618 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
2619 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 10, 1, -1);
2620 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 10, 5, -5);
2621 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 10, 9, -9);
2622 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 10, 10, -10);
2623 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 10, 11, -10);
2624 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
2625 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 19, 1, -1);
2626 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 19, 2, -1);
2627 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
2628 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
2629 test(S("abcdefghij"), 1, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
2630 test(S("abcdefghij"), 1, 1, S(""), 0, 0, 1);
2631 test(S("abcdefghij"), 1, 1, S(""), 0, 1, 1);
2632 test(S("abcdefghij"), 1, 1, S(""), 1, 0, 0);
2633 test(S("abcdefghij"), 1, 1, S("abcde"), 0, 0, 1);
2634 test(S("abcdefghij"), 1, 1, S("abcde"), 0, 1, 1);
2635 test(S("abcdefghij"), 1, 1, S("abcde"), 0, 2, 1);
2636 test(S("abcdefghij"), 1, 1, S("abcde"), 0, 4, 1);
2637 test(S("abcdefghij"), 1, 1, S("abcde"), 0, 5, 1);
2638 test(S("abcdefghij"), 1, 1, S("abcde"), 0, 6, 1);
2639 test(S("abcdefghij"), 1, 1, S("abcde"), 1, 0, 1);
2640 test(S("abcdefghij"), 1, 1, S("abcde"), 1, 1, 0);
2641 test(S("abcdefghij"), 1, 1, S("abcde"), 1, 2, -1);
2642 test(S("abcdefghij"), 1, 1, S("abcde"), 1, 3, -2);
2643 test(S("abcdefghij"), 1, 1, S("abcde"), 1, 4, -3);
2644 test(S("abcdefghij"), 1, 1, S("abcde"), 1, 5, -3);
2645 test(S("abcdefghij"), 1, 1, S("abcde"), 2, 0, 1);
2646 test(S("abcdefghij"), 1, 1, S("abcde"), 2, 1, -1);
2647 test(S("abcdefghij"), 1, 1, S("abcde"), 2, 2, -1);
2648 test(S("abcdefghij"), 1, 1, S("abcde"), 2, 3, -1);
2649 test(S("abcdefghij"), 1, 1, S("abcde"), 2, 4, -1);
2650 test(S("abcdefghij"), 1, 1, S("abcde"), 4, 0, 1);
2651 test(S("abcdefghij"), 1, 1, S("abcde"), 4, 1, -3);
2652 test(S("abcdefghij"), 1, 1, S("abcde"), 4, 2, -3);
2653 test(S("abcdefghij"), 1, 1, S("abcde"), 5, 0, 1);
2654 test(S("abcdefghij"), 1, 1, S("abcde"), 5, 1, 1);
2655 test(S("abcdefghij"), 1, 1, S("abcde"), 6, 0, 0);
2656 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 0, 0, 1);
2657 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 0, 1, 1);
2658 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 0, 5, 1);
2659 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 0, 9, 1);
2660 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 0, 10, 1);
2661 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 0, 11, 1);
2662 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 1, 0, 1);
2663 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 1, 1, 0);
2664 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 1, 4, -3);
2665 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 1, 8, -7);
2666 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 1, 9, -8);
2667 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 1, 10, -8);
2668 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 5, 0, 1);
2669 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 5, 1, -4);
2670 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 5, 2, -4);
2671 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 5, 4, -4);
2672 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 5, 5, -4);
2673 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 5, 6, -4);
2674 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 9, 0, 1);
2675 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 9, 1, -8);
2676 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 9, 2, -8);
2677 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 10, 0, 1);
2678 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 10, 1, 1);
2679 test(S("abcdefghij"), 1, 1, S("abcdefghij"), 11, 0, 0);
2680 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 0, 0, 1);
2681 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 0, 1, 1);
2682 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 0, 10, 1);
2683 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 0, 19, 1);
2684 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 0, 20, 1);
2685 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 0, 21, 1);
2686 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 1, 0, 1);
2687 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 1, 1, 0);
2693 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 1, 9, -8);
2694 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 1, 18, -17);
2695 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 1, 19, -18);
2696 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 1, 20, -18);
2697 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 10, 0, 1);
2698 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 10, 1, -9);
2699 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 10, 5, -9);
2700 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 10, 9, -9);
2701 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 10, 10, -9);
2702 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 10, 11, -9);
2703 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 19, 0, 1);
2704 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 19, 1, -18);
2705 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 19, 2, -18);
2706 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 20, 0, 1);
2707 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 20, 1, 1);
2708 test(S("abcdefghij"), 1, 1, S("abcdefghijklmnopqrst"), 21, 0, 0);
2709 test(S("abcdefghij"), 1, 4, S(""), 0, 0, 4);
2710 test(S("abcdefghij"), 1, 4, S(""), 0, 1, 4);
2711 test(S("abcdefghij"), 1, 4, S(""), 1, 0, 0);
2712 test(S("abcdefghij"), 1, 4, S("abcde"), 0, 0, 4);
2713 test(S("abcdefghij"), 1, 4, S("abcde"), 0, 1, 1);
2714 test(S("abcdefghij"), 1, 4, S("abcde"), 0, 2, 1);
2715 test(S("abcdefghij"), 1, 4, S("abcde"), 0, 4, 1);
2716 test(S("abcdefghij"), 1, 4, S("abcde"), 0, 5, 1);
2717 test(S("abcdefghij"), 1, 4, S("abcde"), 0, 6, 1);
2718 test(S("abcdefghij"), 1, 4, S("abcde"), 1, 0, 4);
2719 test(S("abcdefghij"), 1, 4, S("abcde"), 1, 1, 3);
2720 test(S("abcdefghij"), 1, 4, S("abcde"), 1, 2, 2);
2721 test(S("abcdefghij"), 1, 4, S("abcde"), 1, 3, 1);
2722 test(S("abcdefghij"), 1, 4, S("abcde"), 1, 4, 0);
2723 test(S("abcdefghij"), 1, 4, S("abcde"), 1, 5, 0);
2724 test(S("abcdefghij"), 1, 4, S("abcde"), 2, 0, 4);
2725 test(S("abcdefghij"), 1, 4, S("abcde"), 2, 1, -1);
2726 test(S("abcdefghij"), 1, 4, S("abcde"), 2, 2, -1);
2727 test(S("abcdefghij"), 1, 4, S("abcde"), 2, 3, -1);
2728 test(S("abcdefghij"), 1, 4, S("abcde"), 2, 4, -1);
2729 test(S("abcdefghij"), 1, 4, S("abcde"), 4, 0, 4);
2730 test(S("abcdefghij"), 1, 4, S("abcde"), 4, 1, -3);
2731 test(S("abcdefghij"), 1, 4, S("abcde"), 4, 2, -3);
2732 test(S("abcdefghij"), 1, 4, S("abcde"), 5, 0, 4);
2733 test(S("abcdefghij"), 1, 4, S("abcde"), 5, 1, 4);
2734 test(S("abcdefghij"), 1, 4, S("abcde"), 6, 0, 0);
2735 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 0, 0, 4);
2736 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 0, 1, 1);
2737 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 0, 5, 1);
2738 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 0, 9, 1);
2739 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 0, 10, 1);
2740 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 0, 11, 1);
2741 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 1, 0, 4);
2742 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 1, 1, 3);
2743 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 1, 4, 0);
2744 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 1, 8, -4);
2745 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 1, 9, -5);
2746 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 1, 10, -5);
2747 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 5, 0, 4);
2748 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 5, 1, -4);
2749 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 5, 2, -4);
2750 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 5, 4, -4);
2751 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 5, 5, -4);
2752 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 5, 6, -4);
2753 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 9, 0, 4);
2754 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 9, 1, -8);
2755 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 9, 2, -8);
2756 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 10, 0, 4);
2757 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 10, 1, 4);
2758 test(S("abcdefghij"), 1, 4, S("abcdefghij"), 11, 0, 0);
2759 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 0, 0, 4);
2760 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 0, 1, 1);
2761 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 0, 10, 1);
2762 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 0, 19, 1);
2763 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 0, 20, 1);
2764 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 0, 21, 1);
2765 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 1, 0, 4);
2766 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 1, 1, 3);
2767 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 1, 9, -5);
2768 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 1, 18, -14);
2769 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 1, 19, -15);
2770 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 1, 20, -15);
2771 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 10, 0, 4);
2772 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 10, 1, -9);
2773 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 10, 5, -9);
2774 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 10, 9, -9);
2775 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 10, 10, -9);
2776 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 10, 11, -9);
2777 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 19, 0, 4);
2778 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 19, 1, -18);
2779 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 19, 2, -18);
2780 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 20, 0, 4);
2781 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 20, 1, 4);
2782 test(S("abcdefghij"), 1, 4, S("abcdefghijklmnopqrst"), 21, 0, 0);
2783 test(S("abcdefghij"), 1, 8, S(""), 0, 0, 8);
2784 test(S("abcdefghij"), 1, 8, S(""), 0, 1, 8);
2785 test(S("abcdefghij"), 1, 8, S(""), 1, 0, 0);
2786 test(S("abcdefghij"), 1, 8, S("abcde"), 0, 0, 8);
2787 test(S("abcdefghij"), 1, 8, S("abcde"), 0, 1, 1);
2788 test(S("abcdefghij"), 1, 8, S("abcde"), 0, 2, 1);
2789 test(S("abcdefghij"), 1, 8, S("abcde"), 0, 4, 1);
2790 test(S("abcdefghij"), 1, 8, S("abcde"), 0, 5, 1);
2791 test(S("abcdefghij"), 1, 8, S("abcde"), 0, 6, 1);
2792 test(S("abcdefghij"), 1, 8, S("abcde"), 1, 0, 8);
2798 test(S("abcdefghij"), 1, 8, S("abcde"), 1, 1, 7);
2799 test(S("abcdefghij"), 1, 8, S("abcde"), 1, 2, 6);
2800 test(S("abcdefghij"), 1, 8, S("abcde"), 1, 3, 5);
2801 test(S("abcdefghij"), 1, 8, S("abcde"), 1, 4, 4);
2802 test(S("abcdefghij"), 1, 8, S("abcde"), 1, 5, 4);
2803 test(S("abcdefghij"), 1, 8, S("abcde"), 2, 0, 8);
2804 test(S("abcdefghij"), 1, 8, S("abcde"), 2, 1, -1);
2805 test(S("abcdefghij"), 1, 8, S("abcde"), 2, 2, -1);
2806 test(S("abcdefghij"), 1, 8, S("abcde"), 2, 3, -1);
2807 test(S("abcdefghij"), 1, 8, S("abcde"), 2, 4, -1);
2808 test(S("abcdefghij"), 1, 8, S("abcde"), 4, 0, 8);
2809 test(S("abcdefghij"), 1, 8, S("abcde"), 4, 1, -3);
2810 test(S("abcdefghij"), 1, 8, S("abcde"), 4, 2, -3);
2811 test(S("abcdefghij"), 1, 8, S("abcde"), 5, 0, 8);
2812 test(S("abcdefghij"), 1, 8, S("abcde"), 5, 1, 8);
2813 test(S("abcdefghij"), 1, 8, S("abcde"), 6, 0, 0);
2814 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 0, 0, 8);
2815 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 0, 1, 1);
2816 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 0, 5, 1);
2817 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 0, 9, 1);
2818 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 0, 10, 1);
2819 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 0, 11, 1);
2820 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 1, 0, 8);
2821 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 1, 1, 7);
2822 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 1, 4, 4);
2823 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 1, 8, 0);
2824 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 1, 9, -1);
2825 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 1, 10, -1);
2826 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 5, 0, 8);
2827 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 5, 1, -4);
2828 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 5, 2, -4);
2829 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 5, 4, -4);
2830 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 5, 5, -4);
2831 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 5, 6, -4);
2832 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 9, 0, 8);
2833 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 9, 1, -8);
2834 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 9, 2, -8);
2835 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 10, 0, 8);
2836 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 10, 1, 8);
2837 test(S("abcdefghij"), 1, 8, S("abcdefghij"), 11, 0, 0);
2838 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 0, 0, 8);
2839 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 0, 1, 1);
2840 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 0, 10, 1);
2841 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 0, 19, 1);
2842 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 0, 20, 1);
2843 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 0, 21, 1);
2844 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 1, 0, 8);
2845 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 1, 1, 7);
2846 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 1, 9, -1);
2847 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 1, 18, -10);
2848 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 1, 19, -11);
2849 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 1, 20, -11);
2850 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 10, 0, 8);
2851 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 10, 1, -9);
2852 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 10, 5, -9);
2853 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 10, 9, -9);
2854 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 10, 10, -9);
2855 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 10, 11, -9);
2856 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 19, 0, 8);
2857 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 19, 1, -18);
2858 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 19, 2, -18);
2859 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 20, 0, 8);
2860 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 20, 1, 8);
2861 test(S("abcdefghij"), 1, 8, S("abcdefghijklmnopqrst"), 21, 0, 0);
2862 test(S("abcdefghij"), 1, 9, S(""), 0, 0, 9);
2863 test(S("abcdefghij"), 1, 9, S(""), 0, 1, 9);
2864 test(S("abcdefghij"), 1, 9, S(""), 1, 0, 0);
2865 test(S("abcdefghij"), 1, 9, S("abcde"), 0, 0, 9);
2866 test(S("abcdefghij"), 1, 9, S("abcde"), 0, 1, 1);
2867 test(S("abcdefghij"), 1, 9, S("abcde"), 0, 2, 1);
2868 test(S("abcdefghij"), 1, 9, S("abcde"), 0, 4, 1);
2869 test(S("abcdefghij"), 1, 9, S("abcde"), 0, 5, 1);
2870 test(S("abcdefghij"), 1, 9, S("abcde"), 0, 6, 1);
2871 test(S("abcdefghij"), 1, 9, S("abcde"), 1, 0, 9);
2872 test(S("abcdefghij"), 1, 9, S("abcde"), 1, 1, 8);
2873 test(S("abcdefghij"), 1, 9, S("abcde"), 1, 2, 7);
2874 test(S("abcdefghij"), 1, 9, S("abcde"), 1, 3, 6);
2875 test(S("abcdefghij"), 1, 9, S("abcde"), 1, 4, 5);
2876 test(S("abcdefghij"), 1, 9, S("abcde"), 1, 5, 5);
2877 test(S("abcdefghij"), 1, 9, S("abcde"), 2, 0, 9);
2878 test(S("abcdefghij"), 1, 9, S("abcde"), 2, 1, -1);
2879 test(S("abcdefghij"), 1, 9, S("abcde"), 2, 2, -1);
2880 test(S("abcdefghij"), 1, 9, S("abcde"), 2, 3, -1);
2881 test(S("abcdefghij"), 1, 9, S("abcde"), 2, 4, -1);
2882 test(S("abcdefghij"), 1, 9, S("abcde"), 4, 0, 9);
2883 test(S("abcdefghij"), 1, 9, S("abcde"), 4, 1, -3);
2884 test(S("abcdefghij"), 1, 9, S("abcde"), 4, 2, -3);
2885 test(S("abcdefghij"), 1, 9, S("abcde"), 5, 0, 9);
2886 test(S("abcdefghij"), 1, 9, S("abcde"), 5, 1, 9);
2887 test(S("abcdefghij"), 1, 9, S("abcde"), 6, 0, 0);
2888 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 0, 0, 9);
2889 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 0, 1, 1);
2890 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 0, 5, 1);
2891 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 0, 9, 1);
2892 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 0, 10, 1);
2893 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 0, 11, 1);
2894 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 1, 0, 9);
2895 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 1, 1, 8);
2896 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 1, 4, 5);
2897 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 1, 8, 1);
2903 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 1, 9, 0);
2904 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 1, 10, 0);
2905 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 5, 0, 9);
2906 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 5, 1, -4);
2907 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 5, 2, -4);
2908 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 5, 4, -4);
2909 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 5, 5, -4);
2910 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 5, 6, -4);
2911 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 9, 0, 9);
2912 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 9, 1, -8);
2913 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 9, 2, -8);
2914 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 10, 0, 9);
2915 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 10, 1, 9);
2916 test(S("abcdefghij"), 1, 9, S("abcdefghij"), 11, 0, 0);
2917 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 0, 0, 9);
2918 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 0, 1, 1);
2919 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 0, 10, 1);
2920 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 0, 19, 1);
2921 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 0, 20, 1);
2922 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 0, 21, 1);
2923 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 1, 0, 9);
2924 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 1, 1, 8);
2925 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 1, 9, 0);
2926 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 1, 18, -9);
2927 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 1, 19, -10);
2928 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 1, 20, -10);
2929 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 10, 0, 9);
2930 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 10, 1, -9);
2931 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 10, 5, -9);
2932 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 10, 9, -9);
2933 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 10, 10, -9);
2934 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 10, 11, -9);
2935 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 19, 0, 9);
2936 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 19, 1, -18);
2937 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 19, 2, -18);
2938 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 20, 0, 9);
2939 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 20, 1, 9);
2940 test(S("abcdefghij"), 1, 9, S("abcdefghijklmnopqrst"), 21, 0, 0);
2941 test(S("abcdefghij"), 1, 10, S(""), 0, 0, 9);
2942 test(S("abcdefghij"), 1, 10, S(""), 0, 1, 9);
2943 test(S("abcdefghij"), 1, 10, S(""), 1, 0, 0);
2944 test(S("abcdefghij"), 1, 10, S("abcde"), 0, 0, 9);
2945 test(S("abcdefghij"), 1, 10, S("abcde"), 0, 1, 1);
2946 test(S("abcdefghij"), 1, 10, S("abcde"), 0, 2, 1);
2947 test(S("abcdefghij"), 1, 10, S("abcde"), 0, 4, 1);
2948 test(S("abcdefghij"), 1, 10, S("abcde"), 0, 5, 1);
2949 test(S("abcdefghij"), 1, 10, S("abcde"), 0, 6, 1);
2950 test(S("abcdefghij"), 1, 10, S("abcde"), 1, 0, 9);
2951 test(S("abcdefghij"), 1, 10, S("abcde"), 1, 1, 8);
2952 test(S("abcdefghij"), 1, 10, S("abcde"), 1, 2, 7);
2953 test(S("abcdefghij"), 1, 10, S("abcde"), 1, 3, 6);
2954 test(S("abcdefghij"), 1, 10, S("abcde"), 1, 4, 5);
2955 test(S("abcdefghij"), 1, 10, S("abcde"), 1, 5, 5);
2956 test(S("abcdefghij"), 1, 10, S("abcde"), 2, 0, 9);
2957 test(S("abcdefghij"), 1, 10, S("abcde"), 2, 1, -1);
2958 test(S("abcdefghij"), 1, 10, S("abcde"), 2, 2, -1);
2959 test(S("abcdefghij"), 1, 10, S("abcde"), 2, 3, -1);
2960 test(S("abcdefghij"), 1, 10, S("abcde"), 2, 4, -1);
2961 test(S("abcdefghij"), 1, 10, S("abcde"), 4, 0, 9);
2962 test(S("abcdefghij"), 1, 10, S("abcde"), 4, 1, -3);
2963 test(S("abcdefghij"), 1, 10, S("abcde"), 4, 2, -3);
2964 test(S("abcdefghij"), 1, 10, S("abcde"), 5, 0, 9);
2965 test(S("abcdefghij"), 1, 10, S("abcde"), 5, 1, 9);
2966 test(S("abcdefghij"), 1, 10, S("abcde"), 6, 0, 0);
2967 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 0, 0, 9);
2968 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 0, 1, 1);
2969 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 0, 5, 1);
2970 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 0, 9, 1);
2971 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 0, 10, 1);
2972 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 0, 11, 1);
2973 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 1, 0, 9);
2974 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 1, 1, 8);
2975 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 1, 4, 5);
2976 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 1, 8, 1);
2977 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 1, 9, 0);
2978 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 1, 10, 0);
2979 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 5, 0, 9);
2980 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 5, 1, -4);
2981 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 5, 2, -4);
2982 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 5, 4, -4);
2983 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 5, 5, -4);
2984 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 5, 6, -4);
2985 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 9, 0, 9);
2986 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 9, 1, -8);
2987 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 9, 2, -8);
2988 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 10, 0, 9);
2989 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 10, 1, 9);
2990 test(S("abcdefghij"), 1, 10, S("abcdefghij"), 11, 0, 0);
2991 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 0, 0, 9);
2992 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 0, 1, 1);
2993 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 0, 10, 1);
2994 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 0, 19, 1);
2995 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 0, 20, 1);
2996 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 0, 21, 1);
2997 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 1, 0, 9);
2998 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 1, 1, 8);
2999 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 1, 9, 0);
3000 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 1, 18, -9);
3001 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 1, 19, -10);
3002 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 1, 20, -10);
3008 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 10, 0, 9);
3009 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 10, 1, -9);
3010 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 10, 5, -9);
3011 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 10, 9, -9);
3012 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 10, 10, -9);
3013 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 10, 11, -9);
3014 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 19, 0, 9);
3015 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 19, 1, -18);
3016 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 19, 2, -18);
3017 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 20, 0, 9);
3018 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 20, 1, 9);
3019 test(S("abcdefghij"), 1, 10, S("abcdefghijklmnopqrst"), 21, 0, 0);
3020 test(S("abcdefghij"), 5, 0, S(""), 0, 0, 0);
3021 test(S("abcdefghij"), 5, 0, S(""), 0, 1, 0);
3022 test(S("abcdefghij"), 5, 0, S(""), 1, 0, 0);
3023 test(S("abcdefghij"), 5, 0, S("abcde"), 0, 0, 0);
3024 test(S("abcdefghij"), 5, 0, S("abcde"), 0, 1, -1);
3025 test(S("abcdefghij"), 5, 0, S("abcde"), 0, 2, -2);
3026 test(S("abcdefghij"), 5, 0, S("abcde"), 0, 4, -4);
3027 test(S("abcdefghij"), 5, 0, S("abcde"), 0, 5, -5);
3028 test(S("abcdefghij"), 5, 0, S("abcde"), 0, 6, -5);
3029 test(S("abcdefghij"), 5, 0, S("abcde"), 1, 0, 0);
3030 test(S("abcdefghij"), 5, 0, S("abcde"), 1, 1, -1);
3031 test(S("abcdefghij"), 5, 0, S("abcde"), 1, 2, -2);
3032 test(S("abcdefghij"), 5, 0, S("abcde"), 1, 3, -3);
3033 test(S("abcdefghij"), 5, 0, S("abcde"), 1, 4, -4);
3034 test(S("abcdefghij"), 5, 0, S("abcde"), 1, 5, -4);
3035 test(S("abcdefghij"), 5, 0, S("abcde"), 2, 0, 0);
3036 test(S("abcdefghij"), 5, 0, S("abcde"), 2, 1, -1);
3037 test(S("abcdefghij"), 5, 0, S("abcde"), 2, 2, -2);
3038 test(S("abcdefghij"), 5, 0, S("abcde"), 2, 3, -3);
3039 test(S("abcdefghij"), 5, 0, S("abcde"), 2, 4, -3);
3040 test(S("abcdefghij"), 5, 0, S("abcde"), 4, 0, 0);
3041 test(S("abcdefghij"), 5, 0, S("abcde"), 4, 1, -1);
3042 test(S("abcdefghij"), 5, 0, S("abcde"), 4, 2, -1);
3043 test(S("abcdefghij"), 5, 0, S("abcde"), 5, 0, 0);
3044 test(S("abcdefghij"), 5, 0, S("abcde"), 5, 1, 0);
3045 test(S("abcdefghij"), 5, 0, S("abcde"), 6, 0, 0);
3046 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 0, 0, 0);
3047 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 0, 1, -1);
3048 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 0, 5, -5);
3049 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 0, 9, -9);
3050 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 0, 10, -10);
3051 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 0, 11, -10);
3052 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 1, 0, 0);
3053 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 1, 1, -1);
3054 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 1, 4, -4);
3055 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 1, 8, -8);
3056 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 1, 9, -9);
3057 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 1, 10, -9);
3058 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 5, 0, 0);
3059 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 5, 1, -1);
3060 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 5, 2, -2);
3061 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 5, 4, -4);
3062 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 5, 5, -5);
3063 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 5, 6, -5);
3064 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 9, 0, 0);
3065 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 9, 1, -1);
3066 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 9, 2, -1);
3067 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 10, 0, 0);
3068 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 10, 1, 0);
3069 test(S("abcdefghij"), 5, 0, S("abcdefghij"), 11, 0, 0);
3070 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
3071 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 0, 1, -1);
3072 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 0, 10, -10);
3073 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 0, 19, -19);
3074 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 0, 20, -20);
3075 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 0, 21, -20);
3076 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
3077 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 1, 1, -1);
3078 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 1, 9, -9);
3079 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 1, 18, -18);
3080 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 1, 19, -19);
3081 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 1, 20, -19);
3082 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
3083 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 10, 1, -1);
3084 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 10, 5, -5);
3085 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 10, 9, -9);
3086 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 10, 10, -10);
3087 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 10, 11, -10);
3088 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
3089 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 19, 1, -1);
3090 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 19, 2, -1);
3091 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
3092 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
3093 test(S("abcdefghij"), 5, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
3094 test(S("abcdefghij"), 5, 1, S(""), 0, 0, 1);
3095 test(S("abcdefghij"), 5, 1, S(""), 0, 1, 1);
3096 test(S("abcdefghij"), 5, 1, S(""), 1, 0, 0);
3097 test(S("abcdefghij"), 5, 1, S("abcde"), 0, 0, 1);
3098 test(S("abcdefghij"), 5, 1, S("abcde"), 0, 1, 5);
3099 test(S("abcdefghij"), 5, 1, S("abcde"), 0, 2, 5);
3100 test(S("abcdefghij"), 5, 1, S("abcde"), 0, 4, 5);
3101 test(S("abcdefghij"), 5, 1, S("abcde"), 0, 5, 5);
3102 test(S("abcdefghij"), 5, 1, S("abcde"), 0, 6, 5);
3103 test(S("abcdefghij"), 5, 1, S("abcde"), 1, 0, 1);
3104 test(S("abcdefghij"), 5, 1, S("abcde"), 1, 1, 4);
3105 test(S("abcdefghij"), 5, 1, S("abcde"), 1, 2, 4);
3106 test(S("abcdefghij"), 5, 1, S("abcde"), 1, 3, 4);
3107 test(S("abcdefghij"), 5, 1, S("abcde"), 1, 4, 4);
3113 test(S("abcdefghij"), 5, 1, S("abcde"), 1, 5, 4);
3114 test(S("abcdefghij"), 5, 1, S("abcde"), 2, 0, 1);
3115 test(S("abcdefghij"), 5, 1, S("abcde"), 2, 1, 3);
3116 test(S("abcdefghij"), 5, 1, S("abcde"), 2, 2, 3);
3117 test(S("abcdefghij"), 5, 1, S("abcde"), 2, 3, 3);
3118 test(S("abcdefghij"), 5, 1, S("abcde"), 2, 4, 3);
3119 test(S("abcdefghij"), 5, 1, S("abcde"), 4, 0, 1);
3120 test(S("abcdefghij"), 5, 1, S("abcde"), 4, 1, 1);
3121 test(S("abcdefghij"), 5, 1, S("abcde"), 4, 2, 1);
3122 test(S("abcdefghij"), 5, 1, S("abcde"), 5, 0, 1);
3123 test(S("abcdefghij"), 5, 1, S("abcde"), 5, 1, 1);
3124 test(S("abcdefghij"), 5, 1, S("abcde"), 6, 0, 0);
3125 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 0, 0, 1);
3126 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 0, 1, 5);
3127 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 0, 5, 5);
3128 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 0, 9, 5);
3129 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 0, 10, 5);
3130 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 0, 11, 5);
3131 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 1, 0, 1);
3132 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 1, 1, 4);
3133 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 1, 4, 4);
3134 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 1, 8, 4);
3135 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 1, 9, 4);
3136 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 1, 10, 4);
3137 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 5, 0, 1);
3138 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 5, 1, 0);
3139 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 5, 2, -1);
3140 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 5, 4, -3);
3141 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 5, 5, -4);
3142 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 5, 6, -4);
3143 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 9, 0, 1);
3144 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 9, 1, -4);
3145 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 9, 2, -4);
3146 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 10, 0, 1);
3147 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 10, 1, 1);
3148 test(S("abcdefghij"), 5, 1, S("abcdefghij"), 11, 0, 0);
3149 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 0, 0, 1);
3150 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 0, 1, 5);
3151 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 0, 10, 5);
3152 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 0, 19, 5);
3153 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 0, 20, 5);
3154 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 0, 21, 5);
3155 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 1, 0, 1);
3156 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 1, 1, 4);
3157 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 1, 9, 4);
3158 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 1, 18, 4);
3159 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 1, 19, 4);
3160 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 1, 20, 4);
3161 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 10, 0, 1);
3162 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 10, 1, -5);
3163 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 10, 5, -5);
3164 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 10, 9, -5);
3165 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 10, 10, -5);
3166 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 10, 11, -5);
3167 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 19, 0, 1);
3168 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 19, 1, -14);
3169 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 19, 2, -14);
3170 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 20, 0, 1);
3171 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 20, 1, 1);
3172 test(S("abcdefghij"), 5, 1, S("abcdefghijklmnopqrst"), 21, 0, 0);
3173 test(S("abcdefghij"), 5, 2, S(""), 0, 0, 2);
3174 test(S("abcdefghij"), 5, 2, S(""), 0, 1, 2);
3175 test(S("abcdefghij"), 5, 2, S(""), 1, 0, 0);
3176 test(S("abcdefghij"), 5, 2, S("abcde"), 0, 0, 2);
3177 test(S("abcdefghij"), 5, 2, S("abcde"), 0, 1, 5);
3178 test(S("abcdefghij"), 5, 2, S("abcde"), 0, 2, 5);
3179 test(S("abcdefghij"), 5, 2, S("abcde"), 0, 4, 5);
3180 test(S("abcdefghij"), 5, 2, S("abcde"), 0, 5, 5);
3181 test(S("abcdefghij"), 5, 2, S("abcde"), 0, 6, 5);
3182 test(S("abcdefghij"), 5, 2, S("abcde"), 1, 0, 2);
3183 test(S("abcdefghij"), 5, 2, S("abcde"), 1, 1, 4);
3184 test(S("abcdefghij"), 5, 2, S("abcde"), 1, 2, 4);
3185 test(S("abcdefghij"), 5, 2, S("abcde"), 1, 3, 4);
3186 test(S("abcdefghij"), 5, 2, S("abcde"), 1, 4, 4);
3187 test(S("abcdefghij"), 5, 2, S("abcde"), 1, 5, 4);
3188 test(S("abcdefghij"), 5, 2, S("abcde"), 2, 0, 2);
3189 test(S("abcdefghij"), 5, 2, S("abcde"), 2, 1, 3);
3190 test(S("abcdefghij"), 5, 2, S("abcde"), 2, 2, 3);
3191 test(S("abcdefghij"), 5, 2, S("abcde"), 2, 3, 3);
3192 test(S("abcdefghij"), 5, 2, S("abcde"), 2, 4, 3);
3193 test(S("abcdefghij"), 5, 2, S("abcde"), 4, 0, 2);
3194 test(S("abcdefghij"), 5, 2, S("abcde"), 4, 1, 1);
3195 test(S("abcdefghij"), 5, 2, S("abcde"), 4, 2, 1);
3196 test(S("abcdefghij"), 5, 2, S("abcde"), 5, 0, 2);
3197 test(S("abcdefghij"), 5, 2, S("abcde"), 5, 1, 2);
3198 test(S("abcdefghij"), 5, 2, S("abcde"), 6, 0, 0);
3199 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 0, 0, 2);
3200 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 0, 1, 5);
3201 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 0, 5, 5);
3202 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 0, 9, 5);
3203 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 0, 10, 5);
3204 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 0, 11, 5);
3205 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 1, 0, 2);
3206 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 1, 1, 4);
3207 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 1, 4, 4);
3208 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 1, 8, 4);
3209 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 1, 9, 4);
3210 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 1, 10, 4);
3211 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 5, 0, 2);
3212 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 5, 1, 1);
3218 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 5, 2, 0);
3219 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 5, 4, -2);
3220 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 5, 5, -3);
3221 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 5, 6, -3);
3222 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 9, 0, 2);
3223 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 9, 1, -4);
3224 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 9, 2, -4);
3225 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 10, 0, 2);
3226 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 10, 1, 2);
3227 test(S("abcdefghij"), 5, 2, S("abcdefghij"), 11, 0, 0);
3228 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 0, 0, 2);
3229 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 0, 1, 5);
3230 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 0, 10, 5);
3231 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 0, 19, 5);
3232 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 0, 20, 5);
3233 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 0, 21, 5);
3234 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 1, 0, 2);
3235 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 1, 1, 4);
3236 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 1, 9, 4);
3237 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 1, 18, 4);
3238 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 1, 19, 4);
3239 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 1, 20, 4);
3240 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 10, 0, 2);
3241 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 10, 1, -5);
3242 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 10, 5, -5);
3243 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 10, 9, -5);
3244 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 10, 10, -5);
3245 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 10, 11, -5);
3246 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 19, 0, 2);
3247 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 19, 1, -14);
3248 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 19, 2, -14);
3249 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 20, 0, 2);
3250 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 20, 1, 2);
3251 test(S("abcdefghij"), 5, 2, S("abcdefghijklmnopqrst"), 21, 0, 0);
3252 test(S("abcdefghij"), 5, 4, S(""), 0, 0, 4);
3253 test(S("abcdefghij"), 5, 4, S(""), 0, 1, 4);
3254 test(S("abcdefghij"), 5, 4, S(""), 1, 0, 0);
3255 test(S("abcdefghij"), 5, 4, S("abcde"), 0, 0, 4);
3256 test(S("abcdefghij"), 5, 4, S("abcde"), 0, 1, 5);
3257 test(S("abcdefghij"), 5, 4, S("abcde"), 0, 2, 5);
3258 test(S("abcdefghij"), 5, 4, S("abcde"), 0, 4, 5);
3259 test(S("abcdefghij"), 5, 4, S("abcde"), 0, 5, 5);
3260 test(S("abcdefghij"), 5, 4, S("abcde"), 0, 6, 5);
3261 test(S("abcdefghij"), 5, 4, S("abcde"), 1, 0, 4);
3262 test(S("abcdefghij"), 5, 4, S("abcde"), 1, 1, 4);
3263 test(S("abcdefghij"), 5, 4, S("abcde"), 1, 2, 4);
3264 test(S("abcdefghij"), 5, 4, S("abcde"), 1, 3, 4);
3265 test(S("abcdefghij"), 5, 4, S("abcde"), 1, 4, 4);
3266 test(S("abcdefghij"), 5, 4, S("abcde"), 1, 5, 4);
3267 test(S("abcdefghij"), 5, 4, S("abcde"), 2, 0, 4);
3268 test(S("abcdefghij"), 5, 4, S("abcde"), 2, 1, 3);
3269 test(S("abcdefghij"), 5, 4, S("abcde"), 2, 2, 3);
3270 test(S("abcdefghij"), 5, 4, S("abcde"), 2, 3, 3);
3271 test(S("abcdefghij"), 5, 4, S("abcde"), 2, 4, 3);
3272 test(S("abcdefghij"), 5, 4, S("abcde"), 4, 0, 4);
3273 test(S("abcdefghij"), 5, 4, S("abcde"), 4, 1, 1);
3274 test(S("abcdefghij"), 5, 4, S("abcde"), 4, 2, 1);
3275 test(S("abcdefghij"), 5, 4, S("abcde"), 5, 0, 4);
3276 test(S("abcdefghij"), 5, 4, S("abcde"), 5, 1, 4);
3277 test(S("abcdefghij"), 5, 4, S("abcde"), 6, 0, 0);
3278 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 0, 0, 4);
3279 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 0, 1, 5);
3280 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 0, 5, 5);
3281 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 0, 9, 5);
3282 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 0, 10, 5);
3283 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 0, 11, 5);
3284 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 1, 0, 4);
3285 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 1, 1, 4);
3286 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 1, 4, 4);
3287 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 1, 8, 4);
3288 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 1, 9, 4);
3289 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 1, 10, 4);
3290 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 5, 0, 4);
3291 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 5, 1, 3);
3292 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 5, 2, 2);
3293 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 5, 4, 0);
3294 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 5, 5, -1);
3295 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 5, 6, -1);
3296 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 9, 0, 4);
3297 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 9, 1, -4);
3298 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 9, 2, -4);
3299 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 10, 0, 4);
3300 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 10, 1, 4);
3301 test(S("abcdefghij"), 5, 4, S("abcdefghij"), 11, 0, 0);
3302 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 0, 0, 4);
3303 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 0, 1, 5);
3304 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 0, 10, 5);
3305 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 0, 19, 5);
3306 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 0, 20, 5);
3307 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 0, 21, 5);
3308 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 1, 0, 4);
3309 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 1, 1, 4);
3310 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 1, 9, 4);
3311 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 1, 18, 4);
3312 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 1, 19, 4);
3313 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 1, 20, 4);
3314 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 10, 0, 4);
3315 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 10, 1, -5);
3316 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 10, 5, -5);
3317 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 10, 9, -5);
3323 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 10, 10, -5);
3324 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 10, 11, -5);
3325 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 19, 0, 4);
3326 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 19, 1, -14);
3327 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 19, 2, -14);
3328 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 20, 0, 4);
3329 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 20, 1, 4);
3330 test(S("abcdefghij"), 5, 4, S("abcdefghijklmnopqrst"), 21, 0, 0);
3331 test(S("abcdefghij"), 5, 5, S(""), 0, 0, 5);
3332 test(S("abcdefghij"), 5, 5, S(""), 0, 1, 5);
3333 test(S("abcdefghij"), 5, 5, S(""), 1, 0, 0);
3334 test(S("abcdefghij"), 5, 5, S("abcde"), 0, 0, 5);
3335 test(S("abcdefghij"), 5, 5, S("abcde"), 0, 1, 5);
3336 test(S("abcdefghij"), 5, 5, S("abcde"), 0, 2, 5);
3337 test(S("abcdefghij"), 5, 5, S("abcde"), 0, 4, 5);
3338 test(S("abcdefghij"), 5, 5, S("abcde"), 0, 5, 5);
3339 test(S("abcdefghij"), 5, 5, S("abcde"), 0, 6, 5);
3340 test(S("abcdefghij"), 5, 5, S("abcde"), 1, 0, 5);
3341 test(S("abcdefghij"), 5, 5, S("abcde"), 1, 1, 4);
3342 test(S("abcdefghij"), 5, 5, S("abcde"), 1, 2, 4);
3343 test(S("abcdefghij"), 5, 5, S("abcde"), 1, 3, 4);
3344 test(S("abcdefghij"), 5, 5, S("abcde"), 1, 4, 4);
3345 test(S("abcdefghij"), 5, 5, S("abcde"), 1, 5, 4);
3346 test(S("abcdefghij"), 5, 5, S("abcde"), 2, 0, 5);
3347 test(S("abcdefghij"), 5, 5, S("abcde"), 2, 1, 3);
3348 test(S("abcdefghij"), 5, 5, S("abcde"), 2, 2, 3);
3349 test(S("abcdefghij"), 5, 5, S("abcde"), 2, 3, 3);
3350 test(S("abcdefghij"), 5, 5, S("abcde"), 2, 4, 3);
3351 test(S("abcdefghij"), 5, 5, S("abcde"), 4, 0, 5);
3352 test(S("abcdefghij"), 5, 5, S("abcde"), 4, 1, 1);
3353 test(S("abcdefghij"), 5, 5, S("abcde"), 4, 2, 1);
3354 test(S("abcdefghij"), 5, 5, S("abcde"), 5, 0, 5);
3355 test(S("abcdefghij"), 5, 5, S("abcde"), 5, 1, 5);
3356 test(S("abcdefghij"), 5, 5, S("abcde"), 6, 0, 0);
3357 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 0, 0, 5);
3358 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 0, 1, 5);
3359 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 0, 5, 5);
3360 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 0, 9, 5);
3361 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 0, 10, 5);
3362 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 0, 11, 5);
3363 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 1, 0, 5);
3364 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 1, 1, 4);
3365 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 1, 4, 4);
3366 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 1, 8, 4);
3367 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 1, 9, 4);
3368 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 1, 10, 4);
3369 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 5, 0, 5);
3370 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 5, 1, 4);
3371 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 5, 2, 3);
3372 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 5, 4, 1);
3373 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 5, 5, 0);
3374 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 5, 6, 0);
3375 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 9, 0, 5);
3376 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 9, 1, -4);
3377 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 9, 2, -4);
3378 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 10, 0, 5);
3379 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 10, 1, 5);
3380 test(S("abcdefghij"), 5, 5, S("abcdefghij"), 11, 0, 0);
3381 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 0, 0, 5);
3382 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 0, 1, 5);
3383 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 0, 10, 5);
3384 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 0, 19, 5);
3385 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 0, 20, 5);
3386 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 0, 21, 5);
3387 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 1, 0, 5);
3388 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 1, 1, 4);
3389 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 1, 9, 4);
3390 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 1, 18, 4);
3391 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 1, 19, 4);
3392 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 1, 20, 4);
3393 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 10, 0, 5);
3394 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 10, 1, -5);
3395 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 10, 5, -5);
3396 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 10, 9, -5);
3397 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 10, 10, -5);
3398 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 10, 11, -5);
3399 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 19, 0, 5);
3400 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 19, 1, -14);
3401 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 19, 2, -14);
3402 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 20, 0, 5);
3403 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 20, 1, 5);
3404 test(S("abcdefghij"), 5, 5, S("abcdefghijklmnopqrst"), 21, 0, 0);
3405 test(S("abcdefghij"), 5, 6, S(""), 0, 0, 5);
3406 test(S("abcdefghij"), 5, 6, S(""), 0, 1, 5);
3407 test(S("abcdefghij"), 5, 6, S(""), 1, 0, 0);
3408 test(S("abcdefghij"), 5, 6, S("abcde"), 0, 0, 5);
3409 test(S("abcdefghij"), 5, 6, S("abcde"), 0, 1, 5);
3410 test(S("abcdefghij"), 5, 6, S("abcde"), 0, 2, 5);
3411 test(S("abcdefghij"), 5, 6, S("abcde"), 0, 4, 5);
3412 test(S("abcdefghij"), 5, 6, S("abcde"), 0, 5, 5);
3413 test(S("abcdefghij"), 5, 6, S("abcde"), 0, 6, 5);
3414 test(S("abcdefghij"), 5, 6, S("abcde"), 1, 0, 5);
3415 test(S("abcdefghij"), 5, 6, S("abcde"), 1, 1, 4);
3416 test(S("abcdefghij"), 5, 6, S("abcde"), 1, 2, 4);
3417 test(S("abcdefghij"), 5, 6, S("abcde"), 1, 3, 4);
3418 test(S("abcdefghij"), 5, 6, S("abcde"), 1, 4, 4);
3419 test(S("abcdefghij"), 5, 6, S("abcde"), 1, 5, 4);
3420 test(S("abcdefghij"), 5, 6, S("abcde"), 2, 0, 5);
3421 test(S("abcdefghij"), 5, 6, S("abcde"), 2, 1, 3);
3422 test(S("abcdefghij"), 5, 6, S("abcde"), 2, 2, 3);
3428 test(S("abcdefghij"), 5, 6, S("abcde"), 2, 3, 3);
3429 test(S("abcdefghij"), 5, 6, S("abcde"), 2, 4, 3);
3430 test(S("abcdefghij"), 5, 6, S("abcde"), 4, 0, 5);
3431 test(S("abcdefghij"), 5, 6, S("abcde"), 4, 1, 1);
3432 test(S("abcdefghij"), 5, 6, S("abcde"), 4, 2, 1);
3433 test(S("abcdefghij"), 5, 6, S("abcde"), 5, 0, 5);
3434 test(S("abcdefghij"), 5, 6, S("abcde"), 5, 1, 5);
3435 test(S("abcdefghij"), 5, 6, S("abcde"), 6, 0, 0);
3436 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 0, 0, 5);
3437 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 0, 1, 5);
3438 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 0, 5, 5);
3439 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 0, 9, 5);
3440 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 0, 10, 5);
3441 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 0, 11, 5);
3442 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 1, 0, 5);
3443 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 1, 1, 4);
3444 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 1, 4, 4);
3445 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 1, 8, 4);
3446 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 1, 9, 4);
3447 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 1, 10, 4);
3448 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 5, 0, 5);
3449 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 5, 1, 4);
3450 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 5, 2, 3);
3451 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 5, 4, 1);
3452 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 5, 5, 0);
3453 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 5, 6, 0);
3454 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 9, 0, 5);
3455 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 9, 1, -4);
3456 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 9, 2, -4);
3457 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 10, 0, 5);
3458 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 10, 1, 5);
3459 test(S("abcdefghij"), 5, 6, S("abcdefghij"), 11, 0, 0);
3460 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 0, 0, 5);
3461 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 0, 1, 5);
3462 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 0, 10, 5);
3463 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 0, 19, 5);
3464 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 0, 20, 5);
3465 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 0, 21, 5);
3466 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 1, 0, 5);
3467 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 1, 1, 4);
3468 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 1, 9, 4);
3469 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 1, 18, 4);
3470 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 1, 19, 4);
3471 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 1, 20, 4);
3472 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 10, 0, 5);
3473 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 10, 1, -5);
3474 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 10, 5, -5);
3475 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 10, 9, -5);
3476 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 10, 10, -5);
3477 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 10, 11, -5);
3478 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 19, 0, 5);
3479 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 19, 1, -14);
3480 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 19, 2, -14);
3481 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 20, 0, 5);
3482 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 20, 1, 5);
3483 test(S("abcdefghij"), 5, 6, S("abcdefghijklmnopqrst"), 21, 0, 0);
3484 test(S("abcdefghij"), 9, 0, S(""), 0, 0, 0);
3485 test(S("abcdefghij"), 9, 0, S(""), 0, 1, 0);
3486 test(S("abcdefghij"), 9, 0, S(""), 1, 0, 0);
3487 test(S("abcdefghij"), 9, 0, S("abcde"), 0, 0, 0);
3488 test(S("abcdefghij"), 9, 0, S("abcde"), 0, 1, -1);
3489 test(S("abcdefghij"), 9, 0, S("abcde"), 0, 2, -2);
3490 test(S("abcdefghij"), 9, 0, S("abcde"), 0, 4, -4);
3491 test(S("abcdefghij"), 9, 0, S("abcde"), 0, 5, -5);
3492 test(S("abcdefghij"), 9, 0, S("abcde"), 0, 6, -5);
3493 test(S("abcdefghij"), 9, 0, S("abcde"), 1, 0, 0);
3494 test(S("abcdefghij"), 9, 0, S("abcde"), 1, 1, -1);
3495 test(S("abcdefghij"), 9, 0, S("abcde"), 1, 2, -2);
3496 test(S("abcdefghij"), 9, 0, S("abcde"), 1, 3, -3);
3497 test(S("abcdefghij"), 9, 0, S("abcde"), 1, 4, -4);
3498 test(S("abcdefghij"), 9, 0, S("abcde"), 1, 5, -4);
3499 test(S("abcdefghij"), 9, 0, S("abcde"), 2, 0, 0);
3500 test(S("abcdefghij"), 9, 0, S("abcde"), 2, 1, -1);
3501 test(S("abcdefghij"), 9, 0, S("abcde"), 2, 2, -2);
3502 test(S("abcdefghij"), 9, 0, S("abcde"), 2, 3, -3);
3503 test(S("abcdefghij"), 9, 0, S("abcde"), 2, 4, -3);
3504 test(S("abcdefghij"), 9, 0, S("abcde"), 4, 0, 0);
3505 test(S("abcdefghij"), 9, 0, S("abcde"), 4, 1, -1);
3506 test(S("abcdefghij"), 9, 0, S("abcde"), 4, 2, -1);
3507 test(S("abcdefghij"), 9, 0, S("abcde"), 5, 0, 0);
3508 test(S("abcdefghij"), 9, 0, S("abcde"), 5, 1, 0);
3509 test(S("abcdefghij"), 9, 0, S("abcde"), 6, 0, 0);
3510 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 0, 0, 0);
3511 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 0, 1, -1);
3512 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 0, 5, -5);
3513 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 0, 9, -9);
3514 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 0, 10, -10);
3515 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 0, 11, -10);
3516 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 1, 0, 0);
3517 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 1, 1, -1);
3518 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 1, 4, -4);
3519 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 1, 8, -8);
3520 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 1, 9, -9);
3521 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 1, 10, -9);
3522 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 5, 0, 0);
3523 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 5, 1, -1);
3524 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 5, 2, -2);
3525 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 5, 4, -4);
3526 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 5, 5, -5);
3527 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 5, 6, -5);
3533 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 9, 0, 0);
3534 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 9, 1, -1);
3535 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 9, 2, -1);
3536 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 10, 0, 0);
3537 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 10, 1, 0);
3538 test(S("abcdefghij"), 9, 0, S("abcdefghij"), 11, 0, 0);
3539 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
3540 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 0, 1, -1);
3541 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 0, 10, -10);
3542 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 0, 19, -19);
3543 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 0, 20, -20);
3544 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 0, 21, -20);
3545 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
3546 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 1, 1, -1);
3547 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 1, 9, -9);
3548 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 1, 18, -18);
3549 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 1, 19, -19);
3550 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 1, 20, -19);
3551 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
3552 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 10, 1, -1);
3553 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 10, 5, -5);
3554 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 10, 9, -9);
3555 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 10, 10, -10);
3556 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 10, 11, -10);
3557 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
3558 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 19, 1, -1);
3559 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 19, 2, -1);
3560 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
3561 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
3562 test(S("abcdefghij"), 9, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
3563 test(S("abcdefghij"), 9, 1, S(""), 0, 0, 1);
3564 test(S("abcdefghij"), 9, 1, S(""), 0, 1, 1);
3565 test(S("abcdefghij"), 9, 1, S(""), 1, 0, 0);
3566 test(S("abcdefghij"), 9, 1, S("abcde"), 0, 0, 1);
3567 test(S("abcdefghij"), 9, 1, S("abcde"), 0, 1, 9);
3568 test(S("abcdefghij"), 9, 1, S("abcde"), 0, 2, 9);
3569 test(S("abcdefghij"), 9, 1, S("abcde"), 0, 4, 9);
3570 test(S("abcdefghij"), 9, 1, S("abcde"), 0, 5, 9);
3571 test(S("abcdefghij"), 9, 1, S("abcde"), 0, 6, 9);
3572 test(S("abcdefghij"), 9, 1, S("abcde"), 1, 0, 1);
3573 test(S("abcdefghij"), 9, 1, S("abcde"), 1, 1, 8);
3574 test(S("abcdefghij"), 9, 1, S("abcde"), 1, 2, 8);
3575 test(S("abcdefghij"), 9, 1, S("abcde"), 1, 3, 8);
3576 test(S("abcdefghij"), 9, 1, S("abcde"), 1, 4, 8);
3577 test(S("abcdefghij"), 9, 1, S("abcde"), 1, 5, 8);
3578 test(S("abcdefghij"), 9, 1, S("abcde"), 2, 0, 1);
3579 test(S("abcdefghij"), 9, 1, S("abcde"), 2, 1, 7);
3580 test(S("abcdefghij"), 9, 1, S("abcde"), 2, 2, 7);
3581 test(S("abcdefghij"), 9, 1, S("abcde"), 2, 3, 7);
3582 test(S("abcdefghij"), 9, 1, S("abcde"), 2, 4, 7);
3583 test(S("abcdefghij"), 9, 1, S("abcde"), 4, 0, 1);
3584 test(S("abcdefghij"), 9, 1, S("abcde"), 4, 1, 5);
3585 test(S("abcdefghij"), 9, 1, S("abcde"), 4, 2, 5);
3586 test(S("abcdefghij"), 9, 1, S("abcde"), 5, 0, 1);
3587 test(S("abcdefghij"), 9, 1, S("abcde"), 5, 1, 1);
3588 test(S("abcdefghij"), 9, 1, S("abcde"), 6, 0, 0);
3589 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 0, 0, 1);
3590 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 0, 1, 9);
3591 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 0, 5, 9);
3592 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 0, 9, 9);
3593 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 0, 10, 9);
3594 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 0, 11, 9);
3595 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 1, 0, 1);
3596 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 1, 1, 8);
3597 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 1, 4, 8);
3598 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 1, 8, 8);
3599 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 1, 9, 8);
3600 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 1, 10, 8);
3601 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 5, 0, 1);
3602 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 5, 1, 4);
3603 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 5, 2, 4);
3604 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 5, 4, 4);
3605 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 5, 5, 4);
3606 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 5, 6, 4);
3607 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 9, 0, 1);
3608 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 9, 1, 0);
3609 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 9, 2, 0);
3610 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 10, 0, 1);
3611 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 10, 1, 1);
3612 test(S("abcdefghij"), 9, 1, S("abcdefghij"), 11, 0, 0);
3613 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 0, 0, 1);
3614 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 0, 1, 9);
3615 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 0, 10, 9);
3616 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 0, 19, 9);
3617 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 0, 20, 9);
3618 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 0, 21, 9);
3619 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 1, 0, 1);
3620 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 1, 1, 8);
3621 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 1, 9, 8);
3622 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 1, 18, 8);
3623 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 1, 19, 8);
3624 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 1, 20, 8);
3625 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 10, 0, 1);
3626 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 10, 1, -1);
3627 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 10, 5, -1);
3628 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 10, 9, -1);
3629 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 10, 10, -1);
3630 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 10, 11, -1);
3631 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 19, 0, 1);
3632 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 19, 1, -10);
3638 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 19, 2, -10);
3639 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 20, 0, 1);
3640 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 20, 1, 1);
3641 test(S("abcdefghij"), 9, 1, S("abcdefghijklmnopqrst"), 21, 0, 0);
3642 test(S("abcdefghij"), 9, 2, S(""), 0, 0, 1);
3643 test(S("abcdefghij"), 9, 2, S(""), 0, 1, 1);
3644 test(S("abcdefghij"), 9, 2, S(""), 1, 0, 0);
3645 test(S("abcdefghij"), 9, 2, S("abcde"), 0, 0, 1);
3646 test(S("abcdefghij"), 9, 2, S("abcde"), 0, 1, 9);
3647 test(S("abcdefghij"), 9, 2, S("abcde"), 0, 2, 9);
3648 test(S("abcdefghij"), 9, 2, S("abcde"), 0, 4, 9);
3649 test(S("abcdefghij"), 9, 2, S("abcde"), 0, 5, 9);
3650 test(S("abcdefghij"), 9, 2, S("abcde"), 0, 6, 9);
3651 test(S("abcdefghij"), 9, 2, S("abcde"), 1, 0, 1);
3652 test(S("abcdefghij"), 9, 2, S("abcde"), 1, 1, 8);
3653 test(S("abcdefghij"), 9, 2, S("abcde"), 1, 2, 8);
3654 test(S("abcdefghij"), 9, 2, S("abcde"), 1, 3, 8);
3655 test(S("abcdefghij"), 9, 2, S("abcde"), 1, 4, 8);
3656 test(S("abcdefghij"), 9, 2, S("abcde"), 1, 5, 8);
3657 test(S("abcdefghij"), 9, 2, S("abcde"), 2, 0, 1);
3658 test(S("abcdefghij"), 9, 2, S("abcde"), 2, 1, 7);
3659 test(S("abcdefghij"), 9, 2, S("abcde"), 2, 2, 7);
3660 test(S("abcdefghij"), 9, 2, S("abcde"), 2, 3, 7);
3661 test(S("abcdefghij"), 9, 2, S("abcde"), 2, 4, 7);
3662 test(S("abcdefghij"), 9, 2, S("abcde"), 4, 0, 1);
3663 test(S("abcdefghij"), 9, 2, S("abcde"), 4, 1, 5);
3664 test(S("abcdefghij"), 9, 2, S("abcde"), 4, 2, 5);
3665 test(S("abcdefghij"), 9, 2, S("abcde"), 5, 0, 1);
3666 test(S("abcdefghij"), 9, 2, S("abcde"), 5, 1, 1);
3667 test(S("abcdefghij"), 9, 2, S("abcde"), 6, 0, 0);
3668 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 0, 0, 1);
3669 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 0, 1, 9);
3670 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 0, 5, 9);
3671 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 0, 9, 9);
3672 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 0, 10, 9);
3673 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 0, 11, 9);
3674 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 1, 0, 1);
3675 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 1, 1, 8);
3676 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 1, 4, 8);
3677 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 1, 8, 8);
3678 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 1, 9, 8);
3679 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 1, 10, 8);
3680 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 5, 0, 1);
3681 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 5, 1, 4);
3682 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 5, 2, 4);
3683 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 5, 4, 4);
3684 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 5, 5, 4);
3685 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 5, 6, 4);
3686 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 9, 0, 1);
3687 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 9, 1, 0);
3688 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 9, 2, 0);
3689 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 10, 0, 1);
3690 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 10, 1, 1);
3691 test(S("abcdefghij"), 9, 2, S("abcdefghij"), 11, 0, 0);
3692 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 0, 0, 1);
3693 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 0, 1, 9);
3694 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 0, 10, 9);
3695 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 0, 19, 9);
3696 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 0, 20, 9);
3697 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 0, 21, 9);
3698 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 1, 0, 1);
3699 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 1, 1, 8);
3700 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 1, 9, 8);
3701 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 1, 18, 8);
3702 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 1, 19, 8);
3703 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 1, 20, 8);
3704 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 10, 0, 1);
3705 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 10, 1, -1);
3706 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 10, 5, -1);
3707 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 10, 9, -1);
3708 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 10, 10, -1);
3709 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 10, 11, -1);
3710 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 19, 0, 1);
3711 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 19, 1, -10);
3712 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 19, 2, -10);
3713 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 20, 0, 1);
3714 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 20, 1, 1);
3715 test(S("abcdefghij"), 9, 2, S("abcdefghijklmnopqrst"), 21, 0, 0);
3716 test(S("abcdefghij"), 10, 0, S(""), 0, 0, 0);
3717 test(S("abcdefghij"), 10, 0, S(""), 0, 1, 0);
3718 test(S("abcdefghij"), 10, 0, S(""), 1, 0, 0);
3719 test(S("abcdefghij"), 10, 0, S("abcde"), 0, 0, 0);
3720 test(S("abcdefghij"), 10, 0, S("abcde"), 0, 1, -1);
3721 test(S("abcdefghij"), 10, 0, S("abcde"), 0, 2, -2);
3722 test(S("abcdefghij"), 10, 0, S("abcde"), 0, 4, -4);
3723 test(S("abcdefghij"), 10, 0, S("abcde"), 0, 5, -5);
3724 test(S("abcdefghij"), 10, 0, S("abcde"), 0, 6, -5);
3725 test(S("abcdefghij"), 10, 0, S("abcde"), 1, 0, 0);
3726 test(S("abcdefghij"), 10, 0, S("abcde"), 1, 1, -1);
3727 test(S("abcdefghij"), 10, 0, S("abcde"), 1, 2, -2);
3728 test(S("abcdefghij"), 10, 0, S("abcde"), 1, 3, -3);
3729 test(S("abcdefghij"), 10, 0, S("abcde"), 1, 4, -4);
3730 test(S("abcdefghij"), 10, 0, S("abcde"), 1, 5, -4);
3731 test(S("abcdefghij"), 10, 0, S("abcde"), 2, 0, 0);
3732 test(S("abcdefghij"), 10, 0, S("abcde"), 2, 1, -1);
3733 test(S("abcdefghij"), 10, 0, S("abcde"), 2, 2, -2);
3734 test(S("abcdefghij"), 10, 0, S("abcde"), 2, 3, -3);
3735 test(S("abcdefghij"), 10, 0, S("abcde"), 2, 4, -3);
3736 test(S("abcdefghij"), 10, 0, S("abcde"), 4, 0, 0);
3737 test(S("abcdefghij"), 10, 0, S("abcde"), 4, 1, -1);
3743 test(S("abcdefghij"), 10, 0, S("abcde"), 4, 2, -1);
3744 test(S("abcdefghij"), 10, 0, S("abcde"), 5, 0, 0);
3745 test(S("abcdefghij"), 10, 0, S("abcde"), 5, 1, 0);
3746 test(S("abcdefghij"), 10, 0, S("abcde"), 6, 0, 0);
3747 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 0, 0, 0);
3748 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 0, 1, -1);
3749 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 0, 5, -5);
3750 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 0, 9, -9);
3751 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 0, 10, -10);
3752 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 0, 11, -10);
3753 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 1, 0, 0);
3754 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 1, 1, -1);
3755 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 1, 4, -4);
3756 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 1, 8, -8);
3757 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 1, 9, -9);
3758 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 1, 10, -9);
3759 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 5, 0, 0);
3760 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 5, 1, -1);
3761 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 5, 2, -2);
3762 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 5, 4, -4);
3763 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 5, 5, -5);
3764 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 5, 6, -5);
3765 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 9, 0, 0);
3766 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 9, 1, -1);
3767 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 9, 2, -1);
3768 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 10, 0, 0);
3769 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 10, 1, 0);
3770 test(S("abcdefghij"), 10, 0, S("abcdefghij"), 11, 0, 0);
3771 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
3772 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 0, 1, -1);
3773 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 0, 10, -10);
3774 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 0, 19, -19);
3775 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 0, 20, -20);
3776 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 0, 21, -20);
3777 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
3778 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 1, 1, -1);
3779 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 1, 9, -9);
3780 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 1, 18, -18);
3781 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 1, 19, -19);
3782 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 1, 20, -19);
3783 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
3784 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 10, 1, -1);
3785 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 10, 5, -5);
3786 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 10, 9, -9);
3787 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 10, 10, -10);
3788 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 10, 11, -10);
3789 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
3790 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 19, 1, -1);
3791 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 19, 2, -1);
3792 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
3793 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
3794 test(S("abcdefghij"), 10, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
3795 test(S("abcdefghij"), 10, 1, S(""), 0, 0, 0);
3796 test(S("abcdefghij"), 10, 1, S(""), 0, 1, 0);
3797 test(S("abcdefghij"), 10, 1, S(""), 1, 0, 0);
3798 test(S("abcdefghij"), 10, 1, S("abcde"), 0, 0, 0);
3799 test(S("abcdefghij"), 10, 1, S("abcde"), 0, 1, -1);
3800 test(S("abcdefghij"), 10, 1, S("abcde"), 0, 2, -2);
3801 test(S("abcdefghij"), 10, 1, S("abcde"), 0, 4, -4);
3802 test(S("abcdefghij"), 10, 1, S("abcde"), 0, 5, -5);
3803 test(S("abcdefghij"), 10, 1, S("abcde"), 0, 6, -5);
3804 test(S("abcdefghij"), 10, 1, S("abcde"), 1, 0, 0);
3805 test(S("abcdefghij"), 10, 1, S("abcde"), 1, 1, -1);
3806 test(S("abcdefghij"), 10, 1, S("abcde"), 1, 2, -2);
3807 test(S("abcdefghij"), 10, 1, S("abcde"), 1, 3, -3);
3808 test(S("abcdefghij"), 10, 1, S("abcde"), 1, 4, -4);
3809 test(S("abcdefghij"), 10, 1, S("abcde"), 1, 5, -4);
3810 test(S("abcdefghij"), 10, 1, S("abcde"), 2, 0, 0);
3811 test(S("abcdefghij"), 10, 1, S("abcde"), 2, 1, -1);
3812 test(S("abcdefghij"), 10, 1, S("abcde"), 2, 2, -2);
3813 test(S("abcdefghij"), 10, 1, S("abcde"), 2, 3, -3);
3814 test(S("abcdefghij"), 10, 1, S("abcde"), 2, 4, -3);
3815 test(S("abcdefghij"), 10, 1, S("abcde"), 4, 0, 0);
3816 test(S("abcdefghij"), 10, 1, S("abcde"), 4, 1, -1);
3817 test(S("abcdefghij"), 10, 1, S("abcde"), 4, 2, -1);
3818 test(S("abcdefghij"), 10, 1, S("abcde"), 5, 0, 0);
3819 test(S("abcdefghij"), 10, 1, S("abcde"), 5, 1, 0);
3820 test(S("abcdefghij"), 10, 1, S("abcde"), 6, 0, 0);
3821 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 0, 0, 0);
3822 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 0, 1, -1);
3823 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 0, 5, -5);
3824 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 0, 9, -9);
3825 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 0, 10, -10);
3826 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 0, 11, -10);
3827 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 1, 0, 0);
3828 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 1, 1, -1);
3829 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 1, 4, -4);
3830 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 1, 8, -8);
3831 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 1, 9, -9);
3832 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 1, 10, -9);
3833 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 5, 0, 0);
3834 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 5, 1, -1);
3835 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 5, 2, -2);
3836 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 5, 4, -4);
3837 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 5, 5, -5);
3838 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 5, 6, -5);
3839 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 9, 0, 0);
3840 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 9, 1, -1);
3841 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 9, 2, -1);
3842 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 10, 0, 0);
3848 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 10, 1, 0);
3849 test(S("abcdefghij"), 10, 1, S("abcdefghij"), 11, 0, 0);
3850 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 0, 0, 0);
3851 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 0, 1, -1);
3852 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 0, 10, -10);
3853 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 0, 19, -19);
3854 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 0, 20, -20);
3855 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 0, 21, -20);
3856 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 1, 0, 0);
3857 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 1, 1, -1);
3858 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 1, 9, -9);
3859 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 1, 18, -18);
3860 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 1, 19, -19);
3861 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 1, 20, -19);
3862 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 10, 0, 0);
3863 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 10, 1, -1);
3864 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 10, 5, -5);
3865 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 10, 9, -9);
3866 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 10, 10, -10);
3867 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 10, 11, -10);
3868 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 19, 0, 0);
3869 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 19, 1, -1);
3870 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 19, 2, -1);
3871 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 20, 0, 0);
3872 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 20, 1, 0);
3873 test(S("abcdefghij"), 10, 1, S("abcdefghijklmnopqrst"), 21, 0, 0);
3874 test(S("abcdefghij"), 11, 0, S(""), 0, 0, 0);
3875 test(S("abcdefghij"), 11, 0, S(""), 0, 1, 0);
3876 test(S("abcdefghij"), 11, 0, S(""), 1, 0, 0);
3877 test(S("abcdefghij"), 11, 0, S("abcde"), 0, 0, 0);
3878 test(S("abcdefghij"), 11, 0, S("abcde"), 0, 1, 0);
3879 test(S("abcdefghij"), 11, 0, S("abcde"), 0, 2, 0);
3880 test(S("abcdefghij"), 11, 0, S("abcde"), 0, 4, 0);
3881 test(S("abcdefghij"), 11, 0, S("abcde"), 0, 5, 0);
3882 test(S("abcdefghij"), 11, 0, S("abcde"), 0, 6, 0);
3883 test(S("abcdefghij"), 11, 0, S("abcde"), 1, 0, 0);
3884 test(S("abcdefghij"), 11, 0, S("abcde"), 1, 1, 0);
3885 test(S("abcdefghij"), 11, 0, S("abcde"), 1, 2, 0);
3886 test(S("abcdefghij"), 11, 0, S("abcde"), 1, 3, 0);
3887 test(S("abcdefghij"), 11, 0, S("abcde"), 1, 4, 0);
3888 test(S("abcdefghij"), 11, 0, S("abcde"), 1, 5, 0);
3889 test(S("abcdefghij"), 11, 0, S("abcde"), 2, 0, 0);
3890 test(S("abcdefghij"), 11, 0, S("abcde"), 2, 1, 0);
3891 test(S("abcdefghij"), 11, 0, S("abcde"), 2, 2, 0);
3892 test(S("abcdefghij"), 11, 0, S("abcde"), 2, 3, 0);
3893 test(S("abcdefghij"), 11, 0, S("abcde"), 2, 4, 0);
3894 test(S("abcdefghij"), 11, 0, S("abcde"), 4, 0, 0);
3895 test(S("abcdefghij"), 11, 0, S("abcde"), 4, 1, 0);
3896 test(S("abcdefghij"), 11, 0, S("abcde"), 4, 2, 0);
3897 test(S("abcdefghij"), 11, 0, S("abcde"), 5, 0, 0);
3898 test(S("abcdefghij"), 11, 0, S("abcde"), 5, 1, 0);
3899 test(S("abcdefghij"), 11, 0, S("abcde"), 6, 0, 0);
3900 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 0, 0, 0);
3901 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 0, 1, 0);
3902 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 0, 5, 0);
3903 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 0, 9, 0);
3904 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 0, 10, 0);
3905 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 0, 11, 0);
3906 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 1, 0, 0);
3907 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 1, 1, 0);
3908 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 1, 4, 0);
3909 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 1, 8, 0);
3910 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 1, 9, 0);
3911 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 1, 10, 0);
3912 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 5, 0, 0);
3913 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 5, 1, 0);
3914 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 5, 2, 0);
3915 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 5, 4, 0);
3916 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 5, 5, 0);
3917 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 5, 6, 0);
3918 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 9, 0, 0);
3919 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 9, 1, 0);
3920 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 9, 2, 0);
3921 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 10, 0, 0);
3922 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 10, 1, 0);
3923 test(S("abcdefghij"), 11, 0, S("abcdefghij"), 11, 0, 0);
3924 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
3925 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 0, 1, 0);
3926 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 0, 10, 0);
3927 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 0, 19, 0);
3928 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 0, 20, 0);
3929 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 0, 21, 0);
3930 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
3931 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 1, 1, 0);
3932 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 1, 9, 0);
3933 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 1, 18, 0);
3934 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 1, 19, 0);
3935 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 1, 20, 0);
3936 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
3937 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 10, 1, 0);
3938 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 10, 5, 0);
3939 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 10, 9, 0);
3940 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 10, 10, 0);
3941 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 10, 11, 0);
3942 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
3943 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 19, 1, 0);
3944 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 19, 2, 0);
3945 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
3946 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
3947 test(S("abcdefghij"), 11, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
3953 test(S("abcdefghijklmnopqrst"), 0, 0, S(""), 0, 0, 0);
3954 test(S("abcdefghijklmnopqrst"), 0, 0, S(""), 0, 1, 0);
3955 test(S("abcdefghijklmnopqrst"), 0, 0, S(""), 1, 0, 0);
3956 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 0, 0, 0);
3957 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 0, 1, -1);
3958 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 0, 2, -2);
3959 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 0, 4, -4);
3960 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 0, 5, -5);
3961 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 0, 6, -5);
3962 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 1, 0, 0);
3963 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 1, 1, -1);
3964 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 1, 2, -2);
3965 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 1, 3, -3);
3966 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 1, 4, -4);
3967 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 1, 5, -4);
3968 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 2, 0, 0);
3969 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 2, 1, -1);
3970 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 2, 2, -2);
3971 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 2, 3, -3);
3972 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 2, 4, -3);
3973 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 4, 0, 0);
3974 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 4, 1, -1);
3975 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 4, 2, -1);
3976 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 5, 0, 0);
3977 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 5, 1, 0);
3978 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcde"), 6, 0, 0);
3979 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 0, 0, 0);
3980 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 0, 1, -1);
3981 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 0, 5, -5);
3982 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 0, 9, -9);
3983 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 0, 10, -10);
3984 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 0, 11, -10);
3985 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 1, 0, 0);
3986 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 1, 1, -1);
3987 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 1, 4, -4);
3988 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 1, 8, -8);
3989 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 1, 9, -9);
3990 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 1, 10, -9);
3991 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 5, 0, 0);
3992 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 5, 1, -1);
3993 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 5, 2, -2);
3994 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 5, 4, -4);
3995 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 5, 5, -5);
3996 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 5, 6, -5);
3997 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 9, 0, 0);
3998 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 9, 1, -1);
3999 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 9, 2, -1);
4000 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 10, 0, 0);
4001 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 10, 1, 0);
4002 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghij"), 11, 0, 0);
4003 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
4004 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 0, 1, -1);
4005 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 0, 10, -10);
4006 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 0, 19, -19);
4007 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 0, 20, -20);
4008 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 0, 21, -20);
4009 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
4010 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 1, 1, -1);
4011 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 1, 9, -9);
4012 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 1, 18, -18);
4013 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 1, 19, -19);
4014 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 1, 20, -19);
4015 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
4016 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 10, 1, -1);
4017 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 10, 5, -5);
4018 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 10, 9, -9);
4019 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 10, 10, -10);
4020 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 10, 11, -10);
4021 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
4022 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 19, 1, -1);
4023 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 19, 2, -1);
4024 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
4025 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
4026 test(S("abcdefghijklmnopqrst"), 0, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
4027 test(S("abcdefghijklmnopqrst"), 0, 1, S(""), 0, 0, 1);
4028 test(S("abcdefghijklmnopqrst"), 0, 1, S(""), 0, 1, 1);
4029 test(S("abcdefghijklmnopqrst"), 0, 1, S(""), 1, 0, 0);
4030 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 0, 0, 1);
4031 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 0, 1, 0);
4032 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 0, 2, -1);
4033 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 0, 4, -3);
4034 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 0, 5, -4);
4035 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 0, 6, -4);
4036 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 1, 0, 1);
4037 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 1, 1, -1);
4038 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 1, 2, -1);
4039 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 1, 3, -1);
4040 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 1, 4, -1);
4041 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 1, 5, -1);
4042 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 2, 0, 1);
4043 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 2, 1, -2);
4044 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 2, 2, -2);
4045 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 2, 3, -2);
4046 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 2, 4, -2);
4047 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 4, 0, 1);
4048 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 4, 1, -4);
4049 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 4, 2, -4);
4050 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 5, 0, 1);
4051 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 5, 1, 1);
4052 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcde"), 6, 0, 0);
4058 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 0, 0, 1);
4059 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 0, 1, 0);
4060 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 0, 5, -4);
4061 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 0, 9, -8);
4062 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 0, 10, -9);
4063 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 0, 11, -9);
4064 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 1, 0, 1);
4065 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 1, 1, -1);
4066 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 1, 4, -1);
4067 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 1, 8, -1);
4068 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 1, 9, -1);
4069 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 1, 10, -1);
4070 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 5, 0, 1);
4071 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 5, 1, -5);
4072 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 5, 2, -5);
4073 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 5, 4, -5);
4074 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 5, 5, -5);
4075 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 5, 6, -5);
4076 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 9, 0, 1);
4077 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 9, 1, -9);
4078 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 9, 2, -9);
4079 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 10, 0, 1);
4080 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 10, 1, 1);
4081 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghij"), 11, 0, 0);
4082 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 0, 0, 1);
4083 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 0, 1, 0);
4084 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 0, 10, -9);
4085 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 0, 19, -18);
4086 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 0, 20, -19);
4087 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 0, 21, -19);
4088 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 1, 0, 1);
4089 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 1, 1, -1);
4090 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 1, 9, -1);
4091 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 1, 18, -1);
4092 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 1, 19, -1);
4093 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 1, 20, -1);
4094 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 10, 0, 1);
4095 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 10, 1, -10);
4096 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 10, 5, -10);
4097 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 10, 9, -10);
4098 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 10, 10, -10);
4099 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 10, 11, -10);
4100 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 19, 0, 1);
4101 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 19, 1, -19);
4102 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 19, 2, -19);
4103 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 20, 0, 1);
4104 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 20, 1, 1);
4105 test(S("abcdefghijklmnopqrst"), 0, 1, S("abcdefghijklmnopqrst"), 21, 0, 0);
4106 test(S("abcdefghijklmnopqrst"), 0, 10, S(""), 0, 0, 10);
4107 test(S("abcdefghijklmnopqrst"), 0, 10, S(""), 0, 1, 10);
4108 test(S("abcdefghijklmnopqrst"), 0, 10, S(""), 1, 0, 0);
4109 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 0, 0, 10);
4110 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 0, 1, 9);
4111 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 0, 2, 8);
4112 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 0, 4, 6);
4113 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 0, 5, 5);
4114 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 0, 6, 5);
4115 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 1, 0, 10);
4116 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 1, 1, -1);
4117 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 1, 2, -1);
4118 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 1, 3, -1);
4119 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 1, 4, -1);
4120 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 1, 5, -1);
4121 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 2, 0, 10);
4122 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 2, 1, -2);
4123 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 2, 2, -2);
4124 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 2, 3, -2);
4125 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 2, 4, -2);
4126 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 4, 0, 10);
4127 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 4, 1, -4);
4128 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 4, 2, -4);
4129 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 5, 0, 10);
4130 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 5, 1, 10);
4131 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcde"), 6, 0, 0);
4132 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 0, 0, 10);
4133 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 0, 1, 9);
4134 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 0, 5, 5);
4135 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 0, 9, 1);
4136 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 0, 10, 0);
4137 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 0, 11, 0);
4138 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 1, 0, 10);
4139 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 1, 1, -1);
4140 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 1, 4, -1);
4141 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 1, 8, -1);
4142 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 1, 9, -1);
4143 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 1, 10, -1);
4144 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 5, 0, 10);
4145 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 5, 1, -5);
4146 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 5, 2, -5);
4147 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 5, 4, -5);
4148 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 5, 5, -5);
4149 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 5, 6, -5);
4150 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 9, 0, 10);
4151 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 9, 1, -9);
4152 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 9, 2, -9);
4153 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 10, 0, 10);
4154 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 10, 1, 10);
4155 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghij"), 11, 0, 0);
4156 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 0, 0, 10);
4157 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 0, 1, 9);
4163 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 0, 10, 0);
4164 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 0, 19, -9);
4165 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 0, 20, -10);
4166 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 0, 21, -10);
4167 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 1, 0, 10);
4168 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 1, 1, -1);
4169 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 1, 9, -1);
4170 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 1, 18, -1);
4171 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 1, 19, -1);
4172 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 1, 20, -1);
4173 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 10, 0, 10);
4174 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 10, 1, -10);
4175 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 10, 5, -10);
4176 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 10, 9, -10);
4177 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 10, 10, -10);
4178 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 10, 11, -10);
4179 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 19, 0, 10);
4180 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 19, 1, -19);
4181 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 19, 2, -19);
4182 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 20, 0, 10);
4183 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 20, 1, 10);
4184 test(S("abcdefghijklmnopqrst"), 0, 10, S("abcdefghijklmnopqrst"), 21, 0, 0);
4185 test(S("abcdefghijklmnopqrst"), 0, 19, S(""), 0, 0, 19);
4186 test(S("abcdefghijklmnopqrst"), 0, 19, S(""), 0, 1, 19);
4187 test(S("abcdefghijklmnopqrst"), 0, 19, S(""), 1, 0, 0);
4188 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 0, 0, 19);
4189 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 0, 1, 18);
4190 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 0, 2, 17);
4191 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 0, 4, 15);
4192 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 0, 5, 14);
4193 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 0, 6, 14);
4194 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 1, 0, 19);
4195 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 1, 1, -1);
4196 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 1, 2, -1);
4197 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 1, 3, -1);
4198 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 1, 4, -1);
4199 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 1, 5, -1);
4200 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 2, 0, 19);
4201 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 2, 1, -2);
4202 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 2, 2, -2);
4203 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 2, 3, -2);
4204 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 2, 4, -2);
4205 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 4, 0, 19);
4206 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 4, 1, -4);
4207 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 4, 2, -4);
4208 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 5, 0, 19);
4209 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 5, 1, 19);
4210 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcde"), 6, 0, 0);
4211 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 0, 0, 19);
4212 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 0, 1, 18);
4213 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 0, 5, 14);
4214 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 0, 9, 10);
4215 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 0, 10, 9);
4216 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 0, 11, 9);
4217 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 1, 0, 19);
4218 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 1, 1, -1);
4219 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 1, 4, -1);
4220 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 1, 8, -1);
4221 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 1, 9, -1);
4222 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 1, 10, -1);
4223 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 5, 0, 19);
4224 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 5, 1, -5);
4225 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 5, 2, -5);
4226 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 5, 4, -5);
4227 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 5, 5, -5);
4228 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 5, 6, -5);
4229 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 9, 0, 19);
4230 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 9, 1, -9);
4231 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 9, 2, -9);
4232 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 10, 0, 19);
4233 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 10, 1, 19);
4234 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghij"), 11, 0, 0);
4235 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 0, 0, 19);
4236 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 0, 1, 18);
4237 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 0, 10, 9);
4238 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 0, 19, 0);
4239 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 0, 20, -1);
4240 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 0, 21, -1);
4241 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 1, 0, 19);
4242 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 1, 1, -1);
4243 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 1, 9, -1);
4244 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 1, 18, -1);
4245 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 1, 19, -1);
4246 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 1, 20, -1);
4247 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 10, 0, 19);
4248 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 10, 1, -10);
4249 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 10, 5, -10);
4250 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 10, 9, -10);
4251 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 10, 10, -10);
4252 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 10, 11, -10);
4253 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 19, 0, 19);
4254 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 19, 1, -19);
4255 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 19, 2, -19);
4256 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 20, 0, 19);
4257 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 20, 1, 19);
4258 test(S("abcdefghijklmnopqrst"), 0, 19, S("abcdefghijklmnopqrst"), 21, 0, 0);
4259 test(S("abcdefghijklmnopqrst"), 0, 20, S(""), 0, 0, 20);
4260 test(S("abcdefghijklmnopqrst"), 0, 20, S(""), 0, 1, 20);
4261 test(S("abcdefghijklmnopqrst"), 0, 20, S(""), 1, 0, 0);
4262 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 0, 0, 20);
4268 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 0, 1, 19);
4269 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 0, 2, 18);
4270 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 0, 4, 16);
4271 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 0, 5, 15);
4272 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 0, 6, 15);
4273 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 1, 0, 20);
4274 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 1, 1, -1);
4275 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 1, 2, -1);
4276 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 1, 3, -1);
4277 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 1, 4, -1);
4278 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 1, 5, -1);
4279 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 2, 0, 20);
4280 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 2, 1, -2);
4281 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 2, 2, -2);
4282 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 2, 3, -2);
4283 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 2, 4, -2);
4284 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 4, 0, 20);
4285 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 4, 1, -4);
4286 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 4, 2, -4);
4287 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 5, 0, 20);
4288 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 5, 1, 20);
4289 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcde"), 6, 0, 0);
4290 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 0, 0, 20);
4291 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 0, 1, 19);
4292 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 0, 5, 15);
4293 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 0, 9, 11);
4294 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 0, 10, 10);
4295 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 0, 11, 10);
4296 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 1, 0, 20);
4297 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 1, 1, -1);
4298 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 1, 4, -1);
4299 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 1, 8, -1);
4300 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 1, 9, -1);
4301 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 1, 10, -1);
4302 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 5, 0, 20);
4303 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 5, 1, -5);
4304 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 5, 2, -5);
4305 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 5, 4, -5);
4306 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 5, 5, -5);
4307 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 5, 6, -5);
4308 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 9, 0, 20);
4309 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 9, 1, -9);
4310 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 9, 2, -9);
4311 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 10, 0, 20);
4312 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 10, 1, 20);
4313 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghij"), 11, 0, 0);
4314 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 0, 0, 20);
4315 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 0, 1, 19);
4316 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 0, 10, 10);
4317 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 0, 19, 1);
4318 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 0, 20, 0);
4319 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 0, 21, 0);
4320 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 1, 0, 20);
4321 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 1, 1, -1);
4322 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 1, 9, -1);
4323 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 1, 18, -1);
4324 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 1, 19, -1);
4325 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 1, 20, -1);
4326 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 10, 0, 20);
4327 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 10, 1, -10);
4328 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 10, 5, -10);
4329 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 10, 9, -10);
4330 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 10, 10, -10);
4331 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 10, 11, -10);
4332 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 19, 0, 20);
4333 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 19, 1, -19);
4334 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 19, 2, -19);
4335 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 20, 0, 20);
4336 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 20, 1, 20);
4337 test(S("abcdefghijklmnopqrst"), 0, 20, S("abcdefghijklmnopqrst"), 21, 0, 0);
4338 test(S("abcdefghijklmnopqrst"), 0, 21, S(""), 0, 0, 20);
4339 test(S("abcdefghijklmnopqrst"), 0, 21, S(""), 0, 1, 20);
4340 test(S("abcdefghijklmnopqrst"), 0, 21, S(""), 1, 0, 0);
4341 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 0, 0, 20);
4342 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 0, 1, 19);
4343 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 0, 2, 18);
4344 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 0, 4, 16);
4345 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 0, 5, 15);
4346 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 0, 6, 15);
4347 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 1, 0, 20);
4348 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 1, 1, -1);
4349 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 1, 2, -1);
4350 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 1, 3, -1);
4351 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 1, 4, -1);
4352 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 1, 5, -1);
4353 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 2, 0, 20);
4354 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 2, 1, -2);
4355 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 2, 2, -2);
4356 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 2, 3, -2);
4357 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 2, 4, -2);
4358 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 4, 0, 20);
4359 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 4, 1, -4);
4360 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 4, 2, -4);
4361 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 5, 0, 20);
4362 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 5, 1, 20);
4363 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcde"), 6, 0, 0);
4364 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 0, 0, 20);
4365 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 0, 1, 19);
4366 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 0, 5, 15);
4367 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 0, 9, 11);
4373 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 0, 10, 10);
4374 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 0, 11, 10);
4375 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 1, 0, 20);
4376 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 1, 1, -1);
4377 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 1, 4, -1);
4378 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 1, 8, -1);
4379 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 1, 9, -1);
4380 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 1, 10, -1);
4381 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 5, 0, 20);
4382 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 5, 1, -5);
4383 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 5, 2, -5);
4384 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 5, 4, -5);
4385 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 5, 5, -5);
4386 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 5, 6, -5);
4387 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 9, 0, 20);
4388 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 9, 1, -9);
4389 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 9, 2, -9);
4390 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 10, 0, 20);
4391 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 10, 1, 20);
4392 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghij"), 11, 0, 0);
4393 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 0, 0, 20);
4394 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 0, 1, 19);
4395 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 0, 10, 10);
4396 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 0, 19, 1);
4397 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 0, 20, 0);
4398 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 0, 21, 0);
4399 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 1, 0, 20);
4400 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 1, 1, -1);
4401 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 1, 9, -1);
4402 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 1, 18, -1);
4403 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 1, 19, -1);
4404 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 1, 20, -1);
4405 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 10, 0, 20);
4406 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 10, 1, -10);
4407 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 10, 5, -10);
4408 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 10, 9, -10);
4409 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 10, 10, -10);
4410 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 10, 11, -10);
4411 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 19, 0, 20);
4412 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 19, 1, -19);
4413 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 19, 2, -19);
4414 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 20, 0, 20);
4415 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 20, 1, 20);
4416 test(S("abcdefghijklmnopqrst"), 0, 21, S("abcdefghijklmnopqrst"), 21, 0, 0);
4417 test(S("abcdefghijklmnopqrst"), 1, 0, S(""), 0, 0, 0);
4418 test(S("abcdefghijklmnopqrst"), 1, 0, S(""), 0, 1, 0);
4419 test(S("abcdefghijklmnopqrst"), 1, 0, S(""), 1, 0, 0);
4420 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 0, 0, 0);
4421 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 0, 1, -1);
4422 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 0, 2, -2);
4423 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 0, 4, -4);
4424 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 0, 5, -5);
4425 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 0, 6, -5);
4426 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 1, 0, 0);
4427 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 1, 1, -1);
4428 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 1, 2, -2);
4429 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 1, 3, -3);
4430 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 1, 4, -4);
4431 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 1, 5, -4);
4432 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 2, 0, 0);
4433 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 2, 1, -1);
4434 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 2, 2, -2);
4435 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 2, 3, -3);
4436 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 2, 4, -3);
4437 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 4, 0, 0);
4438 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 4, 1, -1);
4439 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 4, 2, -1);
4440 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 5, 0, 0);
4441 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 5, 1, 0);
4442 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcde"), 6, 0, 0);
4443 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 0, 0, 0);
4444 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 0, 1, -1);
4445 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 0, 5, -5);
4446 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 0, 9, -9);
4447 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 0, 10, -10);
4448 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 0, 11, -10);
4449 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 1, 0, 0);
4450 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 1, 1, -1);
4451 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 1, 4, -4);
4452 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 1, 8, -8);
4453 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 1, 9, -9);
4454 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 1, 10, -9);
4455 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 5, 0, 0);
4456 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 5, 1, -1);
4457 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 5, 2, -2);
4458 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 5, 4, -4);
4459 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 5, 5, -5);
4460 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 5, 6, -5);
4461 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 9, 0, 0);
4462 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 9, 1, -1);
4463 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 9, 2, -1);
4464 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 10, 0, 0);
4465 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 10, 1, 0);
4466 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghij"), 11, 0, 0);
4467 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
4468 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 0, 1, -1);
4469 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 0, 10, -10);
4470 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 0, 19, -19);
4471 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 0, 20, -20);
4472 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 0, 21, -20);
4478 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
4479 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 1, 1, -1);
4480 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 1, 9, -9);
4481 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 1, 18, -18);
4482 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 1, 19, -19);
4483 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 1, 20, -19);
4484 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
4485 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 10, 1, -1);
4486 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 10, 5, -5);
4487 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 10, 9, -9);
4488 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 10, 10, -10);
4489 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 10, 11, -10);
4490 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
4491 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 19, 1, -1);
4492 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 19, 2, -1);
4493 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
4494 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
4495 test(S("abcdefghijklmnopqrst"), 1, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
4496 test(S("abcdefghijklmnopqrst"), 1, 1, S(""), 0, 0, 1);
4497 test(S("abcdefghijklmnopqrst"), 1, 1, S(""), 0, 1, 1);
4498 test(S("abcdefghijklmnopqrst"), 1, 1, S(""), 1, 0, 0);
4499 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 0, 0, 1);
4500 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 0, 1, 1);
4501 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 0, 2, 1);
4502 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 0, 4, 1);
4503 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 0, 5, 1);
4504 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 0, 6, 1);
4505 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 1, 0, 1);
4506 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 1, 1, 0);
4507 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 1, 2, -1);
4508 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 1, 3, -2);
4509 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 1, 4, -3);
4510 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 1, 5, -3);
4511 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 2, 0, 1);
4512 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 2, 1, -1);
4513 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 2, 2, -1);
4514 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 2, 3, -1);
4515 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 2, 4, -1);
4516 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 4, 0, 1);
4517 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 4, 1, -3);
4518 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 4, 2, -3);
4519 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 5, 0, 1);
4520 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 5, 1, 1);
4521 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcde"), 6, 0, 0);
4522 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 0, 0, 1);
4523 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 0, 1, 1);
4524 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 0, 5, 1);
4525 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 0, 9, 1);
4526 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 0, 10, 1);
4527 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 0, 11, 1);
4528 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 1, 0, 1);
4529 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 1, 1, 0);
4530 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 1, 4, -3);
4531 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 1, 8, -7);
4532 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 1, 9, -8);
4533 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 1, 10, -8);
4534 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 5, 0, 1);
4535 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 5, 1, -4);
4536 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 5, 2, -4);
4537 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 5, 4, -4);
4538 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 5, 5, -4);
4539 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 5, 6, -4);
4540 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 9, 0, 1);
4541 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 9, 1, -8);
4542 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 9, 2, -8);
4543 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 10, 0, 1);
4544 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 10, 1, 1);
4545 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghij"), 11, 0, 0);
4546 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 0, 0, 1);
4547 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 0, 1, 1);
4548 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 0, 10, 1);
4549 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 0, 19, 1);
4550 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 0, 20, 1);
4551 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 0, 21, 1);
4552 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 1, 0, 1);
4553 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 1, 1, 0);
4554 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 1, 9, -8);
4555 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 1, 18, -17);
4556 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 1, 19, -18);
4557 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 1, 20, -18);
4558 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 10, 0, 1);
4559 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 10, 1, -9);
4560 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 10, 5, -9);
4561 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 10, 9, -9);
4562 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 10, 10, -9);
4563 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 10, 11, -9);
4564 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 19, 0, 1);
4565 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 19, 1, -18);
4566 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 19, 2, -18);
4567 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 20, 0, 1);
4568 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 20, 1, 1);
4569 test(S("abcdefghijklmnopqrst"), 1, 1, S("abcdefghijklmnopqrst"), 21, 0, 0);
4570 test(S("abcdefghijklmnopqrst"), 1, 9, S(""), 0, 0, 9);
4571 test(S("abcdefghijklmnopqrst"), 1, 9, S(""), 0, 1, 9);
4572 test(S("abcdefghijklmnopqrst"), 1, 9, S(""), 1, 0, 0);
4573 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 0, 0, 9);
4574 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 0, 1, 1);
4575 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 0, 2, 1);
4576 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 0, 4, 1);
4577 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 0, 5, 1);
4583 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 0, 6, 1);
4584 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 1, 0, 9);
4585 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 1, 1, 8);
4586 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 1, 2, 7);
4587 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 1, 3, 6);
4588 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 1, 4, 5);
4589 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 1, 5, 5);
4590 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 2, 0, 9);
4591 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 2, 1, -1);
4592 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 2, 2, -1);
4593 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 2, 3, -1);
4594 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 2, 4, -1);
4595 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 4, 0, 9);
4596 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 4, 1, -3);
4597 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 4, 2, -3);
4598 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 5, 0, 9);
4599 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 5, 1, 9);
4600 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcde"), 6, 0, 0);
4601 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 0, 0, 9);
4602 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 0, 1, 1);
4603 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 0, 5, 1);
4604 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 0, 9, 1);
4605 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 0, 10, 1);
4606 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 0, 11, 1);
4607 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 1, 0, 9);
4608 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 1, 1, 8);
4609 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 1, 4, 5);
4610 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 1, 8, 1);
4611 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 1, 9, 0);
4612 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 1, 10, 0);
4613 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 5, 0, 9);
4614 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 5, 1, -4);
4615 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 5, 2, -4);
4616 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 5, 4, -4);
4617 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 5, 5, -4);
4618 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 5, 6, -4);
4619 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 9, 0, 9);
4620 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 9, 1, -8);
4621 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 9, 2, -8);
4622 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 10, 0, 9);
4623 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 10, 1, 9);
4624 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghij"), 11, 0, 0);
4625 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 0, 0, 9);
4626 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 0, 1, 1);
4627 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 0, 10, 1);
4628 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 0, 19, 1);
4629 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 0, 20, 1);
4630 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 0, 21, 1);
4631 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 1, 0, 9);
4632 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 1, 1, 8);
4633 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 1, 9, 0);
4634 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 1, 18, -9);
4635 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 1, 19, -10);
4636 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 1, 20, -10);
4637 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 10, 0, 9);
4638 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 10, 1, -9);
4639 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 10, 5, -9);
4640 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 10, 9, -9);
4641 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 10, 10, -9);
4642 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 10, 11, -9);
4643 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 19, 0, 9);
4644 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 19, 1, -18);
4645 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 19, 2, -18);
4646 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 20, 0, 9);
4647 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 20, 1, 9);
4648 test(S("abcdefghijklmnopqrst"), 1, 9, S("abcdefghijklmnopqrst"), 21, 0, 0);
4649 test(S("abcdefghijklmnopqrst"), 1, 18, S(""), 0, 0, 18);
4650 test(S("abcdefghijklmnopqrst"), 1, 18, S(""), 0, 1, 18);
4651 test(S("abcdefghijklmnopqrst"), 1, 18, S(""), 1, 0, 0);
4652 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 0, 0, 18);
4653 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 0, 1, 1);
4654 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 0, 2, 1);
4655 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 0, 4, 1);
4656 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 0, 5, 1);
4657 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 0, 6, 1);
4658 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 1, 0, 18);
4659 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 1, 1, 17);
4660 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 1, 2, 16);
4661 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 1, 3, 15);
4662 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 1, 4, 14);
4663 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 1, 5, 14);
4664 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 2, 0, 18);
4665 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 2, 1, -1);
4666 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 2, 2, -1);
4667 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 2, 3, -1);
4668 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 2, 4, -1);
4669 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 4, 0, 18);
4670 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 4, 1, -3);
4671 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 4, 2, -3);
4672 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 5, 0, 18);
4673 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 5, 1, 18);
4674 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcde"), 6, 0, 0);
4675 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 0, 0, 18);
4676 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 0, 1, 1);
4677 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 0, 5, 1);
4678 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 0, 9, 1);
4679 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 0, 10, 1);
4680 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 0, 11, 1);
4681 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 1, 0, 18);
4682 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 1, 1, 17);
4688 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 1, 4, 14);
4689 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 1, 8, 10);
4690 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 1, 9, 9);
4691 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 1, 10, 9);
4692 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 5, 0, 18);
4693 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 5, 1, -4);
4694 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 5, 2, -4);
4695 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 5, 4, -4);
4696 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 5, 5, -4);
4697 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 5, 6, -4);
4698 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 9, 0, 18);
4699 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 9, 1, -8);
4700 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 9, 2, -8);
4701 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 10, 0, 18);
4702 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 10, 1, 18);
4703 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghij"), 11, 0, 0);
4704 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 0, 0, 18);
4705 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 0, 1, 1);
4706 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 0, 10, 1);
4707 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 0, 19, 1);
4708 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 0, 20, 1);
4709 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 0, 21, 1);
4710 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 1, 0, 18);
4711 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 1, 1, 17);
4712 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 1, 9, 9);
4713 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 1, 18, 0);
4714 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 1, 19, -1);
4715 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 1, 20, -1);
4716 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 10, 0, 18);
4717 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 10, 1, -9);
4718 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 10, 5, -9);
4719 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 10, 9, -9);
4720 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 10, 10, -9);
4721 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 10, 11, -9);
4722 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 19, 0, 18);
4723 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 19, 1, -18);
4724 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 19, 2, -18);
4725 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 20, 0, 18);
4726 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 20, 1, 18);
4727 test(S("abcdefghijklmnopqrst"), 1, 18, S("abcdefghijklmnopqrst"), 21, 0, 0);
4728 test(S("abcdefghijklmnopqrst"), 1, 19, S(""), 0, 0, 19);
4729 test(S("abcdefghijklmnopqrst"), 1, 19, S(""), 0, 1, 19);
4730 test(S("abcdefghijklmnopqrst"), 1, 19, S(""), 1, 0, 0);
4731 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 0, 0, 19);
4732 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 0, 1, 1);
4733 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 0, 2, 1);
4734 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 0, 4, 1);
4735 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 0, 5, 1);
4736 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 0, 6, 1);
4737 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 1, 0, 19);
4738 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 1, 1, 18);
4739 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 1, 2, 17);
4740 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 1, 3, 16);
4741 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 1, 4, 15);
4742 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 1, 5, 15);
4743 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 2, 0, 19);
4744 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 2, 1, -1);
4745 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 2, 2, -1);
4746 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 2, 3, -1);
4747 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 2, 4, -1);
4748 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 4, 0, 19);
4749 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 4, 1, -3);
4750 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 4, 2, -3);
4751 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 5, 0, 19);
4752 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 5, 1, 19);
4753 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcde"), 6, 0, 0);
4754 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 0, 0, 19);
4755 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 0, 1, 1);
4756 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 0, 5, 1);
4757 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 0, 9, 1);
4758 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 0, 10, 1);
4759 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 0, 11, 1);
4760 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 1, 0, 19);
4761 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 1, 1, 18);
4762 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 1, 4, 15);
4763 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 1, 8, 11);
4764 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 1, 9, 10);
4765 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 1, 10, 10);
4766 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 5, 0, 19);
4767 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 5, 1, -4);
4768 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 5, 2, -4);
4769 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 5, 4, -4);
4770 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 5, 5, -4);
4771 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 5, 6, -4);
4772 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 9, 0, 19);
4773 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 9, 1, -8);
4774 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 9, 2, -8);
4775 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 10, 0, 19);
4776 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 10, 1, 19);
4777 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghij"), 11, 0, 0);
4778 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 0, 0, 19);
4779 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 0, 1, 1);
4780 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 0, 10, 1);
4781 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 0, 19, 1);
4782 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 0, 20, 1);
4783 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 0, 21, 1);
4784 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 1, 0, 19);
4785 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 1, 1, 18);
4786 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 1, 9, 10);
4787 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 1, 18, 1);
4793 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 1, 19, 0);
4794 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 1, 20, 0);
4795 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 10, 0, 19);
4796 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 10, 1, -9);
4797 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 10, 5, -9);
4798 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 10, 9, -9);
4799 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 10, 10, -9);
4800 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 10, 11, -9);
4801 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 19, 0, 19);
4802 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 19, 1, -18);
4803 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 19, 2, -18);
4804 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 20, 0, 19);
4805 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 20, 1, 19);
4806 test(S("abcdefghijklmnopqrst"), 1, 19, S("abcdefghijklmnopqrst"), 21, 0, 0);
4807 test(S("abcdefghijklmnopqrst"), 1, 20, S(""), 0, 0, 19);
4808 test(S("abcdefghijklmnopqrst"), 1, 20, S(""), 0, 1, 19);
4809 test(S("abcdefghijklmnopqrst"), 1, 20, S(""), 1, 0, 0);
4810 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 0, 0, 19);
4811 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 0, 1, 1);
4812 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 0, 2, 1);
4813 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 0, 4, 1);
4814 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 0, 5, 1);
4815 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 0, 6, 1);
4816 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 1, 0, 19);
4817 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 1, 1, 18);
4818 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 1, 2, 17);
4819 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 1, 3, 16);
4820 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 1, 4, 15);
4821 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 1, 5, 15);
4822 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 2, 0, 19);
4823 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 2, 1, -1);
4824 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 2, 2, -1);
4825 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 2, 3, -1);
4826 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 2, 4, -1);
4827 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 4, 0, 19);
4828 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 4, 1, -3);
4829 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 4, 2, -3);
4830 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 5, 0, 19);
4831 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 5, 1, 19);
4832 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcde"), 6, 0, 0);
4833 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 0, 0, 19);
4834 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 0, 1, 1);
4835 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 0, 5, 1);
4836 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 0, 9, 1);
4837 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 0, 10, 1);
4838 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 0, 11, 1);
4839 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 1, 0, 19);
4840 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 1, 1, 18);
4841 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 1, 4, 15);
4842 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 1, 8, 11);
4843 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 1, 9, 10);
4844 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 1, 10, 10);
4845 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 5, 0, 19);
4846 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 5, 1, -4);
4847 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 5, 2, -4);
4848 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 5, 4, -4);
4849 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 5, 5, -4);
4850 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 5, 6, -4);
4851 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 9, 0, 19);
4852 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 9, 1, -8);
4853 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 9, 2, -8);
4854 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 10, 0, 19);
4855 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 10, 1, 19);
4856 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghij"), 11, 0, 0);
4857 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 0, 0, 19);
4858 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 0, 1, 1);
4859 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 0, 10, 1);
4860 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 0, 19, 1);
4861 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 0, 20, 1);
4862 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 0, 21, 1);
4863 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 1, 0, 19);
4864 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 1, 1, 18);
4865 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 1, 9, 10);
4866 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 1, 18, 1);
4867 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 1, 19, 0);
4868 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 1, 20, 0);
4869 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 10, 0, 19);
4870 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 10, 1, -9);
4871 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 10, 5, -9);
4872 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 10, 9, -9);
4873 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 10, 10, -9);
4874 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 10, 11, -9);
4875 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 19, 0, 19);
4876 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 19, 1, -18);
4877 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 19, 2, -18);
4878 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 20, 0, 19);
4879 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 20, 1, 19);
4880 test(S("abcdefghijklmnopqrst"), 1, 20, S("abcdefghijklmnopqrst"), 21, 0, 0);
4881 test(S("abcdefghijklmnopqrst"), 10, 0, S(""), 0, 0, 0);
4882 test(S("abcdefghijklmnopqrst"), 10, 0, S(""), 0, 1, 0);
4883 test(S("abcdefghijklmnopqrst"), 10, 0, S(""), 1, 0, 0);
4884 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 0, 0, 0);
4885 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 0, 1, -1);
4886 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 0, 2, -2);
4887 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 0, 4, -4);
4888 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 0, 5, -5);
4889 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 0, 6, -5);
4890 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 1, 0, 0);
4891 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 1, 1, -1);
4892 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 1, 2, -2);
4898 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 1, 3, -3);
4899 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 1, 4, -4);
4900 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 1, 5, -4);
4901 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 2, 0, 0);
4902 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 2, 1, -1);
4903 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 2, 2, -2);
4904 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 2, 3, -3);
4905 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 2, 4, -3);
4906 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 4, 0, 0);
4907 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 4, 1, -1);
4908 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 4, 2, -1);
4909 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 5, 0, 0);
4910 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 5, 1, 0);
4911 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcde"), 6, 0, 0);
4912 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 0, 0, 0);
4913 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 0, 1, -1);
4914 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 0, 5, -5);
4915 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 0, 9, -9);
4916 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 0, 10, -10);
4917 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 0, 11, -10);
4918 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 1, 0, 0);
4919 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 1, 1, -1);
4920 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 1, 4, -4);
4921 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 1, 8, -8);
4922 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 1, 9, -9);
4923 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 1, 10, -9);
4924 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 5, 0, 0);
4925 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 5, 1, -1);
4926 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 5, 2, -2);
4927 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 5, 4, -4);
4928 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 5, 5, -5);
4929 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 5, 6, -5);
4930 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 9, 0, 0);
4931 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 9, 1, -1);
4932 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 9, 2, -1);
4933 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 10, 0, 0);
4934 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 10, 1, 0);
4935 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghij"), 11, 0, 0);
4936 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
4937 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 0, 1, -1);
4938 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 0, 10, -10);
4939 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 0, 19, -19);
4940 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 0, 20, -20);
4941 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 0, 21, -20);
4942 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
4943 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 1, 1, -1);
4944 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 1, 9, -9);
4945 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 1, 18, -18);
4946 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 1, 19, -19);
4947 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 1, 20, -19);
4948 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
4949 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 10, 1, -1);
4950 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 10, 5, -5);
4951 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 10, 9, -9);
4952 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 10, 10, -10);
4953 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 10, 11, -10);
4954 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
4955 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 19, 1, -1);
4956 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 19, 2, -1);
4957 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
4958 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
4959 test(S("abcdefghijklmnopqrst"), 10, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
4960 test(S("abcdefghijklmnopqrst"), 10, 1, S(""), 0, 0, 1);
4961 test(S("abcdefghijklmnopqrst"), 10, 1, S(""), 0, 1, 1);
4962 test(S("abcdefghijklmnopqrst"), 10, 1, S(""), 1, 0, 0);
4963 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 0, 0, 1);
4964 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 0, 1, 10);
4965 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 0, 2, 10);
4966 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 0, 4, 10);
4967 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 0, 5, 10);
4968 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 0, 6, 10);
4969 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 1, 0, 1);
4970 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 1, 1, 9);
4971 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 1, 2, 9);
4972 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 1, 3, 9);
4973 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 1, 4, 9);
4974 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 1, 5, 9);
4975 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 2, 0, 1);
4976 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 2, 1, 8);
4977 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 2, 2, 8);
4978 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 2, 3, 8);
4979 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 2, 4, 8);
4980 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 4, 0, 1);
4981 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 4, 1, 6);
4982 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 4, 2, 6);
4983 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 5, 0, 1);
4984 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 5, 1, 1);
4985 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcde"), 6, 0, 0);
4986 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 0, 0, 1);
4987 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 0, 1, 10);
4988 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 0, 5, 10);
4989 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 0, 9, 10);
4990 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 0, 10, 10);
4991 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 0, 11, 10);
4992 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 1, 0, 1);
4993 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 1, 1, 9);
4994 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 1, 4, 9);
4995 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 1, 8, 9);
4996 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 1, 9, 9);
4997 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 1, 10, 9);
5003 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 5, 0, 1);
5004 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 5, 1, 5);
5005 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 5, 2, 5);
5006 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 5, 4, 5);
5007 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 5, 5, 5);
5008 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 5, 6, 5);
5009 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 9, 0, 1);
5010 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 9, 1, 1);
5011 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 9, 2, 1);
5012 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 10, 0, 1);
5013 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 10, 1, 1);
5014 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghij"), 11, 0, 0);
5015 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 0, 0, 1);
5016 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 0, 1, 10);
5017 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 0, 10, 10);
5018 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 0, 19, 10);
5019 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 0, 20, 10);
5020 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 0, 21, 10);
5021 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 1, 0, 1);
5022 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 1, 1, 9);
5023 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 1, 9, 9);
5024 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 1, 18, 9);
5025 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 1, 19, 9);
5026 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 1, 20, 9);
5027 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 10, 0, 1);
5028 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 10, 1, 0);
5029 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 10, 5, -4);
5030 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 10, 9, -8);
5031 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 10, 10, -9);
5032 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 10, 11, -9);
5033 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 19, 0, 1);
5034 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 19, 1, -9);
5035 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 19, 2, -9);
5036 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 20, 0, 1);
5037 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 20, 1, 1);
5038 test(S("abcdefghijklmnopqrst"), 10, 1, S("abcdefghijklmnopqrst"), 21, 0, 0);
5039 test(S("abcdefghijklmnopqrst"), 10, 5, S(""), 0, 0, 5);
5040 test(S("abcdefghijklmnopqrst"), 10, 5, S(""), 0, 1, 5);
5041 test(S("abcdefghijklmnopqrst"), 10, 5, S(""), 1, 0, 0);
5042 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 0, 0, 5);
5043 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 0, 1, 10);
5044 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 0, 2, 10);
5045 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 0, 4, 10);
5046 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 0, 5, 10);
5047 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 0, 6, 10);
5048 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 1, 0, 5);
5049 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 1, 1, 9);
5050 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 1, 2, 9);
5051 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 1, 3, 9);
5052 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 1, 4, 9);
5053 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 1, 5, 9);
5054 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 2, 0, 5);
5055 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 2, 1, 8);
5056 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 2, 2, 8);
5057 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 2, 3, 8);
5058 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 2, 4, 8);
5059 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 4, 0, 5);
5060 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 4, 1, 6);
5061 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 4, 2, 6);
5062 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 5, 0, 5);
5063 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 5, 1, 5);
5064 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcde"), 6, 0, 0);
5065 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 0, 0, 5);
5066 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 0, 1, 10);
5067 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 0, 5, 10);
5068 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 0, 9, 10);
5069 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 0, 10, 10);
5070 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 0, 11, 10);
5071 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 1, 0, 5);
5072 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 1, 1, 9);
5073 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 1, 4, 9);
5074 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 1, 8, 9);
5075 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 1, 9, 9);
5076 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 1, 10, 9);
5077 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 5, 0, 5);
5078 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 5, 1, 5);
5079 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 5, 2, 5);
5080 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 5, 4, 5);
5081 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 5, 5, 5);
5082 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 5, 6, 5);
5083 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 9, 0, 5);
5084 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 9, 1, 1);
5085 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 9, 2, 1);
5086 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 10, 0, 5);
5087 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 10, 1, 5);
5088 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghij"), 11, 0, 0);
5089 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 0, 0, 5);
5090 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 0, 1, 10);
5091 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 0, 10, 10);
5092 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 0, 19, 10);
5093 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 0, 20, 10);
5094 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 0, 21, 10);
5095 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 1, 0, 5);
5096 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 1, 1, 9);
5097 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 1, 9, 9);
5098 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 1, 18, 9);
5099 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 1, 19, 9);
5100 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 1, 20, 9);
5101 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 10, 0, 5);
5102 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 10, 1, 4);
5108 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 10, 5, 0);
5109 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 10, 9, -4);
5110 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 10, 10, -5);
5111 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 10, 11, -5);
5112 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 19, 0, 5);
5113 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 19, 1, -9);
5114 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 19, 2, -9);
5115 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 20, 0, 5);
5116 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 20, 1, 5);
5117 test(S("abcdefghijklmnopqrst"), 10, 5, S("abcdefghijklmnopqrst"), 21, 0, 0);
5118 test(S("abcdefghijklmnopqrst"), 10, 9, S(""), 0, 0, 9);
5119 test(S("abcdefghijklmnopqrst"), 10, 9, S(""), 0, 1, 9);
5120 test(S("abcdefghijklmnopqrst"), 10, 9, S(""), 1, 0, 0);
5121 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 0, 0, 9);
5122 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 0, 1, 10);
5123 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 0, 2, 10);
5124 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 0, 4, 10);
5125 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 0, 5, 10);
5126 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 0, 6, 10);
5127 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 1, 0, 9);
5128 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 1, 1, 9);
5129 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 1, 2, 9);
5130 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 1, 3, 9);
5131 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 1, 4, 9);
5132 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 1, 5, 9);
5133 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 2, 0, 9);
5134 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 2, 1, 8);
5135 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 2, 2, 8);
5136 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 2, 3, 8);
5137 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 2, 4, 8);
5138 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 4, 0, 9);
5139 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 4, 1, 6);
5140 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 4, 2, 6);
5141 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 5, 0, 9);
5142 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 5, 1, 9);
5143 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcde"), 6, 0, 0);
5144 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 0, 0, 9);
5145 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 0, 1, 10);
5146 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 0, 5, 10);
5147 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 0, 9, 10);
5148 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 0, 10, 10);
5149 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 0, 11, 10);
5150 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 1, 0, 9);
5151 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 1, 1, 9);
5152 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 1, 4, 9);
5153 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 1, 8, 9);
5154 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 1, 9, 9);
5155 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 1, 10, 9);
5156 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 5, 0, 9);
5157 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 5, 1, 5);
5158 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 5, 2, 5);
5159 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 5, 4, 5);
5160 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 5, 5, 5);
5161 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 5, 6, 5);
5162 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 9, 0, 9);
5163 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 9, 1, 1);
5164 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 9, 2, 1);
5165 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 10, 0, 9);
5166 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 10, 1, 9);
5167 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghij"), 11, 0, 0);
5168 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 0, 0, 9);
5169 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 0, 1, 10);
5170 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 0, 10, 10);
5171 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 0, 19, 10);
5172 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 0, 20, 10);
5173 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 0, 21, 10);
5174 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 1, 0, 9);
5175 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 1, 1, 9);
5176 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 1, 9, 9);
5177 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 1, 18, 9);
5178 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 1, 19, 9);
5179 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 1, 20, 9);
5180 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 10, 0, 9);
5181 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 10, 1, 8);
5182 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 10, 5, 4);
5183 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 10, 9, 0);
5184 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 10, 10, -1);
5185 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 10, 11, -1);
5186 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 19, 0, 9);
5187 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 19, 1, -9);
5188 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 19, 2, -9);
5189 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 20, 0, 9);
5190 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 20, 1, 9);
5191 test(S("abcdefghijklmnopqrst"), 10, 9, S("abcdefghijklmnopqrst"), 21, 0, 0);
5192 test(S("abcdefghijklmnopqrst"), 10, 10, S(""), 0, 0, 10);
5193 test(S("abcdefghijklmnopqrst"), 10, 10, S(""), 0, 1, 10);
5194 test(S("abcdefghijklmnopqrst"), 10, 10, S(""), 1, 0, 0);
5195 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 0, 0, 10);
5196 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 0, 1, 10);
5197 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 0, 2, 10);
5198 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 0, 4, 10);
5199 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 0, 5, 10);
5200 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 0, 6, 10);
5201 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 1, 0, 10);
5202 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 1, 1, 9);
5203 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 1, 2, 9);
5204 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 1, 3, 9);
5205 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 1, 4, 9);
5206 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 1, 5, 9);
5207 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 2, 0, 10);
5213 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 2, 1, 8);
5214 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 2, 2, 8);
5215 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 2, 3, 8);
5216 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 2, 4, 8);
5217 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 4, 0, 10);
5218 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 4, 1, 6);
5219 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 4, 2, 6);
5220 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 5, 0, 10);
5221 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 5, 1, 10);
5222 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcde"), 6, 0, 0);
5223 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 0, 0, 10);
5224 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 0, 1, 10);
5225 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 0, 5, 10);
5226 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 0, 9, 10);
5227 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 0, 10, 10);
5228 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 0, 11, 10);
5229 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 1, 0, 10);
5230 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 1, 1, 9);
5231 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 1, 4, 9);
5232 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 1, 8, 9);
5233 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 1, 9, 9);
5234 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 1, 10, 9);
5235 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 5, 0, 10);
5236 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 5, 1, 5);
5237 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 5, 2, 5);
5238 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 5, 4, 5);
5239 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 5, 5, 5);
5240 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 5, 6, 5);
5241 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 9, 0, 10);
5242 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 9, 1, 1);
5243 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 9, 2, 1);
5244 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 10, 0, 10);
5245 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 10, 1, 10);
5246 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghij"), 11, 0, 0);
5247 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 0, 0, 10);
5248 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 0, 1, 10);
5249 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 0, 10, 10);
5250 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 0, 19, 10);
5251 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 0, 20, 10);
5252 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 0, 21, 10);
5253 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 1, 0, 10);
5254 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 1, 1, 9);
5255 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 1, 9, 9);
5256 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 1, 18, 9);
5257 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 1, 19, 9);
5258 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 1, 20, 9);
5259 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 10, 0, 10);
5260 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 10, 1, 9);
5261 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 10, 5, 5);
5262 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 10, 9, 1);
5263 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 10, 10, 0);
5264 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 10, 11, 0);
5265 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 19, 0, 10);
5266 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 19, 1, -9);
5267 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 19, 2, -9);
5268 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 20, 0, 10);
5269 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 20, 1, 10);
5270 test(S("abcdefghijklmnopqrst"), 10, 10, S("abcdefghijklmnopqrst"), 21, 0, 0);
5271 test(S("abcdefghijklmnopqrst"), 10, 11, S(""), 0, 0, 10);
5272 test(S("abcdefghijklmnopqrst"), 10, 11, S(""), 0, 1, 10);
5273 test(S("abcdefghijklmnopqrst"), 10, 11, S(""), 1, 0, 0);
5274 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 0, 0, 10);
5275 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 0, 1, 10);
5276 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 0, 2, 10);
5277 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 0, 4, 10);
5278 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 0, 5, 10);
5279 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 0, 6, 10);
5280 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 1, 0, 10);
5281 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 1, 1, 9);
5282 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 1, 2, 9);
5283 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 1, 3, 9);
5284 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 1, 4, 9);
5285 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 1, 5, 9);
5286 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 2, 0, 10);
5287 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 2, 1, 8);
5288 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 2, 2, 8);
5289 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 2, 3, 8);
5290 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 2, 4, 8);
5291 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 4, 0, 10);
5292 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 4, 1, 6);
5293 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 4, 2, 6);
5294 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 5, 0, 10);
5295 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 5, 1, 10);
5296 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcde"), 6, 0, 0);
5297 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 0, 0, 10);
5298 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 0, 1, 10);
5299 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 0, 5, 10);
5300 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 0, 9, 10);
5301 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 0, 10, 10);
5302 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 0, 11, 10);
5303 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 1, 0, 10);
5304 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 1, 1, 9);
5305 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 1, 4, 9);
5306 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 1, 8, 9);
5307 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 1, 9, 9);
5308 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 1, 10, 9);
5309 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 5, 0, 10);
5310 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 5, 1, 5);
5311 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 5, 2, 5);
5312 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 5, 4, 5);
5318 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 5, 5, 5);
5319 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 5, 6, 5);
5320 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 9, 0, 10);
5321 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 9, 1, 1);
5322 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 9, 2, 1);
5323 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 10, 0, 10);
5324 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 10, 1, 10);
5325 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghij"), 11, 0, 0);
5326 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 0, 0, 10);
5327 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 0, 1, 10);
5328 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 0, 10, 10);
5329 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 0, 19, 10);
5330 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 0, 20, 10);
5331 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 0, 21, 10);
5332 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 1, 0, 10);
5333 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 1, 1, 9);
5334 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 1, 9, 9);
5335 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 1, 18, 9);
5336 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 1, 19, 9);
5337 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 1, 20, 9);
5338 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 10, 0, 10);
5339 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 10, 1, 9);
5340 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 10, 5, 5);
5341 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 10, 9, 1);
5342 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 10, 10, 0);
5343 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 10, 11, 0);
5344 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 19, 0, 10);
5345 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 19, 1, -9);
5346 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 19, 2, -9);
5347 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 20, 0, 10);
5348 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 20, 1, 10);
5349 test(S("abcdefghijklmnopqrst"), 10, 11, S("abcdefghijklmnopqrst"), 21, 0, 0);
5350 test(S("abcdefghijklmnopqrst"), 19, 0, S(""), 0, 0, 0);
5351 test(S("abcdefghijklmnopqrst"), 19, 0, S(""), 0, 1, 0);
5352 test(S("abcdefghijklmnopqrst"), 19, 0, S(""), 1, 0, 0);
5353 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 0, 0, 0);
5354 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 0, 1, -1);
5355 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 0, 2, -2);
5356 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 0, 4, -4);
5357 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 0, 5, -5);
5358 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 0, 6, -5);
5359 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 1, 0, 0);
5360 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 1, 1, -1);
5361 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 1, 2, -2);
5362 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 1, 3, -3);
5363 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 1, 4, -4);
5364 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 1, 5, -4);
5365 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 2, 0, 0);
5366 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 2, 1, -1);
5367 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 2, 2, -2);
5368 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 2, 3, -3);
5369 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 2, 4, -3);
5370 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 4, 0, 0);
5371 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 4, 1, -1);
5372 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 4, 2, -1);
5373 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 5, 0, 0);
5374 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 5, 1, 0);
5375 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcde"), 6, 0, 0);
5376 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 0, 0, 0);
5377 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 0, 1, -1);
5378 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 0, 5, -5);
5379 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 0, 9, -9);
5380 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 0, 10, -10);
5381 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 0, 11, -10);
5382 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 1, 0, 0);
5383 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 1, 1, -1);
5384 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 1, 4, -4);
5385 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 1, 8, -8);
5386 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 1, 9, -9);
5387 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 1, 10, -9);
5388 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 5, 0, 0);
5389 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 5, 1, -1);
5390 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 5, 2, -2);
5391 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 5, 4, -4);
5392 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 5, 5, -5);
5393 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 5, 6, -5);
5394 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 9, 0, 0);
5395 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 9, 1, -1);
5396 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 9, 2, -1);
5397 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 10, 0, 0);
5398 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 10, 1, 0);
5399 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghij"), 11, 0, 0);
5400 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
5401 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 0, 1, -1);
5402 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 0, 10, -10);
5403 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 0, 19, -19);
5404 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 0, 20, -20);
5405 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 0, 21, -20);
5406 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
5407 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 1, 1, -1);
5408 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 1, 9, -9);
5409 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 1, 18, -18);
5410 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 1, 19, -19);
5411 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 1, 20, -19);
5412 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
5413 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 10, 1, -1);
5414 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 10, 5, -5);
5415 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 10, 9, -9);
5416 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 10, 10, -10);
5417 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 10, 11, -10);
5423 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
5424 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 19, 1, -1);
5425 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 19, 2, -1);
5426 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
5427 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
5428 test(S("abcdefghijklmnopqrst"), 19, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
5429 test(S("abcdefghijklmnopqrst"), 19, 1, S(""), 0, 0, 1);
5430 test(S("abcdefghijklmnopqrst"), 19, 1, S(""), 0, 1, 1);
5431 test(S("abcdefghijklmnopqrst"), 19, 1, S(""), 1, 0, 0);
5432 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 0, 0, 1);
5433 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 0, 1, 19);
5434 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 0, 2, 19);
5435 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 0, 4, 19);
5436 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 0, 5, 19);
5437 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 0, 6, 19);
5438 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 1, 0, 1);
5439 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 1, 1, 18);
5440 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 1, 2, 18);
5441 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 1, 3, 18);
5442 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 1, 4, 18);
5443 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 1, 5, 18);
5444 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 2, 0, 1);
5445 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 2, 1, 17);
5446 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 2, 2, 17);
5447 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 2, 3, 17);
5448 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 2, 4, 17);
5449 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 4, 0, 1);
5450 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 4, 1, 15);
5451 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 4, 2, 15);
5452 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 5, 0, 1);
5453 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 5, 1, 1);
5454 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcde"), 6, 0, 0);
5455 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 0, 0, 1);
5456 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 0, 1, 19);
5457 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 0, 5, 19);
5458 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 0, 9, 19);
5459 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 0, 10, 19);
5460 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 0, 11, 19);
5461 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 1, 0, 1);
5462 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 1, 1, 18);
5463 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 1, 4, 18);
5464 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 1, 8, 18);
5465 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 1, 9, 18);
5466 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 1, 10, 18);
5467 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 5, 0, 1);
5468 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 5, 1, 14);
5469 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 5, 2, 14);
5470 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 5, 4, 14);
5471 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 5, 5, 14);
5472 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 5, 6, 14);
5473 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 9, 0, 1);
5474 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 9, 1, 10);
5475 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 9, 2, 10);
5476 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 10, 0, 1);
5477 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 10, 1, 1);
5478 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghij"), 11, 0, 0);
5479 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 0, 0, 1);
5480 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 0, 1, 19);
5481 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 0, 10, 19);
5482 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 0, 19, 19);
5483 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 0, 20, 19);
5484 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 0, 21, 19);
5485 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 1, 0, 1);
5486 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 1, 1, 18);
5487 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 1, 9, 18);
5488 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 1, 18, 18);
5489 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 1, 19, 18);
5490 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 1, 20, 18);
5491 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 10, 0, 1);
5492 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 10, 1, 9);
5493 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 10, 5, 9);
5494 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 10, 9, 9);
5495 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 10, 10, 9);
5496 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 10, 11, 9);
5497 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 19, 0, 1);
5498 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 19, 1, 0);
5499 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 19, 2, 0);
5500 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 20, 0, 1);
5501 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 20, 1, 1);
5502 test(S("abcdefghijklmnopqrst"), 19, 1, S("abcdefghijklmnopqrst"), 21, 0, 0);
5503 test(S("abcdefghijklmnopqrst"), 19, 2, S(""), 0, 0, 1);
5504 test(S("abcdefghijklmnopqrst"), 19, 2, S(""), 0, 1, 1);
5505 test(S("abcdefghijklmnopqrst"), 19, 2, S(""), 1, 0, 0);
5506 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 0, 0, 1);
5507 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 0, 1, 19);
5508 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 0, 2, 19);
5509 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 0, 4, 19);
5510 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 0, 5, 19);
5511 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 0, 6, 19);
5512 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 1, 0, 1);
5513 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 1, 1, 18);
5514 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 1, 2, 18);
5515 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 1, 3, 18);
5516 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 1, 4, 18);
5517 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 1, 5, 18);
5518 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 2, 0, 1);
5519 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 2, 1, 17);
5520 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 2, 2, 17);
5521 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 2, 3, 17);
5522 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 2, 4, 17);
5528 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 4, 0, 1);
5529 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 4, 1, 15);
5530 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 4, 2, 15);
5531 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 5, 0, 1);
5532 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 5, 1, 1);
5533 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcde"), 6, 0, 0);
5534 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 0, 0, 1);
5535 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 0, 1, 19);
5536 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 0, 5, 19);
5537 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 0, 9, 19);
5538 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 0, 10, 19);
5539 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 0, 11, 19);
5540 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 1, 0, 1);
5541 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 1, 1, 18);
5542 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 1, 4, 18);
5543 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 1, 8, 18);
5544 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 1, 9, 18);
5545 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 1, 10, 18);
5546 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 5, 0, 1);
5547 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 5, 1, 14);
5548 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 5, 2, 14);
5549 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 5, 4, 14);
5550 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 5, 5, 14);
5551 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 5, 6, 14);
5552 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 9, 0, 1);
5553 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 9, 1, 10);
5554 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 9, 2, 10);
5555 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 10, 0, 1);
5556 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 10, 1, 1);
5557 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghij"), 11, 0, 0);
5558 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 0, 0, 1);
5559 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 0, 1, 19);
5560 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 0, 10, 19);
5561 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 0, 19, 19);
5562 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 0, 20, 19);
5563 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 0, 21, 19);
5564 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 1, 0, 1);
5565 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 1, 1, 18);
5566 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 1, 9, 18);
5567 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 1, 18, 18);
5568 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 1, 19, 18);
5569 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 1, 20, 18);
5570 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 10, 0, 1);
5571 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 10, 1, 9);
5572 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 10, 5, 9);
5573 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 10, 9, 9);
5574 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 10, 10, 9);
5575 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 10, 11, 9);
5576 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 19, 0, 1);
5577 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 19, 1, 0);
5578 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 19, 2, 0);
5579 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 20, 0, 1);
5580 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 20, 1, 1);
5581 test(S("abcdefghijklmnopqrst"), 19, 2, S("abcdefghijklmnopqrst"), 21, 0, 0);
5582 test(S("abcdefghijklmnopqrst"), 20, 0, S(""), 0, 0, 0);
5583 test(S("abcdefghijklmnopqrst"), 20, 0, S(""), 0, 1, 0);
5584 test(S("abcdefghijklmnopqrst"), 20, 0, S(""), 1, 0, 0);
5585 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 0, 0, 0);
5586 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 0, 1, -1);
5587 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 0, 2, -2);
5588 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 0, 4, -4);
5589 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 0, 5, -5);
5590 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 0, 6, -5);
5591 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 1, 0, 0);
5592 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 1, 1, -1);
5593 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 1, 2, -2);
5594 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 1, 3, -3);
5595 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 1, 4, -4);
5596 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 1, 5, -4);
5597 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 2, 0, 0);
5598 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 2, 1, -1);
5599 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 2, 2, -2);
5600 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 2, 3, -3);
5601 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 2, 4, -3);
5602 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 4, 0, 0);
5603 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 4, 1, -1);
5604 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 4, 2, -1);
5605 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 5, 0, 0);
5606 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 5, 1, 0);
5607 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcde"), 6, 0, 0);
5608 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 0, 0, 0);
5609 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 0, 1, -1);
5610 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 0, 5, -5);
5611 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 0, 9, -9);
5612 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 0, 10, -10);
5613 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 0, 11, -10);
5614 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 1, 0, 0);
5615 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 1, 1, -1);
5616 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 1, 4, -4);
5617 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 1, 8, -8);
5618 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 1, 9, -9);
5619 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 1, 10, -9);
5620 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 5, 0, 0);
5621 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 5, 1, -1);
5622 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 5, 2, -2);
5623 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 5, 4, -4);
5624 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 5, 5, -5);
5625 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 5, 6, -5);
5626 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 9, 0, 0);
5627 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 9, 1, -1);
5633 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 9, 2, -1);
5634 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 10, 0, 0);
5635 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 10, 1, 0);
5636 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghij"), 11, 0, 0);
5637 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
5638 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 0, 1, -1);
5639 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 0, 10, -10);
5640 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 0, 19, -19);
5641 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 0, 20, -20);
5642 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 0, 21, -20);
5643 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
5644 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 1, 1, -1);
5645 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 1, 9, -9);
5646 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 1, 18, -18);
5647 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 1, 19, -19);
5648 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 1, 20, -19);
5649 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
5650 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 10, 1, -1);
5651 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 10, 5, -5);
5652 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 10, 9, -9);
5653 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 10, 10, -10);
5654 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 10, 11, -10);
5655 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
5656 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 19, 1, -1);
5657 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 19, 2, -1);
5658 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
5659 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
5660 test(S("abcdefghijklmnopqrst"), 20, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);
5661 test(S("abcdefghijklmnopqrst"), 20, 1, S(""), 0, 0, 0);
5662 test(S("abcdefghijklmnopqrst"), 20, 1, S(""), 0, 1, 0);
5663 test(S("abcdefghijklmnopqrst"), 20, 1, S(""), 1, 0, 0);
5664 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 0, 0, 0);
5665 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 0, 1, -1);
5666 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 0, 2, -2);
5667 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 0, 4, -4);
5668 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 0, 5, -5);
5669 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 0, 6, -5);
5670 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 1, 0, 0);
5671 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 1, 1, -1);
5672 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 1, 2, -2);
5673 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 1, 3, -3);
5674 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 1, 4, -4);
5675 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 1, 5, -4);
5676 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 2, 0, 0);
5677 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 2, 1, -1);
5678 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 2, 2, -2);
5679 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 2, 3, -3);
5680 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 2, 4, -3);
5681 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 4, 0, 0);
5682 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 4, 1, -1);
5683 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 4, 2, -1);
5684 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 5, 0, 0);
5685 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 5, 1, 0);
5686 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcde"), 6, 0, 0);
5687 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 0, 0, 0);
5688 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 0, 1, -1);
5689 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 0, 5, -5);
5690 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 0, 9, -9);
5691 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 0, 10, -10);
5692 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 0, 11, -10);
5693 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 1, 0, 0);
5694 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 1, 1, -1);
5695 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 1, 4, -4);
5696 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 1, 8, -8);
5697 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 1, 9, -9);
5698 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 1, 10, -9);
5699 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 5, 0, 0);
5700 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 5, 1, -1);
5701 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 5, 2, -2);
5702 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 5, 4, -4);
5703 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 5, 5, -5);
5704 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 5, 6, -5);
5705 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 9, 0, 0);
5706 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 9, 1, -1);
5707 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 9, 2, -1);
5708 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 10, 0, 0);
5709 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 10, 1, 0);
5710 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghij"), 11, 0, 0);
5711 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 0, 0, 0);
5712 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 0, 1, -1);
5713 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 0, 10, -10);
5714 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 0, 19, -19);
5715 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 0, 20, -20);
5716 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 0, 21, -20);
5717 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 1, 0, 0);
5718 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 1, 1, -1);
5719 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 1, 9, -9);
5720 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 1, 18, -18);
5721 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 1, 19, -19);
5722 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 1, 20, -19);
5723 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 10, 0, 0);
5724 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 10, 1, -1);
5725 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 10, 5, -5);
5726 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 10, 9, -9);
5727 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 10, 10, -10);
5728 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 10, 11, -10);
5729 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 19, 0, 0);
5730 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 19, 1, -1);
5731 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 19, 2, -1);
5732 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 20, 0, 0);
5738 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 20, 1, 0);
5739 test(S("abcdefghijklmnopqrst"), 20, 1, S("abcdefghijklmnopqrst"), 21, 0, 0);
5740 test(S("abcdefghijklmnopqrst"), 21, 0, S(""), 0, 0, 0);
5741 test(S("abcdefghijklmnopqrst"), 21, 0, S(""), 0, 1, 0);
5742 test(S("abcdefghijklmnopqrst"), 21, 0, S(""), 1, 0, 0);
5743 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 0, 0, 0);
5744 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 0, 1, 0);
5745 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 0, 2, 0);
5746 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 0, 4, 0);
5747 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 0, 5, 0);
5748 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 0, 6, 0);
5749 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 1, 0, 0);
5750 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 1, 1, 0);
5751 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 1, 2, 0);
5752 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 1, 3, 0);
5753 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 1, 4, 0);
5754 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 1, 5, 0);
5755 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 2, 0, 0);
5756 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 2, 1, 0);
5757 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 2, 2, 0);
5758 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 2, 3, 0);
5759 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 2, 4, 0);
5760 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 4, 0, 0);
5761 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 4, 1, 0);
5762 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 4, 2, 0);
5763 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 5, 0, 0);
5764 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 5, 1, 0);
5765 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcde"), 6, 0, 0);
5766 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 0, 0, 0);
5767 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 0, 1, 0);
5768 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 0, 5, 0);
5769 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 0, 9, 0);
5770 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 0, 10, 0);
5771 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 0, 11, 0);
5772 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 1, 0, 0);
5773 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 1, 1, 0);
5774 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 1, 4, 0);
5775 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 1, 8, 0);
5776 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 1, 9, 0);
5777 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 1, 10, 0);
5778 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 5, 0, 0);
5779 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 5, 1, 0);
5780 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 5, 2, 0);
5781 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 5, 4, 0);
5782 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 5, 5, 0);
5783 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 5, 6, 0);
5784 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 9, 0, 0);
5785 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 9, 1, 0);
5786 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 9, 2, 0);
5787 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 10, 0, 0);
5788 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 10, 1, 0);
5789 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghij"), 11, 0, 0);
5790 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 0, 0, 0);
5791 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 0, 1, 0);
5792 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 0, 10, 0);
5793 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 0, 19, 0);
5794 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 0, 20, 0);
5795 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 0, 21, 0);
5796 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 1, 0, 0);
5797 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 1, 1, 0);
5798 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 1, 9, 0);
5799 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 1, 18, 0);
5800 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 1, 19, 0);
5801 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 1, 20, 0);
5802 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 10, 0, 0);
5803 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 10, 1, 0);
5804 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 10, 5, 0);
5805 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 10, 9, 0);
5806 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 10, 10, 0);
5807 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 10, 11, 0);
5808 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 19, 0, 0);
5809 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 19, 1, 0);
5810 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 19, 2, 0);
5811 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 20, 0, 0);
5812 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 20, 1, 0);
5813 test(S("abcdefghijklmnopqrst"), 21, 0, S("abcdefghijklmnopqrst"), 21, 0, 0);