Thu, 22 Jan 2015 13:21:57 +0100
Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6
michael@0 | 1 | /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
michael@0 | 2 | /* This Source Code Form is subject to the terms of the Mozilla Public |
michael@0 | 3 | * License, v. 2.0. If a copy of the MPL was not distributed with this |
michael@0 | 4 | * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
michael@0 | 5 | |
michael@0 | 6 | #include "plbase64.h" |
michael@0 | 7 | #include "plstr.h" |
michael@0 | 8 | #include "nspr.h" |
michael@0 | 9 | |
michael@0 | 10 | #include <stdio.h> |
michael@0 | 11 | |
michael@0 | 12 | static unsigned char *base = (unsigned char *)"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; |
michael@0 | 13 | |
michael@0 | 14 | /* PL_Base64Encode, single characters */ |
michael@0 | 15 | PRBool test_001(void) |
michael@0 | 16 | { |
michael@0 | 17 | PRUint32 a, b; |
michael@0 | 18 | unsigned char plain[ 4 ]; |
michael@0 | 19 | unsigned char cypher[ 5 ]; |
michael@0 | 20 | char result[ 8 ]; |
michael@0 | 21 | char *rv; |
michael@0 | 22 | |
michael@0 | 23 | printf("Test 001 (PL_Base64Encode, single characters) ..."); fflush(stdout); |
michael@0 | 24 | |
michael@0 | 25 | plain[1] = plain[2] = plain[3] = (unsigned char)0; |
michael@0 | 26 | cypher[2] = cypher[3] = (unsigned char)'='; |
michael@0 | 27 | cypher[4] = (unsigned char)0; |
michael@0 | 28 | |
michael@0 | 29 | for( a = 0; a < 64; a++ ) |
michael@0 | 30 | { |
michael@0 | 31 | cypher[0] = base[a]; |
michael@0 | 32 | |
michael@0 | 33 | for( b = 0; b < 4; b++ ) |
michael@0 | 34 | { |
michael@0 | 35 | plain[0] = (unsigned char)(a * 4 + b); |
michael@0 | 36 | cypher[1] = base[(b * 16)]; |
michael@0 | 37 | |
michael@0 | 38 | rv = PL_Base64Encode((char *)plain, 1, result); |
michael@0 | 39 | if( rv != result ) |
michael@0 | 40 | { |
michael@0 | 41 | printf("FAIL\n\t(%d, %d): return value\n", a, b); |
michael@0 | 42 | return PR_FALSE; |
michael@0 | 43 | } |
michael@0 | 44 | |
michael@0 | 45 | if( 0 != PL_strncmp((char *)cypher, result, 4) ) |
michael@0 | 46 | { |
michael@0 | 47 | printf("FAIL\n\t(%d, %d): expected \"%s,\" got \"%.4s.\"\n", |
michael@0 | 48 | a, b, cypher, result); |
michael@0 | 49 | return PR_FALSE; |
michael@0 | 50 | } |
michael@0 | 51 | } |
michael@0 | 52 | } |
michael@0 | 53 | |
michael@0 | 54 | printf("PASS\n"); |
michael@0 | 55 | return PR_TRUE; |
michael@0 | 56 | } |
michael@0 | 57 | |
michael@0 | 58 | /* PL_Base64Encode, double characters */ |
michael@0 | 59 | PRBool test_002(void) |
michael@0 | 60 | { |
michael@0 | 61 | PRUint32 a, b, c, d; |
michael@0 | 62 | unsigned char plain[ 4 ]; |
michael@0 | 63 | unsigned char cypher[ 5 ]; |
michael@0 | 64 | char result[ 8 ]; |
michael@0 | 65 | char *rv; |
michael@0 | 66 | |
michael@0 | 67 | printf("Test 002 (PL_Base64Encode, double characters) ..."); fflush(stdout); |
michael@0 | 68 | |
michael@0 | 69 | plain[2] = plain[3] = (unsigned char)0; |
michael@0 | 70 | cypher[3] = (unsigned char)'='; |
michael@0 | 71 | cypher[4] = (unsigned char)0; |
michael@0 | 72 | |
michael@0 | 73 | for( a = 0; a < 64; a++ ) |
michael@0 | 74 | { |
michael@0 | 75 | cypher[0] = base[a]; |
michael@0 | 76 | for( b = 0; b < 4; b++ ) |
michael@0 | 77 | { |
michael@0 | 78 | plain[0] = (a*4) + b; |
michael@0 | 79 | for( c = 0; c < 16; c++ ) |
michael@0 | 80 | { |
michael@0 | 81 | cypher[1] = base[b*16 + c]; |
michael@0 | 82 | for( d = 0; d < 16; d++ ) |
michael@0 | 83 | { |
michael@0 | 84 | plain[1] = c*16 + d; |
michael@0 | 85 | cypher[2] = base[d*4]; |
michael@0 | 86 | |
michael@0 | 87 | rv = PL_Base64Encode((char *)plain, 2, result); |
michael@0 | 88 | if( rv != result ) |
michael@0 | 89 | { |
michael@0 | 90 | printf("FAIL\n\t(%d, %d, %d, %d): return value\n", a, b, c, d); |
michael@0 | 91 | return PR_FALSE; |
michael@0 | 92 | } |
michael@0 | 93 | |
michael@0 | 94 | if( 0 != PL_strncmp((char *)cypher, result, 4) ) |
michael@0 | 95 | { |
michael@0 | 96 | printf("FAIL\n\t(%d, %d, %d, %d): expected \"%s,\" got \"%.4s.\"\n", |
michael@0 | 97 | a, b, c, d, cypher, result); |
michael@0 | 98 | return PR_FALSE; |
michael@0 | 99 | } |
michael@0 | 100 | } |
michael@0 | 101 | } |
michael@0 | 102 | } |
michael@0 | 103 | } |
michael@0 | 104 | |
michael@0 | 105 | printf("PASS\n"); |
michael@0 | 106 | return PR_TRUE; |
michael@0 | 107 | } |
michael@0 | 108 | |
michael@0 | 109 | /* PL_Base64Encode, triple characters */ |
michael@0 | 110 | PRBool test_003(void) |
michael@0 | 111 | { |
michael@0 | 112 | PRUint32 a, b, c, d, e, f; |
michael@0 | 113 | unsigned char plain[ 4 ]; |
michael@0 | 114 | unsigned char cypher[ 5 ]; |
michael@0 | 115 | char result[ 8 ]; |
michael@0 | 116 | char *rv; |
michael@0 | 117 | |
michael@0 | 118 | printf("Test 003 (PL_Base64Encode, triple characters) ..."); fflush(stdout); |
michael@0 | 119 | |
michael@0 | 120 | cypher[4] = (unsigned char)0; |
michael@0 | 121 | |
michael@0 | 122 | for( a = 0; a < 64; a++ ) |
michael@0 | 123 | { |
michael@0 | 124 | cypher[0] = base[a]; |
michael@0 | 125 | for( b = 0; b < 4; b++ ) |
michael@0 | 126 | { |
michael@0 | 127 | plain[0] = (a*4) + b; |
michael@0 | 128 | for( c = 0; c < 16; c++ ) |
michael@0 | 129 | { |
michael@0 | 130 | cypher[1] = base[b*16 + c]; |
michael@0 | 131 | for( d = 0; d < 16; d++ ) |
michael@0 | 132 | { |
michael@0 | 133 | plain[1] = c*16 + d; |
michael@0 | 134 | for( e = 0; e < 4; e++ ) |
michael@0 | 135 | { |
michael@0 | 136 | cypher[2] = base[d*4 + e]; |
michael@0 | 137 | for( f = 0; f < 64; f++ ) |
michael@0 | 138 | { |
michael@0 | 139 | plain[2] = e * 64 + f; |
michael@0 | 140 | cypher[3] = base[f]; |
michael@0 | 141 | |
michael@0 | 142 | rv = PL_Base64Encode((char *)plain, 3, result); |
michael@0 | 143 | if( rv != result ) |
michael@0 | 144 | { |
michael@0 | 145 | printf("FAIL\n\t(%d, %d, %d, %d, %d, %d): return value\n", a, b, c, d, e, f); |
michael@0 | 146 | return PR_FALSE; |
michael@0 | 147 | } |
michael@0 | 148 | |
michael@0 | 149 | if( 0 != PL_strncmp((char *)cypher, result, 4) ) |
michael@0 | 150 | { |
michael@0 | 151 | printf("FAIL\n\t(%d, %d, %d, %d, %d, %d): expected \"%s,\" got \"%.4s.\"\n", |
michael@0 | 152 | a, b, c, d, e, f, cypher, result); |
michael@0 | 153 | return PR_FALSE; |
michael@0 | 154 | } |
michael@0 | 155 | } |
michael@0 | 156 | } |
michael@0 | 157 | } |
michael@0 | 158 | } |
michael@0 | 159 | } |
michael@0 | 160 | } |
michael@0 | 161 | |
michael@0 | 162 | printf("PASS\n"); |
michael@0 | 163 | return PR_TRUE; |
michael@0 | 164 | } |
michael@0 | 165 | |
michael@0 | 166 | static struct |
michael@0 | 167 | { |
michael@0 | 168 | const char *plaintext; |
michael@0 | 169 | const char *cyphertext; |
michael@0 | 170 | } array[] = |
michael@0 | 171 | { |
michael@0 | 172 | /* Cyphertexts generated with uuenview 0.5.13 */ |
michael@0 | 173 | { " ", "IA==" }, |
michael@0 | 174 | { ".", "Lg==" }, |
michael@0 | 175 | { "/", "Lw==" }, |
michael@0 | 176 | { "C", "Qw==" }, |
michael@0 | 177 | { "H", "SA==" }, |
michael@0 | 178 | { "S", "Uw==" }, |
michael@0 | 179 | { "^", "Xg==" }, |
michael@0 | 180 | { "a", "YQ==" }, |
michael@0 | 181 | { "o", "bw==" }, |
michael@0 | 182 | { "t", "dA==" }, |
michael@0 | 183 | |
michael@0 | 184 | { "AB", "QUI=" }, |
michael@0 | 185 | { "AH", "QUg=" }, |
michael@0 | 186 | { "AQ", "QVE=" }, |
michael@0 | 187 | { "BD", "QkQ=" }, |
michael@0 | 188 | { "CR", "Q1I=" }, |
michael@0 | 189 | { "CS", "Q1M=" }, |
michael@0 | 190 | { "DB", "REI=" }, |
michael@0 | 191 | { "DC", "REM=" }, |
michael@0 | 192 | { "EK", "RUs=" }, |
michael@0 | 193 | { "ET", "RVQ=" }, |
michael@0 | 194 | { "IM", "SU0=" }, |
michael@0 | 195 | { "JR", "SlI=" }, |
michael@0 | 196 | { "LO", "TE8=" }, |
michael@0 | 197 | { "LW", "TFc=" }, |
michael@0 | 198 | { "ML", "TUw=" }, |
michael@0 | 199 | { "SB", "U0I=" }, |
michael@0 | 200 | { "TO", "VE8=" }, |
michael@0 | 201 | { "VS", "VlM=" }, |
michael@0 | 202 | { "WP", "V1A=" }, |
michael@0 | 203 | /* legitimate two-letter words */ |
michael@0 | 204 | { "ad", "YWQ=" }, |
michael@0 | 205 | { "ah", "YWg=" }, |
michael@0 | 206 | { "am", "YW0=" }, |
michael@0 | 207 | { "an", "YW4=" }, |
michael@0 | 208 | { "as", "YXM=" }, |
michael@0 | 209 | { "at", "YXQ=" }, |
michael@0 | 210 | { "ax", "YXg=" }, |
michael@0 | 211 | { "be", "YmU=" }, |
michael@0 | 212 | { "by", "Ynk=" }, |
michael@0 | 213 | { "do", "ZG8=" }, |
michael@0 | 214 | { "go", "Z28=" }, |
michael@0 | 215 | { "he", "aGU=" }, |
michael@0 | 216 | { "hi", "aGk=" }, |
michael@0 | 217 | { "if", "aWY=" }, |
michael@0 | 218 | { "in", "aW4=" }, |
michael@0 | 219 | { "is", "aXM=" }, |
michael@0 | 220 | { "it", "aXQ=" }, |
michael@0 | 221 | { "me", "bWU=" }, |
michael@0 | 222 | { "my", "bXk=" }, |
michael@0 | 223 | { "no", "bm8=" }, |
michael@0 | 224 | { "of", "b2Y=" }, |
michael@0 | 225 | { "on", "b24=" }, |
michael@0 | 226 | { "or", "b3I=" }, |
michael@0 | 227 | { "ox", "b3g=" }, |
michael@0 | 228 | { "so", "c28=" }, |
michael@0 | 229 | { "to", "dG8=" }, |
michael@0 | 230 | { "up", "dXA=" }, |
michael@0 | 231 | { "us", "dXM=" }, |
michael@0 | 232 | { "we", "d2U=" }, |
michael@0 | 233 | /* all three-letter entries in /usr/dict/words */ |
michael@0 | 234 | { "1st", "MXN0" }, |
michael@0 | 235 | { "2nd", "Mm5k" }, |
michael@0 | 236 | { "3rd", "M3Jk" }, |
michael@0 | 237 | { "4th", "NHRo" }, |
michael@0 | 238 | { "5th", "NXRo" }, |
michael@0 | 239 | { "6th", "NnRo" }, |
michael@0 | 240 | { "7th", "N3Ro" }, |
michael@0 | 241 | { "8th", "OHRo" }, |
michael@0 | 242 | { "9th", "OXRo" }, |
michael@0 | 243 | { "AAA", "QUFB" }, |
michael@0 | 244 | { "AAU", "QUFV" }, |
michael@0 | 245 | { "ABA", "QUJB" }, |
michael@0 | 246 | { "abc", "YWJj" }, |
michael@0 | 247 | { "Abe", "QWJl" }, |
michael@0 | 248 | { "Abo", "QWJv" }, |
michael@0 | 249 | { "ace", "YWNl" }, |
michael@0 | 250 | { "ACM", "QUNN" }, |
michael@0 | 251 | { "ACS", "QUNT" }, |
michael@0 | 252 | { "act", "YWN0" }, |
michael@0 | 253 | { "Ada", "QWRh" }, |
michael@0 | 254 | { "add", "YWRk" }, |
michael@0 | 255 | { "ado", "YWRv" }, |
michael@0 | 256 | { "aft", "YWZ0" }, |
michael@0 | 257 | { "age", "YWdl" }, |
michael@0 | 258 | { "ago", "YWdv" }, |
michael@0 | 259 | { "aid", "YWlk" }, |
michael@0 | 260 | { "ail", "YWls" }, |
michael@0 | 261 | { "aim", "YWlt" }, |
michael@0 | 262 | { "air", "YWly" }, |
michael@0 | 263 | { "ala", "YWxh" }, |
michael@0 | 264 | { "alb", "YWxi" }, |
michael@0 | 265 | { "ale", "YWxl" }, |
michael@0 | 266 | { "Ali", "QWxp" }, |
michael@0 | 267 | { "all", "YWxs" }, |
michael@0 | 268 | { "alp", "YWxw" }, |
michael@0 | 269 | { "A&M", "QSZN" }, |
michael@0 | 270 | { "AMA", "QU1B" }, |
michael@0 | 271 | { "ami", "YW1p" }, |
michael@0 | 272 | { "amp", "YW1w" }, |
michael@0 | 273 | { "Amy", "QW15" }, |
michael@0 | 274 | { "amy", "YW15" }, |
michael@0 | 275 | { "ana", "YW5h" }, |
michael@0 | 276 | { "and", "YW5k" }, |
michael@0 | 277 | { "ani", "YW5p" }, |
michael@0 | 278 | { "Ann", "QW5u" }, |
michael@0 | 279 | { "ant", "YW50" }, |
michael@0 | 280 | { "any", "YW55" }, |
michael@0 | 281 | { "A&P", "QSZQ" }, |
michael@0 | 282 | { "ape", "YXBl" }, |
michael@0 | 283 | { "Apr", "QXBy" }, |
michael@0 | 284 | { "APS", "QVBT" }, |
michael@0 | 285 | { "apt", "YXB0" }, |
michael@0 | 286 | { "arc", "YXJj" }, |
michael@0 | 287 | { "are", "YXJl" }, |
michael@0 | 288 | { "ark", "YXJr" }, |
michael@0 | 289 | { "arm", "YXJt" }, |
michael@0 | 290 | { "art", "YXJ0" }, |
michael@0 | 291 | { "a's", "YSdz" }, |
michael@0 | 292 | { "ash", "YXNo" }, |
michael@0 | 293 | { "ask", "YXNr" }, |
michael@0 | 294 | { "ass", "YXNz" }, |
michael@0 | 295 | { "ate", "YXRl" }, |
michael@0 | 296 | { "Aug", "QXVn" }, |
michael@0 | 297 | { "auk", "YXVr" }, |
michael@0 | 298 | { "Ave", "QXZl" }, |
michael@0 | 299 | { "awe", "YXdl" }, |
michael@0 | 300 | { "awl", "YXds" }, |
michael@0 | 301 | { "awn", "YXdu" }, |
michael@0 | 302 | { "axe", "YXhl" }, |
michael@0 | 303 | { "aye", "YXll" }, |
michael@0 | 304 | { "bad", "YmFk" }, |
michael@0 | 305 | { "bag", "YmFn" }, |
michael@0 | 306 | { "bah", "YmFo" }, |
michael@0 | 307 | { "bam", "YmFt" }, |
michael@0 | 308 | { "ban", "YmFu" }, |
michael@0 | 309 | { "bar", "YmFy" }, |
michael@0 | 310 | { "bat", "YmF0" }, |
michael@0 | 311 | { "bay", "YmF5" }, |
michael@0 | 312 | { "bed", "YmVk" }, |
michael@0 | 313 | { "bee", "YmVl" }, |
michael@0 | 314 | { "beg", "YmVn" }, |
michael@0 | 315 | { "bel", "YmVs" }, |
michael@0 | 316 | { "Ben", "QmVu" }, |
michael@0 | 317 | { "bet", "YmV0" }, |
michael@0 | 318 | { "bey", "YmV5" }, |
michael@0 | 319 | { "bib", "Ymli" }, |
michael@0 | 320 | { "bid", "Ymlk" }, |
michael@0 | 321 | { "big", "Ymln" }, |
michael@0 | 322 | { "bin", "Ymlu" }, |
michael@0 | 323 | { "bit", "Yml0" }, |
michael@0 | 324 | { "biz", "Yml6" }, |
michael@0 | 325 | { "BMW", "Qk1X" }, |
michael@0 | 326 | { "boa", "Ym9h" }, |
michael@0 | 327 | { "bob", "Ym9i" }, |
michael@0 | 328 | { "bog", "Ym9n" }, |
michael@0 | 329 | { "bon", "Ym9u" }, |
michael@0 | 330 | { "boo", "Ym9v" }, |
michael@0 | 331 | { "bop", "Ym9w" }, |
michael@0 | 332 | { "bow", "Ym93" }, |
michael@0 | 333 | { "box", "Ym94" }, |
michael@0 | 334 | { "boy", "Ym95" }, |
michael@0 | 335 | { "b's", "Yidz" }, |
michael@0 | 336 | { "BTL", "QlRM" }, |
michael@0 | 337 | { "BTU", "QlRV" }, |
michael@0 | 338 | { "bub", "YnVi" }, |
michael@0 | 339 | { "bud", "YnVk" }, |
michael@0 | 340 | { "bug", "YnVn" }, |
michael@0 | 341 | { "bum", "YnVt" }, |
michael@0 | 342 | { "bun", "YnVu" }, |
michael@0 | 343 | { "bus", "YnVz" }, |
michael@0 | 344 | { "but", "YnV0" }, |
michael@0 | 345 | { "buy", "YnV5" }, |
michael@0 | 346 | { "bye", "Ynll" }, |
michael@0 | 347 | { "cab", "Y2Fi" }, |
michael@0 | 348 | { "Cal", "Q2Fs" }, |
michael@0 | 349 | { "cam", "Y2Ft" }, |
michael@0 | 350 | { "can", "Y2Fu" }, |
michael@0 | 351 | { "cap", "Y2Fw" }, |
michael@0 | 352 | { "car", "Y2Fy" }, |
michael@0 | 353 | { "cat", "Y2F0" }, |
michael@0 | 354 | { "caw", "Y2F3" }, |
michael@0 | 355 | { "CBS", "Q0JT" }, |
michael@0 | 356 | { "CDC", "Q0RD" }, |
michael@0 | 357 | { "CEQ", "Q0VR" }, |
michael@0 | 358 | { "chi", "Y2hp" }, |
michael@0 | 359 | { "CIA", "Q0lB" }, |
michael@0 | 360 | { "cit", "Y2l0" }, |
michael@0 | 361 | { "cod", "Y29k" }, |
michael@0 | 362 | { "cog", "Y29n" }, |
michael@0 | 363 | { "col", "Y29s" }, |
michael@0 | 364 | { "con", "Y29u" }, |
michael@0 | 365 | { "coo", "Y29v" }, |
michael@0 | 366 | { "cop", "Y29w" }, |
michael@0 | 367 | { "cos", "Y29z" }, |
michael@0 | 368 | { "cot", "Y290" }, |
michael@0 | 369 | { "cow", "Y293" }, |
michael@0 | 370 | { "cox", "Y294" }, |
michael@0 | 371 | { "coy", "Y295" }, |
michael@0 | 372 | { "CPA", "Q1BB" }, |
michael@0 | 373 | { "cpu", "Y3B1" }, |
michael@0 | 374 | { "CRT", "Q1JU" }, |
michael@0 | 375 | { "cry", "Y3J5" }, |
michael@0 | 376 | { "c's", "Yydz" }, |
michael@0 | 377 | { "cub", "Y3Vi" }, |
michael@0 | 378 | { "cud", "Y3Vk" }, |
michael@0 | 379 | { "cue", "Y3Vl" }, |
michael@0 | 380 | { "cup", "Y3Vw" }, |
michael@0 | 381 | { "cur", "Y3Vy" }, |
michael@0 | 382 | { "cut", "Y3V0" }, |
michael@0 | 383 | { "dab", "ZGFi" }, |
michael@0 | 384 | { "dad", "ZGFk" }, |
michael@0 | 385 | { "dam", "ZGFt" }, |
michael@0 | 386 | { "Dan", "RGFu" }, |
michael@0 | 387 | { "Dar", "RGFy" }, |
michael@0 | 388 | { "day", "ZGF5" }, |
michael@0 | 389 | { "Dec", "RGVj" }, |
michael@0 | 390 | { "Dee", "RGVl" }, |
michael@0 | 391 | { "Del", "RGVs" }, |
michael@0 | 392 | { "den", "ZGVu" }, |
michael@0 | 393 | { "Des", "RGVz" }, |
michael@0 | 394 | { "dew", "ZGV3" }, |
michael@0 | 395 | { "dey", "ZGV5" }, |
michael@0 | 396 | { "did", "ZGlk" }, |
michael@0 | 397 | { "die", "ZGll" }, |
michael@0 | 398 | { "dig", "ZGln" }, |
michael@0 | 399 | { "dim", "ZGlt" }, |
michael@0 | 400 | { "din", "ZGlu" }, |
michael@0 | 401 | { "dip", "ZGlw" }, |
michael@0 | 402 | { "Dis", "RGlz" }, |
michael@0 | 403 | { "DNA", "RE5B" }, |
michael@0 | 404 | { "DOD", "RE9E" }, |
michael@0 | 405 | { "doe", "ZG9l" }, |
michael@0 | 406 | { "dog", "ZG9n" }, |
michael@0 | 407 | { "don", "ZG9u" }, |
michael@0 | 408 | { "dot", "ZG90" }, |
michael@0 | 409 | { "Dow", "RG93" }, |
michael@0 | 410 | { "dry", "ZHJ5" }, |
michael@0 | 411 | { "d's", "ZCdz" }, |
michael@0 | 412 | { "dub", "ZHVi" }, |
michael@0 | 413 | { "dud", "ZHVk" }, |
michael@0 | 414 | { "due", "ZHVl" }, |
michael@0 | 415 | { "dug", "ZHVn" }, |
michael@0 | 416 | { "dun", "ZHVu" }, |
michael@0 | 417 | { "dye", "ZHll" }, |
michael@0 | 418 | { "ear", "ZWFy" }, |
michael@0 | 419 | { "eat", "ZWF0" }, |
michael@0 | 420 | { "ebb", "ZWJi" }, |
michael@0 | 421 | { "EDT", "RURU" }, |
michael@0 | 422 | { "eel", "ZWVs" }, |
michael@0 | 423 | { "eft", "ZWZ0" }, |
michael@0 | 424 | { "e.g", "ZS5n" }, |
michael@0 | 425 | { "egg", "ZWdn" }, |
michael@0 | 426 | { "ego", "ZWdv" }, |
michael@0 | 427 | { "eke", "ZWtl" }, |
michael@0 | 428 | { "Eli", "RWxp" }, |
michael@0 | 429 | { "elk", "ZWxr" }, |
michael@0 | 430 | { "ell", "ZWxs" }, |
michael@0 | 431 | { "elm", "ZWxt" }, |
michael@0 | 432 | { "Ely", "RWx5" }, |
michael@0 | 433 | { "end", "ZW5k" }, |
michael@0 | 434 | { "Eng", "RW5n" }, |
michael@0 | 435 | { "EPA", "RVBB" }, |
michael@0 | 436 | { "era", "ZXJh" }, |
michael@0 | 437 | { "ere", "ZXJl" }, |
michael@0 | 438 | { "erg", "ZXJn" }, |
michael@0 | 439 | { "err", "ZXJy" }, |
michael@0 | 440 | { "e's", "ZSdz" }, |
michael@0 | 441 | { "EST", "RVNU" }, |
michael@0 | 442 | { "eta", "ZXRh" }, |
michael@0 | 443 | { "etc", "ZXRj" }, |
michael@0 | 444 | { "Eva", "RXZh" }, |
michael@0 | 445 | { "eve", "ZXZl" }, |
michael@0 | 446 | { "ewe", "ZXdl" }, |
michael@0 | 447 | { "eye", "ZXll" }, |
michael@0 | 448 | { "FAA", "RkFB" }, |
michael@0 | 449 | { "fad", "ZmFk" }, |
michael@0 | 450 | { "fag", "ZmFn" }, |
michael@0 | 451 | { "fan", "ZmFu" }, |
michael@0 | 452 | { "far", "ZmFy" }, |
michael@0 | 453 | { "fat", "ZmF0" }, |
michael@0 | 454 | { "fay", "ZmF5" }, |
michael@0 | 455 | { "FBI", "RkJJ" }, |
michael@0 | 456 | { "FCC", "RkND" }, |
michael@0 | 457 | { "FDA", "RkRB" }, |
michael@0 | 458 | { "Feb", "RmVi" }, |
michael@0 | 459 | { "fed", "ZmVk" }, |
michael@0 | 460 | { "fee", "ZmVl" }, |
michael@0 | 461 | { "few", "ZmV3" }, |
michael@0 | 462 | { "fib", "Zmli" }, |
michael@0 | 463 | { "fig", "Zmln" }, |
michael@0 | 464 | { "fin", "Zmlu" }, |
michael@0 | 465 | { "fir", "Zmly" }, |
michael@0 | 466 | { "fit", "Zml0" }, |
michael@0 | 467 | { "fix", "Zml4" }, |
michael@0 | 468 | { "Flo", "Rmxv" }, |
michael@0 | 469 | { "flu", "Zmx1" }, |
michael@0 | 470 | { "fly", "Zmx5" }, |
michael@0 | 471 | { "FMC", "Rk1D" }, |
michael@0 | 472 | { "fob", "Zm9i" }, |
michael@0 | 473 | { "foe", "Zm9l" }, |
michael@0 | 474 | { "fog", "Zm9n" }, |
michael@0 | 475 | { "fop", "Zm9w" }, |
michael@0 | 476 | { "for", "Zm9y" }, |
michael@0 | 477 | { "fox", "Zm94" }, |
michael@0 | 478 | { "FPC", "RlBD" }, |
michael@0 | 479 | { "fro", "ZnJv" }, |
michael@0 | 480 | { "fry", "ZnJ5" }, |
michael@0 | 481 | { "f's", "Zidz" }, |
michael@0 | 482 | { "FTC", "RlRD" }, |
michael@0 | 483 | { "fum", "ZnVt" }, |
michael@0 | 484 | { "fun", "ZnVu" }, |
michael@0 | 485 | { "fur", "ZnVy" }, |
michael@0 | 486 | { "gab", "Z2Fi" }, |
michael@0 | 487 | { "gad", "Z2Fk" }, |
michael@0 | 488 | { "gag", "Z2Fn" }, |
michael@0 | 489 | { "gal", "Z2Fs" }, |
michael@0 | 490 | { "gam", "Z2Ft" }, |
michael@0 | 491 | { "GAO", "R0FP" }, |
michael@0 | 492 | { "gap", "Z2Fw" }, |
michael@0 | 493 | { "gar", "Z2Fy" }, |
michael@0 | 494 | { "gas", "Z2Fz" }, |
michael@0 | 495 | { "gay", "Z2F5" }, |
michael@0 | 496 | { "gee", "Z2Vl" }, |
michael@0 | 497 | { "gel", "Z2Vs" }, |
michael@0 | 498 | { "gem", "Z2Vt" }, |
michael@0 | 499 | { "get", "Z2V0" }, |
michael@0 | 500 | { "gig", "Z2ln" }, |
michael@0 | 501 | { "Gil", "R2ls" }, |
michael@0 | 502 | { "gin", "Z2lu" }, |
michael@0 | 503 | { "GMT", "R01U" }, |
michael@0 | 504 | { "GNP", "R05Q" }, |
michael@0 | 505 | { "gnu", "Z251" }, |
michael@0 | 506 | { "Goa", "R29h" }, |
michael@0 | 507 | { "gob", "Z29i" }, |
michael@0 | 508 | { "god", "Z29k" }, |
michael@0 | 509 | { "gog", "Z29n" }, |
michael@0 | 510 | { "GOP", "R09Q" }, |
michael@0 | 511 | { "got", "Z290" }, |
michael@0 | 512 | { "GPO", "R1BP" }, |
michael@0 | 513 | { "g's", "Zydz" }, |
michael@0 | 514 | { "GSA", "R1NB" }, |
michael@0 | 515 | { "gum", "Z3Vt" }, |
michael@0 | 516 | { "gun", "Z3Vu" }, |
michael@0 | 517 | { "Gus", "R3Vz" }, |
michael@0 | 518 | { "gut", "Z3V0" }, |
michael@0 | 519 | { "guy", "Z3V5" }, |
michael@0 | 520 | { "gym", "Z3lt" }, |
michael@0 | 521 | { "gyp", "Z3lw" }, |
michael@0 | 522 | { "had", "aGFk" }, |
michael@0 | 523 | { "Hal", "SGFs" }, |
michael@0 | 524 | { "ham", "aGFt" }, |
michael@0 | 525 | { "Han", "SGFu" }, |
michael@0 | 526 | { "hap", "aGFw" }, |
michael@0 | 527 | { "hat", "aGF0" }, |
michael@0 | 528 | { "haw", "aGF3" }, |
michael@0 | 529 | { "hay", "aGF5" }, |
michael@0 | 530 | { "hem", "aGVt" }, |
michael@0 | 531 | { "hen", "aGVu" }, |
michael@0 | 532 | { "her", "aGVy" }, |
michael@0 | 533 | { "hew", "aGV3" }, |
michael@0 | 534 | { "hex", "aGV4" }, |
michael@0 | 535 | { "hey", "aGV5" }, |
michael@0 | 536 | { "hid", "aGlk" }, |
michael@0 | 537 | { "him", "aGlt" }, |
michael@0 | 538 | { "hip", "aGlw" }, |
michael@0 | 539 | { "his", "aGlz" }, |
michael@0 | 540 | { "hit", "aGl0" }, |
michael@0 | 541 | { "hob", "aG9i" }, |
michael@0 | 542 | { "hoc", "aG9j" }, |
michael@0 | 543 | { "hoe", "aG9l" }, |
michael@0 | 544 | { "hog", "aG9n" }, |
michael@0 | 545 | { "hoi", "aG9p" }, |
michael@0 | 546 | { "Hom", "SG9t" }, |
michael@0 | 547 | { "hop", "aG9w" }, |
michael@0 | 548 | { "hot", "aG90" }, |
michael@0 | 549 | { "how", "aG93" }, |
michael@0 | 550 | { "hoy", "aG95" }, |
michael@0 | 551 | { "h's", "aCdz" }, |
michael@0 | 552 | { "hub", "aHVi" }, |
michael@0 | 553 | { "hue", "aHVl" }, |
michael@0 | 554 | { "hug", "aHVn" }, |
michael@0 | 555 | { "huh", "aHVo" }, |
michael@0 | 556 | { "hum", "aHVt" }, |
michael@0 | 557 | { "Hun", "SHVu" }, |
michael@0 | 558 | { "hut", "aHV0" }, |
michael@0 | 559 | { "Ian", "SWFu" }, |
michael@0 | 560 | { "IBM", "SUJN" }, |
michael@0 | 561 | { "Ibn", "SWJu" }, |
michael@0 | 562 | { "ICC", "SUND" }, |
michael@0 | 563 | { "ice", "aWNl" }, |
michael@0 | 564 | { "icy", "aWN5" }, |
michael@0 | 565 | { "I'd", "SSdk" }, |
michael@0 | 566 | { "Ida", "SWRh" }, |
michael@0 | 567 | { "i.e", "aS5l" }, |
michael@0 | 568 | { "iii", "aWlp" }, |
michael@0 | 569 | { "Ike", "SWtl" }, |
michael@0 | 570 | { "ill", "aWxs" }, |
michael@0 | 571 | { "I'm", "SSdt" }, |
michael@0 | 572 | { "imp", "aW1w" }, |
michael@0 | 573 | { "Inc", "SW5j" }, |
michael@0 | 574 | { "ink", "aW5r" }, |
michael@0 | 575 | { "inn", "aW5u" }, |
michael@0 | 576 | { "ion", "aW9u" }, |
michael@0 | 577 | { "Ira", "SXJh" }, |
michael@0 | 578 | { "ire", "aXJl" }, |
michael@0 | 579 | { "irk", "aXJr" }, |
michael@0 | 580 | { "IRS", "SVJT" }, |
michael@0 | 581 | { "i's", "aSdz" }, |
michael@0 | 582 | { "Ito", "SXRv" }, |
michael@0 | 583 | { "ITT", "SVRU" }, |
michael@0 | 584 | { "ivy", "aXZ5" }, |
michael@0 | 585 | { "jab", "amFi" }, |
michael@0 | 586 | { "jag", "amFn" }, |
michael@0 | 587 | { "jam", "amFt" }, |
michael@0 | 588 | { "Jan", "SmFu" }, |
michael@0 | 589 | { "jar", "amFy" }, |
michael@0 | 590 | { "jaw", "amF3" }, |
michael@0 | 591 | { "jay", "amF5" }, |
michael@0 | 592 | { "Jed", "SmVk" }, |
michael@0 | 593 | { "jet", "amV0" }, |
michael@0 | 594 | { "Jew", "SmV3" }, |
michael@0 | 595 | { "jig", "amln" }, |
michael@0 | 596 | { "Jim", "Smlt" }, |
michael@0 | 597 | { "job", "am9i" }, |
michael@0 | 598 | { "Joe", "Sm9l" }, |
michael@0 | 599 | { "jog", "am9n" }, |
michael@0 | 600 | { "Jon", "Sm9u" }, |
michael@0 | 601 | { "jot", "am90" }, |
michael@0 | 602 | { "joy", "am95" }, |
michael@0 | 603 | { "j's", "aidz" }, |
michael@0 | 604 | { "jug", "anVn" }, |
michael@0 | 605 | { "jut", "anV0" }, |
michael@0 | 606 | { "Kay", "S2F5" }, |
michael@0 | 607 | { "keg", "a2Vn" }, |
michael@0 | 608 | { "ken", "a2Vu" }, |
michael@0 | 609 | { "key", "a2V5" }, |
michael@0 | 610 | { "kid", "a2lk" }, |
michael@0 | 611 | { "Kim", "S2lt" }, |
michael@0 | 612 | { "kin", "a2lu" }, |
michael@0 | 613 | { "kit", "a2l0" }, |
michael@0 | 614 | { "k's", "aydz" }, |
michael@0 | 615 | { "lab", "bGFi" }, |
michael@0 | 616 | { "lac", "bGFj" }, |
michael@0 | 617 | { "lad", "bGFk" }, |
michael@0 | 618 | { "lag", "bGFn" }, |
michael@0 | 619 | { "lam", "bGFt" }, |
michael@0 | 620 | { "Lao", "TGFv" }, |
michael@0 | 621 | { "lap", "bGFw" }, |
michael@0 | 622 | { "law", "bGF3" }, |
michael@0 | 623 | { "lax", "bGF4" }, |
michael@0 | 624 | { "lay", "bGF5" }, |
michael@0 | 625 | { "lea", "bGVh" }, |
michael@0 | 626 | { "led", "bGVk" }, |
michael@0 | 627 | { "lee", "bGVl" }, |
michael@0 | 628 | { "leg", "bGVn" }, |
michael@0 | 629 | { "Len", "TGVu" }, |
michael@0 | 630 | { "Leo", "TGVv" }, |
michael@0 | 631 | { "let", "bGV0" }, |
michael@0 | 632 | { "Lev", "TGV2" }, |
michael@0 | 633 | { "Lew", "TGV3" }, |
michael@0 | 634 | { "lew", "bGV3" }, |
michael@0 | 635 | { "lid", "bGlk" }, |
michael@0 | 636 | { "lie", "bGll" }, |
michael@0 | 637 | { "lim", "bGlt" }, |
michael@0 | 638 | { "Lin", "TGlu" }, |
michael@0 | 639 | { "lip", "bGlw" }, |
michael@0 | 640 | { "lit", "bGl0" }, |
michael@0 | 641 | { "Liz", "TGl6" }, |
michael@0 | 642 | { "lob", "bG9i" }, |
michael@0 | 643 | { "log", "bG9n" }, |
michael@0 | 644 | { "lop", "bG9w" }, |
michael@0 | 645 | { "Los", "TG9z" }, |
michael@0 | 646 | { "lot", "bG90" }, |
michael@0 | 647 | { "Lou", "TG91" }, |
michael@0 | 648 | { "low", "bG93" }, |
michael@0 | 649 | { "loy", "bG95" }, |
michael@0 | 650 | { "l's", "bCdz" }, |
michael@0 | 651 | { "LSI", "TFNJ" }, |
michael@0 | 652 | { "Ltd", "THRk" }, |
michael@0 | 653 | { "LTV", "TFRW" }, |
michael@0 | 654 | { "lug", "bHVn" }, |
michael@0 | 655 | { "lux", "bHV4" }, |
michael@0 | 656 | { "lye", "bHll" }, |
michael@0 | 657 | { "Mac", "TWFj" }, |
michael@0 | 658 | { "mad", "bWFk" }, |
michael@0 | 659 | { "Mae", "TWFl" }, |
michael@0 | 660 | { "man", "bWFu" }, |
michael@0 | 661 | { "Mao", "TWFv" }, |
michael@0 | 662 | { "map", "bWFw" }, |
michael@0 | 663 | { "mar", "bWFy" }, |
michael@0 | 664 | { "mat", "bWF0" }, |
michael@0 | 665 | { "maw", "bWF3" }, |
michael@0 | 666 | { "Max", "TWF4" }, |
michael@0 | 667 | { "max", "bWF4" }, |
michael@0 | 668 | { "may", "bWF5" }, |
michael@0 | 669 | { "MBA", "TUJB" }, |
michael@0 | 670 | { "Meg", "TWVn" }, |
michael@0 | 671 | { "Mel", "TWVs" }, |
michael@0 | 672 | { "men", "bWVu" }, |
michael@0 | 673 | { "met", "bWV0" }, |
michael@0 | 674 | { "mew", "bWV3" }, |
michael@0 | 675 | { "mid", "bWlk" }, |
michael@0 | 676 | { "mig", "bWln" }, |
michael@0 | 677 | { "min", "bWlu" }, |
michael@0 | 678 | { "MIT", "TUlU" }, |
michael@0 | 679 | { "mix", "bWl4" }, |
michael@0 | 680 | { "mob", "bW9i" }, |
michael@0 | 681 | { "Moe", "TW9l" }, |
michael@0 | 682 | { "moo", "bW9v" }, |
michael@0 | 683 | { "mop", "bW9w" }, |
michael@0 | 684 | { "mot", "bW90" }, |
michael@0 | 685 | { "mow", "bW93" }, |
michael@0 | 686 | { "MPH", "TVBI" }, |
michael@0 | 687 | { "Mrs", "TXJz" }, |
michael@0 | 688 | { "m's", "bSdz" }, |
michael@0 | 689 | { "mud", "bXVk" }, |
michael@0 | 690 | { "mug", "bXVn" }, |
michael@0 | 691 | { "mum", "bXVt" }, |
michael@0 | 692 | { "nab", "bmFi" }, |
michael@0 | 693 | { "nag", "bmFn" }, |
michael@0 | 694 | { "Nan", "TmFu" }, |
michael@0 | 695 | { "nap", "bmFw" }, |
michael@0 | 696 | { "Nat", "TmF0" }, |
michael@0 | 697 | { "nay", "bmF5" }, |
michael@0 | 698 | { "NBC", "TkJD" }, |
michael@0 | 699 | { "NBS", "TkJT" }, |
michael@0 | 700 | { "NCO", "TkNP" }, |
michael@0 | 701 | { "NCR", "TkNS" }, |
michael@0 | 702 | { "Ned", "TmVk" }, |
michael@0 | 703 | { "nee", "bmVl" }, |
michael@0 | 704 | { "net", "bmV0" }, |
michael@0 | 705 | { "new", "bmV3" }, |
michael@0 | 706 | { "nib", "bmli" }, |
michael@0 | 707 | { "NIH", "TklI" }, |
michael@0 | 708 | { "nil", "bmls" }, |
michael@0 | 709 | { "nip", "bmlw" }, |
michael@0 | 710 | { "nit", "bml0" }, |
michael@0 | 711 | { "NNE", "Tk5F" }, |
michael@0 | 712 | { "NNW", "Tk5X" }, |
michael@0 | 713 | { "nob", "bm9i" }, |
michael@0 | 714 | { "nod", "bm9k" }, |
michael@0 | 715 | { "non", "bm9u" }, |
michael@0 | 716 | { "nor", "bm9y" }, |
michael@0 | 717 | { "not", "bm90" }, |
michael@0 | 718 | { "Nov", "Tm92" }, |
michael@0 | 719 | { "now", "bm93" }, |
michael@0 | 720 | { "NRC", "TlJD" }, |
michael@0 | 721 | { "n's", "bidz" }, |
michael@0 | 722 | { "NSF", "TlNG" }, |
michael@0 | 723 | { "nun", "bnVu" }, |
michael@0 | 724 | { "nut", "bnV0" }, |
michael@0 | 725 | { "NYC", "TllD" }, |
michael@0 | 726 | { "NYU", "TllV" }, |
michael@0 | 727 | { "oaf", "b2Fm" }, |
michael@0 | 728 | { "oak", "b2Fr" }, |
michael@0 | 729 | { "oar", "b2Fy" }, |
michael@0 | 730 | { "oat", "b2F0" }, |
michael@0 | 731 | { "Oct", "T2N0" }, |
michael@0 | 732 | { "odd", "b2Rk" }, |
michael@0 | 733 | { "ode", "b2Rl" }, |
michael@0 | 734 | { "off", "b2Zm" }, |
michael@0 | 735 | { "oft", "b2Z0" }, |
michael@0 | 736 | { "ohm", "b2ht" }, |
michael@0 | 737 | { "oil", "b2ls" }, |
michael@0 | 738 | { "old", "b2xk" }, |
michael@0 | 739 | { "one", "b25l" }, |
michael@0 | 740 | { "opt", "b3B0" }, |
michael@0 | 741 | { "orb", "b3Ji" }, |
michael@0 | 742 | { "ore", "b3Jl" }, |
michael@0 | 743 | { "Orr", "T3Jy" }, |
michael@0 | 744 | { "o's", "bydz" }, |
michael@0 | 745 | { "Ott", "T3R0" }, |
michael@0 | 746 | { "our", "b3Vy" }, |
michael@0 | 747 | { "out", "b3V0" }, |
michael@0 | 748 | { "ova", "b3Zh" }, |
michael@0 | 749 | { "owe", "b3dl" }, |
michael@0 | 750 | { "owl", "b3ds" }, |
michael@0 | 751 | { "own", "b3du" }, |
michael@0 | 752 | { "pad", "cGFk" }, |
michael@0 | 753 | { "pal", "cGFs" }, |
michael@0 | 754 | { "Pam", "UGFt" }, |
michael@0 | 755 | { "pan", "cGFu" }, |
michael@0 | 756 | { "pap", "cGFw" }, |
michael@0 | 757 | { "par", "cGFy" }, |
michael@0 | 758 | { "pat", "cGF0" }, |
michael@0 | 759 | { "paw", "cGF3" }, |
michael@0 | 760 | { "pax", "cGF4" }, |
michael@0 | 761 | { "pay", "cGF5" }, |
michael@0 | 762 | { "Paz", "UGF6" }, |
michael@0 | 763 | { "PBS", "UEJT" }, |
michael@0 | 764 | { "PDP", "UERQ" }, |
michael@0 | 765 | { "pea", "cGVh" }, |
michael@0 | 766 | { "pee", "cGVl" }, |
michael@0 | 767 | { "peg", "cGVn" }, |
michael@0 | 768 | { "pen", "cGVu" }, |
michael@0 | 769 | { "pep", "cGVw" }, |
michael@0 | 770 | { "per", "cGVy" }, |
michael@0 | 771 | { "pet", "cGV0" }, |
michael@0 | 772 | { "pew", "cGV3" }, |
michael@0 | 773 | { "PhD", "UGhE" }, |
michael@0 | 774 | { "phi", "cGhp" }, |
michael@0 | 775 | { "pie", "cGll" }, |
michael@0 | 776 | { "pig", "cGln" }, |
michael@0 | 777 | { "pin", "cGlu" }, |
michael@0 | 778 | { "pip", "cGlw" }, |
michael@0 | 779 | { "pit", "cGl0" }, |
michael@0 | 780 | { "ply", "cGx5" }, |
michael@0 | 781 | { "pod", "cG9k" }, |
michael@0 | 782 | { "Poe", "UG9l" }, |
michael@0 | 783 | { "poi", "cG9p" }, |
michael@0 | 784 | { "pol", "cG9s" }, |
michael@0 | 785 | { "pop", "cG9w" }, |
michael@0 | 786 | { "pot", "cG90" }, |
michael@0 | 787 | { "pow", "cG93" }, |
michael@0 | 788 | { "ppm", "cHBt" }, |
michael@0 | 789 | { "pro", "cHJv" }, |
michael@0 | 790 | { "pry", "cHJ5" }, |
michael@0 | 791 | { "p's", "cCdz" }, |
michael@0 | 792 | { "psi", "cHNp" }, |
michael@0 | 793 | { "PTA", "UFRB" }, |
michael@0 | 794 | { "pub", "cHVi" }, |
michael@0 | 795 | { "PUC", "UFVD" }, |
michael@0 | 796 | { "pug", "cHVn" }, |
michael@0 | 797 | { "pun", "cHVu" }, |
michael@0 | 798 | { "pup", "cHVw" }, |
michael@0 | 799 | { "pus", "cHVz" }, |
michael@0 | 800 | { "put", "cHV0" }, |
michael@0 | 801 | { "PVC", "UFZD" }, |
michael@0 | 802 | { "QED", "UUVE" }, |
michael@0 | 803 | { "q's", "cSdz" }, |
michael@0 | 804 | { "qua", "cXVh" }, |
michael@0 | 805 | { "quo", "cXVv" }, |
michael@0 | 806 | { "Rae", "UmFl" }, |
michael@0 | 807 | { "rag", "cmFn" }, |
michael@0 | 808 | { "raj", "cmFq" }, |
michael@0 | 809 | { "ram", "cmFt" }, |
michael@0 | 810 | { "ran", "cmFu" }, |
michael@0 | 811 | { "rap", "cmFw" }, |
michael@0 | 812 | { "rat", "cmF0" }, |
michael@0 | 813 | { "raw", "cmF3" }, |
michael@0 | 814 | { "ray", "cmF5" }, |
michael@0 | 815 | { "RCA", "UkNB" }, |
michael@0 | 816 | { "R&D", "UiZE" }, |
michael@0 | 817 | { "reb", "cmVi" }, |
michael@0 | 818 | { "red", "cmVk" }, |
michael@0 | 819 | { "rep", "cmVw" }, |
michael@0 | 820 | { "ret", "cmV0" }, |
michael@0 | 821 | { "rev", "cmV2" }, |
michael@0 | 822 | { "Rex", "UmV4" }, |
michael@0 | 823 | { "rho", "cmhv" }, |
michael@0 | 824 | { "rib", "cmli" }, |
michael@0 | 825 | { "rid", "cmlk" }, |
michael@0 | 826 | { "rig", "cmln" }, |
michael@0 | 827 | { "rim", "cmlt" }, |
michael@0 | 828 | { "Rio", "Umlv" }, |
michael@0 | 829 | { "rip", "cmlw" }, |
michael@0 | 830 | { "RNA", "Uk5B" }, |
michael@0 | 831 | { "rob", "cm9i" }, |
michael@0 | 832 | { "rod", "cm9k" }, |
michael@0 | 833 | { "roe", "cm9l" }, |
michael@0 | 834 | { "Ron", "Um9u" }, |
michael@0 | 835 | { "rot", "cm90" }, |
michael@0 | 836 | { "row", "cm93" }, |
michael@0 | 837 | { "Roy", "Um95" }, |
michael@0 | 838 | { "RPM", "UlBN" }, |
michael@0 | 839 | { "r's", "cidz" }, |
michael@0 | 840 | { "rub", "cnVi" }, |
michael@0 | 841 | { "rue", "cnVl" }, |
michael@0 | 842 | { "rug", "cnVn" }, |
michael@0 | 843 | { "rum", "cnVt" }, |
michael@0 | 844 | { "run", "cnVu" }, |
michael@0 | 845 | { "rut", "cnV0" }, |
michael@0 | 846 | { "rye", "cnll" }, |
michael@0 | 847 | { "sac", "c2Fj" }, |
michael@0 | 848 | { "sad", "c2Fk" }, |
michael@0 | 849 | { "sag", "c2Fn" }, |
michael@0 | 850 | { "Sal", "U2Fs" }, |
michael@0 | 851 | { "Sam", "U2Ft" }, |
michael@0 | 852 | { "San", "U2Fu" }, |
michael@0 | 853 | { "Sao", "U2Fv" }, |
michael@0 | 854 | { "sap", "c2Fw" }, |
michael@0 | 855 | { "sat", "c2F0" }, |
michael@0 | 856 | { "saw", "c2F3" }, |
michael@0 | 857 | { "sax", "c2F4" }, |
michael@0 | 858 | { "say", "c2F5" }, |
michael@0 | 859 | { "Sci", "U2Np" }, |
michael@0 | 860 | { "SCM", "U0NN" }, |
michael@0 | 861 | { "sea", "c2Vh" }, |
michael@0 | 862 | { "sec", "c2Vj" }, |
michael@0 | 863 | { "see", "c2Vl" }, |
michael@0 | 864 | { "sen", "c2Vu" }, |
michael@0 | 865 | { "seq", "c2Vx" }, |
michael@0 | 866 | { "set", "c2V0" }, |
michael@0 | 867 | { "sew", "c2V3" }, |
michael@0 | 868 | { "sex", "c2V4" }, |
michael@0 | 869 | { "she", "c2hl" }, |
michael@0 | 870 | { "Shu", "U2h1" }, |
michael@0 | 871 | { "shy", "c2h5" }, |
michael@0 | 872 | { "sib", "c2li" }, |
michael@0 | 873 | { "sic", "c2lj" }, |
michael@0 | 874 | { "sin", "c2lu" }, |
michael@0 | 875 | { "sip", "c2lw" }, |
michael@0 | 876 | { "sir", "c2ly" }, |
michael@0 | 877 | { "sis", "c2lz" }, |
michael@0 | 878 | { "sit", "c2l0" }, |
michael@0 | 879 | { "six", "c2l4" }, |
michael@0 | 880 | { "ski", "c2tp" }, |
michael@0 | 881 | { "sky", "c2t5" }, |
michael@0 | 882 | { "sly", "c2x5" }, |
michael@0 | 883 | { "sob", "c29i" }, |
michael@0 | 884 | { "Soc", "U29j" }, |
michael@0 | 885 | { "sod", "c29k" }, |
michael@0 | 886 | { "Sol", "U29s" }, |
michael@0 | 887 | { "son", "c29u" }, |
michael@0 | 888 | { "sop", "c29w" }, |
michael@0 | 889 | { "sou", "c291" }, |
michael@0 | 890 | { "sow", "c293" }, |
michael@0 | 891 | { "soy", "c295" }, |
michael@0 | 892 | { "spa", "c3Bh" }, |
michael@0 | 893 | { "spy", "c3B5" }, |
michael@0 | 894 | { "Sri", "U3Jp" }, |
michael@0 | 895 | { "s's", "cydz" }, |
michael@0 | 896 | { "SSE", "U1NF" }, |
michael@0 | 897 | { "SST", "U1NU" }, |
michael@0 | 898 | { "SSW", "U1NX" }, |
michael@0 | 899 | { "Stu", "U3R1" }, |
michael@0 | 900 | { "sub", "c3Vi" }, |
michael@0 | 901 | { "sud", "c3Vk" }, |
michael@0 | 902 | { "sue", "c3Vl" }, |
michael@0 | 903 | { "sum", "c3Vt" }, |
michael@0 | 904 | { "sun", "c3Vu" }, |
michael@0 | 905 | { "sup", "c3Vw" }, |
michael@0 | 906 | { "Sus", "U3Vz" }, |
michael@0 | 907 | { "tab", "dGFi" }, |
michael@0 | 908 | { "tad", "dGFk" }, |
michael@0 | 909 | { "tag", "dGFn" }, |
michael@0 | 910 | { "tam", "dGFt" }, |
michael@0 | 911 | { "tan", "dGFu" }, |
michael@0 | 912 | { "tao", "dGFv" }, |
michael@0 | 913 | { "tap", "dGFw" }, |
michael@0 | 914 | { "tar", "dGFy" }, |
michael@0 | 915 | { "tat", "dGF0" }, |
michael@0 | 916 | { "tau", "dGF1" }, |
michael@0 | 917 | { "tax", "dGF4" }, |
michael@0 | 918 | { "tea", "dGVh" }, |
michael@0 | 919 | { "Ted", "VGVk" }, |
michael@0 | 920 | { "ted", "dGVk" }, |
michael@0 | 921 | { "tee", "dGVl" }, |
michael@0 | 922 | { "Tel", "VGVs" }, |
michael@0 | 923 | { "ten", "dGVu" }, |
michael@0 | 924 | { "the", "dGhl" }, |
michael@0 | 925 | { "thy", "dGh5" }, |
michael@0 | 926 | { "tic", "dGlj" }, |
michael@0 | 927 | { "tid", "dGlk" }, |
michael@0 | 928 | { "tie", "dGll" }, |
michael@0 | 929 | { "til", "dGls" }, |
michael@0 | 930 | { "Tim", "VGlt" }, |
michael@0 | 931 | { "tin", "dGlu" }, |
michael@0 | 932 | { "tip", "dGlw" }, |
michael@0 | 933 | { "tit", "dGl0" }, |
michael@0 | 934 | { "TNT", "VE5U" }, |
michael@0 | 935 | { "toe", "dG9l" }, |
michael@0 | 936 | { "tog", "dG9n" }, |
michael@0 | 937 | { "Tom", "VG9t" }, |
michael@0 | 938 | { "ton", "dG9u" }, |
michael@0 | 939 | { "too", "dG9v" }, |
michael@0 | 940 | { "top", "dG9w" }, |
michael@0 | 941 | { "tor", "dG9y" }, |
michael@0 | 942 | { "tot", "dG90" }, |
michael@0 | 943 | { "tow", "dG93" }, |
michael@0 | 944 | { "toy", "dG95" }, |
michael@0 | 945 | { "TRW", "VFJX" }, |
michael@0 | 946 | { "try", "dHJ5" }, |
michael@0 | 947 | { "t's", "dCdz" }, |
michael@0 | 948 | { "TTL", "VFRM" }, |
michael@0 | 949 | { "TTY", "VFRZ" }, |
michael@0 | 950 | { "tub", "dHVi" }, |
michael@0 | 951 | { "tug", "dHVn" }, |
michael@0 | 952 | { "tum", "dHVt" }, |
michael@0 | 953 | { "tun", "dHVu" }, |
michael@0 | 954 | { "TVA", "VFZB" }, |
michael@0 | 955 | { "TWA", "VFdB" }, |
michael@0 | 956 | { "two", "dHdv" }, |
michael@0 | 957 | { "TWX", "VFdY" }, |
michael@0 | 958 | { "ugh", "dWdo" }, |
michael@0 | 959 | { "UHF", "VUhG" }, |
michael@0 | 960 | { "Uri", "VXJp" }, |
michael@0 | 961 | { "urn", "dXJu" }, |
michael@0 | 962 | { "U.S", "VS5T" }, |
michael@0 | 963 | { "u's", "dSdz" }, |
michael@0 | 964 | { "USA", "VVNB" }, |
michael@0 | 965 | { "USC", "VVND" }, |
michael@0 | 966 | { "use", "dXNl" }, |
michael@0 | 967 | { "USN", "VVNO" }, |
michael@0 | 968 | { "van", "dmFu" }, |
michael@0 | 969 | { "vat", "dmF0" }, |
michael@0 | 970 | { "vee", "dmVl" }, |
michael@0 | 971 | { "vet", "dmV0" }, |
michael@0 | 972 | { "vex", "dmV4" }, |
michael@0 | 973 | { "VHF", "VkhG" }, |
michael@0 | 974 | { "via", "dmlh" }, |
michael@0 | 975 | { "vie", "dmll" }, |
michael@0 | 976 | { "vii", "dmlp" }, |
michael@0 | 977 | { "vis", "dmlz" }, |
michael@0 | 978 | { "viz", "dml6" }, |
michael@0 | 979 | { "von", "dm9u" }, |
michael@0 | 980 | { "vow", "dm93" }, |
michael@0 | 981 | { "v's", "didz" }, |
michael@0 | 982 | { "WAC", "V0FD" }, |
michael@0 | 983 | { "wad", "d2Fk" }, |
michael@0 | 984 | { "wag", "d2Fn" }, |
michael@0 | 985 | { "wah", "d2Fo" }, |
michael@0 | 986 | { "wan", "d2Fu" }, |
michael@0 | 987 | { "war", "d2Fy" }, |
michael@0 | 988 | { "was", "d2Fz" }, |
michael@0 | 989 | { "wax", "d2F4" }, |
michael@0 | 990 | { "way", "d2F5" }, |
michael@0 | 991 | { "web", "d2Vi" }, |
michael@0 | 992 | { "wed", "d2Vk" }, |
michael@0 | 993 | { "wee", "d2Vl" }, |
michael@0 | 994 | { "Wei", "V2Vp" }, |
michael@0 | 995 | { "wet", "d2V0" }, |
michael@0 | 996 | { "who", "d2hv" }, |
michael@0 | 997 | { "why", "d2h5" }, |
michael@0 | 998 | { "wig", "d2ln" }, |
michael@0 | 999 | { "win", "d2lu" }, |
michael@0 | 1000 | { "wit", "d2l0" }, |
michael@0 | 1001 | { "woe", "d29l" }, |
michael@0 | 1002 | { "wok", "d29r" }, |
michael@0 | 1003 | { "won", "d29u" }, |
michael@0 | 1004 | { "woo", "d29v" }, |
michael@0 | 1005 | { "wop", "d29w" }, |
michael@0 | 1006 | { "wow", "d293" }, |
michael@0 | 1007 | { "wry", "d3J5" }, |
michael@0 | 1008 | { "w's", "dydz" }, |
michael@0 | 1009 | { "x's", "eCdz" }, |
michael@0 | 1010 | { "yah", "eWFo" }, |
michael@0 | 1011 | { "yak", "eWFr" }, |
michael@0 | 1012 | { "yam", "eWFt" }, |
michael@0 | 1013 | { "yap", "eWFw" }, |
michael@0 | 1014 | { "yaw", "eWF3" }, |
michael@0 | 1015 | { "yea", "eWVh" }, |
michael@0 | 1016 | { "yen", "eWVu" }, |
michael@0 | 1017 | { "yet", "eWV0" }, |
michael@0 | 1018 | { "yin", "eWlu" }, |
michael@0 | 1019 | { "yip", "eWlw" }, |
michael@0 | 1020 | { "yon", "eW9u" }, |
michael@0 | 1021 | { "you", "eW91" }, |
michael@0 | 1022 | { "yow", "eW93" }, |
michael@0 | 1023 | { "y's", "eSdz" }, |
michael@0 | 1024 | { "yuh", "eXVo" }, |
michael@0 | 1025 | { "zag", "emFn" }, |
michael@0 | 1026 | { "Zan", "WmFu" }, |
michael@0 | 1027 | { "zap", "emFw" }, |
michael@0 | 1028 | { "Zen", "WmVu" }, |
michael@0 | 1029 | { "zig", "emln" }, |
michael@0 | 1030 | { "zip", "emlw" }, |
michael@0 | 1031 | { "Zoe", "Wm9l" }, |
michael@0 | 1032 | { "zoo", "em9v" }, |
michael@0 | 1033 | { "z's", "eidz" }, |
michael@0 | 1034 | /* the false rumors file */ |
michael@0 | 1035 | { "\"So when I die, the first thing I will see in heaven is a score list?\"", |
michael@0 | 1036 | "IlNvIHdoZW4gSSBkaWUsIHRoZSBmaXJzdCB0aGluZyBJIHdpbGwgc2VlIGluIGhlYXZlbiBpcyBhIHNjb3JlIGxpc3Q/Ig==" }, |
michael@0 | 1037 | { "1st Law of Hacking: leaving is much more difficult than entering.", |
michael@0 | 1038 | "MXN0IExhdyBvZiBIYWNraW5nOiBsZWF2aW5nIGlzIG11Y2ggbW9yZSBkaWZmaWN1bHQgdGhhbiBlbnRlcmluZy4=" }, |
michael@0 | 1039 | { "2nd Law of Hacking: first in, first out.", |
michael@0 | 1040 | "Mm5kIExhdyBvZiBIYWNraW5nOiBmaXJzdCBpbiwgZmlyc3Qgb3V0Lg==" }, |
michael@0 | 1041 | { "3rd Law of Hacking: the last blow counts most.", |
michael@0 | 1042 | "M3JkIExhdyBvZiBIYWNraW5nOiB0aGUgbGFzdCBibG93IGNvdW50cyBtb3N0Lg==" }, |
michael@0 | 1043 | { "4th Law of Hacking: you will find the exit at the entrance.", |
michael@0 | 1044 | "NHRoIExhdyBvZiBIYWNraW5nOiB5b3Ugd2lsbCBmaW5kIHRoZSBleGl0IGF0IHRoZSBlbnRyYW5jZS4=" }, |
michael@0 | 1045 | { "A chameleon imitating a mail daemon often delivers scrolls of fire.", |
michael@0 | 1046 | "QSBjaGFtZWxlb24gaW1pdGF0aW5nIGEgbWFpbCBkYWVtb24gb2Z0ZW4gZGVsaXZlcnMgc2Nyb2xscyBvZiBmaXJlLg==" }, |
michael@0 | 1047 | { "A cockatrice corpse is guaranteed to be untainted!", |
michael@0 | 1048 | "QSBjb2NrYXRyaWNlIGNvcnBzZSBpcyBndWFyYW50ZWVkIHRvIGJlIHVudGFpbnRlZCE=" }, |
michael@0 | 1049 | { "A dead cockatrice is just a dead lizard.", |
michael@0 | 1050 | "QSBkZWFkIGNvY2thdHJpY2UgaXMganVzdCBhIGRlYWQgbGl6YXJkLg==" }, |
michael@0 | 1051 | { "A dragon is just a snake that ate a scroll of fire.", |
michael@0 | 1052 | "QSBkcmFnb24gaXMganVzdCBhIHNuYWtlIHRoYXQgYXRlIGEgc2Nyb2xsIG9mIGZpcmUu" }, |
michael@0 | 1053 | { "A fading corridor enlightens your insight.", |
michael@0 | 1054 | "QSBmYWRpbmcgY29ycmlkb3IgZW5saWdodGVucyB5b3VyIGluc2lnaHQu" }, |
michael@0 | 1055 | { "A glowing potion is too hot to drink.", |
michael@0 | 1056 | "QSBnbG93aW5nIHBvdGlvbiBpcyB0b28gaG90IHRvIGRyaW5rLg==" }, |
michael@0 | 1057 | { "A good amulet may protect you against guards.", |
michael@0 | 1058 | "QSBnb29kIGFtdWxldCBtYXkgcHJvdGVjdCB5b3UgYWdhaW5zdCBndWFyZHMu" }, |
michael@0 | 1059 | { "A lizard corpse is a good thing to turn undead.", |
michael@0 | 1060 | "QSBsaXphcmQgY29ycHNlIGlzIGEgZ29vZCB0aGluZyB0byB0dXJuIHVuZGVhZC4=" }, |
michael@0 | 1061 | { "A long worm can be defined recursively. So how should you attack it?", |
michael@0 | 1062 | "QSBsb25nIHdvcm0gY2FuIGJlIGRlZmluZWQgcmVjdXJzaXZlbHkuIFNvIGhvdyBzaG91bGQgeW91IGF0dGFjayBpdD8=" }, |
michael@0 | 1063 | { "A monstrous mind is a toy forever.", |
michael@0 | 1064 | "QSBtb25zdHJvdXMgbWluZCBpcyBhIHRveSBmb3JldmVyLg==" }, |
michael@0 | 1065 | { "A nymph will be very pleased if you call her by her real name: Lorelei.", |
michael@0 | 1066 | "QSBueW1waCB3aWxsIGJlIHZlcnkgcGxlYXNlZCBpZiB5b3UgY2FsbCBoZXIgYnkgaGVyIHJlYWwgbmFtZTogTG9yZWxlaS4=" }, |
michael@0 | 1067 | { "A ring of dungeon master control is a great find.", |
michael@0 | 1068 | "QSByaW5nIG9mIGR1bmdlb24gbWFzdGVyIGNvbnRyb2wgaXMgYSBncmVhdCBmaW5kLg==" }, |
michael@0 | 1069 | { "A ring of extra ring finger is useless if not enchanted.", |
michael@0 | 1070 | "QSByaW5nIG9mIGV4dHJhIHJpbmcgZmluZ2VyIGlzIHVzZWxlc3MgaWYgbm90IGVuY2hhbnRlZC4=" }, |
michael@0 | 1071 | { "A rope may form a trail in a maze.", |
michael@0 | 1072 | "QSByb3BlIG1heSBmb3JtIGEgdHJhaWwgaW4gYSBtYXplLg==" }, |
michael@0 | 1073 | { "A staff may recharge if you drop it for awhile.", |
michael@0 | 1074 | "QSBzdGFmZiBtYXkgcmVjaGFyZ2UgaWYgeW91IGRyb3AgaXQgZm9yIGF3aGlsZS4=" }, |
michael@0 | 1075 | { "A visit to the Zoo is very educational; you meet interesting animals.", |
michael@0 | 1076 | "QSB2aXNpdCB0byB0aGUgWm9vIGlzIHZlcnkgZWR1Y2F0aW9uYWw7IHlvdSBtZWV0IGludGVyZXN0aW5nIGFuaW1hbHMu" }, |
michael@0 | 1077 | { "A wand of deaf is a more dangerous weapon than a wand of sheep.", |
michael@0 | 1078 | "QSB3YW5kIG9mIGRlYWYgaXMgYSBtb3JlIGRhbmdlcm91cyB3ZWFwb24gdGhhbiBhIHdhbmQgb2Ygc2hlZXAu" }, |
michael@0 | 1079 | { "A wand of vibration might bring the whole cave crashing about your ears.", |
michael@0 | 1080 | "QSB3YW5kIG9mIHZpYnJhdGlvbiBtaWdodCBicmluZyB0aGUgd2hvbGUgY2F2ZSBjcmFzaGluZyBhYm91dCB5b3VyIGVhcnMu" }, |
michael@0 | 1081 | { "A winner never quits. A quitter never wins.", |
michael@0 | 1082 | "QSB3aW5uZXIgbmV2ZXIgcXVpdHMuIEEgcXVpdHRlciBuZXZlciB3aW5zLg==" }, |
michael@0 | 1083 | { "A wish? Okay, make me a fortune cookie!", |
michael@0 | 1084 | "QSB3aXNoPyBPa2F5LCBtYWtlIG1lIGEgZm9ydHVuZSBjb29raWUh" }, |
michael@0 | 1085 | { "Afraid of mimics? Try to wear a ring of true seeing.", |
michael@0 | 1086 | "QWZyYWlkIG9mIG1pbWljcz8gVHJ5IHRvIHdlYXIgYSByaW5nIG9mIHRydWUgc2VlaW5nLg==" }, |
michael@0 | 1087 | { "All monsters are created evil, but some are more evil than others.", |
michael@0 | 1088 | "QWxsIG1vbnN0ZXJzIGFyZSBjcmVhdGVkIGV2aWwsIGJ1dCBzb21lIGFyZSBtb3JlIGV2aWwgdGhhbiBvdGhlcnMu" }, |
michael@0 | 1089 | { "Always attack a floating eye from behind!", |
michael@0 | 1090 | "QWx3YXlzIGF0dGFjayBhIGZsb2F0aW5nIGV5ZSBmcm9tIGJlaGluZCE=" }, |
michael@0 | 1091 | { "An elven cloak is always the height of fashion.", |
michael@0 | 1092 | "QW4gZWx2ZW4gY2xvYWsgaXMgYWx3YXlzIHRoZSBoZWlnaHQgb2YgZmFzaGlvbi4=" }, |
michael@0 | 1093 | { "Any small object that is accidentally dropped will hide under a larger object.", |
michael@0 | 1094 | "QW55IHNtYWxsIG9iamVjdCB0aGF0IGlzIGFjY2lkZW50YWxseSBkcm9wcGVkIHdpbGwgaGlkZSB1bmRlciBhIGxhcmdlciBvYmplY3Qu" }, |
michael@0 | 1095 | { "Balrogs do not appear above level 20.", |
michael@0 | 1096 | "QmFscm9ncyBkbyBub3QgYXBwZWFyIGFib3ZlIGxldmVsIDIwLg==" }, |
michael@0 | 1097 | { "Banana peels work especially well against Keystone Kops.", |
michael@0 | 1098 | "QmFuYW5hIHBlZWxzIHdvcmsgZXNwZWNpYWxseSB3ZWxsIGFnYWluc3QgS2V5c3RvbmUgS29wcy4=" }, |
michael@0 | 1099 | { "Be careful when eating bananas. Monsters might slip on the peels.", |
michael@0 | 1100 | "QmUgY2FyZWZ1bCB3aGVuIGVhdGluZyBiYW5hbmFzLiBNb25zdGVycyBtaWdodCBzbGlwIG9uIHRoZSBwZWVscy4=" }, |
michael@0 | 1101 | { "Better leave the dungeon; otherwise you might get hurt badly.", |
michael@0 | 1102 | "QmV0dGVyIGxlYXZlIHRoZSBkdW5nZW9uOyBvdGhlcndpc2UgeW91IG1pZ2h0IGdldCBodXJ0IGJhZGx5Lg==" }, |
michael@0 | 1103 | { "Beware of the potion of nitroglycerin -- it's not for the weak of heart.", |
michael@0 | 1104 | "QmV3YXJlIG9mIHRoZSBwb3Rpb24gb2Ygbml0cm9nbHljZXJpbiAtLSBpdCdzIG5vdCBmb3IgdGhlIHdlYWsgb2YgaGVhcnQu" }, |
michael@0 | 1105 | { "Beware: there's always a chance that your wand explodes as you try to zap it!", |
michael@0 | 1106 | "QmV3YXJlOiB0aGVyZSdzIGFsd2F5cyBhIGNoYW5jZSB0aGF0IHlvdXIgd2FuZCBleHBsb2RlcyBhcyB5b3UgdHJ5IHRvIHphcCBpdCE=" }, |
michael@0 | 1107 | { "Beyond the 23rd level lies a happy retirement in a room of your own.", |
michael@0 | 1108 | "QmV5b25kIHRoZSAyM3JkIGxldmVsIGxpZXMgYSBoYXBweSByZXRpcmVtZW50IGluIGEgcm9vbSBvZiB5b3VyIG93bi4=" }, |
michael@0 | 1109 | { "Changing your suit without dropping your sword? You must be kidding!", |
michael@0 | 1110 | "Q2hhbmdpbmcgeW91ciBzdWl0IHdpdGhvdXQgZHJvcHBpbmcgeW91ciBzd29yZD8gWW91IG11c3QgYmUga2lkZGluZyE=" }, |
michael@0 | 1111 | { "Cockatrices might turn themselves to stone faced with a mirror.", |
michael@0 | 1112 | "Q29ja2F0cmljZXMgbWlnaHQgdHVybiB0aGVtc2VsdmVzIHRvIHN0b25lIGZhY2VkIHdpdGggYSBtaXJyb3Iu" }, |
michael@0 | 1113 | { "Consumption of home-made food is strictly forbidden in this dungeon.", |
michael@0 | 1114 | "Q29uc3VtcHRpb24gb2YgaG9tZS1tYWRlIGZvb2QgaXMgc3RyaWN0bHkgZm9yYmlkZGVuIGluIHRoaXMgZHVuZ2Vvbi4=" }, |
michael@0 | 1115 | { "Dark room? Your chance to develop your photographs!", |
michael@0 | 1116 | "RGFyayByb29tPyBZb3VyIGNoYW5jZSB0byBkZXZlbG9wIHlvdXIgcGhvdG9ncmFwaHMh" }, |
michael@0 | 1117 | { "Dark rooms are not *completely* dark: just wait and let your eyes adjust...", |
michael@0 | 1118 | "RGFyayByb29tcyBhcmUgbm90ICpjb21wbGV0ZWx5KiBkYXJrOiBqdXN0IHdhaXQgYW5kIGxldCB5b3VyIGV5ZXMgYWRqdXN0Li4u" }, |
michael@0 | 1119 | { "David London sez, \"Hey guys, *WIELD* a lizard corpse against a cockatrice!\"", |
michael@0 | 1120 | "RGF2aWQgTG9uZG9uIHNleiwgIkhleSBndXlzLCAqV0lFTEQqIGEgbGl6YXJkIGNvcnBzZSBhZ2FpbnN0IGEgY29ja2F0cmljZSEi" }, |
michael@0 | 1121 | { "Death is just life's way of telling you you've been fired.", |
michael@0 | 1122 | "RGVhdGggaXMganVzdCBsaWZlJ3Mgd2F5IG9mIHRlbGxpbmcgeW91IHlvdSd2ZSBiZWVuIGZpcmVkLg==" }, |
michael@0 | 1123 | { "Demi-gods don't need any help from the gods.", |
michael@0 | 1124 | "RGVtaS1nb2RzIGRvbid0IG5lZWQgYW55IGhlbHAgZnJvbSB0aGUgZ29kcy4=" }, |
michael@0 | 1125 | { "Demons *HATE* Priests and Priestesses.", |
michael@0 | 1126 | "RGVtb25zICpIQVRFKiBQcmllc3RzIGFuZCBQcmllc3Rlc3Nlcy4=" }, |
michael@0 | 1127 | { "Didn't you forget to pay?", |
michael@0 | 1128 | "RGlkbid0IHlvdSBmb3JnZXQgdG8gcGF5Pw==" }, |
michael@0 | 1129 | { "Didn't your mother tell you not to eat food off the floor?", |
michael@0 | 1130 | "RGlkbid0IHlvdXIgbW90aGVyIHRlbGwgeW91IG5vdCB0byBlYXQgZm9vZCBvZmYgdGhlIGZsb29yPw==" }, |
michael@0 | 1131 | { "Direct a direct hit on your direct opponent, directing in the right direction.", |
michael@0 | 1132 | "RGlyZWN0IGEgZGlyZWN0IGhpdCBvbiB5b3VyIGRpcmVjdCBvcHBvbmVudCwgZGlyZWN0aW5nIGluIHRoZSByaWdodCBkaXJlY3Rpb24u" }, |
michael@0 | 1133 | { "Do you want to make more money? Sure, we all do! Join the Fort Ludios guard!", |
michael@0 | 1134 | "RG8geW91IHdhbnQgdG8gbWFrZSBtb3JlIG1vbmV5PyBTdXJlLCB3ZSBhbGwgZG8hIEpvaW4gdGhlIEZvcnQgTHVkaW9zIGd1YXJkIQ==" }, |
michael@0 | 1135 | { "Don't eat too much: you might start hiccoughing!", |
michael@0 | 1136 | "RG9uJ3QgZWF0IHRvbyBtdWNoOiB5b3UgbWlnaHQgc3RhcnQgaGljY291Z2hpbmch" }, |
michael@0 | 1137 | { "Don't play hack at your work; your boss might hit you!", |
michael@0 | 1138 | "RG9uJ3QgcGxheSBoYWNrIGF0IHlvdXIgd29yazsgeW91ciBib3NzIG1pZ2h0IGhpdCB5b3Uh" }, |
michael@0 | 1139 | { "Don't tell a soul you found a secret door, otherwise it isn't a secret anymore.", |
michael@0 | 1140 | "RG9uJ3QgdGVsbCBhIHNvdWwgeW91IGZvdW5kIGEgc2VjcmV0IGRvb3IsIG90aGVyd2lzZSBpdCBpc24ndCBhIHNlY3JldCBhbnltb3JlLg==" }, |
michael@0 | 1141 | { "Drinking potions of booze may land you in jail if you are under 21.", |
michael@0 | 1142 | "RHJpbmtpbmcgcG90aW9ucyBvZiBib296ZSBtYXkgbGFuZCB5b3UgaW4gamFpbCBpZiB5b3UgYXJlIHVuZGVyIDIxLg==" }, |
michael@0 | 1143 | { "Drop your vanity and get rid of your jewels! Pickpockets about!", |
michael@0 | 1144 | "RHJvcCB5b3VyIHZhbml0eSBhbmQgZ2V0IHJpZCBvZiB5b3VyIGpld2VscyEgUGlja3BvY2tldHMgYWJvdXQh" }, |
michael@0 | 1145 | { "Eat 10 cloves of garlic and keep all humans at a two-square distance.", |
michael@0 | 1146 | "RWF0IDEwIGNsb3ZlcyBvZiBnYXJsaWMgYW5kIGtlZXAgYWxsIGh1bWFucyBhdCBhIHR3by1zcXVhcmUgZGlzdGFuY2Uu" }, |
michael@0 | 1147 | { "Eels hide under mud. Use a unicorn to clear the water and make them visible.", |
michael@0 | 1148 | "RWVscyBoaWRlIHVuZGVyIG11ZC4gVXNlIGEgdW5pY29ybiB0byBjbGVhciB0aGUgd2F0ZXIgYW5kIG1ha2UgdGhlbSB2aXNpYmxlLg==" }, |
michael@0 | 1149 | { "Engrave your wishes with a wand of wishing.", |
michael@0 | 1150 | "RW5ncmF2ZSB5b3VyIHdpc2hlcyB3aXRoIGEgd2FuZCBvZiB3aXNoaW5nLg==" }, |
michael@0 | 1151 | { "Eventually you will come to admire the swift elegance of a retreating nymph.", |
michael@0 | 1152 | "RXZlbnR1YWxseSB5b3Ugd2lsbCBjb21lIHRvIGFkbWlyZSB0aGUgc3dpZnQgZWxlZ2FuY2Ugb2YgYSByZXRyZWF0aW5nIG55bXBoLg==" }, |
michael@0 | 1153 | { "Ever heard hissing outside? I *knew* you hadn't!", |
michael@0 | 1154 | "RXZlciBoZWFyZCBoaXNzaW5nIG91dHNpZGU/IEkgKmtuZXcqIHlvdSBoYWRuJ3Qh" }, |
michael@0 | 1155 | { "Ever lifted a dragon corpse?", |
michael@0 | 1156 | "RXZlciBsaWZ0ZWQgYSBkcmFnb24gY29ycHNlPw==" }, |
michael@0 | 1157 | { "Ever seen a leocrotta dancing the tengu?", |
michael@0 | 1158 | "RXZlciBzZWVuIGEgbGVvY3JvdHRhIGRhbmNpbmcgdGhlIHRlbmd1Pw==" }, |
michael@0 | 1159 | { "Ever seen your weapon glow plaid?", |
michael@0 | 1160 | "RXZlciBzZWVuIHlvdXIgd2VhcG9uIGdsb3cgcGxhaWQ/" }, |
michael@0 | 1161 | { "Ever tamed a shopkeeper?", |
michael@0 | 1162 | "RXZlciB0YW1lZCBhIHNob3BrZWVwZXI/" }, |
michael@0 | 1163 | { "Ever tried digging through a Vault Guard?", |
michael@0 | 1164 | "RXZlciB0cmllZCBkaWdnaW5nIHRocm91Z2ggYSBWYXVsdCBHdWFyZD8=" }, |
michael@0 | 1165 | { "Ever tried enchanting a rope?", |
michael@0 | 1166 | "RXZlciB0cmllZCBlbmNoYW50aW5nIGEgcm9wZT8=" }, |
michael@0 | 1167 | { "Floating eyes can't stand Hawaiian shirts.", |
michael@0 | 1168 | "RmxvYXRpbmcgZXllcyBjYW4ndCBzdGFuZCBIYXdhaWlhbiBzaGlydHMu" }, |
michael@0 | 1169 | { "For any remedy there is a misery.", |
michael@0 | 1170 | "Rm9yIGFueSByZW1lZHkgdGhlcmUgaXMgYSBtaXNlcnku" }, |
michael@0 | 1171 | { "Giant bats turn into giant vampires.", |
michael@0 | 1172 | "R2lhbnQgYmF0cyB0dXJuIGludG8gZ2lhbnQgdmFtcGlyZXMu" }, |
michael@0 | 1173 | { "Good day for overcoming obstacles. Try a steeplechase.", |
michael@0 | 1174 | "R29vZCBkYXkgZm9yIG92ZXJjb21pbmcgb2JzdGFjbGVzLiBUcnkgYSBzdGVlcGxlY2hhc2Uu" }, |
michael@0 | 1175 | { "Half Moon tonight. (At least it's better than no Moon at all.)", |
michael@0 | 1176 | "SGFsZiBNb29uIHRvbmlnaHQuIChBdCBsZWFzdCBpdCdzIGJldHRlciB0aGFuIG5vIE1vb24gYXQgYWxsLik=" }, |
michael@0 | 1177 | { "Help! I'm being held prisoner in a fortune cookie factory!", |
michael@0 | 1178 | "SGVscCEgSSdtIGJlaW5nIGhlbGQgcHJpc29uZXIgaW4gYSBmb3J0dW5lIGNvb2tpZSBmYWN0b3J5IQ==" }, |
michael@0 | 1179 | { "Housecats have nine lives, kittens only one.", |
michael@0 | 1180 | "SG91c2VjYXRzIGhhdmUgbmluZSBsaXZlcywga2l0dGVucyBvbmx5IG9uZS4=" }, |
michael@0 | 1181 | { "How long can you tread water?", |
michael@0 | 1182 | "SG93IGxvbmcgY2FuIHlvdSB0cmVhZCB3YXRlcj8=" }, |
michael@0 | 1183 | { "Hungry? There is an abundance of food on the next level.", |
michael@0 | 1184 | "SHVuZ3J5PyBUaGVyZSBpcyBhbiBhYnVuZGFuY2Ugb2YgZm9vZCBvbiB0aGUgbmV4dCBsZXZlbC4=" }, |
michael@0 | 1185 | { "I guess you've never hit a mail daemon with the Amulet of Yendor...", |
michael@0 | 1186 | "SSBndWVzcyB5b3UndmUgbmV2ZXIgaGl0IGEgbWFpbCBkYWVtb24gd2l0aCB0aGUgQW11bGV0IG9mIFllbmRvci4uLg==" }, |
michael@0 | 1187 | { "If you are the shopkeeper, you can take things for free.", |
michael@0 | 1188 | "SWYgeW91IGFyZSB0aGUgc2hvcGtlZXBlciwgeW91IGNhbiB0YWtlIHRoaW5ncyBmb3IgZnJlZS4=" }, |
michael@0 | 1189 | { "If you can't learn to do it well, learn to enjoy doing it badly.", |
michael@0 | 1190 | "SWYgeW91IGNhbid0IGxlYXJuIHRvIGRvIGl0IHdlbGwsIGxlYXJuIHRvIGVuam95IGRvaW5nIGl0IGJhZGx5Lg==" }, |
michael@0 | 1191 | { "If you thought the Wizard was bad, just wait till you meet the Warlord!", |
michael@0 | 1192 | "SWYgeW91IHRob3VnaHQgdGhlIFdpemFyZCB3YXMgYmFkLCBqdXN0IHdhaXQgdGlsbCB5b3UgbWVldCB0aGUgV2FybG9yZCE=" }, |
michael@0 | 1193 | { "If you turn blind, don't expect your dog to be turned into a seeing-eye dog.", |
michael@0 | 1194 | "SWYgeW91IHR1cm4gYmxpbmQsIGRvbid0IGV4cGVjdCB5b3VyIGRvZyB0byBiZSB0dXJuZWQgaW50byBhIHNlZWluZy1leWUgZG9nLg==" }, |
michael@0 | 1195 | { "If you want to feel great, you must eat something real big.", |
michael@0 | 1196 | "SWYgeW91IHdhbnQgdG8gZmVlbCBncmVhdCwgeW91IG11c3QgZWF0IHNvbWV0aGluZyByZWFsIGJpZy4=" }, |
michael@0 | 1197 | { "If you want to float, you'd better eat a floating eye.", |
michael@0 | 1198 | "SWYgeW91IHdhbnQgdG8gZmxvYXQsIHlvdSdkIGJldHRlciBlYXQgYSBmbG9hdGluZyBleWUu" }, |
michael@0 | 1199 | { "If your ghost kills a player, it increases your score.", |
michael@0 | 1200 | "SWYgeW91ciBnaG9zdCBraWxscyBhIHBsYXllciwgaXQgaW5jcmVhc2VzIHlvdXIgc2NvcmUu" }, |
michael@0 | 1201 | { "Increase mindpower: Tame your own ghost!", |
michael@0 | 1202 | "SW5jcmVhc2UgbWluZHBvd2VyOiBUYW1lIHlvdXIgb3duIGdob3N0IQ==" }, |
michael@0 | 1203 | { "It furthers one to see the great man.", |
michael@0 | 1204 | "SXQgZnVydGhlcnMgb25lIHRvIHNlZSB0aGUgZ3JlYXQgbWFuLg==" }, |
michael@0 | 1205 | { "It's easy to overlook a monster in a wood.", |
michael@0 | 1206 | "SXQncyBlYXN5IHRvIG92ZXJsb29rIGEgbW9uc3RlciBpbiBhIHdvb2Qu" }, |
michael@0 | 1207 | { "Just below any trapdoor there may be another one. Just keep falling!", |
michael@0 | 1208 | "SnVzdCBiZWxvdyBhbnkgdHJhcGRvb3IgdGhlcmUgbWF5IGJlIGFub3RoZXIgb25lLiBKdXN0IGtlZXAgZmFsbGluZyE=" }, |
michael@0 | 1209 | { "Katanas are very sharp; watch you don't cut yourself.", |
michael@0 | 1210 | "S2F0YW5hcyBhcmUgdmVyeSBzaGFycDsgd2F0Y2ggeW91IGRvbid0IGN1dCB5b3Vyc2VsZi4=" }, |
michael@0 | 1211 | { "Keep a clear mind: quaff clear potions.", |
michael@0 | 1212 | "S2VlcCBhIGNsZWFyIG1pbmQ6IHF1YWZmIGNsZWFyIHBvdGlvbnMu" }, |
michael@0 | 1213 | { "Kicking the terminal doesn't hurt the monsters.", |
michael@0 | 1214 | "S2lja2luZyB0aGUgdGVybWluYWwgZG9lc24ndCBodXJ0IHRoZSBtb25zdGVycy4=" }, |
michael@0 | 1215 | { "Killer bees keep appearing till you kill their queen.", |
michael@0 | 1216 | "S2lsbGVyIGJlZXMga2VlcCBhcHBlYXJpbmcgdGlsbCB5b3Uga2lsbCB0aGVpciBxdWVlbi4=" }, |
michael@0 | 1217 | { "Killer bunnies can be tamed with carrots only.", |
michael@0 | 1218 | "S2lsbGVyIGJ1bm5pZXMgY2FuIGJlIHRhbWVkIHdpdGggY2Fycm90cyBvbmx5Lg==" }, |
michael@0 | 1219 | { "Latest news? Put `rec.games.roguelike.nethack' in your .newsrc!", |
michael@0 | 1220 | "TGF0ZXN0IG5ld3M/IFB1dCBgcmVjLmdhbWVzLnJvZ3VlbGlrZS5uZXRoYWNrJyBpbiB5b3VyIC5uZXdzcmMh" }, |
michael@0 | 1221 | { "Learn how to spell. Play NetHack!", |
michael@0 | 1222 | "TGVhcm4gaG93IHRvIHNwZWxsLiBQbGF5IE5ldEhhY2sh" }, |
michael@0 | 1223 | { "Leprechauns hide their gold in a secret room.", |
michael@0 | 1224 | "TGVwcmVjaGF1bnMgaGlkZSB0aGVpciBnb2xkIGluIGEgc2VjcmV0IHJvb20u" }, |
michael@0 | 1225 | { "Let your fingers do the walking on the yulkjhnb keys.", |
michael@0 | 1226 | "TGV0IHlvdXIgZmluZ2VycyBkbyB0aGUgd2Fsa2luZyBvbiB0aGUgeXVsa2pobmIga2V5cy4=" }, |
michael@0 | 1227 | { "Let's face it: this time you're not going to win.", |
michael@0 | 1228 | "TGV0J3MgZmFjZSBpdDogdGhpcyB0aW1lIHlvdSdyZSBub3QgZ29pbmcgdG8gd2luLg==" }, |
michael@0 | 1229 | { "Let's have a party, drink a lot of booze.", |
michael@0 | 1230 | "TGV0J3MgaGF2ZSBhIHBhcnR5LCBkcmluayBhIGxvdCBvZiBib296ZS4=" }, |
michael@0 | 1231 | { "Liquor sellers do not drink; they hate to see you twice.", |
michael@0 | 1232 | "TGlxdW9yIHNlbGxlcnMgZG8gbm90IGRyaW5rOyB0aGV5IGhhdGUgdG8gc2VlIHlvdSB0d2ljZS4=" }, |
michael@0 | 1233 | { "Lunar eclipse tonight. May as well quit now!", |
michael@0 | 1234 | "THVuYXIgZWNsaXBzZSB0b25pZ2h0LiBNYXkgYXMgd2VsbCBxdWl0IG5vdyE=" }, |
michael@0 | 1235 | { "Meeting your own ghost decreases your luck considerably!", |
michael@0 | 1236 | "TWVldGluZyB5b3VyIG93biBnaG9zdCBkZWNyZWFzZXMgeW91ciBsdWNrIGNvbnNpZGVyYWJseSE=" }, |
michael@0 | 1237 | { "Money to invest? Take it to the local branch of the Magic Memory Vault!", |
michael@0 | 1238 | "TW9uZXkgdG8gaW52ZXN0PyBUYWtlIGl0IHRvIHRoZSBsb2NhbCBicmFuY2ggb2YgdGhlIE1hZ2ljIE1lbW9yeSBWYXVsdCE=" }, |
michael@0 | 1239 | { "Monsters come from nowhere to hit you everywhere.", |
michael@0 | 1240 | "TW9uc3RlcnMgY29tZSBmcm9tIG5vd2hlcmUgdG8gaGl0IHlvdSBldmVyeXdoZXJlLg==" }, |
michael@0 | 1241 | { "Monsters sleep because you are boring, not because they ever get tired.", |
michael@0 | 1242 | "TW9uc3RlcnMgc2xlZXAgYmVjYXVzZSB5b3UgYXJlIGJvcmluZywgbm90IGJlY2F1c2UgdGhleSBldmVyIGdldCB0aXJlZC4=" }, |
michael@0 | 1243 | { "Most monsters prefer minced meat. That's why they are hitting you!", |
michael@0 | 1244 | "TW9zdCBtb25zdGVycyBwcmVmZXIgbWluY2VkIG1lYXQuIFRoYXQncyB3aHkgdGhleSBhcmUgaGl0dGluZyB5b3Uh" }, |
michael@0 | 1245 | { "Most of the bugs in NetHack are on the floor.", |
michael@0 | 1246 | "TW9zdCBvZiB0aGUgYnVncyBpbiBOZXRIYWNrIGFyZSBvbiB0aGUgZmxvb3Iu" }, |
michael@0 | 1247 | { "Much ado Nothing Happens.", |
michael@0 | 1248 | "TXVjaCBhZG8gTm90aGluZyBIYXBwZW5zLg==" }, |
michael@0 | 1249 | { "Multi-player NetHack is a myth.", |
michael@0 | 1250 | "TXVsdGktcGxheWVyIE5ldEhhY2sgaXMgYSBteXRoLg==" }, |
michael@0 | 1251 | { "NetHack is addictive. Too late, you're already hooked.", |
michael@0 | 1252 | "TmV0SGFjayBpcyBhZGRpY3RpdmUuIFRvbyBsYXRlLCB5b3UncmUgYWxyZWFkeSBob29rZWQu" }, |
michael@0 | 1253 | { "Never ask a shopkeeper for a price list.", |
michael@0 | 1254 | "TmV2ZXIgYXNrIGEgc2hvcGtlZXBlciBmb3IgYSBwcmljZSBsaXN0Lg==" }, |
michael@0 | 1255 | { "Never burn a tree, unless you like getting whacked with a +5 shovel.", |
michael@0 | 1256 | "TmV2ZXIgYnVybiBhIHRyZWUsIHVubGVzcyB5b3UgbGlrZSBnZXR0aW5nIHdoYWNrZWQgd2l0aCBhICs1IHNob3ZlbC4=" }, |
michael@0 | 1257 | { "Never eat with glowing hands!", |
michael@0 | 1258 | "TmV2ZXIgZWF0IHdpdGggZ2xvd2luZyBoYW5kcyE=" }, |
michael@0 | 1259 | { "Never mind the monsters hitting you: they just replace the charwomen.", |
michael@0 | 1260 | "TmV2ZXIgbWluZCB0aGUgbW9uc3RlcnMgaGl0dGluZyB5b3U6IHRoZXkganVzdCByZXBsYWNlIHRoZSBjaGFyd29tZW4u" }, |
michael@0 | 1261 | { "Never play leapfrog with a unicorn.", |
michael@0 | 1262 | "TmV2ZXIgcGxheSBsZWFwZnJvZyB3aXRoIGEgdW5pY29ybi4=" }, |
michael@0 | 1263 | { "Never step on a cursed engraving.", |
michael@0 | 1264 | "TmV2ZXIgc3RlcCBvbiBhIGN1cnNlZCBlbmdyYXZpbmcu" }, |
michael@0 | 1265 | { "Never swim with a camera: there's nothing to take pictures of.", |
michael@0 | 1266 | "TmV2ZXIgc3dpbSB3aXRoIGEgY2FtZXJhOiB0aGVyZSdzIG5vdGhpbmcgdG8gdGFrZSBwaWN0dXJlcyBvZi4=" }, |
michael@0 | 1267 | { "Never teach your pet rust monster to fetch.", |
michael@0 | 1268 | "TmV2ZXIgdGVhY2ggeW91ciBwZXQgcnVzdCBtb25zdGVyIHRvIGZldGNoLg==" }, |
michael@0 | 1269 | { "Never trust a random generator in magic fields.", |
michael@0 | 1270 | "TmV2ZXIgdHJ1c3QgYSByYW5kb20gZ2VuZXJhdG9yIGluIG1hZ2ljIGZpZWxkcy4=" }, |
michael@0 | 1271 | { "Never use a wand of death.", |
michael@0 | 1272 | "TmV2ZXIgdXNlIGEgd2FuZCBvZiBkZWF0aC4=" }, |
michael@0 | 1273 | { "No level contains two shops. The maze is no level. So...", |
michael@0 | 1274 | "Tm8gbGV2ZWwgY29udGFpbnMgdHdvIHNob3BzLiBUaGUgbWF6ZSBpcyBubyBsZXZlbC4gU28uLi4=" }, |
michael@0 | 1275 | { "No part of this fortune may be reproduced, stored in a retrieval system, ...", |
michael@0 | 1276 | "Tm8gcGFydCBvZiB0aGlzIGZvcnR1bmUgbWF5IGJlIHJlcHJvZHVjZWQsIHN0b3JlZCBpbiBhIHJldHJpZXZhbCBzeXN0ZW0sIC4uLg==" }, |
michael@0 | 1277 | { "Not all rumors are as misleading as this one.", |
michael@0 | 1278 | "Tm90IGFsbCBydW1vcnMgYXJlIGFzIG1pc2xlYWRpbmcgYXMgdGhpcyBvbmUu" }, |
michael@0 | 1279 | { "Nymphs and nurses like beautiful rings.", |
michael@0 | 1280 | "TnltcGhzIGFuZCBudXJzZXMgbGlrZSBiZWF1dGlmdWwgcmluZ3Mu" }, |
michael@0 | 1281 | { "Nymphs are blondes. Are you a gentleman?", |
michael@0 | 1282 | "TnltcGhzIGFyZSBibG9uZGVzLiBBcmUgeW91IGEgZ2VudGxlbWFuPw==" }, |
michael@0 | 1283 | { "Offering a unicorn a worthless piece of glass might prove to be fatal!", |
michael@0 | 1284 | "T2ZmZXJpbmcgYSB1bmljb3JuIGEgd29ydGhsZXNzIHBpZWNlIG9mIGdsYXNzIG1pZ2h0IHByb3ZlIHRvIGJlIGZhdGFsIQ==" }, |
michael@0 | 1285 | { "Old hackers never die: young ones do.", |
michael@0 | 1286 | "T2xkIGhhY2tlcnMgbmV2ZXIgZGllOiB5b3VuZyBvbmVzIGRvLg==" }, |
michael@0 | 1287 | { "One has to leave shops before closing time.", |
michael@0 | 1288 | "T25lIGhhcyB0byBsZWF2ZSBzaG9wcyBiZWZvcmUgY2xvc2luZyB0aW1lLg==" }, |
michael@0 | 1289 | { "One homunculus a day keeps the doctor away.", |
michael@0 | 1290 | "T25lIGhvbXVuY3VsdXMgYSBkYXkga2VlcHMgdGhlIGRvY3RvciBhd2F5Lg==" }, |
michael@0 | 1291 | { "One level further down somebody is getting killed, right now.", |
michael@0 | 1292 | "T25lIGxldmVsIGZ1cnRoZXIgZG93biBzb21lYm9keSBpcyBnZXR0aW5nIGtpbGxlZCwgcmlnaHQgbm93Lg==" }, |
michael@0 | 1293 | { "Only a wizard can use a magic whistle.", |
michael@0 | 1294 | "T25seSBhIHdpemFyZCBjYW4gdXNlIGEgbWFnaWMgd2hpc3RsZS4=" }, |
michael@0 | 1295 | { "Only adventurers of evil alignment think of killing their dog.", |
michael@0 | 1296 | "T25seSBhZHZlbnR1cmVycyBvZiBldmlsIGFsaWdubWVudCB0aGluayBvZiBraWxsaW5nIHRoZWlyIGRvZy4=" }, |
michael@0 | 1297 | { "Only chaotic evils kill sleeping monsters.", |
michael@0 | 1298 | "T25seSBjaGFvdGljIGV2aWxzIGtpbGwgc2xlZXBpbmcgbW9uc3RlcnMu" }, |
michael@0 | 1299 | { "Only real trappers escape traps.", |
michael@0 | 1300 | "T25seSByZWFsIHRyYXBwZXJzIGVzY2FwZSB0cmFwcy4=" }, |
michael@0 | 1301 | { "Only real wizards can write scrolls.", |
michael@0 | 1302 | "T25seSByZWFsIHdpemFyZHMgY2FuIHdyaXRlIHNjcm9sbHMu" }, |
michael@0 | 1303 | { "Operation OVERKILL has started now.", |
michael@0 | 1304 | "T3BlcmF0aW9uIE9WRVJLSUxMIGhhcyBzdGFydGVkIG5vdy4=" }, |
michael@0 | 1305 | { "PLEASE ignore previous rumor.", |
michael@0 | 1306 | "UExFQVNFIGlnbm9yZSBwcmV2aW91cyBydW1vci4=" }, |
michael@0 | 1307 | { "Polymorph into an ettin; meet your opponents face to face to face.", |
michael@0 | 1308 | "UG9seW1vcnBoIGludG8gYW4gZXR0aW47IG1lZXQgeW91ciBvcHBvbmVudHMgZmFjZSB0byBmYWNlIHRvIGZhY2Uu" }, |
michael@0 | 1309 | { "Praying will frighten demons.", |
michael@0 | 1310 | "UHJheWluZyB3aWxsIGZyaWdodGVuIGRlbW9ucy4=" }, |
michael@0 | 1311 | { "Row (3x) that boat gently down the stream, Charon (4x), death is but a dream.", |
michael@0 | 1312 | "Um93ICgzeCkgdGhhdCBib2F0IGdlbnRseSBkb3duIHRoZSBzdHJlYW0sIENoYXJvbiAoNHgpLCBkZWF0aCBpcyBidXQgYSBkcmVhbS4=" }, |
michael@0 | 1313 | { "Running is good for your legs.", |
michael@0 | 1314 | "UnVubmluZyBpcyBnb29kIGZvciB5b3VyIGxlZ3Mu" }, |
michael@0 | 1315 | { "Screw up your courage! You've screwed up everything else.", |
michael@0 | 1316 | "U2NyZXcgdXAgeW91ciBjb3VyYWdlISBZb3UndmUgc2NyZXdlZCB1cCBldmVyeXRoaW5nIGVsc2Uu" }, |
michael@0 | 1317 | { "Seepage? Leaky pipes? Rising damp? Summon the plumber!", |
michael@0 | 1318 | "U2VlcGFnZT8gTGVha3kgcGlwZXM/IFJpc2luZyBkYW1wPyBTdW1tb24gdGhlIHBsdW1iZXIh" }, |
michael@0 | 1319 | { "Segmentation fault (core dumped).", |
michael@0 | 1320 | "U2VnbWVudGF0aW9uIGZhdWx0IChjb3JlIGR1bXBlZCku" }, |
michael@0 | 1321 | { "Shopkeepers sometimes die from old age.", |
michael@0 | 1322 | "U2hvcGtlZXBlcnMgc29tZXRpbWVzIGRpZSBmcm9tIG9sZCBhZ2Uu" }, |
michael@0 | 1323 | { "Some mazes (especially small ones) have no solutions, says man 6 maze.", |
michael@0 | 1324 | "U29tZSBtYXplcyAoZXNwZWNpYWxseSBzbWFsbCBvbmVzKSBoYXZlIG5vIHNvbHV0aW9ucywgc2F5cyBtYW4gNiBtYXplLg==" }, |
michael@0 | 1325 | { "Some questions the Sphynx asks just *don't* have any answers.", |
michael@0 | 1326 | "U29tZSBxdWVzdGlvbnMgdGhlIFNwaHlueCBhc2tzIGp1c3QgKmRvbid0KiBoYXZlIGFueSBhbnN3ZXJzLg==" }, |
michael@0 | 1327 | { "Sometimes \"mu\" is the answer.", |
michael@0 | 1328 | "U29tZXRpbWVzICJtdSIgaXMgdGhlIGFuc3dlci4=" }, |
michael@0 | 1329 | { "Sorry, no fortune this time. Better luck next cookie!", |
michael@0 | 1330 | "U29ycnksIG5vIGZvcnR1bmUgdGhpcyB0aW1lLiBCZXR0ZXIgbHVjayBuZXh0IGNvb2tpZSE=" }, |
michael@0 | 1331 | { "Spare your scrolls of make-edible until it's really necessary!", |
michael@0 | 1332 | "U3BhcmUgeW91ciBzY3JvbGxzIG9mIG1ha2UtZWRpYmxlIHVudGlsIGl0J3MgcmVhbGx5IG5lY2Vzc2FyeSE=" }, |
michael@0 | 1333 | { "Suddenly, the dungeon will collapse...", |
michael@0 | 1334 | "U3VkZGVubHksIHRoZSBkdW5nZW9uIHdpbGwgY29sbGFwc2UuLi4=" }, |
michael@0 | 1335 | { "Taming a mail daemon may cause a system security violation.", |
michael@0 | 1336 | "VGFtaW5nIGEgbWFpbCBkYWVtb24gbWF5IGNhdXNlIGEgc3lzdGVtIHNlY3VyaXR5IHZpb2xhdGlvbi4=" }, |
michael@0 | 1337 | { "The crowd was so tough, the Stooges won't play the Dungeon anymore, nyuk nyuk.", |
michael@0 | 1338 | "VGhlIGNyb3dkIHdhcyBzbyB0b3VnaCwgdGhlIFN0b29nZXMgd29uJ3QgcGxheSB0aGUgRHVuZ2VvbiBhbnltb3JlLCBueXVrIG55dWsu" }, |
michael@0 | 1339 | { "The leprechauns hide their treasure in a small hidden room.", |
michael@0 | 1340 | "VGhlIGxlcHJlY2hhdW5zIGhpZGUgdGhlaXIgdHJlYXN1cmUgaW4gYSBzbWFsbCBoaWRkZW4gcm9vbS4=" }, |
michael@0 | 1341 | { "The longer the wand the better.", |
michael@0 | 1342 | "VGhlIGxvbmdlciB0aGUgd2FuZCB0aGUgYmV0dGVyLg==" }, |
michael@0 | 1343 | { "The magic word is \"XYZZY\".", |
michael@0 | 1344 | "VGhlIG1hZ2ljIHdvcmQgaXMgIlhZWlpZIi4=" }, |
michael@0 | 1345 | { "The meek shall inherit your bones files.", |
michael@0 | 1346 | "VGhlIG1lZWsgc2hhbGwgaW5oZXJpdCB5b3VyIGJvbmVzIGZpbGVzLg==" }, |
michael@0 | 1347 | { "The mines are dark and deep, and I have levels to go before I sleep.", |
michael@0 | 1348 | "VGhlIG1pbmVzIGFyZSBkYXJrIGFuZCBkZWVwLCBhbmQgSSBoYXZlIGxldmVscyB0byBnbyBiZWZvcmUgSSBzbGVlcC4=" }, |
michael@0 | 1349 | { "The use of dynamite is dangerous.", |
michael@0 | 1350 | "VGhlIHVzZSBvZiBkeW5hbWl0ZSBpcyBkYW5nZXJvdXMu" }, |
michael@0 | 1351 | { "There are no worms in the UNIX version.", |
michael@0 | 1352 | "VGhlcmUgYXJlIG5vIHdvcm1zIGluIHRoZSBVTklYIHZlcnNpb24u" }, |
michael@0 | 1353 | { "There is a trap on this level!", |
michael@0 | 1354 | "VGhlcmUgaXMgYSB0cmFwIG9uIHRoaXMgbGV2ZWwh" }, |
michael@0 | 1355 | { "They say that Demogorgon, Asmodeus, Orcus, Yeenoghu & Juiblex is no law firm.", |
michael@0 | 1356 | "VGhleSBzYXkgdGhhdCBEZW1vZ29yZ29uLCBBc21vZGV1cywgT3JjdXMsIFllZW5vZ2h1ICYgSnVpYmxleCBpcyBubyBsYXcgZmlybS4=" }, |
michael@0 | 1357 | { "They say that Geryon has an evil twin, beware!", |
michael@0 | 1358 | "VGhleSBzYXkgdGhhdCBHZXJ5b24gaGFzIGFuIGV2aWwgdHdpbiwgYmV3YXJlIQ==" }, |
michael@0 | 1359 | { "They say that Medusa would make a terrible pet.", |
michael@0 | 1360 | "VGhleSBzYXkgdGhhdCBNZWR1c2Egd291bGQgbWFrZSBhIHRlcnJpYmxlIHBldC4=" }, |
michael@0 | 1361 | { "They say that NetHack bugs are Seldon planned.", |
michael@0 | 1362 | "VGhleSBzYXkgdGhhdCBOZXRIYWNrIGJ1Z3MgYXJlIFNlbGRvbiBwbGFubmVkLg==" }, |
michael@0 | 1363 | { "They say that NetHack comes in 256 flavors.", |
michael@0 | 1364 | "VGhleSBzYXkgdGhhdCBOZXRIYWNrIGNvbWVzIGluIDI1NiBmbGF2b3JzLg==" }, |
michael@0 | 1365 | { "They say that NetHack is just a computer game.", |
michael@0 | 1366 | "VGhleSBzYXkgdGhhdCBOZXRIYWNrIGlzIGp1c3QgYSBjb21wdXRlciBnYW1lLg==" }, |
michael@0 | 1367 | { "They say that NetHack is more than just a computer game.", |
michael@0 | 1368 | "VGhleSBzYXkgdGhhdCBOZXRIYWNrIGlzIG1vcmUgdGhhbiBqdXN0IGEgY29tcHV0ZXIgZ2FtZS4=" }, |
michael@0 | 1369 | { "They say that NetHack is never what it used to be.", |
michael@0 | 1370 | "VGhleSBzYXkgdGhhdCBOZXRIYWNrIGlzIG5ldmVyIHdoYXQgaXQgdXNlZCB0byBiZS4=" }, |
michael@0 | 1371 | { "They say that a baby dragon is too small to hurt or help you.", |
michael@0 | 1372 | "VGhleSBzYXkgdGhhdCBhIGJhYnkgZHJhZ29uIGlzIHRvbyBzbWFsbCB0byBodXJ0IG9yIGhlbHAgeW91Lg==" }, |
michael@0 | 1373 | { "They say that a black pudding is simply a brown pudding gone bad.", |
michael@0 | 1374 | "VGhleSBzYXkgdGhhdCBhIGJsYWNrIHB1ZGRpbmcgaXMgc2ltcGx5IGEgYnJvd24gcHVkZGluZyBnb25lIGJhZC4=" }, |
michael@0 | 1375 | { "They say that a black sheep has 3 bags full of wool.", |
michael@0 | 1376 | "VGhleSBzYXkgdGhhdCBhIGJsYWNrIHNoZWVwIGhhcyAzIGJhZ3MgZnVsbCBvZiB3b29sLg==" }, |
michael@0 | 1377 | { "They say that a blank scroll is like a blank check.", |
michael@0 | 1378 | "VGhleSBzYXkgdGhhdCBhIGJsYW5rIHNjcm9sbCBpcyBsaWtlIGEgYmxhbmsgY2hlY2su" }, |
michael@0 | 1379 | { "They say that a cat named Morris has nine lives.", |
michael@0 | 1380 | "VGhleSBzYXkgdGhhdCBhIGNhdCBuYW1lZCBNb3JyaXMgaGFzIG5pbmUgbGl2ZXMu" }, |
michael@0 | 1381 | { "They say that a desperate shopper might pay any price in a shop.", |
michael@0 | 1382 | "VGhleSBzYXkgdGhhdCBhIGRlc3BlcmF0ZSBzaG9wcGVyIG1pZ2h0IHBheSBhbnkgcHJpY2UgaW4gYSBzaG9wLg==" }, |
michael@0 | 1383 | { "They say that a diamond dog is everybody's best friend.", |
michael@0 | 1384 | "VGhleSBzYXkgdGhhdCBhIGRpYW1vbmQgZG9nIGlzIGV2ZXJ5Ym9keSdzIGJlc3QgZnJpZW5kLg==" }, |
michael@0 | 1385 | { "They say that a dwarf lord can carry a pick-axe because his armor is light.", |
michael@0 | 1386 | "VGhleSBzYXkgdGhhdCBhIGR3YXJmIGxvcmQgY2FuIGNhcnJ5IGEgcGljay1heGUgYmVjYXVzZSBoaXMgYXJtb3IgaXMgbGlnaHQu" }, |
michael@0 | 1387 | { "They say that a floating eye can defeat Medusa.", |
michael@0 | 1388 | "VGhleSBzYXkgdGhhdCBhIGZsb2F0aW5nIGV5ZSBjYW4gZGVmZWF0IE1lZHVzYS4=" }, |
michael@0 | 1389 | { "They say that a fortune only has 1 line and you can't read between it.", |
michael@0 | 1390 | "VGhleSBzYXkgdGhhdCBhIGZvcnR1bmUgb25seSBoYXMgMSBsaW5lIGFuZCB5b3UgY2FuJ3QgcmVhZCBiZXR3ZWVuIGl0Lg==" }, |
michael@0 | 1391 | { "They say that a fortune only has 1 line, but you can read between it.", |
michael@0 | 1392 | "VGhleSBzYXkgdGhhdCBhIGZvcnR1bmUgb25seSBoYXMgMSBsaW5lLCBidXQgeW91IGNhbiByZWFkIGJldHdlZW4gaXQu" }, |
michael@0 | 1393 | { "They say that a fountain looks nothing like a regularly erupting geyser.", |
michael@0 | 1394 | "VGhleSBzYXkgdGhhdCBhIGZvdW50YWluIGxvb2tzIG5vdGhpbmcgbGlrZSBhIHJlZ3VsYXJseSBlcnVwdGluZyBnZXlzZXIu" }, |
michael@0 | 1395 | { "They say that a gold doubloon is worth more than its weight in gold.", |
michael@0 | 1396 | "VGhleSBzYXkgdGhhdCBhIGdvbGQgZG91Ymxvb24gaXMgd29ydGggbW9yZSB0aGFuIGl0cyB3ZWlnaHQgaW4gZ29sZC4=" }, |
michael@0 | 1397 | { "They say that a grid bug won't pay a shopkeeper for zapping you in a shop.", |
michael@0 | 1398 | "VGhleSBzYXkgdGhhdCBhIGdyaWQgYnVnIHdvbid0IHBheSBhIHNob3BrZWVwZXIgZm9yIHphcHBpbmcgeW91IGluIGEgc2hvcC4=" }, |
michael@0 | 1399 | { "They say that a gypsy could tell your fortune for a price.", |
michael@0 | 1400 | "VGhleSBzYXkgdGhhdCBhIGd5cHN5IGNvdWxkIHRlbGwgeW91ciBmb3J0dW5lIGZvciBhIHByaWNlLg==" }, |
michael@0 | 1401 | { "They say that a hacker named Alice once level teleported by using a mirror.", |
michael@0 | 1402 | "VGhleSBzYXkgdGhhdCBhIGhhY2tlciBuYW1lZCBBbGljZSBvbmNlIGxldmVsIHRlbGVwb3J0ZWQgYnkgdXNpbmcgYSBtaXJyb3Iu" }, |
michael@0 | 1403 | { "They say that a hacker named David once slew a giant with a sling and a rock.", |
michael@0 | 1404 | "VGhleSBzYXkgdGhhdCBhIGhhY2tlciBuYW1lZCBEYXZpZCBvbmNlIHNsZXcgYSBnaWFudCB3aXRoIGEgc2xpbmcgYW5kIGEgcm9jay4=" }, |
michael@0 | 1405 | { "They say that a hacker named Dorothy once rode a fog cloud to Oz.", |
michael@0 | 1406 | "VGhleSBzYXkgdGhhdCBhIGhhY2tlciBuYW1lZCBEb3JvdGh5IG9uY2Ugcm9kZSBhIGZvZyBjbG91ZCB0byBPei4=" }, |
michael@0 | 1407 | { "They say that a hacker named Mary once lost a white sheep in the mazes.", |
michael@0 | 1408 | "VGhleSBzYXkgdGhhdCBhIGhhY2tlciBuYW1lZCBNYXJ5IG9uY2UgbG9zdCBhIHdoaXRlIHNoZWVwIGluIHRoZSBtYXplcy4=" }, |
michael@0 | 1409 | { "They say that a helm of brilliance is not to be taken lightly.", |
michael@0 | 1410 | "VGhleSBzYXkgdGhhdCBhIGhlbG0gb2YgYnJpbGxpYW5jZSBpcyBub3QgdG8gYmUgdGFrZW4gbGlnaHRseS4=" }, |
michael@0 | 1411 | { "They say that a hot dog and a hell hound are the same thing.", |
michael@0 | 1412 | "VGhleSBzYXkgdGhhdCBhIGhvdCBkb2cgYW5kIGEgaGVsbCBob3VuZCBhcmUgdGhlIHNhbWUgdGhpbmcu" }, |
michael@0 | 1413 | { "They say that a lamp named Aladdin's Lamp contains a djinni with 3 wishes.", |
michael@0 | 1414 | "VGhleSBzYXkgdGhhdCBhIGxhbXAgbmFtZWQgQWxhZGRpbidzIExhbXAgY29udGFpbnMgYSBkamlubmkgd2l0aCAzIHdpc2hlcy4=" }, |
michael@0 | 1415 | { "They say that a large dog named Lassie will lead you to the amulet.", |
michael@0 | 1416 | "VGhleSBzYXkgdGhhdCBhIGxhcmdlIGRvZyBuYW1lZCBMYXNzaWUgd2lsbCBsZWFkIHlvdSB0byB0aGUgYW11bGV0Lg==" }, |
michael@0 | 1417 | { "They say that a long sword is not a light sword.", |
michael@0 | 1418 | "VGhleSBzYXkgdGhhdCBhIGxvbmcgc3dvcmQgaXMgbm90IGEgbGlnaHQgc3dvcmQu" }, |
michael@0 | 1419 | { "They say that a manes won't mince words with you.", |
michael@0 | 1420 | "VGhleSBzYXkgdGhhdCBhIG1hbmVzIHdvbid0IG1pbmNlIHdvcmRzIHdpdGggeW91Lg==" }, |
michael@0 | 1421 | { "They say that a mind is a terrible thing to waste.", |
michael@0 | 1422 | "VGhleSBzYXkgdGhhdCBhIG1pbmQgaXMgYSB0ZXJyaWJsZSB0aGluZyB0byB3YXN0ZS4=" }, |
michael@0 | 1423 | { "They say that a plain nymph will only wear a wire ring in one ear.", |
michael@0 | 1424 | "VGhleSBzYXkgdGhhdCBhIHBsYWluIG55bXBoIHdpbGwgb25seSB3ZWFyIGEgd2lyZSByaW5nIGluIG9uZSBlYXIu" }, |
michael@0 | 1425 | { "They say that a plumed hat could be a previously used crested helmet.", |
michael@0 | 1426 | "VGhleSBzYXkgdGhhdCBhIHBsdW1lZCBoYXQgY291bGQgYmUgYSBwcmV2aW91c2x5IHVzZWQgY3Jlc3RlZCBoZWxtZXQu" }, |
michael@0 | 1427 | { "They say that a potion of oil is difficult to grasp.", |
michael@0 | 1428 | "VGhleSBzYXkgdGhhdCBhIHBvdGlvbiBvZiBvaWwgaXMgZGlmZmljdWx0IHRvIGdyYXNwLg==" }, |
michael@0 | 1429 | { "They say that a potion of yogurt is a cancelled potion of sickness.", |
michael@0 | 1430 | "VGhleSBzYXkgdGhhdCBhIHBvdGlvbiBvZiB5b2d1cnQgaXMgYSBjYW5jZWxsZWQgcG90aW9uIG9mIHNpY2tuZXNzLg==" }, |
michael@0 | 1431 | { "They say that a purple worm is not a baby purple dragon.", |
michael@0 | 1432 | "VGhleSBzYXkgdGhhdCBhIHB1cnBsZSB3b3JtIGlzIG5vdCBhIGJhYnkgcHVycGxlIGRyYWdvbi4=" }, |
michael@0 | 1433 | { "They say that a quivering blob tastes different than a gelatinous cube.", |
michael@0 | 1434 | "VGhleSBzYXkgdGhhdCBhIHF1aXZlcmluZyBibG9iIHRhc3RlcyBkaWZmZXJlbnQgdGhhbiBhIGdlbGF0aW5vdXMgY3ViZS4=" }, |
michael@0 | 1435 | { "They say that a runed broadsword named Stormbringer attracts vortices.", |
michael@0 | 1436 | "VGhleSBzYXkgdGhhdCBhIHJ1bmVkIGJyb2Fkc3dvcmQgbmFtZWQgU3Rvcm1icmluZ2VyIGF0dHJhY3RzIHZvcnRpY2VzLg==" }, |
michael@0 | 1437 | { "They say that a scroll of summoning has other names.", |
michael@0 | 1438 | "VGhleSBzYXkgdGhhdCBhIHNjcm9sbCBvZiBzdW1tb25pbmcgaGFzIG90aGVyIG5hbWVzLg==" }, |
michael@0 | 1439 | { "They say that a shaman can bestow blessings but usually doesn't.", |
michael@0 | 1440 | "VGhleSBzYXkgdGhhdCBhIHNoYW1hbiBjYW4gYmVzdG93IGJsZXNzaW5ncyBidXQgdXN1YWxseSBkb2Vzbid0Lg==" }, |
michael@0 | 1441 | { "They say that a shaman will bless you for an eye of newt and wing of bat.", |
michael@0 | 1442 | "VGhleSBzYXkgdGhhdCBhIHNoYW1hbiB3aWxsIGJsZXNzIHlvdSBmb3IgYW4gZXllIG9mIG5ld3QgYW5kIHdpbmcgb2YgYmF0Lg==" }, |
michael@0 | 1443 | { "They say that a shimmering gold shield is not a polished silver shield.", |
michael@0 | 1444 | "VGhleSBzYXkgdGhhdCBhIHNoaW1tZXJpbmcgZ29sZCBzaGllbGQgaXMgbm90IGEgcG9saXNoZWQgc2lsdmVyIHNoaWVsZC4=" }, |
michael@0 | 1445 | { "They say that a spear will hit a neo-otyugh. (Do YOU know what that is?)", |
michael@0 | 1446 | "VGhleSBzYXkgdGhhdCBhIHNwZWFyIHdpbGwgaGl0IGEgbmVvLW90eXVnaC4gKERvIFlPVSBrbm93IHdoYXQgdGhhdCBpcz8p" }, |
michael@0 | 1447 | { "They say that a spotted dragon is the ultimate shape changer.", |
michael@0 | 1448 | "VGhleSBzYXkgdGhhdCBhIHNwb3R0ZWQgZHJhZ29uIGlzIHRoZSB1bHRpbWF0ZSBzaGFwZSBjaGFuZ2VyLg==" }, |
michael@0 | 1449 | { "They say that a stethoscope is no good if you can only hear your heartbeat.", |
michael@0 | 1450 | "VGhleSBzYXkgdGhhdCBhIHN0ZXRob3Njb3BlIGlzIG5vIGdvb2QgaWYgeW91IGNhbiBvbmx5IGhlYXIgeW91ciBoZWFydGJlYXQu" }, |
michael@0 | 1451 | { "They say that a succubus named Suzy will sometimes warn you of danger.", |
michael@0 | 1452 | "VGhleSBzYXkgdGhhdCBhIHN1Y2N1YnVzIG5hbWVkIFN1enkgd2lsbCBzb21ldGltZXMgd2FybiB5b3Ugb2YgZGFuZ2VyLg==" }, |
michael@0 | 1453 | { "They say that a wand of cancellation is not like a wand of polymorph.", |
michael@0 | 1454 | "VGhleSBzYXkgdGhhdCBhIHdhbmQgb2YgY2FuY2VsbGF0aW9uIGlzIG5vdCBsaWtlIGEgd2FuZCBvZiBwb2x5bW9ycGgu" }, |
michael@0 | 1455 | { "They say that a wood golem named Pinocchio would be easy to control.", |
michael@0 | 1456 | "VGhleSBzYXkgdGhhdCBhIHdvb2QgZ29sZW0gbmFtZWQgUGlub2NjaGlvIHdvdWxkIGJlIGVhc3kgdG8gY29udHJvbC4=" }, |
michael@0 | 1457 | { "They say that after killing a dragon it's time for a change of scenery.", |
michael@0 | 1458 | "VGhleSBzYXkgdGhhdCBhZnRlciBraWxsaW5nIGEgZHJhZ29uIGl0J3MgdGltZSBmb3IgYSBjaGFuZ2Ugb2Ygc2NlbmVyeS4=" }, |
michael@0 | 1459 | { "They say that an amulet of strangulation is worse than ring around the collar.", |
michael@0 | 1460 | "VGhleSBzYXkgdGhhdCBhbiBhbXVsZXQgb2Ygc3RyYW5ndWxhdGlvbiBpcyB3b3JzZSB0aGFuIHJpbmcgYXJvdW5kIHRoZSBjb2xsYXIu" }, |
michael@0 | 1461 | { "They say that an attic is the best place to hide your toys.", |
michael@0 | 1462 | "VGhleSBzYXkgdGhhdCBhbiBhdHRpYyBpcyB0aGUgYmVzdCBwbGFjZSB0byBoaWRlIHlvdXIgdG95cy4=" }, |
michael@0 | 1463 | { "They say that an axe named Cleaver once belonged to a hacker named Beaver.", |
michael@0 | 1464 | "VGhleSBzYXkgdGhhdCBhbiBheGUgbmFtZWQgQ2xlYXZlciBvbmNlIGJlbG9uZ2VkIHRvIGEgaGFja2VyIG5hbWVkIEJlYXZlci4=" }, |
michael@0 | 1465 | { "They say that an eye of newt and a wing of bat are double the trouble.", |
michael@0 | 1466 | "VGhleSBzYXkgdGhhdCBhbiBleWUgb2YgbmV3dCBhbmQgYSB3aW5nIG9mIGJhdCBhcmUgZG91YmxlIHRoZSB0cm91YmxlLg==" }, |
michael@0 | 1467 | { "They say that an incubus named Izzy sometimes makes women feel sensitive.", |
michael@0 | 1468 | "VGhleSBzYXkgdGhhdCBhbiBpbmN1YnVzIG5hbWVkIEl6enkgc29tZXRpbWVzIG1ha2VzIHdvbWVuIGZlZWwgc2Vuc2l0aXZlLg==" }, |
michael@0 | 1469 | { "They say that an opulent throne room is rarely a place to wish you'd be in.", |
michael@0 | 1470 | "VGhleSBzYXkgdGhhdCBhbiBvcHVsZW50IHRocm9uZSByb29tIGlzIHJhcmVseSBhIHBsYWNlIHRvIHdpc2ggeW91J2QgYmUgaW4u" }, |
michael@0 | 1471 | { "They say that an unlucky hacker once had a nose bleed at an altar and died.", |
michael@0 | 1472 | "VGhleSBzYXkgdGhhdCBhbiB1bmx1Y2t5IGhhY2tlciBvbmNlIGhhZCBhIG5vc2UgYmxlZWQgYXQgYW4gYWx0YXIgYW5kIGRpZWQu" }, |
michael@0 | 1473 | { "They say that and they say this but they never say never, never!", |
michael@0 | 1474 | "VGhleSBzYXkgdGhhdCBhbmQgdGhleSBzYXkgdGhpcyBidXQgdGhleSBuZXZlciBzYXkgbmV2ZXIsIG5ldmVyIQ==" }, |
michael@0 | 1475 | { "They say that any quantum mechanic knows that speed kills.", |
michael@0 | 1476 | "VGhleSBzYXkgdGhhdCBhbnkgcXVhbnR1bSBtZWNoYW5pYyBrbm93cyB0aGF0IHNwZWVkIGtpbGxzLg==" }, |
michael@0 | 1477 | { "They say that applying a unicorn horn means you've missed the point.", |
michael@0 | 1478 | "VGhleSBzYXkgdGhhdCBhcHBseWluZyBhIHVuaWNvcm4gaG9ybiBtZWFucyB5b3UndmUgbWlzc2VkIHRoZSBwb2ludC4=" }, |
michael@0 | 1479 | { "They say that blue stones are radioactive, beware.", |
michael@0 | 1480 | "VGhleSBzYXkgdGhhdCBibHVlIHN0b25lcyBhcmUgcmFkaW9hY3RpdmUsIGJld2FyZS4=" }, |
michael@0 | 1481 | { "They say that building a dungeon is a team effort.", |
michael@0 | 1482 | "VGhleSBzYXkgdGhhdCBidWlsZGluZyBhIGR1bmdlb24gaXMgYSB0ZWFtIGVmZm9ydC4=" }, |
michael@0 | 1483 | { "They say that chaotic characters never get a kick out of altars.", |
michael@0 | 1484 | "VGhleSBzYXkgdGhhdCBjaGFvdGljIGNoYXJhY3RlcnMgbmV2ZXIgZ2V0IGEga2ljayBvdXQgb2YgYWx0YXJzLg==" }, |
michael@0 | 1485 | { "They say that collapsing a dungeon often creates a panic.", |
michael@0 | 1486 | "VGhleSBzYXkgdGhhdCBjb2xsYXBzaW5nIGEgZHVuZ2VvbiBvZnRlbiBjcmVhdGVzIGEgcGFuaWMu" }, |
michael@0 | 1487 | { "They say that counting your eggs before they hatch shows that you care.", |
michael@0 | 1488 | "VGhleSBzYXkgdGhhdCBjb3VudGluZyB5b3VyIGVnZ3MgYmVmb3JlIHRoZXkgaGF0Y2ggc2hvd3MgdGhhdCB5b3UgY2FyZS4=" }, |
michael@0 | 1489 | { "They say that dipping a bag of tricks in a fountain won't make it an icebox.", |
michael@0 | 1490 | "VGhleSBzYXkgdGhhdCBkaXBwaW5nIGEgYmFnIG9mIHRyaWNrcyBpbiBhIGZvdW50YWluIHdvbid0IG1ha2UgaXQgYW4gaWNlYm94Lg==" }, |
michael@0 | 1491 | { "They say that dipping an eel and brown mold in hot water makes bouillabaisse.", |
michael@0 | 1492 | "VGhleSBzYXkgdGhhdCBkaXBwaW5nIGFuIGVlbCBhbmQgYnJvd24gbW9sZCBpbiBob3Qgd2F0ZXIgbWFrZXMgYm91aWxsYWJhaXNzZS4=" }, |
michael@0 | 1493 | { "They say that donating a doubloon is extremely pious charity.", |
michael@0 | 1494 | "VGhleSBzYXkgdGhhdCBkb25hdGluZyBhIGRvdWJsb29uIGlzIGV4dHJlbWVseSBwaW91cyBjaGFyaXR5Lg==" }, |
michael@0 | 1495 | { "They say that eating royal jelly attracts grizzly owlbears.", |
michael@0 | 1496 | "VGhleSBzYXkgdGhhdCBlYXRpbmcgcm95YWwgamVsbHkgYXR0cmFjdHMgZ3JpenpseSBvd2xiZWFycy4=" }, |
michael@0 | 1497 | { "They say that eggs, pancakes and juice are just a mundane breakfast.", |
michael@0 | 1498 | "VGhleSBzYXkgdGhhdCBlZ2dzLCBwYW5jYWtlcyBhbmQganVpY2UgYXJlIGp1c3QgYSBtdW5kYW5lIGJyZWFrZmFzdC4=" }, |
michael@0 | 1499 | { "They say that everyone knows why Medusa stands alone in the dark.", |
michael@0 | 1500 | "VGhleSBzYXkgdGhhdCBldmVyeW9uZSBrbm93cyB3aHkgTWVkdXNhIHN0YW5kcyBhbG9uZSBpbiB0aGUgZGFyay4=" }, |
michael@0 | 1501 | { "They say that everyone wanted rec.games.hack to undergo a name change.", |
michael@0 | 1502 | "VGhleSBzYXkgdGhhdCBldmVyeW9uZSB3YW50ZWQgcmVjLmdhbWVzLmhhY2sgdG8gdW5kZXJnbyBhIG5hbWUgY2hhbmdlLg==" }, |
michael@0 | 1503 | { "They say that finding a winning strategy is a deliberate move on your part.", |
michael@0 | 1504 | "VGhleSBzYXkgdGhhdCBmaW5kaW5nIGEgd2lubmluZyBzdHJhdGVneSBpcyBhIGRlbGliZXJhdGUgbW92ZSBvbiB5b3VyIHBhcnQu" }, |
michael@0 | 1505 | { "They say that finding worthless glass is worth something.", |
michael@0 | 1506 | "VGhleSBzYXkgdGhhdCBmaW5kaW5nIHdvcnRobGVzcyBnbGFzcyBpcyB3b3J0aCBzb21ldGhpbmcu" }, |
michael@0 | 1507 | { "They say that fortune cookies are food for thought.", |
michael@0 | 1508 | "VGhleSBzYXkgdGhhdCBmb3J0dW5lIGNvb2tpZXMgYXJlIGZvb2QgZm9yIHRob3VnaHQu" }, |
michael@0 | 1509 | { "They say that gold is only wasted on a pet dragon.", |
michael@0 | 1510 | "VGhleSBzYXkgdGhhdCBnb2xkIGlzIG9ubHkgd2FzdGVkIG9uIGEgcGV0IGRyYWdvbi4=" }, |
michael@0 | 1511 | { "They say that good things come to those that wait.", |
michael@0 | 1512 | "VGhleSBzYXkgdGhhdCBnb29kIHRoaW5ncyBjb21lIHRvIHRob3NlIHRoYXQgd2FpdC4=" }, |
michael@0 | 1513 | { "They say that greased objects will slip out of monsters' hands.", |
michael@0 | 1514 | "VGhleSBzYXkgdGhhdCBncmVhc2VkIG9iamVjdHMgd2lsbCBzbGlwIG91dCBvZiBtb25zdGVycycgaGFuZHMu" }, |
michael@0 | 1515 | { "They say that if you can't spell then you'll wish you had a spell book.", |
michael@0 | 1516 | "VGhleSBzYXkgdGhhdCBpZiB5b3UgY2FuJ3Qgc3BlbGwgdGhlbiB5b3UnbGwgd2lzaCB5b3UgaGFkIGEgc3BlbGwgYm9vay4=" }, |
michael@0 | 1517 | { "They say that if you live by the sword, you'll die by the sword.", |
michael@0 | 1518 | "VGhleSBzYXkgdGhhdCBpZiB5b3UgbGl2ZSBieSB0aGUgc3dvcmQsIHlvdSdsbCBkaWUgYnkgdGhlIHN3b3JkLg==" }, |
michael@0 | 1519 | { "They say that if you play like a monster you'll have a better game.", |
michael@0 | 1520 | "VGhleSBzYXkgdGhhdCBpZiB5b3UgcGxheSBsaWtlIGEgbW9uc3RlciB5b3UnbGwgaGF2ZSBhIGJldHRlciBnYW1lLg==" }, |
michael@0 | 1521 | { "They say that if you sleep with a demon you might awake with a headache.", |
michael@0 | 1522 | "VGhleSBzYXkgdGhhdCBpZiB5b3Ugc2xlZXAgd2l0aCBhIGRlbW9uIHlvdSBtaWdodCBhd2FrZSB3aXRoIGEgaGVhZGFjaGUu" }, |
michael@0 | 1523 | { "They say that if you step on a crack you could break your mother's back.", |
michael@0 | 1524 | "VGhleSBzYXkgdGhhdCBpZiB5b3Ugc3RlcCBvbiBhIGNyYWNrIHlvdSBjb3VsZCBicmVhayB5b3VyIG1vdGhlcidzIGJhY2su" }, |
michael@0 | 1525 | { "They say that if you're invisible you can still be heard!", |
michael@0 | 1526 | "VGhleSBzYXkgdGhhdCBpZiB5b3UncmUgaW52aXNpYmxlIHlvdSBjYW4gc3RpbGwgYmUgaGVhcmQh" }, |
michael@0 | 1527 | { "They say that if you're lucky you can feel the runes on a scroll.", |
michael@0 | 1528 | "VGhleSBzYXkgdGhhdCBpZiB5b3UncmUgbHVja3kgeW91IGNhbiBmZWVsIHRoZSBydW5lcyBvbiBhIHNjcm9sbC4=" }, |
michael@0 | 1529 | { "They say that in the big picture gold is only small change.", |
michael@0 | 1530 | "VGhleSBzYXkgdGhhdCBpbiB0aGUgYmlnIHBpY3R1cmUgZ29sZCBpcyBvbmx5IHNtYWxsIGNoYW5nZS4=" }, |
michael@0 | 1531 | { "They say that in the dungeon it's not what you know that really matters.", |
michael@0 | 1532 | "VGhleSBzYXkgdGhhdCBpbiB0aGUgZHVuZ2VvbiBpdCdzIG5vdCB3aGF0IHlvdSBrbm93IHRoYXQgcmVhbGx5IG1hdHRlcnMu" }, |
michael@0 | 1533 | { "They say that in the dungeon moon rocks are really dilithium crystals.", |
michael@0 | 1534 | "VGhleSBzYXkgdGhhdCBpbiB0aGUgZHVuZ2VvbiBtb29uIHJvY2tzIGFyZSByZWFsbHkgZGlsaXRoaXVtIGNyeXN0YWxzLg==" }, |
michael@0 | 1535 | { "They say that in the dungeon the boorish customer is never right.", |
michael@0 | 1536 | "VGhleSBzYXkgdGhhdCBpbiB0aGUgZHVuZ2VvbiB0aGUgYm9vcmlzaCBjdXN0b21lciBpcyBuZXZlciByaWdodC4=" }, |
michael@0 | 1537 | { "They say that in the dungeon you don't need a watch to tell time.", |
michael@0 | 1538 | "VGhleSBzYXkgdGhhdCBpbiB0aGUgZHVuZ2VvbiB5b3UgZG9uJ3QgbmVlZCBhIHdhdGNoIHRvIHRlbGwgdGltZS4=" }, |
michael@0 | 1539 | { "They say that in the dungeon you need something old, new, burrowed and blue.", |
michael@0 | 1540 | "VGhleSBzYXkgdGhhdCBpbiB0aGUgZHVuZ2VvbiB5b3UgbmVlZCBzb21ldGhpbmcgb2xkLCBuZXcsIGJ1cnJvd2VkIGFuZCBibHVlLg==" }, |
michael@0 | 1541 | { "They say that in the dungeon you should always count your blessings.", |
michael@0 | 1542 | "VGhleSBzYXkgdGhhdCBpbiB0aGUgZHVuZ2VvbiB5b3Ugc2hvdWxkIGFsd2F5cyBjb3VudCB5b3VyIGJsZXNzaW5ncy4=" }, |
michael@0 | 1543 | { "They say that iron golem plate mail isn't worth wishing for.", |
michael@0 | 1544 | "VGhleSBzYXkgdGhhdCBpcm9uIGdvbGVtIHBsYXRlIG1haWwgaXNuJ3Qgd29ydGggd2lzaGluZyBmb3Iu" }, |
michael@0 | 1545 | { "They say that it takes four quarterstaffs to make one staff.", |
michael@0 | 1546 | "VGhleSBzYXkgdGhhdCBpdCB0YWtlcyBmb3VyIHF1YXJ0ZXJzdGFmZnMgdG8gbWFrZSBvbmUgc3RhZmYu" }, |
michael@0 | 1547 | { "They say that it's not over till the fat ladies sing.", |
michael@0 | 1548 | "VGhleSBzYXkgdGhhdCBpdCdzIG5vdCBvdmVyIHRpbGwgdGhlIGZhdCBsYWRpZXMgc2luZy4=" }, |
michael@0 | 1549 | { "They say that it's not over till the fat lady shouts `Off with its head'.", |
michael@0 | 1550 | "VGhleSBzYXkgdGhhdCBpdCdzIG5vdCBvdmVyIHRpbGwgdGhlIGZhdCBsYWR5IHNob3V0cyBgT2ZmIHdpdGggaXRzIGhlYWQnLg==" }, |
michael@0 | 1551 | { "They say that kicking a heavy statue is really a dumb move.", |
michael@0 | 1552 | "VGhleSBzYXkgdGhhdCBraWNraW5nIGEgaGVhdnkgc3RhdHVlIGlzIHJlYWxseSBhIGR1bWIgbW92ZS4=" }, |
michael@0 | 1553 | { "They say that kicking a valuable gem doesn't seem to make sense.", |
michael@0 | 1554 | "VGhleSBzYXkgdGhhdCBraWNraW5nIGEgdmFsdWFibGUgZ2VtIGRvZXNuJ3Qgc2VlbSB0byBtYWtlIHNlbnNlLg==" }, |
michael@0 | 1555 | { "They say that leprechauns know Latin and you should too.", |
michael@0 | 1556 | "VGhleSBzYXkgdGhhdCBsZXByZWNoYXVucyBrbm93IExhdGluIGFuZCB5b3Ugc2hvdWxkIHRvby4=" }, |
michael@0 | 1557 | { "They say that minotaurs get lost outside of the mazes.", |
michael@0 | 1558 | "VGhleSBzYXkgdGhhdCBtaW5vdGF1cnMgZ2V0IGxvc3Qgb3V0c2lkZSBvZiB0aGUgbWF6ZXMu" }, |
michael@0 | 1559 | { "They say that most trolls are born again.", |
michael@0 | 1560 | "VGhleSBzYXkgdGhhdCBtb3N0IHRyb2xscyBhcmUgYm9ybiBhZ2Fpbi4=" }, |
michael@0 | 1561 | { "They say that naming your cat Garfield will make you more attractive.", |
michael@0 | 1562 | "VGhleSBzYXkgdGhhdCBuYW1pbmcgeW91ciBjYXQgR2FyZmllbGQgd2lsbCBtYWtlIHlvdSBtb3JlIGF0dHJhY3RpdmUu" }, |
michael@0 | 1563 | { "They say that no one knows everything about everything in the dungeon.", |
michael@0 | 1564 | "VGhleSBzYXkgdGhhdCBubyBvbmUga25vd3MgZXZlcnl0aGluZyBhYm91dCBldmVyeXRoaW5nIGluIHRoZSBkdW5nZW9uLg==" }, |
michael@0 | 1565 | { "They say that no one plays NetHack just for the fun of it.", |
michael@0 | 1566 | "VGhleSBzYXkgdGhhdCBubyBvbmUgcGxheXMgTmV0SGFjayBqdXN0IGZvciB0aGUgZnVuIG9mIGl0Lg==" }, |
michael@0 | 1567 | { "They say that no one really subscribes to rec.games.roguelike.nethack.", |
michael@0 | 1568 | "VGhleSBzYXkgdGhhdCBubyBvbmUgcmVhbGx5IHN1YnNjcmliZXMgdG8gcmVjLmdhbWVzLnJvZ3VlbGlrZS5uZXRoYWNrLg==" }, |
michael@0 | 1569 | { "They say that no one will admit to starting a rumor.", |
michael@0 | 1570 | "VGhleSBzYXkgdGhhdCBubyBvbmUgd2lsbCBhZG1pdCB0byBzdGFydGluZyBhIHJ1bW9yLg==" }, |
michael@0 | 1571 | { "They say that nurses sometimes carry scalpels and never use them.", |
michael@0 | 1572 | "VGhleSBzYXkgdGhhdCBudXJzZXMgc29tZXRpbWVzIGNhcnJ5IHNjYWxwZWxzIGFuZCBuZXZlciB1c2UgdGhlbS4=" }, |
michael@0 | 1573 | { "They say that once you've met one wizard you've met them all.", |
michael@0 | 1574 | "VGhleSBzYXkgdGhhdCBvbmNlIHlvdSd2ZSBtZXQgb25lIHdpemFyZCB5b3UndmUgbWV0IHRoZW0gYWxsLg==" }, |
michael@0 | 1575 | { "They say that one troll is worth 10,000 newts.", |
michael@0 | 1576 | "VGhleSBzYXkgdGhhdCBvbmUgdHJvbGwgaXMgd29ydGggMTAsMDAwIG5ld3RzLg==" }, |
michael@0 | 1577 | { "They say that only David can find the zoo!", |
michael@0 | 1578 | "VGhleSBzYXkgdGhhdCBvbmx5IERhdmlkIGNhbiBmaW5kIHRoZSB6b28h" }, |
michael@0 | 1579 | { "They say that only angels play their harps for their pets.", |
michael@0 | 1580 | "VGhleSBzYXkgdGhhdCBvbmx5IGFuZ2VscyBwbGF5IHRoZWlyIGhhcnBzIGZvciB0aGVpciBwZXRzLg==" }, |
michael@0 | 1581 | { "They say that only big spenders carry gold.", |
michael@0 | 1582 | "VGhleSBzYXkgdGhhdCBvbmx5IGJpZyBzcGVuZGVycyBjYXJyeSBnb2xkLg==" }, |
michael@0 | 1583 | { "They say that orc shamans are healthy, wealthy and wise.", |
michael@0 | 1584 | "VGhleSBzYXkgdGhhdCBvcmMgc2hhbWFucyBhcmUgaGVhbHRoeSwgd2VhbHRoeSBhbmQgd2lzZS4=" }, |
michael@0 | 1585 | { "They say that playing NetHack is like walking into a death trap.", |
michael@0 | 1586 | "VGhleSBzYXkgdGhhdCBwbGF5aW5nIE5ldEhhY2sgaXMgbGlrZSB3YWxraW5nIGludG8gYSBkZWF0aCB0cmFwLg==" }, |
michael@0 | 1587 | { "They say that problem breathing is best treated by a proper diet.", |
michael@0 | 1588 | "VGhleSBzYXkgdGhhdCBwcm9ibGVtIGJyZWF0aGluZyBpcyBiZXN0IHRyZWF0ZWQgYnkgYSBwcm9wZXIgZGlldC4=" }, |
michael@0 | 1589 | { "They say that quaffing many potions of levitation can give you a headache.", |
michael@0 | 1590 | "VGhleSBzYXkgdGhhdCBxdWFmZmluZyBtYW55IHBvdGlvbnMgb2YgbGV2aXRhdGlvbiBjYW4gZ2l2ZSB5b3UgYSBoZWFkYWNoZS4=" }, |
michael@0 | 1591 | { "They say that queen bees get that way by eating royal jelly.", |
michael@0 | 1592 | "VGhleSBzYXkgdGhhdCBxdWVlbiBiZWVzIGdldCB0aGF0IHdheSBieSBlYXRpbmcgcm95YWwgamVsbHku" }, |
michael@0 | 1593 | { "They say that reading a scare monster scroll is the same as saying Elbereth.", |
michael@0 | 1594 | "VGhleSBzYXkgdGhhdCByZWFkaW5nIGEgc2NhcmUgbW9uc3RlciBzY3JvbGwgaXMgdGhlIHNhbWUgYXMgc2F5aW5nIEVsYmVyZXRoLg==" }, |
michael@0 | 1595 | { "They say that real hackers always are controlled.", |
michael@0 | 1596 | "VGhleSBzYXkgdGhhdCByZWFsIGhhY2tlcnMgYWx3YXlzIGFyZSBjb250cm9sbGVkLg==" }, |
michael@0 | 1597 | { "They say that real hackers never sleep.", |
michael@0 | 1598 | "VGhleSBzYXkgdGhhdCByZWFsIGhhY2tlcnMgbmV2ZXIgc2xlZXAu" }, |
michael@0 | 1599 | { "They say that shopkeepers are insured by Croesus himself!", |
michael@0 | 1600 | "VGhleSBzYXkgdGhhdCBzaG9wa2VlcGVycyBhcmUgaW5zdXJlZCBieSBDcm9lc3VzIGhpbXNlbGYh" }, |
michael@0 | 1601 | { "They say that shopkeepers never carry more than 20 gold pieces, at night.", |
michael@0 | 1602 | "VGhleSBzYXkgdGhhdCBzaG9wa2VlcGVycyBuZXZlciBjYXJyeSBtb3JlIHRoYW4gMjAgZ29sZCBwaWVjZXMsIGF0IG5pZ2h0Lg==" }, |
michael@0 | 1603 | { "They say that shopkeepers never sell blessed potions of invisibility.", |
michael@0 | 1604 | "VGhleSBzYXkgdGhhdCBzaG9wa2VlcGVycyBuZXZlciBzZWxsIGJsZXNzZWQgcG90aW9ucyBvZiBpbnZpc2liaWxpdHku" }, |
michael@0 | 1605 | { "They say that soldiers wear kid gloves and silly helmets.", |
michael@0 | 1606 | "VGhleSBzYXkgdGhhdCBzb2xkaWVycyB3ZWFyIGtpZCBnbG92ZXMgYW5kIHNpbGx5IGhlbG1ldHMu" }, |
michael@0 | 1607 | { "They say that some Kops are on the take.", |
michael@0 | 1608 | "VGhleSBzYXkgdGhhdCBzb21lIEtvcHMgYXJlIG9uIHRoZSB0YWtlLg==" }, |
michael@0 | 1609 | { "They say that some guards' palms can be greased.", |
michael@0 | 1610 | "VGhleSBzYXkgdGhhdCBzb21lIGd1YXJkcycgcGFsbXMgY2FuIGJlIGdyZWFzZWQu" }, |
michael@0 | 1611 | { "They say that some monsters may kiss your boots to stop your drum playing.", |
michael@0 | 1612 | "VGhleSBzYXkgdGhhdCBzb21lIG1vbnN0ZXJzIG1heSBraXNzIHlvdXIgYm9vdHMgdG8gc3RvcCB5b3VyIGRydW0gcGxheWluZy4=" }, |
michael@0 | 1613 | { "They say that sometimes you can be the hit of the party when playing a horn.", |
michael@0 | 1614 | "VGhleSBzYXkgdGhhdCBzb21ldGltZXMgeW91IGNhbiBiZSB0aGUgaGl0IG9mIHRoZSBwYXJ0eSB3aGVuIHBsYXlpbmcgYSBob3JuLg==" }, |
michael@0 | 1615 | { "They say that the NetHack gods generally welcome your sacrifices.", |
michael@0 | 1616 | "VGhleSBzYXkgdGhhdCB0aGUgTmV0SGFjayBnb2RzIGdlbmVyYWxseSB3ZWxjb21lIHlvdXIgc2FjcmlmaWNlcy4=" }, |
michael@0 | 1617 | { "They say that the Three Rings are named Vilya, Nenya and Narya.", |
michael@0 | 1618 | "VGhleSBzYXkgdGhhdCB0aGUgVGhyZWUgUmluZ3MgYXJlIG5hbWVkIFZpbHlhLCBOZW55YSBhbmQgTmFyeWEu" }, |
michael@0 | 1619 | { "They say that the Wizard of Yendor has a death wish.", |
michael@0 | 1620 | "VGhleSBzYXkgdGhhdCB0aGUgV2l6YXJkIG9mIFllbmRvciBoYXMgYSBkZWF0aCB3aXNoLg==" }, |
michael@0 | 1621 | { "They say that the `hair of the dog' is sometimes an effective remedy.", |
michael@0 | 1622 | "VGhleSBzYXkgdGhhdCB0aGUgYGhhaXIgb2YgdGhlIGRvZycgaXMgc29tZXRpbWVzIGFuIGVmZmVjdGl2ZSByZW1lZHku" }, |
michael@0 | 1623 | { "They say that the best time to save your game is now before its too late.", |
michael@0 | 1624 | "VGhleSBzYXkgdGhhdCB0aGUgYmVzdCB0aW1lIHRvIHNhdmUgeW91ciBnYW1lIGlzIG5vdyBiZWZvcmUgaXRzIHRvbyBsYXRlLg==" }, |
michael@0 | 1625 | { "They say that the biggest obstacle in NetHack is your mind.", |
michael@0 | 1626 | "VGhleSBzYXkgdGhhdCB0aGUgYmlnZ2VzdCBvYnN0YWNsZSBpbiBOZXRIYWNrIGlzIHlvdXIgbWluZC4=" }, |
michael@0 | 1627 | { "They say that the gods are angry when they hit you with objects.", |
michael@0 | 1628 | "VGhleSBzYXkgdGhhdCB0aGUgZ29kcyBhcmUgYW5ncnkgd2hlbiB0aGV5IGhpdCB5b3Ugd2l0aCBvYmplY3RzLg==" }, |
michael@0 | 1629 | { "They say that the priesthood are specially favored by the gods.", |
michael@0 | 1630 | "VGhleSBzYXkgdGhhdCB0aGUgcHJpZXN0aG9vZCBhcmUgc3BlY2lhbGx5IGZhdm9yZWQgYnkgdGhlIGdvZHMu" }, |
michael@0 | 1631 | { "They say that the way to make a unicorn happy is to give it what it wants.", |
michael@0 | 1632 | "VGhleSBzYXkgdGhhdCB0aGUgd2F5IHRvIG1ha2UgYSB1bmljb3JuIGhhcHB5IGlzIHRvIGdpdmUgaXQgd2hhdCBpdCB3YW50cy4=" }, |
michael@0 | 1633 | { "They say that there are no black or white stones, only gray.", |
michael@0 | 1634 | "VGhleSBzYXkgdGhhdCB0aGVyZSBhcmUgbm8gYmxhY2sgb3Igd2hpdGUgc3RvbmVzLCBvbmx5IGdyYXku" }, |
michael@0 | 1635 | { "They say that there are no skeletons hence there are no skeleton keys.", |
michael@0 | 1636 | "VGhleSBzYXkgdGhhdCB0aGVyZSBhcmUgbm8gc2tlbGV0b25zIGhlbmNlIHRoZXJlIGFyZSBubyBza2VsZXRvbiBrZXlzLg==" }, |
michael@0 | 1637 | { "They say that there is a clever rogue in every hacker just dying to escape.", |
michael@0 | 1638 | "VGhleSBzYXkgdGhhdCB0aGVyZSBpcyBhIGNsZXZlciByb2d1ZSBpbiBldmVyeSBoYWNrZXIganVzdCBkeWluZyB0byBlc2NhcGUu" }, |
michael@0 | 1639 | { "They say that there is no such thing as free advice.", |
michael@0 | 1640 | "VGhleSBzYXkgdGhhdCB0aGVyZSBpcyBubyBzdWNoIHRoaW5nIGFzIGZyZWUgYWR2aWNlLg==" }, |
michael@0 | 1641 | { "They say that there is only one way to win at NetHack.", |
michael@0 | 1642 | "VGhleSBzYXkgdGhhdCB0aGVyZSBpcyBvbmx5IG9uZSB3YXkgdG8gd2luIGF0IE5ldEhhY2su" }, |
michael@0 | 1643 | { "They say that there once was a fearsome chaotic samurai named Luk No.", |
michael@0 | 1644 | "VGhleSBzYXkgdGhhdCB0aGVyZSBvbmNlIHdhcyBhIGZlYXJzb21lIGNoYW90aWMgc2FtdXJhaSBuYW1lZCBMdWsgTm8u" }, |
michael@0 | 1645 | { "They say that there was a time when cursed holy water wasn't water.", |
michael@0 | 1646 | "VGhleSBzYXkgdGhhdCB0aGVyZSB3YXMgYSB0aW1lIHdoZW4gY3Vyc2VkIGhvbHkgd2F0ZXIgd2Fzbid0IHdhdGVyLg==" }, |
michael@0 | 1647 | { "They say that there's no point in crying over a gray ooze.", |
michael@0 | 1648 | "VGhleSBzYXkgdGhhdCB0aGVyZSdzIG5vIHBvaW50IGluIGNyeWluZyBvdmVyIGEgZ3JheSBvb3plLg==" }, |
michael@0 | 1649 | { "They say that there's only hope left after you've opened Pandora's box.", |
michael@0 | 1650 | "VGhleSBzYXkgdGhhdCB0aGVyZSdzIG9ubHkgaG9wZSBsZWZ0IGFmdGVyIHlvdSd2ZSBvcGVuZWQgUGFuZG9yYSdzIGJveC4=" }, |
michael@0 | 1651 | { "They say that trapdoors should always be marked `Caution: Trap Door'.", |
michael@0 | 1652 | "VGhleSBzYXkgdGhhdCB0cmFwZG9vcnMgc2hvdWxkIGFsd2F5cyBiZSBtYXJrZWQgYENhdXRpb246IFRyYXAgRG9vcicu" }, |
michael@0 | 1653 | { "They say that using an amulet of change isn't a difficult operation.", |
michael@0 | 1654 | "VGhleSBzYXkgdGhhdCB1c2luZyBhbiBhbXVsZXQgb2YgY2hhbmdlIGlzbid0IGEgZGlmZmljdWx0IG9wZXJhdGlvbi4=" }, |
michael@0 | 1655 | { "They say that water walking boots are better if you are fast like Hermes.", |
michael@0 | 1656 | "VGhleSBzYXkgdGhhdCB3YXRlciB3YWxraW5nIGJvb3RzIGFyZSBiZXR0ZXIgaWYgeW91IGFyZSBmYXN0IGxpa2UgSGVybWVzLg==" }, |
michael@0 | 1657 | { "They say that when you wear a circular amulet you might resemble a troll.", |
michael@0 | 1658 | "VGhleSBzYXkgdGhhdCB3aGVuIHlvdSB3ZWFyIGEgY2lyY3VsYXIgYW11bGV0IHlvdSBtaWdodCByZXNlbWJsZSBhIHRyb2xsLg==" }, |
michael@0 | 1659 | { "They say that when you're hungry you can get a pizza in 30 moves or it's free.", |
michael@0 | 1660 | "VGhleSBzYXkgdGhhdCB3aGVuIHlvdSdyZSBodW5ncnkgeW91IGNhbiBnZXQgYSBwaXp6YSBpbiAzMCBtb3ZlcyBvciBpdCdzIGZyZWUu" }, |
michael@0 | 1661 | { "They say that when your god is angry you should try another one.", |
michael@0 | 1662 | "VGhleSBzYXkgdGhhdCB3aGVuIHlvdXIgZ29kIGlzIGFuZ3J5IHlvdSBzaG91bGQgdHJ5IGFub3RoZXIgb25lLg==" }, |
michael@0 | 1663 | { "They say that wielding a unicorn horn takes strength.", |
michael@0 | 1664 | "VGhleSBzYXkgdGhhdCB3aWVsZGluZyBhIHVuaWNvcm4gaG9ybiB0YWtlcyBzdHJlbmd0aC4=" }, |
michael@0 | 1665 | { "They say that with speed boots you never worry about hit and run accidents.", |
michael@0 | 1666 | "VGhleSBzYXkgdGhhdCB3aXRoIHNwZWVkIGJvb3RzIHlvdSBuZXZlciB3b3JyeSBhYm91dCBoaXQgYW5kIHJ1biBhY2NpZGVudHMu" }, |
michael@0 | 1667 | { "They say that you can defeat a killer bee with a unicorn horn.", |
michael@0 | 1668 | "VGhleSBzYXkgdGhhdCB5b3UgY2FuIGRlZmVhdCBhIGtpbGxlciBiZWUgd2l0aCBhIHVuaWNvcm4gaG9ybi4=" }, |
michael@0 | 1669 | { "They say that you can only cross the River Styx in Charon's boat.", |
michael@0 | 1670 | "VGhleSBzYXkgdGhhdCB5b3UgY2FuIG9ubHkgY3Jvc3MgdGhlIFJpdmVyIFN0eXggaW4gQ2hhcm9uJ3MgYm9hdC4=" }, |
michael@0 | 1671 | { "They say that you can only kill a lich once and then you'd better be careful.", |
michael@0 | 1672 | "VGhleSBzYXkgdGhhdCB5b3UgY2FuIG9ubHkga2lsbCBhIGxpY2ggb25jZSBhbmQgdGhlbiB5b3UnZCBiZXR0ZXIgYmUgY2FyZWZ1bC4=" }, |
michael@0 | 1673 | { "They say that you can only wish for things you've already had.", |
michael@0 | 1674 | "VGhleSBzYXkgdGhhdCB5b3UgY2FuIG9ubHkgd2lzaCBmb3IgdGhpbmdzIHlvdSd2ZSBhbHJlYWR5IGhhZC4=" }, |
michael@0 | 1675 | { "They say that you can train a cat by talking gently to it.", |
michael@0 | 1676 | "VGhleSBzYXkgdGhhdCB5b3UgY2FuIHRyYWluIGEgY2F0IGJ5IHRhbGtpbmcgZ2VudGx5IHRvIGl0Lg==" }, |
michael@0 | 1677 | { "They say that you can train a dog by talking firmly to it.", |
michael@0 | 1678 | "VGhleSBzYXkgdGhhdCB5b3UgY2FuIHRyYWluIGEgZG9nIGJ5IHRhbGtpbmcgZmlybWx5IHRvIGl0Lg==" }, |
michael@0 | 1679 | { "They say that you can trust your gold with the king.", |
michael@0 | 1680 | "VGhleSBzYXkgdGhhdCB5b3UgY2FuIHRydXN0IHlvdXIgZ29sZCB3aXRoIHRoZSBraW5nLg==" }, |
michael@0 | 1681 | { "They say that you can't wipe your greasy bare hands on a blank scroll.", |
michael@0 | 1682 | "VGhleSBzYXkgdGhhdCB5b3UgY2FuJ3Qgd2lwZSB5b3VyIGdyZWFzeSBiYXJlIGhhbmRzIG9uIGEgYmxhbmsgc2Nyb2xsLg==" }, |
michael@0 | 1683 | { "They say that you cannot trust scrolls of rumor.", |
michael@0 | 1684 | "VGhleSBzYXkgdGhhdCB5b3UgY2Fubm90IHRydXN0IHNjcm9sbHMgb2YgcnVtb3Iu" }, |
michael@0 | 1685 | { "They say that you could fall head over heels for an energy vortex.", |
michael@0 | 1686 | "VGhleSBzYXkgdGhhdCB5b3UgY291bGQgZmFsbCBoZWFkIG92ZXIgaGVlbHMgZm9yIGFuIGVuZXJneSB2b3J0ZXgu" }, |
michael@0 | 1687 | { "They say that you need a key in order to open locked doors.", |
michael@0 | 1688 | "VGhleSBzYXkgdGhhdCB5b3UgbmVlZCBhIGtleSBpbiBvcmRlciB0byBvcGVuIGxvY2tlZCBkb29ycy4=" }, |
michael@0 | 1689 | { "They say that you need a mirror to notice a mimic in an antique shop.", |
michael@0 | 1690 | "VGhleSBzYXkgdGhhdCB5b3UgbmVlZCBhIG1pcnJvciB0byBub3RpY2UgYSBtaW1pYyBpbiBhbiBhbnRpcXVlIHNob3Au" }, |
michael@0 | 1691 | { "They say that you really can use a pick-axe unless you really can't.", |
michael@0 | 1692 | "VGhleSBzYXkgdGhhdCB5b3UgcmVhbGx5IGNhbiB1c2UgYSBwaWNrLWF4ZSB1bmxlc3MgeW91IHJlYWxseSBjYW4ndC4=" }, |
michael@0 | 1693 | { "They say that you should always store your tools in the cellar.", |
michael@0 | 1694 | "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIGFsd2F5cyBzdG9yZSB5b3VyIHRvb2xzIGluIHRoZSBjZWxsYXIu" }, |
michael@0 | 1695 | { "They say that you should be careful while climbing the ladder to success.", |
michael@0 | 1696 | "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIGJlIGNhcmVmdWwgd2hpbGUgY2xpbWJpbmcgdGhlIGxhZGRlciB0byBzdWNjZXNzLg==" }, |
michael@0 | 1697 | { "They say that you should call your armor `rustproof'.", |
michael@0 | 1698 | "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIGNhbGwgeW91ciBhcm1vciBgcnVzdHByb29mJy4=" }, |
michael@0 | 1699 | { "They say that you should name your dog Spuds to have a cool pet.", |
michael@0 | 1700 | "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIG5hbWUgeW91ciBkb2cgU3B1ZHMgdG8gaGF2ZSBhIGNvb2wgcGV0Lg==" }, |
michael@0 | 1701 | { "They say that you should name your weapon after your first monster kill.", |
michael@0 | 1702 | "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIG5hbWUgeW91ciB3ZWFwb24gYWZ0ZXIgeW91ciBmaXJzdCBtb25zdGVyIGtpbGwu" }, |
michael@0 | 1703 | { "They say that you should never introduce a rope golem to a succubus.", |
michael@0 | 1704 | "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIG5ldmVyIGludHJvZHVjZSBhIHJvcGUgZ29sZW0gdG8gYSBzdWNjdWJ1cy4=" }, |
michael@0 | 1705 | { "They say that you should never sleep near invisible ring wraiths.", |
michael@0 | 1706 | "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIG5ldmVyIHNsZWVwIG5lYXIgaW52aXNpYmxlIHJpbmcgd3JhaXRocy4=" }, |
michael@0 | 1707 | { "They say that you should never try to leave the dungeon with a bag of gems.", |
michael@0 | 1708 | "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIG5ldmVyIHRyeSB0byBsZWF2ZSB0aGUgZHVuZ2VvbiB3aXRoIGEgYmFnIG9mIGdlbXMu" }, |
michael@0 | 1709 | { "They say that you should remove your armor before sitting on a throne.", |
michael@0 | 1710 | "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIHJlbW92ZSB5b3VyIGFybW9yIGJlZm9yZSBzaXR0aW5nIG9uIGEgdGhyb25lLg==" }, |
michael@0 | 1711 | { "This fortune cookie is copy protected.", |
michael@0 | 1712 | "VGhpcyBmb3J0dW5lIGNvb2tpZSBpcyBjb3B5IHByb3RlY3RlZC4=" }, |
michael@0 | 1713 | { "This fortune cookie is the property of Fortune Cookies, Inc.", |
michael@0 | 1714 | "VGhpcyBmb3J0dW5lIGNvb2tpZSBpcyB0aGUgcHJvcGVydHkgb2YgRm9ydHVuZSBDb29raWVzLCBJbmMu" }, |
michael@0 | 1715 | { "Tired? Try a scroll of charging on yourself.", |
michael@0 | 1716 | "VGlyZWQ/IFRyeSBhIHNjcm9sbCBvZiBjaGFyZ2luZyBvbiB5b3Vyc2VsZi4=" }, |
michael@0 | 1717 | { "To achieve the next higher rating, you need 3 more points.", |
michael@0 | 1718 | "VG8gYWNoaWV2ZSB0aGUgbmV4dCBoaWdoZXIgcmF0aW5nLCB5b3UgbmVlZCAzIG1vcmUgcG9pbnRzLg==" }, |
michael@0 | 1719 | { "To reach heaven, escape the dungeon while wearing a ring of levitation.", |
michael@0 | 1720 | "VG8gcmVhY2ggaGVhdmVuLCBlc2NhcGUgdGhlIGR1bmdlb24gd2hpbGUgd2VhcmluZyBhIHJpbmcgb2YgbGV2aXRhdGlvbi4=" }, |
michael@0 | 1721 | { "Tourists wear shirts loud enough to wake the dead.", |
michael@0 | 1722 | "VG91cmlzdHMgd2VhciBzaGlydHMgbG91ZCBlbm91Z2ggdG8gd2FrZSB0aGUgZGVhZC4=" }, |
michael@0 | 1723 | { "Try calling your katana Moulinette.", |
michael@0 | 1724 | "VHJ5IGNhbGxpbmcgeW91ciBrYXRhbmEgTW91bGluZXR0ZS4=" }, |
michael@0 | 1725 | { "Ulch! That meat was painted!", |
michael@0 | 1726 | "VWxjaCEgVGhhdCBtZWF0IHdhcyBwYWludGVkIQ==" }, |
michael@0 | 1727 | { "Unfortunately, this message was left intentionally blank.", |
michael@0 | 1728 | "VW5mb3J0dW5hdGVseSwgdGhpcyBtZXNzYWdlIHdhcyBsZWZ0IGludGVudGlvbmFsbHkgYmxhbmsu" }, |
michael@0 | 1729 | { "Using a morning star in the evening has no effect.", |
michael@0 | 1730 | "VXNpbmcgYSBtb3JuaW5nIHN0YXIgaW4gdGhlIGV2ZW5pbmcgaGFzIG5vIGVmZmVjdC4=" }, |
michael@0 | 1731 | { "Want a hint? Zap a wand of make invisible on your weapon!", |
michael@0 | 1732 | "V2FudCBhIGhpbnQ/IFphcCBhIHdhbmQgb2YgbWFrZSBpbnZpc2libGUgb24geW91ciB3ZWFwb24h" }, |
michael@0 | 1733 | { "Want to ascend in a hurry? Apply at Gizmonic Institute.", |
michael@0 | 1734 | "V2FudCB0byBhc2NlbmQgaW4gYSBodXJyeT8gQXBwbHkgYXQgR2l6bW9uaWMgSW5zdGl0dXRlLg==" }, |
michael@0 | 1735 | { "Wanted: shopkeepers. Send a scroll of mail to Mage of Yendor/Level 35/Dungeon.", |
michael@0 | 1736 | "V2FudGVkOiBzaG9wa2VlcGVycy4gU2VuZCBhIHNjcm9sbCBvZiBtYWlsIHRvIE1hZ2Ugb2YgWWVuZG9yL0xldmVsIDM1L0R1bmdlb24u" }, |
michael@0 | 1737 | { "Warning: fortune reading can be hazardous to your health.", |
michael@0 | 1738 | "V2FybmluZzogZm9ydHVuZSByZWFkaW5nIGNhbiBiZSBoYXphcmRvdXMgdG8geW91ciBoZWFsdGgu" }, |
michael@0 | 1739 | { "We have new ways of detecting treachery...", |
michael@0 | 1740 | "V2UgaGF2ZSBuZXcgd2F5cyBvZiBkZXRlY3RpbmcgdHJlYWNoZXJ5Li4u" }, |
michael@0 | 1741 | { "Wet towels make great weapons!", |
michael@0 | 1742 | "V2V0IHRvd2VscyBtYWtlIGdyZWF0IHdlYXBvbnMh" }, |
michael@0 | 1743 | { "What a pity, you cannot read it!", |
michael@0 | 1744 | "V2hhdCBhIHBpdHksIHlvdSBjYW5ub3QgcmVhZCBpdCE=" }, |
michael@0 | 1745 | { "When a piercer drops in on you, you will be tempted to hit the ceiling!", |
michael@0 | 1746 | "V2hlbiBhIHBpZXJjZXIgZHJvcHMgaW4gb24geW91LCB5b3Ugd2lsbCBiZSB0ZW1wdGVkIHRvIGhpdCB0aGUgY2VpbGluZyE=" }, |
michael@0 | 1747 | { "When in a maze follow the right wall and you will never get lost.", |
michael@0 | 1748 | "V2hlbiBpbiBhIG1hemUgZm9sbG93IHRoZSByaWdodCB3YWxsIGFuZCB5b3Ugd2lsbCBuZXZlciBnZXQgbG9zdC4=" }, |
michael@0 | 1749 | { "When you have a key, you don't have to wait for the guard.", |
michael@0 | 1750 | "V2hlbiB5b3UgaGF2ZSBhIGtleSwgeW91IGRvbid0IGhhdmUgdG8gd2FpdCBmb3IgdGhlIGd1YXJkLg==" }, |
michael@0 | 1751 | { "Why are you wasting time reading fortunes?", |
michael@0 | 1752 | "V2h5IGFyZSB5b3Ugd2FzdGluZyB0aW1lIHJlYWRpbmcgZm9ydHVuZXM/" }, |
michael@0 | 1753 | { "Wish for a master key and open the Magic Memory Vault!", |
michael@0 | 1754 | "V2lzaCBmb3IgYSBtYXN0ZXIga2V5IGFuZCBvcGVuIHRoZSBNYWdpYyBNZW1vcnkgVmF1bHQh" }, |
michael@0 | 1755 | { "Wizard expects every monster to do its duty.", |
michael@0 | 1756 | "V2l6YXJkIGV4cGVjdHMgZXZlcnkgbW9uc3RlciB0byBkbyBpdHMgZHV0eS4=" }, |
michael@0 | 1757 | { "Wow! You could've had a potion of fruit juice!", |
michael@0 | 1758 | "V293ISBZb3UgY291bGQndmUgaGFkIGEgcG90aW9uIG9mIGZydWl0IGp1aWNlIQ==" }, |
michael@0 | 1759 | { "Yet Another Silly Message (YASM).", |
michael@0 | 1760 | "WWV0IEFub3RoZXIgU2lsbHkgTWVzc2FnZSAoWUFTTSku" }, |
michael@0 | 1761 | { "You are destined to be misled by a fortune.", |
michael@0 | 1762 | "WW91IGFyZSBkZXN0aW5lZCB0byBiZSBtaXNsZWQgYnkgYSBmb3J0dW5lLg==" }, |
michael@0 | 1763 | { "You can get a genuine Amulet of Yendor by doing the following: --More--", |
michael@0 | 1764 | "WW91IGNhbiBnZXQgYSBnZW51aW5lIEFtdWxldCBvZiBZZW5kb3IgYnkgZG9pbmcgdGhlIGZvbGxvd2luZzogLS1Nb3JlLS0=" }, |
michael@0 | 1765 | { "You can protect yourself from black dragons by doing the following: --More--", |
michael@0 | 1766 | "WW91IGNhbiBwcm90ZWN0IHlvdXJzZWxmIGZyb20gYmxhY2sgZHJhZ29ucyBieSBkb2luZyB0aGUgZm9sbG93aW5nOiAtLU1vcmUtLQ==" }, |
michael@0 | 1767 | { "You can't get by the snake.", |
michael@0 | 1768 | "WW91IGNhbid0IGdldCBieSB0aGUgc25ha2Uu" }, |
michael@0 | 1769 | { "You feel like someone is pulling your leg.", |
michael@0 | 1770 | "WW91IGZlZWwgbGlrZSBzb21lb25lIGlzIHB1bGxpbmcgeW91ciBsZWcu" }, |
michael@0 | 1771 | { "You have to outwit the Sphynx or pay her.", |
michael@0 | 1772 | "WW91IGhhdmUgdG8gb3V0d2l0IHRoZSBTcGh5bnggb3IgcGF5IGhlci4=" }, |
michael@0 | 1773 | { "You hear the fortune cookie's hissing!", |
michael@0 | 1774 | "WW91IGhlYXIgdGhlIGZvcnR1bmUgY29va2llJ3MgaGlzc2luZyE=" }, |
michael@0 | 1775 | { "You may get rich selling letters, but beware of being blackmailed!", |
michael@0 | 1776 | "WW91IG1heSBnZXQgcmljaCBzZWxsaW5nIGxldHRlcnMsIGJ1dCBiZXdhcmUgb2YgYmVpbmcgYmxhY2ttYWlsZWQh" }, |
michael@0 | 1777 | { "You offend Shai-Hulud by sheathing your crysknife without having drawn blood.", |
michael@0 | 1778 | "WW91IG9mZmVuZCBTaGFpLUh1bHVkIGJ5IHNoZWF0aGluZyB5b3VyIGNyeXNrbmlmZSB3aXRob3V0IGhhdmluZyBkcmF3biBibG9vZC4=" }, |
michael@0 | 1779 | { "You swallowed the fortune!", |
michael@0 | 1780 | "WW91IHN3YWxsb3dlZCB0aGUgZm9ydHVuZSE=" }, |
michael@0 | 1781 | { "You want to regain strength? Two levels ahead is a guesthouse!", |
michael@0 | 1782 | "WW91IHdhbnQgdG8gcmVnYWluIHN0cmVuZ3RoPyBUd28gbGV2ZWxzIGFoZWFkIGlzIGEgZ3Vlc3Rob3VzZSE=" }, |
michael@0 | 1783 | { "You will encounter a tall, dark, and gruesome creature...", |
michael@0 | 1784 | "WW91IHdpbGwgZW5jb3VudGVyIGEgdGFsbCwgZGFyaywgYW5kIGdydWVzb21lIGNyZWF0dXJlLi4u" }, |
michael@0 | 1785 | |
michael@0 | 1786 | { "The End", "VGhlIEVuZA==" } |
michael@0 | 1787 | }; |
michael@0 | 1788 | |
michael@0 | 1789 | /* PL_Base64Encode, random strings */ |
michael@0 | 1790 | PRBool test_004(void) |
michael@0 | 1791 | { |
michael@0 | 1792 | int i; |
michael@0 | 1793 | char result[ 4096 ]; |
michael@0 | 1794 | |
michael@0 | 1795 | printf("Test 004 (PL_Base64Encode, random strings) ..."); fflush(stdout); |
michael@0 | 1796 | |
michael@0 | 1797 | for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) |
michael@0 | 1798 | { |
michael@0 | 1799 | PRUint32 plen = PL_strlen(array[i].plaintext); |
michael@0 | 1800 | PRUint32 clen = ((plen + 2)/3)*4; |
michael@0 | 1801 | |
michael@0 | 1802 | char *rv = PL_Base64Encode(array[i].plaintext, plen, result); |
michael@0 | 1803 | |
michael@0 | 1804 | if( rv != result ) |
michael@0 | 1805 | { |
michael@0 | 1806 | printf("FAIL\n\t(%d): return value\n", i); |
michael@0 | 1807 | return PR_FALSE; |
michael@0 | 1808 | } |
michael@0 | 1809 | |
michael@0 | 1810 | if( 0 != PL_strncmp(result, array[i].cyphertext, clen) ) |
michael@0 | 1811 | { |
michael@0 | 1812 | printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%.*s.\"\n", |
michael@0 | 1813 | i, array[i].plaintext, array[i].cyphertext, clen, result); |
michael@0 | 1814 | return PR_FALSE; |
michael@0 | 1815 | } |
michael@0 | 1816 | } |
michael@0 | 1817 | |
michael@0 | 1818 | printf("PASS\n"); |
michael@0 | 1819 | return PR_TRUE; |
michael@0 | 1820 | } |
michael@0 | 1821 | |
michael@0 | 1822 | /* PL_Base64Encode, single characters, malloc */ |
michael@0 | 1823 | PRBool test_005(void) |
michael@0 | 1824 | { |
michael@0 | 1825 | PRUint32 a, b; |
michael@0 | 1826 | unsigned char plain[ 4 ]; |
michael@0 | 1827 | unsigned char cypher[ 5 ]; |
michael@0 | 1828 | char *rv; |
michael@0 | 1829 | |
michael@0 | 1830 | printf("Test 005 (PL_Base64Encode, single characters, malloc) ..."); fflush(stdout); |
michael@0 | 1831 | |
michael@0 | 1832 | plain[1] = plain[2] = plain[3] = (unsigned char)0; |
michael@0 | 1833 | cypher[2] = cypher[3] = (unsigned char)'='; |
michael@0 | 1834 | cypher[4] = (unsigned char)0; |
michael@0 | 1835 | |
michael@0 | 1836 | for( a = 0; a < 64; a++ ) |
michael@0 | 1837 | { |
michael@0 | 1838 | cypher[0] = base[a]; |
michael@0 | 1839 | |
michael@0 | 1840 | for( b = 0; b < 4; b++ ) |
michael@0 | 1841 | { |
michael@0 | 1842 | plain[0] = (unsigned char)(a * 4 + b); |
michael@0 | 1843 | cypher[1] = base[(b * 16)]; |
michael@0 | 1844 | |
michael@0 | 1845 | rv = PL_Base64Encode((char *)plain, 1, (char *)0); |
michael@0 | 1846 | if( (char *)0 == rv ) |
michael@0 | 1847 | { |
michael@0 | 1848 | printf("FAIL\n\t(%d, %d): no return value\n", a, b); |
michael@0 | 1849 | return PR_FALSE; |
michael@0 | 1850 | } |
michael@0 | 1851 | |
michael@0 | 1852 | if( 0 != PL_strcmp((char *)cypher, rv) ) |
michael@0 | 1853 | { |
michael@0 | 1854 | printf("FAIL\n\t(%d, %d): expected \"%s,\" got \"%s.\"\n", |
michael@0 | 1855 | a, b, cypher, rv); |
michael@0 | 1856 | PR_DELETE(rv); |
michael@0 | 1857 | return PR_FALSE; |
michael@0 | 1858 | } |
michael@0 | 1859 | |
michael@0 | 1860 | PR_DELETE(rv); |
michael@0 | 1861 | } |
michael@0 | 1862 | } |
michael@0 | 1863 | |
michael@0 | 1864 | printf("PASS\n"); |
michael@0 | 1865 | return PR_TRUE; |
michael@0 | 1866 | } |
michael@0 | 1867 | |
michael@0 | 1868 | /* PL_Base64Encode, double characters, malloc */ |
michael@0 | 1869 | PRBool test_006(void) |
michael@0 | 1870 | { |
michael@0 | 1871 | PRUint32 a, b, c, d; |
michael@0 | 1872 | unsigned char plain[ 4 ]; |
michael@0 | 1873 | unsigned char cypher[ 5 ]; |
michael@0 | 1874 | char *rv; |
michael@0 | 1875 | |
michael@0 | 1876 | printf("Test 006 (PL_Base64Encode, double characters, malloc) ..."); fflush(stdout); |
michael@0 | 1877 | |
michael@0 | 1878 | plain[2] = plain[3] = (unsigned char)0; |
michael@0 | 1879 | cypher[3] = (unsigned char)'='; |
michael@0 | 1880 | cypher[4] = (unsigned char)0; |
michael@0 | 1881 | |
michael@0 | 1882 | for( a = 0; a < 64; a++ ) |
michael@0 | 1883 | { |
michael@0 | 1884 | cypher[0] = base[a]; |
michael@0 | 1885 | for( b = 0; b < 4; b++ ) |
michael@0 | 1886 | { |
michael@0 | 1887 | plain[0] = (a*4) + b; |
michael@0 | 1888 | for( c = 0; c < 16; c++ ) |
michael@0 | 1889 | { |
michael@0 | 1890 | cypher[1] = base[b*16 + c]; |
michael@0 | 1891 | for( d = 0; d < 16; d++ ) |
michael@0 | 1892 | { |
michael@0 | 1893 | plain[1] = c*16 + d; |
michael@0 | 1894 | cypher[2] = base[d*4]; |
michael@0 | 1895 | |
michael@0 | 1896 | rv = PL_Base64Encode((char *)plain, 2, (char *)0); |
michael@0 | 1897 | if( (char *)0 == rv ) |
michael@0 | 1898 | { |
michael@0 | 1899 | printf("FAIL\n\t(%d, %d, %d, %d): no return value\n", a, b, c, d); |
michael@0 | 1900 | return PR_FALSE; |
michael@0 | 1901 | } |
michael@0 | 1902 | |
michael@0 | 1903 | if( 0 != PL_strcmp((char *)cypher, rv) ) |
michael@0 | 1904 | { |
michael@0 | 1905 | printf("FAIL\n\t(%d, %d, %d, %d): expected \"%s,\" got \"%s.\"\n", |
michael@0 | 1906 | a, b, c, d, cypher, rv); |
michael@0 | 1907 | PR_DELETE(rv); |
michael@0 | 1908 | return PR_FALSE; |
michael@0 | 1909 | } |
michael@0 | 1910 | |
michael@0 | 1911 | PR_DELETE(rv); |
michael@0 | 1912 | } |
michael@0 | 1913 | } |
michael@0 | 1914 | } |
michael@0 | 1915 | } |
michael@0 | 1916 | |
michael@0 | 1917 | printf("PASS\n"); |
michael@0 | 1918 | return PR_TRUE; |
michael@0 | 1919 | } |
michael@0 | 1920 | |
michael@0 | 1921 | /* PL_Base64Encode, triple characters, malloc */ |
michael@0 | 1922 | PRBool test_007(void) |
michael@0 | 1923 | { |
michael@0 | 1924 | PRUint32 a, b, c, d, e, f; |
michael@0 | 1925 | unsigned char plain[ 4 ]; |
michael@0 | 1926 | unsigned char cypher[ 5 ]; |
michael@0 | 1927 | char *rv; |
michael@0 | 1928 | |
michael@0 | 1929 | printf("Test 007 (PL_Base64Encode, triple characters, malloc) ..."); fflush(stdout); |
michael@0 | 1930 | |
michael@0 | 1931 | cypher[4] = (unsigned char)0; |
michael@0 | 1932 | |
michael@0 | 1933 | for( a = 0; a < 64; a++ ) |
michael@0 | 1934 | { |
michael@0 | 1935 | cypher[0] = base[a]; |
michael@0 | 1936 | for( b = 0; b < 4; b++ ) |
michael@0 | 1937 | { |
michael@0 | 1938 | plain[0] = (a*4) + b; |
michael@0 | 1939 | for( c = 0; c < 16; c++ ) |
michael@0 | 1940 | { |
michael@0 | 1941 | cypher[1] = base[b*16 + c]; |
michael@0 | 1942 | for( d = 0; d < 16; d++ ) |
michael@0 | 1943 | { |
michael@0 | 1944 | plain[1] = c*16 + d; |
michael@0 | 1945 | for( e = 0; e < 4; e++ ) |
michael@0 | 1946 | { |
michael@0 | 1947 | cypher[2] = base[d*4 + e]; |
michael@0 | 1948 | for( f = 0; f < 64; f++ ) |
michael@0 | 1949 | { |
michael@0 | 1950 | plain[2] = e * 64 + f; |
michael@0 | 1951 | cypher[3] = base[f]; |
michael@0 | 1952 | |
michael@0 | 1953 | rv = PL_Base64Encode((char *)plain, 3, (char *)0); |
michael@0 | 1954 | if( (char *)0 == rv ) |
michael@0 | 1955 | { |
michael@0 | 1956 | printf("FAIL\n\t(%d, %d, %d, %d, %d, %d): no return value\n", a, b, c, d, e, f); |
michael@0 | 1957 | return PR_FALSE; |
michael@0 | 1958 | } |
michael@0 | 1959 | |
michael@0 | 1960 | if( 0 != PL_strcmp((char *)cypher, rv) ) |
michael@0 | 1961 | { |
michael@0 | 1962 | printf("FAIL\n\t(%d, %d, %d, %d, %d, %d): expected \"%s,\" got \"%.4s.\"\n", |
michael@0 | 1963 | a, b, c, d, e, f, cypher, rv); |
michael@0 | 1964 | PR_DELETE(rv); |
michael@0 | 1965 | return PR_FALSE; |
michael@0 | 1966 | } |
michael@0 | 1967 | |
michael@0 | 1968 | PR_DELETE(rv); |
michael@0 | 1969 | } |
michael@0 | 1970 | } |
michael@0 | 1971 | } |
michael@0 | 1972 | } |
michael@0 | 1973 | } |
michael@0 | 1974 | } |
michael@0 | 1975 | |
michael@0 | 1976 | printf("PASS\n"); |
michael@0 | 1977 | return PR_TRUE; |
michael@0 | 1978 | } |
michael@0 | 1979 | |
michael@0 | 1980 | /* PL_Base64Encode, random strings, malloc */ |
michael@0 | 1981 | PRBool test_008(void) |
michael@0 | 1982 | { |
michael@0 | 1983 | int i; |
michael@0 | 1984 | |
michael@0 | 1985 | printf("Test 008 (PL_Base64Encode, random strings, malloc) ..."); fflush(stdout); |
michael@0 | 1986 | |
michael@0 | 1987 | for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) |
michael@0 | 1988 | { |
michael@0 | 1989 | PRUint32 plen = PL_strlen(array[i].plaintext); |
michael@0 | 1990 | PRUint32 clen = ((plen + 2)/3)*4; |
michael@0 | 1991 | |
michael@0 | 1992 | char *rv = PL_Base64Encode(array[i].plaintext, plen, (char *)0); |
michael@0 | 1993 | |
michael@0 | 1994 | if( (char *)0 == rv ) |
michael@0 | 1995 | { |
michael@0 | 1996 | printf("FAIL\n\t(%d): no return value\n", i); |
michael@0 | 1997 | return PR_FALSE; |
michael@0 | 1998 | } |
michael@0 | 1999 | |
michael@0 | 2000 | if( 0 != PL_strcmp(rv, array[i].cyphertext) ) |
michael@0 | 2001 | { |
michael@0 | 2002 | printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%s.\"\n", |
michael@0 | 2003 | i, array[i].plaintext, array[i].cyphertext, rv); |
michael@0 | 2004 | return PR_FALSE; |
michael@0 | 2005 | } |
michael@0 | 2006 | } |
michael@0 | 2007 | |
michael@0 | 2008 | printf("PASS\n"); |
michael@0 | 2009 | return PR_TRUE; |
michael@0 | 2010 | } |
michael@0 | 2011 | |
michael@0 | 2012 | /* PL_Base64Decode, single characters */ |
michael@0 | 2013 | PRBool test_009(void) |
michael@0 | 2014 | { |
michael@0 | 2015 | PRUint32 a, b; |
michael@0 | 2016 | unsigned char plain[ 4 ]; |
michael@0 | 2017 | unsigned char cypher[ 5 ]; |
michael@0 | 2018 | char result[ 8 ]; |
michael@0 | 2019 | char *rv; |
michael@0 | 2020 | |
michael@0 | 2021 | printf("Test 009 (PL_Base64Decode, single characters, equals) ..."); fflush(stdout); |
michael@0 | 2022 | |
michael@0 | 2023 | plain[1] = plain[2] = plain[3] = (unsigned char)0; |
michael@0 | 2024 | cypher[2] = cypher[3] = (unsigned char)'='; |
michael@0 | 2025 | cypher[4] = (unsigned char)0; |
michael@0 | 2026 | |
michael@0 | 2027 | for( a = 0; a < 64; a++ ) |
michael@0 | 2028 | { |
michael@0 | 2029 | cypher[0] = base[a]; |
michael@0 | 2030 | |
michael@0 | 2031 | for( b = 0; b < 4; b++ ) |
michael@0 | 2032 | { |
michael@0 | 2033 | plain[0] = (unsigned char)(a * 4 + b); |
michael@0 | 2034 | cypher[1] = base[(b * 16)]; |
michael@0 | 2035 | |
michael@0 | 2036 | rv = PL_Base64Decode((char *)cypher, 4, result); |
michael@0 | 2037 | if( rv != result ) |
michael@0 | 2038 | { |
michael@0 | 2039 | printf("FAIL\n\t(%d, %d): return value\n", a, b); |
michael@0 | 2040 | return PR_FALSE; |
michael@0 | 2041 | } |
michael@0 | 2042 | |
michael@0 | 2043 | if( 0 != PL_strncmp((char *)plain, result, 1) ) |
michael@0 | 2044 | { |
michael@0 | 2045 | printf("FAIL\n\t(%d, %d): expected \"%s,\" got \"%.1s.\"\n", |
michael@0 | 2046 | a, b, plain, result); |
michael@0 | 2047 | return PR_FALSE; |
michael@0 | 2048 | } |
michael@0 | 2049 | } |
michael@0 | 2050 | } |
michael@0 | 2051 | |
michael@0 | 2052 | printf("PASS\n"); |
michael@0 | 2053 | return PR_TRUE; |
michael@0 | 2054 | } |
michael@0 | 2055 | |
michael@0 | 2056 | /* PL_Base64Decode, single characters */ |
michael@0 | 2057 | PRBool test_010(void) |
michael@0 | 2058 | { |
michael@0 | 2059 | PRUint32 a, b; |
michael@0 | 2060 | unsigned char plain[ 4 ]; |
michael@0 | 2061 | unsigned char cypher[ 5 ]; |
michael@0 | 2062 | char result[ 8 ]; |
michael@0 | 2063 | char *rv; |
michael@0 | 2064 | |
michael@0 | 2065 | printf("Test 010 (PL_Base64Decode, single characters, no equals) ..."); fflush(stdout); |
michael@0 | 2066 | |
michael@0 | 2067 | plain[1] = plain[2] = plain[3] = (unsigned char)0; |
michael@0 | 2068 | cypher[2] = cypher[3] = (unsigned char)0; |
michael@0 | 2069 | cypher[4] = (unsigned char)0; |
michael@0 | 2070 | |
michael@0 | 2071 | for( a = 0; a < 64; a++ ) |
michael@0 | 2072 | { |
michael@0 | 2073 | cypher[0] = base[a]; |
michael@0 | 2074 | |
michael@0 | 2075 | for( b = 0; b < 4; b++ ) |
michael@0 | 2076 | { |
michael@0 | 2077 | plain[0] = (unsigned char)(a * 4 + b); |
michael@0 | 2078 | cypher[1] = base[(b * 16)]; |
michael@0 | 2079 | |
michael@0 | 2080 | rv = PL_Base64Decode((char *)cypher, 2, result); |
michael@0 | 2081 | if( rv != result ) |
michael@0 | 2082 | { |
michael@0 | 2083 | printf("FAIL\n\t(%d, %d): return value\n", a, b); |
michael@0 | 2084 | return PR_FALSE; |
michael@0 | 2085 | } |
michael@0 | 2086 | |
michael@0 | 2087 | if( 0 != PL_strncmp((char *)plain, result, 1) ) |
michael@0 | 2088 | { |
michael@0 | 2089 | printf("FAIL\n\t(%d, %d): expected \"%s,\" got \"%.1s.\"\n", |
michael@0 | 2090 | a, b, plain, result); |
michael@0 | 2091 | return PR_FALSE; |
michael@0 | 2092 | } |
michael@0 | 2093 | } |
michael@0 | 2094 | } |
michael@0 | 2095 | |
michael@0 | 2096 | printf("PASS\n"); |
michael@0 | 2097 | return PR_TRUE; |
michael@0 | 2098 | } |
michael@0 | 2099 | |
michael@0 | 2100 | /* PL_Base64Decode, double characters */ |
michael@0 | 2101 | PRBool test_011(void) |
michael@0 | 2102 | { |
michael@0 | 2103 | PRUint32 a, b, c, d; |
michael@0 | 2104 | unsigned char plain[ 4 ]; |
michael@0 | 2105 | unsigned char cypher[ 5 ]; |
michael@0 | 2106 | char result[ 8 ]; |
michael@0 | 2107 | char *rv; |
michael@0 | 2108 | |
michael@0 | 2109 | printf("Test 011 (PL_Base64Decode, double characters, equals) ..."); fflush(stdout); |
michael@0 | 2110 | |
michael@0 | 2111 | plain[2] = plain[3] = (unsigned char)0; |
michael@0 | 2112 | cypher[3] = (unsigned char)'='; |
michael@0 | 2113 | cypher[4] = (unsigned char)0; |
michael@0 | 2114 | |
michael@0 | 2115 | for( a = 0; a < 64; a++ ) |
michael@0 | 2116 | { |
michael@0 | 2117 | cypher[0] = base[a]; |
michael@0 | 2118 | for( b = 0; b < 4; b++ ) |
michael@0 | 2119 | { |
michael@0 | 2120 | plain[0] = (a*4) + b; |
michael@0 | 2121 | for( c = 0; c < 16; c++ ) |
michael@0 | 2122 | { |
michael@0 | 2123 | cypher[1] = base[b*16 + c]; |
michael@0 | 2124 | for( d = 0; d < 16; d++ ) |
michael@0 | 2125 | { |
michael@0 | 2126 | plain[1] = c*16 + d; |
michael@0 | 2127 | cypher[2] = base[d*4]; |
michael@0 | 2128 | |
michael@0 | 2129 | rv = PL_Base64Decode((char *)cypher, 4, result); |
michael@0 | 2130 | if( rv != result ) |
michael@0 | 2131 | { |
michael@0 | 2132 | printf("FAIL\n\t(%d, %d, %d, %d): return value\n", a, b, c, d); |
michael@0 | 2133 | return PR_FALSE; |
michael@0 | 2134 | } |
michael@0 | 2135 | |
michael@0 | 2136 | if( 0 != PL_strncmp((char *)plain, result, 2) ) |
michael@0 | 2137 | { |
michael@0 | 2138 | printf("FAIL\n\t(%d, %d, %d, %d): expected \"%s,\" got \"%.2s.\"\n", |
michael@0 | 2139 | a, b, c, d, plain, result); |
michael@0 | 2140 | return PR_FALSE; |
michael@0 | 2141 | } |
michael@0 | 2142 | } |
michael@0 | 2143 | } |
michael@0 | 2144 | } |
michael@0 | 2145 | } |
michael@0 | 2146 | |
michael@0 | 2147 | printf("PASS\n"); |
michael@0 | 2148 | return PR_TRUE; |
michael@0 | 2149 | } |
michael@0 | 2150 | |
michael@0 | 2151 | /* PL_Base64Decode, double characters */ |
michael@0 | 2152 | PRBool test_012(void) |
michael@0 | 2153 | { |
michael@0 | 2154 | PRUint32 a, b, c, d; |
michael@0 | 2155 | unsigned char plain[ 4 ]; |
michael@0 | 2156 | unsigned char cypher[ 5 ]; |
michael@0 | 2157 | char result[ 8 ]; |
michael@0 | 2158 | char *rv; |
michael@0 | 2159 | |
michael@0 | 2160 | printf("Test 012 (PL_Base64Decode, double characters, no equals) ..."); fflush(stdout); |
michael@0 | 2161 | |
michael@0 | 2162 | plain[2] = plain[3] = (unsigned char)0; |
michael@0 | 2163 | cypher[3] = (unsigned char)0; |
michael@0 | 2164 | cypher[4] = (unsigned char)0; |
michael@0 | 2165 | |
michael@0 | 2166 | for( a = 0; a < 64; a++ ) |
michael@0 | 2167 | { |
michael@0 | 2168 | cypher[0] = base[a]; |
michael@0 | 2169 | for( b = 0; b < 4; b++ ) |
michael@0 | 2170 | { |
michael@0 | 2171 | plain[0] = (a*4) + b; |
michael@0 | 2172 | for( c = 0; c < 16; c++ ) |
michael@0 | 2173 | { |
michael@0 | 2174 | cypher[1] = base[b*16 + c]; |
michael@0 | 2175 | for( d = 0; d < 16; d++ ) |
michael@0 | 2176 | { |
michael@0 | 2177 | plain[1] = c*16 + d; |
michael@0 | 2178 | cypher[2] = base[d*4]; |
michael@0 | 2179 | |
michael@0 | 2180 | rv = PL_Base64Decode((char *)cypher, 3, result); |
michael@0 | 2181 | if( rv != result ) |
michael@0 | 2182 | { |
michael@0 | 2183 | printf("FAIL\n\t(%d, %d, %d, %d): return value\n", a, b, c, d); |
michael@0 | 2184 | return PR_FALSE; |
michael@0 | 2185 | } |
michael@0 | 2186 | |
michael@0 | 2187 | if( 0 != PL_strncmp((char *)plain, result, 2) ) |
michael@0 | 2188 | { |
michael@0 | 2189 | printf("FAIL\n\t(%d, %d, %d, %d): expected \"%s,\" got \"%.2s.\"\n", |
michael@0 | 2190 | a, b, c, d, cypher, result); |
michael@0 | 2191 | return PR_FALSE; |
michael@0 | 2192 | } |
michael@0 | 2193 | } |
michael@0 | 2194 | } |
michael@0 | 2195 | } |
michael@0 | 2196 | } |
michael@0 | 2197 | |
michael@0 | 2198 | printf("PASS\n"); |
michael@0 | 2199 | return PR_TRUE; |
michael@0 | 2200 | } |
michael@0 | 2201 | |
michael@0 | 2202 | /* PL_Base64Decode, triple characters */ |
michael@0 | 2203 | PRBool test_013(void) |
michael@0 | 2204 | { |
michael@0 | 2205 | PRUint32 a, b, c, d, e, f; |
michael@0 | 2206 | unsigned char plain[ 4 ]; |
michael@0 | 2207 | unsigned char cypher[ 5 ]; |
michael@0 | 2208 | char result[ 8 ]; |
michael@0 | 2209 | char *rv; |
michael@0 | 2210 | |
michael@0 | 2211 | printf("Test 013 (PL_Base64Decode, triple characters) ..."); fflush(stdout); |
michael@0 | 2212 | |
michael@0 | 2213 | cypher[4] = (unsigned char)0; |
michael@0 | 2214 | |
michael@0 | 2215 | for( a = 0; a < 64; a++ ) |
michael@0 | 2216 | { |
michael@0 | 2217 | cypher[0] = base[a]; |
michael@0 | 2218 | for( b = 0; b < 4; b++ ) |
michael@0 | 2219 | { |
michael@0 | 2220 | plain[0] = (a*4) + b; |
michael@0 | 2221 | for( c = 0; c < 16; c++ ) |
michael@0 | 2222 | { |
michael@0 | 2223 | cypher[1] = base[b*16 + c]; |
michael@0 | 2224 | for( d = 0; d < 16; d++ ) |
michael@0 | 2225 | { |
michael@0 | 2226 | plain[1] = c*16 + d; |
michael@0 | 2227 | for( e = 0; e < 4; e++ ) |
michael@0 | 2228 | { |
michael@0 | 2229 | cypher[2] = base[d*4 + e]; |
michael@0 | 2230 | for( f = 0; f < 64; f++ ) |
michael@0 | 2231 | { |
michael@0 | 2232 | plain[2] = e * 64 + f; |
michael@0 | 2233 | cypher[3] = base[f]; |
michael@0 | 2234 | |
michael@0 | 2235 | rv = PL_Base64Decode((char *)cypher, 4, result); |
michael@0 | 2236 | if( rv != result ) |
michael@0 | 2237 | { |
michael@0 | 2238 | printf("FAIL\n\t(%d, %d, %d, %d, %d, %d): return value\n", a, b, c, d, e, f); |
michael@0 | 2239 | return PR_FALSE; |
michael@0 | 2240 | } |
michael@0 | 2241 | |
michael@0 | 2242 | if( 0 != PL_strncmp((char *)plain, result, 3) ) |
michael@0 | 2243 | { |
michael@0 | 2244 | printf("FAIL\n\t(%d, %d, %d, %d, %d, %d): expected \"%s,\" got \"%.3s.\"\n", |
michael@0 | 2245 | a, b, c, d, e, f, plain, result); |
michael@0 | 2246 | return PR_FALSE; |
michael@0 | 2247 | } |
michael@0 | 2248 | } |
michael@0 | 2249 | } |
michael@0 | 2250 | } |
michael@0 | 2251 | } |
michael@0 | 2252 | } |
michael@0 | 2253 | } |
michael@0 | 2254 | |
michael@0 | 2255 | printf("PASS\n"); |
michael@0 | 2256 | return PR_TRUE; |
michael@0 | 2257 | } |
michael@0 | 2258 | |
michael@0 | 2259 | /* PL_Base64Decode, random strings */ |
michael@0 | 2260 | PRBool test_014(void) |
michael@0 | 2261 | { |
michael@0 | 2262 | int i; |
michael@0 | 2263 | char result[ 4096 ]; |
michael@0 | 2264 | |
michael@0 | 2265 | printf("Test 014 (PL_Base64Decode, random strings, equals) ..."); fflush(stdout); |
michael@0 | 2266 | |
michael@0 | 2267 | for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) |
michael@0 | 2268 | { |
michael@0 | 2269 | PRUint32 clen = PL_strlen(array[i].cyphertext); |
michael@0 | 2270 | PRUint32 plen = (clen * 3) / 4; |
michael@0 | 2271 | |
michael@0 | 2272 | char *rv = PL_Base64Decode(array[i].cyphertext, clen, result); |
michael@0 | 2273 | |
michael@0 | 2274 | if( rv != result ) |
michael@0 | 2275 | { |
michael@0 | 2276 | printf("FAIL\n\t(%d): return value\n", i); |
michael@0 | 2277 | return PR_FALSE; |
michael@0 | 2278 | } |
michael@0 | 2279 | |
michael@0 | 2280 | if( 0 == (clen & 3) ) |
michael@0 | 2281 | { |
michael@0 | 2282 | if( '=' == array[i].cyphertext[clen-1] ) |
michael@0 | 2283 | { |
michael@0 | 2284 | if( '=' == array[i].cyphertext[clen-2] ) |
michael@0 | 2285 | { |
michael@0 | 2286 | plen -= 2; |
michael@0 | 2287 | } |
michael@0 | 2288 | else |
michael@0 | 2289 | { |
michael@0 | 2290 | plen -= 1; |
michael@0 | 2291 | } |
michael@0 | 2292 | } |
michael@0 | 2293 | } |
michael@0 | 2294 | |
michael@0 | 2295 | if( 0 != PL_strncmp(result, array[i].plaintext, plen) ) |
michael@0 | 2296 | { |
michael@0 | 2297 | printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%.*s.\"\n", |
michael@0 | 2298 | i, array[i].cyphertext, array[i].plaintext, plen, result); |
michael@0 | 2299 | return PR_FALSE; |
michael@0 | 2300 | } |
michael@0 | 2301 | } |
michael@0 | 2302 | |
michael@0 | 2303 | printf("PASS\n"); |
michael@0 | 2304 | return PR_TRUE; |
michael@0 | 2305 | } |
michael@0 | 2306 | |
michael@0 | 2307 | /* PL_Base64Decode, random strings */ |
michael@0 | 2308 | PRBool test_015(void) |
michael@0 | 2309 | { |
michael@0 | 2310 | int i; |
michael@0 | 2311 | char buffer[ 4096 ]; |
michael@0 | 2312 | char result[ 4096 ]; |
michael@0 | 2313 | char *rv; |
michael@0 | 2314 | |
michael@0 | 2315 | printf("Test 015 (PL_Base64Decode, random strings, no equals) ..."); fflush(stdout); |
michael@0 | 2316 | |
michael@0 | 2317 | for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) |
michael@0 | 2318 | { |
michael@0 | 2319 | PRUint32 clen, plen; |
michael@0 | 2320 | |
michael@0 | 2321 | PL_strcpy(buffer, array[i].cyphertext); |
michael@0 | 2322 | clen = PL_strlen(buffer); |
michael@0 | 2323 | |
michael@0 | 2324 | if( 0 == (clen & 3) ) |
michael@0 | 2325 | { |
michael@0 | 2326 | if( '=' == buffer[clen-1] ) |
michael@0 | 2327 | { |
michael@0 | 2328 | if( '=' == buffer[clen-2] ) |
michael@0 | 2329 | { |
michael@0 | 2330 | buffer[clen-2] = buffer[clen-1] = (char)0; |
michael@0 | 2331 | clen -= 2; |
michael@0 | 2332 | } |
michael@0 | 2333 | else |
michael@0 | 2334 | { |
michael@0 | 2335 | buffer[clen-1] = (char)0; |
michael@0 | 2336 | clen -= 1; |
michael@0 | 2337 | } |
michael@0 | 2338 | } |
michael@0 | 2339 | } |
michael@0 | 2340 | |
michael@0 | 2341 | plen = (clen * 3) / 4; |
michael@0 | 2342 | |
michael@0 | 2343 | rv = PL_Base64Decode(buffer, clen, result); |
michael@0 | 2344 | |
michael@0 | 2345 | if( rv != result ) |
michael@0 | 2346 | { |
michael@0 | 2347 | printf("FAIL\n\t(%d): return value\n", i); |
michael@0 | 2348 | return PR_FALSE; |
michael@0 | 2349 | } |
michael@0 | 2350 | |
michael@0 | 2351 | if( 0 != PL_strncmp(result, array[i].plaintext, plen) ) |
michael@0 | 2352 | { |
michael@0 | 2353 | printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%.*s.\"\n", |
michael@0 | 2354 | i, array[i].cyphertext, array[i].plaintext, plen, result); |
michael@0 | 2355 | return PR_FALSE; |
michael@0 | 2356 | } |
michael@0 | 2357 | } |
michael@0 | 2358 | |
michael@0 | 2359 | printf("PASS\n"); |
michael@0 | 2360 | return PR_TRUE; |
michael@0 | 2361 | } |
michael@0 | 2362 | |
michael@0 | 2363 | /* PL_Base64Decode, single characters, malloc */ |
michael@0 | 2364 | PRBool test_016(void) |
michael@0 | 2365 | { |
michael@0 | 2366 | PRUint32 a, b; |
michael@0 | 2367 | unsigned char plain[ 4 ]; |
michael@0 | 2368 | unsigned char cypher[ 5 ]; |
michael@0 | 2369 | char *rv; |
michael@0 | 2370 | |
michael@0 | 2371 | printf("Test 016 (PL_Base64Decode, single characters, equals, malloc) ..."); fflush(stdout); |
michael@0 | 2372 | |
michael@0 | 2373 | plain[1] = plain[2] = plain[3] = (unsigned char)0; |
michael@0 | 2374 | cypher[2] = cypher[3] = (unsigned char)'='; |
michael@0 | 2375 | cypher[4] = (unsigned char)0; |
michael@0 | 2376 | |
michael@0 | 2377 | for( a = 0; a < 64; a++ ) |
michael@0 | 2378 | { |
michael@0 | 2379 | cypher[0] = base[a]; |
michael@0 | 2380 | |
michael@0 | 2381 | for( b = 0; b < 4; b++ ) |
michael@0 | 2382 | { |
michael@0 | 2383 | plain[0] = (unsigned char)(a * 4 + b); |
michael@0 | 2384 | cypher[1] = base[(b * 16)]; |
michael@0 | 2385 | |
michael@0 | 2386 | rv = PL_Base64Decode((char *)cypher, 4, (char *)0); |
michael@0 | 2387 | if( (char *)0 == rv ) |
michael@0 | 2388 | { |
michael@0 | 2389 | printf("FAIL\n\t(%d, %d): no return value\n", a, b); |
michael@0 | 2390 | return PR_FALSE; |
michael@0 | 2391 | } |
michael@0 | 2392 | |
michael@0 | 2393 | if( 0 != PL_strcmp((char *)plain, rv) ) |
michael@0 | 2394 | { |
michael@0 | 2395 | printf("FAIL\n\t(%d, %d): expected \"%s,\" got \"%s.\"\n", |
michael@0 | 2396 | a, b, plain, rv); |
michael@0 | 2397 | PR_DELETE(rv); |
michael@0 | 2398 | return PR_FALSE; |
michael@0 | 2399 | } |
michael@0 | 2400 | |
michael@0 | 2401 | PR_DELETE(rv); |
michael@0 | 2402 | } |
michael@0 | 2403 | } |
michael@0 | 2404 | |
michael@0 | 2405 | printf("PASS\n"); |
michael@0 | 2406 | return PR_TRUE; |
michael@0 | 2407 | } |
michael@0 | 2408 | |
michael@0 | 2409 | /* PL_Base64Decode, single characters, malloc */ |
michael@0 | 2410 | PRBool test_017(void) |
michael@0 | 2411 | { |
michael@0 | 2412 | PRUint32 a, b; |
michael@0 | 2413 | unsigned char plain[ 4 ]; |
michael@0 | 2414 | unsigned char cypher[ 5 ]; |
michael@0 | 2415 | char *rv; |
michael@0 | 2416 | |
michael@0 | 2417 | printf("Test 017 (PL_Base64Decode, single characters, no equals, malloc) ..."); fflush(stdout); |
michael@0 | 2418 | |
michael@0 | 2419 | plain[1] = plain[2] = plain[3] = (unsigned char)0; |
michael@0 | 2420 | cypher[2] = cypher[3] = (unsigned char)0; |
michael@0 | 2421 | cypher[4] = (unsigned char)0; |
michael@0 | 2422 | |
michael@0 | 2423 | for( a = 0; a < 64; a++ ) |
michael@0 | 2424 | { |
michael@0 | 2425 | cypher[0] = base[a]; |
michael@0 | 2426 | |
michael@0 | 2427 | for( b = 0; b < 4; b++ ) |
michael@0 | 2428 | { |
michael@0 | 2429 | plain[0] = (unsigned char)(a * 4 + b); |
michael@0 | 2430 | cypher[1] = base[(b * 16)]; |
michael@0 | 2431 | |
michael@0 | 2432 | rv = PL_Base64Decode((char *)cypher, 2, (char *)0); |
michael@0 | 2433 | if( (char *)0 == rv ) |
michael@0 | 2434 | { |
michael@0 | 2435 | printf("FAIL\n\t(%d, %d): no return value\n", a, b); |
michael@0 | 2436 | return PR_FALSE; |
michael@0 | 2437 | } |
michael@0 | 2438 | |
michael@0 | 2439 | if( 0 != PL_strcmp((char *)plain, rv) ) |
michael@0 | 2440 | { |
michael@0 | 2441 | printf("FAIL\n\t(%d, %d): expected \"%s,\" got \"%s.\"\n", |
michael@0 | 2442 | a, b, plain, rv); |
michael@0 | 2443 | PR_DELETE(rv); |
michael@0 | 2444 | return PR_FALSE; |
michael@0 | 2445 | } |
michael@0 | 2446 | |
michael@0 | 2447 | PR_DELETE(rv); |
michael@0 | 2448 | } |
michael@0 | 2449 | } |
michael@0 | 2450 | |
michael@0 | 2451 | printf("PASS\n"); |
michael@0 | 2452 | return PR_TRUE; |
michael@0 | 2453 | } |
michael@0 | 2454 | |
michael@0 | 2455 | /* PL_Base64Decode, double characters, malloc */ |
michael@0 | 2456 | PRBool test_018(void) |
michael@0 | 2457 | { |
michael@0 | 2458 | PRUint32 a, b, c, d; |
michael@0 | 2459 | unsigned char plain[ 4 ]; |
michael@0 | 2460 | unsigned char cypher[ 5 ]; |
michael@0 | 2461 | char *rv; |
michael@0 | 2462 | |
michael@0 | 2463 | printf("Test 018 (PL_Base64Decode, double characters, equals, malloc) ..."); fflush(stdout); |
michael@0 | 2464 | |
michael@0 | 2465 | plain[2] = plain[3] = (unsigned char)0; |
michael@0 | 2466 | cypher[3] = (unsigned char)'='; |
michael@0 | 2467 | cypher[4] = (unsigned char)0; |
michael@0 | 2468 | |
michael@0 | 2469 | for( a = 0; a < 64; a++ ) |
michael@0 | 2470 | { |
michael@0 | 2471 | cypher[0] = base[a]; |
michael@0 | 2472 | for( b = 0; b < 4; b++ ) |
michael@0 | 2473 | { |
michael@0 | 2474 | plain[0] = (a*4) + b; |
michael@0 | 2475 | for( c = 0; c < 16; c++ ) |
michael@0 | 2476 | { |
michael@0 | 2477 | cypher[1] = base[b*16 + c]; |
michael@0 | 2478 | for( d = 0; d < 16; d++ ) |
michael@0 | 2479 | { |
michael@0 | 2480 | plain[1] = c*16 + d; |
michael@0 | 2481 | cypher[2] = base[d*4]; |
michael@0 | 2482 | |
michael@0 | 2483 | rv = PL_Base64Decode((char *)cypher, 4, (char *)0); |
michael@0 | 2484 | if( (char *)0 == rv ) |
michael@0 | 2485 | { |
michael@0 | 2486 | printf("FAIL\n\t(%d, %d, %d, %d): no return value\n", a, b, c, d); |
michael@0 | 2487 | return PR_FALSE; |
michael@0 | 2488 | } |
michael@0 | 2489 | |
michael@0 | 2490 | if( 0 != PL_strcmp((char *)plain, rv) ) |
michael@0 | 2491 | { |
michael@0 | 2492 | printf("FAIL\n\t(%d, %d, %d, %d): expected \"%s,\" got \"%s.\"\n", |
michael@0 | 2493 | a, b, c, d, plain, rv); |
michael@0 | 2494 | PR_DELETE(rv); |
michael@0 | 2495 | return PR_FALSE; |
michael@0 | 2496 | } |
michael@0 | 2497 | |
michael@0 | 2498 | PR_DELETE(rv); |
michael@0 | 2499 | } |
michael@0 | 2500 | } |
michael@0 | 2501 | } |
michael@0 | 2502 | } |
michael@0 | 2503 | |
michael@0 | 2504 | printf("PASS\n"); |
michael@0 | 2505 | return PR_TRUE; |
michael@0 | 2506 | } |
michael@0 | 2507 | |
michael@0 | 2508 | /* PL_Base64Decode, double characters, malloc */ |
michael@0 | 2509 | PRBool test_019(void) |
michael@0 | 2510 | { |
michael@0 | 2511 | PRUint32 a, b, c, d; |
michael@0 | 2512 | unsigned char plain[ 4 ]; |
michael@0 | 2513 | unsigned char cypher[ 5 ]; |
michael@0 | 2514 | char *rv; |
michael@0 | 2515 | |
michael@0 | 2516 | printf("Test 019 (PL_Base64Decode, double characters, no equals, malloc) ..."); fflush(stdout); |
michael@0 | 2517 | |
michael@0 | 2518 | plain[2] = plain[3] = (unsigned char)0; |
michael@0 | 2519 | cypher[3] = (unsigned char)0; |
michael@0 | 2520 | cypher[4] = (unsigned char)0; |
michael@0 | 2521 | |
michael@0 | 2522 | for( a = 0; a < 64; a++ ) |
michael@0 | 2523 | { |
michael@0 | 2524 | cypher[0] = base[a]; |
michael@0 | 2525 | for( b = 0; b < 4; b++ ) |
michael@0 | 2526 | { |
michael@0 | 2527 | plain[0] = (a*4) + b; |
michael@0 | 2528 | for( c = 0; c < 16; c++ ) |
michael@0 | 2529 | { |
michael@0 | 2530 | cypher[1] = base[b*16 + c]; |
michael@0 | 2531 | for( d = 0; d < 16; d++ ) |
michael@0 | 2532 | { |
michael@0 | 2533 | plain[1] = c*16 + d; |
michael@0 | 2534 | cypher[2] = base[d*4]; |
michael@0 | 2535 | |
michael@0 | 2536 | rv = PL_Base64Decode((char *)cypher, 3, (char *)0); |
michael@0 | 2537 | if( (char *)0 == rv ) |
michael@0 | 2538 | { |
michael@0 | 2539 | printf("FAIL\n\t(%d, %d, %d, %d): no return value\n", a, b, c, d); |
michael@0 | 2540 | return PR_FALSE; |
michael@0 | 2541 | } |
michael@0 | 2542 | |
michael@0 | 2543 | if( 0 != PL_strcmp((char *)plain, rv) ) |
michael@0 | 2544 | { |
michael@0 | 2545 | printf("FAIL\n\t(%d, %d, %d, %d): expected \"%s,\" got \"%s.\"\n", |
michael@0 | 2546 | a, b, c, d, cypher, rv); |
michael@0 | 2547 | PR_DELETE(rv); |
michael@0 | 2548 | return PR_FALSE; |
michael@0 | 2549 | } |
michael@0 | 2550 | |
michael@0 | 2551 | PR_DELETE(rv); |
michael@0 | 2552 | } |
michael@0 | 2553 | } |
michael@0 | 2554 | } |
michael@0 | 2555 | } |
michael@0 | 2556 | |
michael@0 | 2557 | printf("PASS\n"); |
michael@0 | 2558 | return PR_TRUE; |
michael@0 | 2559 | } |
michael@0 | 2560 | |
michael@0 | 2561 | /* PL_Base64Decode, triple characters, malloc */ |
michael@0 | 2562 | PRBool test_020(void) |
michael@0 | 2563 | { |
michael@0 | 2564 | PRUint32 a, b, c, d, e, f; |
michael@0 | 2565 | unsigned char plain[ 4 ]; |
michael@0 | 2566 | unsigned char cypher[ 5 ]; |
michael@0 | 2567 | char *rv; |
michael@0 | 2568 | |
michael@0 | 2569 | printf("Test 020 (PL_Base64Decode, triple characters, malloc) ..."); fflush(stdout); |
michael@0 | 2570 | |
michael@0 | 2571 | cypher[4] = (unsigned char)0; |
michael@0 | 2572 | plain[3] = (unsigned char)0; |
michael@0 | 2573 | |
michael@0 | 2574 | for( a = 0; a < 64; a++ ) |
michael@0 | 2575 | { |
michael@0 | 2576 | cypher[0] = base[a]; |
michael@0 | 2577 | for( b = 0; b < 4; b++ ) |
michael@0 | 2578 | { |
michael@0 | 2579 | plain[0] = (a*4) + b; |
michael@0 | 2580 | for( c = 0; c < 16; c++ ) |
michael@0 | 2581 | { |
michael@0 | 2582 | cypher[1] = base[b*16 + c]; |
michael@0 | 2583 | for( d = 0; d < 16; d++ ) |
michael@0 | 2584 | { |
michael@0 | 2585 | plain[1] = c*16 + d; |
michael@0 | 2586 | for( e = 0; e < 4; e++ ) |
michael@0 | 2587 | { |
michael@0 | 2588 | cypher[2] = base[d*4 + e]; |
michael@0 | 2589 | for( f = 0; f < 64; f++ ) |
michael@0 | 2590 | { |
michael@0 | 2591 | plain[2] = e * 64 + f; |
michael@0 | 2592 | cypher[3] = base[f]; |
michael@0 | 2593 | |
michael@0 | 2594 | rv = PL_Base64Decode((char *)cypher, 4, (char *)0); |
michael@0 | 2595 | if( (char *)0 == rv ) |
michael@0 | 2596 | { |
michael@0 | 2597 | printf("FAIL\n\t(%d, %d, %d, %d, %d, %d): no return value\n", a, b, c, d, e, f); |
michael@0 | 2598 | return PR_FALSE; |
michael@0 | 2599 | } |
michael@0 | 2600 | |
michael@0 | 2601 | if( 0 != PL_strcmp((char *)plain, rv) ) |
michael@0 | 2602 | { |
michael@0 | 2603 | printf("FAIL\n\t(%d, %d, %d, %d, %d, %d): expected \"%s,\" got \"%.3s.\"\n", |
michael@0 | 2604 | a, b, c, d, e, f, plain, rv); |
michael@0 | 2605 | PR_DELETE(rv); |
michael@0 | 2606 | return PR_FALSE; |
michael@0 | 2607 | } |
michael@0 | 2608 | |
michael@0 | 2609 | PR_DELETE(rv); |
michael@0 | 2610 | } |
michael@0 | 2611 | } |
michael@0 | 2612 | } |
michael@0 | 2613 | } |
michael@0 | 2614 | } |
michael@0 | 2615 | } |
michael@0 | 2616 | |
michael@0 | 2617 | printf("PASS\n"); |
michael@0 | 2618 | return PR_TRUE; |
michael@0 | 2619 | } |
michael@0 | 2620 | |
michael@0 | 2621 | /* PL_Base64Decode, random strings, malloc */ |
michael@0 | 2622 | PRBool test_021(void) |
michael@0 | 2623 | { |
michael@0 | 2624 | int i; |
michael@0 | 2625 | |
michael@0 | 2626 | printf("Test 021 (PL_Base64Decode, random strings, equals, malloc) ..."); fflush(stdout); |
michael@0 | 2627 | |
michael@0 | 2628 | for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) |
michael@0 | 2629 | { |
michael@0 | 2630 | PRUint32 clen = PL_strlen(array[i].cyphertext); |
michael@0 | 2631 | |
michael@0 | 2632 | char *rv = PL_Base64Decode(array[i].cyphertext, clen, (char *)0); |
michael@0 | 2633 | |
michael@0 | 2634 | if( (char *)0 == rv ) |
michael@0 | 2635 | { |
michael@0 | 2636 | printf("FAIL\n\t(%d): no return value\n", i); |
michael@0 | 2637 | return PR_FALSE; |
michael@0 | 2638 | } |
michael@0 | 2639 | |
michael@0 | 2640 | if( 0 != PL_strcmp(rv, array[i].plaintext) ) |
michael@0 | 2641 | { |
michael@0 | 2642 | printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%s.\"\n", |
michael@0 | 2643 | i, array[i].cyphertext, array[i].plaintext, rv); |
michael@0 | 2644 | PR_DELETE(rv); |
michael@0 | 2645 | return PR_FALSE; |
michael@0 | 2646 | } |
michael@0 | 2647 | |
michael@0 | 2648 | PR_DELETE(rv); |
michael@0 | 2649 | } |
michael@0 | 2650 | |
michael@0 | 2651 | printf("PASS\n"); |
michael@0 | 2652 | return PR_TRUE; |
michael@0 | 2653 | } |
michael@0 | 2654 | |
michael@0 | 2655 | /* PL_Base64Encode, random strings, malloc */ |
michael@0 | 2656 | PRBool test_022(void) |
michael@0 | 2657 | { |
michael@0 | 2658 | int i; |
michael@0 | 2659 | char buffer[ 4096 ]; |
michael@0 | 2660 | char *rv; |
michael@0 | 2661 | |
michael@0 | 2662 | printf("Test 022 (PL_Base64Decode, random strings, no equals, malloc) ..."); fflush(stdout); |
michael@0 | 2663 | |
michael@0 | 2664 | for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) |
michael@0 | 2665 | { |
michael@0 | 2666 | PRUint32 clen; |
michael@0 | 2667 | |
michael@0 | 2668 | PL_strcpy(buffer, array[i].cyphertext); |
michael@0 | 2669 | clen = PL_strlen(buffer); |
michael@0 | 2670 | |
michael@0 | 2671 | if( 0 == (clen & 3) ) |
michael@0 | 2672 | { |
michael@0 | 2673 | if( '=' == buffer[clen-1] ) |
michael@0 | 2674 | { |
michael@0 | 2675 | if( '=' == buffer[clen-2] ) |
michael@0 | 2676 | { |
michael@0 | 2677 | buffer[clen-2] = buffer[clen-1] = (char)0; |
michael@0 | 2678 | clen -= 2; |
michael@0 | 2679 | } |
michael@0 | 2680 | else |
michael@0 | 2681 | { |
michael@0 | 2682 | buffer[clen-1] = (char)0; |
michael@0 | 2683 | clen -= 1; |
michael@0 | 2684 | } |
michael@0 | 2685 | } |
michael@0 | 2686 | } |
michael@0 | 2687 | |
michael@0 | 2688 | rv = PL_Base64Decode(buffer, clen, (char *)0); |
michael@0 | 2689 | |
michael@0 | 2690 | if( (char *)0 == rv ) |
michael@0 | 2691 | { |
michael@0 | 2692 | printf("FAIL\n\t(%d): no return value\n", i); |
michael@0 | 2693 | return PR_FALSE; |
michael@0 | 2694 | } |
michael@0 | 2695 | |
michael@0 | 2696 | if( 0 != PL_strcmp(rv, array[i].plaintext) ) |
michael@0 | 2697 | { |
michael@0 | 2698 | printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%s.\"\n", |
michael@0 | 2699 | i, array[i].cyphertext, array[i].plaintext, rv); |
michael@0 | 2700 | return PR_FALSE; |
michael@0 | 2701 | } |
michael@0 | 2702 | } |
michael@0 | 2703 | |
michael@0 | 2704 | printf("PASS\n"); |
michael@0 | 2705 | return PR_TRUE; |
michael@0 | 2706 | } |
michael@0 | 2707 | |
michael@0 | 2708 | /* PL_Base64Encode, random strings */ |
michael@0 | 2709 | PRBool test_023(void) |
michael@0 | 2710 | { |
michael@0 | 2711 | int i; |
michael@0 | 2712 | char result[ 4096 ]; |
michael@0 | 2713 | |
michael@0 | 2714 | printf("Test 023 (PL_Base64Encode, random strings, strlen) ..."); fflush(stdout); |
michael@0 | 2715 | |
michael@0 | 2716 | for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) |
michael@0 | 2717 | { |
michael@0 | 2718 | PRUint32 plen = PL_strlen(array[i].plaintext); |
michael@0 | 2719 | PRUint32 clen = ((plen + 2)/3)*4; |
michael@0 | 2720 | |
michael@0 | 2721 | char *rv = PL_Base64Encode(array[i].plaintext, 0, result); |
michael@0 | 2722 | |
michael@0 | 2723 | if( rv != result ) |
michael@0 | 2724 | { |
michael@0 | 2725 | printf("FAIL\n\t(%d): return value\n", i); |
michael@0 | 2726 | return PR_FALSE; |
michael@0 | 2727 | } |
michael@0 | 2728 | |
michael@0 | 2729 | if( 0 != PL_strncmp(result, array[i].cyphertext, clen) ) |
michael@0 | 2730 | { |
michael@0 | 2731 | printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%.*s.\"\n", |
michael@0 | 2732 | i, array[i].plaintext, array[i].cyphertext, clen, result); |
michael@0 | 2733 | return PR_FALSE; |
michael@0 | 2734 | } |
michael@0 | 2735 | } |
michael@0 | 2736 | |
michael@0 | 2737 | printf("PASS\n"); |
michael@0 | 2738 | return PR_TRUE; |
michael@0 | 2739 | } |
michael@0 | 2740 | |
michael@0 | 2741 | /* PL_Base64Encode, random strings, malloc */ |
michael@0 | 2742 | PRBool test_024(void) |
michael@0 | 2743 | { |
michael@0 | 2744 | int i; |
michael@0 | 2745 | |
michael@0 | 2746 | printf("Test 024 (PL_Base64Encode, random strings, malloc, strlen) ..."); fflush(stdout); |
michael@0 | 2747 | |
michael@0 | 2748 | for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) |
michael@0 | 2749 | { |
michael@0 | 2750 | PRUint32 plen = PL_strlen(array[i].plaintext); |
michael@0 | 2751 | PRUint32 clen = ((plen + 2)/3)*4; |
michael@0 | 2752 | |
michael@0 | 2753 | char *rv = PL_Base64Encode(array[i].plaintext, 0, (char *)0); |
michael@0 | 2754 | |
michael@0 | 2755 | if( (char *)0 == rv ) |
michael@0 | 2756 | { |
michael@0 | 2757 | printf("FAIL\n\t(%d): no return value\n", i); |
michael@0 | 2758 | return PR_FALSE; |
michael@0 | 2759 | } |
michael@0 | 2760 | |
michael@0 | 2761 | if( 0 != PL_strcmp(rv, array[i].cyphertext) ) |
michael@0 | 2762 | { |
michael@0 | 2763 | printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%s.\"\n", |
michael@0 | 2764 | i, array[i].plaintext, array[i].cyphertext, rv); |
michael@0 | 2765 | return PR_FALSE; |
michael@0 | 2766 | } |
michael@0 | 2767 | } |
michael@0 | 2768 | |
michael@0 | 2769 | printf("PASS\n"); |
michael@0 | 2770 | return PR_TRUE; |
michael@0 | 2771 | } |
michael@0 | 2772 | |
michael@0 | 2773 | /* PL_Base64Decode, random strings */ |
michael@0 | 2774 | PRBool test_025(void) |
michael@0 | 2775 | { |
michael@0 | 2776 | int i; |
michael@0 | 2777 | char result[ 4096 ]; |
michael@0 | 2778 | |
michael@0 | 2779 | printf("Test 025 (PL_Base64Decode, random strings, equals, strlen) ..."); fflush(stdout); |
michael@0 | 2780 | |
michael@0 | 2781 | for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) |
michael@0 | 2782 | { |
michael@0 | 2783 | PRUint32 clen = PL_strlen(array[i].cyphertext); |
michael@0 | 2784 | PRUint32 plen = (clen * 3) / 4; |
michael@0 | 2785 | |
michael@0 | 2786 | char *rv = PL_Base64Decode(array[i].cyphertext, 0, result); |
michael@0 | 2787 | |
michael@0 | 2788 | if( rv != result ) |
michael@0 | 2789 | { |
michael@0 | 2790 | printf("FAIL\n\t(%d): return value\n", i); |
michael@0 | 2791 | return PR_FALSE; |
michael@0 | 2792 | } |
michael@0 | 2793 | |
michael@0 | 2794 | if( 0 == (clen & 3) ) |
michael@0 | 2795 | { |
michael@0 | 2796 | if( '=' == array[i].cyphertext[clen-1] ) |
michael@0 | 2797 | { |
michael@0 | 2798 | if( '=' == array[i].cyphertext[clen-2] ) |
michael@0 | 2799 | { |
michael@0 | 2800 | plen -= 2; |
michael@0 | 2801 | } |
michael@0 | 2802 | else |
michael@0 | 2803 | { |
michael@0 | 2804 | plen -= 1; |
michael@0 | 2805 | } |
michael@0 | 2806 | } |
michael@0 | 2807 | } |
michael@0 | 2808 | |
michael@0 | 2809 | if( 0 != PL_strncmp(result, array[i].plaintext, plen) ) |
michael@0 | 2810 | { |
michael@0 | 2811 | printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%.*s.\"\n", |
michael@0 | 2812 | i, array[i].cyphertext, array[i].plaintext, plen, result); |
michael@0 | 2813 | return PR_FALSE; |
michael@0 | 2814 | } |
michael@0 | 2815 | } |
michael@0 | 2816 | |
michael@0 | 2817 | printf("PASS\n"); |
michael@0 | 2818 | return PR_TRUE; |
michael@0 | 2819 | } |
michael@0 | 2820 | |
michael@0 | 2821 | /* PL_Base64Decode, random strings */ |
michael@0 | 2822 | PRBool test_026(void) |
michael@0 | 2823 | { |
michael@0 | 2824 | int i; |
michael@0 | 2825 | char buffer[ 4096 ]; |
michael@0 | 2826 | char result[ 4096 ]; |
michael@0 | 2827 | char *rv; |
michael@0 | 2828 | |
michael@0 | 2829 | printf("Test 026 (PL_Base64Decode, random strings, no equals, strlen) ..."); fflush(stdout); |
michael@0 | 2830 | |
michael@0 | 2831 | for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) |
michael@0 | 2832 | { |
michael@0 | 2833 | PRUint32 clen, plen; |
michael@0 | 2834 | |
michael@0 | 2835 | PL_strcpy(buffer, array[i].cyphertext); |
michael@0 | 2836 | clen = PL_strlen(buffer); |
michael@0 | 2837 | |
michael@0 | 2838 | if( 0 == (clen & 3) ) |
michael@0 | 2839 | { |
michael@0 | 2840 | if( '=' == buffer[clen-1] ) |
michael@0 | 2841 | { |
michael@0 | 2842 | if( '=' == buffer[clen-2] ) |
michael@0 | 2843 | { |
michael@0 | 2844 | buffer[clen-2] = buffer[clen-1] = (char)0; |
michael@0 | 2845 | clen -= 2; |
michael@0 | 2846 | } |
michael@0 | 2847 | else |
michael@0 | 2848 | { |
michael@0 | 2849 | buffer[clen-1] = (char)0; |
michael@0 | 2850 | clen -= 1; |
michael@0 | 2851 | } |
michael@0 | 2852 | } |
michael@0 | 2853 | } |
michael@0 | 2854 | |
michael@0 | 2855 | plen = (clen * 3) / 4; |
michael@0 | 2856 | |
michael@0 | 2857 | rv = PL_Base64Decode(buffer, 0, result); |
michael@0 | 2858 | |
michael@0 | 2859 | if( rv != result ) |
michael@0 | 2860 | { |
michael@0 | 2861 | printf("FAIL\n\t(%d): return value\n", i); |
michael@0 | 2862 | return PR_FALSE; |
michael@0 | 2863 | } |
michael@0 | 2864 | |
michael@0 | 2865 | if( 0 != PL_strncmp(result, array[i].plaintext, plen) ) |
michael@0 | 2866 | { |
michael@0 | 2867 | printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%.*s.\"\n", |
michael@0 | 2868 | i, array[i].cyphertext, array[i].plaintext, plen, result); |
michael@0 | 2869 | return PR_FALSE; |
michael@0 | 2870 | } |
michael@0 | 2871 | } |
michael@0 | 2872 | |
michael@0 | 2873 | printf("PASS\n"); |
michael@0 | 2874 | return PR_TRUE; |
michael@0 | 2875 | } |
michael@0 | 2876 | |
michael@0 | 2877 | /* PL_Base64Decode, random strings, malloc */ |
michael@0 | 2878 | PRBool test_027(void) |
michael@0 | 2879 | { |
michael@0 | 2880 | int i; |
michael@0 | 2881 | |
michael@0 | 2882 | printf("Test 027 (PL_Base64Decode, random strings, equals, malloc, strlen) ..."); fflush(stdout); |
michael@0 | 2883 | |
michael@0 | 2884 | for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) |
michael@0 | 2885 | { |
michael@0 | 2886 | PRUint32 clen = PL_strlen(array[i].cyphertext); |
michael@0 | 2887 | |
michael@0 | 2888 | char *rv = PL_Base64Decode(array[i].cyphertext, 0, (char *)0); |
michael@0 | 2889 | |
michael@0 | 2890 | if( (char *)0 == rv ) |
michael@0 | 2891 | { |
michael@0 | 2892 | printf("FAIL\n\t(%d): no return value\n", i); |
michael@0 | 2893 | return PR_FALSE; |
michael@0 | 2894 | } |
michael@0 | 2895 | |
michael@0 | 2896 | if( 0 != PL_strcmp(rv, array[i].plaintext) ) |
michael@0 | 2897 | { |
michael@0 | 2898 | printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%s.\"\n", |
michael@0 | 2899 | i, array[i].cyphertext, array[i].plaintext, rv); |
michael@0 | 2900 | PR_DELETE(rv); |
michael@0 | 2901 | return PR_FALSE; |
michael@0 | 2902 | } |
michael@0 | 2903 | |
michael@0 | 2904 | PR_DELETE(rv); |
michael@0 | 2905 | } |
michael@0 | 2906 | |
michael@0 | 2907 | printf("PASS\n"); |
michael@0 | 2908 | return PR_TRUE; |
michael@0 | 2909 | } |
michael@0 | 2910 | |
michael@0 | 2911 | /* PL_Base64Encode, random strings, malloc */ |
michael@0 | 2912 | PRBool test_028(void) |
michael@0 | 2913 | { |
michael@0 | 2914 | int i; |
michael@0 | 2915 | char buffer[ 4096 ]; |
michael@0 | 2916 | char *rv; |
michael@0 | 2917 | |
michael@0 | 2918 | printf("Test 028 (PL_Base64Decode, random strings, no equals, malloc, strlen) ..."); fflush(stdout); |
michael@0 | 2919 | |
michael@0 | 2920 | for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ ) |
michael@0 | 2921 | { |
michael@0 | 2922 | PRUint32 clen; |
michael@0 | 2923 | |
michael@0 | 2924 | PL_strcpy(buffer, array[i].cyphertext); |
michael@0 | 2925 | clen = PL_strlen(buffer); |
michael@0 | 2926 | |
michael@0 | 2927 | if( 0 == (clen & 3) ) |
michael@0 | 2928 | { |
michael@0 | 2929 | if( '=' == buffer[clen-1] ) |
michael@0 | 2930 | { |
michael@0 | 2931 | if( '=' == buffer[clen-2] ) |
michael@0 | 2932 | { |
michael@0 | 2933 | buffer[clen-2] = buffer[clen-1] = (char)0; |
michael@0 | 2934 | clen -= 2; |
michael@0 | 2935 | } |
michael@0 | 2936 | else |
michael@0 | 2937 | { |
michael@0 | 2938 | buffer[clen-1] = (char)0; |
michael@0 | 2939 | clen -= 1; |
michael@0 | 2940 | } |
michael@0 | 2941 | } |
michael@0 | 2942 | } |
michael@0 | 2943 | |
michael@0 | 2944 | rv = PL_Base64Decode(buffer, 0, (char *)0); |
michael@0 | 2945 | |
michael@0 | 2946 | if( (char *)0 == rv ) |
michael@0 | 2947 | { |
michael@0 | 2948 | printf("FAIL\n\t(%d): no return value\n", i); |
michael@0 | 2949 | return PR_FALSE; |
michael@0 | 2950 | } |
michael@0 | 2951 | |
michael@0 | 2952 | if( 0 != PL_strcmp(rv, array[i].plaintext) ) |
michael@0 | 2953 | { |
michael@0 | 2954 | printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%s.\"\n", |
michael@0 | 2955 | i, array[i].cyphertext, array[i].plaintext, rv); |
michael@0 | 2956 | return PR_FALSE; |
michael@0 | 2957 | } |
michael@0 | 2958 | } |
michael@0 | 2959 | |
michael@0 | 2960 | printf("PASS\n"); |
michael@0 | 2961 | return PR_TRUE; |
michael@0 | 2962 | } |
michael@0 | 2963 | |
michael@0 | 2964 | int |
michael@0 | 2965 | main |
michael@0 | 2966 | ( |
michael@0 | 2967 | int argc, |
michael@0 | 2968 | char *argv[] |
michael@0 | 2969 | ) |
michael@0 | 2970 | { |
michael@0 | 2971 | printf("Testing the Portable Library base64 functions:\n"); |
michael@0 | 2972 | printf("(warning: the \"triple characters\" tests are slow)\n"); |
michael@0 | 2973 | |
michael@0 | 2974 | if( 1 |
michael@0 | 2975 | && test_001() |
michael@0 | 2976 | && test_002() |
michael@0 | 2977 | && test_003() |
michael@0 | 2978 | && test_004() |
michael@0 | 2979 | && test_005() |
michael@0 | 2980 | && test_006() |
michael@0 | 2981 | && test_007() |
michael@0 | 2982 | && test_008() |
michael@0 | 2983 | && test_009() |
michael@0 | 2984 | && test_010() |
michael@0 | 2985 | && test_011() |
michael@0 | 2986 | && test_012() |
michael@0 | 2987 | && test_013() |
michael@0 | 2988 | && test_014() |
michael@0 | 2989 | && test_015() |
michael@0 | 2990 | && test_016() |
michael@0 | 2991 | && test_017() |
michael@0 | 2992 | && test_018() |
michael@0 | 2993 | && test_019() |
michael@0 | 2994 | && test_020() |
michael@0 | 2995 | && test_021() |
michael@0 | 2996 | && test_022() |
michael@0 | 2997 | && test_023() |
michael@0 | 2998 | && test_024() |
michael@0 | 2999 | && test_025() |
michael@0 | 3000 | && test_026() |
michael@0 | 3001 | && test_027() |
michael@0 | 3002 | && test_028() |
michael@0 | 3003 | ) |
michael@0 | 3004 | { |
michael@0 | 3005 | printf("Suite passed.\n"); |
michael@0 | 3006 | return 0; |
michael@0 | 3007 | } |
michael@0 | 3008 | else |
michael@0 | 3009 | { |
michael@0 | 3010 | printf("Suite failed.\n"); |
michael@0 | 3011 | return 1; |
michael@0 | 3012 | } |
michael@0 | 3013 | |
michael@0 | 3014 | /*NOTREACHED*/ |
michael@0 | 3015 | } |