1bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===// 2bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 3f5256e16dfc425c1d466f6308d4026d529ce9e0bHoward Hinnant// The LLVM Compiler Infrastructure 4bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open 6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// Source Licenses. See LICENSE.TXT for details. 7bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 8bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===// 9bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 10bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// <string> 11bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 126e0a1f458e41c08112a130f50636ced03907e29eHoward Hinnant// basic_string<charT,traits,Allocator>& 136e0a1f458e41c08112a130f50636ced03907e29eHoward Hinnant// replace(size_type pos1, size_type n1, const basic_string<charT,traits,Allocator>& str, 14a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow// size_type pos2, size_type n2=npos); 15a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow// the "=npos" was added in C++14 16bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 17bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <string> 18bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <stdexcept> 19bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <algorithm> 20bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <cassert> 21bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 22061d0cc4db18d17bf01ed14c5db0be098205bd47Marshall Clow#include "min_allocator.h" 23bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 249dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 25bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid 269dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttest(S s, typename S::size_type pos1, typename S::size_type n1, 279dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant S str, typename S::size_type pos2, typename S::size_type n2, 28bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant S expected) 29bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 309dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant typename S::size_type old_size = s.size(); 31bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant S s0 = s; 32bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant try 33bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 34bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant s.replace(pos1, n1, str, pos2, n2); 35bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(s.__invariants()); 36bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(pos1 <= old_size && pos2 <= str.size()); 37bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(s == expected); 389dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant typename S::size_type xlen = std::min(n1, old_size - pos1); 399dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant typename S::size_type rlen = std::min(n2, str.size() - pos2); 40bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(s.size() == old_size - xlen + rlen); 41bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 42bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant catch (std::out_of_range&) 43bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 44bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(pos1 > old_size || pos2 > str.size()); 45bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(s == s0); 46bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 47bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 48bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 499dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 50a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clowvoid 51a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clowtest_npos(S s, typename S::size_type pos1, typename S::size_type n1, 52a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow S str, typename S::size_type pos2, 53a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow S expected) 54a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow{ 55a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow typename S::size_type old_size = s.size(); 56a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow S s0 = s; 57a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow try 58a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow { 59a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow s.replace(pos1, n1, str, pos2); 60a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow assert(s.__invariants()); 61a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow assert(pos1 <= old_size && pos2 <= str.size()); 62a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow assert(s == expected); 63a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow typename S::size_type xlen = std::min(n1, old_size - pos1); 64a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow typename S::size_type rlen = std::min(S::npos, str.size() - pos2); 65a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow assert(s.size() == old_size - xlen + rlen); 66a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow } 67a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow catch (std::out_of_range&) 68a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow { 69a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow assert(pos1 > old_size || pos2 > str.size()); 70a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow assert(s == s0); 71a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow } 72a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow} 73a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow 74a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow 75a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clowtemplate <class S> 76bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test0() 77bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 78bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S(""), 0, 0, S("")); 79bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S(""), 0, 1, S("")); 80bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S(""), 1, 0, S("can't happen")); 81bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345"), 0, 0, S("")); 82bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345"), 0, 1, S("1")); 83bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345"), 0, 2, S("12")); 84bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345"), 0, 4, S("1234")); 85bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345"), 0, 5, S("12345")); 86bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345"), 0, 6, S("12345")); 87bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345"), 1, 0, S("")); 88bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345"), 1, 1, S("2")); 89bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345"), 1, 2, S("23")); 90bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345"), 1, 3, S("234")); 91bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345"), 1, 4, S("2345")); 92bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345"), 1, 5, S("2345")); 93bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345"), 2, 0, S("")); 94bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345"), 2, 1, S("3")); 95bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345"), 2, 2, S("34")); 96bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345"), 2, 3, S("345")); 97bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345"), 2, 4, S("345")); 98bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345"), 4, 0, S("")); 99bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345"), 4, 1, S("5")); 100bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345"), 4, 2, S("5")); 101bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345"), 5, 0, S("")); 102bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345"), 5, 1, S("")); 103bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345"), 6, 0, S("can't happen")); 104bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("1234567890"), 0, 0, S("")); 105bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("1234567890"), 0, 1, S("1")); 106bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("1234567890"), 0, 5, S("12345")); 107bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("1234567890"), 0, 9, S("123456789")); 108bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("1234567890"), 0, 10, S("1234567890")); 109bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("1234567890"), 0, 11, S("1234567890")); 110bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("1234567890"), 1, 0, S("")); 111bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("1234567890"), 1, 1, S("2")); 112bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("1234567890"), 1, 4, S("2345")); 113bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("1234567890"), 1, 8, S("23456789")); 114bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("1234567890"), 1, 9, S("234567890")); 115bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("1234567890"), 1, 10, S("234567890")); 116bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("1234567890"), 5, 0, S("")); 117bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("1234567890"), 5, 1, S("6")); 118bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("1234567890"), 5, 2, S("67")); 119bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("1234567890"), 5, 4, S("6789")); 120bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("1234567890"), 5, 5, S("67890")); 121bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("1234567890"), 5, 6, S("67890")); 122bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("1234567890"), 9, 0, S("")); 123bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("1234567890"), 9, 1, S("0")); 124bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("1234567890"), 9, 2, S("0")); 125bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("1234567890"), 10, 0, S("")); 126bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("1234567890"), 10, 1, S("")); 127bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("1234567890"), 11, 0, S("can't happen")); 128bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345678901234567890"), 0, 0, S("")); 129bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345678901234567890"), 0, 1, S("1")); 130bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345678901234567890"), 0, 10, S("1234567890")); 131bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345678901234567890"), 0, 19, S("1234567890123456789")); 132bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345678901234567890"), 0, 20, S("12345678901234567890")); 133bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345678901234567890"), 0, 21, S("12345678901234567890")); 134bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345678901234567890"), 1, 0, S("")); 135bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345678901234567890"), 1, 1, S("2")); 136bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345678901234567890"), 1, 9, S("234567890")); 137bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345678901234567890"), 1, 18, S("234567890123456789")); 138bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345678901234567890"), 1, 19, S("2345678901234567890")); 139bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345678901234567890"), 1, 20, S("2345678901234567890")); 140bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345678901234567890"), 10, 0, S("")); 141bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345678901234567890"), 10, 1, S("1")); 142bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345678901234567890"), 10, 5, S("12345")); 143bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345678901234567890"), 10, 9, S("123456789")); 144bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345678901234567890"), 10, 10, S("1234567890")); 145bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345678901234567890"), 10, 11, S("1234567890")); 146bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345678901234567890"), 19, 0, S("")); 147bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345678901234567890"), 19, 1, S("0")); 148bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345678901234567890"), 19, 2, S("0")); 149bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345678901234567890"), 20, 0, S("")); 150bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345678901234567890"), 20, 1, S("")); 151bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 0, S("12345678901234567890"), 21, 0, S("can't happen")); 152bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S(""), 0, 0, S("")); 153bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S(""), 0, 1, S("")); 154bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S(""), 1, 0, S("can't happen")); 155bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345"), 0, 0, S("")); 156bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345"), 0, 1, S("1")); 157bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345"), 0, 2, S("12")); 158bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345"), 0, 4, S("1234")); 159bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345"), 0, 5, S("12345")); 160bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345"), 0, 6, S("12345")); 161bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345"), 1, 0, S("")); 162bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345"), 1, 1, S("2")); 163bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345"), 1, 2, S("23")); 164bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345"), 1, 3, S("234")); 165bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345"), 1, 4, S("2345")); 166bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345"), 1, 5, S("2345")); 167bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345"), 2, 0, S("")); 168bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345"), 2, 1, S("3")); 169bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345"), 2, 2, S("34")); 170bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345"), 2, 3, S("345")); 171bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345"), 2, 4, S("345")); 172bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345"), 4, 0, S("")); 173bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345"), 4, 1, S("5")); 174bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345"), 4, 2, S("5")); 175bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345"), 5, 0, S("")); 176bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345"), 5, 1, S("")); 177bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345"), 6, 0, S("can't happen")); 178bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 179bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 1809dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 181bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test1() 182bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 183bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("1234567890"), 0, 0, S("")); 184bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("1234567890"), 0, 1, S("1")); 185bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("1234567890"), 0, 5, S("12345")); 186bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("1234567890"), 0, 9, S("123456789")); 187bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("1234567890"), 0, 10, S("1234567890")); 188bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("1234567890"), 0, 11, S("1234567890")); 189bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("1234567890"), 1, 0, S("")); 190bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("1234567890"), 1, 1, S("2")); 191bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("1234567890"), 1, 4, S("2345")); 192bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("1234567890"), 1, 8, S("23456789")); 193bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("1234567890"), 1, 9, S("234567890")); 194bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("1234567890"), 1, 10, S("234567890")); 195bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("1234567890"), 5, 0, S("")); 196bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("1234567890"), 5, 1, S("6")); 197bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("1234567890"), 5, 2, S("67")); 198bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("1234567890"), 5, 4, S("6789")); 199bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("1234567890"), 5, 5, S("67890")); 200bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("1234567890"), 5, 6, S("67890")); 201bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("1234567890"), 9, 0, S("")); 202bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("1234567890"), 9, 1, S("0")); 203bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("1234567890"), 9, 2, S("0")); 204bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("1234567890"), 10, 0, S("")); 205bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("1234567890"), 10, 1, S("")); 206bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("1234567890"), 11, 0, S("can't happen")); 207bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345678901234567890"), 0, 0, S("")); 208bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345678901234567890"), 0, 1, S("1")); 209bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345678901234567890"), 0, 10, S("1234567890")); 210bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345678901234567890"), 0, 19, S("1234567890123456789")); 211bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345678901234567890"), 0, 20, S("12345678901234567890")); 212bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345678901234567890"), 0, 21, S("12345678901234567890")); 213bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345678901234567890"), 1, 0, S("")); 214bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345678901234567890"), 1, 1, S("2")); 215bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345678901234567890"), 1, 9, S("234567890")); 216bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345678901234567890"), 1, 18, S("234567890123456789")); 217bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345678901234567890"), 1, 19, S("2345678901234567890")); 218bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345678901234567890"), 1, 20, S("2345678901234567890")); 219bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345678901234567890"), 10, 0, S("")); 220bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345678901234567890"), 10, 1, S("1")); 221bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345678901234567890"), 10, 5, S("12345")); 222bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345678901234567890"), 10, 9, S("123456789")); 223bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345678901234567890"), 10, 10, S("1234567890")); 224bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345678901234567890"), 10, 11, S("1234567890")); 225bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345678901234567890"), 19, 0, S("")); 226bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345678901234567890"), 19, 1, S("0")); 227bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345678901234567890"), 19, 2, S("0")); 228bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345678901234567890"), 20, 0, S("")); 229bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345678901234567890"), 20, 1, S("")); 230bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 0, 1, S("12345678901234567890"), 21, 0, S("can't happen")); 231bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S(""), 0, 0, S("can't happen")); 232bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S(""), 0, 1, S("can't happen")); 233bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S(""), 1, 0, S("can't happen")); 234bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345"), 0, 0, S("can't happen")); 235bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345"), 0, 1, S("can't happen")); 236bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345"), 0, 2, S("can't happen")); 237bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345"), 0, 4, S("can't happen")); 238bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345"), 0, 5, S("can't happen")); 239bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345"), 0, 6, S("can't happen")); 240bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345"), 1, 0, S("can't happen")); 241bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345"), 1, 1, S("can't happen")); 242bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345"), 1, 2, S("can't happen")); 243bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345"), 1, 3, S("can't happen")); 244bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345"), 1, 4, S("can't happen")); 245bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345"), 1, 5, S("can't happen")); 246bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345"), 2, 0, S("can't happen")); 247bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345"), 2, 1, S("can't happen")); 248bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345"), 2, 2, S("can't happen")); 249bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345"), 2, 3, S("can't happen")); 250bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345"), 2, 4, S("can't happen")); 251bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345"), 4, 0, S("can't happen")); 252bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345"), 4, 1, S("can't happen")); 253bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345"), 4, 2, S("can't happen")); 254bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345"), 5, 0, S("can't happen")); 255bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345"), 5, 1, S("can't happen")); 256bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345"), 6, 0, S("can't happen")); 257bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("1234567890"), 0, 0, S("can't happen")); 258bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("1234567890"), 0, 1, S("can't happen")); 259bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("1234567890"), 0, 5, S("can't happen")); 260bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("1234567890"), 0, 9, S("can't happen")); 261bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("1234567890"), 0, 10, S("can't happen")); 262bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("1234567890"), 0, 11, S("can't happen")); 263bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("1234567890"), 1, 0, S("can't happen")); 264bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("1234567890"), 1, 1, S("can't happen")); 265bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("1234567890"), 1, 4, S("can't happen")); 266bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("1234567890"), 1, 8, S("can't happen")); 267bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("1234567890"), 1, 9, S("can't happen")); 268bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("1234567890"), 1, 10, S("can't happen")); 269bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("1234567890"), 5, 0, S("can't happen")); 270bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("1234567890"), 5, 1, S("can't happen")); 271bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("1234567890"), 5, 2, S("can't happen")); 272bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("1234567890"), 5, 4, S("can't happen")); 273bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("1234567890"), 5, 5, S("can't happen")); 274bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("1234567890"), 5, 6, S("can't happen")); 275bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("1234567890"), 9, 0, S("can't happen")); 276bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("1234567890"), 9, 1, S("can't happen")); 277bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("1234567890"), 9, 2, S("can't happen")); 278bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("1234567890"), 10, 0, S("can't happen")); 279bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("1234567890"), 10, 1, S("can't happen")); 280bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("1234567890"), 11, 0, S("can't happen")); 281bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345678901234567890"), 0, 0, S("can't happen")); 282bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345678901234567890"), 0, 1, S("can't happen")); 283bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 284bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 2859dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 286bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test2() 287bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 288bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345678901234567890"), 0, 10, S("can't happen")); 289bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345678901234567890"), 0, 19, S("can't happen")); 290bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345678901234567890"), 0, 20, S("can't happen")); 291bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345678901234567890"), 0, 21, S("can't happen")); 292bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345678901234567890"), 1, 0, S("can't happen")); 293bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345678901234567890"), 1, 1, S("can't happen")); 294bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345678901234567890"), 1, 9, S("can't happen")); 295bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345678901234567890"), 1, 18, S("can't happen")); 296bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345678901234567890"), 1, 19, S("can't happen")); 297bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345678901234567890"), 1, 20, S("can't happen")); 298bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345678901234567890"), 10, 0, S("can't happen")); 299bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345678901234567890"), 10, 1, S("can't happen")); 300bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345678901234567890"), 10, 5, S("can't happen")); 301bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345678901234567890"), 10, 9, S("can't happen")); 302bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345678901234567890"), 10, 10, S("can't happen")); 303bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345678901234567890"), 10, 11, S("can't happen")); 304bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345678901234567890"), 19, 0, S("can't happen")); 305bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345678901234567890"), 19, 1, S("can't happen")); 306bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345678901234567890"), 19, 2, S("can't happen")); 307bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345678901234567890"), 20, 0, S("can't happen")); 308bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345678901234567890"), 20, 1, S("can't happen")); 309bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S(""), 1, 0, S("12345678901234567890"), 21, 0, S("can't happen")); 310bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S(""), 0, 0, S("abcde")); 311bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S(""), 0, 1, S("abcde")); 312bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S(""), 1, 0, S("can't happen")); 313bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345"), 0, 0, S("abcde")); 314bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345"), 0, 1, S("1abcde")); 315bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345"), 0, 2, S("12abcde")); 316bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345"), 0, 4, S("1234abcde")); 317bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345"), 0, 5, S("12345abcde")); 318bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345"), 0, 6, S("12345abcde")); 319bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345"), 1, 0, S("abcde")); 320bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345"), 1, 1, S("2abcde")); 321bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345"), 1, 2, S("23abcde")); 322bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345"), 1, 3, S("234abcde")); 323bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345"), 1, 4, S("2345abcde")); 324bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345"), 1, 5, S("2345abcde")); 325bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345"), 2, 0, S("abcde")); 326bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345"), 2, 1, S("3abcde")); 327bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345"), 2, 2, S("34abcde")); 328bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345"), 2, 3, S("345abcde")); 329bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345"), 2, 4, S("345abcde")); 330bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345"), 4, 0, S("abcde")); 331bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345"), 4, 1, S("5abcde")); 332bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345"), 4, 2, S("5abcde")); 333bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345"), 5, 0, S("abcde")); 334bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345"), 5, 1, S("abcde")); 335bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345"), 6, 0, S("can't happen")); 336bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("1234567890"), 0, 0, S("abcde")); 337bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("1234567890"), 0, 1, S("1abcde")); 338bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("1234567890"), 0, 5, S("12345abcde")); 339bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("1234567890"), 0, 9, S("123456789abcde")); 340bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("1234567890"), 0, 10, S("1234567890abcde")); 341bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("1234567890"), 0, 11, S("1234567890abcde")); 342bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("1234567890"), 1, 0, S("abcde")); 343bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("1234567890"), 1, 1, S("2abcde")); 344bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("1234567890"), 1, 4, S("2345abcde")); 345bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("1234567890"), 1, 8, S("23456789abcde")); 346bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("1234567890"), 1, 9, S("234567890abcde")); 347bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("1234567890"), 1, 10, S("234567890abcde")); 348bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("1234567890"), 5, 0, S("abcde")); 349bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("1234567890"), 5, 1, S("6abcde")); 350bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("1234567890"), 5, 2, S("67abcde")); 351bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("1234567890"), 5, 4, S("6789abcde")); 352bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("1234567890"), 5, 5, S("67890abcde")); 353bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("1234567890"), 5, 6, S("67890abcde")); 354bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("1234567890"), 9, 0, S("abcde")); 355bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("1234567890"), 9, 1, S("0abcde")); 356bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("1234567890"), 9, 2, S("0abcde")); 357bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("1234567890"), 10, 0, S("abcde")); 358bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("1234567890"), 10, 1, S("abcde")); 359bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("1234567890"), 11, 0, S("can't happen")); 360bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345678901234567890"), 0, 0, S("abcde")); 361bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345678901234567890"), 0, 1, S("1abcde")); 362bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345678901234567890"), 0, 10, S("1234567890abcde")); 363bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345678901234567890"), 0, 19, S("1234567890123456789abcde")); 364bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345678901234567890"), 0, 20, S("12345678901234567890abcde")); 365bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345678901234567890"), 0, 21, S("12345678901234567890abcde")); 366bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345678901234567890"), 1, 0, S("abcde")); 367bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345678901234567890"), 1, 1, S("2abcde")); 368bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345678901234567890"), 1, 9, S("234567890abcde")); 369bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345678901234567890"), 1, 18, S("234567890123456789abcde")); 370bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345678901234567890"), 1, 19, S("2345678901234567890abcde")); 371bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345678901234567890"), 1, 20, S("2345678901234567890abcde")); 372bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345678901234567890"), 10, 0, S("abcde")); 373bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345678901234567890"), 10, 1, S("1abcde")); 374bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345678901234567890"), 10, 5, S("12345abcde")); 375bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345678901234567890"), 10, 9, S("123456789abcde")); 376bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345678901234567890"), 10, 10, S("1234567890abcde")); 377bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345678901234567890"), 10, 11, S("1234567890abcde")); 378bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345678901234567890"), 19, 0, S("abcde")); 379bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345678901234567890"), 19, 1, S("0abcde")); 380bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345678901234567890"), 19, 2, S("0abcde")); 381bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345678901234567890"), 20, 0, S("abcde")); 382bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345678901234567890"), 20, 1, S("abcde")); 383bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 0, S("12345678901234567890"), 21, 0, S("can't happen")); 384bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S(""), 0, 0, S("bcde")); 385bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S(""), 0, 1, S("bcde")); 386bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S(""), 1, 0, S("can't happen")); 387bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345"), 0, 0, S("bcde")); 388bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 389bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 3909dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 391bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test3() 392bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 393bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345"), 0, 1, S("1bcde")); 394bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345"), 0, 2, S("12bcde")); 395bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345"), 0, 4, S("1234bcde")); 396bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345"), 0, 5, S("12345bcde")); 397bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345"), 0, 6, S("12345bcde")); 398bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345"), 1, 0, S("bcde")); 399bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345"), 1, 1, S("2bcde")); 400bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345"), 1, 2, S("23bcde")); 401bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345"), 1, 3, S("234bcde")); 402bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345"), 1, 4, S("2345bcde")); 403bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345"), 1, 5, S("2345bcde")); 404bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345"), 2, 0, S("bcde")); 405bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345"), 2, 1, S("3bcde")); 406bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345"), 2, 2, S("34bcde")); 407bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345"), 2, 3, S("345bcde")); 408bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345"), 2, 4, S("345bcde")); 409bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345"), 4, 0, S("bcde")); 410bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345"), 4, 1, S("5bcde")); 411bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345"), 4, 2, S("5bcde")); 412bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345"), 5, 0, S("bcde")); 413bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345"), 5, 1, S("bcde")); 414bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345"), 6, 0, S("can't happen")); 415bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("1234567890"), 0, 0, S("bcde")); 416bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("1234567890"), 0, 1, S("1bcde")); 417bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("1234567890"), 0, 5, S("12345bcde")); 418bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("1234567890"), 0, 9, S("123456789bcde")); 419bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("1234567890"), 0, 10, S("1234567890bcde")); 420bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("1234567890"), 0, 11, S("1234567890bcde")); 421bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("1234567890"), 1, 0, S("bcde")); 422bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("1234567890"), 1, 1, S("2bcde")); 423bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("1234567890"), 1, 4, S("2345bcde")); 424bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("1234567890"), 1, 8, S("23456789bcde")); 425bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("1234567890"), 1, 9, S("234567890bcde")); 426bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("1234567890"), 1, 10, S("234567890bcde")); 427bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("1234567890"), 5, 0, S("bcde")); 428bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("1234567890"), 5, 1, S("6bcde")); 429bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("1234567890"), 5, 2, S("67bcde")); 430bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("1234567890"), 5, 4, S("6789bcde")); 431bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("1234567890"), 5, 5, S("67890bcde")); 432bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("1234567890"), 5, 6, S("67890bcde")); 433bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("1234567890"), 9, 0, S("bcde")); 434bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("1234567890"), 9, 1, S("0bcde")); 435bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("1234567890"), 9, 2, S("0bcde")); 436bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("1234567890"), 10, 0, S("bcde")); 437bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("1234567890"), 10, 1, S("bcde")); 438bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("1234567890"), 11, 0, S("can't happen")); 439bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345678901234567890"), 0, 0, S("bcde")); 440bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345678901234567890"), 0, 1, S("1bcde")); 441bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345678901234567890"), 0, 10, S("1234567890bcde")); 442bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345678901234567890"), 0, 19, S("1234567890123456789bcde")); 443bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345678901234567890"), 0, 20, S("12345678901234567890bcde")); 444bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345678901234567890"), 0, 21, S("12345678901234567890bcde")); 445bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345678901234567890"), 1, 0, S("bcde")); 446bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345678901234567890"), 1, 1, S("2bcde")); 447bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345678901234567890"), 1, 9, S("234567890bcde")); 448bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345678901234567890"), 1, 18, S("234567890123456789bcde")); 449bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345678901234567890"), 1, 19, S("2345678901234567890bcde")); 450bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345678901234567890"), 1, 20, S("2345678901234567890bcde")); 451bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345678901234567890"), 10, 0, S("bcde")); 452bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345678901234567890"), 10, 1, S("1bcde")); 453bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345678901234567890"), 10, 5, S("12345bcde")); 454bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345678901234567890"), 10, 9, S("123456789bcde")); 455bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345678901234567890"), 10, 10, S("1234567890bcde")); 456bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345678901234567890"), 10, 11, S("1234567890bcde")); 457bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345678901234567890"), 19, 0, S("bcde")); 458bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345678901234567890"), 19, 1, S("0bcde")); 459bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345678901234567890"), 19, 2, S("0bcde")); 460bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345678901234567890"), 20, 0, S("bcde")); 461bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345678901234567890"), 20, 1, S("bcde")); 462bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 1, S("12345678901234567890"), 21, 0, S("can't happen")); 463bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S(""), 0, 0, S("cde")); 464bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S(""), 0, 1, S("cde")); 465bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S(""), 1, 0, S("can't happen")); 466bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345"), 0, 0, S("cde")); 467bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345"), 0, 1, S("1cde")); 468bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345"), 0, 2, S("12cde")); 469bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345"), 0, 4, S("1234cde")); 470bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345"), 0, 5, S("12345cde")); 471bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345"), 0, 6, S("12345cde")); 472bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345"), 1, 0, S("cde")); 473bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345"), 1, 1, S("2cde")); 474bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345"), 1, 2, S("23cde")); 475bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345"), 1, 3, S("234cde")); 476bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345"), 1, 4, S("2345cde")); 477bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345"), 1, 5, S("2345cde")); 478bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345"), 2, 0, S("cde")); 479bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345"), 2, 1, S("3cde")); 480bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345"), 2, 2, S("34cde")); 481bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345"), 2, 3, S("345cde")); 482bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345"), 2, 4, S("345cde")); 483bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345"), 4, 0, S("cde")); 484bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345"), 4, 1, S("5cde")); 485bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345"), 4, 2, S("5cde")); 486bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345"), 5, 0, S("cde")); 487bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345"), 5, 1, S("cde")); 488bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345"), 6, 0, S("can't happen")); 489bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("1234567890"), 0, 0, S("cde")); 490bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("1234567890"), 0, 1, S("1cde")); 491bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("1234567890"), 0, 5, S("12345cde")); 492bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("1234567890"), 0, 9, S("123456789cde")); 493bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 494bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 4959dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 496bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test4() 497bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 498bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("1234567890"), 0, 10, S("1234567890cde")); 499bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("1234567890"), 0, 11, S("1234567890cde")); 500bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("1234567890"), 1, 0, S("cde")); 501bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("1234567890"), 1, 1, S("2cde")); 502bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("1234567890"), 1, 4, S("2345cde")); 503bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("1234567890"), 1, 8, S("23456789cde")); 504bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("1234567890"), 1, 9, S("234567890cde")); 505bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("1234567890"), 1, 10, S("234567890cde")); 506bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("1234567890"), 5, 0, S("cde")); 507bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("1234567890"), 5, 1, S("6cde")); 508bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("1234567890"), 5, 2, S("67cde")); 509bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("1234567890"), 5, 4, S("6789cde")); 510bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("1234567890"), 5, 5, S("67890cde")); 511bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("1234567890"), 5, 6, S("67890cde")); 512bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("1234567890"), 9, 0, S("cde")); 513bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("1234567890"), 9, 1, S("0cde")); 514bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("1234567890"), 9, 2, S("0cde")); 515bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("1234567890"), 10, 0, S("cde")); 516bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("1234567890"), 10, 1, S("cde")); 517bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("1234567890"), 11, 0, S("can't happen")); 518bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345678901234567890"), 0, 0, S("cde")); 519bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345678901234567890"), 0, 1, S("1cde")); 520bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345678901234567890"), 0, 10, S("1234567890cde")); 521bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345678901234567890"), 0, 19, S("1234567890123456789cde")); 522bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345678901234567890"), 0, 20, S("12345678901234567890cde")); 523bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345678901234567890"), 0, 21, S("12345678901234567890cde")); 524bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345678901234567890"), 1, 0, S("cde")); 525bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345678901234567890"), 1, 1, S("2cde")); 526bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345678901234567890"), 1, 9, S("234567890cde")); 527bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345678901234567890"), 1, 18, S("234567890123456789cde")); 528bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345678901234567890"), 1, 19, S("2345678901234567890cde")); 529bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345678901234567890"), 1, 20, S("2345678901234567890cde")); 530bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345678901234567890"), 10, 0, S("cde")); 531bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345678901234567890"), 10, 1, S("1cde")); 532bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345678901234567890"), 10, 5, S("12345cde")); 533bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345678901234567890"), 10, 9, S("123456789cde")); 534bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345678901234567890"), 10, 10, S("1234567890cde")); 535bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345678901234567890"), 10, 11, S("1234567890cde")); 536bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345678901234567890"), 19, 0, S("cde")); 537bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345678901234567890"), 19, 1, S("0cde")); 538bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345678901234567890"), 19, 2, S("0cde")); 539bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345678901234567890"), 20, 0, S("cde")); 540bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345678901234567890"), 20, 1, S("cde")); 541bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 2, S("12345678901234567890"), 21, 0, S("can't happen")); 542bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S(""), 0, 0, S("e")); 543bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S(""), 0, 1, S("e")); 544bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S(""), 1, 0, S("can't happen")); 545bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345"), 0, 0, S("e")); 546bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345"), 0, 1, S("1e")); 547bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345"), 0, 2, S("12e")); 548bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345"), 0, 4, S("1234e")); 549bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345"), 0, 5, S("12345e")); 550bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345"), 0, 6, S("12345e")); 551bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345"), 1, 0, S("e")); 552bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345"), 1, 1, S("2e")); 553bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345"), 1, 2, S("23e")); 554bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345"), 1, 3, S("234e")); 555bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345"), 1, 4, S("2345e")); 556bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345"), 1, 5, S("2345e")); 557bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345"), 2, 0, S("e")); 558bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345"), 2, 1, S("3e")); 559bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345"), 2, 2, S("34e")); 560bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345"), 2, 3, S("345e")); 561bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345"), 2, 4, S("345e")); 562bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345"), 4, 0, S("e")); 563bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345"), 4, 1, S("5e")); 564bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345"), 4, 2, S("5e")); 565bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345"), 5, 0, S("e")); 566bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345"), 5, 1, S("e")); 567bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345"), 6, 0, S("can't happen")); 568bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("1234567890"), 0, 0, S("e")); 569bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("1234567890"), 0, 1, S("1e")); 570bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("1234567890"), 0, 5, S("12345e")); 571bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("1234567890"), 0, 9, S("123456789e")); 572bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("1234567890"), 0, 10, S("1234567890e")); 573bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("1234567890"), 0, 11, S("1234567890e")); 574bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("1234567890"), 1, 0, S("e")); 575bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("1234567890"), 1, 1, S("2e")); 576bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("1234567890"), 1, 4, S("2345e")); 577bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("1234567890"), 1, 8, S("23456789e")); 578bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("1234567890"), 1, 9, S("234567890e")); 579bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("1234567890"), 1, 10, S("234567890e")); 580bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("1234567890"), 5, 0, S("e")); 581bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("1234567890"), 5, 1, S("6e")); 582bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("1234567890"), 5, 2, S("67e")); 583bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("1234567890"), 5, 4, S("6789e")); 584bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("1234567890"), 5, 5, S("67890e")); 585bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("1234567890"), 5, 6, S("67890e")); 586bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("1234567890"), 9, 0, S("e")); 587bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("1234567890"), 9, 1, S("0e")); 588bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("1234567890"), 9, 2, S("0e")); 589bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("1234567890"), 10, 0, S("e")); 590bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("1234567890"), 10, 1, S("e")); 591bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("1234567890"), 11, 0, S("can't happen")); 592bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345678901234567890"), 0, 0, S("e")); 593bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345678901234567890"), 0, 1, S("1e")); 594bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345678901234567890"), 0, 10, S("1234567890e")); 595bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345678901234567890"), 0, 19, S("1234567890123456789e")); 596bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345678901234567890"), 0, 20, S("12345678901234567890e")); 597bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345678901234567890"), 0, 21, S("12345678901234567890e")); 598bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 599bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 6009dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 601bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test5() 602bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 603bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345678901234567890"), 1, 0, S("e")); 604bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345678901234567890"), 1, 1, S("2e")); 605bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345678901234567890"), 1, 9, S("234567890e")); 606bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345678901234567890"), 1, 18, S("234567890123456789e")); 607bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345678901234567890"), 1, 19, S("2345678901234567890e")); 608bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345678901234567890"), 1, 20, S("2345678901234567890e")); 609bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345678901234567890"), 10, 0, S("e")); 610bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345678901234567890"), 10, 1, S("1e")); 611bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345678901234567890"), 10, 5, S("12345e")); 612bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345678901234567890"), 10, 9, S("123456789e")); 613bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345678901234567890"), 10, 10, S("1234567890e")); 614bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345678901234567890"), 10, 11, S("1234567890e")); 615bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345678901234567890"), 19, 0, S("e")); 616bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345678901234567890"), 19, 1, S("0e")); 617bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345678901234567890"), 19, 2, S("0e")); 618bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345678901234567890"), 20, 0, S("e")); 619bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345678901234567890"), 20, 1, S("e")); 620bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 4, S("12345678901234567890"), 21, 0, S("can't happen")); 621bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S(""), 0, 0, S("")); 622bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S(""), 0, 1, S("")); 623bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S(""), 1, 0, S("can't happen")); 624bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345"), 0, 0, S("")); 625bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345"), 0, 1, S("1")); 626bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345"), 0, 2, S("12")); 627bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345"), 0, 4, S("1234")); 628bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345"), 0, 5, S("12345")); 629bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345"), 0, 6, S("12345")); 630bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345"), 1, 0, S("")); 631bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345"), 1, 1, S("2")); 632bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345"), 1, 2, S("23")); 633bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345"), 1, 3, S("234")); 634bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345"), 1, 4, S("2345")); 635bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345"), 1, 5, S("2345")); 636bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345"), 2, 0, S("")); 637bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345"), 2, 1, S("3")); 638bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345"), 2, 2, S("34")); 639bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345"), 2, 3, S("345")); 640bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345"), 2, 4, S("345")); 641bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345"), 4, 0, S("")); 642bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345"), 4, 1, S("5")); 643bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345"), 4, 2, S("5")); 644bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345"), 5, 0, S("")); 645bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345"), 5, 1, S("")); 646bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345"), 6, 0, S("can't happen")); 647bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("1234567890"), 0, 0, S("")); 648bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("1234567890"), 0, 1, S("1")); 649bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("1234567890"), 0, 5, S("12345")); 650bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("1234567890"), 0, 9, S("123456789")); 651bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("1234567890"), 0, 10, S("1234567890")); 652bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("1234567890"), 0, 11, S("1234567890")); 653bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("1234567890"), 1, 0, S("")); 654bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("1234567890"), 1, 1, S("2")); 655bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("1234567890"), 1, 4, S("2345")); 656bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("1234567890"), 1, 8, S("23456789")); 657bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("1234567890"), 1, 9, S("234567890")); 658bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("1234567890"), 1, 10, S("234567890")); 659bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("1234567890"), 5, 0, S("")); 660bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("1234567890"), 5, 1, S("6")); 661bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("1234567890"), 5, 2, S("67")); 662bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("1234567890"), 5, 4, S("6789")); 663bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("1234567890"), 5, 5, S("67890")); 664bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("1234567890"), 5, 6, S("67890")); 665bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("1234567890"), 9, 0, S("")); 666bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("1234567890"), 9, 1, S("0")); 667bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("1234567890"), 9, 2, S("0")); 668bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("1234567890"), 10, 0, S("")); 669bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("1234567890"), 10, 1, S("")); 670bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("1234567890"), 11, 0, S("can't happen")); 671bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345678901234567890"), 0, 0, S("")); 672bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345678901234567890"), 0, 1, S("1")); 673bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345678901234567890"), 0, 10, S("1234567890")); 674bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345678901234567890"), 0, 19, S("1234567890123456789")); 675bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345678901234567890"), 0, 20, S("12345678901234567890")); 676bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345678901234567890"), 0, 21, S("12345678901234567890")); 677bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345678901234567890"), 1, 0, S("")); 678bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345678901234567890"), 1, 1, S("2")); 679bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345678901234567890"), 1, 9, S("234567890")); 680bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345678901234567890"), 1, 18, S("234567890123456789")); 681bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345678901234567890"), 1, 19, S("2345678901234567890")); 682bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345678901234567890"), 1, 20, S("2345678901234567890")); 683bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345678901234567890"), 10, 0, S("")); 684bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345678901234567890"), 10, 1, S("1")); 685bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345678901234567890"), 10, 5, S("12345")); 686bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345678901234567890"), 10, 9, S("123456789")); 687bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345678901234567890"), 10, 10, S("1234567890")); 688bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345678901234567890"), 10, 11, S("1234567890")); 689bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345678901234567890"), 19, 0, S("")); 690bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345678901234567890"), 19, 1, S("0")); 691bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345678901234567890"), 19, 2, S("0")); 692bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345678901234567890"), 20, 0, S("")); 693bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345678901234567890"), 20, 1, S("")); 694bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 5, S("12345678901234567890"), 21, 0, S("can't happen")); 695bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S(""), 0, 0, S("")); 696bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S(""), 0, 1, S("")); 697bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S(""), 1, 0, S("can't happen")); 698bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345"), 0, 0, S("")); 699bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345"), 0, 1, S("1")); 700bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345"), 0, 2, S("12")); 701bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345"), 0, 4, S("1234")); 702bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345"), 0, 5, S("12345")); 703bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 704bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 7059dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 706bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test6() 707bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 708bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345"), 0, 6, S("12345")); 709bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345"), 1, 0, S("")); 710bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345"), 1, 1, S("2")); 711bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345"), 1, 2, S("23")); 712bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345"), 1, 3, S("234")); 713bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345"), 1, 4, S("2345")); 714bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345"), 1, 5, S("2345")); 715bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345"), 2, 0, S("")); 716bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345"), 2, 1, S("3")); 717bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345"), 2, 2, S("34")); 718bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345"), 2, 3, S("345")); 719bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345"), 2, 4, S("345")); 720bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345"), 4, 0, S("")); 721bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345"), 4, 1, S("5")); 722bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345"), 4, 2, S("5")); 723bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345"), 5, 0, S("")); 724bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345"), 5, 1, S("")); 725bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345"), 6, 0, S("can't happen")); 726bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("1234567890"), 0, 0, S("")); 727bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("1234567890"), 0, 1, S("1")); 728bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("1234567890"), 0, 5, S("12345")); 729bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("1234567890"), 0, 9, S("123456789")); 730bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("1234567890"), 0, 10, S("1234567890")); 731bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("1234567890"), 0, 11, S("1234567890")); 732bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("1234567890"), 1, 0, S("")); 733bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("1234567890"), 1, 1, S("2")); 734bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("1234567890"), 1, 4, S("2345")); 735bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("1234567890"), 1, 8, S("23456789")); 736bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("1234567890"), 1, 9, S("234567890")); 737bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("1234567890"), 1, 10, S("234567890")); 738bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("1234567890"), 5, 0, S("")); 739bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("1234567890"), 5, 1, S("6")); 740bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("1234567890"), 5, 2, S("67")); 741bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("1234567890"), 5, 4, S("6789")); 742bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("1234567890"), 5, 5, S("67890")); 743bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("1234567890"), 5, 6, S("67890")); 744bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("1234567890"), 9, 0, S("")); 745bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("1234567890"), 9, 1, S("0")); 746bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("1234567890"), 9, 2, S("0")); 747bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("1234567890"), 10, 0, S("")); 748bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("1234567890"), 10, 1, S("")); 749bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("1234567890"), 11, 0, S("can't happen")); 750bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345678901234567890"), 0, 0, S("")); 751bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345678901234567890"), 0, 1, S("1")); 752bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345678901234567890"), 0, 10, S("1234567890")); 753bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345678901234567890"), 0, 19, S("1234567890123456789")); 754bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345678901234567890"), 0, 20, S("12345678901234567890")); 755bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345678901234567890"), 0, 21, S("12345678901234567890")); 756bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345678901234567890"), 1, 0, S("")); 757bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345678901234567890"), 1, 1, S("2")); 758bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345678901234567890"), 1, 9, S("234567890")); 759bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345678901234567890"), 1, 18, S("234567890123456789")); 760bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345678901234567890"), 1, 19, S("2345678901234567890")); 761bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345678901234567890"), 1, 20, S("2345678901234567890")); 762bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345678901234567890"), 10, 0, S("")); 763bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345678901234567890"), 10, 1, S("1")); 764bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345678901234567890"), 10, 5, S("12345")); 765bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345678901234567890"), 10, 9, S("123456789")); 766bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345678901234567890"), 10, 10, S("1234567890")); 767bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345678901234567890"), 10, 11, S("1234567890")); 768bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345678901234567890"), 19, 0, S("")); 769bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345678901234567890"), 19, 1, S("0")); 770bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345678901234567890"), 19, 2, S("0")); 771bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345678901234567890"), 20, 0, S("")); 772bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345678901234567890"), 20, 1, S("")); 773bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 0, 6, S("12345678901234567890"), 21, 0, S("can't happen")); 774bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S(""), 0, 0, S("abcde")); 775bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S(""), 0, 1, S("abcde")); 776bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S(""), 1, 0, S("can't happen")); 777bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345"), 0, 0, S("abcde")); 778bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345"), 0, 1, S("a1bcde")); 779bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345"), 0, 2, S("a12bcde")); 780bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345"), 0, 4, S("a1234bcde")); 781bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345"), 0, 5, S("a12345bcde")); 782bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345"), 0, 6, S("a12345bcde")); 783bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345"), 1, 0, S("abcde")); 784bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345"), 1, 1, S("a2bcde")); 785bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345"), 1, 2, S("a23bcde")); 786bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345"), 1, 3, S("a234bcde")); 787bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345"), 1, 4, S("a2345bcde")); 788bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345"), 1, 5, S("a2345bcde")); 789bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345"), 2, 0, S("abcde")); 790bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345"), 2, 1, S("a3bcde")); 791bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345"), 2, 2, S("a34bcde")); 792bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345"), 2, 3, S("a345bcde")); 793bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345"), 2, 4, S("a345bcde")); 794bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345"), 4, 0, S("abcde")); 795bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345"), 4, 1, S("a5bcde")); 796bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345"), 4, 2, S("a5bcde")); 797bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345"), 5, 0, S("abcde")); 798bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345"), 5, 1, S("abcde")); 799bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345"), 6, 0, S("can't happen")); 800bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("1234567890"), 0, 0, S("abcde")); 801bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("1234567890"), 0, 1, S("a1bcde")); 802bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("1234567890"), 0, 5, S("a12345bcde")); 803bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("1234567890"), 0, 9, S("a123456789bcde")); 804bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("1234567890"), 0, 10, S("a1234567890bcde")); 805bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("1234567890"), 0, 11, S("a1234567890bcde")); 806bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("1234567890"), 1, 0, S("abcde")); 807bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("1234567890"), 1, 1, S("a2bcde")); 808bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 809bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 8109dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 811bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test7() 812bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 813bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("1234567890"), 1, 4, S("a2345bcde")); 814bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("1234567890"), 1, 8, S("a23456789bcde")); 815bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("1234567890"), 1, 9, S("a234567890bcde")); 816bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("1234567890"), 1, 10, S("a234567890bcde")); 817bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("1234567890"), 5, 0, S("abcde")); 818bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("1234567890"), 5, 1, S("a6bcde")); 819bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("1234567890"), 5, 2, S("a67bcde")); 820bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("1234567890"), 5, 4, S("a6789bcde")); 821bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("1234567890"), 5, 5, S("a67890bcde")); 822bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("1234567890"), 5, 6, S("a67890bcde")); 823bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("1234567890"), 9, 0, S("abcde")); 824bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("1234567890"), 9, 1, S("a0bcde")); 825bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("1234567890"), 9, 2, S("a0bcde")); 826bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("1234567890"), 10, 0, S("abcde")); 827bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("1234567890"), 10, 1, S("abcde")); 828bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("1234567890"), 11, 0, S("can't happen")); 829bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345678901234567890"), 0, 0, S("abcde")); 830bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345678901234567890"), 0, 1, S("a1bcde")); 831bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345678901234567890"), 0, 10, S("a1234567890bcde")); 832bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345678901234567890"), 0, 19, S("a1234567890123456789bcde")); 833bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345678901234567890"), 0, 20, S("a12345678901234567890bcde")); 834bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345678901234567890"), 0, 21, S("a12345678901234567890bcde")); 835bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345678901234567890"), 1, 0, S("abcde")); 836bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345678901234567890"), 1, 1, S("a2bcde")); 837bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345678901234567890"), 1, 9, S("a234567890bcde")); 838bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345678901234567890"), 1, 18, S("a234567890123456789bcde")); 839bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345678901234567890"), 1, 19, S("a2345678901234567890bcde")); 840bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345678901234567890"), 1, 20, S("a2345678901234567890bcde")); 841bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345678901234567890"), 10, 0, S("abcde")); 842bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345678901234567890"), 10, 1, S("a1bcde")); 843bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345678901234567890"), 10, 5, S("a12345bcde")); 844bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345678901234567890"), 10, 9, S("a123456789bcde")); 845bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345678901234567890"), 10, 10, S("a1234567890bcde")); 846bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345678901234567890"), 10, 11, S("a1234567890bcde")); 847bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345678901234567890"), 19, 0, S("abcde")); 848bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345678901234567890"), 19, 1, S("a0bcde")); 849bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345678901234567890"), 19, 2, S("a0bcde")); 850bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345678901234567890"), 20, 0, S("abcde")); 851bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345678901234567890"), 20, 1, S("abcde")); 852bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 0, S("12345678901234567890"), 21, 0, S("can't happen")); 853bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S(""), 0, 0, S("acde")); 854bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S(""), 0, 1, S("acde")); 855bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S(""), 1, 0, S("can't happen")); 856bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345"), 0, 0, S("acde")); 857bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345"), 0, 1, S("a1cde")); 858bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345"), 0, 2, S("a12cde")); 859bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345"), 0, 4, S("a1234cde")); 860bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345"), 0, 5, S("a12345cde")); 861bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345"), 0, 6, S("a12345cde")); 862bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345"), 1, 0, S("acde")); 863bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345"), 1, 1, S("a2cde")); 864bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345"), 1, 2, S("a23cde")); 865bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345"), 1, 3, S("a234cde")); 866bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345"), 1, 4, S("a2345cde")); 867bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345"), 1, 5, S("a2345cde")); 868bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345"), 2, 0, S("acde")); 869bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345"), 2, 1, S("a3cde")); 870bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345"), 2, 2, S("a34cde")); 871bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345"), 2, 3, S("a345cde")); 872bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345"), 2, 4, S("a345cde")); 873bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345"), 4, 0, S("acde")); 874bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345"), 4, 1, S("a5cde")); 875bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345"), 4, 2, S("a5cde")); 876bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345"), 5, 0, S("acde")); 877bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345"), 5, 1, S("acde")); 878bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345"), 6, 0, S("can't happen")); 879bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("1234567890"), 0, 0, S("acde")); 880bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("1234567890"), 0, 1, S("a1cde")); 881bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("1234567890"), 0, 5, S("a12345cde")); 882bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("1234567890"), 0, 9, S("a123456789cde")); 883bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("1234567890"), 0, 10, S("a1234567890cde")); 884bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("1234567890"), 0, 11, S("a1234567890cde")); 885bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("1234567890"), 1, 0, S("acde")); 886bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("1234567890"), 1, 1, S("a2cde")); 887bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("1234567890"), 1, 4, S("a2345cde")); 888bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("1234567890"), 1, 8, S("a23456789cde")); 889bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("1234567890"), 1, 9, S("a234567890cde")); 890bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("1234567890"), 1, 10, S("a234567890cde")); 891bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("1234567890"), 5, 0, S("acde")); 892bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("1234567890"), 5, 1, S("a6cde")); 893bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("1234567890"), 5, 2, S("a67cde")); 894bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("1234567890"), 5, 4, S("a6789cde")); 895bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("1234567890"), 5, 5, S("a67890cde")); 896bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("1234567890"), 5, 6, S("a67890cde")); 897bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("1234567890"), 9, 0, S("acde")); 898bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("1234567890"), 9, 1, S("a0cde")); 899bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("1234567890"), 9, 2, S("a0cde")); 900bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("1234567890"), 10, 0, S("acde")); 901bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("1234567890"), 10, 1, S("acde")); 902bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("1234567890"), 11, 0, S("can't happen")); 903bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345678901234567890"), 0, 0, S("acde")); 904bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345678901234567890"), 0, 1, S("a1cde")); 905bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345678901234567890"), 0, 10, S("a1234567890cde")); 906bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345678901234567890"), 0, 19, S("a1234567890123456789cde")); 907bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345678901234567890"), 0, 20, S("a12345678901234567890cde")); 908bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345678901234567890"), 0, 21, S("a12345678901234567890cde")); 909bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345678901234567890"), 1, 0, S("acde")); 910bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345678901234567890"), 1, 1, S("a2cde")); 911bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345678901234567890"), 1, 9, S("a234567890cde")); 912bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345678901234567890"), 1, 18, S("a234567890123456789cde")); 913bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 914bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 9159dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 916bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test8() 917bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 918bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345678901234567890"), 1, 19, S("a2345678901234567890cde")); 919bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345678901234567890"), 1, 20, S("a2345678901234567890cde")); 920bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345678901234567890"), 10, 0, S("acde")); 921bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345678901234567890"), 10, 1, S("a1cde")); 922bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345678901234567890"), 10, 5, S("a12345cde")); 923bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345678901234567890"), 10, 9, S("a123456789cde")); 924bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345678901234567890"), 10, 10, S("a1234567890cde")); 925bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345678901234567890"), 10, 11, S("a1234567890cde")); 926bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345678901234567890"), 19, 0, S("acde")); 927bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345678901234567890"), 19, 1, S("a0cde")); 928bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345678901234567890"), 19, 2, S("a0cde")); 929bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345678901234567890"), 20, 0, S("acde")); 930bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345678901234567890"), 20, 1, S("acde")); 931bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 1, S("12345678901234567890"), 21, 0, S("can't happen")); 932bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S(""), 0, 0, S("ade")); 933bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S(""), 0, 1, S("ade")); 934bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S(""), 1, 0, S("can't happen")); 935bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345"), 0, 0, S("ade")); 936bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345"), 0, 1, S("a1de")); 937bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345"), 0, 2, S("a12de")); 938bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345"), 0, 4, S("a1234de")); 939bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345"), 0, 5, S("a12345de")); 940bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345"), 0, 6, S("a12345de")); 941bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345"), 1, 0, S("ade")); 942bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345"), 1, 1, S("a2de")); 943bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345"), 1, 2, S("a23de")); 944bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345"), 1, 3, S("a234de")); 945bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345"), 1, 4, S("a2345de")); 946bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345"), 1, 5, S("a2345de")); 947bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345"), 2, 0, S("ade")); 948bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345"), 2, 1, S("a3de")); 949bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345"), 2, 2, S("a34de")); 950bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345"), 2, 3, S("a345de")); 951bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345"), 2, 4, S("a345de")); 952bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345"), 4, 0, S("ade")); 953bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345"), 4, 1, S("a5de")); 954bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345"), 4, 2, S("a5de")); 955bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345"), 5, 0, S("ade")); 956bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345"), 5, 1, S("ade")); 957bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345"), 6, 0, S("can't happen")); 958bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("1234567890"), 0, 0, S("ade")); 959bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("1234567890"), 0, 1, S("a1de")); 960bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("1234567890"), 0, 5, S("a12345de")); 961bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("1234567890"), 0, 9, S("a123456789de")); 962bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("1234567890"), 0, 10, S("a1234567890de")); 963bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("1234567890"), 0, 11, S("a1234567890de")); 964bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("1234567890"), 1, 0, S("ade")); 965bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("1234567890"), 1, 1, S("a2de")); 966bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("1234567890"), 1, 4, S("a2345de")); 967bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("1234567890"), 1, 8, S("a23456789de")); 968bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("1234567890"), 1, 9, S("a234567890de")); 969bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("1234567890"), 1, 10, S("a234567890de")); 970bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("1234567890"), 5, 0, S("ade")); 971bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("1234567890"), 5, 1, S("a6de")); 972bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("1234567890"), 5, 2, S("a67de")); 973bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("1234567890"), 5, 4, S("a6789de")); 974bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("1234567890"), 5, 5, S("a67890de")); 975bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("1234567890"), 5, 6, S("a67890de")); 976bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("1234567890"), 9, 0, S("ade")); 977bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("1234567890"), 9, 1, S("a0de")); 978bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("1234567890"), 9, 2, S("a0de")); 979bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("1234567890"), 10, 0, S("ade")); 980bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("1234567890"), 10, 1, S("ade")); 981bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("1234567890"), 11, 0, S("can't happen")); 982bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345678901234567890"), 0, 0, S("ade")); 983bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345678901234567890"), 0, 1, S("a1de")); 984bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345678901234567890"), 0, 10, S("a1234567890de")); 985bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345678901234567890"), 0, 19, S("a1234567890123456789de")); 986bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345678901234567890"), 0, 20, S("a12345678901234567890de")); 987bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345678901234567890"), 0, 21, S("a12345678901234567890de")); 988bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345678901234567890"), 1, 0, S("ade")); 989bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345678901234567890"), 1, 1, S("a2de")); 990bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345678901234567890"), 1, 9, S("a234567890de")); 991bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345678901234567890"), 1, 18, S("a234567890123456789de")); 992bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345678901234567890"), 1, 19, S("a2345678901234567890de")); 993bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345678901234567890"), 1, 20, S("a2345678901234567890de")); 994bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345678901234567890"), 10, 0, S("ade")); 995bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345678901234567890"), 10, 1, S("a1de")); 996bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345678901234567890"), 10, 5, S("a12345de")); 997bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345678901234567890"), 10, 9, S("a123456789de")); 998bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345678901234567890"), 10, 10, S("a1234567890de")); 999bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345678901234567890"), 10, 11, S("a1234567890de")); 1000bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345678901234567890"), 19, 0, S("ade")); 1001bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345678901234567890"), 19, 1, S("a0de")); 1002bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345678901234567890"), 19, 2, S("a0de")); 1003bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345678901234567890"), 20, 0, S("ade")); 1004bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345678901234567890"), 20, 1, S("ade")); 1005bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 2, S("12345678901234567890"), 21, 0, S("can't happen")); 1006bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S(""), 0, 0, S("ae")); 1007bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S(""), 0, 1, S("ae")); 1008bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S(""), 1, 0, S("can't happen")); 1009bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345"), 0, 0, S("ae")); 1010bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345"), 0, 1, S("a1e")); 1011bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345"), 0, 2, S("a12e")); 1012bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345"), 0, 4, S("a1234e")); 1013bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345"), 0, 5, S("a12345e")); 1014bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345"), 0, 6, S("a12345e")); 1015bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345"), 1, 0, S("ae")); 1016bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345"), 1, 1, S("a2e")); 1017bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345"), 1, 2, S("a23e")); 1018bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 1019bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 10209dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 1021bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test9() 1022bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 1023bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345"), 1, 3, S("a234e")); 1024bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345"), 1, 4, S("a2345e")); 1025bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345"), 1, 5, S("a2345e")); 1026bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345"), 2, 0, S("ae")); 1027bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345"), 2, 1, S("a3e")); 1028bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345"), 2, 2, S("a34e")); 1029bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345"), 2, 3, S("a345e")); 1030bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345"), 2, 4, S("a345e")); 1031bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345"), 4, 0, S("ae")); 1032bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345"), 4, 1, S("a5e")); 1033bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345"), 4, 2, S("a5e")); 1034bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345"), 5, 0, S("ae")); 1035bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345"), 5, 1, S("ae")); 1036bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345"), 6, 0, S("can't happen")); 1037bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("1234567890"), 0, 0, S("ae")); 1038bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("1234567890"), 0, 1, S("a1e")); 1039bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("1234567890"), 0, 5, S("a12345e")); 1040bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("1234567890"), 0, 9, S("a123456789e")); 1041bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("1234567890"), 0, 10, S("a1234567890e")); 1042bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("1234567890"), 0, 11, S("a1234567890e")); 1043bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("1234567890"), 1, 0, S("ae")); 1044bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("1234567890"), 1, 1, S("a2e")); 1045bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("1234567890"), 1, 4, S("a2345e")); 1046bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("1234567890"), 1, 8, S("a23456789e")); 1047bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("1234567890"), 1, 9, S("a234567890e")); 1048bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("1234567890"), 1, 10, S("a234567890e")); 1049bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("1234567890"), 5, 0, S("ae")); 1050bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("1234567890"), 5, 1, S("a6e")); 1051bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("1234567890"), 5, 2, S("a67e")); 1052bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("1234567890"), 5, 4, S("a6789e")); 1053bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("1234567890"), 5, 5, S("a67890e")); 1054bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("1234567890"), 5, 6, S("a67890e")); 1055bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("1234567890"), 9, 0, S("ae")); 1056bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("1234567890"), 9, 1, S("a0e")); 1057bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("1234567890"), 9, 2, S("a0e")); 1058bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("1234567890"), 10, 0, S("ae")); 1059bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("1234567890"), 10, 1, S("ae")); 1060bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("1234567890"), 11, 0, S("can't happen")); 1061bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345678901234567890"), 0, 0, S("ae")); 1062bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345678901234567890"), 0, 1, S("a1e")); 1063bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345678901234567890"), 0, 10, S("a1234567890e")); 1064bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345678901234567890"), 0, 19, S("a1234567890123456789e")); 1065bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345678901234567890"), 0, 20, S("a12345678901234567890e")); 1066bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345678901234567890"), 0, 21, S("a12345678901234567890e")); 1067bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345678901234567890"), 1, 0, S("ae")); 1068bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345678901234567890"), 1, 1, S("a2e")); 1069bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345678901234567890"), 1, 9, S("a234567890e")); 1070bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345678901234567890"), 1, 18, S("a234567890123456789e")); 1071bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345678901234567890"), 1, 19, S("a2345678901234567890e")); 1072bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345678901234567890"), 1, 20, S("a2345678901234567890e")); 1073bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345678901234567890"), 10, 0, S("ae")); 1074bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345678901234567890"), 10, 1, S("a1e")); 1075bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345678901234567890"), 10, 5, S("a12345e")); 1076bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345678901234567890"), 10, 9, S("a123456789e")); 1077bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345678901234567890"), 10, 10, S("a1234567890e")); 1078bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345678901234567890"), 10, 11, S("a1234567890e")); 1079bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345678901234567890"), 19, 0, S("ae")); 1080bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345678901234567890"), 19, 1, S("a0e")); 1081bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345678901234567890"), 19, 2, S("a0e")); 1082bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345678901234567890"), 20, 0, S("ae")); 1083bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345678901234567890"), 20, 1, S("ae")); 1084bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 3, S("12345678901234567890"), 21, 0, S("can't happen")); 1085bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S(""), 0, 0, S("a")); 1086bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S(""), 0, 1, S("a")); 1087bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S(""), 1, 0, S("can't happen")); 1088bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345"), 0, 0, S("a")); 1089bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345"), 0, 1, S("a1")); 1090bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345"), 0, 2, S("a12")); 1091bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345"), 0, 4, S("a1234")); 1092bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345"), 0, 5, S("a12345")); 1093bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345"), 0, 6, S("a12345")); 1094bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345"), 1, 0, S("a")); 1095bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345"), 1, 1, S("a2")); 1096bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345"), 1, 2, S("a23")); 1097bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345"), 1, 3, S("a234")); 1098bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345"), 1, 4, S("a2345")); 1099bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345"), 1, 5, S("a2345")); 1100bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345"), 2, 0, S("a")); 1101bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345"), 2, 1, S("a3")); 1102bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345"), 2, 2, S("a34")); 1103bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345"), 2, 3, S("a345")); 1104bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345"), 2, 4, S("a345")); 1105bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345"), 4, 0, S("a")); 1106bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345"), 4, 1, S("a5")); 1107bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345"), 4, 2, S("a5")); 1108bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345"), 5, 0, S("a")); 1109bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345"), 5, 1, S("a")); 1110bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345"), 6, 0, S("can't happen")); 1111bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("1234567890"), 0, 0, S("a")); 1112bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("1234567890"), 0, 1, S("a1")); 1113bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("1234567890"), 0, 5, S("a12345")); 1114bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("1234567890"), 0, 9, S("a123456789")); 1115bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("1234567890"), 0, 10, S("a1234567890")); 1116bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("1234567890"), 0, 11, S("a1234567890")); 1117bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("1234567890"), 1, 0, S("a")); 1118bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("1234567890"), 1, 1, S("a2")); 1119bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("1234567890"), 1, 4, S("a2345")); 1120bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("1234567890"), 1, 8, S("a23456789")); 1121bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("1234567890"), 1, 9, S("a234567890")); 1122bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("1234567890"), 1, 10, S("a234567890")); 1123bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 1124bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 11259dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 1126bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test10() 1127bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 1128bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("1234567890"), 5, 0, S("a")); 1129bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("1234567890"), 5, 1, S("a6")); 1130bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("1234567890"), 5, 2, S("a67")); 1131bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("1234567890"), 5, 4, S("a6789")); 1132bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("1234567890"), 5, 5, S("a67890")); 1133bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("1234567890"), 5, 6, S("a67890")); 1134bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("1234567890"), 9, 0, S("a")); 1135bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("1234567890"), 9, 1, S("a0")); 1136bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("1234567890"), 9, 2, S("a0")); 1137bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("1234567890"), 10, 0, S("a")); 1138bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("1234567890"), 10, 1, S("a")); 1139bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("1234567890"), 11, 0, S("can't happen")); 1140bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345678901234567890"), 0, 0, S("a")); 1141bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345678901234567890"), 0, 1, S("a1")); 1142bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345678901234567890"), 0, 10, S("a1234567890")); 1143bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345678901234567890"), 0, 19, S("a1234567890123456789")); 1144bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345678901234567890"), 0, 20, S("a12345678901234567890")); 1145bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345678901234567890"), 0, 21, S("a12345678901234567890")); 1146bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345678901234567890"), 1, 0, S("a")); 1147bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345678901234567890"), 1, 1, S("a2")); 1148bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345678901234567890"), 1, 9, S("a234567890")); 1149bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345678901234567890"), 1, 18, S("a234567890123456789")); 1150bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345678901234567890"), 1, 19, S("a2345678901234567890")); 1151bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345678901234567890"), 1, 20, S("a2345678901234567890")); 1152bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345678901234567890"), 10, 0, S("a")); 1153bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345678901234567890"), 10, 1, S("a1")); 1154bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345678901234567890"), 10, 5, S("a12345")); 1155bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345678901234567890"), 10, 9, S("a123456789")); 1156bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345678901234567890"), 10, 10, S("a1234567890")); 1157bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345678901234567890"), 10, 11, S("a1234567890")); 1158bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345678901234567890"), 19, 0, S("a")); 1159bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345678901234567890"), 19, 1, S("a0")); 1160bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345678901234567890"), 19, 2, S("a0")); 1161bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345678901234567890"), 20, 0, S("a")); 1162bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345678901234567890"), 20, 1, S("a")); 1163bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 4, S("12345678901234567890"), 21, 0, S("can't happen")); 1164bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S(""), 0, 0, S("a")); 1165bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S(""), 0, 1, S("a")); 1166bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S(""), 1, 0, S("can't happen")); 1167bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345"), 0, 0, S("a")); 1168bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345"), 0, 1, S("a1")); 1169bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345"), 0, 2, S("a12")); 1170bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345"), 0, 4, S("a1234")); 1171bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345"), 0, 5, S("a12345")); 1172bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345"), 0, 6, S("a12345")); 1173bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345"), 1, 0, S("a")); 1174bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345"), 1, 1, S("a2")); 1175bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345"), 1, 2, S("a23")); 1176bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345"), 1, 3, S("a234")); 1177bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345"), 1, 4, S("a2345")); 1178bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345"), 1, 5, S("a2345")); 1179bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345"), 2, 0, S("a")); 1180bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345"), 2, 1, S("a3")); 1181bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345"), 2, 2, S("a34")); 1182bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345"), 2, 3, S("a345")); 1183bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345"), 2, 4, S("a345")); 1184bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345"), 4, 0, S("a")); 1185bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345"), 4, 1, S("a5")); 1186bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345"), 4, 2, S("a5")); 1187bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345"), 5, 0, S("a")); 1188bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345"), 5, 1, S("a")); 1189bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345"), 6, 0, S("can't happen")); 1190bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("1234567890"), 0, 0, S("a")); 1191bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("1234567890"), 0, 1, S("a1")); 1192bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("1234567890"), 0, 5, S("a12345")); 1193bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("1234567890"), 0, 9, S("a123456789")); 1194bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("1234567890"), 0, 10, S("a1234567890")); 1195bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("1234567890"), 0, 11, S("a1234567890")); 1196bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("1234567890"), 1, 0, S("a")); 1197bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("1234567890"), 1, 1, S("a2")); 1198bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("1234567890"), 1, 4, S("a2345")); 1199bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("1234567890"), 1, 8, S("a23456789")); 1200bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("1234567890"), 1, 9, S("a234567890")); 1201bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("1234567890"), 1, 10, S("a234567890")); 1202bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("1234567890"), 5, 0, S("a")); 1203bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("1234567890"), 5, 1, S("a6")); 1204bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("1234567890"), 5, 2, S("a67")); 1205bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("1234567890"), 5, 4, S("a6789")); 1206bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("1234567890"), 5, 5, S("a67890")); 1207bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("1234567890"), 5, 6, S("a67890")); 1208bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("1234567890"), 9, 0, S("a")); 1209bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("1234567890"), 9, 1, S("a0")); 1210bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("1234567890"), 9, 2, S("a0")); 1211bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("1234567890"), 10, 0, S("a")); 1212bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("1234567890"), 10, 1, S("a")); 1213bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("1234567890"), 11, 0, S("can't happen")); 1214bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345678901234567890"), 0, 0, S("a")); 1215bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345678901234567890"), 0, 1, S("a1")); 1216bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345678901234567890"), 0, 10, S("a1234567890")); 1217bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345678901234567890"), 0, 19, S("a1234567890123456789")); 1218bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345678901234567890"), 0, 20, S("a12345678901234567890")); 1219bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345678901234567890"), 0, 21, S("a12345678901234567890")); 1220bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345678901234567890"), 1, 0, S("a")); 1221bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345678901234567890"), 1, 1, S("a2")); 1222bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345678901234567890"), 1, 9, S("a234567890")); 1223bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345678901234567890"), 1, 18, S("a234567890123456789")); 1224bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345678901234567890"), 1, 19, S("a2345678901234567890")); 1225bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345678901234567890"), 1, 20, S("a2345678901234567890")); 1226bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345678901234567890"), 10, 0, S("a")); 1227bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345678901234567890"), 10, 1, S("a1")); 1228bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 1229bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 12309dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 1231bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test11() 1232bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 1233bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345678901234567890"), 10, 5, S("a12345")); 1234bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345678901234567890"), 10, 9, S("a123456789")); 1235bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345678901234567890"), 10, 10, S("a1234567890")); 1236bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345678901234567890"), 10, 11, S("a1234567890")); 1237bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345678901234567890"), 19, 0, S("a")); 1238bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345678901234567890"), 19, 1, S("a0")); 1239bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345678901234567890"), 19, 2, S("a0")); 1240bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345678901234567890"), 20, 0, S("a")); 1241bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345678901234567890"), 20, 1, S("a")); 1242bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 1, 5, S("12345678901234567890"), 21, 0, S("can't happen")); 1243bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S(""), 0, 0, S("abcde")); 1244bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S(""), 0, 1, S("abcde")); 1245bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S(""), 1, 0, S("can't happen")); 1246bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345"), 0, 0, S("abcde")); 1247bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345"), 0, 1, S("ab1cde")); 1248bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345"), 0, 2, S("ab12cde")); 1249bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345"), 0, 4, S("ab1234cde")); 1250bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345"), 0, 5, S("ab12345cde")); 1251bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345"), 0, 6, S("ab12345cde")); 1252bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345"), 1, 0, S("abcde")); 1253bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345"), 1, 1, S("ab2cde")); 1254bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345"), 1, 2, S("ab23cde")); 1255bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345"), 1, 3, S("ab234cde")); 1256bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345"), 1, 4, S("ab2345cde")); 1257bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345"), 1, 5, S("ab2345cde")); 1258bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345"), 2, 0, S("abcde")); 1259bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345"), 2, 1, S("ab3cde")); 1260bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345"), 2, 2, S("ab34cde")); 1261bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345"), 2, 3, S("ab345cde")); 1262bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345"), 2, 4, S("ab345cde")); 1263bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345"), 4, 0, S("abcde")); 1264bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345"), 4, 1, S("ab5cde")); 1265bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345"), 4, 2, S("ab5cde")); 1266bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345"), 5, 0, S("abcde")); 1267bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345"), 5, 1, S("abcde")); 1268bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345"), 6, 0, S("can't happen")); 1269bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("1234567890"), 0, 0, S("abcde")); 1270bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("1234567890"), 0, 1, S("ab1cde")); 1271bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("1234567890"), 0, 5, S("ab12345cde")); 1272bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("1234567890"), 0, 9, S("ab123456789cde")); 1273bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("1234567890"), 0, 10, S("ab1234567890cde")); 1274bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("1234567890"), 0, 11, S("ab1234567890cde")); 1275bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("1234567890"), 1, 0, S("abcde")); 1276bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("1234567890"), 1, 1, S("ab2cde")); 1277bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("1234567890"), 1, 4, S("ab2345cde")); 1278bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("1234567890"), 1, 8, S("ab23456789cde")); 1279bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("1234567890"), 1, 9, S("ab234567890cde")); 1280bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("1234567890"), 1, 10, S("ab234567890cde")); 1281bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("1234567890"), 5, 0, S("abcde")); 1282bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("1234567890"), 5, 1, S("ab6cde")); 1283bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("1234567890"), 5, 2, S("ab67cde")); 1284bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("1234567890"), 5, 4, S("ab6789cde")); 1285bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("1234567890"), 5, 5, S("ab67890cde")); 1286bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("1234567890"), 5, 6, S("ab67890cde")); 1287bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("1234567890"), 9, 0, S("abcde")); 1288bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("1234567890"), 9, 1, S("ab0cde")); 1289bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("1234567890"), 9, 2, S("ab0cde")); 1290bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("1234567890"), 10, 0, S("abcde")); 1291bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("1234567890"), 10, 1, S("abcde")); 1292bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("1234567890"), 11, 0, S("can't happen")); 1293bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345678901234567890"), 0, 0, S("abcde")); 1294bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345678901234567890"), 0, 1, S("ab1cde")); 1295bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345678901234567890"), 0, 10, S("ab1234567890cde")); 1296bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345678901234567890"), 0, 19, S("ab1234567890123456789cde")); 1297bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345678901234567890"), 0, 20, S("ab12345678901234567890cde")); 1298bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345678901234567890"), 0, 21, S("ab12345678901234567890cde")); 1299bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345678901234567890"), 1, 0, S("abcde")); 1300bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345678901234567890"), 1, 1, S("ab2cde")); 1301bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345678901234567890"), 1, 9, S("ab234567890cde")); 1302bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345678901234567890"), 1, 18, S("ab234567890123456789cde")); 1303bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345678901234567890"), 1, 19, S("ab2345678901234567890cde")); 1304bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345678901234567890"), 1, 20, S("ab2345678901234567890cde")); 1305bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345678901234567890"), 10, 0, S("abcde")); 1306bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345678901234567890"), 10, 1, S("ab1cde")); 1307bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345678901234567890"), 10, 5, S("ab12345cde")); 1308bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345678901234567890"), 10, 9, S("ab123456789cde")); 1309bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345678901234567890"), 10, 10, S("ab1234567890cde")); 1310bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345678901234567890"), 10, 11, S("ab1234567890cde")); 1311bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345678901234567890"), 19, 0, S("abcde")); 1312bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345678901234567890"), 19, 1, S("ab0cde")); 1313bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345678901234567890"), 19, 2, S("ab0cde")); 1314bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345678901234567890"), 20, 0, S("abcde")); 1315bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345678901234567890"), 20, 1, S("abcde")); 1316bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 0, S("12345678901234567890"), 21, 0, S("can't happen")); 1317bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S(""), 0, 0, S("abde")); 1318bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S(""), 0, 1, S("abde")); 1319bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S(""), 1, 0, S("can't happen")); 1320bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345"), 0, 0, S("abde")); 1321bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345"), 0, 1, S("ab1de")); 1322bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345"), 0, 2, S("ab12de")); 1323bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345"), 0, 4, S("ab1234de")); 1324bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345"), 0, 5, S("ab12345de")); 1325bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345"), 0, 6, S("ab12345de")); 1326bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345"), 1, 0, S("abde")); 1327bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345"), 1, 1, S("ab2de")); 1328bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345"), 1, 2, S("ab23de")); 1329bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345"), 1, 3, S("ab234de")); 1330bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345"), 1, 4, S("ab2345de")); 1331bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345"), 1, 5, S("ab2345de")); 1332bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345"), 2, 0, S("abde")); 1333bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 1334bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 13359dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 1336bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test12() 1337bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 1338bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345"), 2, 1, S("ab3de")); 1339bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345"), 2, 2, S("ab34de")); 1340bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345"), 2, 3, S("ab345de")); 1341bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345"), 2, 4, S("ab345de")); 1342bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345"), 4, 0, S("abde")); 1343bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345"), 4, 1, S("ab5de")); 1344bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345"), 4, 2, S("ab5de")); 1345bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345"), 5, 0, S("abde")); 1346bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345"), 5, 1, S("abde")); 1347bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345"), 6, 0, S("can't happen")); 1348bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("1234567890"), 0, 0, S("abde")); 1349bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("1234567890"), 0, 1, S("ab1de")); 1350bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("1234567890"), 0, 5, S("ab12345de")); 1351bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("1234567890"), 0, 9, S("ab123456789de")); 1352bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("1234567890"), 0, 10, S("ab1234567890de")); 1353bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("1234567890"), 0, 11, S("ab1234567890de")); 1354bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("1234567890"), 1, 0, S("abde")); 1355bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("1234567890"), 1, 1, S("ab2de")); 1356bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("1234567890"), 1, 4, S("ab2345de")); 1357bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("1234567890"), 1, 8, S("ab23456789de")); 1358bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("1234567890"), 1, 9, S("ab234567890de")); 1359bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("1234567890"), 1, 10, S("ab234567890de")); 1360bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("1234567890"), 5, 0, S("abde")); 1361bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("1234567890"), 5, 1, S("ab6de")); 1362bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("1234567890"), 5, 2, S("ab67de")); 1363bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("1234567890"), 5, 4, S("ab6789de")); 1364bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("1234567890"), 5, 5, S("ab67890de")); 1365bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("1234567890"), 5, 6, S("ab67890de")); 1366bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("1234567890"), 9, 0, S("abde")); 1367bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("1234567890"), 9, 1, S("ab0de")); 1368bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("1234567890"), 9, 2, S("ab0de")); 1369bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("1234567890"), 10, 0, S("abde")); 1370bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("1234567890"), 10, 1, S("abde")); 1371bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("1234567890"), 11, 0, S("can't happen")); 1372bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345678901234567890"), 0, 0, S("abde")); 1373bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345678901234567890"), 0, 1, S("ab1de")); 1374bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345678901234567890"), 0, 10, S("ab1234567890de")); 1375bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345678901234567890"), 0, 19, S("ab1234567890123456789de")); 1376bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345678901234567890"), 0, 20, S("ab12345678901234567890de")); 1377bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345678901234567890"), 0, 21, S("ab12345678901234567890de")); 1378bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345678901234567890"), 1, 0, S("abde")); 1379bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345678901234567890"), 1, 1, S("ab2de")); 1380bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345678901234567890"), 1, 9, S("ab234567890de")); 1381bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345678901234567890"), 1, 18, S("ab234567890123456789de")); 1382bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345678901234567890"), 1, 19, S("ab2345678901234567890de")); 1383bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345678901234567890"), 1, 20, S("ab2345678901234567890de")); 1384bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345678901234567890"), 10, 0, S("abde")); 1385bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345678901234567890"), 10, 1, S("ab1de")); 1386bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345678901234567890"), 10, 5, S("ab12345de")); 1387bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345678901234567890"), 10, 9, S("ab123456789de")); 1388bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345678901234567890"), 10, 10, S("ab1234567890de")); 1389bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345678901234567890"), 10, 11, S("ab1234567890de")); 1390bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345678901234567890"), 19, 0, S("abde")); 1391bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345678901234567890"), 19, 1, S("ab0de")); 1392bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345678901234567890"), 19, 2, S("ab0de")); 1393bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345678901234567890"), 20, 0, S("abde")); 1394bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345678901234567890"), 20, 1, S("abde")); 1395bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 1, S("12345678901234567890"), 21, 0, S("can't happen")); 1396bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S(""), 0, 0, S("abe")); 1397bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S(""), 0, 1, S("abe")); 1398bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S(""), 1, 0, S("can't happen")); 1399bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345"), 0, 0, S("abe")); 1400bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345"), 0, 1, S("ab1e")); 1401bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345"), 0, 2, S("ab12e")); 1402bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345"), 0, 4, S("ab1234e")); 1403bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345"), 0, 5, S("ab12345e")); 1404bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345"), 0, 6, S("ab12345e")); 1405bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345"), 1, 0, S("abe")); 1406bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345"), 1, 1, S("ab2e")); 1407bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345"), 1, 2, S("ab23e")); 1408bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345"), 1, 3, S("ab234e")); 1409bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345"), 1, 4, S("ab2345e")); 1410bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345"), 1, 5, S("ab2345e")); 1411bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345"), 2, 0, S("abe")); 1412bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345"), 2, 1, S("ab3e")); 1413bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345"), 2, 2, S("ab34e")); 1414bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345"), 2, 3, S("ab345e")); 1415bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345"), 2, 4, S("ab345e")); 1416bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345"), 4, 0, S("abe")); 1417bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345"), 4, 1, S("ab5e")); 1418bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345"), 4, 2, S("ab5e")); 1419bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345"), 5, 0, S("abe")); 1420bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345"), 5, 1, S("abe")); 1421bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345"), 6, 0, S("can't happen")); 1422bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("1234567890"), 0, 0, S("abe")); 1423bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("1234567890"), 0, 1, S("ab1e")); 1424bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("1234567890"), 0, 5, S("ab12345e")); 1425bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("1234567890"), 0, 9, S("ab123456789e")); 1426bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("1234567890"), 0, 10, S("ab1234567890e")); 1427bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("1234567890"), 0, 11, S("ab1234567890e")); 1428bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("1234567890"), 1, 0, S("abe")); 1429bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("1234567890"), 1, 1, S("ab2e")); 1430bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("1234567890"), 1, 4, S("ab2345e")); 1431bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("1234567890"), 1, 8, S("ab23456789e")); 1432bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("1234567890"), 1, 9, S("ab234567890e")); 1433bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("1234567890"), 1, 10, S("ab234567890e")); 1434bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("1234567890"), 5, 0, S("abe")); 1435bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("1234567890"), 5, 1, S("ab6e")); 1436bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("1234567890"), 5, 2, S("ab67e")); 1437bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("1234567890"), 5, 4, S("ab6789e")); 1438bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 1439bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 14409dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 1441bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test13() 1442bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 1443bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("1234567890"), 5, 5, S("ab67890e")); 1444bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("1234567890"), 5, 6, S("ab67890e")); 1445bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("1234567890"), 9, 0, S("abe")); 1446bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("1234567890"), 9, 1, S("ab0e")); 1447bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("1234567890"), 9, 2, S("ab0e")); 1448bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("1234567890"), 10, 0, S("abe")); 1449bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("1234567890"), 10, 1, S("abe")); 1450bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("1234567890"), 11, 0, S("can't happen")); 1451bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345678901234567890"), 0, 0, S("abe")); 1452bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345678901234567890"), 0, 1, S("ab1e")); 1453bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345678901234567890"), 0, 10, S("ab1234567890e")); 1454bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345678901234567890"), 0, 19, S("ab1234567890123456789e")); 1455bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345678901234567890"), 0, 20, S("ab12345678901234567890e")); 1456bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345678901234567890"), 0, 21, S("ab12345678901234567890e")); 1457bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345678901234567890"), 1, 0, S("abe")); 1458bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345678901234567890"), 1, 1, S("ab2e")); 1459bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345678901234567890"), 1, 9, S("ab234567890e")); 1460bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345678901234567890"), 1, 18, S("ab234567890123456789e")); 1461bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345678901234567890"), 1, 19, S("ab2345678901234567890e")); 1462bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345678901234567890"), 1, 20, S("ab2345678901234567890e")); 1463bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345678901234567890"), 10, 0, S("abe")); 1464bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345678901234567890"), 10, 1, S("ab1e")); 1465bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345678901234567890"), 10, 5, S("ab12345e")); 1466bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345678901234567890"), 10, 9, S("ab123456789e")); 1467bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345678901234567890"), 10, 10, S("ab1234567890e")); 1468bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345678901234567890"), 10, 11, S("ab1234567890e")); 1469bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345678901234567890"), 19, 0, S("abe")); 1470bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345678901234567890"), 19, 1, S("ab0e")); 1471bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345678901234567890"), 19, 2, S("ab0e")); 1472bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345678901234567890"), 20, 0, S("abe")); 1473bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345678901234567890"), 20, 1, S("abe")); 1474bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 2, S("12345678901234567890"), 21, 0, S("can't happen")); 1475bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S(""), 0, 0, S("ab")); 1476bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S(""), 0, 1, S("ab")); 1477bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S(""), 1, 0, S("can't happen")); 1478bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345"), 0, 0, S("ab")); 1479bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345"), 0, 1, S("ab1")); 1480bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345"), 0, 2, S("ab12")); 1481bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345"), 0, 4, S("ab1234")); 1482bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345"), 0, 5, S("ab12345")); 1483bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345"), 0, 6, S("ab12345")); 1484bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345"), 1, 0, S("ab")); 1485bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345"), 1, 1, S("ab2")); 1486bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345"), 1, 2, S("ab23")); 1487bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345"), 1, 3, S("ab234")); 1488bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345"), 1, 4, S("ab2345")); 1489bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345"), 1, 5, S("ab2345")); 1490bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345"), 2, 0, S("ab")); 1491bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345"), 2, 1, S("ab3")); 1492bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345"), 2, 2, S("ab34")); 1493bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345"), 2, 3, S("ab345")); 1494bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345"), 2, 4, S("ab345")); 1495bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345"), 4, 0, S("ab")); 1496bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345"), 4, 1, S("ab5")); 1497bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345"), 4, 2, S("ab5")); 1498bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345"), 5, 0, S("ab")); 1499bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345"), 5, 1, S("ab")); 1500bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345"), 6, 0, S("can't happen")); 1501bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("1234567890"), 0, 0, S("ab")); 1502bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("1234567890"), 0, 1, S("ab1")); 1503bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("1234567890"), 0, 5, S("ab12345")); 1504bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("1234567890"), 0, 9, S("ab123456789")); 1505bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("1234567890"), 0, 10, S("ab1234567890")); 1506bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("1234567890"), 0, 11, S("ab1234567890")); 1507bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("1234567890"), 1, 0, S("ab")); 1508bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("1234567890"), 1, 1, S("ab2")); 1509bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("1234567890"), 1, 4, S("ab2345")); 1510bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("1234567890"), 1, 8, S("ab23456789")); 1511bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("1234567890"), 1, 9, S("ab234567890")); 1512bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("1234567890"), 1, 10, S("ab234567890")); 1513bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("1234567890"), 5, 0, S("ab")); 1514bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("1234567890"), 5, 1, S("ab6")); 1515bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("1234567890"), 5, 2, S("ab67")); 1516bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("1234567890"), 5, 4, S("ab6789")); 1517bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("1234567890"), 5, 5, S("ab67890")); 1518bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("1234567890"), 5, 6, S("ab67890")); 1519bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("1234567890"), 9, 0, S("ab")); 1520bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("1234567890"), 9, 1, S("ab0")); 1521bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("1234567890"), 9, 2, S("ab0")); 1522bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("1234567890"), 10, 0, S("ab")); 1523bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("1234567890"), 10, 1, S("ab")); 1524bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("1234567890"), 11, 0, S("can't happen")); 1525bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345678901234567890"), 0, 0, S("ab")); 1526bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345678901234567890"), 0, 1, S("ab1")); 1527bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345678901234567890"), 0, 10, S("ab1234567890")); 1528bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345678901234567890"), 0, 19, S("ab1234567890123456789")); 1529bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345678901234567890"), 0, 20, S("ab12345678901234567890")); 1530bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345678901234567890"), 0, 21, S("ab12345678901234567890")); 1531bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345678901234567890"), 1, 0, S("ab")); 1532bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345678901234567890"), 1, 1, S("ab2")); 1533bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345678901234567890"), 1, 9, S("ab234567890")); 1534bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345678901234567890"), 1, 18, S("ab234567890123456789")); 1535bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345678901234567890"), 1, 19, S("ab2345678901234567890")); 1536bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345678901234567890"), 1, 20, S("ab2345678901234567890")); 1537bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345678901234567890"), 10, 0, S("ab")); 1538bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345678901234567890"), 10, 1, S("ab1")); 1539bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345678901234567890"), 10, 5, S("ab12345")); 1540bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345678901234567890"), 10, 9, S("ab123456789")); 1541bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345678901234567890"), 10, 10, S("ab1234567890")); 1542bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345678901234567890"), 10, 11, S("ab1234567890")); 1543bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 1544bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 15459dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 1546bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test14() 1547bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 1548bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345678901234567890"), 19, 0, S("ab")); 1549bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345678901234567890"), 19, 1, S("ab0")); 1550bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345678901234567890"), 19, 2, S("ab0")); 1551bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345678901234567890"), 20, 0, S("ab")); 1552bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345678901234567890"), 20, 1, S("ab")); 1553bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 3, S("12345678901234567890"), 21, 0, S("can't happen")); 1554bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S(""), 0, 0, S("ab")); 1555bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S(""), 0, 1, S("ab")); 1556bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S(""), 1, 0, S("can't happen")); 1557bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345"), 0, 0, S("ab")); 1558bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345"), 0, 1, S("ab1")); 1559bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345"), 0, 2, S("ab12")); 1560bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345"), 0, 4, S("ab1234")); 1561bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345"), 0, 5, S("ab12345")); 1562bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345"), 0, 6, S("ab12345")); 1563bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345"), 1, 0, S("ab")); 1564bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345"), 1, 1, S("ab2")); 1565bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345"), 1, 2, S("ab23")); 1566bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345"), 1, 3, S("ab234")); 1567bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345"), 1, 4, S("ab2345")); 1568bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345"), 1, 5, S("ab2345")); 1569bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345"), 2, 0, S("ab")); 1570bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345"), 2, 1, S("ab3")); 1571bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345"), 2, 2, S("ab34")); 1572bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345"), 2, 3, S("ab345")); 1573bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345"), 2, 4, S("ab345")); 1574bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345"), 4, 0, S("ab")); 1575bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345"), 4, 1, S("ab5")); 1576bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345"), 4, 2, S("ab5")); 1577bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345"), 5, 0, S("ab")); 1578bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345"), 5, 1, S("ab")); 1579bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345"), 6, 0, S("can't happen")); 1580bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("1234567890"), 0, 0, S("ab")); 1581bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("1234567890"), 0, 1, S("ab1")); 1582bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("1234567890"), 0, 5, S("ab12345")); 1583bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("1234567890"), 0, 9, S("ab123456789")); 1584bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("1234567890"), 0, 10, S("ab1234567890")); 1585bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("1234567890"), 0, 11, S("ab1234567890")); 1586bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("1234567890"), 1, 0, S("ab")); 1587bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("1234567890"), 1, 1, S("ab2")); 1588bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("1234567890"), 1, 4, S("ab2345")); 1589bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("1234567890"), 1, 8, S("ab23456789")); 1590bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("1234567890"), 1, 9, S("ab234567890")); 1591bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("1234567890"), 1, 10, S("ab234567890")); 1592bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("1234567890"), 5, 0, S("ab")); 1593bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("1234567890"), 5, 1, S("ab6")); 1594bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("1234567890"), 5, 2, S("ab67")); 1595bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("1234567890"), 5, 4, S("ab6789")); 1596bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("1234567890"), 5, 5, S("ab67890")); 1597bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("1234567890"), 5, 6, S("ab67890")); 1598bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("1234567890"), 9, 0, S("ab")); 1599bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("1234567890"), 9, 1, S("ab0")); 1600bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("1234567890"), 9, 2, S("ab0")); 1601bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("1234567890"), 10, 0, S("ab")); 1602bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("1234567890"), 10, 1, S("ab")); 1603bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("1234567890"), 11, 0, S("can't happen")); 1604bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345678901234567890"), 0, 0, S("ab")); 1605bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345678901234567890"), 0, 1, S("ab1")); 1606bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345678901234567890"), 0, 10, S("ab1234567890")); 1607bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345678901234567890"), 0, 19, S("ab1234567890123456789")); 1608bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345678901234567890"), 0, 20, S("ab12345678901234567890")); 1609bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345678901234567890"), 0, 21, S("ab12345678901234567890")); 1610bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345678901234567890"), 1, 0, S("ab")); 1611bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345678901234567890"), 1, 1, S("ab2")); 1612bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345678901234567890"), 1, 9, S("ab234567890")); 1613bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345678901234567890"), 1, 18, S("ab234567890123456789")); 1614bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345678901234567890"), 1, 19, S("ab2345678901234567890")); 1615bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345678901234567890"), 1, 20, S("ab2345678901234567890")); 1616bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345678901234567890"), 10, 0, S("ab")); 1617bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345678901234567890"), 10, 1, S("ab1")); 1618bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345678901234567890"), 10, 5, S("ab12345")); 1619bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345678901234567890"), 10, 9, S("ab123456789")); 1620bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345678901234567890"), 10, 10, S("ab1234567890")); 1621bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345678901234567890"), 10, 11, S("ab1234567890")); 1622bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345678901234567890"), 19, 0, S("ab")); 1623bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345678901234567890"), 19, 1, S("ab0")); 1624bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345678901234567890"), 19, 2, S("ab0")); 1625bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345678901234567890"), 20, 0, S("ab")); 1626bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345678901234567890"), 20, 1, S("ab")); 1627bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 2, 4, S("12345678901234567890"), 21, 0, S("can't happen")); 1628bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S(""), 0, 0, S("abcde")); 1629bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S(""), 0, 1, S("abcde")); 1630bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S(""), 1, 0, S("can't happen")); 1631bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345"), 0, 0, S("abcde")); 1632bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345"), 0, 1, S("abcd1e")); 1633bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345"), 0, 2, S("abcd12e")); 1634bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345"), 0, 4, S("abcd1234e")); 1635bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345"), 0, 5, S("abcd12345e")); 1636bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345"), 0, 6, S("abcd12345e")); 1637bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345"), 1, 0, S("abcde")); 1638bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345"), 1, 1, S("abcd2e")); 1639bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345"), 1, 2, S("abcd23e")); 1640bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345"), 1, 3, S("abcd234e")); 1641bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345"), 1, 4, S("abcd2345e")); 1642bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345"), 1, 5, S("abcd2345e")); 1643bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345"), 2, 0, S("abcde")); 1644bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345"), 2, 1, S("abcd3e")); 1645bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345"), 2, 2, S("abcd34e")); 1646bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345"), 2, 3, S("abcd345e")); 1647bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345"), 2, 4, S("abcd345e")); 1648bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 1649bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 16509dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 1651bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test15() 1652bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 1653bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345"), 4, 0, S("abcde")); 1654bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345"), 4, 1, S("abcd5e")); 1655bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345"), 4, 2, S("abcd5e")); 1656bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345"), 5, 0, S("abcde")); 1657bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345"), 5, 1, S("abcde")); 1658bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345"), 6, 0, S("can't happen")); 1659bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("1234567890"), 0, 0, S("abcde")); 1660bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("1234567890"), 0, 1, S("abcd1e")); 1661bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("1234567890"), 0, 5, S("abcd12345e")); 1662bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("1234567890"), 0, 9, S("abcd123456789e")); 1663bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("1234567890"), 0, 10, S("abcd1234567890e")); 1664bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("1234567890"), 0, 11, S("abcd1234567890e")); 1665bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("1234567890"), 1, 0, S("abcde")); 1666bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("1234567890"), 1, 1, S("abcd2e")); 1667bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("1234567890"), 1, 4, S("abcd2345e")); 1668bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("1234567890"), 1, 8, S("abcd23456789e")); 1669bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("1234567890"), 1, 9, S("abcd234567890e")); 1670bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("1234567890"), 1, 10, S("abcd234567890e")); 1671bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("1234567890"), 5, 0, S("abcde")); 1672bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("1234567890"), 5, 1, S("abcd6e")); 1673bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("1234567890"), 5, 2, S("abcd67e")); 1674bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("1234567890"), 5, 4, S("abcd6789e")); 1675bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("1234567890"), 5, 5, S("abcd67890e")); 1676bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("1234567890"), 5, 6, S("abcd67890e")); 1677bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("1234567890"), 9, 0, S("abcde")); 1678bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("1234567890"), 9, 1, S("abcd0e")); 1679bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("1234567890"), 9, 2, S("abcd0e")); 1680bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("1234567890"), 10, 0, S("abcde")); 1681bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("1234567890"), 10, 1, S("abcde")); 1682bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("1234567890"), 11, 0, S("can't happen")); 1683bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345678901234567890"), 0, 0, S("abcde")); 1684bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345678901234567890"), 0, 1, S("abcd1e")); 1685bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345678901234567890"), 0, 10, S("abcd1234567890e")); 1686bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345678901234567890"), 0, 19, S("abcd1234567890123456789e")); 1687bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345678901234567890"), 0, 20, S("abcd12345678901234567890e")); 1688bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345678901234567890"), 0, 21, S("abcd12345678901234567890e")); 1689bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345678901234567890"), 1, 0, S("abcde")); 1690bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345678901234567890"), 1, 1, S("abcd2e")); 1691bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345678901234567890"), 1, 9, S("abcd234567890e")); 1692bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345678901234567890"), 1, 18, S("abcd234567890123456789e")); 1693bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345678901234567890"), 1, 19, S("abcd2345678901234567890e")); 1694bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345678901234567890"), 1, 20, S("abcd2345678901234567890e")); 1695bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345678901234567890"), 10, 0, S("abcde")); 1696bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345678901234567890"), 10, 1, S("abcd1e")); 1697bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345678901234567890"), 10, 5, S("abcd12345e")); 1698bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345678901234567890"), 10, 9, S("abcd123456789e")); 1699bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345678901234567890"), 10, 10, S("abcd1234567890e")); 1700bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345678901234567890"), 10, 11, S("abcd1234567890e")); 1701bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345678901234567890"), 19, 0, S("abcde")); 1702bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345678901234567890"), 19, 1, S("abcd0e")); 1703bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345678901234567890"), 19, 2, S("abcd0e")); 1704bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345678901234567890"), 20, 0, S("abcde")); 1705bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345678901234567890"), 20, 1, S("abcde")); 1706bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 0, S("12345678901234567890"), 21, 0, S("can't happen")); 1707bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S(""), 0, 0, S("abcd")); 1708bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S(""), 0, 1, S("abcd")); 1709bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S(""), 1, 0, S("can't happen")); 1710bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345"), 0, 0, S("abcd")); 1711bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345"), 0, 1, S("abcd1")); 1712bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345"), 0, 2, S("abcd12")); 1713bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345"), 0, 4, S("abcd1234")); 1714bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345"), 0, 5, S("abcd12345")); 1715bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345"), 0, 6, S("abcd12345")); 1716bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345"), 1, 0, S("abcd")); 1717bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345"), 1, 1, S("abcd2")); 1718bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345"), 1, 2, S("abcd23")); 1719bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345"), 1, 3, S("abcd234")); 1720bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345"), 1, 4, S("abcd2345")); 1721bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345"), 1, 5, S("abcd2345")); 1722bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345"), 2, 0, S("abcd")); 1723bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345"), 2, 1, S("abcd3")); 1724bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345"), 2, 2, S("abcd34")); 1725bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345"), 2, 3, S("abcd345")); 1726bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345"), 2, 4, S("abcd345")); 1727bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345"), 4, 0, S("abcd")); 1728bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345"), 4, 1, S("abcd5")); 1729bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345"), 4, 2, S("abcd5")); 1730bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345"), 5, 0, S("abcd")); 1731bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345"), 5, 1, S("abcd")); 1732bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345"), 6, 0, S("can't happen")); 1733bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("1234567890"), 0, 0, S("abcd")); 1734bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("1234567890"), 0, 1, S("abcd1")); 1735bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("1234567890"), 0, 5, S("abcd12345")); 1736bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("1234567890"), 0, 9, S("abcd123456789")); 1737bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("1234567890"), 0, 10, S("abcd1234567890")); 1738bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("1234567890"), 0, 11, S("abcd1234567890")); 1739bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("1234567890"), 1, 0, S("abcd")); 1740bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("1234567890"), 1, 1, S("abcd2")); 1741bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("1234567890"), 1, 4, S("abcd2345")); 1742bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("1234567890"), 1, 8, S("abcd23456789")); 1743bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("1234567890"), 1, 9, S("abcd234567890")); 1744bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("1234567890"), 1, 10, S("abcd234567890")); 1745bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("1234567890"), 5, 0, S("abcd")); 1746bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("1234567890"), 5, 1, S("abcd6")); 1747bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("1234567890"), 5, 2, S("abcd67")); 1748bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("1234567890"), 5, 4, S("abcd6789")); 1749bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("1234567890"), 5, 5, S("abcd67890")); 1750bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("1234567890"), 5, 6, S("abcd67890")); 1751bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("1234567890"), 9, 0, S("abcd")); 1752bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("1234567890"), 9, 1, S("abcd0")); 1753bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 1754bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 17559dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 1756bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test16() 1757bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 1758bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("1234567890"), 9, 2, S("abcd0")); 1759bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("1234567890"), 10, 0, S("abcd")); 1760bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("1234567890"), 10, 1, S("abcd")); 1761bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("1234567890"), 11, 0, S("can't happen")); 1762bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345678901234567890"), 0, 0, S("abcd")); 1763bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345678901234567890"), 0, 1, S("abcd1")); 1764bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345678901234567890"), 0, 10, S("abcd1234567890")); 1765bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345678901234567890"), 0, 19, S("abcd1234567890123456789")); 1766bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345678901234567890"), 0, 20, S("abcd12345678901234567890")); 1767bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345678901234567890"), 0, 21, S("abcd12345678901234567890")); 1768bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345678901234567890"), 1, 0, S("abcd")); 1769bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345678901234567890"), 1, 1, S("abcd2")); 1770bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345678901234567890"), 1, 9, S("abcd234567890")); 1771bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345678901234567890"), 1, 18, S("abcd234567890123456789")); 1772bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345678901234567890"), 1, 19, S("abcd2345678901234567890")); 1773bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345678901234567890"), 1, 20, S("abcd2345678901234567890")); 1774bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345678901234567890"), 10, 0, S("abcd")); 1775bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345678901234567890"), 10, 1, S("abcd1")); 1776bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345678901234567890"), 10, 5, S("abcd12345")); 1777bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345678901234567890"), 10, 9, S("abcd123456789")); 1778bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345678901234567890"), 10, 10, S("abcd1234567890")); 1779bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345678901234567890"), 10, 11, S("abcd1234567890")); 1780bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345678901234567890"), 19, 0, S("abcd")); 1781bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345678901234567890"), 19, 1, S("abcd0")); 1782bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345678901234567890"), 19, 2, S("abcd0")); 1783bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345678901234567890"), 20, 0, S("abcd")); 1784bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345678901234567890"), 20, 1, S("abcd")); 1785bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 1, S("12345678901234567890"), 21, 0, S("can't happen")); 1786bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S(""), 0, 0, S("abcd")); 1787bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S(""), 0, 1, S("abcd")); 1788bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S(""), 1, 0, S("can't happen")); 1789bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345"), 0, 0, S("abcd")); 1790bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345"), 0, 1, S("abcd1")); 1791bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345"), 0, 2, S("abcd12")); 1792bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345"), 0, 4, S("abcd1234")); 1793bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345"), 0, 5, S("abcd12345")); 1794bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345"), 0, 6, S("abcd12345")); 1795bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345"), 1, 0, S("abcd")); 1796bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345"), 1, 1, S("abcd2")); 1797bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345"), 1, 2, S("abcd23")); 1798bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345"), 1, 3, S("abcd234")); 1799bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345"), 1, 4, S("abcd2345")); 1800bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345"), 1, 5, S("abcd2345")); 1801bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345"), 2, 0, S("abcd")); 1802bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345"), 2, 1, S("abcd3")); 1803bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345"), 2, 2, S("abcd34")); 1804bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345"), 2, 3, S("abcd345")); 1805bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345"), 2, 4, S("abcd345")); 1806bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345"), 4, 0, S("abcd")); 1807bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345"), 4, 1, S("abcd5")); 1808bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345"), 4, 2, S("abcd5")); 1809bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345"), 5, 0, S("abcd")); 1810bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345"), 5, 1, S("abcd")); 1811bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345"), 6, 0, S("can't happen")); 1812bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("1234567890"), 0, 0, S("abcd")); 1813bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("1234567890"), 0, 1, S("abcd1")); 1814bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("1234567890"), 0, 5, S("abcd12345")); 1815bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("1234567890"), 0, 9, S("abcd123456789")); 1816bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("1234567890"), 0, 10, S("abcd1234567890")); 1817bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("1234567890"), 0, 11, S("abcd1234567890")); 1818bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("1234567890"), 1, 0, S("abcd")); 1819bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("1234567890"), 1, 1, S("abcd2")); 1820bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("1234567890"), 1, 4, S("abcd2345")); 1821bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("1234567890"), 1, 8, S("abcd23456789")); 1822bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("1234567890"), 1, 9, S("abcd234567890")); 1823bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("1234567890"), 1, 10, S("abcd234567890")); 1824bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("1234567890"), 5, 0, S("abcd")); 1825bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("1234567890"), 5, 1, S("abcd6")); 1826bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("1234567890"), 5, 2, S("abcd67")); 1827bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("1234567890"), 5, 4, S("abcd6789")); 1828bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("1234567890"), 5, 5, S("abcd67890")); 1829bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("1234567890"), 5, 6, S("abcd67890")); 1830bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("1234567890"), 9, 0, S("abcd")); 1831bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("1234567890"), 9, 1, S("abcd0")); 1832bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("1234567890"), 9, 2, S("abcd0")); 1833bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("1234567890"), 10, 0, S("abcd")); 1834bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("1234567890"), 10, 1, S("abcd")); 1835bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("1234567890"), 11, 0, S("can't happen")); 1836bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345678901234567890"), 0, 0, S("abcd")); 1837bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345678901234567890"), 0, 1, S("abcd1")); 1838bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345678901234567890"), 0, 10, S("abcd1234567890")); 1839bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345678901234567890"), 0, 19, S("abcd1234567890123456789")); 1840bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345678901234567890"), 0, 20, S("abcd12345678901234567890")); 1841bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345678901234567890"), 0, 21, S("abcd12345678901234567890")); 1842bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345678901234567890"), 1, 0, S("abcd")); 1843bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345678901234567890"), 1, 1, S("abcd2")); 1844bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345678901234567890"), 1, 9, S("abcd234567890")); 1845bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345678901234567890"), 1, 18, S("abcd234567890123456789")); 1846bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345678901234567890"), 1, 19, S("abcd2345678901234567890")); 1847bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345678901234567890"), 1, 20, S("abcd2345678901234567890")); 1848bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345678901234567890"), 10, 0, S("abcd")); 1849bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345678901234567890"), 10, 1, S("abcd1")); 1850bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345678901234567890"), 10, 5, S("abcd12345")); 1851bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345678901234567890"), 10, 9, S("abcd123456789")); 1852bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345678901234567890"), 10, 10, S("abcd1234567890")); 1853bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345678901234567890"), 10, 11, S("abcd1234567890")); 1854bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345678901234567890"), 19, 0, S("abcd")); 1855bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345678901234567890"), 19, 1, S("abcd0")); 1856bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345678901234567890"), 19, 2, S("abcd0")); 1857bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345678901234567890"), 20, 0, S("abcd")); 1858bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 1859bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 18609dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 1861bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test17() 1862bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 1863bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345678901234567890"), 20, 1, S("abcd")); 1864bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 4, 2, S("12345678901234567890"), 21, 0, S("can't happen")); 1865bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S(""), 0, 0, S("abcde")); 1866bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S(""), 0, 1, S("abcde")); 1867bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S(""), 1, 0, S("can't happen")); 1868bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345"), 0, 0, S("abcde")); 1869bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345"), 0, 1, S("abcde1")); 1870bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345"), 0, 2, S("abcde12")); 1871bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345"), 0, 4, S("abcde1234")); 1872bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345"), 0, 5, S("abcde12345")); 1873bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345"), 0, 6, S("abcde12345")); 1874bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345"), 1, 0, S("abcde")); 1875bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345"), 1, 1, S("abcde2")); 1876bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345"), 1, 2, S("abcde23")); 1877bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345"), 1, 3, S("abcde234")); 1878bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345"), 1, 4, S("abcde2345")); 1879bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345"), 1, 5, S("abcde2345")); 1880bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345"), 2, 0, S("abcde")); 1881bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345"), 2, 1, S("abcde3")); 1882bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345"), 2, 2, S("abcde34")); 1883bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345"), 2, 3, S("abcde345")); 1884bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345"), 2, 4, S("abcde345")); 1885bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345"), 4, 0, S("abcde")); 1886bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345"), 4, 1, S("abcde5")); 1887bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345"), 4, 2, S("abcde5")); 1888bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345"), 5, 0, S("abcde")); 1889bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345"), 5, 1, S("abcde")); 1890bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345"), 6, 0, S("can't happen")); 1891bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("1234567890"), 0, 0, S("abcde")); 1892bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("1234567890"), 0, 1, S("abcde1")); 1893bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("1234567890"), 0, 5, S("abcde12345")); 1894bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("1234567890"), 0, 9, S("abcde123456789")); 1895bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("1234567890"), 0, 10, S("abcde1234567890")); 1896bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("1234567890"), 0, 11, S("abcde1234567890")); 1897bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("1234567890"), 1, 0, S("abcde")); 1898bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("1234567890"), 1, 1, S("abcde2")); 1899bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("1234567890"), 1, 4, S("abcde2345")); 1900bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("1234567890"), 1, 8, S("abcde23456789")); 1901bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("1234567890"), 1, 9, S("abcde234567890")); 1902bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("1234567890"), 1, 10, S("abcde234567890")); 1903bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("1234567890"), 5, 0, S("abcde")); 1904bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("1234567890"), 5, 1, S("abcde6")); 1905bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("1234567890"), 5, 2, S("abcde67")); 1906bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("1234567890"), 5, 4, S("abcde6789")); 1907bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("1234567890"), 5, 5, S("abcde67890")); 1908bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("1234567890"), 5, 6, S("abcde67890")); 1909bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("1234567890"), 9, 0, S("abcde")); 1910bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("1234567890"), 9, 1, S("abcde0")); 1911bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("1234567890"), 9, 2, S("abcde0")); 1912bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("1234567890"), 10, 0, S("abcde")); 1913bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("1234567890"), 10, 1, S("abcde")); 1914bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("1234567890"), 11, 0, S("can't happen")); 1915bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345678901234567890"), 0, 0, S("abcde")); 1916bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345678901234567890"), 0, 1, S("abcde1")); 1917bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345678901234567890"), 0, 10, S("abcde1234567890")); 1918bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345678901234567890"), 0, 19, S("abcde1234567890123456789")); 1919bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345678901234567890"), 0, 20, S("abcde12345678901234567890")); 1920bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345678901234567890"), 0, 21, S("abcde12345678901234567890")); 1921bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345678901234567890"), 1, 0, S("abcde")); 1922bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345678901234567890"), 1, 1, S("abcde2")); 1923bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345678901234567890"), 1, 9, S("abcde234567890")); 1924bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345678901234567890"), 1, 18, S("abcde234567890123456789")); 1925bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345678901234567890"), 1, 19, S("abcde2345678901234567890")); 1926bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345678901234567890"), 1, 20, S("abcde2345678901234567890")); 1927bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345678901234567890"), 10, 0, S("abcde")); 1928bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345678901234567890"), 10, 1, S("abcde1")); 1929bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345678901234567890"), 10, 5, S("abcde12345")); 1930bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345678901234567890"), 10, 9, S("abcde123456789")); 1931bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345678901234567890"), 10, 10, S("abcde1234567890")); 1932bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345678901234567890"), 10, 11, S("abcde1234567890")); 1933bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345678901234567890"), 19, 0, S("abcde")); 1934bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345678901234567890"), 19, 1, S("abcde0")); 1935bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345678901234567890"), 19, 2, S("abcde0")); 1936bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345678901234567890"), 20, 0, S("abcde")); 1937bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345678901234567890"), 20, 1, S("abcde")); 1938bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 0, S("12345678901234567890"), 21, 0, S("can't happen")); 1939bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S(""), 0, 0, S("abcde")); 1940bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S(""), 0, 1, S("abcde")); 1941bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S(""), 1, 0, S("can't happen")); 1942bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345"), 0, 0, S("abcde")); 1943bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345"), 0, 1, S("abcde1")); 1944bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345"), 0, 2, S("abcde12")); 1945bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345"), 0, 4, S("abcde1234")); 1946bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345"), 0, 5, S("abcde12345")); 1947bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345"), 0, 6, S("abcde12345")); 1948bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345"), 1, 0, S("abcde")); 1949bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345"), 1, 1, S("abcde2")); 1950bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345"), 1, 2, S("abcde23")); 1951bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345"), 1, 3, S("abcde234")); 1952bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345"), 1, 4, S("abcde2345")); 1953bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345"), 1, 5, S("abcde2345")); 1954bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345"), 2, 0, S("abcde")); 1955bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345"), 2, 1, S("abcde3")); 1956bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345"), 2, 2, S("abcde34")); 1957bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345"), 2, 3, S("abcde345")); 1958bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345"), 2, 4, S("abcde345")); 1959bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345"), 4, 0, S("abcde")); 1960bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345"), 4, 1, S("abcde5")); 1961bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345"), 4, 2, S("abcde5")); 1962bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345"), 5, 0, S("abcde")); 1963bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 1964bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 19659dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 1966bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test18() 1967bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 1968bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345"), 5, 1, S("abcde")); 1969bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345"), 6, 0, S("can't happen")); 1970bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("1234567890"), 0, 0, S("abcde")); 1971bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("1234567890"), 0, 1, S("abcde1")); 1972bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("1234567890"), 0, 5, S("abcde12345")); 1973bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("1234567890"), 0, 9, S("abcde123456789")); 1974bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("1234567890"), 0, 10, S("abcde1234567890")); 1975bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("1234567890"), 0, 11, S("abcde1234567890")); 1976bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("1234567890"), 1, 0, S("abcde")); 1977bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("1234567890"), 1, 1, S("abcde2")); 1978bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("1234567890"), 1, 4, S("abcde2345")); 1979bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("1234567890"), 1, 8, S("abcde23456789")); 1980bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("1234567890"), 1, 9, S("abcde234567890")); 1981bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("1234567890"), 1, 10, S("abcde234567890")); 1982bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("1234567890"), 5, 0, S("abcde")); 1983bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("1234567890"), 5, 1, S("abcde6")); 1984bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("1234567890"), 5, 2, S("abcde67")); 1985bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("1234567890"), 5, 4, S("abcde6789")); 1986bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("1234567890"), 5, 5, S("abcde67890")); 1987bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("1234567890"), 5, 6, S("abcde67890")); 1988bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("1234567890"), 9, 0, S("abcde")); 1989bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("1234567890"), 9, 1, S("abcde0")); 1990bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("1234567890"), 9, 2, S("abcde0")); 1991bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("1234567890"), 10, 0, S("abcde")); 1992bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("1234567890"), 10, 1, S("abcde")); 1993bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("1234567890"), 11, 0, S("can't happen")); 1994bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345678901234567890"), 0, 0, S("abcde")); 1995bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345678901234567890"), 0, 1, S("abcde1")); 1996bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345678901234567890"), 0, 10, S("abcde1234567890")); 1997bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345678901234567890"), 0, 19, S("abcde1234567890123456789")); 1998bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345678901234567890"), 0, 20, S("abcde12345678901234567890")); 1999bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345678901234567890"), 0, 21, S("abcde12345678901234567890")); 2000bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345678901234567890"), 1, 0, S("abcde")); 2001bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345678901234567890"), 1, 1, S("abcde2")); 2002bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345678901234567890"), 1, 9, S("abcde234567890")); 2003bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345678901234567890"), 1, 18, S("abcde234567890123456789")); 2004bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345678901234567890"), 1, 19, S("abcde2345678901234567890")); 2005bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345678901234567890"), 1, 20, S("abcde2345678901234567890")); 2006bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345678901234567890"), 10, 0, S("abcde")); 2007bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345678901234567890"), 10, 1, S("abcde1")); 2008bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345678901234567890"), 10, 5, S("abcde12345")); 2009bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345678901234567890"), 10, 9, S("abcde123456789")); 2010bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345678901234567890"), 10, 10, S("abcde1234567890")); 2011bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345678901234567890"), 10, 11, S("abcde1234567890")); 2012bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345678901234567890"), 19, 0, S("abcde")); 2013bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345678901234567890"), 19, 1, S("abcde0")); 2014bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345678901234567890"), 19, 2, S("abcde0")); 2015bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345678901234567890"), 20, 0, S("abcde")); 2016bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345678901234567890"), 20, 1, S("abcde")); 2017bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 5, 1, S("12345678901234567890"), 21, 0, S("can't happen")); 2018bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S(""), 0, 0, S("can't happen")); 2019bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S(""), 0, 1, S("can't happen")); 2020bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S(""), 1, 0, S("can't happen")); 2021bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345"), 0, 0, S("can't happen")); 2022bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345"), 0, 1, S("can't happen")); 2023bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345"), 0, 2, S("can't happen")); 2024bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345"), 0, 4, S("can't happen")); 2025bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345"), 0, 5, S("can't happen")); 2026bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345"), 0, 6, S("can't happen")); 2027bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345"), 1, 0, S("can't happen")); 2028bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345"), 1, 1, S("can't happen")); 2029bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345"), 1, 2, S("can't happen")); 2030bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345"), 1, 3, S("can't happen")); 2031bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345"), 1, 4, S("can't happen")); 2032bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345"), 1, 5, S("can't happen")); 2033bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345"), 2, 0, S("can't happen")); 2034bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345"), 2, 1, S("can't happen")); 2035bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345"), 2, 2, S("can't happen")); 2036bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345"), 2, 3, S("can't happen")); 2037bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345"), 2, 4, S("can't happen")); 2038bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345"), 4, 0, S("can't happen")); 2039bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345"), 4, 1, S("can't happen")); 2040bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345"), 4, 2, S("can't happen")); 2041bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345"), 5, 0, S("can't happen")); 2042bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345"), 5, 1, S("can't happen")); 2043bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345"), 6, 0, S("can't happen")); 2044bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("1234567890"), 0, 0, S("can't happen")); 2045bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("1234567890"), 0, 1, S("can't happen")); 2046bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("1234567890"), 0, 5, S("can't happen")); 2047bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("1234567890"), 0, 9, S("can't happen")); 2048bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("1234567890"), 0, 10, S("can't happen")); 2049bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("1234567890"), 0, 11, S("can't happen")); 2050bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("1234567890"), 1, 0, S("can't happen")); 2051bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("1234567890"), 1, 1, S("can't happen")); 2052bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("1234567890"), 1, 4, S("can't happen")); 2053bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("1234567890"), 1, 8, S("can't happen")); 2054bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("1234567890"), 1, 9, S("can't happen")); 2055bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("1234567890"), 1, 10, S("can't happen")); 2056bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("1234567890"), 5, 0, S("can't happen")); 2057bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("1234567890"), 5, 1, S("can't happen")); 2058bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("1234567890"), 5, 2, S("can't happen")); 2059bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("1234567890"), 5, 4, S("can't happen")); 2060bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("1234567890"), 5, 5, S("can't happen")); 2061bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("1234567890"), 5, 6, S("can't happen")); 2062bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("1234567890"), 9, 0, S("can't happen")); 2063bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("1234567890"), 9, 1, S("can't happen")); 2064bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("1234567890"), 9, 2, S("can't happen")); 2065bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("1234567890"), 10, 0, S("can't happen")); 2066bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("1234567890"), 10, 1, S("can't happen")); 2067bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("1234567890"), 11, 0, S("can't happen")); 2068bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 2069bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 20709dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 2071bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test19() 2072bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 2073bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345678901234567890"), 0, 0, S("can't happen")); 2074bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345678901234567890"), 0, 1, S("can't happen")); 2075bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345678901234567890"), 0, 10, S("can't happen")); 2076bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345678901234567890"), 0, 19, S("can't happen")); 2077bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345678901234567890"), 0, 20, S("can't happen")); 2078bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345678901234567890"), 0, 21, S("can't happen")); 2079bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345678901234567890"), 1, 0, S("can't happen")); 2080bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345678901234567890"), 1, 1, S("can't happen")); 2081bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345678901234567890"), 1, 9, S("can't happen")); 2082bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345678901234567890"), 1, 18, S("can't happen")); 2083bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345678901234567890"), 1, 19, S("can't happen")); 2084bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345678901234567890"), 1, 20, S("can't happen")); 2085bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345678901234567890"), 10, 0, S("can't happen")); 2086bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345678901234567890"), 10, 1, S("can't happen")); 2087bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345678901234567890"), 10, 5, S("can't happen")); 2088bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345678901234567890"), 10, 9, S("can't happen")); 2089bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345678901234567890"), 10, 10, S("can't happen")); 2090bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345678901234567890"), 10, 11, S("can't happen")); 2091bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345678901234567890"), 19, 0, S("can't happen")); 2092bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345678901234567890"), 19, 1, S("can't happen")); 2093bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345678901234567890"), 19, 2, S("can't happen")); 2094bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345678901234567890"), 20, 0, S("can't happen")); 2095bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345678901234567890"), 20, 1, S("can't happen")); 2096bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcde"), 6, 0, S("12345678901234567890"), 21, 0, S("can't happen")); 2097bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S(""), 0, 0, S("abcdefghij")); 2098bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S(""), 0, 1, S("abcdefghij")); 2099bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S(""), 1, 0, S("can't happen")); 2100bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345"), 0, 0, S("abcdefghij")); 2101bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345"), 0, 1, S("1abcdefghij")); 2102bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345"), 0, 2, S("12abcdefghij")); 2103bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345"), 0, 4, S("1234abcdefghij")); 2104bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345"), 0, 5, S("12345abcdefghij")); 2105bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345"), 0, 6, S("12345abcdefghij")); 2106bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345"), 1, 0, S("abcdefghij")); 2107bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345"), 1, 1, S("2abcdefghij")); 2108bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345"), 1, 2, S("23abcdefghij")); 2109bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345"), 1, 3, S("234abcdefghij")); 2110bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345"), 1, 4, S("2345abcdefghij")); 2111bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345"), 1, 5, S("2345abcdefghij")); 2112bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345"), 2, 0, S("abcdefghij")); 2113bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345"), 2, 1, S("3abcdefghij")); 2114bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345"), 2, 2, S("34abcdefghij")); 2115bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345"), 2, 3, S("345abcdefghij")); 2116bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345"), 2, 4, S("345abcdefghij")); 2117bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345"), 4, 0, S("abcdefghij")); 2118bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345"), 4, 1, S("5abcdefghij")); 2119bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345"), 4, 2, S("5abcdefghij")); 2120bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345"), 5, 0, S("abcdefghij")); 2121bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345"), 5, 1, S("abcdefghij")); 2122bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345"), 6, 0, S("can't happen")); 2123bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("1234567890"), 0, 0, S("abcdefghij")); 2124bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("1234567890"), 0, 1, S("1abcdefghij")); 2125bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("1234567890"), 0, 5, S("12345abcdefghij")); 2126bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("1234567890"), 0, 9, S("123456789abcdefghij")); 2127bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("1234567890"), 0, 10, S("1234567890abcdefghij")); 2128bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("1234567890"), 0, 11, S("1234567890abcdefghij")); 2129bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("1234567890"), 1, 0, S("abcdefghij")); 2130bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("1234567890"), 1, 1, S("2abcdefghij")); 2131bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("1234567890"), 1, 4, S("2345abcdefghij")); 2132bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("1234567890"), 1, 8, S("23456789abcdefghij")); 2133bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("1234567890"), 1, 9, S("234567890abcdefghij")); 2134bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("1234567890"), 1, 10, S("234567890abcdefghij")); 2135bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("1234567890"), 5, 0, S("abcdefghij")); 2136bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("1234567890"), 5, 1, S("6abcdefghij")); 2137bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("1234567890"), 5, 2, S("67abcdefghij")); 2138bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("1234567890"), 5, 4, S("6789abcdefghij")); 2139bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("1234567890"), 5, 5, S("67890abcdefghij")); 2140bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("1234567890"), 5, 6, S("67890abcdefghij")); 2141bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("1234567890"), 9, 0, S("abcdefghij")); 2142bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("1234567890"), 9, 1, S("0abcdefghij")); 2143bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("1234567890"), 9, 2, S("0abcdefghij")); 2144bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("1234567890"), 10, 0, S("abcdefghij")); 2145bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("1234567890"), 10, 1, S("abcdefghij")); 2146bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("1234567890"), 11, 0, S("can't happen")); 2147bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 0, 0, S("abcdefghij")); 2148bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 0, 1, S("1abcdefghij")); 2149bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 0, 10, S("1234567890abcdefghij")); 2150bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 0, 19, S("1234567890123456789abcdefghij")); 2151bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 0, 20, S("12345678901234567890abcdefghij")); 2152bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 0, 21, S("12345678901234567890abcdefghij")); 2153bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 1, 0, S("abcdefghij")); 2154bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 1, 1, S("2abcdefghij")); 2155bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 1, 9, S("234567890abcdefghij")); 2156bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 1, 18, S("234567890123456789abcdefghij")); 2157bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 1, 19, S("2345678901234567890abcdefghij")); 2158bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 1, 20, S("2345678901234567890abcdefghij")); 2159bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 10, 0, S("abcdefghij")); 2160bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 10, 1, S("1abcdefghij")); 2161bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 10, 5, S("12345abcdefghij")); 2162bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 10, 9, S("123456789abcdefghij")); 2163bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 10, 10, S("1234567890abcdefghij")); 2164bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 10, 11, S("1234567890abcdefghij")); 2165bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 19, 0, S("abcdefghij")); 2166bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 19, 1, S("0abcdefghij")); 2167bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 19, 2, S("0abcdefghij")); 2168bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 20, 0, S("abcdefghij")); 2169bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 20, 1, S("abcdefghij")); 2170bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 0, S("12345678901234567890"), 21, 0, S("can't happen")); 2171bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S(""), 0, 0, S("bcdefghij")); 2172bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S(""), 0, 1, S("bcdefghij")); 2173bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 2174bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 21759dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 2176bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test20() 2177bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 2178bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S(""), 1, 0, S("can't happen")); 2179bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345"), 0, 0, S("bcdefghij")); 2180bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345"), 0, 1, S("1bcdefghij")); 2181bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345"), 0, 2, S("12bcdefghij")); 2182bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345"), 0, 4, S("1234bcdefghij")); 2183bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345"), 0, 5, S("12345bcdefghij")); 2184bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345"), 0, 6, S("12345bcdefghij")); 2185bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345"), 1, 0, S("bcdefghij")); 2186bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345"), 1, 1, S("2bcdefghij")); 2187bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345"), 1, 2, S("23bcdefghij")); 2188bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345"), 1, 3, S("234bcdefghij")); 2189bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345"), 1, 4, S("2345bcdefghij")); 2190bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345"), 1, 5, S("2345bcdefghij")); 2191bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345"), 2, 0, S("bcdefghij")); 2192bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345"), 2, 1, S("3bcdefghij")); 2193bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345"), 2, 2, S("34bcdefghij")); 2194bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345"), 2, 3, S("345bcdefghij")); 2195bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345"), 2, 4, S("345bcdefghij")); 2196bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345"), 4, 0, S("bcdefghij")); 2197bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345"), 4, 1, S("5bcdefghij")); 2198bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345"), 4, 2, S("5bcdefghij")); 2199bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345"), 5, 0, S("bcdefghij")); 2200bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345"), 5, 1, S("bcdefghij")); 2201bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345"), 6, 0, S("can't happen")); 2202bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("1234567890"), 0, 0, S("bcdefghij")); 2203bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("1234567890"), 0, 1, S("1bcdefghij")); 2204bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("1234567890"), 0, 5, S("12345bcdefghij")); 2205bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("1234567890"), 0, 9, S("123456789bcdefghij")); 2206bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("1234567890"), 0, 10, S("1234567890bcdefghij")); 2207bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("1234567890"), 0, 11, S("1234567890bcdefghij")); 2208bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("1234567890"), 1, 0, S("bcdefghij")); 2209bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("1234567890"), 1, 1, S("2bcdefghij")); 2210bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("1234567890"), 1, 4, S("2345bcdefghij")); 2211bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("1234567890"), 1, 8, S("23456789bcdefghij")); 2212bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("1234567890"), 1, 9, S("234567890bcdefghij")); 2213bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("1234567890"), 1, 10, S("234567890bcdefghij")); 2214bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("1234567890"), 5, 0, S("bcdefghij")); 2215bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("1234567890"), 5, 1, S("6bcdefghij")); 2216bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("1234567890"), 5, 2, S("67bcdefghij")); 2217bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("1234567890"), 5, 4, S("6789bcdefghij")); 2218bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("1234567890"), 5, 5, S("67890bcdefghij")); 2219bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("1234567890"), 5, 6, S("67890bcdefghij")); 2220bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("1234567890"), 9, 0, S("bcdefghij")); 2221bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("1234567890"), 9, 1, S("0bcdefghij")); 2222bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("1234567890"), 9, 2, S("0bcdefghij")); 2223bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("1234567890"), 10, 0, S("bcdefghij")); 2224bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("1234567890"), 10, 1, S("bcdefghij")); 2225bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("1234567890"), 11, 0, S("can't happen")); 2226bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 0, 0, S("bcdefghij")); 2227bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 0, 1, S("1bcdefghij")); 2228bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 0, 10, S("1234567890bcdefghij")); 2229bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 0, 19, S("1234567890123456789bcdefghij")); 2230bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 0, 20, S("12345678901234567890bcdefghij")); 2231bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 0, 21, S("12345678901234567890bcdefghij")); 2232bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 1, 0, S("bcdefghij")); 2233bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 1, 1, S("2bcdefghij")); 2234bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 1, 9, S("234567890bcdefghij")); 2235bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 1, 18, S("234567890123456789bcdefghij")); 2236bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 1, 19, S("2345678901234567890bcdefghij")); 2237bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 1, 20, S("2345678901234567890bcdefghij")); 2238bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 10, 0, S("bcdefghij")); 2239bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 10, 1, S("1bcdefghij")); 2240bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 10, 5, S("12345bcdefghij")); 2241bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 10, 9, S("123456789bcdefghij")); 2242bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 10, 10, S("1234567890bcdefghij")); 2243bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 10, 11, S("1234567890bcdefghij")); 2244bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 19, 0, S("bcdefghij")); 2245bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 19, 1, S("0bcdefghij")); 2246bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 19, 2, S("0bcdefghij")); 2247bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 20, 0, S("bcdefghij")); 2248bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 20, 1, S("bcdefghij")); 2249bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 1, S("12345678901234567890"), 21, 0, S("can't happen")); 2250bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S(""), 0, 0, S("fghij")); 2251bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S(""), 0, 1, S("fghij")); 2252bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S(""), 1, 0, S("can't happen")); 2253bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345"), 0, 0, S("fghij")); 2254bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345"), 0, 1, S("1fghij")); 2255bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345"), 0, 2, S("12fghij")); 2256bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345"), 0, 4, S("1234fghij")); 2257bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345"), 0, 5, S("12345fghij")); 2258bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345"), 0, 6, S("12345fghij")); 2259bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345"), 1, 0, S("fghij")); 2260bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345"), 1, 1, S("2fghij")); 2261bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345"), 1, 2, S("23fghij")); 2262bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345"), 1, 3, S("234fghij")); 2263bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345"), 1, 4, S("2345fghij")); 2264bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345"), 1, 5, S("2345fghij")); 2265bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345"), 2, 0, S("fghij")); 2266bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345"), 2, 1, S("3fghij")); 2267bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345"), 2, 2, S("34fghij")); 2268bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345"), 2, 3, S("345fghij")); 2269bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345"), 2, 4, S("345fghij")); 2270bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345"), 4, 0, S("fghij")); 2271bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345"), 4, 1, S("5fghij")); 2272bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345"), 4, 2, S("5fghij")); 2273bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345"), 5, 0, S("fghij")); 2274bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345"), 5, 1, S("fghij")); 2275bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345"), 6, 0, S("can't happen")); 2276bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("1234567890"), 0, 0, S("fghij")); 2277bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("1234567890"), 0, 1, S("1fghij")); 2278bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 2279bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 22809dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 2281bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test21() 2282bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 2283bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("1234567890"), 0, 5, S("12345fghij")); 2284bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("1234567890"), 0, 9, S("123456789fghij")); 2285bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("1234567890"), 0, 10, S("1234567890fghij")); 2286bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("1234567890"), 0, 11, S("1234567890fghij")); 2287bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("1234567890"), 1, 0, S("fghij")); 2288bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("1234567890"), 1, 1, S("2fghij")); 2289bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("1234567890"), 1, 4, S("2345fghij")); 2290bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("1234567890"), 1, 8, S("23456789fghij")); 2291bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("1234567890"), 1, 9, S("234567890fghij")); 2292bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("1234567890"), 1, 10, S("234567890fghij")); 2293bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("1234567890"), 5, 0, S("fghij")); 2294bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("1234567890"), 5, 1, S("6fghij")); 2295bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("1234567890"), 5, 2, S("67fghij")); 2296bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("1234567890"), 5, 4, S("6789fghij")); 2297bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("1234567890"), 5, 5, S("67890fghij")); 2298bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("1234567890"), 5, 6, S("67890fghij")); 2299bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("1234567890"), 9, 0, S("fghij")); 2300bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("1234567890"), 9, 1, S("0fghij")); 2301bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("1234567890"), 9, 2, S("0fghij")); 2302bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("1234567890"), 10, 0, S("fghij")); 2303bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("1234567890"), 10, 1, S("fghij")); 2304bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("1234567890"), 11, 0, S("can't happen")); 2305bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 0, 0, S("fghij")); 2306bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 0, 1, S("1fghij")); 2307bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 0, 10, S("1234567890fghij")); 2308bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 0, 19, S("1234567890123456789fghij")); 2309bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 0, 20, S("12345678901234567890fghij")); 2310bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 0, 21, S("12345678901234567890fghij")); 2311bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 1, 0, S("fghij")); 2312bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 1, 1, S("2fghij")); 2313bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 1, 9, S("234567890fghij")); 2314bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 1, 18, S("234567890123456789fghij")); 2315bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 1, 19, S("2345678901234567890fghij")); 2316bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 1, 20, S("2345678901234567890fghij")); 2317bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 10, 0, S("fghij")); 2318bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 10, 1, S("1fghij")); 2319bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 10, 5, S("12345fghij")); 2320bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 10, 9, S("123456789fghij")); 2321bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 10, 10, S("1234567890fghij")); 2322bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 10, 11, S("1234567890fghij")); 2323bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 19, 0, S("fghij")); 2324bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 19, 1, S("0fghij")); 2325bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 19, 2, S("0fghij")); 2326bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 20, 0, S("fghij")); 2327bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 20, 1, S("fghij")); 2328bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 5, S("12345678901234567890"), 21, 0, S("can't happen")); 2329bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S(""), 0, 0, S("j")); 2330bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S(""), 0, 1, S("j")); 2331bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S(""), 1, 0, S("can't happen")); 2332bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345"), 0, 0, S("j")); 2333bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345"), 0, 1, S("1j")); 2334bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345"), 0, 2, S("12j")); 2335bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345"), 0, 4, S("1234j")); 2336bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345"), 0, 5, S("12345j")); 2337bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345"), 0, 6, S("12345j")); 2338bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345"), 1, 0, S("j")); 2339bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345"), 1, 1, S("2j")); 2340bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345"), 1, 2, S("23j")); 2341bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345"), 1, 3, S("234j")); 2342bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345"), 1, 4, S("2345j")); 2343bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345"), 1, 5, S("2345j")); 2344bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345"), 2, 0, S("j")); 2345bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345"), 2, 1, S("3j")); 2346bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345"), 2, 2, S("34j")); 2347bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345"), 2, 3, S("345j")); 2348bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345"), 2, 4, S("345j")); 2349bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345"), 4, 0, S("j")); 2350bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345"), 4, 1, S("5j")); 2351bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345"), 4, 2, S("5j")); 2352bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345"), 5, 0, S("j")); 2353bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345"), 5, 1, S("j")); 2354bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345"), 6, 0, S("can't happen")); 2355bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("1234567890"), 0, 0, S("j")); 2356bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("1234567890"), 0, 1, S("1j")); 2357bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("1234567890"), 0, 5, S("12345j")); 2358bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("1234567890"), 0, 9, S("123456789j")); 2359bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("1234567890"), 0, 10, S("1234567890j")); 2360bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("1234567890"), 0, 11, S("1234567890j")); 2361bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("1234567890"), 1, 0, S("j")); 2362bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("1234567890"), 1, 1, S("2j")); 2363bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("1234567890"), 1, 4, S("2345j")); 2364bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("1234567890"), 1, 8, S("23456789j")); 2365bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("1234567890"), 1, 9, S("234567890j")); 2366bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("1234567890"), 1, 10, S("234567890j")); 2367bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("1234567890"), 5, 0, S("j")); 2368bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("1234567890"), 5, 1, S("6j")); 2369bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("1234567890"), 5, 2, S("67j")); 2370bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("1234567890"), 5, 4, S("6789j")); 2371bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("1234567890"), 5, 5, S("67890j")); 2372bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("1234567890"), 5, 6, S("67890j")); 2373bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("1234567890"), 9, 0, S("j")); 2374bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("1234567890"), 9, 1, S("0j")); 2375bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("1234567890"), 9, 2, S("0j")); 2376bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("1234567890"), 10, 0, S("j")); 2377bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("1234567890"), 10, 1, S("j")); 2378bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("1234567890"), 11, 0, S("can't happen")); 2379bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 0, 0, S("j")); 2380bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 0, 1, S("1j")); 2381bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 0, 10, S("1234567890j")); 2382bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 0, 19, S("1234567890123456789j")); 2383bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 2384bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 23859dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 2386bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test22() 2387bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 2388bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 0, 20, S("12345678901234567890j")); 2389bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 0, 21, S("12345678901234567890j")); 2390bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 1, 0, S("j")); 2391bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 1, 1, S("2j")); 2392bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 1, 9, S("234567890j")); 2393bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 1, 18, S("234567890123456789j")); 2394bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 1, 19, S("2345678901234567890j")); 2395bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 1, 20, S("2345678901234567890j")); 2396bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 10, 0, S("j")); 2397bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 10, 1, S("1j")); 2398bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 10, 5, S("12345j")); 2399bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 10, 9, S("123456789j")); 2400bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 10, 10, S("1234567890j")); 2401bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 10, 11, S("1234567890j")); 2402bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 19, 0, S("j")); 2403bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 19, 1, S("0j")); 2404bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 19, 2, S("0j")); 2405bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 20, 0, S("j")); 2406bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 20, 1, S("j")); 2407bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 9, S("12345678901234567890"), 21, 0, S("can't happen")); 2408bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S(""), 0, 0, S("")); 2409bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S(""), 0, 1, S("")); 2410bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S(""), 1, 0, S("can't happen")); 2411bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345"), 0, 0, S("")); 2412bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345"), 0, 1, S("1")); 2413bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345"), 0, 2, S("12")); 2414bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345"), 0, 4, S("1234")); 2415bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345"), 0, 5, S("12345")); 2416bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345"), 0, 6, S("12345")); 2417bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345"), 1, 0, S("")); 2418bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345"), 1, 1, S("2")); 2419bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345"), 1, 2, S("23")); 2420bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345"), 1, 3, S("234")); 2421bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345"), 1, 4, S("2345")); 2422bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345"), 1, 5, S("2345")); 2423bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345"), 2, 0, S("")); 2424bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345"), 2, 1, S("3")); 2425bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345"), 2, 2, S("34")); 2426bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345"), 2, 3, S("345")); 2427bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345"), 2, 4, S("345")); 2428bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345"), 4, 0, S("")); 2429bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345"), 4, 1, S("5")); 2430bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345"), 4, 2, S("5")); 2431bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345"), 5, 0, S("")); 2432bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345"), 5, 1, S("")); 2433bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345"), 6, 0, S("can't happen")); 2434bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("1234567890"), 0, 0, S("")); 2435bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("1234567890"), 0, 1, S("1")); 2436bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("1234567890"), 0, 5, S("12345")); 2437bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("1234567890"), 0, 9, S("123456789")); 2438bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("1234567890"), 0, 10, S("1234567890")); 2439bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("1234567890"), 0, 11, S("1234567890")); 2440bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("1234567890"), 1, 0, S("")); 2441bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("1234567890"), 1, 1, S("2")); 2442bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("1234567890"), 1, 4, S("2345")); 2443bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("1234567890"), 1, 8, S("23456789")); 2444bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("1234567890"), 1, 9, S("234567890")); 2445bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("1234567890"), 1, 10, S("234567890")); 2446bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("1234567890"), 5, 0, S("")); 2447bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("1234567890"), 5, 1, S("6")); 2448bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("1234567890"), 5, 2, S("67")); 2449bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("1234567890"), 5, 4, S("6789")); 2450bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("1234567890"), 5, 5, S("67890")); 2451bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("1234567890"), 5, 6, S("67890")); 2452bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("1234567890"), 9, 0, S("")); 2453bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("1234567890"), 9, 1, S("0")); 2454bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("1234567890"), 9, 2, S("0")); 2455bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("1234567890"), 10, 0, S("")); 2456bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("1234567890"), 10, 1, S("")); 2457bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("1234567890"), 11, 0, S("can't happen")); 2458bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 0, 0, S("")); 2459bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 0, 1, S("1")); 2460bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 0, 10, S("1234567890")); 2461bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 0, 19, S("1234567890123456789")); 2462bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 0, 20, S("12345678901234567890")); 2463bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 0, 21, S("12345678901234567890")); 2464bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 1, 0, S("")); 2465bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 1, 1, S("2")); 2466bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 1, 9, S("234567890")); 2467bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 1, 18, S("234567890123456789")); 2468bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 1, 19, S("2345678901234567890")); 2469bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 1, 20, S("2345678901234567890")); 2470bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 10, 0, S("")); 2471bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 10, 1, S("1")); 2472bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 10, 5, S("12345")); 2473bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 10, 9, S("123456789")); 2474bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 10, 10, S("1234567890")); 2475bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 10, 11, S("1234567890")); 2476bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 19, 0, S("")); 2477bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 19, 1, S("0")); 2478bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 19, 2, S("0")); 2479bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 20, 0, S("")); 2480bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 20, 1, S("")); 2481bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 10, S("12345678901234567890"), 21, 0, S("can't happen")); 2482bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S(""), 0, 0, S("")); 2483bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S(""), 0, 1, S("")); 2484bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S(""), 1, 0, S("can't happen")); 2485bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345"), 0, 0, S("")); 2486bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345"), 0, 1, S("1")); 2487bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345"), 0, 2, S("12")); 2488bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 2489bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 24909dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 2491bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test23() 2492bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 2493bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345"), 0, 4, S("1234")); 2494bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345"), 0, 5, S("12345")); 2495bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345"), 0, 6, S("12345")); 2496bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345"), 1, 0, S("")); 2497bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345"), 1, 1, S("2")); 2498bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345"), 1, 2, S("23")); 2499bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345"), 1, 3, S("234")); 2500bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345"), 1, 4, S("2345")); 2501bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345"), 1, 5, S("2345")); 2502bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345"), 2, 0, S("")); 2503bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345"), 2, 1, S("3")); 2504bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345"), 2, 2, S("34")); 2505bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345"), 2, 3, S("345")); 2506bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345"), 2, 4, S("345")); 2507bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345"), 4, 0, S("")); 2508bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345"), 4, 1, S("5")); 2509bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345"), 4, 2, S("5")); 2510bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345"), 5, 0, S("")); 2511bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345"), 5, 1, S("")); 2512bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345"), 6, 0, S("can't happen")); 2513bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("1234567890"), 0, 0, S("")); 2514bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("1234567890"), 0, 1, S("1")); 2515bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("1234567890"), 0, 5, S("12345")); 2516bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("1234567890"), 0, 9, S("123456789")); 2517bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("1234567890"), 0, 10, S("1234567890")); 2518bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("1234567890"), 0, 11, S("1234567890")); 2519bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("1234567890"), 1, 0, S("")); 2520bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("1234567890"), 1, 1, S("2")); 2521bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("1234567890"), 1, 4, S("2345")); 2522bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("1234567890"), 1, 8, S("23456789")); 2523bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("1234567890"), 1, 9, S("234567890")); 2524bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("1234567890"), 1, 10, S("234567890")); 2525bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("1234567890"), 5, 0, S("")); 2526bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("1234567890"), 5, 1, S("6")); 2527bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("1234567890"), 5, 2, S("67")); 2528bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("1234567890"), 5, 4, S("6789")); 2529bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("1234567890"), 5, 5, S("67890")); 2530bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("1234567890"), 5, 6, S("67890")); 2531bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("1234567890"), 9, 0, S("")); 2532bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("1234567890"), 9, 1, S("0")); 2533bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("1234567890"), 9, 2, S("0")); 2534bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("1234567890"), 10, 0, S("")); 2535bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("1234567890"), 10, 1, S("")); 2536bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("1234567890"), 11, 0, S("can't happen")); 2537bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 0, 0, S("")); 2538bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 0, 1, S("1")); 2539bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 0, 10, S("1234567890")); 2540bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 0, 19, S("1234567890123456789")); 2541bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 0, 20, S("12345678901234567890")); 2542bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 0, 21, S("12345678901234567890")); 2543bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 1, 0, S("")); 2544bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 1, 1, S("2")); 2545bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 1, 9, S("234567890")); 2546bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 1, 18, S("234567890123456789")); 2547bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 1, 19, S("2345678901234567890")); 2548bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 1, 20, S("2345678901234567890")); 2549bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 10, 0, S("")); 2550bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 10, 1, S("1")); 2551bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 10, 5, S("12345")); 2552bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 10, 9, S("123456789")); 2553bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 10, 10, S("1234567890")); 2554bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 10, 11, S("1234567890")); 2555bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 19, 0, S("")); 2556bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 19, 1, S("0")); 2557bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 19, 2, S("0")); 2558bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 20, 0, S("")); 2559bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 20, 1, S("")); 2560bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 0, 11, S("12345678901234567890"), 21, 0, S("can't happen")); 2561bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S(""), 0, 0, S("abcdefghij")); 2562bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S(""), 0, 1, S("abcdefghij")); 2563bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S(""), 1, 0, S("can't happen")); 2564bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345"), 0, 0, S("abcdefghij")); 2565bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345"), 0, 1, S("a1bcdefghij")); 2566bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345"), 0, 2, S("a12bcdefghij")); 2567bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345"), 0, 4, S("a1234bcdefghij")); 2568bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345"), 0, 5, S("a12345bcdefghij")); 2569bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345"), 0, 6, S("a12345bcdefghij")); 2570bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345"), 1, 0, S("abcdefghij")); 2571bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345"), 1, 1, S("a2bcdefghij")); 2572bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345"), 1, 2, S("a23bcdefghij")); 2573bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345"), 1, 3, S("a234bcdefghij")); 2574bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345"), 1, 4, S("a2345bcdefghij")); 2575bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345"), 1, 5, S("a2345bcdefghij")); 2576bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345"), 2, 0, S("abcdefghij")); 2577bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345"), 2, 1, S("a3bcdefghij")); 2578bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345"), 2, 2, S("a34bcdefghij")); 2579bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345"), 2, 3, S("a345bcdefghij")); 2580bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345"), 2, 4, S("a345bcdefghij")); 2581bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345"), 4, 0, S("abcdefghij")); 2582bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345"), 4, 1, S("a5bcdefghij")); 2583bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345"), 4, 2, S("a5bcdefghij")); 2584bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345"), 5, 0, S("abcdefghij")); 2585bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345"), 5, 1, S("abcdefghij")); 2586bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345"), 6, 0, S("can't happen")); 2587bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("1234567890"), 0, 0, S("abcdefghij")); 2588bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("1234567890"), 0, 1, S("a1bcdefghij")); 2589bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("1234567890"), 0, 5, S("a12345bcdefghij")); 2590bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("1234567890"), 0, 9, S("a123456789bcdefghij")); 2591bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("1234567890"), 0, 10, S("a1234567890bcdefghij")); 2592bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("1234567890"), 0, 11, S("a1234567890bcdefghij")); 2593bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 2594bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 25959dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 2596bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test24() 2597bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 2598bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("1234567890"), 1, 0, S("abcdefghij")); 2599bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("1234567890"), 1, 1, S("a2bcdefghij")); 2600bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("1234567890"), 1, 4, S("a2345bcdefghij")); 2601bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("1234567890"), 1, 8, S("a23456789bcdefghij")); 2602bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("1234567890"), 1, 9, S("a234567890bcdefghij")); 2603bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("1234567890"), 1, 10, S("a234567890bcdefghij")); 2604bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("1234567890"), 5, 0, S("abcdefghij")); 2605bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("1234567890"), 5, 1, S("a6bcdefghij")); 2606bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("1234567890"), 5, 2, S("a67bcdefghij")); 2607bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("1234567890"), 5, 4, S("a6789bcdefghij")); 2608bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("1234567890"), 5, 5, S("a67890bcdefghij")); 2609bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("1234567890"), 5, 6, S("a67890bcdefghij")); 2610bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("1234567890"), 9, 0, S("abcdefghij")); 2611bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("1234567890"), 9, 1, S("a0bcdefghij")); 2612bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("1234567890"), 9, 2, S("a0bcdefghij")); 2613bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("1234567890"), 10, 0, S("abcdefghij")); 2614bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("1234567890"), 10, 1, S("abcdefghij")); 2615bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("1234567890"), 11, 0, S("can't happen")); 2616bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 0, 0, S("abcdefghij")); 2617bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 0, 1, S("a1bcdefghij")); 2618bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 0, 10, S("a1234567890bcdefghij")); 2619bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 0, 19, S("a1234567890123456789bcdefghij")); 2620bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 0, 20, S("a12345678901234567890bcdefghij")); 2621bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 0, 21, S("a12345678901234567890bcdefghij")); 2622bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 1, 0, S("abcdefghij")); 2623bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 1, 1, S("a2bcdefghij")); 2624bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 1, 9, S("a234567890bcdefghij")); 2625bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 1, 18, S("a234567890123456789bcdefghij")); 2626bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 1, 19, S("a2345678901234567890bcdefghij")); 2627bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 1, 20, S("a2345678901234567890bcdefghij")); 2628bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 10, 0, S("abcdefghij")); 2629bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 10, 1, S("a1bcdefghij")); 2630bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 10, 5, S("a12345bcdefghij")); 2631bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 10, 9, S("a123456789bcdefghij")); 2632bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 10, 10, S("a1234567890bcdefghij")); 2633bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 10, 11, S("a1234567890bcdefghij")); 2634bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 19, 0, S("abcdefghij")); 2635bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 19, 1, S("a0bcdefghij")); 2636bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 19, 2, S("a0bcdefghij")); 2637bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 20, 0, S("abcdefghij")); 2638bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 20, 1, S("abcdefghij")); 2639bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 0, S("12345678901234567890"), 21, 0, S("can't happen")); 2640bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S(""), 0, 0, S("acdefghij")); 2641bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S(""), 0, 1, S("acdefghij")); 2642bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S(""), 1, 0, S("can't happen")); 2643bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345"), 0, 0, S("acdefghij")); 2644bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345"), 0, 1, S("a1cdefghij")); 2645bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345"), 0, 2, S("a12cdefghij")); 2646bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345"), 0, 4, S("a1234cdefghij")); 2647bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345"), 0, 5, S("a12345cdefghij")); 2648bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345"), 0, 6, S("a12345cdefghij")); 2649bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345"), 1, 0, S("acdefghij")); 2650bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345"), 1, 1, S("a2cdefghij")); 2651bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345"), 1, 2, S("a23cdefghij")); 2652bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345"), 1, 3, S("a234cdefghij")); 2653bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345"), 1, 4, S("a2345cdefghij")); 2654bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345"), 1, 5, S("a2345cdefghij")); 2655bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345"), 2, 0, S("acdefghij")); 2656bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345"), 2, 1, S("a3cdefghij")); 2657bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345"), 2, 2, S("a34cdefghij")); 2658bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345"), 2, 3, S("a345cdefghij")); 2659bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345"), 2, 4, S("a345cdefghij")); 2660bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345"), 4, 0, S("acdefghij")); 2661bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345"), 4, 1, S("a5cdefghij")); 2662bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345"), 4, 2, S("a5cdefghij")); 2663bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345"), 5, 0, S("acdefghij")); 2664bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345"), 5, 1, S("acdefghij")); 2665bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345"), 6, 0, S("can't happen")); 2666bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("1234567890"), 0, 0, S("acdefghij")); 2667bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("1234567890"), 0, 1, S("a1cdefghij")); 2668bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("1234567890"), 0, 5, S("a12345cdefghij")); 2669bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("1234567890"), 0, 9, S("a123456789cdefghij")); 2670bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("1234567890"), 0, 10, S("a1234567890cdefghij")); 2671bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("1234567890"), 0, 11, S("a1234567890cdefghij")); 2672bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("1234567890"), 1, 0, S("acdefghij")); 2673bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("1234567890"), 1, 1, S("a2cdefghij")); 2674bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("1234567890"), 1, 4, S("a2345cdefghij")); 2675bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("1234567890"), 1, 8, S("a23456789cdefghij")); 2676bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("1234567890"), 1, 9, S("a234567890cdefghij")); 2677bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("1234567890"), 1, 10, S("a234567890cdefghij")); 2678bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("1234567890"), 5, 0, S("acdefghij")); 2679bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("1234567890"), 5, 1, S("a6cdefghij")); 2680bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("1234567890"), 5, 2, S("a67cdefghij")); 2681bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("1234567890"), 5, 4, S("a6789cdefghij")); 2682bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("1234567890"), 5, 5, S("a67890cdefghij")); 2683bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("1234567890"), 5, 6, S("a67890cdefghij")); 2684bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("1234567890"), 9, 0, S("acdefghij")); 2685bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("1234567890"), 9, 1, S("a0cdefghij")); 2686bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("1234567890"), 9, 2, S("a0cdefghij")); 2687bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("1234567890"), 10, 0, S("acdefghij")); 2688bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("1234567890"), 10, 1, S("acdefghij")); 2689bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("1234567890"), 11, 0, S("can't happen")); 2690bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 0, 0, S("acdefghij")); 2691bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 0, 1, S("a1cdefghij")); 2692bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 0, 10, S("a1234567890cdefghij")); 2693bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 0, 19, S("a1234567890123456789cdefghij")); 2694bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 0, 20, S("a12345678901234567890cdefghij")); 2695bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 0, 21, S("a12345678901234567890cdefghij")); 2696bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 1, 0, S("acdefghij")); 2697bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 1, 1, S("a2cdefghij")); 2698bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 2699bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 27009dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 2701bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test25() 2702bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 2703bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 1, 9, S("a234567890cdefghij")); 2704bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 1, 18, S("a234567890123456789cdefghij")); 2705bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 1, 19, S("a2345678901234567890cdefghij")); 2706bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 1, 20, S("a2345678901234567890cdefghij")); 2707bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 10, 0, S("acdefghij")); 2708bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 10, 1, S("a1cdefghij")); 2709bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 10, 5, S("a12345cdefghij")); 2710bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 10, 9, S("a123456789cdefghij")); 2711bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 10, 10, S("a1234567890cdefghij")); 2712bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 10, 11, S("a1234567890cdefghij")); 2713bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 19, 0, S("acdefghij")); 2714bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 19, 1, S("a0cdefghij")); 2715bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 19, 2, S("a0cdefghij")); 2716bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 20, 0, S("acdefghij")); 2717bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 20, 1, S("acdefghij")); 2718bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 1, S("12345678901234567890"), 21, 0, S("can't happen")); 2719bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S(""), 0, 0, S("afghij")); 2720bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S(""), 0, 1, S("afghij")); 2721bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S(""), 1, 0, S("can't happen")); 2722bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345"), 0, 0, S("afghij")); 2723bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345"), 0, 1, S("a1fghij")); 2724bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345"), 0, 2, S("a12fghij")); 2725bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345"), 0, 4, S("a1234fghij")); 2726bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345"), 0, 5, S("a12345fghij")); 2727bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345"), 0, 6, S("a12345fghij")); 2728bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345"), 1, 0, S("afghij")); 2729bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345"), 1, 1, S("a2fghij")); 2730bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345"), 1, 2, S("a23fghij")); 2731bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345"), 1, 3, S("a234fghij")); 2732bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345"), 1, 4, S("a2345fghij")); 2733bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345"), 1, 5, S("a2345fghij")); 2734bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345"), 2, 0, S("afghij")); 2735bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345"), 2, 1, S("a3fghij")); 2736bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345"), 2, 2, S("a34fghij")); 2737bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345"), 2, 3, S("a345fghij")); 2738bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345"), 2, 4, S("a345fghij")); 2739bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345"), 4, 0, S("afghij")); 2740bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345"), 4, 1, S("a5fghij")); 2741bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345"), 4, 2, S("a5fghij")); 2742bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345"), 5, 0, S("afghij")); 2743bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345"), 5, 1, S("afghij")); 2744bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345"), 6, 0, S("can't happen")); 2745bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("1234567890"), 0, 0, S("afghij")); 2746bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("1234567890"), 0, 1, S("a1fghij")); 2747bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("1234567890"), 0, 5, S("a12345fghij")); 2748bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("1234567890"), 0, 9, S("a123456789fghij")); 2749bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("1234567890"), 0, 10, S("a1234567890fghij")); 2750bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("1234567890"), 0, 11, S("a1234567890fghij")); 2751bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("1234567890"), 1, 0, S("afghij")); 2752bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("1234567890"), 1, 1, S("a2fghij")); 2753bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("1234567890"), 1, 4, S("a2345fghij")); 2754bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("1234567890"), 1, 8, S("a23456789fghij")); 2755bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("1234567890"), 1, 9, S("a234567890fghij")); 2756bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("1234567890"), 1, 10, S("a234567890fghij")); 2757bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("1234567890"), 5, 0, S("afghij")); 2758bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("1234567890"), 5, 1, S("a6fghij")); 2759bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("1234567890"), 5, 2, S("a67fghij")); 2760bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("1234567890"), 5, 4, S("a6789fghij")); 2761bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("1234567890"), 5, 5, S("a67890fghij")); 2762bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("1234567890"), 5, 6, S("a67890fghij")); 2763bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("1234567890"), 9, 0, S("afghij")); 2764bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("1234567890"), 9, 1, S("a0fghij")); 2765bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("1234567890"), 9, 2, S("a0fghij")); 2766bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("1234567890"), 10, 0, S("afghij")); 2767bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("1234567890"), 10, 1, S("afghij")); 2768bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("1234567890"), 11, 0, S("can't happen")); 2769bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 0, 0, S("afghij")); 2770bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 0, 1, S("a1fghij")); 2771bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 0, 10, S("a1234567890fghij")); 2772bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 0, 19, S("a1234567890123456789fghij")); 2773bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 0, 20, S("a12345678901234567890fghij")); 2774bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 0, 21, S("a12345678901234567890fghij")); 2775bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 1, 0, S("afghij")); 2776bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 1, 1, S("a2fghij")); 2777bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 1, 9, S("a234567890fghij")); 2778bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 1, 18, S("a234567890123456789fghij")); 2779bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 1, 19, S("a2345678901234567890fghij")); 2780bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 1, 20, S("a2345678901234567890fghij")); 2781bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 10, 0, S("afghij")); 2782bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 10, 1, S("a1fghij")); 2783bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 10, 5, S("a12345fghij")); 2784bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 10, 9, S("a123456789fghij")); 2785bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 10, 10, S("a1234567890fghij")); 2786bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 10, 11, S("a1234567890fghij")); 2787bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 19, 0, S("afghij")); 2788bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 19, 1, S("a0fghij")); 2789bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 19, 2, S("a0fghij")); 2790bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 20, 0, S("afghij")); 2791bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 20, 1, S("afghij")); 2792bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 4, S("12345678901234567890"), 21, 0, S("can't happen")); 2793bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S(""), 0, 0, S("aj")); 2794bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S(""), 0, 1, S("aj")); 2795bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S(""), 1, 0, S("can't happen")); 2796bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345"), 0, 0, S("aj")); 2797bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345"), 0, 1, S("a1j")); 2798bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345"), 0, 2, S("a12j")); 2799bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345"), 0, 4, S("a1234j")); 2800bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345"), 0, 5, S("a12345j")); 2801bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345"), 0, 6, S("a12345j")); 2802bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345"), 1, 0, S("aj")); 2803bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 2804bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 28059dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 2806bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test26() 2807bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 2808bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345"), 1, 1, S("a2j")); 2809bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345"), 1, 2, S("a23j")); 2810bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345"), 1, 3, S("a234j")); 2811bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345"), 1, 4, S("a2345j")); 2812bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345"), 1, 5, S("a2345j")); 2813bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345"), 2, 0, S("aj")); 2814bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345"), 2, 1, S("a3j")); 2815bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345"), 2, 2, S("a34j")); 2816bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345"), 2, 3, S("a345j")); 2817bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345"), 2, 4, S("a345j")); 2818bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345"), 4, 0, S("aj")); 2819bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345"), 4, 1, S("a5j")); 2820bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345"), 4, 2, S("a5j")); 2821bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345"), 5, 0, S("aj")); 2822bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345"), 5, 1, S("aj")); 2823bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345"), 6, 0, S("can't happen")); 2824bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("1234567890"), 0, 0, S("aj")); 2825bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("1234567890"), 0, 1, S("a1j")); 2826bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("1234567890"), 0, 5, S("a12345j")); 2827bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("1234567890"), 0, 9, S("a123456789j")); 2828bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("1234567890"), 0, 10, S("a1234567890j")); 2829bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("1234567890"), 0, 11, S("a1234567890j")); 2830bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("1234567890"), 1, 0, S("aj")); 2831bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("1234567890"), 1, 1, S("a2j")); 2832bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("1234567890"), 1, 4, S("a2345j")); 2833bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("1234567890"), 1, 8, S("a23456789j")); 2834bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("1234567890"), 1, 9, S("a234567890j")); 2835bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("1234567890"), 1, 10, S("a234567890j")); 2836bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("1234567890"), 5, 0, S("aj")); 2837bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("1234567890"), 5, 1, S("a6j")); 2838bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("1234567890"), 5, 2, S("a67j")); 2839bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("1234567890"), 5, 4, S("a6789j")); 2840bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("1234567890"), 5, 5, S("a67890j")); 2841bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("1234567890"), 5, 6, S("a67890j")); 2842bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("1234567890"), 9, 0, S("aj")); 2843bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("1234567890"), 9, 1, S("a0j")); 2844bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("1234567890"), 9, 2, S("a0j")); 2845bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("1234567890"), 10, 0, S("aj")); 2846bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("1234567890"), 10, 1, S("aj")); 2847bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("1234567890"), 11, 0, S("can't happen")); 2848bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 0, 0, S("aj")); 2849bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 0, 1, S("a1j")); 2850bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 0, 10, S("a1234567890j")); 2851bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 0, 19, S("a1234567890123456789j")); 2852bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 0, 20, S("a12345678901234567890j")); 2853bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 0, 21, S("a12345678901234567890j")); 2854bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 1, 0, S("aj")); 2855bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 1, 1, S("a2j")); 2856bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 1, 9, S("a234567890j")); 2857bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 1, 18, S("a234567890123456789j")); 2858bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 1, 19, S("a2345678901234567890j")); 2859bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 1, 20, S("a2345678901234567890j")); 2860bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 10, 0, S("aj")); 2861bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 10, 1, S("a1j")); 2862bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 10, 5, S("a12345j")); 2863bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 10, 9, S("a123456789j")); 2864bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 10, 10, S("a1234567890j")); 2865bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 10, 11, S("a1234567890j")); 2866bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 19, 0, S("aj")); 2867bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 19, 1, S("a0j")); 2868bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 19, 2, S("a0j")); 2869bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 20, 0, S("aj")); 2870bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 20, 1, S("aj")); 2871bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 8, S("12345678901234567890"), 21, 0, S("can't happen")); 2872bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S(""), 0, 0, S("a")); 2873bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S(""), 0, 1, S("a")); 2874bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S(""), 1, 0, S("can't happen")); 2875bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345"), 0, 0, S("a")); 2876bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345"), 0, 1, S("a1")); 2877bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345"), 0, 2, S("a12")); 2878bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345"), 0, 4, S("a1234")); 2879bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345"), 0, 5, S("a12345")); 2880bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345"), 0, 6, S("a12345")); 2881bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345"), 1, 0, S("a")); 2882bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345"), 1, 1, S("a2")); 2883bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345"), 1, 2, S("a23")); 2884bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345"), 1, 3, S("a234")); 2885bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345"), 1, 4, S("a2345")); 2886bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345"), 1, 5, S("a2345")); 2887bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345"), 2, 0, S("a")); 2888bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345"), 2, 1, S("a3")); 2889bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345"), 2, 2, S("a34")); 2890bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345"), 2, 3, S("a345")); 2891bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345"), 2, 4, S("a345")); 2892bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345"), 4, 0, S("a")); 2893bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345"), 4, 1, S("a5")); 2894bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345"), 4, 2, S("a5")); 2895bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345"), 5, 0, S("a")); 2896bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345"), 5, 1, S("a")); 2897bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345"), 6, 0, S("can't happen")); 2898bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("1234567890"), 0, 0, S("a")); 2899bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("1234567890"), 0, 1, S("a1")); 2900bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("1234567890"), 0, 5, S("a12345")); 2901bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("1234567890"), 0, 9, S("a123456789")); 2902bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("1234567890"), 0, 10, S("a1234567890")); 2903bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("1234567890"), 0, 11, S("a1234567890")); 2904bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("1234567890"), 1, 0, S("a")); 2905bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("1234567890"), 1, 1, S("a2")); 2906bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("1234567890"), 1, 4, S("a2345")); 2907bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("1234567890"), 1, 8, S("a23456789")); 2908bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 2909bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 29109dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 2911bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test27() 2912bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 2913bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("1234567890"), 1, 9, S("a234567890")); 2914bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("1234567890"), 1, 10, S("a234567890")); 2915bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("1234567890"), 5, 0, S("a")); 2916bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("1234567890"), 5, 1, S("a6")); 2917bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("1234567890"), 5, 2, S("a67")); 2918bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("1234567890"), 5, 4, S("a6789")); 2919bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("1234567890"), 5, 5, S("a67890")); 2920bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("1234567890"), 5, 6, S("a67890")); 2921bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("1234567890"), 9, 0, S("a")); 2922bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("1234567890"), 9, 1, S("a0")); 2923bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("1234567890"), 9, 2, S("a0")); 2924bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("1234567890"), 10, 0, S("a")); 2925bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("1234567890"), 10, 1, S("a")); 2926bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("1234567890"), 11, 0, S("can't happen")); 2927bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 0, 0, S("a")); 2928bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 0, 1, S("a1")); 2929bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 0, 10, S("a1234567890")); 2930bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 0, 19, S("a1234567890123456789")); 2931bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 0, 20, S("a12345678901234567890")); 2932bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 0, 21, S("a12345678901234567890")); 2933bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 1, 0, S("a")); 2934bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 1, 1, S("a2")); 2935bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 1, 9, S("a234567890")); 2936bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 1, 18, S("a234567890123456789")); 2937bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 1, 19, S("a2345678901234567890")); 2938bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 1, 20, S("a2345678901234567890")); 2939bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 10, 0, S("a")); 2940bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 10, 1, S("a1")); 2941bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 10, 5, S("a12345")); 2942bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 10, 9, S("a123456789")); 2943bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 10, 10, S("a1234567890")); 2944bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 10, 11, S("a1234567890")); 2945bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 19, 0, S("a")); 2946bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 19, 1, S("a0")); 2947bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 19, 2, S("a0")); 2948bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 20, 0, S("a")); 2949bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 20, 1, S("a")); 2950bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 9, S("12345678901234567890"), 21, 0, S("can't happen")); 2951bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S(""), 0, 0, S("a")); 2952bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S(""), 0, 1, S("a")); 2953bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S(""), 1, 0, S("can't happen")); 2954bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345"), 0, 0, S("a")); 2955bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345"), 0, 1, S("a1")); 2956bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345"), 0, 2, S("a12")); 2957bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345"), 0, 4, S("a1234")); 2958bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345"), 0, 5, S("a12345")); 2959bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345"), 0, 6, S("a12345")); 2960bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345"), 1, 0, S("a")); 2961bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345"), 1, 1, S("a2")); 2962bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345"), 1, 2, S("a23")); 2963bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345"), 1, 3, S("a234")); 2964bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345"), 1, 4, S("a2345")); 2965bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345"), 1, 5, S("a2345")); 2966bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345"), 2, 0, S("a")); 2967bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345"), 2, 1, S("a3")); 2968bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345"), 2, 2, S("a34")); 2969bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345"), 2, 3, S("a345")); 2970bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345"), 2, 4, S("a345")); 2971bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345"), 4, 0, S("a")); 2972bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345"), 4, 1, S("a5")); 2973bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345"), 4, 2, S("a5")); 2974bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345"), 5, 0, S("a")); 2975bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345"), 5, 1, S("a")); 2976bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345"), 6, 0, S("can't happen")); 2977bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("1234567890"), 0, 0, S("a")); 2978bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("1234567890"), 0, 1, S("a1")); 2979bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("1234567890"), 0, 5, S("a12345")); 2980bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("1234567890"), 0, 9, S("a123456789")); 2981bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("1234567890"), 0, 10, S("a1234567890")); 2982bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("1234567890"), 0, 11, S("a1234567890")); 2983bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("1234567890"), 1, 0, S("a")); 2984bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("1234567890"), 1, 1, S("a2")); 2985bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("1234567890"), 1, 4, S("a2345")); 2986bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("1234567890"), 1, 8, S("a23456789")); 2987bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("1234567890"), 1, 9, S("a234567890")); 2988bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("1234567890"), 1, 10, S("a234567890")); 2989bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("1234567890"), 5, 0, S("a")); 2990bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("1234567890"), 5, 1, S("a6")); 2991bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("1234567890"), 5, 2, S("a67")); 2992bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("1234567890"), 5, 4, S("a6789")); 2993bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("1234567890"), 5, 5, S("a67890")); 2994bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("1234567890"), 5, 6, S("a67890")); 2995bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("1234567890"), 9, 0, S("a")); 2996bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("1234567890"), 9, 1, S("a0")); 2997bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("1234567890"), 9, 2, S("a0")); 2998bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("1234567890"), 10, 0, S("a")); 2999bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("1234567890"), 10, 1, S("a")); 3000bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("1234567890"), 11, 0, S("can't happen")); 3001bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 0, 0, S("a")); 3002bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 0, 1, S("a1")); 3003bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 0, 10, S("a1234567890")); 3004bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 0, 19, S("a1234567890123456789")); 3005bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 0, 20, S("a12345678901234567890")); 3006bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 0, 21, S("a12345678901234567890")); 3007bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 1, 0, S("a")); 3008bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 1, 1, S("a2")); 3009bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 1, 9, S("a234567890")); 3010bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 1, 18, S("a234567890123456789")); 3011bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 1, 19, S("a2345678901234567890")); 3012bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 1, 20, S("a2345678901234567890")); 3013bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 3014bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 30159dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 3016bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test28() 3017bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 3018bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 10, 0, S("a")); 3019bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 10, 1, S("a1")); 3020bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 10, 5, S("a12345")); 3021bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 10, 9, S("a123456789")); 3022bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 10, 10, S("a1234567890")); 3023bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 10, 11, S("a1234567890")); 3024bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 19, 0, S("a")); 3025bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 19, 1, S("a0")); 3026bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 19, 2, S("a0")); 3027bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 20, 0, S("a")); 3028bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 20, 1, S("a")); 3029bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 1, 10, S("12345678901234567890"), 21, 0, S("can't happen")); 3030bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S(""), 0, 0, S("abcdefghij")); 3031bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S(""), 0, 1, S("abcdefghij")); 3032bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S(""), 1, 0, S("can't happen")); 3033bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345"), 0, 0, S("abcdefghij")); 3034bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345"), 0, 1, S("abcde1fghij")); 3035bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345"), 0, 2, S("abcde12fghij")); 3036bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345"), 0, 4, S("abcde1234fghij")); 3037bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345"), 0, 5, S("abcde12345fghij")); 3038bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345"), 0, 6, S("abcde12345fghij")); 3039bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345"), 1, 0, S("abcdefghij")); 3040bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345"), 1, 1, S("abcde2fghij")); 3041bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345"), 1, 2, S("abcde23fghij")); 3042bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345"), 1, 3, S("abcde234fghij")); 3043bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345"), 1, 4, S("abcde2345fghij")); 3044bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345"), 1, 5, S("abcde2345fghij")); 3045bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345"), 2, 0, S("abcdefghij")); 3046bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345"), 2, 1, S("abcde3fghij")); 3047bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345"), 2, 2, S("abcde34fghij")); 3048bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345"), 2, 3, S("abcde345fghij")); 3049bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345"), 2, 4, S("abcde345fghij")); 3050bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345"), 4, 0, S("abcdefghij")); 3051bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345"), 4, 1, S("abcde5fghij")); 3052bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345"), 4, 2, S("abcde5fghij")); 3053bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345"), 5, 0, S("abcdefghij")); 3054bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345"), 5, 1, S("abcdefghij")); 3055bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345"), 6, 0, S("can't happen")); 3056bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("1234567890"), 0, 0, S("abcdefghij")); 3057bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("1234567890"), 0, 1, S("abcde1fghij")); 3058bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("1234567890"), 0, 5, S("abcde12345fghij")); 3059bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("1234567890"), 0, 9, S("abcde123456789fghij")); 3060bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("1234567890"), 0, 10, S("abcde1234567890fghij")); 3061bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("1234567890"), 0, 11, S("abcde1234567890fghij")); 3062bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("1234567890"), 1, 0, S("abcdefghij")); 3063bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("1234567890"), 1, 1, S("abcde2fghij")); 3064bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("1234567890"), 1, 4, S("abcde2345fghij")); 3065bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("1234567890"), 1, 8, S("abcde23456789fghij")); 3066bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("1234567890"), 1, 9, S("abcde234567890fghij")); 3067bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("1234567890"), 1, 10, S("abcde234567890fghij")); 3068bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("1234567890"), 5, 0, S("abcdefghij")); 3069bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("1234567890"), 5, 1, S("abcde6fghij")); 3070bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("1234567890"), 5, 2, S("abcde67fghij")); 3071bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("1234567890"), 5, 4, S("abcde6789fghij")); 3072bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("1234567890"), 5, 5, S("abcde67890fghij")); 3073bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("1234567890"), 5, 6, S("abcde67890fghij")); 3074bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("1234567890"), 9, 0, S("abcdefghij")); 3075bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("1234567890"), 9, 1, S("abcde0fghij")); 3076bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("1234567890"), 9, 2, S("abcde0fghij")); 3077bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("1234567890"), 10, 0, S("abcdefghij")); 3078bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("1234567890"), 10, 1, S("abcdefghij")); 3079bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("1234567890"), 11, 0, S("can't happen")); 3080bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 0, 0, S("abcdefghij")); 3081bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 0, 1, S("abcde1fghij")); 3082bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 0, 10, S("abcde1234567890fghij")); 3083bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 0, 19, S("abcde1234567890123456789fghij")); 3084bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 0, 20, S("abcde12345678901234567890fghij")); 3085bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 0, 21, S("abcde12345678901234567890fghij")); 3086bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 1, 0, S("abcdefghij")); 3087bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 1, 1, S("abcde2fghij")); 3088bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 1, 9, S("abcde234567890fghij")); 3089bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 1, 18, S("abcde234567890123456789fghij")); 3090bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 1, 19, S("abcde2345678901234567890fghij")); 3091bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 1, 20, S("abcde2345678901234567890fghij")); 3092bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 10, 0, S("abcdefghij")); 3093bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 10, 1, S("abcde1fghij")); 3094bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 10, 5, S("abcde12345fghij")); 3095bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 10, 9, S("abcde123456789fghij")); 3096bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 10, 10, S("abcde1234567890fghij")); 3097bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 10, 11, S("abcde1234567890fghij")); 3098bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 19, 0, S("abcdefghij")); 3099bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 19, 1, S("abcde0fghij")); 3100bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 19, 2, S("abcde0fghij")); 3101bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 20, 0, S("abcdefghij")); 3102bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 20, 1, S("abcdefghij")); 3103bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 0, S("12345678901234567890"), 21, 0, S("can't happen")); 3104bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S(""), 0, 0, S("abcdeghij")); 3105bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S(""), 0, 1, S("abcdeghij")); 3106bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S(""), 1, 0, S("can't happen")); 3107bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345"), 0, 0, S("abcdeghij")); 3108bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345"), 0, 1, S("abcde1ghij")); 3109bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345"), 0, 2, S("abcde12ghij")); 3110bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345"), 0, 4, S("abcde1234ghij")); 3111bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345"), 0, 5, S("abcde12345ghij")); 3112bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345"), 0, 6, S("abcde12345ghij")); 3113bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345"), 1, 0, S("abcdeghij")); 3114bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345"), 1, 1, S("abcde2ghij")); 3115bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345"), 1, 2, S("abcde23ghij")); 3116bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345"), 1, 3, S("abcde234ghij")); 3117bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345"), 1, 4, S("abcde2345ghij")); 3118bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 3119bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 31209dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 3121bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test29() 3122bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 3123bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345"), 1, 5, S("abcde2345ghij")); 3124bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345"), 2, 0, S("abcdeghij")); 3125bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345"), 2, 1, S("abcde3ghij")); 3126bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345"), 2, 2, S("abcde34ghij")); 3127bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345"), 2, 3, S("abcde345ghij")); 3128bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345"), 2, 4, S("abcde345ghij")); 3129bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345"), 4, 0, S("abcdeghij")); 3130bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345"), 4, 1, S("abcde5ghij")); 3131bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345"), 4, 2, S("abcde5ghij")); 3132bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345"), 5, 0, S("abcdeghij")); 3133bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345"), 5, 1, S("abcdeghij")); 3134bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345"), 6, 0, S("can't happen")); 3135bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("1234567890"), 0, 0, S("abcdeghij")); 3136bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("1234567890"), 0, 1, S("abcde1ghij")); 3137bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("1234567890"), 0, 5, S("abcde12345ghij")); 3138bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("1234567890"), 0, 9, S("abcde123456789ghij")); 3139bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("1234567890"), 0, 10, S("abcde1234567890ghij")); 3140bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("1234567890"), 0, 11, S("abcde1234567890ghij")); 3141bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("1234567890"), 1, 0, S("abcdeghij")); 3142bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("1234567890"), 1, 1, S("abcde2ghij")); 3143bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("1234567890"), 1, 4, S("abcde2345ghij")); 3144bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("1234567890"), 1, 8, S("abcde23456789ghij")); 3145bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("1234567890"), 1, 9, S("abcde234567890ghij")); 3146bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("1234567890"), 1, 10, S("abcde234567890ghij")); 3147bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("1234567890"), 5, 0, S("abcdeghij")); 3148bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("1234567890"), 5, 1, S("abcde6ghij")); 3149bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("1234567890"), 5, 2, S("abcde67ghij")); 3150bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("1234567890"), 5, 4, S("abcde6789ghij")); 3151bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("1234567890"), 5, 5, S("abcde67890ghij")); 3152bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("1234567890"), 5, 6, S("abcde67890ghij")); 3153bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("1234567890"), 9, 0, S("abcdeghij")); 3154bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("1234567890"), 9, 1, S("abcde0ghij")); 3155bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("1234567890"), 9, 2, S("abcde0ghij")); 3156bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("1234567890"), 10, 0, S("abcdeghij")); 3157bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("1234567890"), 10, 1, S("abcdeghij")); 3158bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("1234567890"), 11, 0, S("can't happen")); 3159bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 0, 0, S("abcdeghij")); 3160bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 0, 1, S("abcde1ghij")); 3161bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 0, 10, S("abcde1234567890ghij")); 3162bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 0, 19, S("abcde1234567890123456789ghij")); 3163bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 0, 20, S("abcde12345678901234567890ghij")); 3164bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 0, 21, S("abcde12345678901234567890ghij")); 3165bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 1, 0, S("abcdeghij")); 3166bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 1, 1, S("abcde2ghij")); 3167bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 1, 9, S("abcde234567890ghij")); 3168bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 1, 18, S("abcde234567890123456789ghij")); 3169bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 1, 19, S("abcde2345678901234567890ghij")); 3170bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 1, 20, S("abcde2345678901234567890ghij")); 3171bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 10, 0, S("abcdeghij")); 3172bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 10, 1, S("abcde1ghij")); 3173bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 10, 5, S("abcde12345ghij")); 3174bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 10, 9, S("abcde123456789ghij")); 3175bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 10, 10, S("abcde1234567890ghij")); 3176bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 10, 11, S("abcde1234567890ghij")); 3177bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 19, 0, S("abcdeghij")); 3178bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 19, 1, S("abcde0ghij")); 3179bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 19, 2, S("abcde0ghij")); 3180bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 20, 0, S("abcdeghij")); 3181bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 20, 1, S("abcdeghij")); 3182bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 1, S("12345678901234567890"), 21, 0, S("can't happen")); 3183bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S(""), 0, 0, S("abcdehij")); 3184bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S(""), 0, 1, S("abcdehij")); 3185bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S(""), 1, 0, S("can't happen")); 3186bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345"), 0, 0, S("abcdehij")); 3187bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345"), 0, 1, S("abcde1hij")); 3188bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345"), 0, 2, S("abcde12hij")); 3189bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345"), 0, 4, S("abcde1234hij")); 3190bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345"), 0, 5, S("abcde12345hij")); 3191bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345"), 0, 6, S("abcde12345hij")); 3192bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345"), 1, 0, S("abcdehij")); 3193bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345"), 1, 1, S("abcde2hij")); 3194bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345"), 1, 2, S("abcde23hij")); 3195bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345"), 1, 3, S("abcde234hij")); 3196bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345"), 1, 4, S("abcde2345hij")); 3197bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345"), 1, 5, S("abcde2345hij")); 3198bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345"), 2, 0, S("abcdehij")); 3199bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345"), 2, 1, S("abcde3hij")); 3200bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345"), 2, 2, S("abcde34hij")); 3201bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345"), 2, 3, S("abcde345hij")); 3202bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345"), 2, 4, S("abcde345hij")); 3203bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345"), 4, 0, S("abcdehij")); 3204bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345"), 4, 1, S("abcde5hij")); 3205bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345"), 4, 2, S("abcde5hij")); 3206bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345"), 5, 0, S("abcdehij")); 3207bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345"), 5, 1, S("abcdehij")); 3208bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345"), 6, 0, S("can't happen")); 3209bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("1234567890"), 0, 0, S("abcdehij")); 3210bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("1234567890"), 0, 1, S("abcde1hij")); 3211bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("1234567890"), 0, 5, S("abcde12345hij")); 3212bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("1234567890"), 0, 9, S("abcde123456789hij")); 3213bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("1234567890"), 0, 10, S("abcde1234567890hij")); 3214bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("1234567890"), 0, 11, S("abcde1234567890hij")); 3215bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("1234567890"), 1, 0, S("abcdehij")); 3216bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("1234567890"), 1, 1, S("abcde2hij")); 3217bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("1234567890"), 1, 4, S("abcde2345hij")); 3218bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("1234567890"), 1, 8, S("abcde23456789hij")); 3219bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("1234567890"), 1, 9, S("abcde234567890hij")); 3220bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("1234567890"), 1, 10, S("abcde234567890hij")); 3221bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("1234567890"), 5, 0, S("abcdehij")); 3222bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("1234567890"), 5, 1, S("abcde6hij")); 3223bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 3224bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 32259dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 3226bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test30() 3227bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 3228bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("1234567890"), 5, 2, S("abcde67hij")); 3229bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("1234567890"), 5, 4, S("abcde6789hij")); 3230bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("1234567890"), 5, 5, S("abcde67890hij")); 3231bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("1234567890"), 5, 6, S("abcde67890hij")); 3232bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("1234567890"), 9, 0, S("abcdehij")); 3233bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("1234567890"), 9, 1, S("abcde0hij")); 3234bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("1234567890"), 9, 2, S("abcde0hij")); 3235bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("1234567890"), 10, 0, S("abcdehij")); 3236bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("1234567890"), 10, 1, S("abcdehij")); 3237bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("1234567890"), 11, 0, S("can't happen")); 3238bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 0, 0, S("abcdehij")); 3239bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 0, 1, S("abcde1hij")); 3240bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 0, 10, S("abcde1234567890hij")); 3241bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 0, 19, S("abcde1234567890123456789hij")); 3242bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 0, 20, S("abcde12345678901234567890hij")); 3243bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 0, 21, S("abcde12345678901234567890hij")); 3244bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 1, 0, S("abcdehij")); 3245bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 1, 1, S("abcde2hij")); 3246bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 1, 9, S("abcde234567890hij")); 3247bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 1, 18, S("abcde234567890123456789hij")); 3248bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 1, 19, S("abcde2345678901234567890hij")); 3249bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 1, 20, S("abcde2345678901234567890hij")); 3250bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 10, 0, S("abcdehij")); 3251bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 10, 1, S("abcde1hij")); 3252bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 10, 5, S("abcde12345hij")); 3253bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 10, 9, S("abcde123456789hij")); 3254bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 10, 10, S("abcde1234567890hij")); 3255bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 10, 11, S("abcde1234567890hij")); 3256bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 19, 0, S("abcdehij")); 3257bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 19, 1, S("abcde0hij")); 3258bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 19, 2, S("abcde0hij")); 3259bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 20, 0, S("abcdehij")); 3260bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 20, 1, S("abcdehij")); 3261bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 2, S("12345678901234567890"), 21, 0, S("can't happen")); 3262bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S(""), 0, 0, S("abcdej")); 3263bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S(""), 0, 1, S("abcdej")); 3264bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S(""), 1, 0, S("can't happen")); 3265bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345"), 0, 0, S("abcdej")); 3266bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345"), 0, 1, S("abcde1j")); 3267bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345"), 0, 2, S("abcde12j")); 3268bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345"), 0, 4, S("abcde1234j")); 3269bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345"), 0, 5, S("abcde12345j")); 3270bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345"), 0, 6, S("abcde12345j")); 3271bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345"), 1, 0, S("abcdej")); 3272bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345"), 1, 1, S("abcde2j")); 3273bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345"), 1, 2, S("abcde23j")); 3274bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345"), 1, 3, S("abcde234j")); 3275bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345"), 1, 4, S("abcde2345j")); 3276bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345"), 1, 5, S("abcde2345j")); 3277bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345"), 2, 0, S("abcdej")); 3278bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345"), 2, 1, S("abcde3j")); 3279bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345"), 2, 2, S("abcde34j")); 3280bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345"), 2, 3, S("abcde345j")); 3281bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345"), 2, 4, S("abcde345j")); 3282bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345"), 4, 0, S("abcdej")); 3283bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345"), 4, 1, S("abcde5j")); 3284bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345"), 4, 2, S("abcde5j")); 3285bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345"), 5, 0, S("abcdej")); 3286bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345"), 5, 1, S("abcdej")); 3287bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345"), 6, 0, S("can't happen")); 3288bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("1234567890"), 0, 0, S("abcdej")); 3289bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("1234567890"), 0, 1, S("abcde1j")); 3290bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("1234567890"), 0, 5, S("abcde12345j")); 3291bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("1234567890"), 0, 9, S("abcde123456789j")); 3292bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("1234567890"), 0, 10, S("abcde1234567890j")); 3293bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("1234567890"), 0, 11, S("abcde1234567890j")); 3294bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("1234567890"), 1, 0, S("abcdej")); 3295bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("1234567890"), 1, 1, S("abcde2j")); 3296bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("1234567890"), 1, 4, S("abcde2345j")); 3297bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("1234567890"), 1, 8, S("abcde23456789j")); 3298bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("1234567890"), 1, 9, S("abcde234567890j")); 3299bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("1234567890"), 1, 10, S("abcde234567890j")); 3300bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("1234567890"), 5, 0, S("abcdej")); 3301bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("1234567890"), 5, 1, S("abcde6j")); 3302bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("1234567890"), 5, 2, S("abcde67j")); 3303bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("1234567890"), 5, 4, S("abcde6789j")); 3304bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("1234567890"), 5, 5, S("abcde67890j")); 3305bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("1234567890"), 5, 6, S("abcde67890j")); 3306bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("1234567890"), 9, 0, S("abcdej")); 3307bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("1234567890"), 9, 1, S("abcde0j")); 3308bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("1234567890"), 9, 2, S("abcde0j")); 3309bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("1234567890"), 10, 0, S("abcdej")); 3310bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("1234567890"), 10, 1, S("abcdej")); 3311bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("1234567890"), 11, 0, S("can't happen")); 3312bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 0, 0, S("abcdej")); 3313bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 0, 1, S("abcde1j")); 3314bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 0, 10, S("abcde1234567890j")); 3315bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 0, 19, S("abcde1234567890123456789j")); 3316bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 0, 20, S("abcde12345678901234567890j")); 3317bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 0, 21, S("abcde12345678901234567890j")); 3318bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 1, 0, S("abcdej")); 3319bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 1, 1, S("abcde2j")); 3320bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 1, 9, S("abcde234567890j")); 3321bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 1, 18, S("abcde234567890123456789j")); 3322bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 1, 19, S("abcde2345678901234567890j")); 3323bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 1, 20, S("abcde2345678901234567890j")); 3324bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 10, 0, S("abcdej")); 3325bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 10, 1, S("abcde1j")); 3326bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 10, 5, S("abcde12345j")); 3327bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 10, 9, S("abcde123456789j")); 3328bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 3329bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 33309dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 3331bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test31() 3332bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 3333bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 10, 10, S("abcde1234567890j")); 3334bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 10, 11, S("abcde1234567890j")); 3335bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 19, 0, S("abcdej")); 3336bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 19, 1, S("abcde0j")); 3337bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 19, 2, S("abcde0j")); 3338bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 20, 0, S("abcdej")); 3339bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 20, 1, S("abcdej")); 3340bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 4, S("12345678901234567890"), 21, 0, S("can't happen")); 3341bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S(""), 0, 0, S("abcde")); 3342bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S(""), 0, 1, S("abcde")); 3343bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S(""), 1, 0, S("can't happen")); 3344bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345"), 0, 0, S("abcde")); 3345bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345"), 0, 1, S("abcde1")); 3346bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345"), 0, 2, S("abcde12")); 3347bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345"), 0, 4, S("abcde1234")); 3348bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345"), 0, 5, S("abcde12345")); 3349bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345"), 0, 6, S("abcde12345")); 3350bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345"), 1, 0, S("abcde")); 3351bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345"), 1, 1, S("abcde2")); 3352bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345"), 1, 2, S("abcde23")); 3353bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345"), 1, 3, S("abcde234")); 3354bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345"), 1, 4, S("abcde2345")); 3355bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345"), 1, 5, S("abcde2345")); 3356bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345"), 2, 0, S("abcde")); 3357bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345"), 2, 1, S("abcde3")); 3358bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345"), 2, 2, S("abcde34")); 3359bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345"), 2, 3, S("abcde345")); 3360bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345"), 2, 4, S("abcde345")); 3361bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345"), 4, 0, S("abcde")); 3362bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345"), 4, 1, S("abcde5")); 3363bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345"), 4, 2, S("abcde5")); 3364bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345"), 5, 0, S("abcde")); 3365bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345"), 5, 1, S("abcde")); 3366bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345"), 6, 0, S("can't happen")); 3367bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("1234567890"), 0, 0, S("abcde")); 3368bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("1234567890"), 0, 1, S("abcde1")); 3369bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("1234567890"), 0, 5, S("abcde12345")); 3370bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("1234567890"), 0, 9, S("abcde123456789")); 3371bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("1234567890"), 0, 10, S("abcde1234567890")); 3372bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("1234567890"), 0, 11, S("abcde1234567890")); 3373bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("1234567890"), 1, 0, S("abcde")); 3374bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("1234567890"), 1, 1, S("abcde2")); 3375bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("1234567890"), 1, 4, S("abcde2345")); 3376bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("1234567890"), 1, 8, S("abcde23456789")); 3377bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("1234567890"), 1, 9, S("abcde234567890")); 3378bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("1234567890"), 1, 10, S("abcde234567890")); 3379bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("1234567890"), 5, 0, S("abcde")); 3380bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("1234567890"), 5, 1, S("abcde6")); 3381bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("1234567890"), 5, 2, S("abcde67")); 3382bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("1234567890"), 5, 4, S("abcde6789")); 3383bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("1234567890"), 5, 5, S("abcde67890")); 3384bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("1234567890"), 5, 6, S("abcde67890")); 3385bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("1234567890"), 9, 0, S("abcde")); 3386bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("1234567890"), 9, 1, S("abcde0")); 3387bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("1234567890"), 9, 2, S("abcde0")); 3388bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("1234567890"), 10, 0, S("abcde")); 3389bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("1234567890"), 10, 1, S("abcde")); 3390bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("1234567890"), 11, 0, S("can't happen")); 3391bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 0, 0, S("abcde")); 3392bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 0, 1, S("abcde1")); 3393bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 0, 10, S("abcde1234567890")); 3394bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 0, 19, S("abcde1234567890123456789")); 3395bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 0, 20, S("abcde12345678901234567890")); 3396bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 0, 21, S("abcde12345678901234567890")); 3397bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 1, 0, S("abcde")); 3398bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 1, 1, S("abcde2")); 3399bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 1, 9, S("abcde234567890")); 3400bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 1, 18, S("abcde234567890123456789")); 3401bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 1, 19, S("abcde2345678901234567890")); 3402bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 1, 20, S("abcde2345678901234567890")); 3403bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 10, 0, S("abcde")); 3404bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 10, 1, S("abcde1")); 3405bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 10, 5, S("abcde12345")); 3406bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 10, 9, S("abcde123456789")); 3407bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 10, 10, S("abcde1234567890")); 3408bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 10, 11, S("abcde1234567890")); 3409bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 19, 0, S("abcde")); 3410bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 19, 1, S("abcde0")); 3411bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 19, 2, S("abcde0")); 3412bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 20, 0, S("abcde")); 3413bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 20, 1, S("abcde")); 3414bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 5, S("12345678901234567890"), 21, 0, S("can't happen")); 3415bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S(""), 0, 0, S("abcde")); 3416bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S(""), 0, 1, S("abcde")); 3417bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S(""), 1, 0, S("can't happen")); 3418bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345"), 0, 0, S("abcde")); 3419bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345"), 0, 1, S("abcde1")); 3420bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345"), 0, 2, S("abcde12")); 3421bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345"), 0, 4, S("abcde1234")); 3422bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345"), 0, 5, S("abcde12345")); 3423bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345"), 0, 6, S("abcde12345")); 3424bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345"), 1, 0, S("abcde")); 3425bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345"), 1, 1, S("abcde2")); 3426bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345"), 1, 2, S("abcde23")); 3427bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345"), 1, 3, S("abcde234")); 3428bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345"), 1, 4, S("abcde2345")); 3429bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345"), 1, 5, S("abcde2345")); 3430bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345"), 2, 0, S("abcde")); 3431bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345"), 2, 1, S("abcde3")); 3432bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345"), 2, 2, S("abcde34")); 3433bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 3434bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 34359dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 3436bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test32() 3437bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 3438bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345"), 2, 3, S("abcde345")); 3439bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345"), 2, 4, S("abcde345")); 3440bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345"), 4, 0, S("abcde")); 3441bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345"), 4, 1, S("abcde5")); 3442bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345"), 4, 2, S("abcde5")); 3443bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345"), 5, 0, S("abcde")); 3444bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345"), 5, 1, S("abcde")); 3445bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345"), 6, 0, S("can't happen")); 3446bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("1234567890"), 0, 0, S("abcde")); 3447bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("1234567890"), 0, 1, S("abcde1")); 3448bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("1234567890"), 0, 5, S("abcde12345")); 3449bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("1234567890"), 0, 9, S("abcde123456789")); 3450bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("1234567890"), 0, 10, S("abcde1234567890")); 3451bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("1234567890"), 0, 11, S("abcde1234567890")); 3452bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("1234567890"), 1, 0, S("abcde")); 3453bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("1234567890"), 1, 1, S("abcde2")); 3454bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("1234567890"), 1, 4, S("abcde2345")); 3455bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("1234567890"), 1, 8, S("abcde23456789")); 3456bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("1234567890"), 1, 9, S("abcde234567890")); 3457bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("1234567890"), 1, 10, S("abcde234567890")); 3458bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("1234567890"), 5, 0, S("abcde")); 3459bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("1234567890"), 5, 1, S("abcde6")); 3460bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("1234567890"), 5, 2, S("abcde67")); 3461bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("1234567890"), 5, 4, S("abcde6789")); 3462bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("1234567890"), 5, 5, S("abcde67890")); 3463bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("1234567890"), 5, 6, S("abcde67890")); 3464bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("1234567890"), 9, 0, S("abcde")); 3465bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("1234567890"), 9, 1, S("abcde0")); 3466bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("1234567890"), 9, 2, S("abcde0")); 3467bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("1234567890"), 10, 0, S("abcde")); 3468bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("1234567890"), 10, 1, S("abcde")); 3469bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("1234567890"), 11, 0, S("can't happen")); 3470bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 0, 0, S("abcde")); 3471bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 0, 1, S("abcde1")); 3472bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 0, 10, S("abcde1234567890")); 3473bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 0, 19, S("abcde1234567890123456789")); 3474bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 0, 20, S("abcde12345678901234567890")); 3475bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 0, 21, S("abcde12345678901234567890")); 3476bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 1, 0, S("abcde")); 3477bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 1, 1, S("abcde2")); 3478bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 1, 9, S("abcde234567890")); 3479bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 1, 18, S("abcde234567890123456789")); 3480bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 1, 19, S("abcde2345678901234567890")); 3481bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 1, 20, S("abcde2345678901234567890")); 3482bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 10, 0, S("abcde")); 3483bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 10, 1, S("abcde1")); 3484bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 10, 5, S("abcde12345")); 3485bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 10, 9, S("abcde123456789")); 3486bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 10, 10, S("abcde1234567890")); 3487bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 10, 11, S("abcde1234567890")); 3488bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 19, 0, S("abcde")); 3489bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 19, 1, S("abcde0")); 3490bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 19, 2, S("abcde0")); 3491bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 20, 0, S("abcde")); 3492bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 20, 1, S("abcde")); 3493bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 5, 6, S("12345678901234567890"), 21, 0, S("can't happen")); 3494bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S(""), 0, 0, S("abcdefghij")); 3495bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S(""), 0, 1, S("abcdefghij")); 3496bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S(""), 1, 0, S("can't happen")); 3497bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345"), 0, 0, S("abcdefghij")); 3498bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345"), 0, 1, S("abcdefghi1j")); 3499bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345"), 0, 2, S("abcdefghi12j")); 3500bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345"), 0, 4, S("abcdefghi1234j")); 3501bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345"), 0, 5, S("abcdefghi12345j")); 3502bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345"), 0, 6, S("abcdefghi12345j")); 3503bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345"), 1, 0, S("abcdefghij")); 3504bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345"), 1, 1, S("abcdefghi2j")); 3505bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345"), 1, 2, S("abcdefghi23j")); 3506bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345"), 1, 3, S("abcdefghi234j")); 3507bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345"), 1, 4, S("abcdefghi2345j")); 3508bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345"), 1, 5, S("abcdefghi2345j")); 3509bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345"), 2, 0, S("abcdefghij")); 3510bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345"), 2, 1, S("abcdefghi3j")); 3511bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345"), 2, 2, S("abcdefghi34j")); 3512bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345"), 2, 3, S("abcdefghi345j")); 3513bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345"), 2, 4, S("abcdefghi345j")); 3514bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345"), 4, 0, S("abcdefghij")); 3515bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345"), 4, 1, S("abcdefghi5j")); 3516bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345"), 4, 2, S("abcdefghi5j")); 3517bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345"), 5, 0, S("abcdefghij")); 3518bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345"), 5, 1, S("abcdefghij")); 3519bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345"), 6, 0, S("can't happen")); 3520bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("1234567890"), 0, 0, S("abcdefghij")); 3521bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("1234567890"), 0, 1, S("abcdefghi1j")); 3522bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("1234567890"), 0, 5, S("abcdefghi12345j")); 3523bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("1234567890"), 0, 9, S("abcdefghi123456789j")); 3524bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("1234567890"), 0, 10, S("abcdefghi1234567890j")); 3525bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("1234567890"), 0, 11, S("abcdefghi1234567890j")); 3526bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("1234567890"), 1, 0, S("abcdefghij")); 3527bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("1234567890"), 1, 1, S("abcdefghi2j")); 3528bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("1234567890"), 1, 4, S("abcdefghi2345j")); 3529bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("1234567890"), 1, 8, S("abcdefghi23456789j")); 3530bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("1234567890"), 1, 9, S("abcdefghi234567890j")); 3531bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("1234567890"), 1, 10, S("abcdefghi234567890j")); 3532bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("1234567890"), 5, 0, S("abcdefghij")); 3533bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("1234567890"), 5, 1, S("abcdefghi6j")); 3534bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("1234567890"), 5, 2, S("abcdefghi67j")); 3535bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("1234567890"), 5, 4, S("abcdefghi6789j")); 3536bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("1234567890"), 5, 5, S("abcdefghi67890j")); 3537bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("1234567890"), 5, 6, S("abcdefghi67890j")); 3538bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 3539bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 35409dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 3541bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test33() 3542bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 3543bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("1234567890"), 9, 0, S("abcdefghij")); 3544bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("1234567890"), 9, 1, S("abcdefghi0j")); 3545bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("1234567890"), 9, 2, S("abcdefghi0j")); 3546bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("1234567890"), 10, 0, S("abcdefghij")); 3547bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("1234567890"), 10, 1, S("abcdefghij")); 3548bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("1234567890"), 11, 0, S("can't happen")); 3549bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 0, 0, S("abcdefghij")); 3550bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 0, 1, S("abcdefghi1j")); 3551bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 0, 10, S("abcdefghi1234567890j")); 3552bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 0, 19, S("abcdefghi1234567890123456789j")); 3553bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 0, 20, S("abcdefghi12345678901234567890j")); 3554bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 0, 21, S("abcdefghi12345678901234567890j")); 3555bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 1, 0, S("abcdefghij")); 3556bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 1, 1, S("abcdefghi2j")); 3557bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 1, 9, S("abcdefghi234567890j")); 3558bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 1, 18, S("abcdefghi234567890123456789j")); 3559bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 1, 19, S("abcdefghi2345678901234567890j")); 3560bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 1, 20, S("abcdefghi2345678901234567890j")); 3561bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 10, 0, S("abcdefghij")); 3562bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 10, 1, S("abcdefghi1j")); 3563bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 10, 5, S("abcdefghi12345j")); 3564bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 10, 9, S("abcdefghi123456789j")); 3565bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 10, 10, S("abcdefghi1234567890j")); 3566bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 10, 11, S("abcdefghi1234567890j")); 3567bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 19, 0, S("abcdefghij")); 3568bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 19, 1, S("abcdefghi0j")); 3569bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 19, 2, S("abcdefghi0j")); 3570bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 20, 0, S("abcdefghij")); 3571bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 20, 1, S("abcdefghij")); 3572bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 0, S("12345678901234567890"), 21, 0, S("can't happen")); 3573bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S(""), 0, 0, S("abcdefghi")); 3574bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S(""), 0, 1, S("abcdefghi")); 3575bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S(""), 1, 0, S("can't happen")); 3576bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345"), 0, 0, S("abcdefghi")); 3577bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345"), 0, 1, S("abcdefghi1")); 3578bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345"), 0, 2, S("abcdefghi12")); 3579bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345"), 0, 4, S("abcdefghi1234")); 3580bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345"), 0, 5, S("abcdefghi12345")); 3581bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345"), 0, 6, S("abcdefghi12345")); 3582bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345"), 1, 0, S("abcdefghi")); 3583bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345"), 1, 1, S("abcdefghi2")); 3584bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345"), 1, 2, S("abcdefghi23")); 3585bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345"), 1, 3, S("abcdefghi234")); 3586bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345"), 1, 4, S("abcdefghi2345")); 3587bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345"), 1, 5, S("abcdefghi2345")); 3588bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345"), 2, 0, S("abcdefghi")); 3589bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345"), 2, 1, S("abcdefghi3")); 3590bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345"), 2, 2, S("abcdefghi34")); 3591bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345"), 2, 3, S("abcdefghi345")); 3592bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345"), 2, 4, S("abcdefghi345")); 3593bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345"), 4, 0, S("abcdefghi")); 3594bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345"), 4, 1, S("abcdefghi5")); 3595bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345"), 4, 2, S("abcdefghi5")); 3596bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345"), 5, 0, S("abcdefghi")); 3597bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345"), 5, 1, S("abcdefghi")); 3598bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345"), 6, 0, S("can't happen")); 3599bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("1234567890"), 0, 0, S("abcdefghi")); 3600bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("1234567890"), 0, 1, S("abcdefghi1")); 3601bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("1234567890"), 0, 5, S("abcdefghi12345")); 3602bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("1234567890"), 0, 9, S("abcdefghi123456789")); 3603bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("1234567890"), 0, 10, S("abcdefghi1234567890")); 3604bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("1234567890"), 0, 11, S("abcdefghi1234567890")); 3605bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("1234567890"), 1, 0, S("abcdefghi")); 3606bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("1234567890"), 1, 1, S("abcdefghi2")); 3607bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("1234567890"), 1, 4, S("abcdefghi2345")); 3608bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("1234567890"), 1, 8, S("abcdefghi23456789")); 3609bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("1234567890"), 1, 9, S("abcdefghi234567890")); 3610bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("1234567890"), 1, 10, S("abcdefghi234567890")); 3611bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("1234567890"), 5, 0, S("abcdefghi")); 3612bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("1234567890"), 5, 1, S("abcdefghi6")); 3613bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("1234567890"), 5, 2, S("abcdefghi67")); 3614bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("1234567890"), 5, 4, S("abcdefghi6789")); 3615bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("1234567890"), 5, 5, S("abcdefghi67890")); 3616bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("1234567890"), 5, 6, S("abcdefghi67890")); 3617bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("1234567890"), 9, 0, S("abcdefghi")); 3618bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("1234567890"), 9, 1, S("abcdefghi0")); 3619bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("1234567890"), 9, 2, S("abcdefghi0")); 3620bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("1234567890"), 10, 0, S("abcdefghi")); 3621bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("1234567890"), 10, 1, S("abcdefghi")); 3622bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("1234567890"), 11, 0, S("can't happen")); 3623bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 0, 0, S("abcdefghi")); 3624bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 0, 1, S("abcdefghi1")); 3625bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 0, 10, S("abcdefghi1234567890")); 3626bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 0, 19, S("abcdefghi1234567890123456789")); 3627bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 0, 20, S("abcdefghi12345678901234567890")); 3628bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 0, 21, S("abcdefghi12345678901234567890")); 3629bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 1, 0, S("abcdefghi")); 3630bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 1, 1, S("abcdefghi2")); 3631bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 1, 9, S("abcdefghi234567890")); 3632bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 1, 18, S("abcdefghi234567890123456789")); 3633bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 1, 19, S("abcdefghi2345678901234567890")); 3634bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 1, 20, S("abcdefghi2345678901234567890")); 3635bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 10, 0, S("abcdefghi")); 3636bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 10, 1, S("abcdefghi1")); 3637bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 10, 5, S("abcdefghi12345")); 3638bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 10, 9, S("abcdefghi123456789")); 3639bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 10, 10, S("abcdefghi1234567890")); 3640bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 10, 11, S("abcdefghi1234567890")); 3641bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 19, 0, S("abcdefghi")); 3642bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 19, 1, S("abcdefghi0")); 3643bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 3644bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 36459dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 3646bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test34() 3647bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 3648bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 19, 2, S("abcdefghi0")); 3649bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 20, 0, S("abcdefghi")); 3650bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 20, 1, S("abcdefghi")); 3651bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 1, S("12345678901234567890"), 21, 0, S("can't happen")); 3652bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S(""), 0, 0, S("abcdefghi")); 3653bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S(""), 0, 1, S("abcdefghi")); 3654bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S(""), 1, 0, S("can't happen")); 3655bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345"), 0, 0, S("abcdefghi")); 3656bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345"), 0, 1, S("abcdefghi1")); 3657bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345"), 0, 2, S("abcdefghi12")); 3658bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345"), 0, 4, S("abcdefghi1234")); 3659bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345"), 0, 5, S("abcdefghi12345")); 3660bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345"), 0, 6, S("abcdefghi12345")); 3661bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345"), 1, 0, S("abcdefghi")); 3662bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345"), 1, 1, S("abcdefghi2")); 3663bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345"), 1, 2, S("abcdefghi23")); 3664bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345"), 1, 3, S("abcdefghi234")); 3665bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345"), 1, 4, S("abcdefghi2345")); 3666bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345"), 1, 5, S("abcdefghi2345")); 3667bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345"), 2, 0, S("abcdefghi")); 3668bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345"), 2, 1, S("abcdefghi3")); 3669bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345"), 2, 2, S("abcdefghi34")); 3670bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345"), 2, 3, S("abcdefghi345")); 3671bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345"), 2, 4, S("abcdefghi345")); 3672bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345"), 4, 0, S("abcdefghi")); 3673bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345"), 4, 1, S("abcdefghi5")); 3674bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345"), 4, 2, S("abcdefghi5")); 3675bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345"), 5, 0, S("abcdefghi")); 3676bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345"), 5, 1, S("abcdefghi")); 3677bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345"), 6, 0, S("can't happen")); 3678bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("1234567890"), 0, 0, S("abcdefghi")); 3679bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("1234567890"), 0, 1, S("abcdefghi1")); 3680bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("1234567890"), 0, 5, S("abcdefghi12345")); 3681bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("1234567890"), 0, 9, S("abcdefghi123456789")); 3682bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("1234567890"), 0, 10, S("abcdefghi1234567890")); 3683bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("1234567890"), 0, 11, S("abcdefghi1234567890")); 3684bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("1234567890"), 1, 0, S("abcdefghi")); 3685bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("1234567890"), 1, 1, S("abcdefghi2")); 3686bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("1234567890"), 1, 4, S("abcdefghi2345")); 3687bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("1234567890"), 1, 8, S("abcdefghi23456789")); 3688bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("1234567890"), 1, 9, S("abcdefghi234567890")); 3689bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("1234567890"), 1, 10, S("abcdefghi234567890")); 3690bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("1234567890"), 5, 0, S("abcdefghi")); 3691bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("1234567890"), 5, 1, S("abcdefghi6")); 3692bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("1234567890"), 5, 2, S("abcdefghi67")); 3693bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("1234567890"), 5, 4, S("abcdefghi6789")); 3694bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("1234567890"), 5, 5, S("abcdefghi67890")); 3695bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("1234567890"), 5, 6, S("abcdefghi67890")); 3696bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("1234567890"), 9, 0, S("abcdefghi")); 3697bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("1234567890"), 9, 1, S("abcdefghi0")); 3698bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("1234567890"), 9, 2, S("abcdefghi0")); 3699bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("1234567890"), 10, 0, S("abcdefghi")); 3700bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("1234567890"), 10, 1, S("abcdefghi")); 3701bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("1234567890"), 11, 0, S("can't happen")); 3702bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 0, 0, S("abcdefghi")); 3703bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 0, 1, S("abcdefghi1")); 3704bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 0, 10, S("abcdefghi1234567890")); 3705bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 0, 19, S("abcdefghi1234567890123456789")); 3706bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 0, 20, S("abcdefghi12345678901234567890")); 3707bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 0, 21, S("abcdefghi12345678901234567890")); 3708bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 1, 0, S("abcdefghi")); 3709bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 1, 1, S("abcdefghi2")); 3710bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 1, 9, S("abcdefghi234567890")); 3711bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 1, 18, S("abcdefghi234567890123456789")); 3712bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 1, 19, S("abcdefghi2345678901234567890")); 3713bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 1, 20, S("abcdefghi2345678901234567890")); 3714bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 10, 0, S("abcdefghi")); 3715bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 10, 1, S("abcdefghi1")); 3716bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 10, 5, S("abcdefghi12345")); 3717bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 10, 9, S("abcdefghi123456789")); 3718bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 10, 10, S("abcdefghi1234567890")); 3719bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 10, 11, S("abcdefghi1234567890")); 3720bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 19, 0, S("abcdefghi")); 3721bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 19, 1, S("abcdefghi0")); 3722bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 19, 2, S("abcdefghi0")); 3723bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 20, 0, S("abcdefghi")); 3724bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 20, 1, S("abcdefghi")); 3725bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 9, 2, S("12345678901234567890"), 21, 0, S("can't happen")); 3726bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S(""), 0, 0, S("abcdefghij")); 3727bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S(""), 0, 1, S("abcdefghij")); 3728bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S(""), 1, 0, S("can't happen")); 3729bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345"), 0, 0, S("abcdefghij")); 3730bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345"), 0, 1, S("abcdefghij1")); 3731bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345"), 0, 2, S("abcdefghij12")); 3732bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345"), 0, 4, S("abcdefghij1234")); 3733bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345"), 0, 5, S("abcdefghij12345")); 3734bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345"), 0, 6, S("abcdefghij12345")); 3735bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345"), 1, 0, S("abcdefghij")); 3736bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345"), 1, 1, S("abcdefghij2")); 3737bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345"), 1, 2, S("abcdefghij23")); 3738bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345"), 1, 3, S("abcdefghij234")); 3739bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345"), 1, 4, S("abcdefghij2345")); 3740bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345"), 1, 5, S("abcdefghij2345")); 3741bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345"), 2, 0, S("abcdefghij")); 3742bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345"), 2, 1, S("abcdefghij3")); 3743bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345"), 2, 2, S("abcdefghij34")); 3744bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345"), 2, 3, S("abcdefghij345")); 3745bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345"), 2, 4, S("abcdefghij345")); 3746bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345"), 4, 0, S("abcdefghij")); 3747bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345"), 4, 1, S("abcdefghij5")); 3748bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 3749bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 37509dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 3751bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test35() 3752bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 3753bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345"), 4, 2, S("abcdefghij5")); 3754bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345"), 5, 0, S("abcdefghij")); 3755bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345"), 5, 1, S("abcdefghij")); 3756bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345"), 6, 0, S("can't happen")); 3757bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("1234567890"), 0, 0, S("abcdefghij")); 3758bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("1234567890"), 0, 1, S("abcdefghij1")); 3759bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("1234567890"), 0, 5, S("abcdefghij12345")); 3760bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("1234567890"), 0, 9, S("abcdefghij123456789")); 3761bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("1234567890"), 0, 10, S("abcdefghij1234567890")); 3762bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("1234567890"), 0, 11, S("abcdefghij1234567890")); 3763bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("1234567890"), 1, 0, S("abcdefghij")); 3764bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("1234567890"), 1, 1, S("abcdefghij2")); 3765bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("1234567890"), 1, 4, S("abcdefghij2345")); 3766bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("1234567890"), 1, 8, S("abcdefghij23456789")); 3767bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("1234567890"), 1, 9, S("abcdefghij234567890")); 3768bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("1234567890"), 1, 10, S("abcdefghij234567890")); 3769bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("1234567890"), 5, 0, S("abcdefghij")); 3770bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("1234567890"), 5, 1, S("abcdefghij6")); 3771bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("1234567890"), 5, 2, S("abcdefghij67")); 3772bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("1234567890"), 5, 4, S("abcdefghij6789")); 3773bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("1234567890"), 5, 5, S("abcdefghij67890")); 3774bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("1234567890"), 5, 6, S("abcdefghij67890")); 3775bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("1234567890"), 9, 0, S("abcdefghij")); 3776bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("1234567890"), 9, 1, S("abcdefghij0")); 3777bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("1234567890"), 9, 2, S("abcdefghij0")); 3778bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("1234567890"), 10, 0, S("abcdefghij")); 3779bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("1234567890"), 10, 1, S("abcdefghij")); 3780bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("1234567890"), 11, 0, S("can't happen")); 3781bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 0, 0, S("abcdefghij")); 3782bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 0, 1, S("abcdefghij1")); 3783bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 0, 10, S("abcdefghij1234567890")); 3784bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789")); 3785bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890")); 3786bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890")); 3787bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 1, 0, S("abcdefghij")); 3788bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 1, 1, S("abcdefghij2")); 3789bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 1, 9, S("abcdefghij234567890")); 3790bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789")); 3791bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890")); 3792bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890")); 3793bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 10, 0, S("abcdefghij")); 3794bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 10, 1, S("abcdefghij1")); 3795bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 10, 5, S("abcdefghij12345")); 3796bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 10, 9, S("abcdefghij123456789")); 3797bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 10, 10, S("abcdefghij1234567890")); 3798bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 10, 11, S("abcdefghij1234567890")); 3799bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 19, 0, S("abcdefghij")); 3800bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 19, 1, S("abcdefghij0")); 3801bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 19, 2, S("abcdefghij0")); 3802bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 20, 0, S("abcdefghij")); 3803bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 20, 1, S("abcdefghij")); 3804bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 0, S("12345678901234567890"), 21, 0, S("can't happen")); 3805bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S(""), 0, 0, S("abcdefghij")); 3806bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S(""), 0, 1, S("abcdefghij")); 3807bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S(""), 1, 0, S("can't happen")); 3808bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345"), 0, 0, S("abcdefghij")); 3809bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345"), 0, 1, S("abcdefghij1")); 3810bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345"), 0, 2, S("abcdefghij12")); 3811bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345"), 0, 4, S("abcdefghij1234")); 3812bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345"), 0, 5, S("abcdefghij12345")); 3813bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345"), 0, 6, S("abcdefghij12345")); 3814bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345"), 1, 0, S("abcdefghij")); 3815bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345"), 1, 1, S("abcdefghij2")); 3816bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345"), 1, 2, S("abcdefghij23")); 3817bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345"), 1, 3, S("abcdefghij234")); 3818bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345"), 1, 4, S("abcdefghij2345")); 3819bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345"), 1, 5, S("abcdefghij2345")); 3820bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345"), 2, 0, S("abcdefghij")); 3821bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345"), 2, 1, S("abcdefghij3")); 3822bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345"), 2, 2, S("abcdefghij34")); 3823bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345"), 2, 3, S("abcdefghij345")); 3824bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345"), 2, 4, S("abcdefghij345")); 3825bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345"), 4, 0, S("abcdefghij")); 3826bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345"), 4, 1, S("abcdefghij5")); 3827bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345"), 4, 2, S("abcdefghij5")); 3828bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345"), 5, 0, S("abcdefghij")); 3829bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345"), 5, 1, S("abcdefghij")); 3830bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345"), 6, 0, S("can't happen")); 3831bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("1234567890"), 0, 0, S("abcdefghij")); 3832bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("1234567890"), 0, 1, S("abcdefghij1")); 3833bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("1234567890"), 0, 5, S("abcdefghij12345")); 3834bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("1234567890"), 0, 9, S("abcdefghij123456789")); 3835bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("1234567890"), 0, 10, S("abcdefghij1234567890")); 3836bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("1234567890"), 0, 11, S("abcdefghij1234567890")); 3837bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("1234567890"), 1, 0, S("abcdefghij")); 3838bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("1234567890"), 1, 1, S("abcdefghij2")); 3839bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("1234567890"), 1, 4, S("abcdefghij2345")); 3840bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("1234567890"), 1, 8, S("abcdefghij23456789")); 3841bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("1234567890"), 1, 9, S("abcdefghij234567890")); 3842bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("1234567890"), 1, 10, S("abcdefghij234567890")); 3843bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("1234567890"), 5, 0, S("abcdefghij")); 3844bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("1234567890"), 5, 1, S("abcdefghij6")); 3845bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("1234567890"), 5, 2, S("abcdefghij67")); 3846bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("1234567890"), 5, 4, S("abcdefghij6789")); 3847bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("1234567890"), 5, 5, S("abcdefghij67890")); 3848bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("1234567890"), 5, 6, S("abcdefghij67890")); 3849bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("1234567890"), 9, 0, S("abcdefghij")); 3850bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("1234567890"), 9, 1, S("abcdefghij0")); 3851bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("1234567890"), 9, 2, S("abcdefghij0")); 3852bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("1234567890"), 10, 0, S("abcdefghij")); 3853bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 3854bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 38559dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 3856bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test36() 3857bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 3858bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("1234567890"), 10, 1, S("abcdefghij")); 3859bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("1234567890"), 11, 0, S("can't happen")); 3860bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 0, 0, S("abcdefghij")); 3861bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 0, 1, S("abcdefghij1")); 3862bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 0, 10, S("abcdefghij1234567890")); 3863bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789")); 3864bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890")); 3865bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890")); 3866bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 1, 0, S("abcdefghij")); 3867bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 1, 1, S("abcdefghij2")); 3868bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 1, 9, S("abcdefghij234567890")); 3869bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789")); 3870bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890")); 3871bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890")); 3872bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 10, 0, S("abcdefghij")); 3873bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 10, 1, S("abcdefghij1")); 3874bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 10, 5, S("abcdefghij12345")); 3875bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 10, 9, S("abcdefghij123456789")); 3876bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 10, 10, S("abcdefghij1234567890")); 3877bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 10, 11, S("abcdefghij1234567890")); 3878bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 19, 0, S("abcdefghij")); 3879bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 19, 1, S("abcdefghij0")); 3880bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 19, 2, S("abcdefghij0")); 3881bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 20, 0, S("abcdefghij")); 3882bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 20, 1, S("abcdefghij")); 3883bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 10, 1, S("12345678901234567890"), 21, 0, S("can't happen")); 3884bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S(""), 0, 0, S("can't happen")); 3885bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S(""), 0, 1, S("can't happen")); 3886bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S(""), 1, 0, S("can't happen")); 3887bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345"), 0, 0, S("can't happen")); 3888bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345"), 0, 1, S("can't happen")); 3889bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345"), 0, 2, S("can't happen")); 3890bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345"), 0, 4, S("can't happen")); 3891bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345"), 0, 5, S("can't happen")); 3892bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345"), 0, 6, S("can't happen")); 3893bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345"), 1, 0, S("can't happen")); 3894bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345"), 1, 1, S("can't happen")); 3895bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345"), 1, 2, S("can't happen")); 3896bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345"), 1, 3, S("can't happen")); 3897bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345"), 1, 4, S("can't happen")); 3898bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345"), 1, 5, S("can't happen")); 3899bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345"), 2, 0, S("can't happen")); 3900bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345"), 2, 1, S("can't happen")); 3901bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345"), 2, 2, S("can't happen")); 3902bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345"), 2, 3, S("can't happen")); 3903bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345"), 2, 4, S("can't happen")); 3904bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345"), 4, 0, S("can't happen")); 3905bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345"), 4, 1, S("can't happen")); 3906bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345"), 4, 2, S("can't happen")); 3907bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345"), 5, 0, S("can't happen")); 3908bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345"), 5, 1, S("can't happen")); 3909bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345"), 6, 0, S("can't happen")); 3910bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("1234567890"), 0, 0, S("can't happen")); 3911bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("1234567890"), 0, 1, S("can't happen")); 3912bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("1234567890"), 0, 5, S("can't happen")); 3913bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("1234567890"), 0, 9, S("can't happen")); 3914bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("1234567890"), 0, 10, S("can't happen")); 3915bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("1234567890"), 0, 11, S("can't happen")); 3916bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("1234567890"), 1, 0, S("can't happen")); 3917bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("1234567890"), 1, 1, S("can't happen")); 3918bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("1234567890"), 1, 4, S("can't happen")); 3919bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("1234567890"), 1, 8, S("can't happen")); 3920bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("1234567890"), 1, 9, S("can't happen")); 3921bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("1234567890"), 1, 10, S("can't happen")); 3922bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("1234567890"), 5, 0, S("can't happen")); 3923bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("1234567890"), 5, 1, S("can't happen")); 3924bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("1234567890"), 5, 2, S("can't happen")); 3925bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("1234567890"), 5, 4, S("can't happen")); 3926bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("1234567890"), 5, 5, S("can't happen")); 3927bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("1234567890"), 5, 6, S("can't happen")); 3928bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("1234567890"), 9, 0, S("can't happen")); 3929bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("1234567890"), 9, 1, S("can't happen")); 3930bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("1234567890"), 9, 2, S("can't happen")); 3931bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("1234567890"), 10, 0, S("can't happen")); 3932bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("1234567890"), 10, 1, S("can't happen")); 3933bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("1234567890"), 11, 0, S("can't happen")); 3934bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 0, 0, S("can't happen")); 3935bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 0, 1, S("can't happen")); 3936bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 0, 10, S("can't happen")); 3937bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 0, 19, S("can't happen")); 3938bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 0, 20, S("can't happen")); 3939bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 0, 21, S("can't happen")); 3940bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 1, 0, S("can't happen")); 3941bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 1, 1, S("can't happen")); 3942bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 1, 9, S("can't happen")); 3943bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 1, 18, S("can't happen")); 3944bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 1, 19, S("can't happen")); 3945bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 1, 20, S("can't happen")); 3946bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 10, 0, S("can't happen")); 3947bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 10, 1, S("can't happen")); 3948bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 10, 5, S("can't happen")); 3949bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 10, 9, S("can't happen")); 3950bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 10, 10, S("can't happen")); 3951bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 10, 11, S("can't happen")); 3952bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 19, 0, S("can't happen")); 3953bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 19, 1, S("can't happen")); 3954bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 19, 2, S("can't happen")); 3955bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 20, 0, S("can't happen")); 3956bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 20, 1, S("can't happen")); 3957bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghij"), 11, 0, S("12345678901234567890"), 21, 0, S("can't happen")); 3958bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 3959bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 39609dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 3961bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test37() 3962bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 3963bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S(""), 0, 0, S("abcdefghijklmnopqrst")); 3964bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S(""), 0, 1, S("abcdefghijklmnopqrst")); 3965bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S(""), 1, 0, S("can't happen")); 3966bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 0, 0, S("abcdefghijklmnopqrst")); 3967bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 0, 1, S("1abcdefghijklmnopqrst")); 3968bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 0, 2, S("12abcdefghijklmnopqrst")); 3969bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 0, 4, S("1234abcdefghijklmnopqrst")); 3970bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 0, 5, S("12345abcdefghijklmnopqrst")); 3971bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 0, 6, S("12345abcdefghijklmnopqrst")); 3972bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 1, 0, S("abcdefghijklmnopqrst")); 3973bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 1, 1, S("2abcdefghijklmnopqrst")); 3974bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 1, 2, S("23abcdefghijklmnopqrst")); 3975bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 1, 3, S("234abcdefghijklmnopqrst")); 3976bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 1, 4, S("2345abcdefghijklmnopqrst")); 3977bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 1, 5, S("2345abcdefghijklmnopqrst")); 3978bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 2, 0, S("abcdefghijklmnopqrst")); 3979bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 2, 1, S("3abcdefghijklmnopqrst")); 3980bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 2, 2, S("34abcdefghijklmnopqrst")); 3981bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 2, 3, S("345abcdefghijklmnopqrst")); 3982bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 2, 4, S("345abcdefghijklmnopqrst")); 3983bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 4, 0, S("abcdefghijklmnopqrst")); 3984bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 4, 1, S("5abcdefghijklmnopqrst")); 3985bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 4, 2, S("5abcdefghijklmnopqrst")); 3986bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 5, 0, S("abcdefghijklmnopqrst")); 3987bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 5, 1, S("abcdefghijklmnopqrst")); 3988bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345"), 6, 0, S("can't happen")); 3989bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); 3990bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 0, 1, S("1abcdefghijklmnopqrst")); 3991bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 0, 5, S("12345abcdefghijklmnopqrst")); 3992bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 0, 9, S("123456789abcdefghijklmnopqrst")); 3993bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 0, 10, S("1234567890abcdefghijklmnopqrst")); 3994bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 0, 11, S("1234567890abcdefghijklmnopqrst")); 3995bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); 3996bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 1, 1, S("2abcdefghijklmnopqrst")); 3997bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 1, 4, S("2345abcdefghijklmnopqrst")); 3998bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 1, 8, S("23456789abcdefghijklmnopqrst")); 3999bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 1, 9, S("234567890abcdefghijklmnopqrst")); 4000bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 1, 10, S("234567890abcdefghijklmnopqrst")); 4001bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); 4002bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 5, 1, S("6abcdefghijklmnopqrst")); 4003bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 5, 2, S("67abcdefghijklmnopqrst")); 4004bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 5, 4, S("6789abcdefghijklmnopqrst")); 4005bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 5, 5, S("67890abcdefghijklmnopqrst")); 4006bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 5, 6, S("67890abcdefghijklmnopqrst")); 4007bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); 4008bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 9, 1, S("0abcdefghijklmnopqrst")); 4009bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 9, 2, S("0abcdefghijklmnopqrst")); 4010bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); 4011bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); 4012bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("1234567890"), 11, 0, S("can't happen")); 4013bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); 4014bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 0, 1, S("1abcdefghijklmnopqrst")); 4015bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 0, 10, S("1234567890abcdefghijklmnopqrst")); 4016bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 0, 19, S("1234567890123456789abcdefghijklmnopqrst")); 4017bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 0, 20, S("12345678901234567890abcdefghijklmnopqrst")); 4018bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 0, 21, S("12345678901234567890abcdefghijklmnopqrst")); 4019bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); 4020bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 1, 1, S("2abcdefghijklmnopqrst")); 4021bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 1, 9, S("234567890abcdefghijklmnopqrst")); 4022bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 1, 18, S("234567890123456789abcdefghijklmnopqrst")); 4023bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 1, 19, S("2345678901234567890abcdefghijklmnopqrst")); 4024bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 1, 20, S("2345678901234567890abcdefghijklmnopqrst")); 4025bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); 4026bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 10, 1, S("1abcdefghijklmnopqrst")); 4027bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 10, 5, S("12345abcdefghijklmnopqrst")); 4028bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 10, 9, S("123456789abcdefghijklmnopqrst")); 4029bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 10, 10, S("1234567890abcdefghijklmnopqrst")); 4030bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 10, 11, S("1234567890abcdefghijklmnopqrst")); 4031bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); 4032bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 19, 1, S("0abcdefghijklmnopqrst")); 4033bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 19, 2, S("0abcdefghijklmnopqrst")); 4034bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); 4035bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); 4036bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 0, S("12345678901234567890"), 21, 0, S("can't happen")); 4037bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S(""), 0, 0, S("bcdefghijklmnopqrst")); 4038bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S(""), 0, 1, S("bcdefghijklmnopqrst")); 4039bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S(""), 1, 0, S("can't happen")); 4040bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 0, 0, S("bcdefghijklmnopqrst")); 4041bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 0, 1, S("1bcdefghijklmnopqrst")); 4042bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 0, 2, S("12bcdefghijklmnopqrst")); 4043bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 0, 4, S("1234bcdefghijklmnopqrst")); 4044bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 0, 5, S("12345bcdefghijklmnopqrst")); 4045bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 0, 6, S("12345bcdefghijklmnopqrst")); 4046bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 1, 0, S("bcdefghijklmnopqrst")); 4047bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 1, 1, S("2bcdefghijklmnopqrst")); 4048bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 1, 2, S("23bcdefghijklmnopqrst")); 4049bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 1, 3, S("234bcdefghijklmnopqrst")); 4050bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 1, 4, S("2345bcdefghijklmnopqrst")); 4051bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 1, 5, S("2345bcdefghijklmnopqrst")); 4052bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 2, 0, S("bcdefghijklmnopqrst")); 4053bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 2, 1, S("3bcdefghijklmnopqrst")); 4054bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 2, 2, S("34bcdefghijklmnopqrst")); 4055bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 2, 3, S("345bcdefghijklmnopqrst")); 4056bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 2, 4, S("345bcdefghijklmnopqrst")); 4057bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 4, 0, S("bcdefghijklmnopqrst")); 4058bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 4, 1, S("5bcdefghijklmnopqrst")); 4059bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 4, 2, S("5bcdefghijklmnopqrst")); 4060bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 5, 0, S("bcdefghijklmnopqrst")); 4061bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 5, 1, S("bcdefghijklmnopqrst")); 4062bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345"), 6, 0, S("can't happen")); 4063bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 4064bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 40659dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 4066bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test38() 4067bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 4068bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 0, 0, S("bcdefghijklmnopqrst")); 4069bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 0, 1, S("1bcdefghijklmnopqrst")); 4070bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 0, 5, S("12345bcdefghijklmnopqrst")); 4071bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 0, 9, S("123456789bcdefghijklmnopqrst")); 4072bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 0, 10, S("1234567890bcdefghijklmnopqrst")); 4073bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 0, 11, S("1234567890bcdefghijklmnopqrst")); 4074bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 1, 0, S("bcdefghijklmnopqrst")); 4075bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 1, 1, S("2bcdefghijklmnopqrst")); 4076bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 1, 4, S("2345bcdefghijklmnopqrst")); 4077bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 1, 8, S("23456789bcdefghijklmnopqrst")); 4078bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 1, 9, S("234567890bcdefghijklmnopqrst")); 4079bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 1, 10, S("234567890bcdefghijklmnopqrst")); 4080bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 5, 0, S("bcdefghijklmnopqrst")); 4081bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 5, 1, S("6bcdefghijklmnopqrst")); 4082bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 5, 2, S("67bcdefghijklmnopqrst")); 4083bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 5, 4, S("6789bcdefghijklmnopqrst")); 4084bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 5, 5, S("67890bcdefghijklmnopqrst")); 4085bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 5, 6, S("67890bcdefghijklmnopqrst")); 4086bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 9, 0, S("bcdefghijklmnopqrst")); 4087bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 9, 1, S("0bcdefghijklmnopqrst")); 4088bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 9, 2, S("0bcdefghijklmnopqrst")); 4089bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 10, 0, S("bcdefghijklmnopqrst")); 4090bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 10, 1, S("bcdefghijklmnopqrst")); 4091bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("1234567890"), 11, 0, S("can't happen")); 4092bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 0, 0, S("bcdefghijklmnopqrst")); 4093bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 0, 1, S("1bcdefghijklmnopqrst")); 4094bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 0, 10, S("1234567890bcdefghijklmnopqrst")); 4095bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 0, 19, S("1234567890123456789bcdefghijklmnopqrst")); 4096bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 0, 20, S("12345678901234567890bcdefghijklmnopqrst")); 4097bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 0, 21, S("12345678901234567890bcdefghijklmnopqrst")); 4098bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 1, 0, S("bcdefghijklmnopqrst")); 4099bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 1, 1, S("2bcdefghijklmnopqrst")); 4100bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 1, 9, S("234567890bcdefghijklmnopqrst")); 4101bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 1, 18, S("234567890123456789bcdefghijklmnopqrst")); 4102bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 1, 19, S("2345678901234567890bcdefghijklmnopqrst")); 4103bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 1, 20, S("2345678901234567890bcdefghijklmnopqrst")); 4104bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 10, 0, S("bcdefghijklmnopqrst")); 4105bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 10, 1, S("1bcdefghijklmnopqrst")); 4106bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 10, 5, S("12345bcdefghijklmnopqrst")); 4107bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 10, 9, S("123456789bcdefghijklmnopqrst")); 4108bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 10, 10, S("1234567890bcdefghijklmnopqrst")); 4109bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 10, 11, S("1234567890bcdefghijklmnopqrst")); 4110bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 19, 0, S("bcdefghijklmnopqrst")); 4111bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 19, 1, S("0bcdefghijklmnopqrst")); 4112bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 19, 2, S("0bcdefghijklmnopqrst")); 4113bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 20, 0, S("bcdefghijklmnopqrst")); 4114bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 20, 1, S("bcdefghijklmnopqrst")); 4115bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 1, S("12345678901234567890"), 21, 0, S("can't happen")); 4116bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S(""), 0, 0, S("klmnopqrst")); 4117bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S(""), 0, 1, S("klmnopqrst")); 4118bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S(""), 1, 0, S("can't happen")); 4119bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 0, 0, S("klmnopqrst")); 4120bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 0, 1, S("1klmnopqrst")); 4121bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 0, 2, S("12klmnopqrst")); 4122bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 0, 4, S("1234klmnopqrst")); 4123bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 0, 5, S("12345klmnopqrst")); 4124bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 0, 6, S("12345klmnopqrst")); 4125bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 1, 0, S("klmnopqrst")); 4126bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 1, 1, S("2klmnopqrst")); 4127bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 1, 2, S("23klmnopqrst")); 4128bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 1, 3, S("234klmnopqrst")); 4129bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 1, 4, S("2345klmnopqrst")); 4130bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 1, 5, S("2345klmnopqrst")); 4131bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 2, 0, S("klmnopqrst")); 4132bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 2, 1, S("3klmnopqrst")); 4133bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 2, 2, S("34klmnopqrst")); 4134bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 2, 3, S("345klmnopqrst")); 4135bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 2, 4, S("345klmnopqrst")); 4136bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 4, 0, S("klmnopqrst")); 4137bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 4, 1, S("5klmnopqrst")); 4138bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 4, 2, S("5klmnopqrst")); 4139bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 5, 0, S("klmnopqrst")); 4140bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 5, 1, S("klmnopqrst")); 4141bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345"), 6, 0, S("can't happen")); 4142bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 0, 0, S("klmnopqrst")); 4143bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 0, 1, S("1klmnopqrst")); 4144bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 0, 5, S("12345klmnopqrst")); 4145bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 0, 9, S("123456789klmnopqrst")); 4146bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 0, 10, S("1234567890klmnopqrst")); 4147bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 0, 11, S("1234567890klmnopqrst")); 4148bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 1, 0, S("klmnopqrst")); 4149bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 1, 1, S("2klmnopqrst")); 4150bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 1, 4, S("2345klmnopqrst")); 4151bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 1, 8, S("23456789klmnopqrst")); 4152bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 1, 9, S("234567890klmnopqrst")); 4153bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 1, 10, S("234567890klmnopqrst")); 4154bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 5, 0, S("klmnopqrst")); 4155bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 5, 1, S("6klmnopqrst")); 4156bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 5, 2, S("67klmnopqrst")); 4157bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 5, 4, S("6789klmnopqrst")); 4158bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 5, 5, S("67890klmnopqrst")); 4159bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 5, 6, S("67890klmnopqrst")); 4160bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 9, 0, S("klmnopqrst")); 4161bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 9, 1, S("0klmnopqrst")); 4162bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 9, 2, S("0klmnopqrst")); 4163bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 10, 0, S("klmnopqrst")); 4164bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 10, 1, S("klmnopqrst")); 4165bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("1234567890"), 11, 0, S("can't happen")); 4166bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 0, 0, S("klmnopqrst")); 4167bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 0, 1, S("1klmnopqrst")); 4168bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 4169bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 41709dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 4171bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test39() 4172bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 4173bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 0, 10, S("1234567890klmnopqrst")); 4174bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 0, 19, S("1234567890123456789klmnopqrst")); 4175bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 0, 20, S("12345678901234567890klmnopqrst")); 4176bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 0, 21, S("12345678901234567890klmnopqrst")); 4177bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 1, 0, S("klmnopqrst")); 4178bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 1, 1, S("2klmnopqrst")); 4179bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 1, 9, S("234567890klmnopqrst")); 4180bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 1, 18, S("234567890123456789klmnopqrst")); 4181bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 1, 19, S("2345678901234567890klmnopqrst")); 4182bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 1, 20, S("2345678901234567890klmnopqrst")); 4183bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 10, 0, S("klmnopqrst")); 4184bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 10, 1, S("1klmnopqrst")); 4185bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 10, 5, S("12345klmnopqrst")); 4186bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 10, 9, S("123456789klmnopqrst")); 4187bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 10, 10, S("1234567890klmnopqrst")); 4188bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 10, 11, S("1234567890klmnopqrst")); 4189bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 19, 0, S("klmnopqrst")); 4190bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 19, 1, S("0klmnopqrst")); 4191bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 19, 2, S("0klmnopqrst")); 4192bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 20, 0, S("klmnopqrst")); 4193bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 20, 1, S("klmnopqrst")); 4194bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 10, S("12345678901234567890"), 21, 0, S("can't happen")); 4195bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S(""), 0, 0, S("t")); 4196bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S(""), 0, 1, S("t")); 4197bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S(""), 1, 0, S("can't happen")); 4198bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 0, 0, S("t")); 4199bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 0, 1, S("1t")); 4200bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 0, 2, S("12t")); 4201bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 0, 4, S("1234t")); 4202bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 0, 5, S("12345t")); 4203bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 0, 6, S("12345t")); 4204bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 1, 0, S("t")); 4205bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 1, 1, S("2t")); 4206bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 1, 2, S("23t")); 4207bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 1, 3, S("234t")); 4208bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 1, 4, S("2345t")); 4209bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 1, 5, S("2345t")); 4210bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 2, 0, S("t")); 4211bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 2, 1, S("3t")); 4212bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 2, 2, S("34t")); 4213bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 2, 3, S("345t")); 4214bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 2, 4, S("345t")); 4215bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 4, 0, S("t")); 4216bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 4, 1, S("5t")); 4217bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 4, 2, S("5t")); 4218bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 5, 0, S("t")); 4219bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 5, 1, S("t")); 4220bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345"), 6, 0, S("can't happen")); 4221bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 0, 0, S("t")); 4222bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 0, 1, S("1t")); 4223bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 0, 5, S("12345t")); 4224bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 0, 9, S("123456789t")); 4225bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 0, 10, S("1234567890t")); 4226bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 0, 11, S("1234567890t")); 4227bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 1, 0, S("t")); 4228bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 1, 1, S("2t")); 4229bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 1, 4, S("2345t")); 4230bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 1, 8, S("23456789t")); 4231bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 1, 9, S("234567890t")); 4232bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 1, 10, S("234567890t")); 4233bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 5, 0, S("t")); 4234bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 5, 1, S("6t")); 4235bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 5, 2, S("67t")); 4236bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 5, 4, S("6789t")); 4237bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 5, 5, S("67890t")); 4238bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 5, 6, S("67890t")); 4239bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 9, 0, S("t")); 4240bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 9, 1, S("0t")); 4241bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 9, 2, S("0t")); 4242bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 10, 0, S("t")); 4243bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 10, 1, S("t")); 4244bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("1234567890"), 11, 0, S("can't happen")); 4245bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 0, 0, S("t")); 4246bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 0, 1, S("1t")); 4247bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 0, 10, S("1234567890t")); 4248bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 0, 19, S("1234567890123456789t")); 4249bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 0, 20, S("12345678901234567890t")); 4250bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 0, 21, S("12345678901234567890t")); 4251bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 1, 0, S("t")); 4252bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 1, 1, S("2t")); 4253bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 1, 9, S("234567890t")); 4254bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 1, 18, S("234567890123456789t")); 4255bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 1, 19, S("2345678901234567890t")); 4256bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 1, 20, S("2345678901234567890t")); 4257bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 10, 0, S("t")); 4258bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 10, 1, S("1t")); 4259bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 10, 5, S("12345t")); 4260bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 10, 9, S("123456789t")); 4261bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 10, 10, S("1234567890t")); 4262bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 10, 11, S("1234567890t")); 4263bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 19, 0, S("t")); 4264bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 19, 1, S("0t")); 4265bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 19, 2, S("0t")); 4266bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 20, 0, S("t")); 4267bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 20, 1, S("t")); 4268bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 19, S("12345678901234567890"), 21, 0, S("can't happen")); 4269bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S(""), 0, 0, S("")); 4270bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S(""), 0, 1, S("")); 4271bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S(""), 1, 0, S("can't happen")); 4272bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 0, 0, S("")); 4273bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 4274bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 42759dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 4276bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test40() 4277bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 4278bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 0, 1, S("1")); 4279bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 0, 2, S("12")); 4280bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 0, 4, S("1234")); 4281bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 0, 5, S("12345")); 4282bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 0, 6, S("12345")); 4283bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 1, 0, S("")); 4284bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 1, 1, S("2")); 4285bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 1, 2, S("23")); 4286bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 1, 3, S("234")); 4287bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 1, 4, S("2345")); 4288bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 1, 5, S("2345")); 4289bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 2, 0, S("")); 4290bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 2, 1, S("3")); 4291bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 2, 2, S("34")); 4292bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 2, 3, S("345")); 4293bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 2, 4, S("345")); 4294bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 4, 0, S("")); 4295bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 4, 1, S("5")); 4296bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 4, 2, S("5")); 4297bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 5, 0, S("")); 4298bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 5, 1, S("")); 4299bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345"), 6, 0, S("can't happen")); 4300bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 0, 0, S("")); 4301bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 0, 1, S("1")); 4302bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 0, 5, S("12345")); 4303bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 0, 9, S("123456789")); 4304bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 0, 10, S("1234567890")); 4305bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 0, 11, S("1234567890")); 4306bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 1, 0, S("")); 4307bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 1, 1, S("2")); 4308bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 1, 4, S("2345")); 4309bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 1, 8, S("23456789")); 4310bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 1, 9, S("234567890")); 4311bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 1, 10, S("234567890")); 4312bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 5, 0, S("")); 4313bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 5, 1, S("6")); 4314bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 5, 2, S("67")); 4315bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 5, 4, S("6789")); 4316bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 5, 5, S("67890")); 4317bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 5, 6, S("67890")); 4318bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 9, 0, S("")); 4319bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 9, 1, S("0")); 4320bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 9, 2, S("0")); 4321bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 10, 0, S("")); 4322bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 10, 1, S("")); 4323bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("1234567890"), 11, 0, S("can't happen")); 4324bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 0, 0, S("")); 4325bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 0, 1, S("1")); 4326bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 0, 10, S("1234567890")); 4327bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 0, 19, S("1234567890123456789")); 4328bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 0, 20, S("12345678901234567890")); 4329bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 0, 21, S("12345678901234567890")); 4330bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 1, 0, S("")); 4331bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 1, 1, S("2")); 4332bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 1, 9, S("234567890")); 4333bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 1, 18, S("234567890123456789")); 4334bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 1, 19, S("2345678901234567890")); 4335bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 1, 20, S("2345678901234567890")); 4336bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 10, 0, S("")); 4337bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 10, 1, S("1")); 4338bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 10, 5, S("12345")); 4339bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 10, 9, S("123456789")); 4340bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 10, 10, S("1234567890")); 4341bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 10, 11, S("1234567890")); 4342bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 19, 0, S("")); 4343bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 19, 1, S("0")); 4344bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 19, 2, S("0")); 4345bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 20, 0, S("")); 4346bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 20, 1, S("")); 4347bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 20, S("12345678901234567890"), 21, 0, S("can't happen")); 4348bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S(""), 0, 0, S("")); 4349bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S(""), 0, 1, S("")); 4350bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S(""), 1, 0, S("can't happen")); 4351bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 0, 0, S("")); 4352bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 0, 1, S("1")); 4353bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 0, 2, S("12")); 4354bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 0, 4, S("1234")); 4355bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 0, 5, S("12345")); 4356bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 0, 6, S("12345")); 4357bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 1, 0, S("")); 4358bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 1, 1, S("2")); 4359bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 1, 2, S("23")); 4360bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 1, 3, S("234")); 4361bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 1, 4, S("2345")); 4362bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 1, 5, S("2345")); 4363bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 2, 0, S("")); 4364bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 2, 1, S("3")); 4365bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 2, 2, S("34")); 4366bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 2, 3, S("345")); 4367bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 2, 4, S("345")); 4368bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 4, 0, S("")); 4369bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 4, 1, S("5")); 4370bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 4, 2, S("5")); 4371bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 5, 0, S("")); 4372bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 5, 1, S("")); 4373bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345"), 6, 0, S("can't happen")); 4374bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 0, 0, S("")); 4375bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 0, 1, S("1")); 4376bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 0, 5, S("12345")); 4377bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 0, 9, S("123456789")); 4378bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 4379bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 43809dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 4381bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test41() 4382bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 4383bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 0, 10, S("1234567890")); 4384bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 0, 11, S("1234567890")); 4385bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 1, 0, S("")); 4386bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 1, 1, S("2")); 4387bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 1, 4, S("2345")); 4388bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 1, 8, S("23456789")); 4389bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 1, 9, S("234567890")); 4390bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 1, 10, S("234567890")); 4391bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 5, 0, S("")); 4392bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 5, 1, S("6")); 4393bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 5, 2, S("67")); 4394bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 5, 4, S("6789")); 4395bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 5, 5, S("67890")); 4396bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 5, 6, S("67890")); 4397bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 9, 0, S("")); 4398bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 9, 1, S("0")); 4399bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 9, 2, S("0")); 4400bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 10, 0, S("")); 4401bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 10, 1, S("")); 4402bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("1234567890"), 11, 0, S("can't happen")); 4403bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 0, 0, S("")); 4404bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 0, 1, S("1")); 4405bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 0, 10, S("1234567890")); 4406bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 0, 19, S("1234567890123456789")); 4407bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 0, 20, S("12345678901234567890")); 4408bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 0, 21, S("12345678901234567890")); 4409bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 1, 0, S("")); 4410bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 1, 1, S("2")); 4411bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 1, 9, S("234567890")); 4412bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 1, 18, S("234567890123456789")); 4413bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 1, 19, S("2345678901234567890")); 4414bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 1, 20, S("2345678901234567890")); 4415bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 10, 0, S("")); 4416bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 10, 1, S("1")); 4417bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 10, 5, S("12345")); 4418bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 10, 9, S("123456789")); 4419bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 10, 10, S("1234567890")); 4420bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 10, 11, S("1234567890")); 4421bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 19, 0, S("")); 4422bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 19, 1, S("0")); 4423bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 19, 2, S("0")); 4424bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 20, 0, S("")); 4425bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 20, 1, S("")); 4426bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 0, 21, S("12345678901234567890"), 21, 0, S("can't happen")); 4427bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S(""), 0, 0, S("abcdefghijklmnopqrst")); 4428bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S(""), 0, 1, S("abcdefghijklmnopqrst")); 4429bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S(""), 1, 0, S("can't happen")); 4430bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 0, 0, S("abcdefghijklmnopqrst")); 4431bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 0, 1, S("a1bcdefghijklmnopqrst")); 4432bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 0, 2, S("a12bcdefghijklmnopqrst")); 4433bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 0, 4, S("a1234bcdefghijklmnopqrst")); 4434bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 0, 5, S("a12345bcdefghijklmnopqrst")); 4435bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 0, 6, S("a12345bcdefghijklmnopqrst")); 4436bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 1, 0, S("abcdefghijklmnopqrst")); 4437bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 1, 1, S("a2bcdefghijklmnopqrst")); 4438bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 1, 2, S("a23bcdefghijklmnopqrst")); 4439bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 1, 3, S("a234bcdefghijklmnopqrst")); 4440bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 1, 4, S("a2345bcdefghijklmnopqrst")); 4441bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 1, 5, S("a2345bcdefghijklmnopqrst")); 4442bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 2, 0, S("abcdefghijklmnopqrst")); 4443bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 2, 1, S("a3bcdefghijklmnopqrst")); 4444bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 2, 2, S("a34bcdefghijklmnopqrst")); 4445bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 2, 3, S("a345bcdefghijklmnopqrst")); 4446bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 2, 4, S("a345bcdefghijklmnopqrst")); 4447bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 4, 0, S("abcdefghijklmnopqrst")); 4448bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 4, 1, S("a5bcdefghijklmnopqrst")); 4449bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 4, 2, S("a5bcdefghijklmnopqrst")); 4450bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 5, 0, S("abcdefghijklmnopqrst")); 4451bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 5, 1, S("abcdefghijklmnopqrst")); 4452bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345"), 6, 0, S("can't happen")); 4453bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); 4454bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 0, 1, S("a1bcdefghijklmnopqrst")); 4455bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 0, 5, S("a12345bcdefghijklmnopqrst")); 4456bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 0, 9, S("a123456789bcdefghijklmnopqrst")); 4457bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 0, 10, S("a1234567890bcdefghijklmnopqrst")); 4458bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 0, 11, S("a1234567890bcdefghijklmnopqrst")); 4459bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); 4460bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 1, 1, S("a2bcdefghijklmnopqrst")); 4461bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 1, 4, S("a2345bcdefghijklmnopqrst")); 4462bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 1, 8, S("a23456789bcdefghijklmnopqrst")); 4463bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 1, 9, S("a234567890bcdefghijklmnopqrst")); 4464bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 1, 10, S("a234567890bcdefghijklmnopqrst")); 4465bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); 4466bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 5, 1, S("a6bcdefghijklmnopqrst")); 4467bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 5, 2, S("a67bcdefghijklmnopqrst")); 4468bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 5, 4, S("a6789bcdefghijklmnopqrst")); 4469bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 5, 5, S("a67890bcdefghijklmnopqrst")); 4470bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 5, 6, S("a67890bcdefghijklmnopqrst")); 4471bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); 4472bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 9, 1, S("a0bcdefghijklmnopqrst")); 4473bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 9, 2, S("a0bcdefghijklmnopqrst")); 4474bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); 4475bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); 4476bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("1234567890"), 11, 0, S("can't happen")); 4477bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); 4478bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 0, 1, S("a1bcdefghijklmnopqrst")); 4479bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 0, 10, S("a1234567890bcdefghijklmnopqrst")); 4480bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 0, 19, S("a1234567890123456789bcdefghijklmnopqrst")); 4481bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 0, 20, S("a12345678901234567890bcdefghijklmnopqrst")); 4482bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 0, 21, S("a12345678901234567890bcdefghijklmnopqrst")); 4483bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 4484bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 44859dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 4486bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test42() 4487bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 4488bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); 4489bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 1, 1, S("a2bcdefghijklmnopqrst")); 4490bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 1, 9, S("a234567890bcdefghijklmnopqrst")); 4491bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 1, 18, S("a234567890123456789bcdefghijklmnopqrst")); 4492bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 1, 19, S("a2345678901234567890bcdefghijklmnopqrst")); 4493bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 1, 20, S("a2345678901234567890bcdefghijklmnopqrst")); 4494bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); 4495bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 10, 1, S("a1bcdefghijklmnopqrst")); 4496bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 10, 5, S("a12345bcdefghijklmnopqrst")); 4497bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 10, 9, S("a123456789bcdefghijklmnopqrst")); 4498bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 10, 10, S("a1234567890bcdefghijklmnopqrst")); 4499bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 10, 11, S("a1234567890bcdefghijklmnopqrst")); 4500bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); 4501bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 19, 1, S("a0bcdefghijklmnopqrst")); 4502bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 19, 2, S("a0bcdefghijklmnopqrst")); 4503bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); 4504bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); 4505bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 0, S("12345678901234567890"), 21, 0, S("can't happen")); 4506bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S(""), 0, 0, S("acdefghijklmnopqrst")); 4507bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S(""), 0, 1, S("acdefghijklmnopqrst")); 4508bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S(""), 1, 0, S("can't happen")); 4509bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 0, 0, S("acdefghijklmnopqrst")); 4510bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 0, 1, S("a1cdefghijklmnopqrst")); 4511bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 0, 2, S("a12cdefghijklmnopqrst")); 4512bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 0, 4, S("a1234cdefghijklmnopqrst")); 4513bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 0, 5, S("a12345cdefghijklmnopqrst")); 4514bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 0, 6, S("a12345cdefghijklmnopqrst")); 4515bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 1, 0, S("acdefghijklmnopqrst")); 4516bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 1, 1, S("a2cdefghijklmnopqrst")); 4517bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 1, 2, S("a23cdefghijklmnopqrst")); 4518bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 1, 3, S("a234cdefghijklmnopqrst")); 4519bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 1, 4, S("a2345cdefghijklmnopqrst")); 4520bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 1, 5, S("a2345cdefghijklmnopqrst")); 4521bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 2, 0, S("acdefghijklmnopqrst")); 4522bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 2, 1, S("a3cdefghijklmnopqrst")); 4523bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 2, 2, S("a34cdefghijklmnopqrst")); 4524bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 2, 3, S("a345cdefghijklmnopqrst")); 4525bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 2, 4, S("a345cdefghijklmnopqrst")); 4526bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 4, 0, S("acdefghijklmnopqrst")); 4527bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 4, 1, S("a5cdefghijklmnopqrst")); 4528bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 4, 2, S("a5cdefghijklmnopqrst")); 4529bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 5, 0, S("acdefghijklmnopqrst")); 4530bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 5, 1, S("acdefghijklmnopqrst")); 4531bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345"), 6, 0, S("can't happen")); 4532bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 0, 0, S("acdefghijklmnopqrst")); 4533bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 0, 1, S("a1cdefghijklmnopqrst")); 4534bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 0, 5, S("a12345cdefghijklmnopqrst")); 4535bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 0, 9, S("a123456789cdefghijklmnopqrst")); 4536bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 0, 10, S("a1234567890cdefghijklmnopqrst")); 4537bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 0, 11, S("a1234567890cdefghijklmnopqrst")); 4538bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 1, 0, S("acdefghijklmnopqrst")); 4539bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 1, 1, S("a2cdefghijklmnopqrst")); 4540bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 1, 4, S("a2345cdefghijklmnopqrst")); 4541bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 1, 8, S("a23456789cdefghijklmnopqrst")); 4542bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 1, 9, S("a234567890cdefghijklmnopqrst")); 4543bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 1, 10, S("a234567890cdefghijklmnopqrst")); 4544bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 5, 0, S("acdefghijklmnopqrst")); 4545bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 5, 1, S("a6cdefghijklmnopqrst")); 4546bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 5, 2, S("a67cdefghijklmnopqrst")); 4547bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 5, 4, S("a6789cdefghijklmnopqrst")); 4548bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 5, 5, S("a67890cdefghijklmnopqrst")); 4549bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 5, 6, S("a67890cdefghijklmnopqrst")); 4550bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 9, 0, S("acdefghijklmnopqrst")); 4551bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 9, 1, S("a0cdefghijklmnopqrst")); 4552bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 9, 2, S("a0cdefghijklmnopqrst")); 4553bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 10, 0, S("acdefghijklmnopqrst")); 4554bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 10, 1, S("acdefghijklmnopqrst")); 4555bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("1234567890"), 11, 0, S("can't happen")); 4556bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 0, 0, S("acdefghijklmnopqrst")); 4557bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 0, 1, S("a1cdefghijklmnopqrst")); 4558bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 0, 10, S("a1234567890cdefghijklmnopqrst")); 4559bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 0, 19, S("a1234567890123456789cdefghijklmnopqrst")); 4560bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 0, 20, S("a12345678901234567890cdefghijklmnopqrst")); 4561bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 0, 21, S("a12345678901234567890cdefghijklmnopqrst")); 4562bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 1, 0, S("acdefghijklmnopqrst")); 4563bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 1, 1, S("a2cdefghijklmnopqrst")); 4564bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 1, 9, S("a234567890cdefghijklmnopqrst")); 4565bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 1, 18, S("a234567890123456789cdefghijklmnopqrst")); 4566bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 1, 19, S("a2345678901234567890cdefghijklmnopqrst")); 4567bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 1, 20, S("a2345678901234567890cdefghijklmnopqrst")); 4568bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 10, 0, S("acdefghijklmnopqrst")); 4569bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 10, 1, S("a1cdefghijklmnopqrst")); 4570bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 10, 5, S("a12345cdefghijklmnopqrst")); 4571bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 10, 9, S("a123456789cdefghijklmnopqrst")); 4572bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 10, 10, S("a1234567890cdefghijklmnopqrst")); 4573bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 10, 11, S("a1234567890cdefghijklmnopqrst")); 4574bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 19, 0, S("acdefghijklmnopqrst")); 4575bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 19, 1, S("a0cdefghijklmnopqrst")); 4576bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 19, 2, S("a0cdefghijklmnopqrst")); 4577bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 20, 0, S("acdefghijklmnopqrst")); 4578bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 20, 1, S("acdefghijklmnopqrst")); 4579bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 1, S("12345678901234567890"), 21, 0, S("can't happen")); 4580bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S(""), 0, 0, S("aklmnopqrst")); 4581bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S(""), 0, 1, S("aklmnopqrst")); 4582bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S(""), 1, 0, S("can't happen")); 4583bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 0, 0, S("aklmnopqrst")); 4584bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 0, 1, S("a1klmnopqrst")); 4585bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 0, 2, S("a12klmnopqrst")); 4586bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 0, 4, S("a1234klmnopqrst")); 4587bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 0, 5, S("a12345klmnopqrst")); 4588bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 4589bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 45909dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 4591bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test43() 4592bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 4593bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 0, 6, S("a12345klmnopqrst")); 4594bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 1, 0, S("aklmnopqrst")); 4595bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 1, 1, S("a2klmnopqrst")); 4596bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 1, 2, S("a23klmnopqrst")); 4597bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 1, 3, S("a234klmnopqrst")); 4598bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 1, 4, S("a2345klmnopqrst")); 4599bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 1, 5, S("a2345klmnopqrst")); 4600bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 2, 0, S("aklmnopqrst")); 4601bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 2, 1, S("a3klmnopqrst")); 4602bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 2, 2, S("a34klmnopqrst")); 4603bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 2, 3, S("a345klmnopqrst")); 4604bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 2, 4, S("a345klmnopqrst")); 4605bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 4, 0, S("aklmnopqrst")); 4606bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 4, 1, S("a5klmnopqrst")); 4607bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 4, 2, S("a5klmnopqrst")); 4608bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 5, 0, S("aklmnopqrst")); 4609bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 5, 1, S("aklmnopqrst")); 4610bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345"), 6, 0, S("can't happen")); 4611bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 0, 0, S("aklmnopqrst")); 4612bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 0, 1, S("a1klmnopqrst")); 4613bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 0, 5, S("a12345klmnopqrst")); 4614bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 0, 9, S("a123456789klmnopqrst")); 4615bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 0, 10, S("a1234567890klmnopqrst")); 4616bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 0, 11, S("a1234567890klmnopqrst")); 4617bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 1, 0, S("aklmnopqrst")); 4618bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 1, 1, S("a2klmnopqrst")); 4619bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 1, 4, S("a2345klmnopqrst")); 4620bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 1, 8, S("a23456789klmnopqrst")); 4621bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 1, 9, S("a234567890klmnopqrst")); 4622bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 1, 10, S("a234567890klmnopqrst")); 4623bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 5, 0, S("aklmnopqrst")); 4624bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 5, 1, S("a6klmnopqrst")); 4625bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 5, 2, S("a67klmnopqrst")); 4626bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 5, 4, S("a6789klmnopqrst")); 4627bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 5, 5, S("a67890klmnopqrst")); 4628bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 5, 6, S("a67890klmnopqrst")); 4629bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 9, 0, S("aklmnopqrst")); 4630bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 9, 1, S("a0klmnopqrst")); 4631bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 9, 2, S("a0klmnopqrst")); 4632bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 10, 0, S("aklmnopqrst")); 4633bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 10, 1, S("aklmnopqrst")); 4634bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("1234567890"), 11, 0, S("can't happen")); 4635bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 0, 0, S("aklmnopqrst")); 4636bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 0, 1, S("a1klmnopqrst")); 4637bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 0, 10, S("a1234567890klmnopqrst")); 4638bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 0, 19, S("a1234567890123456789klmnopqrst")); 4639bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 0, 20, S("a12345678901234567890klmnopqrst")); 4640bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 0, 21, S("a12345678901234567890klmnopqrst")); 4641bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 1, 0, S("aklmnopqrst")); 4642bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 1, 1, S("a2klmnopqrst")); 4643bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 1, 9, S("a234567890klmnopqrst")); 4644bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 1, 18, S("a234567890123456789klmnopqrst")); 4645bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 1, 19, S("a2345678901234567890klmnopqrst")); 4646bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 1, 20, S("a2345678901234567890klmnopqrst")); 4647bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 10, 0, S("aklmnopqrst")); 4648bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 10, 1, S("a1klmnopqrst")); 4649bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 10, 5, S("a12345klmnopqrst")); 4650bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 10, 9, S("a123456789klmnopqrst")); 4651bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 10, 10, S("a1234567890klmnopqrst")); 4652bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 10, 11, S("a1234567890klmnopqrst")); 4653bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 19, 0, S("aklmnopqrst")); 4654bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 19, 1, S("a0klmnopqrst")); 4655bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 19, 2, S("a0klmnopqrst")); 4656bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 20, 0, S("aklmnopqrst")); 4657bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 20, 1, S("aklmnopqrst")); 4658bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 9, S("12345678901234567890"), 21, 0, S("can't happen")); 4659bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S(""), 0, 0, S("at")); 4660bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S(""), 0, 1, S("at")); 4661bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S(""), 1, 0, S("can't happen")); 4662bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 0, 0, S("at")); 4663bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 0, 1, S("a1t")); 4664bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 0, 2, S("a12t")); 4665bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 0, 4, S("a1234t")); 4666bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 0, 5, S("a12345t")); 4667bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 0, 6, S("a12345t")); 4668bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 1, 0, S("at")); 4669bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 1, 1, S("a2t")); 4670bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 1, 2, S("a23t")); 4671bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 1, 3, S("a234t")); 4672bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 1, 4, S("a2345t")); 4673bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 1, 5, S("a2345t")); 4674bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 2, 0, S("at")); 4675bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 2, 1, S("a3t")); 4676bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 2, 2, S("a34t")); 4677bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 2, 3, S("a345t")); 4678bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 2, 4, S("a345t")); 4679bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 4, 0, S("at")); 4680bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 4, 1, S("a5t")); 4681bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 4, 2, S("a5t")); 4682bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 5, 0, S("at")); 4683bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 5, 1, S("at")); 4684bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345"), 6, 0, S("can't happen")); 4685bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 0, 0, S("at")); 4686bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 0, 1, S("a1t")); 4687bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 0, 5, S("a12345t")); 4688bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 0, 9, S("a123456789t")); 4689bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 0, 10, S("a1234567890t")); 4690bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 0, 11, S("a1234567890t")); 4691bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 1, 0, S("at")); 4692bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 1, 1, S("a2t")); 4693bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 4694bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 46959dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 4696bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test44() 4697bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 4698bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 1, 4, S("a2345t")); 4699bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 1, 8, S("a23456789t")); 4700bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 1, 9, S("a234567890t")); 4701bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 1, 10, S("a234567890t")); 4702bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 5, 0, S("at")); 4703bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 5, 1, S("a6t")); 4704bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 5, 2, S("a67t")); 4705bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 5, 4, S("a6789t")); 4706bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 5, 5, S("a67890t")); 4707bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 5, 6, S("a67890t")); 4708bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 9, 0, S("at")); 4709bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 9, 1, S("a0t")); 4710bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 9, 2, S("a0t")); 4711bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 10, 0, S("at")); 4712bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 10, 1, S("at")); 4713bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("1234567890"), 11, 0, S("can't happen")); 4714bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 0, 0, S("at")); 4715bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 0, 1, S("a1t")); 4716bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 0, 10, S("a1234567890t")); 4717bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 0, 19, S("a1234567890123456789t")); 4718bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 0, 20, S("a12345678901234567890t")); 4719bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 0, 21, S("a12345678901234567890t")); 4720bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 1, 0, S("at")); 4721bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 1, 1, S("a2t")); 4722bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 1, 9, S("a234567890t")); 4723bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 1, 18, S("a234567890123456789t")); 4724bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 1, 19, S("a2345678901234567890t")); 4725bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 1, 20, S("a2345678901234567890t")); 4726bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 10, 0, S("at")); 4727bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 10, 1, S("a1t")); 4728bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 10, 5, S("a12345t")); 4729bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 10, 9, S("a123456789t")); 4730bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 10, 10, S("a1234567890t")); 4731bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 10, 11, S("a1234567890t")); 4732bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 19, 0, S("at")); 4733bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 19, 1, S("a0t")); 4734bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 19, 2, S("a0t")); 4735bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 20, 0, S("at")); 4736bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 20, 1, S("at")); 4737bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 18, S("12345678901234567890"), 21, 0, S("can't happen")); 4738bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S(""), 0, 0, S("a")); 4739bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S(""), 0, 1, S("a")); 4740bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S(""), 1, 0, S("can't happen")); 4741bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 0, 0, S("a")); 4742bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 0, 1, S("a1")); 4743bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 0, 2, S("a12")); 4744bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 0, 4, S("a1234")); 4745bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 0, 5, S("a12345")); 4746bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 0, 6, S("a12345")); 4747bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 1, 0, S("a")); 4748bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 1, 1, S("a2")); 4749bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 1, 2, S("a23")); 4750bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 1, 3, S("a234")); 4751bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 1, 4, S("a2345")); 4752bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 1, 5, S("a2345")); 4753bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 2, 0, S("a")); 4754bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 2, 1, S("a3")); 4755bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 2, 2, S("a34")); 4756bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 2, 3, S("a345")); 4757bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 2, 4, S("a345")); 4758bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 4, 0, S("a")); 4759bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 4, 1, S("a5")); 4760bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 4, 2, S("a5")); 4761bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 5, 0, S("a")); 4762bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 5, 1, S("a")); 4763bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345"), 6, 0, S("can't happen")); 4764bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 0, 0, S("a")); 4765bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 0, 1, S("a1")); 4766bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 0, 5, S("a12345")); 4767bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 0, 9, S("a123456789")); 4768bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 0, 10, S("a1234567890")); 4769bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 0, 11, S("a1234567890")); 4770bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 1, 0, S("a")); 4771bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 1, 1, S("a2")); 4772bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 1, 4, S("a2345")); 4773bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 1, 8, S("a23456789")); 4774bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 1, 9, S("a234567890")); 4775bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 1, 10, S("a234567890")); 4776bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 5, 0, S("a")); 4777bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 5, 1, S("a6")); 4778bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 5, 2, S("a67")); 4779bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 5, 4, S("a6789")); 4780bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 5, 5, S("a67890")); 4781bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 5, 6, S("a67890")); 4782bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 9, 0, S("a")); 4783bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 9, 1, S("a0")); 4784bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 9, 2, S("a0")); 4785bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 10, 0, S("a")); 4786bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 10, 1, S("a")); 4787bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("1234567890"), 11, 0, S("can't happen")); 4788bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 0, 0, S("a")); 4789bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 0, 1, S("a1")); 4790bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 0, 10, S("a1234567890")); 4791bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 0, 19, S("a1234567890123456789")); 4792bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 0, 20, S("a12345678901234567890")); 4793bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 0, 21, S("a12345678901234567890")); 4794bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 1, 0, S("a")); 4795bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 1, 1, S("a2")); 4796bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 1, 9, S("a234567890")); 4797bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 1, 18, S("a234567890123456789")); 4798bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 4799bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 48009dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 4801bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test45() 4802bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 4803bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 1, 19, S("a2345678901234567890")); 4804bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 1, 20, S("a2345678901234567890")); 4805bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 10, 0, S("a")); 4806bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 10, 1, S("a1")); 4807bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 10, 5, S("a12345")); 4808bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 10, 9, S("a123456789")); 4809bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 10, 10, S("a1234567890")); 4810bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 10, 11, S("a1234567890")); 4811bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 19, 0, S("a")); 4812bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 19, 1, S("a0")); 4813bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 19, 2, S("a0")); 4814bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 20, 0, S("a")); 4815bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 20, 1, S("a")); 4816bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 19, S("12345678901234567890"), 21, 0, S("can't happen")); 4817bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S(""), 0, 0, S("a")); 4818bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S(""), 0, 1, S("a")); 4819bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S(""), 1, 0, S("can't happen")); 4820bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 0, 0, S("a")); 4821bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 0, 1, S("a1")); 4822bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 0, 2, S("a12")); 4823bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 0, 4, S("a1234")); 4824bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 0, 5, S("a12345")); 4825bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 0, 6, S("a12345")); 4826bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 1, 0, S("a")); 4827bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 1, 1, S("a2")); 4828bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 1, 2, S("a23")); 4829bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 1, 3, S("a234")); 4830bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 1, 4, S("a2345")); 4831bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 1, 5, S("a2345")); 4832bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 2, 0, S("a")); 4833bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 2, 1, S("a3")); 4834bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 2, 2, S("a34")); 4835bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 2, 3, S("a345")); 4836bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 2, 4, S("a345")); 4837bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 4, 0, S("a")); 4838bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 4, 1, S("a5")); 4839bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 4, 2, S("a5")); 4840bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 5, 0, S("a")); 4841bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 5, 1, S("a")); 4842bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345"), 6, 0, S("can't happen")); 4843bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 0, 0, S("a")); 4844bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 0, 1, S("a1")); 4845bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 0, 5, S("a12345")); 4846bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 0, 9, S("a123456789")); 4847bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 0, 10, S("a1234567890")); 4848bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 0, 11, S("a1234567890")); 4849bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 1, 0, S("a")); 4850bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 1, 1, S("a2")); 4851bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 1, 4, S("a2345")); 4852bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 1, 8, S("a23456789")); 4853bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 1, 9, S("a234567890")); 4854bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 1, 10, S("a234567890")); 4855bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 5, 0, S("a")); 4856bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 5, 1, S("a6")); 4857bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 5, 2, S("a67")); 4858bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 5, 4, S("a6789")); 4859bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 5, 5, S("a67890")); 4860bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 5, 6, S("a67890")); 4861bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 9, 0, S("a")); 4862bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 9, 1, S("a0")); 4863bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 9, 2, S("a0")); 4864bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 10, 0, S("a")); 4865bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 10, 1, S("a")); 4866bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("1234567890"), 11, 0, S("can't happen")); 4867bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 0, 0, S("a")); 4868bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 0, 1, S("a1")); 4869bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 0, 10, S("a1234567890")); 4870bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 0, 19, S("a1234567890123456789")); 4871bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 0, 20, S("a12345678901234567890")); 4872bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 0, 21, S("a12345678901234567890")); 4873bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 1, 0, S("a")); 4874bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 1, 1, S("a2")); 4875bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 1, 9, S("a234567890")); 4876bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 1, 18, S("a234567890123456789")); 4877bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 1, 19, S("a2345678901234567890")); 4878bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 1, 20, S("a2345678901234567890")); 4879bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 10, 0, S("a")); 4880bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 10, 1, S("a1")); 4881bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 10, 5, S("a12345")); 4882bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 10, 9, S("a123456789")); 4883bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 10, 10, S("a1234567890")); 4884bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 10, 11, S("a1234567890")); 4885bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 19, 0, S("a")); 4886bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 19, 1, S("a0")); 4887bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 19, 2, S("a0")); 4888bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 20, 0, S("a")); 4889bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 20, 1, S("a")); 4890bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 1, 20, S("12345678901234567890"), 21, 0, S("can't happen")); 4891bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S(""), 0, 0, S("abcdefghijklmnopqrst")); 4892bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S(""), 0, 1, S("abcdefghijklmnopqrst")); 4893bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S(""), 1, 0, S("can't happen")); 4894bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 0, 0, S("abcdefghijklmnopqrst")); 4895bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 0, 1, S("abcdefghij1klmnopqrst")); 4896bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 0, 2, S("abcdefghij12klmnopqrst")); 4897bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 0, 4, S("abcdefghij1234klmnopqrst")); 4898bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 0, 5, S("abcdefghij12345klmnopqrst")); 4899bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 0, 6, S("abcdefghij12345klmnopqrst")); 4900bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 1, 0, S("abcdefghijklmnopqrst")); 4901bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 1, 1, S("abcdefghij2klmnopqrst")); 4902bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 1, 2, S("abcdefghij23klmnopqrst")); 4903bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 4904bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 49059dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 4906bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test46() 4907bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 4908bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 1, 3, S("abcdefghij234klmnopqrst")); 4909bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 1, 4, S("abcdefghij2345klmnopqrst")); 4910bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 1, 5, S("abcdefghij2345klmnopqrst")); 4911bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 2, 0, S("abcdefghijklmnopqrst")); 4912bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 2, 1, S("abcdefghij3klmnopqrst")); 4913bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 2, 2, S("abcdefghij34klmnopqrst")); 4914bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 2, 3, S("abcdefghij345klmnopqrst")); 4915bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 2, 4, S("abcdefghij345klmnopqrst")); 4916bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 4, 0, S("abcdefghijklmnopqrst")); 4917bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 4, 1, S("abcdefghij5klmnopqrst")); 4918bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 4, 2, S("abcdefghij5klmnopqrst")); 4919bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 5, 0, S("abcdefghijklmnopqrst")); 4920bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 5, 1, S("abcdefghijklmnopqrst")); 4921bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345"), 6, 0, S("can't happen")); 4922bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); 4923bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 0, 1, S("abcdefghij1klmnopqrst")); 4924bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 0, 5, S("abcdefghij12345klmnopqrst")); 4925bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 0, 9, S("abcdefghij123456789klmnopqrst")); 4926bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 0, 10, S("abcdefghij1234567890klmnopqrst")); 4927bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 0, 11, S("abcdefghij1234567890klmnopqrst")); 4928bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); 4929bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 1, 1, S("abcdefghij2klmnopqrst")); 4930bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 1, 4, S("abcdefghij2345klmnopqrst")); 4931bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 1, 8, S("abcdefghij23456789klmnopqrst")); 4932bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 1, 9, S("abcdefghij234567890klmnopqrst")); 4933bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 1, 10, S("abcdefghij234567890klmnopqrst")); 4934bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); 4935bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 5, 1, S("abcdefghij6klmnopqrst")); 4936bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 5, 2, S("abcdefghij67klmnopqrst")); 4937bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 5, 4, S("abcdefghij6789klmnopqrst")); 4938bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 5, 5, S("abcdefghij67890klmnopqrst")); 4939bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 5, 6, S("abcdefghij67890klmnopqrst")); 4940bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); 4941bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 9, 1, S("abcdefghij0klmnopqrst")); 4942bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 9, 2, S("abcdefghij0klmnopqrst")); 4943bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); 4944bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); 4945bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("1234567890"), 11, 0, S("can't happen")); 4946bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); 4947bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 0, 1, S("abcdefghij1klmnopqrst")); 4948bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 0, 10, S("abcdefghij1234567890klmnopqrst")); 4949bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789klmnopqrst")); 4950bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890klmnopqrst")); 4951bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890klmnopqrst")); 4952bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); 4953bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 1, 1, S("abcdefghij2klmnopqrst")); 4954bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 1, 9, S("abcdefghij234567890klmnopqrst")); 4955bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789klmnopqrst")); 4956bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890klmnopqrst")); 4957bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890klmnopqrst")); 4958bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); 4959bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 10, 1, S("abcdefghij1klmnopqrst")); 4960bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 10, 5, S("abcdefghij12345klmnopqrst")); 4961bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 10, 9, S("abcdefghij123456789klmnopqrst")); 4962bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 10, 10, S("abcdefghij1234567890klmnopqrst")); 4963bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 10, 11, S("abcdefghij1234567890klmnopqrst")); 4964bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); 4965bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 19, 1, S("abcdefghij0klmnopqrst")); 4966bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 19, 2, S("abcdefghij0klmnopqrst")); 4967bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); 4968bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); 4969bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 0, S("12345678901234567890"), 21, 0, S("can't happen")); 4970bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S(""), 0, 0, S("abcdefghijlmnopqrst")); 4971bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S(""), 0, 1, S("abcdefghijlmnopqrst")); 4972bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S(""), 1, 0, S("can't happen")); 4973bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 0, 0, S("abcdefghijlmnopqrst")); 4974bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 0, 1, S("abcdefghij1lmnopqrst")); 4975bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 0, 2, S("abcdefghij12lmnopqrst")); 4976bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 0, 4, S("abcdefghij1234lmnopqrst")); 4977bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 0, 5, S("abcdefghij12345lmnopqrst")); 4978bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 0, 6, S("abcdefghij12345lmnopqrst")); 4979bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 1, 0, S("abcdefghijlmnopqrst")); 4980bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 1, 1, S("abcdefghij2lmnopqrst")); 4981bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 1, 2, S("abcdefghij23lmnopqrst")); 4982bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 1, 3, S("abcdefghij234lmnopqrst")); 4983bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 1, 4, S("abcdefghij2345lmnopqrst")); 4984bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 1, 5, S("abcdefghij2345lmnopqrst")); 4985bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 2, 0, S("abcdefghijlmnopqrst")); 4986bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 2, 1, S("abcdefghij3lmnopqrst")); 4987bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 2, 2, S("abcdefghij34lmnopqrst")); 4988bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 2, 3, S("abcdefghij345lmnopqrst")); 4989bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 2, 4, S("abcdefghij345lmnopqrst")); 4990bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 4, 0, S("abcdefghijlmnopqrst")); 4991bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 4, 1, S("abcdefghij5lmnopqrst")); 4992bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 4, 2, S("abcdefghij5lmnopqrst")); 4993bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 5, 0, S("abcdefghijlmnopqrst")); 4994bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 5, 1, S("abcdefghijlmnopqrst")); 4995bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345"), 6, 0, S("can't happen")); 4996bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 0, 0, S("abcdefghijlmnopqrst")); 4997bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 0, 1, S("abcdefghij1lmnopqrst")); 4998bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 0, 5, S("abcdefghij12345lmnopqrst")); 4999bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 0, 9, S("abcdefghij123456789lmnopqrst")); 5000bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 0, 10, S("abcdefghij1234567890lmnopqrst")); 5001bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 0, 11, S("abcdefghij1234567890lmnopqrst")); 5002bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 1, 0, S("abcdefghijlmnopqrst")); 5003bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 1, 1, S("abcdefghij2lmnopqrst")); 5004bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 1, 4, S("abcdefghij2345lmnopqrst")); 5005bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 1, 8, S("abcdefghij23456789lmnopqrst")); 5006bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 1, 9, S("abcdefghij234567890lmnopqrst")); 5007bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 1, 10, S("abcdefghij234567890lmnopqrst")); 5008bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 5009bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 50109dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 5011bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test47() 5012bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 5013bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 5, 0, S("abcdefghijlmnopqrst")); 5014bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 5, 1, S("abcdefghij6lmnopqrst")); 5015bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 5, 2, S("abcdefghij67lmnopqrst")); 5016bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 5, 4, S("abcdefghij6789lmnopqrst")); 5017bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 5, 5, S("abcdefghij67890lmnopqrst")); 5018bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 5, 6, S("abcdefghij67890lmnopqrst")); 5019bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 9, 0, S("abcdefghijlmnopqrst")); 5020bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 9, 1, S("abcdefghij0lmnopqrst")); 5021bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 9, 2, S("abcdefghij0lmnopqrst")); 5022bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 10, 0, S("abcdefghijlmnopqrst")); 5023bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 10, 1, S("abcdefghijlmnopqrst")); 5024bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("1234567890"), 11, 0, S("can't happen")); 5025bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 0, 0, S("abcdefghijlmnopqrst")); 5026bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 0, 1, S("abcdefghij1lmnopqrst")); 5027bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 0, 10, S("abcdefghij1234567890lmnopqrst")); 5028bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789lmnopqrst")); 5029bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890lmnopqrst")); 5030bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890lmnopqrst")); 5031bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 1, 0, S("abcdefghijlmnopqrst")); 5032bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 1, 1, S("abcdefghij2lmnopqrst")); 5033bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 1, 9, S("abcdefghij234567890lmnopqrst")); 5034bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789lmnopqrst")); 5035bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890lmnopqrst")); 5036bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890lmnopqrst")); 5037bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 10, 0, S("abcdefghijlmnopqrst")); 5038bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 10, 1, S("abcdefghij1lmnopqrst")); 5039bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 10, 5, S("abcdefghij12345lmnopqrst")); 5040bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 10, 9, S("abcdefghij123456789lmnopqrst")); 5041bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 10, 10, S("abcdefghij1234567890lmnopqrst")); 5042bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 10, 11, S("abcdefghij1234567890lmnopqrst")); 5043bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 19, 0, S("abcdefghijlmnopqrst")); 5044bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 19, 1, S("abcdefghij0lmnopqrst")); 5045bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 19, 2, S("abcdefghij0lmnopqrst")); 5046bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 20, 0, S("abcdefghijlmnopqrst")); 5047bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 20, 1, S("abcdefghijlmnopqrst")); 5048bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 1, S("12345678901234567890"), 21, 0, S("can't happen")); 5049bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S(""), 0, 0, S("abcdefghijpqrst")); 5050bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S(""), 0, 1, S("abcdefghijpqrst")); 5051bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S(""), 1, 0, S("can't happen")); 5052bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 0, 0, S("abcdefghijpqrst")); 5053bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 0, 1, S("abcdefghij1pqrst")); 5054bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 0, 2, S("abcdefghij12pqrst")); 5055bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 0, 4, S("abcdefghij1234pqrst")); 5056bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 0, 5, S("abcdefghij12345pqrst")); 5057bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 0, 6, S("abcdefghij12345pqrst")); 5058bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 1, 0, S("abcdefghijpqrst")); 5059bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 1, 1, S("abcdefghij2pqrst")); 5060bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 1, 2, S("abcdefghij23pqrst")); 5061bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 1, 3, S("abcdefghij234pqrst")); 5062bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 1, 4, S("abcdefghij2345pqrst")); 5063bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 1, 5, S("abcdefghij2345pqrst")); 5064bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 2, 0, S("abcdefghijpqrst")); 5065bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 2, 1, S("abcdefghij3pqrst")); 5066bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 2, 2, S("abcdefghij34pqrst")); 5067bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 2, 3, S("abcdefghij345pqrst")); 5068bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 2, 4, S("abcdefghij345pqrst")); 5069bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 4, 0, S("abcdefghijpqrst")); 5070bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 4, 1, S("abcdefghij5pqrst")); 5071bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 4, 2, S("abcdefghij5pqrst")); 5072bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 5, 0, S("abcdefghijpqrst")); 5073bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 5, 1, S("abcdefghijpqrst")); 5074bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345"), 6, 0, S("can't happen")); 5075bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 0, 0, S("abcdefghijpqrst")); 5076bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 0, 1, S("abcdefghij1pqrst")); 5077bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 0, 5, S("abcdefghij12345pqrst")); 5078bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 0, 9, S("abcdefghij123456789pqrst")); 5079bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 0, 10, S("abcdefghij1234567890pqrst")); 5080bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 0, 11, S("abcdefghij1234567890pqrst")); 5081bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 1, 0, S("abcdefghijpqrst")); 5082bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 1, 1, S("abcdefghij2pqrst")); 5083bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 1, 4, S("abcdefghij2345pqrst")); 5084bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 1, 8, S("abcdefghij23456789pqrst")); 5085bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 1, 9, S("abcdefghij234567890pqrst")); 5086bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 1, 10, S("abcdefghij234567890pqrst")); 5087bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 5, 0, S("abcdefghijpqrst")); 5088bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 5, 1, S("abcdefghij6pqrst")); 5089bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 5, 2, S("abcdefghij67pqrst")); 5090bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 5, 4, S("abcdefghij6789pqrst")); 5091bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 5, 5, S("abcdefghij67890pqrst")); 5092bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 5, 6, S("abcdefghij67890pqrst")); 5093bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 9, 0, S("abcdefghijpqrst")); 5094bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 9, 1, S("abcdefghij0pqrst")); 5095bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 9, 2, S("abcdefghij0pqrst")); 5096bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 10, 0, S("abcdefghijpqrst")); 5097bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 10, 1, S("abcdefghijpqrst")); 5098bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("1234567890"), 11, 0, S("can't happen")); 5099bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 0, 0, S("abcdefghijpqrst")); 5100bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 0, 1, S("abcdefghij1pqrst")); 5101bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 0, 10, S("abcdefghij1234567890pqrst")); 5102bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789pqrst")); 5103bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890pqrst")); 5104bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890pqrst")); 5105bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 1, 0, S("abcdefghijpqrst")); 5106bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 1, 1, S("abcdefghij2pqrst")); 5107bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 1, 9, S("abcdefghij234567890pqrst")); 5108bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789pqrst")); 5109bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890pqrst")); 5110bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890pqrst")); 5111bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 10, 0, S("abcdefghijpqrst")); 5112bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 10, 1, S("abcdefghij1pqrst")); 5113bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 5114bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 51159dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 5116bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test48() 5117bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 5118bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 10, 5, S("abcdefghij12345pqrst")); 5119bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 10, 9, S("abcdefghij123456789pqrst")); 5120bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 10, 10, S("abcdefghij1234567890pqrst")); 5121bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 10, 11, S("abcdefghij1234567890pqrst")); 5122bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 19, 0, S("abcdefghijpqrst")); 5123bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 19, 1, S("abcdefghij0pqrst")); 5124bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 19, 2, S("abcdefghij0pqrst")); 5125bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 20, 0, S("abcdefghijpqrst")); 5126bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 20, 1, S("abcdefghijpqrst")); 5127bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 5, S("12345678901234567890"), 21, 0, S("can't happen")); 5128bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S(""), 0, 0, S("abcdefghijt")); 5129bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S(""), 0, 1, S("abcdefghijt")); 5130bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S(""), 1, 0, S("can't happen")); 5131bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 0, 0, S("abcdefghijt")); 5132bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 0, 1, S("abcdefghij1t")); 5133bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 0, 2, S("abcdefghij12t")); 5134bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 0, 4, S("abcdefghij1234t")); 5135bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 0, 5, S("abcdefghij12345t")); 5136bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 0, 6, S("abcdefghij12345t")); 5137bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 1, 0, S("abcdefghijt")); 5138bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 1, 1, S("abcdefghij2t")); 5139bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 1, 2, S("abcdefghij23t")); 5140bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 1, 3, S("abcdefghij234t")); 5141bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 1, 4, S("abcdefghij2345t")); 5142bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 1, 5, S("abcdefghij2345t")); 5143bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 2, 0, S("abcdefghijt")); 5144bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 2, 1, S("abcdefghij3t")); 5145bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 2, 2, S("abcdefghij34t")); 5146bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 2, 3, S("abcdefghij345t")); 5147bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 2, 4, S("abcdefghij345t")); 5148bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 4, 0, S("abcdefghijt")); 5149bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 4, 1, S("abcdefghij5t")); 5150bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 4, 2, S("abcdefghij5t")); 5151bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 5, 0, S("abcdefghijt")); 5152bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 5, 1, S("abcdefghijt")); 5153bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345"), 6, 0, S("can't happen")); 5154bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 0, 0, S("abcdefghijt")); 5155bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 0, 1, S("abcdefghij1t")); 5156bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 0, 5, S("abcdefghij12345t")); 5157bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 0, 9, S("abcdefghij123456789t")); 5158bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 0, 10, S("abcdefghij1234567890t")); 5159bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 0, 11, S("abcdefghij1234567890t")); 5160bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 1, 0, S("abcdefghijt")); 5161bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 1, 1, S("abcdefghij2t")); 5162bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 1, 4, S("abcdefghij2345t")); 5163bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 1, 8, S("abcdefghij23456789t")); 5164bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 1, 9, S("abcdefghij234567890t")); 5165bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 1, 10, S("abcdefghij234567890t")); 5166bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 5, 0, S("abcdefghijt")); 5167bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 5, 1, S("abcdefghij6t")); 5168bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 5, 2, S("abcdefghij67t")); 5169bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 5, 4, S("abcdefghij6789t")); 5170bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 5, 5, S("abcdefghij67890t")); 5171bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 5, 6, S("abcdefghij67890t")); 5172bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 9, 0, S("abcdefghijt")); 5173bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 9, 1, S("abcdefghij0t")); 5174bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 9, 2, S("abcdefghij0t")); 5175bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 10, 0, S("abcdefghijt")); 5176bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 10, 1, S("abcdefghijt")); 5177bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("1234567890"), 11, 0, S("can't happen")); 5178bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 0, 0, S("abcdefghijt")); 5179bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 0, 1, S("abcdefghij1t")); 5180bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 0, 10, S("abcdefghij1234567890t")); 5181bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789t")); 5182bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890t")); 5183bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890t")); 5184bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 1, 0, S("abcdefghijt")); 5185bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 1, 1, S("abcdefghij2t")); 5186bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 1, 9, S("abcdefghij234567890t")); 5187bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789t")); 5188bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890t")); 5189bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890t")); 5190bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 10, 0, S("abcdefghijt")); 5191bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 10, 1, S("abcdefghij1t")); 5192bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 10, 5, S("abcdefghij12345t")); 5193bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 10, 9, S("abcdefghij123456789t")); 5194bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 10, 10, S("abcdefghij1234567890t")); 5195bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 10, 11, S("abcdefghij1234567890t")); 5196bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 19, 0, S("abcdefghijt")); 5197bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 19, 1, S("abcdefghij0t")); 5198bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 19, 2, S("abcdefghij0t")); 5199bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 20, 0, S("abcdefghijt")); 5200bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 20, 1, S("abcdefghijt")); 5201bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 9, S("12345678901234567890"), 21, 0, S("can't happen")); 5202bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S(""), 0, 0, S("abcdefghij")); 5203bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S(""), 0, 1, S("abcdefghij")); 5204bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S(""), 1, 0, S("can't happen")); 5205bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 0, 0, S("abcdefghij")); 5206bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 0, 1, S("abcdefghij1")); 5207bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 0, 2, S("abcdefghij12")); 5208bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 0, 4, S("abcdefghij1234")); 5209bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 0, 5, S("abcdefghij12345")); 5210bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 0, 6, S("abcdefghij12345")); 5211bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 1, 0, S("abcdefghij")); 5212bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 1, 1, S("abcdefghij2")); 5213bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 1, 2, S("abcdefghij23")); 5214bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 1, 3, S("abcdefghij234")); 5215bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 1, 4, S("abcdefghij2345")); 5216bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 1, 5, S("abcdefghij2345")); 5217bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 2, 0, S("abcdefghij")); 5218bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 5219bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 52209dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 5221bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test49() 5222bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 5223bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 2, 1, S("abcdefghij3")); 5224bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 2, 2, S("abcdefghij34")); 5225bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 2, 3, S("abcdefghij345")); 5226bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 2, 4, S("abcdefghij345")); 5227bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 4, 0, S("abcdefghij")); 5228bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 4, 1, S("abcdefghij5")); 5229bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 4, 2, S("abcdefghij5")); 5230bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 5, 0, S("abcdefghij")); 5231bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 5, 1, S("abcdefghij")); 5232bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345"), 6, 0, S("can't happen")); 5233bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 0, 0, S("abcdefghij")); 5234bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 0, 1, S("abcdefghij1")); 5235bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 0, 5, S("abcdefghij12345")); 5236bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 0, 9, S("abcdefghij123456789")); 5237bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 0, 10, S("abcdefghij1234567890")); 5238bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 0, 11, S("abcdefghij1234567890")); 5239bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 1, 0, S("abcdefghij")); 5240bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 1, 1, S("abcdefghij2")); 5241bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 1, 4, S("abcdefghij2345")); 5242bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 1, 8, S("abcdefghij23456789")); 5243bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 1, 9, S("abcdefghij234567890")); 5244bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 1, 10, S("abcdefghij234567890")); 5245bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 5, 0, S("abcdefghij")); 5246bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 5, 1, S("abcdefghij6")); 5247bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 5, 2, S("abcdefghij67")); 5248bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 5, 4, S("abcdefghij6789")); 5249bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 5, 5, S("abcdefghij67890")); 5250bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 5, 6, S("abcdefghij67890")); 5251bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 9, 0, S("abcdefghij")); 5252bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 9, 1, S("abcdefghij0")); 5253bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 9, 2, S("abcdefghij0")); 5254bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 10, 0, S("abcdefghij")); 5255bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 10, 1, S("abcdefghij")); 5256bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("1234567890"), 11, 0, S("can't happen")); 5257bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 0, 0, S("abcdefghij")); 5258bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 0, 1, S("abcdefghij1")); 5259bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 0, 10, S("abcdefghij1234567890")); 5260bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789")); 5261bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890")); 5262bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890")); 5263bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 1, 0, S("abcdefghij")); 5264bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 1, 1, S("abcdefghij2")); 5265bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 1, 9, S("abcdefghij234567890")); 5266bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789")); 5267bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890")); 5268bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890")); 5269bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 10, 0, S("abcdefghij")); 5270bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 10, 1, S("abcdefghij1")); 5271bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 10, 5, S("abcdefghij12345")); 5272bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 10, 9, S("abcdefghij123456789")); 5273bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 10, 10, S("abcdefghij1234567890")); 5274bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 10, 11, S("abcdefghij1234567890")); 5275bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 19, 0, S("abcdefghij")); 5276bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 19, 1, S("abcdefghij0")); 5277bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 19, 2, S("abcdefghij0")); 5278bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 20, 0, S("abcdefghij")); 5279bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 20, 1, S("abcdefghij")); 5280bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 10, S("12345678901234567890"), 21, 0, S("can't happen")); 5281bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S(""), 0, 0, S("abcdefghij")); 5282bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S(""), 0, 1, S("abcdefghij")); 5283bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S(""), 1, 0, S("can't happen")); 5284bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 0, 0, S("abcdefghij")); 5285bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 0, 1, S("abcdefghij1")); 5286bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 0, 2, S("abcdefghij12")); 5287bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 0, 4, S("abcdefghij1234")); 5288bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 0, 5, S("abcdefghij12345")); 5289bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 0, 6, S("abcdefghij12345")); 5290bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 1, 0, S("abcdefghij")); 5291bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 1, 1, S("abcdefghij2")); 5292bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 1, 2, S("abcdefghij23")); 5293bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 1, 3, S("abcdefghij234")); 5294bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 1, 4, S("abcdefghij2345")); 5295bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 1, 5, S("abcdefghij2345")); 5296bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 2, 0, S("abcdefghij")); 5297bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 2, 1, S("abcdefghij3")); 5298bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 2, 2, S("abcdefghij34")); 5299bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 2, 3, S("abcdefghij345")); 5300bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 2, 4, S("abcdefghij345")); 5301bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 4, 0, S("abcdefghij")); 5302bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 4, 1, S("abcdefghij5")); 5303bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 4, 2, S("abcdefghij5")); 5304bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 5, 0, S("abcdefghij")); 5305bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 5, 1, S("abcdefghij")); 5306bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345"), 6, 0, S("can't happen")); 5307bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 0, 0, S("abcdefghij")); 5308bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 0, 1, S("abcdefghij1")); 5309bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 0, 5, S("abcdefghij12345")); 5310bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 0, 9, S("abcdefghij123456789")); 5311bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 0, 10, S("abcdefghij1234567890")); 5312bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 0, 11, S("abcdefghij1234567890")); 5313bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 1, 0, S("abcdefghij")); 5314bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 1, 1, S("abcdefghij2")); 5315bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 1, 4, S("abcdefghij2345")); 5316bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 1, 8, S("abcdefghij23456789")); 5317bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 1, 9, S("abcdefghij234567890")); 5318bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 1, 10, S("abcdefghij234567890")); 5319bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 5, 0, S("abcdefghij")); 5320bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 5, 1, S("abcdefghij6")); 5321bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 5, 2, S("abcdefghij67")); 5322bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 5, 4, S("abcdefghij6789")); 5323bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 5324bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 53259dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 5326bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test50() 5327bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 5328bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 5, 5, S("abcdefghij67890")); 5329bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 5, 6, S("abcdefghij67890")); 5330bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 9, 0, S("abcdefghij")); 5331bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 9, 1, S("abcdefghij0")); 5332bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 9, 2, S("abcdefghij0")); 5333bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 10, 0, S("abcdefghij")); 5334bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 10, 1, S("abcdefghij")); 5335bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("1234567890"), 11, 0, S("can't happen")); 5336bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 0, 0, S("abcdefghij")); 5337bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 0, 1, S("abcdefghij1")); 5338bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 0, 10, S("abcdefghij1234567890")); 5339bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 0, 19, S("abcdefghij1234567890123456789")); 5340bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 0, 20, S("abcdefghij12345678901234567890")); 5341bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 0, 21, S("abcdefghij12345678901234567890")); 5342bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 1, 0, S("abcdefghij")); 5343bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 1, 1, S("abcdefghij2")); 5344bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 1, 9, S("abcdefghij234567890")); 5345bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 1, 18, S("abcdefghij234567890123456789")); 5346bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 1, 19, S("abcdefghij2345678901234567890")); 5347bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 1, 20, S("abcdefghij2345678901234567890")); 5348bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 10, 0, S("abcdefghij")); 5349bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 10, 1, S("abcdefghij1")); 5350bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 10, 5, S("abcdefghij12345")); 5351bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 10, 9, S("abcdefghij123456789")); 5352bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 10, 10, S("abcdefghij1234567890")); 5353bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 10, 11, S("abcdefghij1234567890")); 5354bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 19, 0, S("abcdefghij")); 5355bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 19, 1, S("abcdefghij0")); 5356bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 19, 2, S("abcdefghij0")); 5357bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 20, 0, S("abcdefghij")); 5358bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 20, 1, S("abcdefghij")); 5359bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 10, 11, S("12345678901234567890"), 21, 0, S("can't happen")); 5360bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S(""), 0, 0, S("abcdefghijklmnopqrst")); 5361bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S(""), 0, 1, S("abcdefghijklmnopqrst")); 5362bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S(""), 1, 0, S("can't happen")); 5363bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 0, 0, S("abcdefghijklmnopqrst")); 5364bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 0, 1, S("abcdefghijklmnopqrs1t")); 5365bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 0, 2, S("abcdefghijklmnopqrs12t")); 5366bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 0, 4, S("abcdefghijklmnopqrs1234t")); 5367bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 0, 5, S("abcdefghijklmnopqrs12345t")); 5368bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 0, 6, S("abcdefghijklmnopqrs12345t")); 5369bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 1, 0, S("abcdefghijklmnopqrst")); 5370bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 1, 1, S("abcdefghijklmnopqrs2t")); 5371bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 1, 2, S("abcdefghijklmnopqrs23t")); 5372bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 1, 3, S("abcdefghijklmnopqrs234t")); 5373bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 1, 4, S("abcdefghijklmnopqrs2345t")); 5374bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 1, 5, S("abcdefghijklmnopqrs2345t")); 5375bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 2, 0, S("abcdefghijklmnopqrst")); 5376bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 2, 1, S("abcdefghijklmnopqrs3t")); 5377bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 2, 2, S("abcdefghijklmnopqrs34t")); 5378bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 2, 3, S("abcdefghijklmnopqrs345t")); 5379bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 2, 4, S("abcdefghijklmnopqrs345t")); 5380bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 4, 0, S("abcdefghijklmnopqrst")); 5381bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 4, 1, S("abcdefghijklmnopqrs5t")); 5382bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 4, 2, S("abcdefghijklmnopqrs5t")); 5383bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 5, 0, S("abcdefghijklmnopqrst")); 5384bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 5, 1, S("abcdefghijklmnopqrst")); 5385bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345"), 6, 0, S("can't happen")); 5386bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); 5387bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 0, 1, S("abcdefghijklmnopqrs1t")); 5388bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 0, 5, S("abcdefghijklmnopqrs12345t")); 5389bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 0, 9, S("abcdefghijklmnopqrs123456789t")); 5390bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890t")); 5391bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 0, 11, S("abcdefghijklmnopqrs1234567890t")); 5392bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); 5393bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 1, 1, S("abcdefghijklmnopqrs2t")); 5394bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 1, 4, S("abcdefghijklmnopqrs2345t")); 5395bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 1, 8, S("abcdefghijklmnopqrs23456789t")); 5396bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 1, 9, S("abcdefghijklmnopqrs234567890t")); 5397bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 1, 10, S("abcdefghijklmnopqrs234567890t")); 5398bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); 5399bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 5, 1, S("abcdefghijklmnopqrs6t")); 5400bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 5, 2, S("abcdefghijklmnopqrs67t")); 5401bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 5, 4, S("abcdefghijklmnopqrs6789t")); 5402bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 5, 5, S("abcdefghijklmnopqrs67890t")); 5403bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 5, 6, S("abcdefghijklmnopqrs67890t")); 5404bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); 5405bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 9, 1, S("abcdefghijklmnopqrs0t")); 5406bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 9, 2, S("abcdefghijklmnopqrs0t")); 5407bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); 5408bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); 5409bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("1234567890"), 11, 0, S("can't happen")); 5410bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); 5411bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 0, 1, S("abcdefghijklmnopqrs1t")); 5412bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890t")); 5413bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 0, 19, S("abcdefghijklmnopqrs1234567890123456789t")); 5414bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 0, 20, S("abcdefghijklmnopqrs12345678901234567890t")); 5415bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 0, 21, S("abcdefghijklmnopqrs12345678901234567890t")); 5416bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); 5417bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 1, 1, S("abcdefghijklmnopqrs2t")); 5418bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 1, 9, S("abcdefghijklmnopqrs234567890t")); 5419bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 1, 18, S("abcdefghijklmnopqrs234567890123456789t")); 5420bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 1, 19, S("abcdefghijklmnopqrs2345678901234567890t")); 5421bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 1, 20, S("abcdefghijklmnopqrs2345678901234567890t")); 5422bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); 5423bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 10, 1, S("abcdefghijklmnopqrs1t")); 5424bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 10, 5, S("abcdefghijklmnopqrs12345t")); 5425bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 10, 9, S("abcdefghijklmnopqrs123456789t")); 5426bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 10, 10, S("abcdefghijklmnopqrs1234567890t")); 5427bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 10, 11, S("abcdefghijklmnopqrs1234567890t")); 5428bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 5429bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 54309dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 5431bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test51() 5432bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 5433bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); 5434bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 19, 1, S("abcdefghijklmnopqrs0t")); 5435bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 19, 2, S("abcdefghijklmnopqrs0t")); 5436bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); 5437bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); 5438bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 0, S("12345678901234567890"), 21, 0, S("can't happen")); 5439bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S(""), 0, 0, S("abcdefghijklmnopqrs")); 5440bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S(""), 0, 1, S("abcdefghijklmnopqrs")); 5441bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S(""), 1, 0, S("can't happen")); 5442bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 0, 0, S("abcdefghijklmnopqrs")); 5443bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 0, 1, S("abcdefghijklmnopqrs1")); 5444bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 0, 2, S("abcdefghijklmnopqrs12")); 5445bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 0, 4, S("abcdefghijklmnopqrs1234")); 5446bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 0, 5, S("abcdefghijklmnopqrs12345")); 5447bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 0, 6, S("abcdefghijklmnopqrs12345")); 5448bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 1, 0, S("abcdefghijklmnopqrs")); 5449bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 1, 1, S("abcdefghijklmnopqrs2")); 5450bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 1, 2, S("abcdefghijklmnopqrs23")); 5451bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 1, 3, S("abcdefghijklmnopqrs234")); 5452bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 1, 4, S("abcdefghijklmnopqrs2345")); 5453bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 1, 5, S("abcdefghijklmnopqrs2345")); 5454bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 2, 0, S("abcdefghijklmnopqrs")); 5455bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 2, 1, S("abcdefghijklmnopqrs3")); 5456bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 2, 2, S("abcdefghijklmnopqrs34")); 5457bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 2, 3, S("abcdefghijklmnopqrs345")); 5458bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 2, 4, S("abcdefghijklmnopqrs345")); 5459bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 4, 0, S("abcdefghijklmnopqrs")); 5460bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 4, 1, S("abcdefghijklmnopqrs5")); 5461bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 4, 2, S("abcdefghijklmnopqrs5")); 5462bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 5, 0, S("abcdefghijklmnopqrs")); 5463bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 5, 1, S("abcdefghijklmnopqrs")); 5464bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345"), 6, 0, S("can't happen")); 5465bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 0, 0, S("abcdefghijklmnopqrs")); 5466bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 0, 1, S("abcdefghijklmnopqrs1")); 5467bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 0, 5, S("abcdefghijklmnopqrs12345")); 5468bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 0, 9, S("abcdefghijklmnopqrs123456789")); 5469bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890")); 5470bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 0, 11, S("abcdefghijklmnopqrs1234567890")); 5471bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 1, 0, S("abcdefghijklmnopqrs")); 5472bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 1, 1, S("abcdefghijklmnopqrs2")); 5473bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 1, 4, S("abcdefghijklmnopqrs2345")); 5474bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 1, 8, S("abcdefghijklmnopqrs23456789")); 5475bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 1, 9, S("abcdefghijklmnopqrs234567890")); 5476bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 1, 10, S("abcdefghijklmnopqrs234567890")); 5477bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 5, 0, S("abcdefghijklmnopqrs")); 5478bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 5, 1, S("abcdefghijklmnopqrs6")); 5479bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 5, 2, S("abcdefghijklmnopqrs67")); 5480bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 5, 4, S("abcdefghijklmnopqrs6789")); 5481bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 5, 5, S("abcdefghijklmnopqrs67890")); 5482bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 5, 6, S("abcdefghijklmnopqrs67890")); 5483bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 9, 0, S("abcdefghijklmnopqrs")); 5484bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 9, 1, S("abcdefghijklmnopqrs0")); 5485bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 9, 2, S("abcdefghijklmnopqrs0")); 5486bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 10, 0, S("abcdefghijklmnopqrs")); 5487bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 10, 1, S("abcdefghijklmnopqrs")); 5488bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("1234567890"), 11, 0, S("can't happen")); 5489bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrs")); 5490bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 0, 1, S("abcdefghijklmnopqrs1")); 5491bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890")); 5492bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 0, 19, S("abcdefghijklmnopqrs1234567890123456789")); 5493bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 0, 20, S("abcdefghijklmnopqrs12345678901234567890")); 5494bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 0, 21, S("abcdefghijklmnopqrs12345678901234567890")); 5495bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrs")); 5496bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 1, 1, S("abcdefghijklmnopqrs2")); 5497bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 1, 9, S("abcdefghijklmnopqrs234567890")); 5498bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 1, 18, S("abcdefghijklmnopqrs234567890123456789")); 5499bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 1, 19, S("abcdefghijklmnopqrs2345678901234567890")); 5500bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 1, 20, S("abcdefghijklmnopqrs2345678901234567890")); 5501bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrs")); 5502bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 10, 1, S("abcdefghijklmnopqrs1")); 5503bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 10, 5, S("abcdefghijklmnopqrs12345")); 5504bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 10, 9, S("abcdefghijklmnopqrs123456789")); 5505bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 10, 10, S("abcdefghijklmnopqrs1234567890")); 5506bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 10, 11, S("abcdefghijklmnopqrs1234567890")); 5507bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrs")); 5508bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 19, 1, S("abcdefghijklmnopqrs0")); 5509bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 19, 2, S("abcdefghijklmnopqrs0")); 5510bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrs")); 5511bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrs")); 5512bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 1, S("12345678901234567890"), 21, 0, S("can't happen")); 5513bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S(""), 0, 0, S("abcdefghijklmnopqrs")); 5514bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S(""), 0, 1, S("abcdefghijklmnopqrs")); 5515bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S(""), 1, 0, S("can't happen")); 5516bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 0, 0, S("abcdefghijklmnopqrs")); 5517bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 0, 1, S("abcdefghijklmnopqrs1")); 5518bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 0, 2, S("abcdefghijklmnopqrs12")); 5519bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 0, 4, S("abcdefghijklmnopqrs1234")); 5520bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 0, 5, S("abcdefghijklmnopqrs12345")); 5521bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 0, 6, S("abcdefghijklmnopqrs12345")); 5522bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 1, 0, S("abcdefghijklmnopqrs")); 5523bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 1, 1, S("abcdefghijklmnopqrs2")); 5524bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 1, 2, S("abcdefghijklmnopqrs23")); 5525bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 1, 3, S("abcdefghijklmnopqrs234")); 5526bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 1, 4, S("abcdefghijklmnopqrs2345")); 5527bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 1, 5, S("abcdefghijklmnopqrs2345")); 5528bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 2, 0, S("abcdefghijklmnopqrs")); 5529bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 2, 1, S("abcdefghijklmnopqrs3")); 5530bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 2, 2, S("abcdefghijklmnopqrs34")); 5531bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 2, 3, S("abcdefghijklmnopqrs345")); 5532bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 2, 4, S("abcdefghijklmnopqrs345")); 5533bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 5534bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 55359dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 5536bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test52() 5537bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 5538bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 4, 0, S("abcdefghijklmnopqrs")); 5539bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 4, 1, S("abcdefghijklmnopqrs5")); 5540bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 4, 2, S("abcdefghijklmnopqrs5")); 5541bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 5, 0, S("abcdefghijklmnopqrs")); 5542bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 5, 1, S("abcdefghijklmnopqrs")); 5543bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345"), 6, 0, S("can't happen")); 5544bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 0, 0, S("abcdefghijklmnopqrs")); 5545bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 0, 1, S("abcdefghijklmnopqrs1")); 5546bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 0, 5, S("abcdefghijklmnopqrs12345")); 5547bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 0, 9, S("abcdefghijklmnopqrs123456789")); 5548bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890")); 5549bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 0, 11, S("abcdefghijklmnopqrs1234567890")); 5550bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 1, 0, S("abcdefghijklmnopqrs")); 5551bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 1, 1, S("abcdefghijklmnopqrs2")); 5552bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 1, 4, S("abcdefghijklmnopqrs2345")); 5553bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 1, 8, S("abcdefghijklmnopqrs23456789")); 5554bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 1, 9, S("abcdefghijklmnopqrs234567890")); 5555bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 1, 10, S("abcdefghijklmnopqrs234567890")); 5556bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 5, 0, S("abcdefghijklmnopqrs")); 5557bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 5, 1, S("abcdefghijklmnopqrs6")); 5558bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 5, 2, S("abcdefghijklmnopqrs67")); 5559bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 5, 4, S("abcdefghijklmnopqrs6789")); 5560bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 5, 5, S("abcdefghijklmnopqrs67890")); 5561bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 5, 6, S("abcdefghijklmnopqrs67890")); 5562bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 9, 0, S("abcdefghijklmnopqrs")); 5563bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 9, 1, S("abcdefghijklmnopqrs0")); 5564bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 9, 2, S("abcdefghijklmnopqrs0")); 5565bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 10, 0, S("abcdefghijklmnopqrs")); 5566bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 10, 1, S("abcdefghijklmnopqrs")); 5567bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("1234567890"), 11, 0, S("can't happen")); 5568bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrs")); 5569bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 0, 1, S("abcdefghijklmnopqrs1")); 5570bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 0, 10, S("abcdefghijklmnopqrs1234567890")); 5571bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 0, 19, S("abcdefghijklmnopqrs1234567890123456789")); 5572bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 0, 20, S("abcdefghijklmnopqrs12345678901234567890")); 5573bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 0, 21, S("abcdefghijklmnopqrs12345678901234567890")); 5574bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrs")); 5575bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 1, 1, S("abcdefghijklmnopqrs2")); 5576bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 1, 9, S("abcdefghijklmnopqrs234567890")); 5577bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 1, 18, S("abcdefghijklmnopqrs234567890123456789")); 5578bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 1, 19, S("abcdefghijklmnopqrs2345678901234567890")); 5579bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 1, 20, S("abcdefghijklmnopqrs2345678901234567890")); 5580bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrs")); 5581bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 10, 1, S("abcdefghijklmnopqrs1")); 5582bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 10, 5, S("abcdefghijklmnopqrs12345")); 5583bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 10, 9, S("abcdefghijklmnopqrs123456789")); 5584bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 10, 10, S("abcdefghijklmnopqrs1234567890")); 5585bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 10, 11, S("abcdefghijklmnopqrs1234567890")); 5586bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrs")); 5587bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 19, 1, S("abcdefghijklmnopqrs0")); 5588bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 19, 2, S("abcdefghijklmnopqrs0")); 5589bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrs")); 5590bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrs")); 5591bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 19, 2, S("12345678901234567890"), 21, 0, S("can't happen")); 5592bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S(""), 0, 0, S("abcdefghijklmnopqrst")); 5593bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S(""), 0, 1, S("abcdefghijklmnopqrst")); 5594bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S(""), 1, 0, S("can't happen")); 5595bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 0, 0, S("abcdefghijklmnopqrst")); 5596bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 0, 1, S("abcdefghijklmnopqrst1")); 5597bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 0, 2, S("abcdefghijklmnopqrst12")); 5598bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 0, 4, S("abcdefghijklmnopqrst1234")); 5599bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 0, 5, S("abcdefghijklmnopqrst12345")); 5600bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 0, 6, S("abcdefghijklmnopqrst12345")); 5601bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 1, 0, S("abcdefghijklmnopqrst")); 5602bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 1, 1, S("abcdefghijklmnopqrst2")); 5603bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 1, 2, S("abcdefghijklmnopqrst23")); 5604bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 1, 3, S("abcdefghijklmnopqrst234")); 5605bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 1, 4, S("abcdefghijklmnopqrst2345")); 5606bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 1, 5, S("abcdefghijklmnopqrst2345")); 5607bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 2, 0, S("abcdefghijklmnopqrst")); 5608bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 2, 1, S("abcdefghijklmnopqrst3")); 5609bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 2, 2, S("abcdefghijklmnopqrst34")); 5610bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 2, 3, S("abcdefghijklmnopqrst345")); 5611bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 2, 4, S("abcdefghijklmnopqrst345")); 5612bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 4, 0, S("abcdefghijklmnopqrst")); 5613bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 4, 1, S("abcdefghijklmnopqrst5")); 5614bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 4, 2, S("abcdefghijklmnopqrst5")); 5615bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 5, 0, S("abcdefghijklmnopqrst")); 5616bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 5, 1, S("abcdefghijklmnopqrst")); 5617bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345"), 6, 0, S("can't happen")); 5618bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); 5619bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 0, 1, S("abcdefghijklmnopqrst1")); 5620bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 0, 5, S("abcdefghijklmnopqrst12345")); 5621bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 0, 9, S("abcdefghijklmnopqrst123456789")); 5622bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 0, 10, S("abcdefghijklmnopqrst1234567890")); 5623bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 0, 11, S("abcdefghijklmnopqrst1234567890")); 5624bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); 5625bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 1, 1, S("abcdefghijklmnopqrst2")); 5626bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 1, 4, S("abcdefghijklmnopqrst2345")); 5627bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 1, 8, S("abcdefghijklmnopqrst23456789")); 5628bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 1, 9, S("abcdefghijklmnopqrst234567890")); 5629bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 1, 10, S("abcdefghijklmnopqrst234567890")); 5630bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); 5631bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 5, 1, S("abcdefghijklmnopqrst6")); 5632bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 5, 2, S("abcdefghijklmnopqrst67")); 5633bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 5, 4, S("abcdefghijklmnopqrst6789")); 5634bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 5, 5, S("abcdefghijklmnopqrst67890")); 5635bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 5, 6, S("abcdefghijklmnopqrst67890")); 5636bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); 5637bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 9, 1, S("abcdefghijklmnopqrst0")); 5638bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 5639bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 56409dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 5641bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test53() 5642bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 5643bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 9, 2, S("abcdefghijklmnopqrst0")); 5644bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); 5645bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); 5646bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("1234567890"), 11, 0, S("can't happen")); 5647bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); 5648bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 0, 1, S("abcdefghijklmnopqrst1")); 5649bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 0, 10, S("abcdefghijklmnopqrst1234567890")); 5650bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 0, 19, S("abcdefghijklmnopqrst1234567890123456789")); 5651bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 0, 20, S("abcdefghijklmnopqrst12345678901234567890")); 5652bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 0, 21, S("abcdefghijklmnopqrst12345678901234567890")); 5653bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); 5654bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 1, 1, S("abcdefghijklmnopqrst2")); 5655bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 1, 9, S("abcdefghijklmnopqrst234567890")); 5656bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 1, 18, S("abcdefghijklmnopqrst234567890123456789")); 5657bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 1, 19, S("abcdefghijklmnopqrst2345678901234567890")); 5658bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 1, 20, S("abcdefghijklmnopqrst2345678901234567890")); 5659bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); 5660bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 10, 1, S("abcdefghijklmnopqrst1")); 5661bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 10, 5, S("abcdefghijklmnopqrst12345")); 5662bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 10, 9, S("abcdefghijklmnopqrst123456789")); 5663bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 10, 10, S("abcdefghijklmnopqrst1234567890")); 5664bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 10, 11, S("abcdefghijklmnopqrst1234567890")); 5665bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); 5666bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 19, 1, S("abcdefghijklmnopqrst0")); 5667bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 19, 2, S("abcdefghijklmnopqrst0")); 5668bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); 5669bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); 5670bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 0, S("12345678901234567890"), 21, 0, S("can't happen")); 5671bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S(""), 0, 0, S("abcdefghijklmnopqrst")); 5672bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S(""), 0, 1, S("abcdefghijklmnopqrst")); 5673bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S(""), 1, 0, S("can't happen")); 5674bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 0, 0, S("abcdefghijklmnopqrst")); 5675bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 0, 1, S("abcdefghijklmnopqrst1")); 5676bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 0, 2, S("abcdefghijklmnopqrst12")); 5677bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 0, 4, S("abcdefghijklmnopqrst1234")); 5678bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 0, 5, S("abcdefghijklmnopqrst12345")); 5679bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 0, 6, S("abcdefghijklmnopqrst12345")); 5680bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 1, 0, S("abcdefghijklmnopqrst")); 5681bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 1, 1, S("abcdefghijklmnopqrst2")); 5682bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 1, 2, S("abcdefghijklmnopqrst23")); 5683bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 1, 3, S("abcdefghijklmnopqrst234")); 5684bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 1, 4, S("abcdefghijklmnopqrst2345")); 5685bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 1, 5, S("abcdefghijklmnopqrst2345")); 5686bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 2, 0, S("abcdefghijklmnopqrst")); 5687bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 2, 1, S("abcdefghijklmnopqrst3")); 5688bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 2, 2, S("abcdefghijklmnopqrst34")); 5689bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 2, 3, S("abcdefghijklmnopqrst345")); 5690bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 2, 4, S("abcdefghijklmnopqrst345")); 5691bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 4, 0, S("abcdefghijklmnopqrst")); 5692bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 4, 1, S("abcdefghijklmnopqrst5")); 5693bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 4, 2, S("abcdefghijklmnopqrst5")); 5694bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 5, 0, S("abcdefghijklmnopqrst")); 5695bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 5, 1, S("abcdefghijklmnopqrst")); 5696bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345"), 6, 0, S("can't happen")); 5697bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 0, 0, S("abcdefghijklmnopqrst")); 5698bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 0, 1, S("abcdefghijklmnopqrst1")); 5699bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 0, 5, S("abcdefghijklmnopqrst12345")); 5700bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 0, 9, S("abcdefghijklmnopqrst123456789")); 5701bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 0, 10, S("abcdefghijklmnopqrst1234567890")); 5702bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 0, 11, S("abcdefghijklmnopqrst1234567890")); 5703bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 1, 0, S("abcdefghijklmnopqrst")); 5704bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 1, 1, S("abcdefghijklmnopqrst2")); 5705bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 1, 4, S("abcdefghijklmnopqrst2345")); 5706bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 1, 8, S("abcdefghijklmnopqrst23456789")); 5707bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 1, 9, S("abcdefghijklmnopqrst234567890")); 5708bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 1, 10, S("abcdefghijklmnopqrst234567890")); 5709bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 5, 0, S("abcdefghijklmnopqrst")); 5710bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 5, 1, S("abcdefghijklmnopqrst6")); 5711bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 5, 2, S("abcdefghijklmnopqrst67")); 5712bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 5, 4, S("abcdefghijklmnopqrst6789")); 5713bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 5, 5, S("abcdefghijklmnopqrst67890")); 5714bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 5, 6, S("abcdefghijklmnopqrst67890")); 5715bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 9, 0, S("abcdefghijklmnopqrst")); 5716bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 9, 1, S("abcdefghijklmnopqrst0")); 5717bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 9, 2, S("abcdefghijklmnopqrst0")); 5718bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 10, 0, S("abcdefghijklmnopqrst")); 5719bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 10, 1, S("abcdefghijklmnopqrst")); 5720bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("1234567890"), 11, 0, S("can't happen")); 5721bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 0, 0, S("abcdefghijklmnopqrst")); 5722bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 0, 1, S("abcdefghijklmnopqrst1")); 5723bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 0, 10, S("abcdefghijklmnopqrst1234567890")); 5724bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 0, 19, S("abcdefghijklmnopqrst1234567890123456789")); 5725bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 0, 20, S("abcdefghijklmnopqrst12345678901234567890")); 5726bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 0, 21, S("abcdefghijklmnopqrst12345678901234567890")); 5727bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 1, 0, S("abcdefghijklmnopqrst")); 5728bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 1, 1, S("abcdefghijklmnopqrst2")); 5729bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 1, 9, S("abcdefghijklmnopqrst234567890")); 5730bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 1, 18, S("abcdefghijklmnopqrst234567890123456789")); 5731bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 1, 19, S("abcdefghijklmnopqrst2345678901234567890")); 5732bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 1, 20, S("abcdefghijklmnopqrst2345678901234567890")); 5733bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 10, 0, S("abcdefghijklmnopqrst")); 5734bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 10, 1, S("abcdefghijklmnopqrst1")); 5735bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 10, 5, S("abcdefghijklmnopqrst12345")); 5736bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 10, 9, S("abcdefghijklmnopqrst123456789")); 5737bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 10, 10, S("abcdefghijklmnopqrst1234567890")); 5738bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 10, 11, S("abcdefghijklmnopqrst1234567890")); 5739bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 19, 0, S("abcdefghijklmnopqrst")); 5740bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 19, 1, S("abcdefghijklmnopqrst0")); 5741bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 19, 2, S("abcdefghijklmnopqrst0")); 5742bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 20, 0, S("abcdefghijklmnopqrst")); 5743bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 5744bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 57459dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnanttemplate <class S> 5746bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantvoid test54() 5747bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 5748bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 20, 1, S("abcdefghijklmnopqrst")); 5749bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 20, 1, S("12345678901234567890"), 21, 0, S("can't happen")); 5750bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S(""), 0, 0, S("can't happen")); 5751bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S(""), 0, 1, S("can't happen")); 5752bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S(""), 1, 0, S("can't happen")); 5753bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 0, 0, S("can't happen")); 5754bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 0, 1, S("can't happen")); 5755bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 0, 2, S("can't happen")); 5756bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 0, 4, S("can't happen")); 5757bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 0, 5, S("can't happen")); 5758bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 0, 6, S("can't happen")); 5759bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 1, 0, S("can't happen")); 5760bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 1, 1, S("can't happen")); 5761bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 1, 2, S("can't happen")); 5762bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 1, 3, S("can't happen")); 5763bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 1, 4, S("can't happen")); 5764bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 1, 5, S("can't happen")); 5765bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 2, 0, S("can't happen")); 5766bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 2, 1, S("can't happen")); 5767bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 2, 2, S("can't happen")); 5768bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 2, 3, S("can't happen")); 5769bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 2, 4, S("can't happen")); 5770bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 4, 0, S("can't happen")); 5771bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 4, 1, S("can't happen")); 5772bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 4, 2, S("can't happen")); 5773bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 5, 0, S("can't happen")); 5774bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 5, 1, S("can't happen")); 5775bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345"), 6, 0, S("can't happen")); 5776bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 0, 0, S("can't happen")); 5777bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 0, 1, S("can't happen")); 5778bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 0, 5, S("can't happen")); 5779bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 0, 9, S("can't happen")); 5780bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 0, 10, S("can't happen")); 5781bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 0, 11, S("can't happen")); 5782bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 1, 0, S("can't happen")); 5783bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 1, 1, S("can't happen")); 5784bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 1, 4, S("can't happen")); 5785bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 1, 8, S("can't happen")); 5786bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 1, 9, S("can't happen")); 5787bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 1, 10, S("can't happen")); 5788bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 5, 0, S("can't happen")); 5789bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 5, 1, S("can't happen")); 5790bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 5, 2, S("can't happen")); 5791bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 5, 4, S("can't happen")); 5792bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 5, 5, S("can't happen")); 5793bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 5, 6, S("can't happen")); 5794bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 9, 0, S("can't happen")); 5795bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 9, 1, S("can't happen")); 5796bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 9, 2, S("can't happen")); 5797bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 10, 0, S("can't happen")); 5798bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 10, 1, S("can't happen")); 5799bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("1234567890"), 11, 0, S("can't happen")); 5800bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 0, 0, S("can't happen")); 5801bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 0, 1, S("can't happen")); 5802bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 0, 10, S("can't happen")); 5803bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 0, 19, S("can't happen")); 5804bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 0, 20, S("can't happen")); 5805bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 0, 21, S("can't happen")); 5806bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 1, 0, S("can't happen")); 5807bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 1, 1, S("can't happen")); 5808bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 1, 9, S("can't happen")); 5809bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 1, 18, S("can't happen")); 5810bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 1, 19, S("can't happen")); 5811bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 1, 20, S("can't happen")); 5812bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 10, 0, S("can't happen")); 5813bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 10, 1, S("can't happen")); 5814bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 10, 5, S("can't happen")); 5815bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 10, 9, S("can't happen")); 5816bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 10, 10, S("can't happen")); 5817bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 10, 11, S("can't happen")); 5818bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 19, 0, S("can't happen")); 5819bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 19, 1, S("can't happen")); 5820bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 19, 2, S("can't happen")); 5821bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 20, 0, S("can't happen")); 5822bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 20, 1, S("can't happen")); 5823bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant test(S("abcdefghijklmnopqrst"), 21, 0, S("12345678901234567890"), 21, 0, S("can't happen")); 5824bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 5825bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 5826a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clowtemplate <class S> 5827a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clowvoid test55() 5828a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow{ 5829a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow test_npos(S("abcdefghij"), 9, 1, S("12345678901234567890"), 10, S("abcdefghi1234567890")); 5830a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow test_npos(S("abcdefghij"), 9, 1, S("12345678901234567890"), 19, S("abcdefghi0")); 5831a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow test_npos(S("abcdefghij"), 9, 1, S("12345678901234567890"), 20, S("abcdefghi")); 5832a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow test_npos(S("abcdefghij"), 9, 1, S("12345678901234567890"), 20, S("abcdefghi")); 5833a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow test_npos(S("abcdefghij"), 9, 1, S("12345678901234567890"), 21, S("can't happen")); 5834a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow test_npos(S("abcdefghij"), 9, 2, S(""), 0, S("abcdefghi")); 5835a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow test_npos(S("abcdefghij"), 9, 2, S(""), 1, S("can't happen")); 5836a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow test_npos(S("abcdefghij"), 9, 2, S("12345"), 0, S("abcdefghi12345")); 5837a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow test_npos(S("abcdefghij"), 9, 2, S("12345"), 1, S("abcdefghi2345")); 5838a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow test_npos(S("abcdefghij"), 9, 2, S("12345"), 2, S("abcdefghi345")); 5839a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow test_npos(S("abcdefghij"), 9, 2, S("12345"), 4, S("abcdefghi5")); 5840a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow test_npos(S("abcdefghij"), 9, 2, S("12345"), 5, S("abcdefghi")); 5841a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow test_npos(S("abcdefghij"), 9, 2, S("12345"), 6, S("can't happen")); 5842a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow} 5843a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow 5844bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantint main() 5845bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 58469dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant { 58479dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant typedef std::string S; 58489dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test0<S>(); 58499dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test1<S>(); 58509dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test2<S>(); 58519dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test3<S>(); 58529dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test4<S>(); 58539dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test5<S>(); 58549dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test6<S>(); 58559dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test7<S>(); 58569dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test8<S>(); 58579dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test9<S>(); 58589dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test10<S>(); 58599dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test11<S>(); 58609dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test12<S>(); 58619dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test13<S>(); 58629dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test14<S>(); 58639dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test15<S>(); 58649dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test16<S>(); 58659dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test17<S>(); 58669dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test18<S>(); 58679dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test19<S>(); 58689dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test20<S>(); 58699dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test21<S>(); 58709dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test22<S>(); 58719dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test23<S>(); 58729dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test24<S>(); 58739dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test25<S>(); 58749dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test26<S>(); 58759dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test27<S>(); 58769dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test28<S>(); 58779dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test29<S>(); 58789dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test30<S>(); 58799dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test31<S>(); 58809dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test32<S>(); 58819dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test33<S>(); 58829dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test34<S>(); 58839dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test35<S>(); 58849dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test36<S>(); 58859dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test37<S>(); 58869dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test38<S>(); 58879dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test39<S>(); 58889dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test40<S>(); 58899dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test41<S>(); 58909dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test42<S>(); 58919dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test43<S>(); 58929dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test44<S>(); 58939dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test45<S>(); 58949dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test46<S>(); 58959dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test47<S>(); 58969dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test48<S>(); 58979dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test49<S>(); 58989dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test50<S>(); 58999dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test51<S>(); 59009dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test52<S>(); 59019dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test53<S>(); 59029dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test54<S>(); 5903a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow test55<S>(); 59049dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant } 59059dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant#if __cplusplus >= 201103L 59069dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant { 59079dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S; 59089dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test0<S>(); 59099dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test1<S>(); 59109dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test2<S>(); 59119dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test3<S>(); 59129dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test4<S>(); 59139dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test5<S>(); 59149dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test6<S>(); 59159dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test7<S>(); 59169dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test8<S>(); 59179dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test9<S>(); 59189dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test10<S>(); 59199dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test11<S>(); 59209dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test12<S>(); 59219dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test13<S>(); 59229dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test14<S>(); 59239dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test15<S>(); 59249dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test16<S>(); 59259dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test17<S>(); 59269dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test18<S>(); 59279dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test19<S>(); 59289dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test20<S>(); 59299dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test21<S>(); 59309dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test22<S>(); 59319dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test23<S>(); 59329dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test24<S>(); 59339dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test25<S>(); 59349dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test26<S>(); 59359dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test27<S>(); 59369dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test28<S>(); 59379dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test29<S>(); 59389dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test30<S>(); 59399dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test31<S>(); 59409dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test32<S>(); 59419dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test33<S>(); 59429dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test34<S>(); 59439dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test35<S>(); 59449dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test36<S>(); 59459dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test37<S>(); 59469dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test38<S>(); 59479dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test39<S>(); 59489dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test40<S>(); 59499dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test41<S>(); 59509dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test42<S>(); 59519dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test43<S>(); 59529dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test44<S>(); 59539dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test45<S>(); 59549dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test46<S>(); 59559dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test47<S>(); 59569dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test48<S>(); 59579dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test49<S>(); 59589dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test50<S>(); 59599dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test51<S>(); 59609dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test52<S>(); 59619dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test53<S>(); 59629dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant test54<S>(); 5963a93b5e27a8cea26a63c8272574900c9a376fe9aeMarshall Clow test55<S>(); 59649dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant } 59659dcdcdee2582575dd4a2e5857b9f32735763f9c7Howard Hinnant#endif 5966bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 5967