}
}
+ private static class TestVector {
+
+ public final int iterations;
+ public final ByteString message;
+
+ public TestVector(final int iterations, final String message) {
+ this.iterations = iterations;
+ this.message = new ByteString(message);
+ }
+ }
+
//=========================================================================================
// CONST DATA
//=========================================================================================
//=========================================================================================
public final static void selfTest() {
- final List<ByteString> TEST_VECTOR = buildTable(
- /*000*/ "",
- /*001*/ "abc",
- /*002*/ "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
- /*003*/ "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu",
- /*004*/ "Franz jagt im komplett verwahrlosten Taxi quer durch Bayern",
- /*005*/ "Frank jagt im komplett verwahrlosten Taxi quer durch Bayern",
- /*006*/ "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.\nDuis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.\nUt wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.\nNam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.\nDuis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis.\nAt vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat.\nConsetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus.\nLorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.\nDuis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.\nUt wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.\nNam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo.",
- /*007*/ "\u0092\u00AD\u00ACI\u007F\u00FA\u00B3\u000B@\u00ACgO\u009DS\u00A9\u00A6$\u00B2G\u00FA#r\u0094\u00FAu\u0088A\u00A8_M\u00DE\u00FD\u00DB\u00FD#q\u00C1\u00E2\u00CA\u00F8[\u000E\u0006K\u00BCO:\u00C0\u00A9\u00C6\u00FDl\u0018]\u00C4\u00B1,\u008A\u00AC\u00C3\u00E6%\u00BD\u00E8z\u00DF\u00CB\u00FF`\u001B\u00F0f\u00DF\u0008|\nc\u00CE,\u0011\u00D6d\u008D\u001E\u00D0W\u00CE\u001B]\u0093\u00C6\u00CBo3\u0019\u0081\u00B9\u00FC\u00B5\u00BC\u00F4\u00FBowPT\u0006\u00D7\u001A\u0087\u00EC~\u00C1\u0099U\u0097\u00FB\u00B7\u0096\u009D\u00EC\r\u00AD\u0001\u0093\u009E\u0088\u0089\u00F50\u0096?\u00E9.#\u00A8\u00F5\u00DA\u00E5G>,\u001E\"8*\u00D4\u00F7\u000E\u00A2\u00E4^\u00BB\u00CB\u00AD\u0011\u00C8zt\u008Fx\u00CBVw\u008E\u00F4\u001C\n\u00EC\u00A5c.u\u00E3R\u00B2\u00EA\u00B5S<\u0006\u00F7\u00C6\u0080\u008Ew\u00D0\u000B-\u00B5\u00F9d\u00F5\u009F\u0089\u0083\u00D9%y\"&\u00E2\u00F3\u00E6\u00D4\u00B0\u00FD\u00E7\u00BAtlY\u00BA\u009A\u0020!,%\u00DA\u0002\u00D2:\u00EE_\u0088Zu\u00F1\u001A\u00C5\u00BD\u00D5\u00CCo\u009CKr\u00BCG\u00D8@\u0089r\u0000\u00F1\u00B7\u00EF\u0097\u007F#R,\u00838\u00A3\u00FC\u00FD\u00D7r\u00C6\u0015\u00D3J\u0093F\u00BC\u00B1\u00CE7\u0014\u00FC\u000E+\u00CB\u0099\u00C74M\u00AC\u00D8H\u00A1\u00EEXCm\u00B4x\u00D00\u00E4\u0009\u00F1{:\u00E9`h\u00D9\u0006\u00F8Y\"jfG\u00D6\u0009\u008A\u0095\u0018;\u0001F\r)6{\u00A5\"\u00B4\u0005~0\u00AC\u008B\u00C2\u00D5L\u00BBcP\u000Bv\u00A16\u00EB6\u00A0w\u00D8\u00F7\u0098\u0014W\u0091\u000E\u008D\u009CB\u0095\u00E99B\u0001\u00C9\u00B8\u00DF\u0082\u0087\u00FF\u00E5\u00E6f\u0080\u000B\u0019\u00B4\u0013\u00AC\u00ECq*]5\u00C5\u00CA\u000FV\u00E6\u00A3QpX!\u00B2\u0020\u008D\u00C9\u00DE\u00CC%\u0019\u00D5\u00CF\u00A1\u00B9+h\u00BE\u00D2d2\u0094\u009B\u0002|\u00F2\u0000\u00FE=\u008B@\u00A2\u0019P\u000F\u00EEAa#\u00A8\u00C5\u00A3\u00F5\u00FC75\u001EjQB\u00AA3\u008D4\u0011\u00F8\u00B3\u00BD+t\u0099\u0016\u00FF\u00AD&\u008F\u0000\u00C5\u00F5\u001CY\"\u0002>\u00B1q\u0008C\u00BF\u00A7k\u00CD\u00033\u000ES\u009D\u00BA\u00E5(\u00CA\u0009\u00E6\u001B\u00AE\u0011v\u00A9z\u0089\u00DFH\u00DC\u0085\u00F1\u009A\u00ED\u009F\u00E1\u009F-\u00B7\u00DA!\u00BA\u00D1\u000C\u00CAg\u0005[\u00CC$[\u00EA\u00F0\u00B8l\u00C4\u00B8",
- /*008*/ "\u0005\u0085{\u00AA\u00C0\u00C9\u00E8b`b\u00B0\u00A0\"\u0003\u0088\u00A6\u0084C\u00AA\u008Cw\u000C\u0082\u0094]5\u0082\u0098\u0004\u001C\u00DD\u00A8\u00D4N\u0090om\u00B9\u0081\u00E2{?\u0095t$>\u009FS{\u00EF\n%Gy\u0089\\\u00B6\u00B27\u00FCOto\u007F\u00CD\u00E3s\u008B\u00F5\u00D1\u00A2<\u00BCp\u00F1A\u0084\u00F2\u00EB7\u009B\u00CB\u00C3\u00D7F.R\u00C3\u0097:\u00B6t\u00F3\u00D5\u00BBZ\u00896\u00F3\u001D\u00D5\u00A1\u000E\u00F1\u008E\u00F4\u0017&\u00CEf\u0000(\u00DE\u0017=[;\u0083{\u00D3\u00AB\u00C4\u00A1\u00EF\u008AY\u00A2\u00E2\u00BAn\u0013\u00EE\u00EA\u0083k\u00C1\u00B1\u0017\u009Ce\u001A\u00BEE\u00A7\u00B2@\u0091\u0099\u0007\u009FK_\u00BE\u00F8\u00C6~N\n\u00FF[\u00B5Z|/\u009Ew\u00EE;\u00E0\u00B5b\u0080\"\u009D-\u0013\u00CB\u00BC3\u0080\u00DD\u00AB\u0015\u00AA\u00AD\u0004:\u00AD\u008C\u00D52M02\u00F0qG'^K\u0012\u00FB\u00EF{\u00AB\u0083\u00AC\u009D\u00CD\u00ED\u00EE,%i\u0019m`\u00EF\u0018\u00B5\u00A0\u0080\u009D\u00A2\u00831\u0087\u0007SR\u00E1[L\u001E\u00FFAa4\u001C>\u001F_\u00A2X\u00D7gV#\u00B6\u00EC\u00F5\u00BC'\u00CE\u00CD\u00B4\u00B2W\u00B1;\u00EB\u00A6X\u0095\u00E0\u00B5\u00E8\u00B1\u009E\u0018?K`\u0096N\u00FBY%\u0006\u00F4\u0095\u0083\u0080\u0098]\u009FY\u009B\u0083&\u0097\u0089\u00CE\u00AC\u00BB\u00D0\\\u00957\u00DC\u00E4\u00DD/\\\"\u009Ce\u0010\u00FBa\u00A1s\u00A1j\u0089a\u0093|\u00C8n\u0080\u00B8HWHO\u0088~j\u00CE\u0090\u00F3\u00EB\u00B3\u009FP\u00F0\u000F\u00B6)`(\u00E5\u008B\u00DF\u00EA\u00CA\u00FB<\u00DD\u00AA``s\u00B3\u00AEEO\u00C9\u001D\u00B2c10;\u0085\u00BA\u008A7A\u00D6ZR\u0011\u00A2*\u00119\u00D2\u001E-\u00BF\u001AS\u008A\u0013$\u00C7\u00A3\u00DE\u00BE\u000B#r\u00CC\u0092)\u00B8+\u0092\u008F\u0008\n\u00B4\u00A6Gv)9\u00BF@\u00BCY\u009F\u00CD\u009D\u00CF5Q\u0016\u00F5D@\u00A4\u00C3\u001D\u00A8\u008Cs\u00C0\u00A1\u0012\u0084\u0015M\u00B1{JD\u00F4\u0012\u008E\u000F\u00E4L~\\\u00B2\u0092_\u00A9\u00B3q\u00DA@Px\u00C7\u0002\u001F\u0020y\u0084\u00F3\u0091\u001FGG@g+R\u00A1g\u0091\u0005\u00CA\u00B4\u00AB\u00A8i@\u00FD\u007F(\u00F6\u0017\u00B0\u00DD\u001A\u0082\u000F\u0020]\u00D29\u00A8\u009As\u00F1\u00AC\u0010\u0018<i\u0099I\u00B8\u00B2\u0090$\u00B5.\u000CW\u0093j\u001B\u000B\u009C\u00B9\u00F5Eq\u00DD\u00AF\u0094o\u00A5\u00F5\u00CF\u00B1\u00BC\u001C\u000E^Z\u000E\u00F6\u009D\u009Eq\u0011\u0099\u009F\u00A4W\u00E6m\u00D5\u0083\u0000\u00D7\u0085\u000CT\u0001\u00D4I\u001C\u00F6\u008C\u008E\u0000\u008B\u00F8HPMo\u00F1\u00EA\u00EF-d\u00D4\u00F5\u0000\u00A9\u0003\u00E6\u00CB_\u00CFl\u00D6&\u00C1\u00F4\u0097\u00CF\u00B5\u0016\u00A1b\u00DE\u00FF\u00C2\u0000\u00D0\u009A^\u00BB\u00B4v\u0086\u00FDK\u00F2)O\u000Fi\u0015}\u00AC\u00AA+\u00D1\u00BAn\u00A2\u001A\u00C1k\u009A\u0014\u0090c\u00BD\u00C416\u00BB&\u00A7i}\u0011v\u00E5?\u0005\u00C5Om\u00B0\u0012.\u00BCr\u0018\u008A\u000F\u0007\u00A1*\u00D0\u00C0\u00DE+c\u0019n\u00A8\u007F\u00C7\u009DG/\u00A6b\u00A3W\u00F07X\u009F\u0080M\u009D\u00A9/*9y\u0016j\u00CA\u00DF\"\u008F/\u00AA\u00A2ru\u0096c\u0019\u00E2\u00DF~7\u001Dh\u00F8\u00D9]\u008D@#\u007F\u00F5\u001B@3\u00CB8\u0081OJ^%<\u00F0\u0019\u00D7\u0001\u00D1!\u00F6\u00C5o\u00DA\u0017\u0083`9%f\u00F2%1X\u00A6\u00A4\u00ADFx\u00E7vW\u0019\u00CB|\u009Cm\u00E0m\u00F8\u00FD(\u0014\u0014\r\u00F0\u000C\u008F\u00D4hY\u00D2\u0096\u0015\u00BF\u00EC\u008A4\u00F7\u001A;,\u008CJ\u0098\u00167}\u0095\u0015\u00BDE\u00CB\u00F8\u00C1\u00A1\u009Ed:\u0017L\u00C4\u00D2\u00D1\u00A0\u00A4\u00BDZy\u00CBS\u00BC7\u0084\u00C8O\u009B\u00D7\u0010B=&@\u00D6\u00F2P\u0020\u0017\u008C*\u0081:\u00B5\u00D2\u008Bf\u00E5\u009F\u00CB\u00EB)\u00C8A\u00D1\u00B1\u009F\u00BAw*\u0018\u00D7\u007F\u008DF`\u00FE\u00DB\u00E4\u00C1\u00A5s\u00DD\u0088{\u0017\u00AA=X0\u009B\u00F6\u00B2fN\u00AC\u00C3\u00E3\u00A4z\u00AE\u00DF3\u00BER\u0089\u00B7\u00F9\u00B0\u0018\u00FBpc\u009A\u00C2\u00B5\u00FD\u00EF<\u008E\u0091i_\u00A8\u00E0\u00F6\u0083%\u00EF\u0016\u00AA\u00AF'\u00B5\u00D5,XW5g]\u00111\u00A3%9\r\\\u00F1\u00AC\u00D4\u00FB\u0003L\u008A\u00C0\u00FB\u00B2\u00E5\u000E\u00AD\u007F\u00C9\u00B13\u00AE\u00D9\u00EE=q\u00CB#T\u00F9\u007F\u00BF\u0002M\u00E1\u00D2\u00BCf\u00A9\\\u009D6GZbv\u00EF\u00C5\u00C80\u00BCxy\u0092b\u00A8\u00E9\u000B\u0083\u00E5\u0091B\u008F\u00FC\u00E9\u00A8l\u00AB\u00A9u\u00A1\u009Bk\u00A2\u00E5\u0087\u0096\u00BE\u0016\u0084\n\u0004)\u009F.-\u00C9\u00C8\u00DA\u00EA\u00F6\u009A%\u000F\u00F8\u00C0\u00FD\u00B5\u00D7\u0082",
- /*009*/ "\u00FF\u00D3\u00B0\u00A7-oh:\u000B\u0080u\u00AA\u00E0\u00E7\u001Ew2\u0081}te\u00EE\u0085\u00B5z\u00D8\u00D6S\u00CE\u009FO\u00B7\u00BD\u00D4\u00B0\u00B6{D\u00A5,.i\u00C9`\u00E3\u00AE\u00C7\u00ADf\u0004\u00DC\u001D\u00B1\u00AE\u00B2\u00AE^\u00F0x\u00CB\u0008\u00FF@\u001C64\u000C\u0010\u00E3A\u009B\u0080\u008Fb\u00BF\u00D6%\u00B7-t\u0083O$~\u00BA\u00B7\r\u0087\u009A\\r\u00E6\u00F0\u0009yQ+\u001F\u00E6J\u00C0\"\u0017Xf\u00E9\u008B\u00B2\u0092\u00E3b\u00FCsn\u00BCr\u00D5\u00CF\u0008\u0005K\u00B6\u0014<\u00913>`\u00BA\u0081\u00C3\u00FD2\u00A9\u00B7d\u00D8\u001F\u009BDc-\u001Ap\u00E1\u00F5N\u00A0\u008D<\u0020\u008CFY\u00F5\u00F4\u00E2\u00E6\u00A2\u00A7\u00E8\u0018\u00CBM\u00DBZ\u00C6\u0090\u0093\u00AC\u00DFj\u00FF\u00D1\u0000\u0096O\u00FC\u00EF\u00B7j\u00EB\u00BB\u00870O\u00FC\u0019\u00CE\u00123\u00C1\u0013\u00DE\u00DF\u00A3{\u0089\u00C2\u00A3\u00DC\u00A4\u00A9\u00BD\u0004\u0010\u0096\u00EE\u00B8w\u00FA\u0098\\B\u0001\u00F3\u00F5\u00D4\u00EF\u0018\u000E\u00B4\u000F.,\u00FC\u009A\u00D0\u00CFL\u0099\u00E1\u0020\u00F0e[\u00FE\u00AF\u00F0\u009B\u00B5\u00DF\u00D5+\u00C2=\u00B0\u00FD\u00E81<\u007F\u00A6eo\u00BA\u000E\u00D9\u00C9\u008D[\u00D1\u00EA|\u007FKR\u00ED\u0080O&\u0017\u0095\u0091k\u00B8\u0008,\u001EbO\u00D2\u00D0z\u0000u\u00A6\u0013)\u0093\u00CB\u00C4\u00C5\u00A7\u009E\u0090\u00B1|\u008C\u001CzYl\u001D]\u00FCF\u00AF\u000C\u0096\u00BA1\u0095D{\u00CB^\u00ABdB\u00F75z\u001F\u0087\u00F2\u00B3>B3(\u00CFRGG\u0013\u009A\u00A3c\u00D1\u00BDz\u00F0\u000C\u0090h\u001D\u000C\u0003\u0083\u00A9\u008E\u009Dz\\j\u001Ef\u00A9\u00F1+\u00B8\u00CE\u00A2\u00D2+\u0017!\u00B1\u0083\u0087\u00FC\u00F1\u00F3Fx\u00DC\u00D3\u0096f\u00C2\u00B4\u00D3\u0083\u0002\u00A8\u00D7\u00A5\u0095\u00DF0\u0004\u00F2\u00D1R\u008CZDbh\u00BC\u00CD\u00A7i\u00CBN\u00B4[\u0010\u0083Y\u00AC()\u0013\u0004\u00C3\u00B2z\u00C55\u00A7\u00B0\n\u00D4\u00F0\u00F0\u00EC\u00B4\u00C0\u00F2\u00D2\u00C2+\u0088\u0003\u00D5\u00E6No\u00EF\u00AD}\u00D8\u000F\u00F0l\u00B0\u00B1\u0009\u00D8\u009D\u0099\u0014\u00E3\u0000\u0005#\u00C7\u0015\u00B9\u00B1\u00B7\u00F1\u00EE\u009F\u00CE\u00049\u00B7\u00E2M\u000CZ\u0013zr\u0008!\u0011(\u00B25\u00ECz\u00E5#\u00D5f\u00D6Lz\u0082\u00FDn\u001F:\u0001\u00DC8:!{#\u00B5\u00FA\u00CC\u0005e\u008D\u00DC\u00DA\\\u00A7\n\u001A\u00A0\u0002\u00F4\u00B6\u00A024w\u00C5\u00E2\u00BB\u0010F\u00CEW\u00E3\u00A9\u000Bes\u008F\u00D5\u00A5\u0017\u0083\u0000\u00BD@\u00B1\u00EED\u00F4\u00EB([\u0096\u00A6\u00C1\u0094\u00D3\u00B6K\u00AE\u00F4r\u00F6\u00EC\u00AC\u00D4R\u009E\u00C7z\u00A8K=\u001D\u00BC\u00C0W{\u0091b\u00EEMg\u00F3\u00BA\u008D\u00BBm\u00E7H^\u00BE\u0016H\u0085lRH\u0000\u00FF\u0006\u0095\u00E1~\u00D9\u0013\u0098\u00E0m\u0096\u0013\u00B7K(;\u00AC\u00C5\n7\u0085\u00BBn\u00E5\u00E9/,\u000E\u009E\u00B7D\u00E7\u0085\u00F2[\u00FD\u00EE\u008B\u00C2\u00B80\u00E0\u0081)\u0094\u00DB3\u00FF\u00882\u0091\u00F9\u00CB\u0014\u00BC-\u0091&\u0013J\u00A2\u00E2\u00D7\u00D0\u00CA\u009F\u001F6z\u0012}\u000C\u009A\u000B\u00E6\\\u00E2\u00B7M\u00E5\u000B\u00A4>%\u00F8\u00D9\u008D\u009D\u00F4\u00E3,\u008A\u009B\u0098\u00ADk\u00F5\u000F\u00FB}\u00DA*\u00FE!\u0018v\u009A\u001AU\u00FC%\u00CA>\u00F9\u00FD\u00E4\u00B6-\u0010>Xy\u00D80\u00ED\u00DDK\u00B6\u000F\u00D5\u00D6\u00F6\u00B4\u00B17|N)\u00E6\u00F7y#t\u0001f_\u0002\u00EB\u00F2\u009FQ\u000291\u00AA\u008B\u00BC\u00DEnZm\u00AF:\u0084#4\u00F4\u0013\u009C\u0004\u00FD~l\u00E7\"\u00CC\u00B92k\u00D9\u00C2w\u00C2{\u00DF\u00E9\u00B6\u0017S\u00AF{\u00A6\u0094\u00AE99\u0000\u00EFu\u00E2M\u0015\u00F6E\u001A\u00B2\u009F\u00D6\u0082$E\u00B2\u0007\u00A7\u0000=\u0014\u0001b@\u00DD\u00D2\u00B8\u00F0\u0096\u009B\u0007\u000CI\u00F8t\u00B2\u00BF\u00E91\u00B3.\u009D/0\u00C2\u00F6\u00EDLVB\u00D4GUj\u00F49\u00C2#_X\u00BD,{\u00C5J\u00DC\u008A\u00AD@\u00E5\u0084\u00A0e\u00B3est\u009F\u00AB\u00BD\u00E6\u0009\u00A2$e\u008D\u00F6[[\u0014K\u00C0jx\u00F2\u00D6\u00F3vE\u00A0w\u00DD\u00AA\u00DB\u0013\u00F9\u009F\u000FZ\u00A5\u00A0\u00B9(H\u0095$\u0003-\u0094n\u00E1\u0005\u00F7\\#\u0082)\u0095\u00A1|\u00F2\u00E3\u00B9/\u00AC)\u0011\u00EC`\u00D1L_\u00B8\u00D2\u001E\u009D\u00ECv\u001D\u00FC_\u00C0\u00FE\u00D1P3\nB\u00D7\u0083\u00C9\u00F9IT\u00BBP\u0017lk8\u00C11\u0019\u00DB\u00FC\u00DE\u00CE\u0017\u00AD\u00B2\u00D1\u00DA\n\u0013\u00EE+\u00ED:\u00EA\u00EA\u0020\u008E\u0017\u0014\u000B\u0088\u00EE\u00B9\u00A5\u0002\u001B\u00E8l\u00F7\u00FB\u00E4\u0018r\u00E75\u0088\u00DE\u008E\u00B8V\u00FB\u00D9\u008C\u00B8\u0081\u00A79\u00AC\u00F2\u00D29\u000B\u00AF\u007F\u00B6\u00D2\u000E\u00A5\u00C7\u00A0\u00B3\u00EFoK\u00F4\u0008x\u00B2\u00A8\u0089\u00CD\u000E\u000E\u008A\u00B1\u008F\u008C\u00AC\u00E3##\u00B6\u00D1l\u0080\u00FD\u00F5Me;u\u0017\u00FC\u0081\u00A3\u0088\u0015*\u00EE\u0019\u00E0\u00FD\u00F5\u00F1\u00C2\u00C3\u00DD\u00EEz\u0008\u0012%ruBw\u008DQ[\u00D61a\u0088!s\u0086.\u00E5\u008E\u000B>\u00BEa\u00B8\u00E4\u00FD\u00FAg\u00C6Dx\u00B21\u00D9\u008B\u00BF\u00A8\u0007\u008F~\u00BEFTS$\u009A%\u00E5\u00D3_\u00C0\"\u0020\u00EA\u00C0\u0086\u00CDl\u00F8zJl\u0018\u00BD\u000F\u00CC\u00F3_\u007F\u00E0\u00BE\u00B0S\u0094_\u00E0\u0089\u0011\u0086\u0092\u00F2?\u001A\u00BD\u00E8h\u00B85;\u0091\u008F\u0085s\u0098\u00B9~\u00D1\u00C0\u00AD\u00F8Mr\u0004O\u001D\u00AD\u0082_\u0086\u00DD\u0089\u0017s8\u00F8%4\u00BAW$\u00F8\u00F3\u00E3P\u00AEA\u00D9\u0091\u00F8\u00AC\u008E\u00C4\u0087\u00F6X\u00D2\u001C1\u009B\u00C9\u000E(V\u00C9_\u0009Cs\u00A0y\u0013X\u00F2^%\u0089\u008F\u0017X\u009E\u00B3^0l\u008A\u00AB\u0081C'lS\u0082\u0008\u0019\u00B9\u00C0\u00FB\u00DA\u00F4\u00DD\u00BDUf\u008Dq\u00FFg@NS\u00B3p\"{\u0080\u0020\u008C\u0092?\u000Fs\u00AB\u00F1\u00E4Z\u00A2W=\u00DF\u00DE9\u00D0\u00E5G\u001CA\u00DAz\u0095\u000C^\u00E4\u00A3\u00844n>\u00A4\u009A\u00FD\"F\u00A9yei\u0019j\u00CE\u008A\u00E9X\u0094J\u00E1\u00D9q\u0002\u00D9\u008FF\u00A6\\YH\u001Fc\u0097\u001F\u00AF\u00FC\u0011\u00F0\u0008\u0002\u0011\u0002\u00FFp\u00A4\u00E7:\u00B9\\\u00F1p\u00CAX\u00F3\u001A\u0000\u0014\u00FA|\u00BF~\u001B\u00DE~\u00D6OX@\u00FB\u008F\u00EA\u00DC\u008B\u00EC\u00E2*\u00DD9\u0097\u0004\u00BE=\u008E\u000C\u00AD\u009BH\u00EF\u0092_v\u00E3\u000C\r@\u0020\u0008JF\u00E7e8\u00F1\u00B4C\u00E6\u0099\u0006]\u00D5M{\u00DF\u00D6Fz\u0092UV\u0008\u00E4_\u0008\u00D8\u00C5\u0094\u00A6^\u00FE;\u00EC\u00A3\u00E8T\u0090+\u00F7\u00F37%\u0090&\n\u001Cx\u00E6\u00E5\u008D\u00FFS\u0096K\u00BB\u00E4\u00DEF\u0005h|\u00BF\u0005\u0019\u00D4\u00D2\u00C6\u008E\u00AE\u00E9E1`\u00F8L\u00D1\u009A\u00F1\u00CAnna3\u00D0W\u0015\u000E\u0015j\u0014\u0006\u001D\u00CEe\u00CAEq\u00A7\u00BBz\u00DE\u00CE\u00F6\u00EAb\u00A6\u00FAT\u00C1\u00AE\u00B4w&\u0007\u00C0\u00100\u00B1\u00CC$\u00BF\u00E8E\u00C2\u00A9\u00D3Kf\u00A1\u00E3\u00F0W\u00B0\u00FE"
+ List<TestVector> TEST_VECTOR = Arrays.asList(
+ /*000*/ new TestVector(0x0000001, ""),
+ /*001*/ new TestVector(0x0000001, "abc"),
+ /*002*/ new TestVector(0x0000001, "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"),
+ /*003*/ new TestVector(0x0000001, "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu"),
+ /*004*/ new TestVector(0x0000001, "Franz jagt im komplett verwahrlosten Taxi quer durch Bayern"),
+ /*005*/ new TestVector(0x0000001, "Frank jagt im komplett verwahrlosten Taxi quer durch Bayern"),
+ /*006*/ new TestVector(0x0000001, "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.\nDuis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.\nUt wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.\nNam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.\nDuis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis.\nAt vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat.\nConsetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus.\nLorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.\nDuis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.\nUt wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.\nNam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo."),
+ /*007*/ new TestVector(0x0000001, "\u0092\u00AD\u00ACI\u007F\u00FA\u00B3\u000B@\u00ACgO\u009DS\u00A9\u00A6$\u00B2G\u00FA#r\u0094\u00FAu\u0088A\u00A8_M\u00DE\u00FD\u00DB\u00FD#q\u00C1\u00E2\u00CA\u00F8[\u000E\u0006K\u00BCO:\u00C0\u00A9\u00C6\u00FDl\u0018]\u00C4\u00B1,\u008A\u00AC\u00C3\u00E6%\u00BD\u00E8z\u00DF\u00CB\u00FF`\u001B\u00F0f\u00DF\u0008|\nc\u00CE,\u0011\u00D6d\u008D\u001E\u00D0W\u00CE\u001B]\u0093\u00C6\u00CBo3\u0019\u0081\u00B9\u00FC\u00B5\u00BC\u00F4\u00FBowPT\u0006\u00D7\u001A\u0087\u00EC~\u00C1\u0099U\u0097\u00FB\u00B7\u0096\u009D\u00EC\r\u00AD\u0001\u0093\u009E\u0088\u0089\u00F50\u0096?\u00E9.#\u00A8\u00F5\u00DA\u00E5G>,\u001E\"8*\u00D4\u00F7\u000E\u00A2\u00E4^\u00BB\u00CB\u00AD\u0011\u00C8zt\u008Fx\u00CBVw\u008E\u00F4\u001C\n\u00EC\u00A5c.u\u00E3R\u00B2\u00EA\u00B5S<\u0006\u00F7\u00C6\u0080\u008Ew\u00D0\u000B-\u00B5\u00F9d\u00F5\u009F\u0089\u0083\u00D9%y\"&\u00E2\u00F3\u00E6\u00D4\u00B0\u00FD\u00E7\u00BAtlY\u00BA\u009A\u0020!,%\u00DA\u0002\u00D2:\u00EE_\u0088Zu\u00F1\u001A\u00C5\u00BD\u00D5\u00CCo\u009CKr\u00BCG\u00D8@\u0089r\u0000\u00F1\u00B7\u00EF\u0097\u007F#R,\u00838\u00A3\u00FC\u00FD\u00D7r\u00C6\u0015\u00D3J\u0093F\u00BC\u00B1\u00CE7\u0014\u00FC\u000E+\u00CB\u0099\u00C74M\u00AC\u00D8H\u00A1\u00EEXCm\u00B4x\u00D00\u00E4\u0009\u00F1{:\u00E9`h\u00D9\u0006\u00F8Y\"jfG\u00D6\u0009\u008A\u0095\u0018;\u0001F\r)6{\u00A5\"\u00B4\u0005~0\u00AC\u008B\u00C2\u00D5L\u00BBcP\u000Bv\u00A16\u00EB6\u00A0w\u00D8\u00F7\u0098\u0014W\u0091\u000E\u008D\u009CB\u0095\u00E99B\u0001\u00C9\u00B8\u00DF\u0082\u0087\u00FF\u00E5\u00E6f\u0080\u000B\u0019\u00B4\u0013\u00AC\u00ECq*]5\u00C5\u00CA\u000FV\u00E6\u00A3QpX!\u00B2\u0020\u008D\u00C9\u00DE\u00CC%\u0019\u00D5\u00CF\u00A1\u00B9+h\u00BE\u00D2d2\u0094\u009B\u0002|\u00F2\u0000\u00FE=\u008B@\u00A2\u0019P\u000F\u00EEAa#\u00A8\u00C5\u00A3\u00F5\u00FC75\u001EjQB\u00AA3\u008D4\u0011\u00F8\u00B3\u00BD+t\u0099\u0016\u00FF\u00AD&\u008F\u0000\u00C5\u00F5\u001CY\"\u0002>\u00B1q\u0008C\u00BF\u00A7k\u00CD\u00033\u000ES\u009D\u00BA\u00E5(\u00CA\u0009\u00E6\u001B\u00AE\u0011v\u00A9z\u0089\u00DFH\u00DC\u0085\u00F1\u009A\u00ED\u009F\u00E1\u009F-\u00B7\u00DA!\u00BA\u00D1\u000C\u00CAg\u0005[\u00CC$[\u00EA\u00F0\u00B8l\u00C4\u00B8"),
+ /*008*/ new TestVector(0x0000001, "\u0005\u0085{\u00AA\u00C0\u00C9\u00E8b`b\u00B0\u00A0\"\u0003\u0088\u00A6\u0084C\u00AA\u008Cw\u000C\u0082\u0094]5\u0082\u0098\u0004\u001C\u00DD\u00A8\u00D4N\u0090om\u00B9\u0081\u00E2{?\u0095t$>\u009FS{\u00EF\n%Gy\u0089\\\u00B6\u00B27\u00FCOto\u007F\u00CD\u00E3s\u008B\u00F5\u00D1\u00A2<\u00BCp\u00F1A\u0084\u00F2\u00EB7\u009B\u00CB\u00C3\u00D7F.R\u00C3\u0097:\u00B6t\u00F3\u00D5\u00BBZ\u00896\u00F3\u001D\u00D5\u00A1\u000E\u00F1\u008E\u00F4\u0017&\u00CEf\u0000(\u00DE\u0017=[;\u0083{\u00D3\u00AB\u00C4\u00A1\u00EF\u008AY\u00A2\u00E2\u00BAn\u0013\u00EE\u00EA\u0083k\u00C1\u00B1\u0017\u009Ce\u001A\u00BEE\u00A7\u00B2@\u0091\u0099\u0007\u009FK_\u00BE\u00F8\u00C6~N\n\u00FF[\u00B5Z|/\u009Ew\u00EE;\u00E0\u00B5b\u0080\"\u009D-\u0013\u00CB\u00BC3\u0080\u00DD\u00AB\u0015\u00AA\u00AD\u0004:\u00AD\u008C\u00D52M02\u00F0qG'^K\u0012\u00FB\u00EF{\u00AB\u0083\u00AC\u009D\u00CD\u00ED\u00EE,%i\u0019m`\u00EF\u0018\u00B5\u00A0\u0080\u009D\u00A2\u00831\u0087\u0007SR\u00E1[L\u001E\u00FFAa4\u001C>\u001F_\u00A2X\u00D7gV#\u00B6\u00EC\u00F5\u00BC'\u00CE\u00CD\u00B4\u00B2W\u00B1;\u00EB\u00A6X\u0095\u00E0\u00B5\u00E8\u00B1\u009E\u0018?K`\u0096N\u00FBY%\u0006\u00F4\u0095\u0083\u0080\u0098]\u009FY\u009B\u0083&\u0097\u0089\u00CE\u00AC\u00BB\u00D0\\\u00957\u00DC\u00E4\u00DD/\\\"\u009Ce\u0010\u00FBa\u00A1s\u00A1j\u0089a\u0093|\u00C8n\u0080\u00B8HWHO\u0088~j\u00CE\u0090\u00F3\u00EB\u00B3\u009FP\u00F0\u000F\u00B6)`(\u00E5\u008B\u00DF\u00EA\u00CA\u00FB<\u00DD\u00AA``s\u00B3\u00AEEO\u00C9\u001D\u00B2c10;\u0085\u00BA\u008A7A\u00D6ZR\u0011\u00A2*\u00119\u00D2\u001E-\u00BF\u001AS\u008A\u0013$\u00C7\u00A3\u00DE\u00BE\u000B#r\u00CC\u0092)\u00B8+\u0092\u008F\u0008\n\u00B4\u00A6Gv)9\u00BF@\u00BCY\u009F\u00CD\u009D\u00CF5Q\u0016\u00F5D@\u00A4\u00C3\u001D\u00A8\u008Cs\u00C0\u00A1\u0012\u0084\u0015M\u00B1{JD\u00F4\u0012\u008E\u000F\u00E4L~\\\u00B2\u0092_\u00A9\u00B3q\u00DA@Px\u00C7\u0002\u001F\u0020y\u0084\u00F3\u0091\u001FGG@g+R\u00A1g\u0091\u0005\u00CA\u00B4\u00AB\u00A8i@\u00FD\u007F(\u00F6\u0017\u00B0\u00DD\u001A\u0082\u000F\u0020]\u00D29\u00A8\u009As\u00F1\u00AC\u0010\u0018<i\u0099I\u00B8\u00B2\u0090$\u00B5.\u000CW\u0093j\u001B\u000B\u009C\u00B9\u00F5Eq\u00DD\u00AF\u0094o\u00A5\u00F5\u00CF\u00B1\u00BC\u001C\u000E^Z\u000E\u00F6\u009D\u009Eq\u0011\u0099\u009F\u00A4W\u00E6m\u00D5\u0083\u0000\u00D7\u0085\u000CT\u0001\u00D4I\u001C\u00F6\u008C\u008E\u0000\u008B\u00F8HPMo\u00F1\u00EA\u00EF-d\u00D4\u00F5\u0000\u00A9\u0003\u00E6\u00CB_\u00CFl\u00D6&\u00C1\u00F4\u0097\u00CF\u00B5\u0016\u00A1b\u00DE\u00FF\u00C2\u0000\u00D0\u009A^\u00BB\u00B4v\u0086\u00FDK\u00F2)O\u000Fi\u0015}\u00AC\u00AA+\u00D1\u00BAn\u00A2\u001A\u00C1k\u009A\u0014\u0090c\u00BD\u00C416\u00BB&\u00A7i}\u0011v\u00E5?\u0005\u00C5Om\u00B0\u0012.\u00BCr\u0018\u008A\u000F\u0007\u00A1*\u00D0\u00C0\u00DE+c\u0019n\u00A8\u007F\u00C7\u009DG/\u00A6b\u00A3W\u00F07X\u009F\u0080M\u009D\u00A9/*9y\u0016j\u00CA\u00DF\"\u008F/\u00AA\u00A2ru\u0096c\u0019\u00E2\u00DF~7\u001Dh\u00F8\u00D9]\u008D@#\u007F\u00F5\u001B@3\u00CB8\u0081OJ^%<\u00F0\u0019\u00D7\u0001\u00D1!\u00F6\u00C5o\u00DA\u0017\u0083`9%f\u00F2%1X\u00A6\u00A4\u00ADFx\u00E7vW\u0019\u00CB|\u009Cm\u00E0m\u00F8\u00FD(\u0014\u0014\r\u00F0\u000C\u008F\u00D4hY\u00D2\u0096\u0015\u00BF\u00EC\u008A4\u00F7\u001A;,\u008CJ\u0098\u00167}\u0095\u0015\u00BDE\u00CB\u00F8\u00C1\u00A1\u009Ed:\u0017L\u00C4\u00D2\u00D1\u00A0\u00A4\u00BDZy\u00CBS\u00BC7\u0084\u00C8O\u009B\u00D7\u0010B=&@\u00D6\u00F2P\u0020\u0017\u008C*\u0081:\u00B5\u00D2\u008Bf\u00E5\u009F\u00CB\u00EB)\u00C8A\u00D1\u00B1\u009F\u00BAw*\u0018\u00D7\u007F\u008DF`\u00FE\u00DB\u00E4\u00C1\u00A5s\u00DD\u0088{\u0017\u00AA=X0\u009B\u00F6\u00B2fN\u00AC\u00C3\u00E3\u00A4z\u00AE\u00DF3\u00BER\u0089\u00B7\u00F9\u00B0\u0018\u00FBpc\u009A\u00C2\u00B5\u00FD\u00EF<\u008E\u0091i_\u00A8\u00E0\u00F6\u0083%\u00EF\u0016\u00AA\u00AF'\u00B5\u00D5,XW5g]\u00111\u00A3%9\r\\\u00F1\u00AC\u00D4\u00FB\u0003L\u008A\u00C0\u00FB\u00B2\u00E5\u000E\u00AD\u007F\u00C9\u00B13\u00AE\u00D9\u00EE=q\u00CB#T\u00F9\u007F\u00BF\u0002M\u00E1\u00D2\u00BCf\u00A9\\\u009D6GZbv\u00EF\u00C5\u00C80\u00BCxy\u0092b\u00A8\u00E9\u000B\u0083\u00E5\u0091B\u008F\u00FC\u00E9\u00A8l\u00AB\u00A9u\u00A1\u009Bk\u00A2\u00E5\u0087\u0096\u00BE\u0016\u0084\n\u0004)\u009F.-\u00C9\u00C8\u00DA\u00EA\u00F6\u009A%\u000F\u00F8\u00C0\u00FD\u00B5\u00D7\u0082"),
+ /*009*/ new TestVector(0x0000001, "\u00FF\u00D3\u00B0\u00A7-oh:\u000B\u0080u\u00AA\u00E0\u00E7\u001Ew2\u0081}te\u00EE\u0085\u00B5z\u00D8\u00D6S\u00CE\u009FO\u00B7\u00BD\u00D4\u00B0\u00B6{D\u00A5,.i\u00C9`\u00E3\u00AE\u00C7\u00ADf\u0004\u00DC\u001D\u00B1\u00AE\u00B2\u00AE^\u00F0x\u00CB\u0008\u00FF@\u001C64\u000C\u0010\u00E3A\u009B\u0080\u008Fb\u00BF\u00D6%\u00B7-t\u0083O$~\u00BA\u00B7\r\u0087\u009A\\r\u00E6\u00F0\u0009yQ+\u001F\u00E6J\u00C0\"\u0017Xf\u00E9\u008B\u00B2\u0092\u00E3b\u00FCsn\u00BCr\u00D5\u00CF\u0008\u0005K\u00B6\u0014<\u00913>`\u00BA\u0081\u00C3\u00FD2\u00A9\u00B7d\u00D8\u001F\u009BDc-\u001Ap\u00E1\u00F5N\u00A0\u008D<\u0020\u008CFY\u00F5\u00F4\u00E2\u00E6\u00A2\u00A7\u00E8\u0018\u00CBM\u00DBZ\u00C6\u0090\u0093\u00AC\u00DFj\u00FF\u00D1\u0000\u0096O\u00FC\u00EF\u00B7j\u00EB\u00BB\u00870O\u00FC\u0019\u00CE\u00123\u00C1\u0013\u00DE\u00DF\u00A3{\u0089\u00C2\u00A3\u00DC\u00A4\u00A9\u00BD\u0004\u0010\u0096\u00EE\u00B8w\u00FA\u0098\\B\u0001\u00F3\u00F5\u00D4\u00EF\u0018\u000E\u00B4\u000F.,\u00FC\u009A\u00D0\u00CFL\u0099\u00E1\u0020\u00F0e[\u00FE\u00AF\u00F0\u009B\u00B5\u00DF\u00D5+\u00C2=\u00B0\u00FD\u00E81<\u007F\u00A6eo\u00BA\u000E\u00D9\u00C9\u008D[\u00D1\u00EA|\u007FKR\u00ED\u0080O&\u0017\u0095\u0091k\u00B8\u0008,\u001EbO\u00D2\u00D0z\u0000u\u00A6\u0013)\u0093\u00CB\u00C4\u00C5\u00A7\u009E\u0090\u00B1|\u008C\u001CzYl\u001D]\u00FCF\u00AF\u000C\u0096\u00BA1\u0095D{\u00CB^\u00ABdB\u00F75z\u001F\u0087\u00F2\u00B3>B3(\u00CFRGG\u0013\u009A\u00A3c\u00D1\u00BDz\u00F0\u000C\u0090h\u001D\u000C\u0003\u0083\u00A9\u008E\u009Dz\\j\u001Ef\u00A9\u00F1+\u00B8\u00CE\u00A2\u00D2+\u0017!\u00B1\u0083\u0087\u00FC\u00F1\u00F3Fx\u00DC\u00D3\u0096f\u00C2\u00B4\u00D3\u0083\u0002\u00A8\u00D7\u00A5\u0095\u00DF0\u0004\u00F2\u00D1R\u008CZDbh\u00BC\u00CD\u00A7i\u00CBN\u00B4[\u0010\u0083Y\u00AC()\u0013\u0004\u00C3\u00B2z\u00C55\u00A7\u00B0\n\u00D4\u00F0\u00F0\u00EC\u00B4\u00C0\u00F2\u00D2\u00C2+\u0088\u0003\u00D5\u00E6No\u00EF\u00AD}\u00D8\u000F\u00F0l\u00B0\u00B1\u0009\u00D8\u009D\u0099\u0014\u00E3\u0000\u0005#\u00C7\u0015\u00B9\u00B1\u00B7\u00F1\u00EE\u009F\u00CE\u00049\u00B7\u00E2M\u000CZ\u0013zr\u0008!\u0011(\u00B25\u00ECz\u00E5#\u00D5f\u00D6Lz\u0082\u00FDn\u001F:\u0001\u00DC8:!{#\u00B5\u00FA\u00CC\u0005e\u008D\u00DC\u00DA\\\u00A7\n\u001A\u00A0\u0002\u00F4\u00B6\u00A024w\u00C5\u00E2\u00BB\u0010F\u00CEW\u00E3\u00A9\u000Bes\u008F\u00D5\u00A5\u0017\u0083\u0000\u00BD@\u00B1\u00EED\u00F4\u00EB([\u0096\u00A6\u00C1\u0094\u00D3\u00B6K\u00AE\u00F4r\u00F6\u00EC\u00AC\u00D4R\u009E\u00C7z\u00A8K=\u001D\u00BC\u00C0W{\u0091b\u00EEMg\u00F3\u00BA\u008D\u00BBm\u00E7H^\u00BE\u0016H\u0085lRH\u0000\u00FF\u0006\u0095\u00E1~\u00D9\u0013\u0098\u00E0m\u0096\u0013\u00B7K(;\u00AC\u00C5\n7\u0085\u00BBn\u00E5\u00E9/,\u000E\u009E\u00B7D\u00E7\u0085\u00F2[\u00FD\u00EE\u008B\u00C2\u00B80\u00E0\u0081)\u0094\u00DB3\u00FF\u00882\u0091\u00F9\u00CB\u0014\u00BC-\u0091&\u0013J\u00A2\u00E2\u00D7\u00D0\u00CA\u009F\u001F6z\u0012}\u000C\u009A\u000B\u00E6\\\u00E2\u00B7M\u00E5\u000B\u00A4>%\u00F8\u00D9\u008D\u009D\u00F4\u00E3,\u008A\u009B\u0098\u00ADk\u00F5\u000F\u00FB}\u00DA*\u00FE!\u0018v\u009A\u001AU\u00FC%\u00CA>\u00F9\u00FD\u00E4\u00B6-\u0010>Xy\u00D80\u00ED\u00DDK\u00B6\u000F\u00D5\u00D6\u00F6\u00B4\u00B17|N)\u00E6\u00F7y#t\u0001f_\u0002\u00EB\u00F2\u009FQ\u000291\u00AA\u008B\u00BC\u00DEnZm\u00AF:\u0084#4\u00F4\u0013\u009C\u0004\u00FD~l\u00E7\"\u00CC\u00B92k\u00D9\u00C2w\u00C2{\u00DF\u00E9\u00B6\u0017S\u00AF{\u00A6\u0094\u00AE99\u0000\u00EFu\u00E2M\u0015\u00F6E\u001A\u00B2\u009F\u00D6\u0082$E\u00B2\u0007\u00A7\u0000=\u0014\u0001b@\u00DD\u00D2\u00B8\u00F0\u0096\u009B\u0007\u000CI\u00F8t\u00B2\u00BF\u00E91\u00B3.\u009D/0\u00C2\u00F6\u00EDLVB\u00D4GUj\u00F49\u00C2#_X\u00BD,{\u00C5J\u00DC\u008A\u00AD@\u00E5\u0084\u00A0e\u00B3est\u009F\u00AB\u00BD\u00E6\u0009\u00A2$e\u008D\u00F6[[\u0014K\u00C0jx\u00F2\u00D6\u00F3vE\u00A0w\u00DD\u00AA\u00DB\u0013\u00F9\u009F\u000FZ\u00A5\u00A0\u00B9(H\u0095$\u0003-\u0094n\u00E1\u0005\u00F7\\#\u0082)\u0095\u00A1|\u00F2\u00E3\u00B9/\u00AC)\u0011\u00EC`\u00D1L_\u00B8\u00D2\u001E\u009D\u00ECv\u001D\u00FC_\u00C0\u00FE\u00D1P3\nB\u00D7\u0083\u00C9\u00F9IT\u00BBP\u0017lk8\u00C11\u0019\u00DB\u00FC\u00DE\u00CE\u0017\u00AD\u00B2\u00D1\u00DA\n\u0013\u00EE+\u00ED:\u00EA\u00EA\u0020\u008E\u0017\u0014\u000B\u0088\u00EE\u00B9\u00A5\u0002\u001B\u00E8l\u00F7\u00FB\u00E4\u0018r\u00E75\u0088\u00DE\u008E\u00B8V\u00FB\u00D9\u008C\u00B8\u0081\u00A79\u00AC\u00F2\u00D29\u000B\u00AF\u007F\u00B6\u00D2\u000E\u00A5\u00C7\u00A0\u00B3\u00EFoK\u00F4\u0008x\u00B2\u00A8\u0089\u00CD\u000E\u000E\u008A\u00B1\u008F\u008C\u00AC\u00E3##\u00B6\u00D1l\u0080\u00FD\u00F5Me;u\u0017\u00FC\u0081\u00A3\u0088\u0015*\u00EE\u0019\u00E0\u00FD\u00F5\u00F1\u00C2\u00C3\u00DD\u00EEz\u0008\u0012%ruBw\u008DQ[\u00D61a\u0088!s\u0086.\u00E5\u008E\u000B>\u00BEa\u00B8\u00E4\u00FD\u00FAg\u00C6Dx\u00B21\u00D9\u008B\u00BF\u00A8\u0007\u008F~\u00BEFTS$\u009A%\u00E5\u00D3_\u00C0\"\u0020\u00EA\u00C0\u0086\u00CDl\u00F8zJl\u0018\u00BD\u000F\u00CC\u00F3_\u007F\u00E0\u00BE\u00B0S\u0094_\u00E0\u0089\u0011\u0086\u0092\u00F2?\u001A\u00BD\u00E8h\u00B85;\u0091\u008F\u0085s\u0098\u00B9~\u00D1\u00C0\u00AD\u00F8Mr\u0004O\u001D\u00AD\u0082_\u0086\u00DD\u0089\u0017s8\u00F8%4\u00BAW$\u00F8\u00F3\u00E3P\u00AEA\u00D9\u0091\u00F8\u00AC\u008E\u00C4\u0087\u00F6X\u00D2\u001C1\u009B\u00C9\u000E(V\u00C9_\u0009Cs\u00A0y\u0013X\u00F2^%\u0089\u008F\u0017X\u009E\u00B3^0l\u008A\u00AB\u0081C'lS\u0082\u0008\u0019\u00B9\u00C0\u00FB\u00DA\u00F4\u00DD\u00BDUf\u008Dq\u00FFg@NS\u00B3p\"{\u0080\u0020\u008C\u0092?\u000Fs\u00AB\u00F1\u00E4Z\u00A2W=\u00DF\u00DE9\u00D0\u00E5G\u001CA\u00DAz\u0095\u000C^\u00E4\u00A3\u00844n>\u00A4\u009A\u00FD\"F\u00A9yei\u0019j\u00CE\u008A\u00E9X\u0094J\u00E1\u00D9q\u0002\u00D9\u008FF\u00A6\\YH\u001Fc\u0097\u001F\u00AF\u00FC\u0011\u00F0\u0008\u0002\u0011\u0002\u00FFp\u00A4\u00E7:\u00B9\\\u00F1p\u00CAX\u00F3\u001A\u0000\u0014\u00FA|\u00BF~\u001B\u00DE~\u00D6OX@\u00FB\u008F\u00EA\u00DC\u008B\u00EC\u00E2*\u00DD9\u0097\u0004\u00BE=\u008E\u000C\u00AD\u009BH\u00EF\u0092_v\u00E3\u000C\r@\u0020\u0008JF\u00E7e8\u00F1\u00B4C\u00E6\u0099\u0006]\u00D5M{\u00DF\u00D6Fz\u0092UV\u0008\u00E4_\u0008\u00D8\u00C5\u0094\u00A6^\u00FE;\u00EC\u00A3\u00E8T\u0090+\u00F7\u00F37%\u0090&\n\u001Cx\u00E6\u00E5\u008D\u00FFS\u0096K\u00BB\u00E4\u00DEF\u0005h|\u00BF\u0005\u0019\u00D4\u00D2\u00C6\u008E\u00AE\u00E9E1`\u00F8L\u00D1\u009A\u00F1\u00CAnna3\u00D0W\u0015\u000E\u0015j\u0014\u0006\u001D\u00CEe\u00CAEq\u00A7\u00BBz\u00DE\u00CE\u00F6\u00EAb\u00A6\u00FAT\u00C1\u00AE\u00B4w&\u0007\u00C0\u00100\u00B1\u00CC$\u00BF\u00E8E\u00C2\u00A9\u00D3Kf\u00A1\u00E3\u00F0W\u00B0\u00FE"),
+ /*010*/ new TestVector(0x1000000, "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmno")
);
final List<ByteString> TEST_RESULT = buildTable(
/*006*/ "\u000F\u00E9\u008E\u00B3J\u00B7\u00BD/\u00B1\u00E2y\u00E3\u00B9\u009E\u00CD6r\u00CD\n\u00B6?l[t\u00EA\u00B8\u008E\u0007\u00E6L\u00A6'\u00F7\u00DC\u00E7\"\u00E0\u00D9\u00B6`\u001Bk^\u0003C\u00D10J",
/*007*/ "\u00C3\u00A0V\u0086\u00C7[\u0002\u00B4B8\u0014\u00BC\u0005\u001A\u0011Tb\u00155\u00A8\u008B\u00E1\u00D3\u00001\u0097\u001C\u008B\u00A4\u00F5^N\u00EF\u0094\u0010W\u00AD\u009C~c,\u00AA\u00A3\u00E0\u0017\u00BC\u00FE\u0097",
/*008*/ "h\u00C5/\u00C23\u0020\u000E\u00CDC\u00A1\u0093\u00C1\u00FD'e\u001F\u000Fp\u0089\u0006;J\u0007L\u001A\\$\nf\u00BAx\u00F3\u00E6\u009FZ\u009EYr\u0017OR\u0017(a\u00B1\n)5",
- /*009*/ "8\u0013[\u001FLZ+\u00EA\u00C0\u00E5\u00F7\u0011\u0080\u00A7\u00F7\u00FA\u0003\u00C7\u00E6\u00F7\u00F1A\u00B4:\u0015\u00DA&\u0010V\u00D9\u00BB{*\u00D6\u00BA\u001B\u0005\u00DD8\u0088\u00E6K\u00A8\u00B0\u0099\u00F5Wh"
+ /*009*/ "8\u0013[\u001FLZ+\u00EA\u00C0\u00E5\u00F7\u0011\u0080\u00A7\u00F7\u00FA\u0003\u00C7\u00E6\u00F7\u00F1A\u00B4:\u0015\u00DA&\u0010V\u00D9\u00BB{*\u00D6\u00BA\u001B\u0005\u00DD8\u0088\u00E6K\u00A8\u00B0\u0099\u00F5Wh",
+ /*010*/ "3e\u0081\u001C\u0097\u000B\u00B9US\u0000\u00DABk7\u0020\u00FAi\\\u00C4\u00B7\u00E7<\u00C9Z75\u00B1\u0009\u009A\u00C4&;t\u00FAQ\u00B5\u0019\u00D3\u008F\u00ED\u0003\u0094\u00A1<\u001F\u00D2F\u00E1"
);
if(TABLE_XOR.size() != TABLE_XOR_SIZE) {
}
final Iterator<ByteString> expected = TEST_RESULT.iterator();
- for(final ByteString testInput : TEST_VECTOR) {
+ for(final TestVector testVector : TEST_VECTOR) {
MHash384 subject = new MHash384();
- subject.update(testInput);
+ for(int j = 0; j < testVector.iterations; ++j) {
+ subject.update(testVector.message);
+ }
final ByteString result = subject.digest();
System.out.println(result);
if(!result.equals(expected.next())) {
public sealed class MHash384
{
//=====================================================================
+ // HELPER CLASSES
+ //=====================================================================
+
+ // ConstArray<T>
+ public struct ConstArray<T> : IEnumerable<T>
+ {
+ private readonly T[] m_data;
+
+ public ConstArray(params T[] data)
+ {
+ m_data = (T[])data.Clone();
+ }
+
+ public T this[int i]
+ {
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ get { return m_data[i]; }
+ }
+
+ public int Length
+ {
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ get { return m_data.Length; }
+ }
+
+ public override bool Equals(Object other)
+ {
+ if (other.GetType().Equals(typeof(ConstArray<T>)))
+ {
+ return m_data.SequenceEqual((ConstArray<T>)other);
+ }
+ return false;
+ }
+
+ public override int GetHashCode()
+ {
+ int hashCode = 0;
+ foreach (T element in m_data)
+ {
+ hashCode = hashCode ^ element.GetHashCode();
+ }
+ return hashCode;
+ }
+
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ public IEnumerator<T> GetEnumerator()
+ {
+ return new ConstArrayEnum<T>(this);
+ }
+
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ IEnumerator IEnumerable.GetEnumerator()
+ {
+ return new ConstArrayEnum<T>(this);
+ }
+
+ // ConstArray Enumerator
+ private struct ConstArrayEnum<U> : IEnumerator<U>
+ {
+ private int index;
+ private readonly ConstArray<U> data;
+
+ public ConstArrayEnum(ConstArray<U> data)
+ {
+ index = -1;
+ this.data = data;
+ }
+
+ U IEnumerator<U>.Current
+ {
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ get { return data[index]; }
+ }
+
+ public object Current
+ {
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ get { return data[index]; }
+ }
+
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ public bool MoveNext()
+ {
+ return (++index < data.Length);
+ }
+
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ public void Reset()
+ {
+ index = -1;
+ }
+
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
+ public void Dispose() { }
+ }
+ }
+
+ // TestVector
+ private struct TestVector
+ {
+ public readonly uint itrations;
+ public readonly String message;
+
+ public TestVector(uint itrations, String message)
+ {
+ this.itrations = itrations;
+ this.message = message;
+ }
+ }
+
+ //=====================================================================
// CONSTANTS
//=====================================================================
private readonly int TSIZE_MIX = TABLE_MIX.Length;
//=====================================================================
- // HELPER CLASSES
- //=====================================================================
-
- // ConstArray<T>
- public struct ConstArray<T> : IEnumerable<T>
- {
- private readonly T[] m_data;
-
- public ConstArray(params T[] data)
- {
- m_data = (T[])data.Clone();
- }
-
- public T this[int i]
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- get { return m_data[i]; }
- }
-
- public int Length
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- get { return m_data.Length; }
- }
-
- public override bool Equals(Object other)
- {
- if(other.GetType().Equals(typeof(ConstArray<T>)))
- {
- return m_data.SequenceEqual((ConstArray<T>)other);
- }
- return false;
- }
-
- public override int GetHashCode()
- {
- int hashCode = 0;
- foreach(T element in m_data)
- {
- hashCode = hashCode ^ element.GetHashCode();
- }
- return hashCode;
- }
-
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public IEnumerator<T> GetEnumerator()
- {
- return new ConstArrayEnum<T>(this);
- }
-
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- IEnumerator IEnumerable.GetEnumerator()
- {
- return new ConstArrayEnum<T>(this);
- }
-
- // ConstArray Enumerator
- private struct ConstArrayEnum<U> : IEnumerator<U>
- {
- private int index;
- private readonly ConstArray<U> data;
-
- public ConstArrayEnum(ConstArray<U> data)
- {
- index = -1;
- this.data = data;
- }
-
- U IEnumerator<U>.Current
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- get { return data[index]; }
- }
-
- public object Current
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- get { return data[index]; }
- }
-
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public bool MoveNext()
- {
- return (++index < data.Length);
- }
-
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public void Reset()
- {
- index = -1;
- }
-
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public void Dispose() { }
- }
- }
-
- // TestVector
- private struct TestVector
- {
- public readonly uint itrations;
- public readonly uint len;
- public readonly String message;
-
- public TestVector(uint itrations, uint len, String message)
- {
- this.itrations = itrations;
- this.len = len;
- this.message = message;
- }
- }
-
- //=====================================================================
// HASH STATE
//=====================================================================
public static void SelfTest()
{
ConstArray<TestVector> TEST_VECTOR = new ConstArray<TestVector>(
- new TestVector(0x0000001, 0x000, ""),
- new TestVector(0x0000001, 0x000, "abc"),
- new TestVector(0x0000001, 0x000, "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"),
- new TestVector(0x0000001, 0x000, "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu"),
- new TestVector(0x0000001, 0x000, "Franz jagt im komplett verwahrlosten Taxi quer durch Bayern"),
- new TestVector(0x0000001, 0x000, "Frank jagt im komplett verwahrlosten Taxi quer durch Bayern"),
- new TestVector(0x0000001, 0x000, "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.\nDuis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.\nUt wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.\nNam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.\nDuis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis.\nAt vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat.\nConsetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus.\nLorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.\nDuis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.\nUt wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.\nNam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo."),
- new TestVector(0x0000001, 0x200, "\x92\xAD\xAC\x49\x7F\xFA\xB3\x0B\x40\xAC\x67\x4F\x9D\x53\xA9\xA6\x24\xB2\x47\xFA\x23\x72\x94\xFA\x75\x88\x41\xA8\x5F\x4D\xDE\xFD\xDB\xFD\x23\x71\xC1\xE2\xCA\xF8\x5B\x0E\x06\x4B\xBC\x4F\x3A\xC0\xA9\xC6\xFD\x6C\x18\x5D\xC4\xB1\x2C\x8A\xAC\xC3\xE6\x25\xBD\xE8\x7A\xDF\xCB\xFF\x60\x1B\xF0\x66\xDF\x08\x7C\x0A\x63\xCE\x2C\x11\xD6\x64\x8D\x1E\xD0\x57\xCE\x1B\x5D\x93\xC6\xCB\x6F\x33\x19\x81\xB9\xFC\xB5\xBC\xF4\xFB\x6F\x77\x50\x54\x06\xD7\x1A\x87\xEC\x7E\xC1\x99\x55\x97\xFB\xB7\x96\x9D\xEC\x0D\xAD\x01\x93\x9E\x88\x89\xF5\x30\x96\x3F\xE9\x2E\x23\xA8\xF5\xDA\xE5\x47\x3E\x2C\x1E\x22\x38\x2A\xD4\xF7\x0E\xA2\xE4\x5E\xBB\xCB\xAD\x11\xC8\x7A\x74\x8F\x78\xCB\x56\x77\x8E\xF4\x1C\x0A\xEC\xA5\x63\x2E\x75\xE3\x52\xB2\xEA\xB5\x53\x3C\x06\xF7\xC6\x80\x8E\x77\xD0\x0B\x2D\xB5\xF9\x64\xF5\x9F\x89\x83\xD9\x25\x79\x22\x26\xE2\xF3\xE6\xD4\xB0\xFD\xE7\xBA\x74\x6C\x59\xBA\x9A\x20\x21\x2C\x25\xDA\x02\xD2\x3A\xEE\x5F\x88\x5A\x75\xF1\x1A\xC5\xBD\xD5\xCC\x6F\x9C\x4B\x72\xBC\x47\xD8\x40\x89\x72\x00\xF1\xB7\xEF\x97\x7F\x23\x52\x2C\x83\x38\xA3\xFC\xFD\xD7\x72\xC6\x15\xD3\x4A\x93\x46\xBC\xB1\xCE\x37\x14\xFC\x0E\x2B\xCB\x99\xC7\x34\x4D\xAC\xD8\x48\xA1\xEE\x58\x43\x6D\xB4\x78\xD0\x30\xE4\x09\xF1\x7B\x3A\xE9\x60\x68\xD9\x06\xF8\x59\x22\x6A\x66\x47\xD6\x09\x8A\x95\x18\x3B\x01\x46\x0D\x29\x36\x7B\xA5\x22\xB4\x05\x7E\x30\xAC\x8B\xC2\xD5\x4C\xBB\x63\x50\x0B\x76\xA1\x36\xEB\x36\xA0\x77\xD8\xF7\x98\x14\x57\x91\x0E\x8D\x9C\x42\x95\xE9\x39\x42\x01\xC9\xB8\xDF\x82\x87\xFF\xE5\xE6\x66\x80\x0B\x19\xB4\x13\xAC\xEC\x71\x2A\x5D\x35\xC5\xCA\x0F\x56\xE6\xA3\x51\x70\x58\x21\xB2\x20\x8D\xC9\xDE\xCC\x25\x19\xD5\xCF\xA1\xB9\x2B\x68\xBE\xD2\x64\x32\x94\x9B\x02\x7C\xF2\x00\xFE\x3D\x8B\x40\xA2\x19\x50\x0F\xEE\x41\x61\x23\xA8\xC5\xA3\xF5\xFC\x37\x35\x1E\x6A\x51\x42\xAA\x33\x8D\x34\x11\xF8\xB3\xBD\x2B\x74\x99\x16\xFF\xAD\x26\x8F\x00\xC5\xF5\x1C\x59\x22\x02\x3E\xB1\x71\x08\x43\xBF\xA7\x6B\xCD\x03\x33\x0E\x53\x9D\xBA\xE5\x28\xCA\x09\xE6\x1B\xAE\x11\x76\xA9\x7A\x89\xDF\x48\xDC\x85\xF1\x9A\xED\x9F\xE1\x9F\x2D\xB7\xDA\x21\xBA\xD1\x0C\xCA\x67\x05\x5B\xCC\x24\x5B\xEA\xF0\xB8\x6C\xC4\xB8"),
- new TestVector(0x0000001, 0x400, "\x05\x85\x7B\xAA\xC0\xC9\xE8\x62\x60\x62\xB0\xA0\x22\x03\x88\xA6\x84\x43\xAA\x8C\x77\x0C\x82\x94\x5D\x35\x82\x98\x04\x1C\xDD\xA8\xD4\x4E\x90\x6F\x6D\xB9\x81\xE2\x7B\x3F\x95\x74\x24\x3E\x9F\x53\x7B\xEF\x0A\x25\x47\x79\x89\x5C\xB6\xB2\x37\xFC\x4F\x74\x6F\x7F\xCD\xE3\x73\x8B\xF5\xD1\xA2\x3C\xBC\x70\xF1\x41\x84\xF2\xEB\x37\x9B\xCB\xC3\xD7\x46\x2E\x52\xC3\x97\x3A\xB6\x74\xF3\xD5\xBB\x5A\x89\x36\xF3\x1D\xD5\xA1\x0E\xF1\x8E\xF4\x17\x26\xCE\x66\x00\x28\xDE\x17\x3D\x5B\x3B\x83\x7B\xD3\xAB\xC4\xA1\xEF\x8A\x59\xA2\xE2\xBA\x6E\x13\xEE\xEA\x83\x6B\xC1\xB1\x17\x9C\x65\x1A\xBE\x45\xA7\xB2\x40\x91\x99\x07\x9F\x4B\x5F\xBE\xF8\xC6\x7E\x4E\x0A\xFF\x5B\xB5\x5A\x7C\x2F\x9E\x77\xEE\x3B\xE0\xB5\x62\x80\x22\x9D\x2D\x13\xCB\xBC\x33\x80\xDD\xAB\x15\xAA\xAD\x04\x3A\xAD\x8C\xD5\x32\x4D\x30\x32\xF0\x71\x47\x27\x5E\x4B\x12\xFB\xEF\x7B\xAB\x83\xAC\x9D\xCD\xED\xEE\x2C\x25\x69\x19\x6D\x60\xEF\x18\xB5\xA0\x80\x9D\xA2\x83\x31\x87\x07\x53\x52\xE1\x5B\x4C\x1E\xFF\x41\x61\x34\x1C\x3E\x1F\x5F\xA2\x58\xD7\x67\x56\x23\xB6\xEC\xF5\xBC\x27\xCE\xCD\xB4\xB2\x57\xB1\x3B\xEB\xA6\x58\x95\xE0\xB5\xE8\xB1\x9E\x18\x3F\x4B\x60\x96\x4E\xFB\x59\x25\x06\xF4\x95\x83\x80\x98\x5D\x9F\x59\x9B\x83\x26\x97\x89\xCE\xAC\xBB\xD0\x5C\x95\x37\xDC\xE4\xDD\x2F\x5C\x22\x9C\x65\x10\xFB\x61\xA1\x73\xA1\x6A\x89\x61\x93\x7C\xC8\x6E\x80\xB8\x48\x57\x48\x4F\x88\x7E\x6A\xCE\x90\xF3\xEB\xB3\x9F\x50\xF0\x0F\xB6\x29\x60\x28\xE5\x8B\xDF\xEA\xCA\xFB\x3C\xDD\xAA\x60\x60\x73\xB3\xAE\x45\x4F\xC9\x1D\xB2\x63\x31\x30\x3B\x85\xBA\x8A\x37\x41\xD6\x5A\x52\x11\xA2\x2A\x11\x39\xD2\x1E\x2D\xBF\x1A\x53\x8A\x13\x24\xC7\xA3\xDE\xBE\x0B\x23\x72\xCC\x92\x29\xB8\x2B\x92\x8F\x08\x0A\xB4\xA6\x47\x76\x29\x39\xBF\x40\xBC\x59\x9F\xCD\x9D\xCF\x35\x51\x16\xF5\x44\x40\xA4\xC3\x1D\xA8\x8C\x73\xC0\xA1\x12\x84\x15\x4D\xB1\x7B\x4A\x44\xF4\x12\x8E\x0F\xE4\x4C\x7E\x5C\xB2\x92\x5F\xA9\xB3\x71\xDA\x40\x50\x78\xC7\x02\x1F\x20\x79\x84\xF3\x91\x1F\x47\x47\x40\x67\x2B\x52\xA1\x67\x91\x05\xCA\xB4\xAB\xA8\x69\x40\xFD\x7F\x28\xF6\x17\xB0\xDD\x1A\x82\x0F\x20\x5D\xD2\x39\xA8\x9A\x73\xF1\xAC\x10\x18\x3C\x69\x99\x49\xB8\xB2\x90\x24\xB5\x2E\x0C\x57\x93\x6A\x1B\x0B\x9C\xB9\xF5\x45\x71\xDD\xAF\x94\x6F\xA5\xF5\xCF\xB1\xBC\x1C\x0E\x5E\x5A\x0E\xF6\x9D\x9E\x71\x11\x99\x9F\xA4\x57\xE6\x6D\xD5\x83\x00\xD7\x85\x0C\x54\x01\xD4\x49\x1C\xF6\x8C\x8E\x00\x8B\xF8\x48\x50\x4D\x6F\xF1\xEA\xEF\x2D\x64\xD4\xF5\x00\xA9\x03\xE6\xCB\x5F\xCF\x6C\xD6\x26\xC1\xF4\x97\xCF\xB5\x16\xA1\x62\xDE\xFF\xC2\x00\xD0\x9A\x5E\xBB\xB4\x76\x86\xFD\x4B\xF2\x29\x4F\x0F\x69\x15\x7D\xAC\xAA\x2B\xD1\xBA\x6E\xA2\x1A\xC1\x6B\x9A\x14\x90\x63\xBD\xC4\x31\x36\xBB\x26\xA7\x69\x7D\x11\x76\xE5\x3F\x05\xC5\x4F\x6D\xB0\x12\x2E\xBC\x72\x18\x8A\x0F\x07\xA1\x2A\xD0\xC0\xDE\x2B\x63\x19\x6E\xA8\x7F\xC7\x9D\x47\x2F\xA6\x62\xA3\x57\xF0\x37\x58\x9F\x80\x4D\x9D\xA9\x2F\x2A\x39\x79\x16\x6A\xCA\xDF\x22\x8F\x2F\xAA\xA2\x72\x75\x96\x63\x19\xE2\xDF\x7E\x37\x1D\x68\xF8\xD9\x5D\x8D\x40\x23\x7F\xF5\x1B\x40\x33\xCB\x38\x81\x4F\x4A\x5E\x25\x3C\xF0\x19\xD7\x01\xD1\x21\xF6\xC5\x6F\xDA\x17\x83\x60\x39\x25\x66\xF2\x25\x31\x58\xA6\xA4\xAD\x46\x78\xE7\x76\x57\x19\xCB\x7C\x9C\x6D\xE0\x6D\xF8\xFD\x28\x14\x14\x0D\xF0\x0C\x8F\xD4\x68\x59\xD2\x96\x15\xBF\xEC\x8A\x34\xF7\x1A\x3B\x2C\x8C\x4A\x98\x16\x37\x7D\x95\x15\xBD\x45\xCB\xF8\xC1\xA1\x9E\x64\x3A\x17\x4C\xC4\xD2\xD1\xA0\xA4\xBD\x5A\x79\xCB\x53\xBC\x37\x84\xC8\x4F\x9B\xD7\x10\x42\x3D\x26\x40\xD6\xF2\x50\x20\x17\x8C\x2A\x81\x3A\xB5\xD2\x8B\x66\xE5\x9F\xCB\xEB\x29\xC8\x41\xD1\xB1\x9F\xBA\x77\x2A\x18\xD7\x7F\x8D\x46\x60\xFE\xDB\xE4\xC1\xA5\x73\xDD\x88\x7B\x17\xAA\x3D\x58\x30\x9B\xF6\xB2\x66\x4E\xAC\xC3\xE3\xA4\x7A\xAE\xDF\x33\xBE\x52\x89\xB7\xF9\xB0\x18\xFB\x70\x63\x9A\xC2\xB5\xFD\xEF\x3C\x8E\x91\x69\x5F\xA8\xE0\xF6\x83\x25\xEF\x16\xAA\xAF\x27\xB5\xD5\x2C\x58\x57\x35\x67\x5D\x11\x31\xA3\x25\x39\x0D\x5C\xF1\xAC\xD4\xFB\x03\x4C\x8A\xC0\xFB\xB2\xE5\x0E\xAD\x7F\xC9\xB1\x33\xAE\xD9\xEE\x3D\x71\xCB\x23\x54\xF9\x7F\xBF\x02\x4D\xE1\xD2\xBC\x66\xA9\x5C\x9D\x36\x47\x5A\x62\x76\xEF\xC5\xC8\x30\xBC\x78\x79\x92\x62\xA8\xE9\x0B\x83\xE5\x91\x42\x8F\xFC\xE9\xA8\x6C\xAB\xA9\x75\xA1\x9B\x6B\xA2\xE5\x87\x96\xBE\x16\x84\x0A\x04\x29\x9F\x2E\x2D\xC9\xC8\xDA\xEA\xF6\x9A\x25\x0F\xF8\xC0\xFD\xB5\xD7\x82"),
- new TestVector(0x0000001, 0x600, "\xFF\xD3\xB0\xA7\x2D\x6F\x68\x3A\x0B\x80\x75\xAA\xE0\xE7\x1E\x77\x32\x81\x7D\x74\x65\xEE\x85\xB5\x7A\xD8\xD6\x53\xCE\x9F\x4F\xB7\xBD\xD4\xB0\xB6\x7B\x44\xA5\x2C\x2E\x69\xC9\x60\xE3\xAE\xC7\xAD\x66\x04\xDC\x1D\xB1\xAE\xB2\xAE\x5E\xF0\x78\xCB\x08\xFF\x40\x1C\x36\x34\x0C\x10\xE3\x41\x9B\x80\x8F\x62\xBF\xD6\x25\xB7\x2D\x74\x83\x4F\x24\x7E\xBA\xB7\x0D\x87\x9A\x5C\x72\xE6\xF0\x09\x79\x51\x2B\x1F\xE6\x4A\xC0\x22\x17\x58\x66\xE9\x8B\xB2\x92\xE3\x62\xFC\x73\x6E\xBC\x72\xD5\xCF\x08\x05\x4B\xB6\x14\x3C\x91\x33\x3E\x60\xBA\x81\xC3\xFD\x32\xA9\xB7\x64\xD8\x1F\x9B\x44\x63\x2D\x1A\x70\xE1\xF5\x4E\xA0\x8D\x3C\x20\x8C\x46\x59\xF5\xF4\xE2\xE6\xA2\xA7\xE8\x18\xCB\x4D\xDB\x5A\xC6\x90\x93\xAC\xDF\x6A\xFF\xD1\x00\x96\x4F\xFC\xEF\xB7\x6A\xEB\xBB\x87\x30\x4F\xFC\x19\xCE\x12\x33\xC1\x13\xDE\xDF\xA3\x7B\x89\xC2\xA3\xDC\xA4\xA9\xBD\x04\x10\x96\xEE\xB8\x77\xFA\x98\x5C\x42\x01\xF3\xF5\xD4\xEF\x18\x0E\xB4\x0F\x2E\x2C\xFC\x9A\xD0\xCF\x4C\x99\xE1\x20\xF0\x65\x5B\xFE\xAF\xF0\x9B\xB5\xDF\xD5\x2B\xC2\x3D\xB0\xFD\xE8\x31\x3C\x7F\xA6\x65\x6F\xBA\x0E\xD9\xC9\x8D\x5B\xD1\xEA\x7C\x7F\x4B\x52\xED\x80\x4F\x26\x17\x95\x91\x6B\xB8\x08\x2C\x1E\x62\x4F\xD2\xD0\x7A\x00\x75\xA6\x13\x29\x93\xCB\xC4\xC5\xA7\x9E\x90\xB1\x7C\x8C\x1C\x7A\x59\x6C\x1D\x5D\xFC\x46\xAF\x0C\x96\xBA\x31\x95\x44\x7B\xCB\x5E\xAB\x64\x42\xF7\x35\x7A\x1F\x87\xF2\xB3\x3E\x42\x33\x28\xCF\x52\x47\x47\x13\x9A\xA3\x63\xD1\xBD\x7A\xF0\x0C\x90\x68\x1D\x0C\x03\x83\xA9\x8E\x9D\x7A\x5C\x6A\x1E\x66\xA9\xF1\x2B\xB8\xCE\xA2\xD2\x2B\x17\x21\xB1\x83\x87\xFC\xF1\xF3\x46\x78\xDC\xD3\x96\x66\xC2\xB4\xD3\x83\x02\xA8\xD7\xA5\x95\xDF\x30\x04\xF2\xD1\x52\x8C\x5A\x44\x62\x68\xBC\xCD\xA7\x69\xCB\x4E\xB4\x5B\x10\x83\x59\xAC\x28\x29\x13\x04\xC3\xB2\x7A\xC5\x35\xA7\xB0\x0A\xD4\xF0\xF0\xEC\xB4\xC0\xF2\xD2\xC2\x2B\x88\x03\xD5\xE6\x4E\x6F\xEF\xAD\x7D\xD8\x0F\xF0\x6C\xB0\xB1\x09\xD8\x9D\x99\x14\xE3\x00\x05\x23\xC7\x15\xB9\xB1\xB7\xF1\xEE\x9F\xCE\x04\x39\xB7\xE2\x4D\x0C\x5A\x13\x7A\x72\x08\x21\x11\x28\xB2\x35\xEC\x7A\xE5\x23\xD5\x66\xD6\x4C\x7A\x82\xFD\x6E\x1F\x3A\x01\xDC\x38\x3A\x21\x7B\x23\xB5\xFA\xCC\x05\x65\x8D\xDC\xDA\x5C\xA7\x0A\x1A\xA0\x02\xF4\xB6\xA0\x32\x34\x77\xC5\xE2\xBB\x10\x46\xCE\x57\xE3\xA9\x0B\x65\x73\x8F\xD5\xA5\x17\x83\x00\xBD\x40\xB1\xEE\x44\xF4\xEB\x28\x5B\x96\xA6\xC1\x94\xD3\xB6\x4B\xAE\xF4\x72\xF6\xEC\xAC\xD4\x52\x9E\xC7\x7A\xA8\x4B\x3D\x1D\xBC\xC0\x57\x7B\x91\x62\xEE\x4D\x67\xF3\xBA\x8D\xBB\x6D\xE7\x48\x5E\xBE\x16\x48\x85\x6C\x52\x48\x00\xFF\x06\x95\xE1\x7E\xD9\x13\x98\xE0\x6D\x96\x13\xB7\x4B\x28\x3B\xAC\xC5\x0A\x37\x85\xBB\x6E\xE5\xE9\x2F\x2C\x0E\x9E\xB7\x44\xE7\x85\xF2\x5B\xFD\xEE\x8B\xC2\xB8\x30\xE0\x81\x29\x94\xDB\x33\xFF\x88\x32\x91\xF9\xCB\x14\xBC\x2D\x91\x26\x13\x4A\xA2\xE2\xD7\xD0\xCA\x9F\x1F\x36\x7A\x12\x7D\x0C\x9A\x0B\xE6\x5C\xE2\xB7\x4D\xE5\x0B\xA4\x3E\x25\xF8\xD9\x8D\x9D\xF4\xE3\x2C\x8A\x9B\x98\xAD\x6B\xF5\x0F\xFB\x7D\xDA\x2A\xFE\x21\x18\x76\x9A\x1A\x55\xFC\x25\xCA\x3E\xF9\xFD\xE4\xB6\x2D\x10\x3E\x58\x79\xD8\x30\xED\xDD\x4B\xB6\x0F\xD5\xD6\xF6\xB4\xB1\x37\x7C\x4E\x29\xE6\xF7\x79\x23\x74\x01\x66\x5F\x02\xEB\xF2\x9F\x51\x02\x39\x31\xAA\x8B\xBC\xDE\x6E\x5A\x6D\xAF\x3A\x84\x23\x34\xF4\x13\x9C\x04\xFD\x7E\x6C\xE7\x22\xCC\xB9\x32\x6B\xD9\xC2\x77\xC2\x7B\xDF\xE9\xB6\x17\x53\xAF\x7B\xA6\x94\xAE\x39\x39\x00\xEF\x75\xE2\x4D\x15\xF6\x45\x1A\xB2\x9F\xD6\x82\x24\x45\xB2\x07\xA7\x00\x3D\x14\x01\x62\x40\xDD\xD2\xB8\xF0\x96\x9B\x07\x0C\x49\xF8\x74\xB2\xBF\xE9\x31\xB3\x2E\x9D\x2F\x30\xC2\xF6\xED\x4C\x56\x42\xD4\x47\x55\x6A\xF4\x39\xC2\x23\x5F\x58\xBD\x2C\x7B\xC5\x4A\xDC\x8A\xAD\x40\xE5\x84\xA0\x65\xB3\x65\x73\x74\x9F\xAB\xBD\xE6\x09\xA2\x24\x65\x8D\xF6\x5B\x5B\x14\x4B\xC0\x6A\x78\xF2\xD6\xF3\x76\x45\xA0\x77\xDD\xAA\xDB\x13\xF9\x9F\x0F\x5A\xA5\xA0\xB9\x28\x48\x95\x24\x03\x2D\x94\x6E\xE1\x05\xF7\x5C\x23\x82\x29\x95\xA1\x7C\xF2\xE3\xB9\x2F\xAC\x29\x11\xEC\x60\xD1\x4C\x5F\xB8\xD2\x1E\x9D\xEC\x76\x1D\xFC\x5F\xC0\xFE\xD1\x50\x33\x0A\x42\xD7\x83\xC9\xF9\x49\x54\xBB\x50\x17\x6C\x6B\x38\xC1\x31\x19\xDB\xFC\xDE\xCE\x17\xAD\xB2\xD1\xDA\x0A\x13\xEE\x2B\xED\x3A\xEA\xEA\x20\x8E\x17\x14\x0B\x88\xEE\xB9\xA5\x02\x1B\xE8\x6C\xF7\xFB\xE4\x18\x72\xE7\x35\x88\xDE\x8E\xB8\x56\xFB\xD9\x8C\xB8\x81\xA7\x39\xAC\xF2\xD2\x39\x0B\xAF\x7F\xB6\xD2\x0E\xA5\xC7\xA0\xB3\xEF\x6F\x4B\xF4\x08\x78\xB2\xA8\x89\xCD\x0E\x0E\x8A\xB1\x8F\x8C\xAC\xE3\x23\x23\xB6\xD1\x6C\x80\xFD\xF5\x4D\x65\x3B\x75\x17\xFC\x81\xA3\x88\x15\x2A\xEE\x19\xE0\xFD\xF5\xF1\xC2\xC3\xDD\xEE\x7A\x08\x12\x25\x72\x75\x42\x77\x8D\x51\x5B\xD6\x31\x61\x88\x21\x73\x86\x2E\xE5\x8E\x0B\x3E\xBE\x61\xB8\xE4\xFD\xFA\x67\xC6\x44\x78\xB2\x31\xD9\x8B\xBF\xA8\x07\x8F\x7E\xBE\x46\x54\x53\x24\x9A\x25\xE5\xD3\x5F\xC0\x22\x20\xEA\xC0\x86\xCD\x6C\xF8\x7A\x4A\x6C\x18\xBD\x0F\xCC\xF3\x5F\x7F\xE0\xBE\xB0\x53\x94\x5F\xE0\x89\x11\x86\x92\xF2\x3F\x1A\xBD\xE8\x68\xB8\x35\x3B\x91\x8F\x85\x73\x98\xB9\x7E\xD1\xC0\xAD\xF8\x4D\x72\x04\x4F\x1D\xAD\x82\x5F\x86\xDD\x89\x17\x73\x38\xF8\x25\x34\xBA\x57\x24\xF8\xF3\xE3\x50\xAE\x41\xD9\x91\xF8\xAC\x8E\xC4\x87\xF6\x58\xD2\x1C\x31\x9B\xC9\x0E\x28\x56\xC9\x5F\x09\x43\x73\xA0\x79\x13\x58\xF2\x5E\x25\x89\x8F\x17\x58\x9E\xB3\x5E\x30\x6C\x8A\xAB\x81\x43\x27\x6C\x53\x82\x08\x19\xB9\xC0\xFB\xDA\xF4\xDD\xBD\x55\x66\x8D\x71\xFF\x67\x40\x4E\x53\xB3\x70\x22\x7B\x80\x20\x8C\x92\x3F\x0F\x73\xAB\xF1\xE4\x5A\xA2\x57\x3D\xDF\xDE\x39\xD0\xE5\x47\x1C\x41\xDA\x7A\x95\x0C\x5E\xE4\xA3\x84\x34\x6E\x3E\xA4\x9A\xFD\x22\x46\xA9\x79\x65\x69\x19\x6A\xCE\x8A\xE9\x58\x94\x4A\xE1\xD9\x71\x02\xD9\x8F\x46\xA6\x5C\x59\x48\x1F\x63\x97\x1F\xAF\xFC\x11\xF0\x08\x02\x11\x02\xFF\x70\xA4\xE7\x3A\xB9\x5C\xF1\x70\xCA\x58\xF3\x1A\x00\x14\xFA\x7C\xBF\x7E\x1B\xDE\x7E\xD6\x4F\x58\x40\xFB\x8F\xEA\xDC\x8B\xEC\xE2\x2A\xDD\x39\x97\x04\xBE\x3D\x8E\x0C\xAD\x9B\x48\xEF\x92\x5F\x76\xE3\x0C\x0D\x40\x20\x08\x4A\x46\xE7\x65\x38\xF1\xB4\x43\xE6\x99\x06\x5D\xD5\x4D\x7B\xDF\xD6\x46\x7A\x92\x55\x56\x08\xE4\x5F\x08\xD8\xC5\x94\xA6\x5E\xFE\x3B\xEC\xA3\xE8\x54\x90\x2B\xF7\xF3\x37\x25\x90\x26\x0A\x1C\x78\xE6\xE5\x8D\xFF\x53\x96\x4B\xBB\xE4\xDE\x46\x05\x68\x7C\xBF\x05\x19\xD4\xD2\xC6\x8E\xAE\xE9\x45\x31\x60\xF8\x4C\xD1\x9A\xF1\xCA\x6E\x6E\x61\x33\xD0\x57\x15\x0E\x15\x6A\x14\x06\x1D\xCE\x65\xCA\x45\x71\xA7\xBB\x7A\xDE\xCE\xF6\xEA\x62\xA6\xFA\x54\xC1\xAE\xB4\x77\x26\x07\xC0\x10\x30\xB1\xCC\x24\xBF\xE8\x45\xC2\xA9\xD3\x4B\x66\xA1\xE3\xF0\x57\xB0\xFE"),
- new TestVector(0x1000000, 0x000, "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmno")
+ new TestVector(0x0000001, ""),
+ new TestVector(0x0000001, "abc"),
+ new TestVector(0x0000001, "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"),
+ new TestVector(0x0000001, "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu"),
+ new TestVector(0x0000001, "Franz jagt im komplett verwahrlosten Taxi quer durch Bayern"),
+ new TestVector(0x0000001, "Frank jagt im komplett verwahrlosten Taxi quer durch Bayern"),
+ new TestVector(0x0000001, "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.\nDuis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.\nUt wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.\nNam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.\nDuis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis.\nAt vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, At accusam aliquyam diam diam dolore dolores duo eirmod eos erat, et nonumy sed tempor et et invidunt justo labore Stet clita ea et gubergren, kasd magna no rebum. sanctus sea sed takimata ut vero voluptua. est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat.\nConsetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus.\nLorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.\nDuis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.\nUt wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.\nNam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo."),
+ new TestVector(0x0000001, "\x92\xAD\xAC\x49\x7F\xFA\xB3\x0B\x40\xAC\x67\x4F\x9D\x53\xA9\xA6\x24\xB2\x47\xFA\x23\x72\x94\xFA\x75\x88\x41\xA8\x5F\x4D\xDE\xFD\xDB\xFD\x23\x71\xC1\xE2\xCA\xF8\x5B\x0E\x06\x4B\xBC\x4F\x3A\xC0\xA9\xC6\xFD\x6C\x18\x5D\xC4\xB1\x2C\x8A\xAC\xC3\xE6\x25\xBD\xE8\x7A\xDF\xCB\xFF\x60\x1B\xF0\x66\xDF\x08\x7C\x0A\x63\xCE\x2C\x11\xD6\x64\x8D\x1E\xD0\x57\xCE\x1B\x5D\x93\xC6\xCB\x6F\x33\x19\x81\xB9\xFC\xB5\xBC\xF4\xFB\x6F\x77\x50\x54\x06\xD7\x1A\x87\xEC\x7E\xC1\x99\x55\x97\xFB\xB7\x96\x9D\xEC\x0D\xAD\x01\x93\x9E\x88\x89\xF5\x30\x96\x3F\xE9\x2E\x23\xA8\xF5\xDA\xE5\x47\x3E\x2C\x1E\x22\x38\x2A\xD4\xF7\x0E\xA2\xE4\x5E\xBB\xCB\xAD\x11\xC8\x7A\x74\x8F\x78\xCB\x56\x77\x8E\xF4\x1C\x0A\xEC\xA5\x63\x2E\x75\xE3\x52\xB2\xEA\xB5\x53\x3C\x06\xF7\xC6\x80\x8E\x77\xD0\x0B\x2D\xB5\xF9\x64\xF5\x9F\x89\x83\xD9\x25\x79\x22\x26\xE2\xF3\xE6\xD4\xB0\xFD\xE7\xBA\x74\x6C\x59\xBA\x9A\x20\x21\x2C\x25\xDA\x02\xD2\x3A\xEE\x5F\x88\x5A\x75\xF1\x1A\xC5\xBD\xD5\xCC\x6F\x9C\x4B\x72\xBC\x47\xD8\x40\x89\x72\x00\xF1\xB7\xEF\x97\x7F\x23\x52\x2C\x83\x38\xA3\xFC\xFD\xD7\x72\xC6\x15\xD3\x4A\x93\x46\xBC\xB1\xCE\x37\x14\xFC\x0E\x2B\xCB\x99\xC7\x34\x4D\xAC\xD8\x48\xA1\xEE\x58\x43\x6D\xB4\x78\xD0\x30\xE4\x09\xF1\x7B\x3A\xE9\x60\x68\xD9\x06\xF8\x59\x22\x6A\x66\x47\xD6\x09\x8A\x95\x18\x3B\x01\x46\x0D\x29\x36\x7B\xA5\x22\xB4\x05\x7E\x30\xAC\x8B\xC2\xD5\x4C\xBB\x63\x50\x0B\x76\xA1\x36\xEB\x36\xA0\x77\xD8\xF7\x98\x14\x57\x91\x0E\x8D\x9C\x42\x95\xE9\x39\x42\x01\xC9\xB8\xDF\x82\x87\xFF\xE5\xE6\x66\x80\x0B\x19\xB4\x13\xAC\xEC\x71\x2A\x5D\x35\xC5\xCA\x0F\x56\xE6\xA3\x51\x70\x58\x21\xB2\x20\x8D\xC9\xDE\xCC\x25\x19\xD5\xCF\xA1\xB9\x2B\x68\xBE\xD2\x64\x32\x94\x9B\x02\x7C\xF2\x00\xFE\x3D\x8B\x40\xA2\x19\x50\x0F\xEE\x41\x61\x23\xA8\xC5\xA3\xF5\xFC\x37\x35\x1E\x6A\x51\x42\xAA\x33\x8D\x34\x11\xF8\xB3\xBD\x2B\x74\x99\x16\xFF\xAD\x26\x8F\x00\xC5\xF5\x1C\x59\x22\x02\x3E\xB1\x71\x08\x43\xBF\xA7\x6B\xCD\x03\x33\x0E\x53\x9D\xBA\xE5\x28\xCA\x09\xE6\x1B\xAE\x11\x76\xA9\x7A\x89\xDF\x48\xDC\x85\xF1\x9A\xED\x9F\xE1\x9F\x2D\xB7\xDA\x21\xBA\xD1\x0C\xCA\x67\x05\x5B\xCC\x24\x5B\xEA\xF0\xB8\x6C\xC4\xB8"),
+ new TestVector(0x0000001, "\x05\x85\x7B\xAA\xC0\xC9\xE8\x62\x60\x62\xB0\xA0\x22\x03\x88\xA6\x84\x43\xAA\x8C\x77\x0C\x82\x94\x5D\x35\x82\x98\x04\x1C\xDD\xA8\xD4\x4E\x90\x6F\x6D\xB9\x81\xE2\x7B\x3F\x95\x74\x24\x3E\x9F\x53\x7B\xEF\x0A\x25\x47\x79\x89\x5C\xB6\xB2\x37\xFC\x4F\x74\x6F\x7F\xCD\xE3\x73\x8B\xF5\xD1\xA2\x3C\xBC\x70\xF1\x41\x84\xF2\xEB\x37\x9B\xCB\xC3\xD7\x46\x2E\x52\xC3\x97\x3A\xB6\x74\xF3\xD5\xBB\x5A\x89\x36\xF3\x1D\xD5\xA1\x0E\xF1\x8E\xF4\x17\x26\xCE\x66\x00\x28\xDE\x17\x3D\x5B\x3B\x83\x7B\xD3\xAB\xC4\xA1\xEF\x8A\x59\xA2\xE2\xBA\x6E\x13\xEE\xEA\x83\x6B\xC1\xB1\x17\x9C\x65\x1A\xBE\x45\xA7\xB2\x40\x91\x99\x07\x9F\x4B\x5F\xBE\xF8\xC6\x7E\x4E\x0A\xFF\x5B\xB5\x5A\x7C\x2F\x9E\x77\xEE\x3B\xE0\xB5\x62\x80\x22\x9D\x2D\x13\xCB\xBC\x33\x80\xDD\xAB\x15\xAA\xAD\x04\x3A\xAD\x8C\xD5\x32\x4D\x30\x32\xF0\x71\x47\x27\x5E\x4B\x12\xFB\xEF\x7B\xAB\x83\xAC\x9D\xCD\xED\xEE\x2C\x25\x69\x19\x6D\x60\xEF\x18\xB5\xA0\x80\x9D\xA2\x83\x31\x87\x07\x53\x52\xE1\x5B\x4C\x1E\xFF\x41\x61\x34\x1C\x3E\x1F\x5F\xA2\x58\xD7\x67\x56\x23\xB6\xEC\xF5\xBC\x27\xCE\xCD\xB4\xB2\x57\xB1\x3B\xEB\xA6\x58\x95\xE0\xB5\xE8\xB1\x9E\x18\x3F\x4B\x60\x96\x4E\xFB\x59\x25\x06\xF4\x95\x83\x80\x98\x5D\x9F\x59\x9B\x83\x26\x97\x89\xCE\xAC\xBB\xD0\x5C\x95\x37\xDC\xE4\xDD\x2F\x5C\x22\x9C\x65\x10\xFB\x61\xA1\x73\xA1\x6A\x89\x61\x93\x7C\xC8\x6E\x80\xB8\x48\x57\x48\x4F\x88\x7E\x6A\xCE\x90\xF3\xEB\xB3\x9F\x50\xF0\x0F\xB6\x29\x60\x28\xE5\x8B\xDF\xEA\xCA\xFB\x3C\xDD\xAA\x60\x60\x73\xB3\xAE\x45\x4F\xC9\x1D\xB2\x63\x31\x30\x3B\x85\xBA\x8A\x37\x41\xD6\x5A\x52\x11\xA2\x2A\x11\x39\xD2\x1E\x2D\xBF\x1A\x53\x8A\x13\x24\xC7\xA3\xDE\xBE\x0B\x23\x72\xCC\x92\x29\xB8\x2B\x92\x8F\x08\x0A\xB4\xA6\x47\x76\x29\x39\xBF\x40\xBC\x59\x9F\xCD\x9D\xCF\x35\x51\x16\xF5\x44\x40\xA4\xC3\x1D\xA8\x8C\x73\xC0\xA1\x12\x84\x15\x4D\xB1\x7B\x4A\x44\xF4\x12\x8E\x0F\xE4\x4C\x7E\x5C\xB2\x92\x5F\xA9\xB3\x71\xDA\x40\x50\x78\xC7\x02\x1F\x20\x79\x84\xF3\x91\x1F\x47\x47\x40\x67\x2B\x52\xA1\x67\x91\x05\xCA\xB4\xAB\xA8\x69\x40\xFD\x7F\x28\xF6\x17\xB0\xDD\x1A\x82\x0F\x20\x5D\xD2\x39\xA8\x9A\x73\xF1\xAC\x10\x18\x3C\x69\x99\x49\xB8\xB2\x90\x24\xB5\x2E\x0C\x57\x93\x6A\x1B\x0B\x9C\xB9\xF5\x45\x71\xDD\xAF\x94\x6F\xA5\xF5\xCF\xB1\xBC\x1C\x0E\x5E\x5A\x0E\xF6\x9D\x9E\x71\x11\x99\x9F\xA4\x57\xE6\x6D\xD5\x83\x00\xD7\x85\x0C\x54\x01\xD4\x49\x1C\xF6\x8C\x8E\x00\x8B\xF8\x48\x50\x4D\x6F\xF1\xEA\xEF\x2D\x64\xD4\xF5\x00\xA9\x03\xE6\xCB\x5F\xCF\x6C\xD6\x26\xC1\xF4\x97\xCF\xB5\x16\xA1\x62\xDE\xFF\xC2\x00\xD0\x9A\x5E\xBB\xB4\x76\x86\xFD\x4B\xF2\x29\x4F\x0F\x69\x15\x7D\xAC\xAA\x2B\xD1\xBA\x6E\xA2\x1A\xC1\x6B\x9A\x14\x90\x63\xBD\xC4\x31\x36\xBB\x26\xA7\x69\x7D\x11\x76\xE5\x3F\x05\xC5\x4F\x6D\xB0\x12\x2E\xBC\x72\x18\x8A\x0F\x07\xA1\x2A\xD0\xC0\xDE\x2B\x63\x19\x6E\xA8\x7F\xC7\x9D\x47\x2F\xA6\x62\xA3\x57\xF0\x37\x58\x9F\x80\x4D\x9D\xA9\x2F\x2A\x39\x79\x16\x6A\xCA\xDF\x22\x8F\x2F\xAA\xA2\x72\x75\x96\x63\x19\xE2\xDF\x7E\x37\x1D\x68\xF8\xD9\x5D\x8D\x40\x23\x7F\xF5\x1B\x40\x33\xCB\x38\x81\x4F\x4A\x5E\x25\x3C\xF0\x19\xD7\x01\xD1\x21\xF6\xC5\x6F\xDA\x17\x83\x60\x39\x25\x66\xF2\x25\x31\x58\xA6\xA4\xAD\x46\x78\xE7\x76\x57\x19\xCB\x7C\x9C\x6D\xE0\x6D\xF8\xFD\x28\x14\x14\x0D\xF0\x0C\x8F\xD4\x68\x59\xD2\x96\x15\xBF\xEC\x8A\x34\xF7\x1A\x3B\x2C\x8C\x4A\x98\x16\x37\x7D\x95\x15\xBD\x45\xCB\xF8\xC1\xA1\x9E\x64\x3A\x17\x4C\xC4\xD2\xD1\xA0\xA4\xBD\x5A\x79\xCB\x53\xBC\x37\x84\xC8\x4F\x9B\xD7\x10\x42\x3D\x26\x40\xD6\xF2\x50\x20\x17\x8C\x2A\x81\x3A\xB5\xD2\x8B\x66\xE5\x9F\xCB\xEB\x29\xC8\x41\xD1\xB1\x9F\xBA\x77\x2A\x18\xD7\x7F\x8D\x46\x60\xFE\xDB\xE4\xC1\xA5\x73\xDD\x88\x7B\x17\xAA\x3D\x58\x30\x9B\xF6\xB2\x66\x4E\xAC\xC3\xE3\xA4\x7A\xAE\xDF\x33\xBE\x52\x89\xB7\xF9\xB0\x18\xFB\x70\x63\x9A\xC2\xB5\xFD\xEF\x3C\x8E\x91\x69\x5F\xA8\xE0\xF6\x83\x25\xEF\x16\xAA\xAF\x27\xB5\xD5\x2C\x58\x57\x35\x67\x5D\x11\x31\xA3\x25\x39\x0D\x5C\xF1\xAC\xD4\xFB\x03\x4C\x8A\xC0\xFB\xB2\xE5\x0E\xAD\x7F\xC9\xB1\x33\xAE\xD9\xEE\x3D\x71\xCB\x23\x54\xF9\x7F\xBF\x02\x4D\xE1\xD2\xBC\x66\xA9\x5C\x9D\x36\x47\x5A\x62\x76\xEF\xC5\xC8\x30\xBC\x78\x79\x92\x62\xA8\xE9\x0B\x83\xE5\x91\x42\x8F\xFC\xE9\xA8\x6C\xAB\xA9\x75\xA1\x9B\x6B\xA2\xE5\x87\x96\xBE\x16\x84\x0A\x04\x29\x9F\x2E\x2D\xC9\xC8\xDA\xEA\xF6\x9A\x25\x0F\xF8\xC0\xFD\xB5\xD7\x82"),
+ new TestVector(0x0000001, "\xFF\xD3\xB0\xA7\x2D\x6F\x68\x3A\x0B\x80\x75\xAA\xE0\xE7\x1E\x77\x32\x81\x7D\x74\x65\xEE\x85\xB5\x7A\xD8\xD6\x53\xCE\x9F\x4F\xB7\xBD\xD4\xB0\xB6\x7B\x44\xA5\x2C\x2E\x69\xC9\x60\xE3\xAE\xC7\xAD\x66\x04\xDC\x1D\xB1\xAE\xB2\xAE\x5E\xF0\x78\xCB\x08\xFF\x40\x1C\x36\x34\x0C\x10\xE3\x41\x9B\x80\x8F\x62\xBF\xD6\x25\xB7\x2D\x74\x83\x4F\x24\x7E\xBA\xB7\x0D\x87\x9A\x5C\x72\xE6\xF0\x09\x79\x51\x2B\x1F\xE6\x4A\xC0\x22\x17\x58\x66\xE9\x8B\xB2\x92\xE3\x62\xFC\x73\x6E\xBC\x72\xD5\xCF\x08\x05\x4B\xB6\x14\x3C\x91\x33\x3E\x60\xBA\x81\xC3\xFD\x32\xA9\xB7\x64\xD8\x1F\x9B\x44\x63\x2D\x1A\x70\xE1\xF5\x4E\xA0\x8D\x3C\x20\x8C\x46\x59\xF5\xF4\xE2\xE6\xA2\xA7\xE8\x18\xCB\x4D\xDB\x5A\xC6\x90\x93\xAC\xDF\x6A\xFF\xD1\x00\x96\x4F\xFC\xEF\xB7\x6A\xEB\xBB\x87\x30\x4F\xFC\x19\xCE\x12\x33\xC1\x13\xDE\xDF\xA3\x7B\x89\xC2\xA3\xDC\xA4\xA9\xBD\x04\x10\x96\xEE\xB8\x77\xFA\x98\x5C\x42\x01\xF3\xF5\xD4\xEF\x18\x0E\xB4\x0F\x2E\x2C\xFC\x9A\xD0\xCF\x4C\x99\xE1\x20\xF0\x65\x5B\xFE\xAF\xF0\x9B\xB5\xDF\xD5\x2B\xC2\x3D\xB0\xFD\xE8\x31\x3C\x7F\xA6\x65\x6F\xBA\x0E\xD9\xC9\x8D\x5B\xD1\xEA\x7C\x7F\x4B\x52\xED\x80\x4F\x26\x17\x95\x91\x6B\xB8\x08\x2C\x1E\x62\x4F\xD2\xD0\x7A\x00\x75\xA6\x13\x29\x93\xCB\xC4\xC5\xA7\x9E\x90\xB1\x7C\x8C\x1C\x7A\x59\x6C\x1D\x5D\xFC\x46\xAF\x0C\x96\xBA\x31\x95\x44\x7B\xCB\x5E\xAB\x64\x42\xF7\x35\x7A\x1F\x87\xF2\xB3\x3E\x42\x33\x28\xCF\x52\x47\x47\x13\x9A\xA3\x63\xD1\xBD\x7A\xF0\x0C\x90\x68\x1D\x0C\x03\x83\xA9\x8E\x9D\x7A\x5C\x6A\x1E\x66\xA9\xF1\x2B\xB8\xCE\xA2\xD2\x2B\x17\x21\xB1\x83\x87\xFC\xF1\xF3\x46\x78\xDC\xD3\x96\x66\xC2\xB4\xD3\x83\x02\xA8\xD7\xA5\x95\xDF\x30\x04\xF2\xD1\x52\x8C\x5A\x44\x62\x68\xBC\xCD\xA7\x69\xCB\x4E\xB4\x5B\x10\x83\x59\xAC\x28\x29\x13\x04\xC3\xB2\x7A\xC5\x35\xA7\xB0\x0A\xD4\xF0\xF0\xEC\xB4\xC0\xF2\xD2\xC2\x2B\x88\x03\xD5\xE6\x4E\x6F\xEF\xAD\x7D\xD8\x0F\xF0\x6C\xB0\xB1\x09\xD8\x9D\x99\x14\xE3\x00\x05\x23\xC7\x15\xB9\xB1\xB7\xF1\xEE\x9F\xCE\x04\x39\xB7\xE2\x4D\x0C\x5A\x13\x7A\x72\x08\x21\x11\x28\xB2\x35\xEC\x7A\xE5\x23\xD5\x66\xD6\x4C\x7A\x82\xFD\x6E\x1F\x3A\x01\xDC\x38\x3A\x21\x7B\x23\xB5\xFA\xCC\x05\x65\x8D\xDC\xDA\x5C\xA7\x0A\x1A\xA0\x02\xF4\xB6\xA0\x32\x34\x77\xC5\xE2\xBB\x10\x46\xCE\x57\xE3\xA9\x0B\x65\x73\x8F\xD5\xA5\x17\x83\x00\xBD\x40\xB1\xEE\x44\xF4\xEB\x28\x5B\x96\xA6\xC1\x94\xD3\xB6\x4B\xAE\xF4\x72\xF6\xEC\xAC\xD4\x52\x9E\xC7\x7A\xA8\x4B\x3D\x1D\xBC\xC0\x57\x7B\x91\x62\xEE\x4D\x67\xF3\xBA\x8D\xBB\x6D\xE7\x48\x5E\xBE\x16\x48\x85\x6C\x52\x48\x00\xFF\x06\x95\xE1\x7E\xD9\x13\x98\xE0\x6D\x96\x13\xB7\x4B\x28\x3B\xAC\xC5\x0A\x37\x85\xBB\x6E\xE5\xE9\x2F\x2C\x0E\x9E\xB7\x44\xE7\x85\xF2\x5B\xFD\xEE\x8B\xC2\xB8\x30\xE0\x81\x29\x94\xDB\x33\xFF\x88\x32\x91\xF9\xCB\x14\xBC\x2D\x91\x26\x13\x4A\xA2\xE2\xD7\xD0\xCA\x9F\x1F\x36\x7A\x12\x7D\x0C\x9A\x0B\xE6\x5C\xE2\xB7\x4D\xE5\x0B\xA4\x3E\x25\xF8\xD9\x8D\x9D\xF4\xE3\x2C\x8A\x9B\x98\xAD\x6B\xF5\x0F\xFB\x7D\xDA\x2A\xFE\x21\x18\x76\x9A\x1A\x55\xFC\x25\xCA\x3E\xF9\xFD\xE4\xB6\x2D\x10\x3E\x58\x79\xD8\x30\xED\xDD\x4B\xB6\x0F\xD5\xD6\xF6\xB4\xB1\x37\x7C\x4E\x29\xE6\xF7\x79\x23\x74\x01\x66\x5F\x02\xEB\xF2\x9F\x51\x02\x39\x31\xAA\x8B\xBC\xDE\x6E\x5A\x6D\xAF\x3A\x84\x23\x34\xF4\x13\x9C\x04\xFD\x7E\x6C\xE7\x22\xCC\xB9\x32\x6B\xD9\xC2\x77\xC2\x7B\xDF\xE9\xB6\x17\x53\xAF\x7B\xA6\x94\xAE\x39\x39\x00\xEF\x75\xE2\x4D\x15\xF6\x45\x1A\xB2\x9F\xD6\x82\x24\x45\xB2\x07\xA7\x00\x3D\x14\x01\x62\x40\xDD\xD2\xB8\xF0\x96\x9B\x07\x0C\x49\xF8\x74\xB2\xBF\xE9\x31\xB3\x2E\x9D\x2F\x30\xC2\xF6\xED\x4C\x56\x42\xD4\x47\x55\x6A\xF4\x39\xC2\x23\x5F\x58\xBD\x2C\x7B\xC5\x4A\xDC\x8A\xAD\x40\xE5\x84\xA0\x65\xB3\x65\x73\x74\x9F\xAB\xBD\xE6\x09\xA2\x24\x65\x8D\xF6\x5B\x5B\x14\x4B\xC0\x6A\x78\xF2\xD6\xF3\x76\x45\xA0\x77\xDD\xAA\xDB\x13\xF9\x9F\x0F\x5A\xA5\xA0\xB9\x28\x48\x95\x24\x03\x2D\x94\x6E\xE1\x05\xF7\x5C\x23\x82\x29\x95\xA1\x7C\xF2\xE3\xB9\x2F\xAC\x29\x11\xEC\x60\xD1\x4C\x5F\xB8\xD2\x1E\x9D\xEC\x76\x1D\xFC\x5F\xC0\xFE\xD1\x50\x33\x0A\x42\xD7\x83\xC9\xF9\x49\x54\xBB\x50\x17\x6C\x6B\x38\xC1\x31\x19\xDB\xFC\xDE\xCE\x17\xAD\xB2\xD1\xDA\x0A\x13\xEE\x2B\xED\x3A\xEA\xEA\x20\x8E\x17\x14\x0B\x88\xEE\xB9\xA5\x02\x1B\xE8\x6C\xF7\xFB\xE4\x18\x72\xE7\x35\x88\xDE\x8E\xB8\x56\xFB\xD9\x8C\xB8\x81\xA7\x39\xAC\xF2\xD2\x39\x0B\xAF\x7F\xB6\xD2\x0E\xA5\xC7\xA0\xB3\xEF\x6F\x4B\xF4\x08\x78\xB2\xA8\x89\xCD\x0E\x0E\x8A\xB1\x8F\x8C\xAC\xE3\x23\x23\xB6\xD1\x6C\x80\xFD\xF5\x4D\x65\x3B\x75\x17\xFC\x81\xA3\x88\x15\x2A\xEE\x19\xE0\xFD\xF5\xF1\xC2\xC3\xDD\xEE\x7A\x08\x12\x25\x72\x75\x42\x77\x8D\x51\x5B\xD6\x31\x61\x88\x21\x73\x86\x2E\xE5\x8E\x0B\x3E\xBE\x61\xB8\xE4\xFD\xFA\x67\xC6\x44\x78\xB2\x31\xD9\x8B\xBF\xA8\x07\x8F\x7E\xBE\x46\x54\x53\x24\x9A\x25\xE5\xD3\x5F\xC0\x22\x20\xEA\xC0\x86\xCD\x6C\xF8\x7A\x4A\x6C\x18\xBD\x0F\xCC\xF3\x5F\x7F\xE0\xBE\xB0\x53\x94\x5F\xE0\x89\x11\x86\x92\xF2\x3F\x1A\xBD\xE8\x68\xB8\x35\x3B\x91\x8F\x85\x73\x98\xB9\x7E\xD1\xC0\xAD\xF8\x4D\x72\x04\x4F\x1D\xAD\x82\x5F\x86\xDD\x89\x17\x73\x38\xF8\x25\x34\xBA\x57\x24\xF8\xF3\xE3\x50\xAE\x41\xD9\x91\xF8\xAC\x8E\xC4\x87\xF6\x58\xD2\x1C\x31\x9B\xC9\x0E\x28\x56\xC9\x5F\x09\x43\x73\xA0\x79\x13\x58\xF2\x5E\x25\x89\x8F\x17\x58\x9E\xB3\x5E\x30\x6C\x8A\xAB\x81\x43\x27\x6C\x53\x82\x08\x19\xB9\xC0\xFB\xDA\xF4\xDD\xBD\x55\x66\x8D\x71\xFF\x67\x40\x4E\x53\xB3\x70\x22\x7B\x80\x20\x8C\x92\x3F\x0F\x73\xAB\xF1\xE4\x5A\xA2\x57\x3D\xDF\xDE\x39\xD0\xE5\x47\x1C\x41\xDA\x7A\x95\x0C\x5E\xE4\xA3\x84\x34\x6E\x3E\xA4\x9A\xFD\x22\x46\xA9\x79\x65\x69\x19\x6A\xCE\x8A\xE9\x58\x94\x4A\xE1\xD9\x71\x02\xD9\x8F\x46\xA6\x5C\x59\x48\x1F\x63\x97\x1F\xAF\xFC\x11\xF0\x08\x02\x11\x02\xFF\x70\xA4\xE7\x3A\xB9\x5C\xF1\x70\xCA\x58\xF3\x1A\x00\x14\xFA\x7C\xBF\x7E\x1B\xDE\x7E\xD6\x4F\x58\x40\xFB\x8F\xEA\xDC\x8B\xEC\xE2\x2A\xDD\x39\x97\x04\xBE\x3D\x8E\x0C\xAD\x9B\x48\xEF\x92\x5F\x76\xE3\x0C\x0D\x40\x20\x08\x4A\x46\xE7\x65\x38\xF1\xB4\x43\xE6\x99\x06\x5D\xD5\x4D\x7B\xDF\xD6\x46\x7A\x92\x55\x56\x08\xE4\x5F\x08\xD8\xC5\x94\xA6\x5E\xFE\x3B\xEC\xA3\xE8\x54\x90\x2B\xF7\xF3\x37\x25\x90\x26\x0A\x1C\x78\xE6\xE5\x8D\xFF\x53\x96\x4B\xBB\xE4\xDE\x46\x05\x68\x7C\xBF\x05\x19\xD4\xD2\xC6\x8E\xAE\xE9\x45\x31\x60\xF8\x4C\xD1\x9A\xF1\xCA\x6E\x6E\x61\x33\xD0\x57\x15\x0E\x15\x6A\x14\x06\x1D\xCE\x65\xCA\x45\x71\xA7\xBB\x7A\xDE\xCE\xF6\xEA\x62\xA6\xFA\x54\xC1\xAE\xB4\x77\x26\x07\xC0\x10\x30\xB1\xCC\x24\xBF\xE8\x45\xC2\xA9\xD3\x4B\x66\xA1\xE3\xF0\x57\xB0\xFE"),
+ new TestVector(0x1000000, "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmno")
);
ConstArray<ConstArray<byte>> TEST_RESULT = new ConstArray<ConstArray<byte>>(
- new ConstArray<byte>(0x86, 0x03, 0x84, 0x37, 0xA0, 0x03, 0x00, 0x40, 0xC1, 0xC9, 0xC1, 0x6B, 0x9D, 0xE2, 0x8D, 0x82, 0x1D, 0x94, 0x59, 0x3C, 0xB7, 0xDD, 0xA8, 0xB1, 0x56, 0xFF, 0x9A, 0xE3, 0x34, 0x26, 0x4C, 0x2E, 0x88, 0x35, 0xB6, 0x00, 0x2D, 0x96, 0x65, 0x7A, 0x37, 0x30, 0x41, 0x9F, 0x5E, 0x43, 0xF2, 0x02),
- new ConstArray<byte>(0x11, 0x53, 0x49, 0x9D, 0xA6, 0xB3, 0x58, 0x7A, 0xC0, 0xA8, 0x8A, 0x80, 0x32, 0xE8, 0xCE, 0x16, 0x2F, 0x42, 0xA1, 0x1A, 0x62, 0x5F, 0xFB, 0x11, 0x91, 0x69, 0x27, 0xE4, 0xEC, 0x76, 0x62, 0xA0, 0x8F, 0x55, 0x52, 0x5F, 0x48, 0xEA, 0x03, 0x63, 0x93, 0x56, 0x86, 0xEA, 0x69, 0x02, 0x07, 0xD3),
- new ConstArray<byte>(0xA4, 0x6A, 0x55, 0x8A, 0xD1, 0x9A, 0xAE, 0xFA, 0x44, 0x6F, 0x33, 0xFC, 0x6D, 0xE1, 0x3C, 0xFE, 0x2D, 0x21, 0x34, 0x51, 0x0A, 0xDE, 0xBB, 0x65, 0xFD, 0x16, 0x8E, 0xFF, 0xB9, 0xCD, 0xFC, 0xF7, 0x35, 0x9A, 0x44, 0x88, 0x25, 0xA0, 0xC8, 0x8D, 0x5F, 0xF2, 0xF2, 0x3F, 0x4F, 0xE8, 0xFA, 0xFB),
- new ConstArray<byte>(0x64, 0x13, 0xDA, 0x65, 0x91, 0x94, 0xFE, 0xED, 0x3B, 0x5C, 0x16, 0xC8, 0x97, 0xBA, 0xAA, 0x25, 0xD1, 0xF3, 0x6E, 0x0B, 0x72, 0xF1, 0x8E, 0x45, 0xB9, 0xF4, 0xB3, 0xF6, 0xB9, 0xF7, 0xF8, 0xD5, 0xEC, 0x9C, 0x16, 0x9E, 0x85, 0x5D, 0x8B, 0xD1, 0xEF, 0x4B, 0x5C, 0x9C, 0xF8, 0x82, 0x22, 0x4D),
- new ConstArray<byte>(0xA5, 0x21, 0x92, 0x02, 0xF3, 0x73, 0x23, 0x61, 0x24, 0x70, 0xD5, 0x95, 0x95, 0x54, 0x17, 0xD8, 0x2C, 0xFE, 0x15, 0xBA, 0x81, 0xAC, 0xDB, 0xA5, 0x14, 0x1D, 0xED, 0x04, 0x07, 0xBF, 0x27, 0x12, 0xF4, 0x3E, 0x0E, 0xD1, 0x05, 0x1D, 0x79, 0xD2, 0x5B, 0x2D, 0xCE, 0x83, 0xE9, 0xD6, 0x16, 0xB3),
- new ConstArray<byte>(0xC8, 0x14, 0x7F, 0x57, 0x3E, 0x02, 0xC2, 0x73, 0x08, 0x7E, 0x01, 0x1C, 0xB1, 0x58, 0xB5, 0xF3, 0xD9, 0xE8, 0xCB, 0x9C, 0x74, 0x79, 0x79, 0x18, 0x7E, 0x3A, 0xFB, 0x6A, 0xAB, 0x9F, 0x9C, 0xE9, 0x56, 0x07, 0xA6, 0x27, 0xA2, 0x5C, 0x88, 0x99, 0x11, 0xAB, 0xFA, 0x1D, 0x20, 0x25, 0xFD, 0x07),
- new ConstArray<byte>(0x0F, 0xE9, 0x8E, 0xB3, 0x4A, 0xB7, 0xBD, 0x2F, 0xB1, 0xE2, 0x79, 0xE3, 0xB9, 0x9E, 0xCD, 0x36, 0x72, 0xCD, 0x0A, 0xB6, 0x3F, 0x6C, 0x5B, 0x74, 0xEA, 0xB8, 0x8E, 0x07, 0xE6, 0x4C, 0xA6, 0x27, 0xF7, 0xDC, 0xE7, 0x22, 0xE0, 0xD9, 0xB6, 0x60, 0x1B, 0x6B, 0x5E, 0x03, 0x43, 0xD1, 0x30, 0x4A),
- new ConstArray<byte>(0xC3, 0xA0, 0x56, 0x86, 0xC7, 0x5B, 0x02, 0xB4, 0x42, 0x38, 0x14, 0xBC, 0x05, 0x1A, 0x11, 0x54, 0x62, 0x15, 0x35, 0xA8, 0x8B, 0xE1, 0xD3, 0x00, 0x31, 0x97, 0x1C, 0x8B, 0xA4, 0xF5, 0x5E, 0x4E, 0xEF, 0x94, 0x10, 0x57, 0xAD, 0x9C, 0x7E, 0x63, 0x2C, 0xAA, 0xA3, 0xE0, 0x17, 0xBC, 0xFE, 0x97),
- new ConstArray<byte>(0x68, 0xC5, 0x2F, 0xC2, 0x33, 0x20, 0x0E, 0xCD, 0x43, 0xA1, 0x93, 0xC1, 0xFD, 0x27, 0x65, 0x1F, 0x0F, 0x70, 0x89, 0x06, 0x3B, 0x4A, 0x07, 0x4C, 0x1A, 0x5C, 0x24, 0x0A, 0x66, 0xBA, 0x78, 0xF3, 0xE6, 0x9F, 0x5A, 0x9E, 0x59, 0x72, 0x17, 0x4F, 0x52, 0x17, 0x28, 0x61, 0xB1, 0x0A, 0x29, 0x35),
- new ConstArray<byte>(0x38, 0x13, 0x5B, 0x1F, 0x4C, 0x5A, 0x2B, 0xEA, 0xC0, 0xE5, 0xF7, 0x11, 0x80, 0xA7, 0xF7, 0xFA, 0x03, 0xC7, 0xE6, 0xF7, 0xF1, 0x41, 0xB4, 0x3A, 0x15, 0xDA, 0x26, 0x10, 0x56, 0xD9, 0xBB, 0x7B, 0x2A, 0xD6, 0xBA, 0x1B, 0x05, 0xDD, 0x38, 0x88, 0xE6, 0x4B, 0xA8, 0xB0, 0x99, 0xF5, 0x57, 0x68),
- new ConstArray<byte>(0x33, 0x65, 0x81, 0x1C, 0x97, 0x0B, 0xB9, 0x55, 0x53, 0x00, 0xDA, 0x42, 0x6B, 0x37, 0x20, 0xFA, 0x69, 0x5C, 0xC4, 0xB7, 0xE7, 0x3C, 0xC9, 0x5A, 0x37, 0x35, 0xB1, 0x09, 0x9A, 0xC4, 0x26, 0x3B, 0x74, 0xFA, 0x51, 0xB5, 0x19, 0xD3, 0x8F, 0xED, 0x03, 0x94, 0xA1, 0x3C, 0x1F, 0xD2, 0x46, 0xE1)
+ new ConstArray<byte>(0x86,0x03,0x84,0x37,0xA0,0x03,0x00,0x40,0xC1,0xC9,0xC1,0x6B,0x9D,0xE2,0x8D,0x82,0x1D,0x94,0x59,0x3C,0xB7,0xDD,0xA8,0xB1,0x56,0xFF,0x9A,0xE3,0x34,0x26,0x4C,0x2E,0x88,0x35,0xB6,0x00,0x2D,0x96,0x65,0x7A,0x37,0x30,0x41,0x9F,0x5E,0x43,0xF2,0x02),
+ new ConstArray<byte>(0x11,0x53,0x49,0x9D,0xA6,0xB3,0x58,0x7A,0xC0,0xA8,0x8A,0x80,0x32,0xE8,0xCE,0x16,0x2F,0x42,0xA1,0x1A,0x62,0x5F,0xFB,0x11,0x91,0x69,0x27,0xE4,0xEC,0x76,0x62,0xA0,0x8F,0x55,0x52,0x5F,0x48,0xEA,0x03,0x63,0x93,0x56,0x86,0xEA,0x69,0x02,0x07,0xD3),
+ new ConstArray<byte>(0xA4,0x6A,0x55,0x8A,0xD1,0x9A,0xAE,0xFA,0x44,0x6F,0x33,0xFC,0x6D,0xE1,0x3C,0xFE,0x2D,0x21,0x34,0x51,0x0A,0xDE,0xBB,0x65,0xFD,0x16,0x8E,0xFF,0xB9,0xCD,0xFC,0xF7,0x35,0x9A,0x44,0x88,0x25,0xA0,0xC8,0x8D,0x5F,0xF2,0xF2,0x3F,0x4F,0xE8,0xFA,0xFB),
+ new ConstArray<byte>(0x64,0x13,0xDA,0x65,0x91,0x94,0xFE,0xED,0x3B,0x5C,0x16,0xC8,0x97,0xBA,0xAA,0x25,0xD1,0xF3,0x6E,0x0B,0x72,0xF1,0x8E,0x45,0xB9,0xF4,0xB3,0xF6,0xB9,0xF7,0xF8,0xD5,0xEC,0x9C,0x16,0x9E,0x85,0x5D,0x8B,0xD1,0xEF,0x4B,0x5C,0x9C,0xF8,0x82,0x22,0x4D),
+ new ConstArray<byte>(0xA5,0x21,0x92,0x02,0xF3,0x73,0x23,0x61,0x24,0x70,0xD5,0x95,0x95,0x54,0x17,0xD8,0x2C,0xFE,0x15,0xBA,0x81,0xAC,0xDB,0xA5,0x14,0x1D,0xED,0x04,0x07,0xBF,0x27,0x12,0xF4,0x3E,0x0E,0xD1,0x05,0x1D,0x79,0xD2,0x5B,0x2D,0xCE,0x83,0xE9,0xD6,0x16,0xB3),
+ new ConstArray<byte>(0xC8,0x14,0x7F,0x57,0x3E,0x02,0xC2,0x73,0x08,0x7E,0x01,0x1C,0xB1,0x58,0xB5,0xF3,0xD9,0xE8,0xCB,0x9C,0x74,0x79,0x79,0x18,0x7E,0x3A,0xFB,0x6A,0xAB,0x9F,0x9C,0xE9,0x56,0x07,0xA6,0x27,0xA2,0x5C,0x88,0x99,0x11,0xAB,0xFA,0x1D,0x20,0x25,0xFD,0x07),
+ new ConstArray<byte>(0x0F,0xE9,0x8E,0xB3,0x4A,0xB7,0xBD,0x2F,0xB1,0xE2,0x79,0xE3,0xB9,0x9E,0xCD,0x36,0x72,0xCD,0x0A,0xB6,0x3F,0x6C,0x5B,0x74,0xEA,0xB8,0x8E,0x07,0xE6,0x4C,0xA6,0x27,0xF7,0xDC,0xE7,0x22,0xE0,0xD9,0xB6,0x60,0x1B,0x6B,0x5E,0x03,0x43,0xD1,0x30,0x4A),
+ new ConstArray<byte>(0xC3,0xA0,0x56,0x86,0xC7,0x5B,0x02,0xB4,0x42,0x38,0x14,0xBC,0x05,0x1A,0x11,0x54,0x62,0x15,0x35,0xA8,0x8B,0xE1,0xD3,0x00,0x31,0x97,0x1C,0x8B,0xA4,0xF5,0x5E,0x4E,0xEF,0x94,0x10,0x57,0xAD,0x9C,0x7E,0x63,0x2C,0xAA,0xA3,0xE0,0x17,0xBC,0xFE,0x97),
+ new ConstArray<byte>(0x68,0xC5,0x2F,0xC2,0x33,0x20,0x0E,0xCD,0x43,0xA1,0x93,0xC1,0xFD,0x27,0x65,0x1F,0x0F,0x70,0x89,0x06,0x3B,0x4A,0x07,0x4C,0x1A,0x5C,0x24,0x0A,0x66,0xBA,0x78,0xF3,0xE6,0x9F,0x5A,0x9E,0x59,0x72,0x17,0x4F,0x52,0x17,0x28,0x61,0xB1,0x0A,0x29,0x35),
+ new ConstArray<byte>(0x38,0x13,0x5B,0x1F,0x4C,0x5A,0x2B,0xEA,0xC0,0xE5,0xF7,0x11,0x80,0xA7,0xF7,0xFA,0x03,0xC7,0xE6,0xF7,0xF1,0x41,0xB4,0x3A,0x15,0xDA,0x26,0x10,0x56,0xD9,0xBB,0x7B,0x2A,0xD6,0xBA,0x1B,0x05,0xDD,0x38,0x88,0xE6,0x4B,0xA8,0xB0,0x99,0xF5,0x57,0x68),
+ new ConstArray<byte>(0x33,0x65,0x81,0x1C,0x97,0x0B,0xB9,0x55,0x53,0x00,0xDA,0x42,0x6B,0x37,0x20,0xFA,0x69,0x5C,0xC4,0xB7,0xE7,0x3C,0xC9,0x5A,0x37,0x35,0xB1,0x09,0x9A,0xC4,0x26,0x3B,0x74,0xFA,0x51,0xB5,0x19,0xD3,0x8F,0xED,0x03,0x94,0xA1,0x3C,0x1F,0xD2,0x46,0xE1)
);
for (int i = 0; i < TEST_VECTOR.Length; ++i)