7becd1826f706ef5734cbea3847612cb8bc401b3
[elisp/flim.git] / TESTPAT
1 ;;; -*- mode: emacs-lisp; coding: iso-2022-7bit-ss2 -*-
2 ;----------------------------------------------------------------------------
3 ;-------- This sequece of HYPHEN-MINUS is 76 bytes long. --------------------
4 ;----------------------------------------------------------------------------
5
6 ;;; options:
7 ;;encode-sticked-comment-as-atom    ; violate the policy preserving structures
8 ;;ignore-75bytes-limit              ; violate RFC2047
9 ;;ignore-76bytes-limit              ; violate RFC2047
10 ;;permit-sticked-comment            ; violate RFC2047
11 ;;permit-sticked-special            ; violate RFC2047
12 ;;separate-sticked-comment          ; violate the policy preserving absence of space
13 ;;separate-sticked-special          ; violate the policy preserving absence of space
14 ;;zero-characters-encoded-word-hack ; violate common sense (very tricky)
15 ;;embedded-encoded-word            ; violate character sequence semantics
16 ;;separate-sticked-tokens-for-fold  ; violate the policy preserving absence of space
17 ;;encode-long-ascii-string-for-fold ; violate the policy preserving US-ASCII string
18 ;;divide-atom-for-fold             ; violate tne policy preserving absence of space
19
20 ;;; test driver
21
22 ;;; FLIM or FLAM
23 '(progn
24 (require 'mime)
25 (require 'ew-line)
26
27 (if (< max-specpdl-size 1000)
28   (setq max-specpdl-size 1000))
29
30 (defun decode-test (src dsts &rest opts)
31   (setq src (ew-crlf-to-lf src))
32   (setq eword-lexical-analyze-cache nil)
33   (setq eword-decode-sticked-encoded-word
34     (or (memq 'permit-sticked-comment opts)
35         (memq 'permit-sticked-special opts)))
36   (setq eword-decode-quoted-encoded-word nil)
37   (with-temp-buffer
38     (insert src "\n" mail-header-separator)
39     (eword-decode-header 'us-ascii mail-header-separator)
40     (goto-char (point-min))
41     (std11-narrow-to-header mail-header-separator)
42     (std11-field-end)
43     (let ((result (std11-unfold-string
44                    (buffer-substring (point-min) (point)))))
45       (if (member result dsts) t result))))
46
47 (defun encode-test (src dsts &rest opts)
48   (setq eword-lexical-analyze-cache nil)
49   (setq eword-decode-sticked-encoded-word nil)
50   (setq eword-decode-quoted-encoded-word nil)
51   (with-temp-buffer
52     (insert src "\n" mail-header-separator)
53     (goto-char (point-min))
54     (eword-encode-header 'us-ascii)
55     (goto-char (point-min))
56     (std11-narrow-to-header mail-header-separator)
57     (std11-field-end)
58     (let ((result (buffer-substring (point-min) (point))))
59       (if (member result dsts) t result))))
60 )
61
62 ;;; EW
63 (progn
64 (require 'ew-dec)
65 (require 'ew-line)
66
67 (defun decode-test (src dsts &rest opts)
68   (setq ew-decode-field-cache-buf nil)
69   (let ((ew-decode-sticked-encoded-word nil)
70         (ew-decode-quoted-encoded-word nil)
71         (ew-ignore-75bytes-limit (memq 'ignore-75bytes-limit opts))
72         (ew-ignore-76bytes-limit (memq 'ignore-76bytes-limit opts))
73         (ew-permit-sticked-comment (memq 'permit-sticked-comment opts))
74         (ew-permit-sticked-special (memq 'permit-sticked-special opts)))
75     (string-match "\\`[^:]*:" src)
76     (let* ((field-name (substring src
77                                   (match-beginning 0)
78                                   (1- (match-end 0))))
79            (field-body (substring src (match-end 0)))
80            (result (ew-crlf-unfold
81                     (concat field-name ":"
82                             (ew-decode-field field-name field-body)))))
83       (if (member result dsts) t result))))
84
85 (defun encode-test (src dsts &rest opts)
86   nil)
87 )
88
89 ;;;
90
91 (setq decode-succ-count 0)
92 (setq decode-all-count 0)
93 (defun decode (src dsts &rest opts)
94   (if (stringp dsts) (setq dsts (list dsts)))
95   (setq decode-all-count (1+ decode-all-count))
96   (let ((res (condition-case nil
97                (apply 'decode-test src dsts opts)
98                (error nil))))
99     (if (eq res t)
100       (progn
101         (setq decode-succ-count (1+ decode-succ-count))
102         (insert "\n'dsucc"))
103       (insert (format "\n%S\n'dfail" res)))
104     res))
105
106 (setq encode-succ-count 0)
107 (setq encode-all-count 0)
108 (defun encode (src dsts &rest opts)
109   (if (stringp dsts) (setq dsts (list dsts)))
110   (setq encode-all-count (1+ encode-all-count))
111   (let ((res (condition-case nil
112                (apply 'encode-test src dsts opts)
113                (error nil))))
114     (if (eq res t)
115       (progn
116         (setq encode-succ-count (1+ encode-succ-count))
117         (insert "\n'esucc"))
118       (insert (format "\n%S\n'efail" res)))
119     res))
120
121 (defun report ()
122   (insert
123     (format "\n\"Decode: %d/%d  Encode: %d/%d  Total: %d/%d\""
124       decode-succ-count decode-all-count
125       encode-succ-count encode-all-count
126       (+ decode-succ-count encode-succ-count)
127       (+ decode-all-count encode-all-count))))
128
129 ;;;start-test
130
131 ;;; Section 1: Decoding examples from RFC2047
132
133 (decode
134 "From: =?US-ASCII?Q?Keith_Moore?= <moore@cs.utk.edu>"
135 "From: Keith Moore <moore@cs.utk.edu>")
136
137 (decode
138 "To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= <keld@dkuug.dk>"
139 "To: Keld J\e.A\eNxrn Simonsen <keld@dkuug.dk>")\e*B
140
141 (decode
142 "CC: =?ISO-8859-1?Q?Andr=E9?= Pirard <PIRARD@vm1.ulg.ac.be>"
143 "CC: Andr\e.A\eNi Pirard <PIRARD@vm1.ulg.ac.be>")\e*B
144
145 (decode
146 "Subject: =?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?=\r
147  =?ISO-8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?="
148 "Subject: If you can read this you understand the example.")
149
150 (decode
151 "From: =?ISO-8859-1?Q?Olle_J=E4rnefors?= <ojarnef@admin.kth.se>"
152 "From: Olle J\e.A\eNdrnefors <ojarnef@admin.kth.se>")\e*B
153
154 (decode
155 "From: =?ISO-8859-1?Q?Patrik_F=E4ltstr=F6m?= <paf@nada.kth.se>"
156 "From: Patrik F\e.A\eNdltstr\eNvm <paf@nada.kth.se>")\e*B
157
158 (decode
159 "From: Nathaniel Borenstein <nsb@thumper.bellcore.com>\r
160         (=?iso-8859-8?b?7eXs+SDv4SDp7Oj08A==?=)"
161 "From: Nathaniel Borenstein <nsb@thumper.bellcore.com>  (\e.H\eNm\eNe\eNl\eNy \eNo\eNa \eNi\eNl\eNh\eNt\eNp)")\e*B
162
163 (decode
164 "From: foo@bar.baz (=?ISO-8859-1?Q?a?=)"
165 "From: foo@bar.baz (a)")
166
167 (decode
168 "From: foo@bar.baz (=?ISO-8859-1?Q?a?= b)"
169 "From: foo@bar.baz (a b)")
170
171 (decode
172 "From: foo@bar.baz (=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)"
173 "From: foo@bar.baz (ab)")
174
175 (decode
176 "From: foo@bar.baz (=?ISO-8859-1?Q?a?=  =?ISO-8859-1?Q?b?=)"
177 "From: foo@bar.baz (ab)")
178
179 (decode
180 "From: foo@bar.baz (=?ISO-8859-1?Q?a?=\r
181         =?ISO-8859-1?Q?b?=)"
182 "From: foo@bar.baz (ab)")
183
184 (decode
185 "From: foo@bar.baz (=?ISO-8859-1?Q?a_b?=)"
186 "From: foo@bar.baz (a b)")
187
188 (decode
189 "From: foo@bar.baz (=?ISO-8859-1?Q?a?= =?ISO-8859-2?Q?_b?=)"
190 "From: foo@bar.baz (a b)")
191
192 (decode
193 "Subject: (=?ISO-8859-1?Q?a?=)"
194 "Subject: (=?ISO-8859-1?Q?a?=)")
195
196 (decode
197 "Subject: (=?ISO-8859-1?Q?a?= b)"
198 "Subject: (=?ISO-8859-1?Q?a?= b)")
199
200 (decode
201 "Subject: (=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)"
202 "Subject: (=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)")
203
204 (decode
205 "Subject: (=?ISO-8859-1?Q?a?=  =?ISO-8859-1?Q?b?=)"
206 "Subject: (=?ISO-8859-1?Q?a?=  =?ISO-8859-1?Q?b?=)")
207
208 (decode
209 "Subject: (=?ISO-8859-1?Q?a?=\r
210         =?ISO-8859-1?Q?b?=)"
211 "Subject: (=?ISO-8859-1?Q?a?=   =?ISO-8859-1?Q?b?=)")
212
213 (decode
214 "Subject: (=?ISO-8859-1?Q?a_b?=)"
215 "Subject: (=?ISO-8859-1?Q?a_b?=)")
216
217 (decode
218 "Subject: (=?ISO-8859-1?Q?a?= =?ISO-8859-2?Q?_b?=)"
219 "Subject: (=?ISO-8859-1?Q?a?= =?ISO-8859-2?Q?_b?=)")
220
221 ;;; Section 2: Decoding proper inputs.
222
223 (decode
224 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
225 "From: \e$B$"\e(B <akr@jaist.ac.jp>")
226
227 (decode
228 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= =?ISO-2022-JP?B?GyRCJCQbKEI=?=\r
229  <akr@jaist.ac.jp>"
230 "From: \e$B$"$$\e(B <akr@jaist.ac.jp>")
231
232 (decode
233 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
234  =?ISO-2022-JP?B?GyRCJCQbKEI=?=\r
235  <akr@jaist.ac.jp>"
236 "From: \e$B$"$$\e(B <akr@jaist.ac.jp>")
237
238 (decode
239 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
240         =?ISO-2022-JP?B?GyRCJCQbKEI=?=\r
241  <akr@jaist.ac.jp>"
242 "From: \e$B$"$$\e(B <akr@jaist.ac.jp>")
243
244 (decode
245 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= \"ja \\\"a\\\"\" <akr@jaist.ac.jp>"
246 "From: \e$B$"\e(B \"ja \\\"a\\\"\" <akr@jaist.ac.jp>")
247
248 (decode
249 "From: akr@jaist.ac.jp (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
250  =?ISO-2022-JP?B?GyhC?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=\r
251  =?ISO-2022-JP?B?GyhC?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)"
252 "From: akr@jaist.ac.jp (\e$B$"\e(B(\e$B$$\e(B)\e$B$&\e(B)")
253
254 (decode
255 "From: a=?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
256 "From: a=?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>")
257
258 (decode
259 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=b <akr@jaist.ac.jp>"
260 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=b <akr@jaist.ac.jp>")
261
262 (decode
263 "From: a=?ISO-2022-JP?B?GyRCJCIbKEI=?=b <akr@jaist.ac.jp>"
264 "From: a=?ISO-2022-JP?B?GyRCJCIbKEI=?=b <akr@jaist.ac.jp>")
265
266 (decode
267 "From: \"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\" <akr@jaist.ac.jp>"
268 "From: \"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\" <akr@jaist.ac.jp>")
269
270 (decode
271 "From: \"\\\"\\\\\" =?ISO-2022-JP?B?GyRCJCIbKEI=?= \"\\\"\\\\\" <akr@jaist.ac.jp>"
272 "From: \"\\\"\\\\\" \e$B$"\e(B \"\\\"\\\\\" <akr@jaist.ac.jp>")
273
274 (decode
275 "From: < =?ISO-2022-JP?B?GyRCJCIbKEI=?= @jaist.ac.jp>"
276 "From: < =?ISO-2022-JP?B?GyRCJCIbKEI=?= @jaist.ac.jp>")
277
278 (decode
279 "From: =?ISO-2022-JP?Q?=1B=24BAA=1B=28B?= <akr@jaist.ac.jp>"
280 "From: \e$BAA\e(B <akr@jaist.ac.jp>")
281
282 (decode
283 "From: =?ISO-2022-JP?Q?=1B$BAA=1B(B?= ) <akr@jaist.ac.jp>"
284 "From: =?ISO-2022-JP?Q?=1B$BAA=1B(B?= ) <akr@jaist.ac.jp>")
285
286 (decode
287 "From: (=?US-ASCII?Q?(?=)foo@bar.baz(=?US-ASCII?Q?))baz@bar.foo(?=)"
288 "From: (=?US-ASCII?Q?(?=)foo@bar.baz(=?US-ASCII?Q?))baz@bar.foo(?=)")
289
290 (decode
291 "From: =?ISO-2022-JP?B?GyRCJCIbKEIoGyRCJCIbKEIp?= <akr@jaist.ac.jp>"
292 "From: \"\e$B$"\e(B(\e$B$"\e(B)\" <akr@jaist.ac.jp>")
293
294 (decode
295 "From: =?US-ASCII?Q?=28?= <akr@jaist.ac.jp>, =?US-ASCII?Q?=29?= <akr@jaist.ac.jp>"
296 "From: \"(\" <akr@jaist.ac.jp>, \")\" <akr@jaist.ac.jp>"
297 'ignore-76bytes-limit)
298
299 (decode
300 "From: =?ISO-2022-JP?B?YSJiGyRCJCIbKEJjXA==?= <akr@jaist.ac.jp>"
301 "From: \"a\\\"b\e$B$"\e(Bc\\\\\" <akr@jaist.ac.jp>")
302
303 (decode
304 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?="
305 "Subject: \e$B$"\e(B")
306
307 (decode
308 "Subject: a=?ISO-2022-JP?B?GyRCJCIbKEI=?="
309 "Subject: a=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
310
311 (decode
312 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=b"
313 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=b")
314
315 (decode
316 "Subject: a=?ISO-2022-JP?B?GyRCJCIbKEI=?=b"
317 "Subject: a=?ISO-2022-JP?B?GyRCJCIbKEI=?=b")
318
319 (decode
320 "Subject: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?="
321 "Subject: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
322
323 (decode
324 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(b)"
325 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(b)")
326
327 (decode
328 "Subject: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=(b)"
329 "Subject: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=(b)")
330
331 (decode
332 "Subject: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?="
333 "Subject: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
334
335 (decode
336 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\""
337 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\"")
338
339 (decode
340 "Subject: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\""
341 "Subject: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\"")
342
343 (decode
344 "Subject: (Re: =?ISO-2022-JP?B?GyRCJCIbKEI=?=)"
345 "Subject: (Re: =?ISO-2022-JP?B?GyRCJCIbKEI=?=)")
346
347 (decode
348 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:"
349 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:")
350
351 (decode
352 "Subject: =?ISO-2022-JP?B??="
353 "Subject: =?ISO-2022-JP?B??=")
354
355 (decode
356 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?= a\r
357  =?ISO-2022-JP?B?GyRCJCQbKEI=?="
358 "Subject: \e$B$"\e(B a \e$B$$\e(B")
359
360 (decode
361 "Subject: =?ISO-2022-JP?B?GyRCMCQbKEIgICAgICAgICAgICAgICAgICAgICAgICAgICAg?=\r
362  =?US-ASCII?Q?____________________________________________________________?=\r
363  =?ISO-2022-JP?B?ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBskQlJfGyhC?="
364 "Subject: \e$B0$\e(B                                                                                                                          \e$BR_\e(B")
365
366 (decode
367 "From: =?ISO-8859-1?Q?abcdefghijklmnopqrst=A1=28=29=22=5C?= <akr@jaist.ac.jp>"
368 "From: \"abcdefghijklmnopqrst\e.A\eN!()\\\"\\\\\" <akr@jaist.ac.jp>")\e*B
369
370 (decode
371 "Subject: ?= =?"
372 "Subject: ?= =?")
373
374 (decode
375 "Subject: \" =?ISO-2022-JP?B?GyRCJCIbKEI=?= \""
376 "Subject: \" \e$B$"\e(B \"")
377
378 (decode
379 "From: \"\\\\\" =?ISO-2022-JP?B?GyRCJCIbKEI=?= \"\" <akr@jaist.ac.jp>"
380 "From: \"\\\\\" \e$B$"\e(B \"\" <akr@jaist.ac.jp>")
381
382 (decode
383 "Subject: =?ISO-2022-JP?Q?=1B$B$\"=1B(B_=1B$B$\"=1B(B?="
384 "Subject: \e$B$"\e(B \e$B$"\e(B")
385
386 (decode
387 "Subject: =?ISO-2022-JP?Q?=1B$B$\"=1B(B =1B$B$\"=1B(B?="
388 "Subject: =?ISO-2022-JP?Q?=1B$B$\"=1B(B =1B$B$\"=1B(B?=")
389
390 (decode
391 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?= a =?ISO-8859-8?Q?=E0?="
392 "Subject: \e$B$"\e(B a \e.H\eN`")\e*B
393
394 (decode
395 "Subject: =?ISO-8859-8?Q?=E0?= =?ISO-2022-JP?B?GyRCTm0bKEI=?="
396 "Subject: \e.H\eN`\e$BNm\e(B")\e*B
397
398 (decode
399 "Subject: =?ISO-8859-8?Q?=E0_?= =?ISO-2022-JP?B?GyRCTm0bKEI=?="
400 "Subject: \e.H\eN` \e$BNm\e(B")\e*B
401
402 (decode
403 "Subject: =?ISO-2022-JP-2?B?Gy5GG05DGyRCNFg/dBsoQg==?="
404 "Subject: \e.F\eNC\e$B4X?t\e(B")\e*B
405
406 (decode
407 "Subject: =?ISO-8859-7?Q?=C3?= =?ISO-2022-JP?B?GyRCNFg/dBsoQg==?="
408 "Subject: \e.F\eNC\e$B4X?t\e(B")\e*B
409
410 (decode
411 "Subject: =?Shift_JIS?B?gqA=?="
412 "Subject: \e$B$"\e(B")
413
414 (decode
415 "Subject: =?EUC-JP?B?pKI=?="
416 "Subject: \e$B$"\e(B")
417
418 (decode
419 "Subject: = =?ISO-2022-JP?B?GyRCJCIbKEI=?="
420 "Subject: = \e$B$"\e(B")
421
422 (decode
423 "Subject: =? =?ISO-2022-JP?B?GyRCJCIbKEI=?="
424 "Subject: =? \e$B$"\e(B")
425
426 (decode
427 "Subject: =?ISO-2022-JP =?ISO-2022-JP?B?GyRCJCIbKEI=?="
428 "Subject: =?ISO-2022-JP \e$B$"\e(B")
429
430 (decode
431 "Subject: =?ISO-2022-JP? =?ISO-2022-JP?B?GyRCJCIbKEI=?="
432 "Subject: =?ISO-2022-JP? \e$B$"\e(B")
433
434 (decode
435 "Subject: =?ISO-2022-JP?B =?ISO-2022-JP?B?GyRCJCIbKEI=?="
436 "Subject: =?ISO-2022-JP?B \e$B$"\e(B")
437
438 (decode
439 "Subject: =?ISO-2022-JP?B? =?ISO-2022-JP?B?GyRCJCIbKEI=?="
440 "Subject: =?ISO-2022-JP?B? \e$B$"\e(B")
441
442 (decode
443 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI =?ISO-2022-JP?B?GyRCJCIbKEI=?="
444 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI \e$B$"\e(B")
445
446 (decode
447 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI= =?ISO-2022-JP?B?GyRCJCIbKEI=?="
448 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI= \e$B$"\e(B")
449
450 (decode
451 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=? =?ISO-2022-JP?B?GyRCJCIbKEI=?="
452 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=? \e$B$"\e(B")
453
454 (decode
455 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?= =?ISO-2022-JP?B?GyRCJCIbKEI=?="
456 "Subject: \e$B$"$"\e(B")
457
458 (decode
459 "Subject: ==?ISO-2022-JP?B?GyRCJCIbKEI=?="
460 "Subject: ==?ISO-2022-JP?B?GyRCJCIbKEI=?=")
461
462 (decode
463 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=="
464 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?==")
465
466 (decode
467 "From: akr@jaist.ac.jp (\\=?ISO-2022-JP?B?GyRCJCIbKEI=?=)"
468 "From: akr@jaist.ac.jp (\\=?ISO-2022-JP?B?GyRCJCIbKEI=?=)")
469
470 (decode
471 "=?ISO-2022-JP?B?GyRCJCIbKEI=?=: test"
472 "=?ISO-2022-JP?B?GyRCJCIbKEI=?=: test")
473
474 (decode
475 "=?ISO-2022-JP?B?GyRCJCIbKEI=?=: test"
476 "=?ISO-2022-JP?B?GyRCJCIbKEI=?=: test"
477 'permit-sticked-special)
478
479 ;;; Section 3: Decoding melancholic inputs.
480
481 (decode
482 "From:=?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
483 "From:\e$B$"\e(B <akr@jaist.ac.jp>")
484
485 (decode
486 "From: akr@jaist.ac.jp\r
487  (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\\a=?ISO-2022-JP?B?GyRCJCQbKEI=?=)"
488 "From: akr@jaist.ac.jp (\e$B$"\e(B\\a\e$B$$\e(B)")
489
490 (decode
491 "From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
492 "From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>")
493
494 (decode
495 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) <akr@jaist.ac.jp>"
496 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) <akr@jaist.ac.jp>")
497
498 (decode
499 "From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) <akr@jaist.ac.jp>"
500 "From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) <akr@jaist.ac.jp>")
501
502 (decode
503 "From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
504 "From: (a)\e$B$"\e(B <akr@jaist.ac.jp>"
505 'permit-sticked-comment)
506
507 (decode
508 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) <akr@jaist.ac.jp>"
509 "From: \e$B$"\e(B(b) <akr@jaist.ac.jp>"
510 'permit-sticked-comment)
511
512 (decode
513 "From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) <akr@jaist.ac.jp>"
514 "From: (a)\e$B$"\e(B(b) <akr@jaist.ac.jp>"
515 'permit-sticked-comment)
516
517 (decode
518 "From: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
519 "From: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>")
520
521 (decode
522 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\" <akr@jaist.ac.jp>"
523 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\" <akr@jaist.ac.jp>")
524
525 (decode
526 "From: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\" <akr@jaist.ac.jp>"
527 "From: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\" <akr@jaist.ac.jp>")
528
529 (decode
530 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)\r
531  <akr@jaist.ac.jp>"
532 "From: \e$B$"\e(B(\e$B$"\e(B) <akr@jaist.ac.jp>"
533 'permit-sticked-comment)
534
535 (decode
536 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
537 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>")
538
539 (decode
540 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
541 "To: \e$B$"\e(B<akr@jaist.ac.jp>"
542 'permit-sticked-special)
543
544 (decode
545 "To: <akr@jaist.ac.jp>,=?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
546 "To: <akr@jaist.ac.jp>,=?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>")
547
548 (decode
549 "To: <akr@jaist.ac.jp>,=?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
550 "To: <akr@jaist.ac.jp>,\e$B$"\e(B<akr@jaist.ac.jp>"
551 'permit-sticked-special)
552
553 (decode
554 "To: akr@jaist.ac.jp,=?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
555 "To: akr@jaist.ac.jp,=?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>")
556
557 (decode
558 "To: akr@jaist.ac.jp,=?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
559 "To: akr@jaist.ac.jp,\e$B$"\e(B<akr@jaist.ac.jp>"
560 'permit-sticked-special)
561
562 (decode
563 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:akr@jaist.ac.jp;"
564 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:akr@jaist.ac.jp;")
565
566 (decode
567 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:akr@jaist.ac.jp;"
568 "To: \e$B$"\e(B:akr@jaist.ac.jp;"
569 'permit-sticked-special)
570
571 (decode
572 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=<akr@jaist.ac.jp>;"
573 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=<akr@jaist.ac.jp>;")
574
575 (decode
576 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=<akr@jaist.ac.jp>;"
577 "To: \e$B$"\e(B:\e$B$$\e(B<akr@jaist.ac.jp>;"
578 'ignore-76bytes-limit 'permit-sticked-special)
579
580 (decode
581 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=<foo@bar>,=?ISO-2022-JP?B?GyRCJCYbKEI=?=<foo@bar>;,=?ISO-2022-JP?B?GyRCJCgbKEI=?=<foo@bar>"
582 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=<foo@bar>,=?ISO-2022-JP?B?GyRCJCYbKEI=?=<foo@bar>;,=?ISO-2022-JP?B?GyRCJCgbKEI=?=<foo@bar>")
583
584 (decode
585 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=<foo@bar>,=?ISO-2022-JP?B?GyRCJCYbKEI=?=<foo@bar>;,=?ISO-2022-JP?B?GyRCJCgbKEI=?=<foo@bar>"
586 "To: \e$B$"\e(B:\e$B$$\e(B<foo@bar>,\e$B$&\e(B<foo@bar>;,\e$B$(\e(B<foo@bar>"
587 'ignore-76bytes-limit 'permit-sticked-special)
588
589 (decode
590 "Subject:=?ISO-2022-JP?B?GyRCJCIbKEI=?="
591 "Subject:\e$B$"\e(B")
592
593 ;;; Section 4: Decoding invalid inputs.
594
595 (decode
596 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?==?ISO-2022-JP?B?GyRCJCQbKEI=?=\r
597  <akr@jaist.ac.jp>"
598 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?==?ISO-2022-JP?B?GyRCJCQbKEI=?= <akr@jaist.ac.jp>")
599
600 (decode
601 "From: akr@jaist.ac.jp\r
602  (=?ISO-2022-JP?B?GyRCJCIbKEI=?=a=?ISO-2022-JP?B?GyRCJCQbKEI=?=)"
603 "From: akr@jaist.ac.jp (=?ISO-2022-JP?B?GyRCJCIbKEI=?=a=?ISO-2022-JP?B?GyRCJCQbKEI=?=)")
604
605 (decode
606 "From: akr@jaist.ac.jp\r
607  (=?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)"
608 "From: akr@jaist.ac.jp (=?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)")
609
610 (decode
611 "From: akr@jaist.ac.jp\r
612  (=?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)"
613 "From: akr@jaist.ac.jp (\e$B$"\e(B(\e$B$$\e(B)\e$B$&\e(B)"
614 'ignore-76bytes-limit)
615
616 (decode
617 "Subject: =?=?ISO-2022-JP?B?GyRCJCIbKEI=?="
618 "Subject: =?=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
619
620 (decode
621 "Subject: =?ISO-2022-JP=?ISO-2022-JP?B?GyRCJCIbKEI=?="
622 "Subject: =?ISO-2022-JP=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
623
624 (decode
625 "Subject: =?ISO-2022-JP?=?ISO-2022-JP?B?GyRCJCIbKEI=?="
626 "Subject: =?ISO-2022-JP?=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
627
628 (decode
629 "Subject: =?ISO-2022-JP?B=?ISO-2022-JP?B?GyRCJCIbKEI=?="
630 "Subject: =?ISO-2022-JP?B=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
631
632 (decode
633 "Subject: =?ISO-2022-JP?B?=?ISO-2022-JP?B?GyRCJCIbKEI=?="
634 "Subject: =?ISO-2022-JP?B?=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
635
636 (decode
637 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?ISO-2022-JP?B?GyRCJCIbKEI=?="
638 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
639
640 (decode
641 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI==?ISO-2022-JP?B?GyRCJCIbKEI=?="
642 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI==?ISO-2022-JP?B?GyRCJCIbKEI=?=")
643
644 (decode
645 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=?ISO-2022-JP?B?GyRCJCIbKEI=?="
646 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?=?ISO-2022-JP?B?GyRCJCIbKEI=?=")
647
648 (decode
649 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?==?ISO-2022-JP?B?GyRCJCIbKEI=?="
650 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?==?ISO-2022-JP?B?GyRCJCIbKEI=?=")
651
652 (decode
653 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI?="
654 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI?=")
655
656 (decode
657 "Subject: =?ISO-2022-JP?B?GyRCNFg-dBsoQg==?="
658 "Subject: =?ISO-2022-JP?B?GyRCNFg-dBsoQg==?=")
659
660 (decode
661 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?= =?= =?ISO-2022-JP?B?GyRCJCIbKEI=?="
662 "Subject: \e$B$"\e(B=?=\e$B$"\e(B")
663
664 ;;; Section 5: Encoding proper inputs.
665
666 (encode
667 "From: \e$B$"\e(B <akr@jaist.ac.jp>"
668 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>")
669
670 (encode
671 "From: \e$B$"$$\e(B <akr@jaist.ac.jp>"
672 "From: =?ISO-2022-JP?B?GyRCJCIkJBsoQg==?= <akr@jaist.ac.jp>")
673
674 (encode
675 "From: \e$B$"\e(B \e$B$$\e(B <akr@jaist.ac.jp>"
676 "From: =?ISO-2022-JP?B?GyRCJCIbKEIgGyRCJCQbKEI=?= <akr@jaist.ac.jp>")
677
678 (encode
679 "From: \e.A\eN! \eN! <akr@jaist.ac.jp>"\e*B
680 "From: =?ISO-8859-1?Q?=A1_=A1?= <akr@jaist.ac.jp>")
681
682 (encode
683 "From: \"\e$B$"\e(B(\e$B$"\e(B)\" <akr@jaist.ac.jp>"
684 "From: =?ISO-2022-JP?B?GyRCJCIbKEIoGyRCJCIbKEIp?= <akr@jaist.ac.jp>")
685
686 (encode
687 "From: \"a\\\"b\e$B$"\e(Bc\\\\\" <akr@jaist.ac.jp>"
688 "From: =?ISO-2022-JP?B?YSJiGyRCJCIbKEJjXA==?= <akr@jaist.ac.jp>")
689
690 (encode
691 "Subject: \e$B0$\e(B                                                                                                                          \e$BR_\e(B"
692 "Subject: =?ISO-2022-JP?B?GyRCMCQbKEIgICAgICAgICAgICAgICAgICAgICAgICAgICAg?=\r
693  =?US-ASCII?Q?____________________________________________________________?=\r
694  =?ISO-2022-JP?B?ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBskQlJfGyhC?=")
695
696 (encode
697 "Subject: \e$B0$\e(B                                                                                                                          \e$BR_\e(B"
698 "Subject: =?ISO-2022-JP?B?GyQpQrCkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDS3w=="
699 'ignore-76bytes-limit 'ignore-75bytes-limit)
700
701 (encode
702 "From: \e.A\eN! <akr@jaist.ac.jp>"\e*B
703 "From: =?ISO-8859-1?Q?=A1?= <akr@jaist.ac.jp>")
704
705 (encode
706 "From: \"abcdefghijklmnopqrst\e.A\eN!()\\\"\\\\\" <akr@jaist.ac.jp>"\e*B
707 "From: =?ISO-8859-1?Q?abcdefghijklmnopqrst=A1=28=29=22=5C?= <akr@jaist.ac.jp>")
708
709 (encode
710 "From: akr@jaist.ac.jp (abcdefghijklmnopqrst\e.A\eN!\\(\\)\"\\\\)"\e*B
711 "From: akr@jaist.ac.jp (=?ISO-8859-1?Q?abcdefghijklmnopqrst=A1=28=29\"=5C?=)")
712
713 (encode
714 "Subject: \e$B$"\e(B a \e.H\eN`"\e*B
715 "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?= a =?ISO-8859-8?Q?=E0?=")
716
717 (encode
718 "Subject: \e.H\eN`\e$BNm\e(B"\e*B
719 "Subject: =?ISO-8859-8?Q?=E0?= =?ISO-2022-JP?B?GyRCTm0bKEI=?=")
720
721 (encode
722 "Subject: \e.H\eN` \e$BNm\e(B"\e*B
723 '("Subject: =?ISO-8859-8?Q?=E0_?= =?ISO-2022-JP?B?GyRCTm0bKEI=?="
724   "Subject: =?ISO-8859-8?Q?=E0?= =?ISO-2022-JP?B?IBskQk5tGyhC?="))
725
726 (encode
727 "Subject: \e.F\eNC\e$B4X?t\e(B"\e*B
728 '("Subject: =?ISO-8859-7?Q?=C3?= =?ISO-2022-JP?B?GyRCNFg/dBsoQg==?="
729   "Subject: =?ISO-2022-JP-2?B?Gy5GG05DGyRCNFg/dBsoQg==?="))
730
731 (encode
732 "From: aaaaaaaaaaaaaaaaaaaaa(\e$B$"$$\e(B)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
733 "From: aaaaaaaaaaaaaaaaaaaaa(=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
734  =?ISO-2022-JP?B?GyRCJCQbKEI=?=)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>")
735
736 (encode
737 "From: aaaaaaaaaaaaaaaaaaaaa (\e$B$"$$\e(B)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
738 '("From: aaaaaaaaaaaaaaaaaaaaa
739  (=?ISO-2022-JP?B?GyRCJCIkJBsoQg==?=)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
740   "From: aaaaaaaaaaaaaaaaaaaaa (=?ISO-2022-JP?B?GyRCJCIbKEI=?=
741  =?ISO-2022-JP?B?GyRCJCQbKEI=?=)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"))
742
743 (encode
744 "From: aaaaaaaaaaaaaaaaaaaaa( \e$B$"$$\e(B)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
745 '("From: aaaaaaaaaaaaaaaaaaaaa(
746  =?ISO-2022-JP?B?GyRCJCIkJBsoQg==?=)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
747   "From: aaaaaaaaaaaaaaaaaaaaa( =?ISO-2022-JP?B?GyRCJCIbKEI=?=
748  =?ISO-2022-JP?B?GyRCJCQbKEI=?=)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"))
749
750 (encode
751 "From: aaaaaaaaaaaaaaaaaaaaa(\e$B$"$$\e(B )aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
752 '("From: aaaaaaaaaaaaaaaaaaaaa(=?ISO-2022-JP?B?GyRCJCIkJBsoQg==?=
753  )aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
754   "From: aaaaaaaaaaaaaaaaaaaaa(=?ISO-2022-JP?B?GyRCJCIbKEI=?=
755  =?ISO-2022-JP?B?GyRCJCQbKEI=?= )aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"))
756
757 (encode
758 "From: aaaaaaaaaaaaaaaaaaaaa(\e$B$"$$\e(B) aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
759 "From: aaaaaaaaaaaaaaaaaaaaa(=?ISO-2022-JP?B?GyRCJCIkJBsoQg==?=)\r
760  aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>")
761
762 (encode
763 "From: aaaaaaaaaaaaaaaaaaaaa(\e$B$"\e(B \e$B$$\e(B)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
764 "From: aaaaaaaaaaaaaaaaaaaaa(=?ISO-2022-JP?B?GyRCJCIbKEIgCg==?=\r
765  =?ISO-2022-JP?B?GyRCJCQbKEI=?=)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>")
766
767 (encode
768 "From: (\e$B$"\e(B)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
769 "From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>")
770
771 (encode
772 "From: (\e$B$"\e(B)aaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
773 "From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaa\r
774  <akr@jaist.ac.jp>")
775
776 (encode
777 "From: (\e$B$"\e(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
778 "From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r
779  <akr@jaist.ac.jp>")
780
781 (encode
782 "From: (\e$B$"\e(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
783 "From:\r
784  (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r
785  <akr@jaist.ac.jp>")
786
787 (encode
788 "From: (\e$B$"\e(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
789 "From:\r
790  (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r
791  <akr@jaist.ac.jp>")
792
793 (encode
794 "From: (\e$B$"\e(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
795 "From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
796  =?ISO-2022-JP?B?GyhC?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r
797  <akr@jaist.ac.jp>"
798 'zero-characters-encoded-word-hack)
799
800 (encode
801 "From: (\e$B$"\e(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
802 "From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
803  =?ISO-2022-JP?B?GyhC?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r
804  <akr@jaist.ac.jp>"
805 'zero-characters-encoded-word-hack)
806
807 (encode
808 "From: (\e$B$"\e(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
809 "From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)\r
810  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
811 'separate-sticked-tokens-for-fold)
812
813 (encode
814 "From: (\e$B$"\e(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
815 "From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)=?US-ASCII?Q?aaaaaaaaaaaaaaaaaaaaaaa?=\r
816  =?US-ASCII?Q?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa?= <akr@jaist.ac.jp>"
817 'encode-long-ascii-string-for-fold 'permit-sticked-special)
818
819 (encode
820 "From: (\e$B$"\e(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
821 "From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r
822  aaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
823 'divide-atom-for-fold)
824
825 (encode
826 "From: (\e$B$"\e(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
827 '("From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa <akr@jaist.ac.jp>"
828   "From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
829  <akr@jaist.ac.jp>")
830 'ignore-76bytes-limit)
831
832 (encode
833 "From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\e$B$"\e(B)aa <akr@jaist.ac.jp>"
834 "From: =?US-ASCII?Q?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa?=\r
835  =?US-ASCII?Q?a?=(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aa <akr@jaist.ac.jp>"
836 'encode-long-ascii-string-for-fold)
837
838 (encode
839 "From: \e$B$"\e(B aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\e$B$"\e(B)aa <akr@jaist.ac.jp>"
840 "From: =?ISO-2022-JP?B?GyRCJCIbKEIgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==?=\r
841  =?US-ASCII?Q?aaaaaaaaaaaaaaa?=(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aa"
842 'encode-long-ascii-string-for-fold)
843
844 (encode
845 "From: (\e$B$"\e(B) <akr@jaist.ac.jp>"
846 "From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=) <akr@jaist.ac.jp>")
847
848 (encode
849 "From: ((((((((((((((((((((((((((((((((((((((((\e$B$"\e(B)))))))))))))))))))))))))))))))))))))))) <akr@jaist.ac.jp>"
850 "From: ((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
851  =?ISO-2022-JP?B?GyhC?=))))))))))))))))))))))))))))))))))))))))\r
852  <akr@jaist.ac.jp>"
853 'zero-characters-encoded-word-hack)
854
855 (encode
856 "From: (((((((((((((((((((((((((((((((((((((((((\e$B$"\e(B))))))))))))))))))))))))))))))))))))))))) <akr@jaist.ac.jp>"
857 "From: (((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?=\r
858  =?ISO-2022-JP?B?GyRCJCIbKEI=?=)))))))))))))))))))))))))))))))))))))))))\r
859  <akr@jaist.ac.jp>"
860 'zero-characters-encoded-word-hack)
861
862 (encode
863 "From: ((((((((((((((((((((((((((((((((((((((((((((((\e$B$"\e(B)))))))))))))))))))))))))))))))))))))))))))))) <akr@jaist.ac.jp>"
864 "From: ((((((((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?=\r
865  =?ISO-2022-JP?B?GyRCJCIbKEI=?=))))))))))))))))))))))))))))))))))))))))))))))\r
866  <akr@jaist.ac.jp>"
867 'zero-characters-encoded-word-hack)
868
869 (encode
870 "From: (((((((((((((((((((((((((((((((((((((((((((((((\e$B$"\e(B))))))))))))))))))))))))))))))))))))))))))))))) <akr@jaist.ac.jp>"
871 "From: (((((((((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?=\r
872  =?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
873  =?ISO-2022-JP?B?GyhC?=)))))))))))))))))))))))))))))))))))))))))))))))\r
874  <akr@jaist.ac.jp>"
875 'zero-characters-encoded-word-hack)
876
877 (encode
878 "From: ((((((((((((((((((((((((((((((((((((((((((((((((\e$B$"\e(B)))))))))))))))))))))))))))))))))))))))))))))))) <akr@jaist.ac.jp>"
879 "From:\r
880  ((((((((((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?=\r
881  =?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
882  =?ISO-2022-JP?B?GyhC?=))))))))))))))))))))))))))))))))))))))))))))))))\r
883  <akr@jaist.ac.jp>"
884 'zero-characters-encoded-word-hack)
885
886 (encode
887 "From: ((((((((((((((((((((((((((((((((((((((((((((((((((((((\e$B$"\e(B)))))))))))))))))))))))))))))))))))))))))))))))))))))) <akr@jaist.ac.jp>"
888 "From:\r
889  ((((((((((((((((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?=\r
890  =?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
891  =?ISO-2022-JP?B?GyhC?=))))))))))))))))))))))))))))))))))))))))))))))))))))))\r
892  <akr@jaist.ac.jp>"
893 'zero-characters-encoded-word-hack)
894
895 (encode
896 "From: (((((((((((((((((((((((((((((((((((((((((((\e$B$"\e(B))))))))))))))))))))))))))))))))))))))))))) <akr@jaist.ac.jp>"
897 "From:\r
898  ((((((((((((((((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?=\r
899  =?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
900  =?ISO-2022-JP?B?GyhC?=))))))))))))))))))))))))))))))))))))))))))))))))))))))\r
901  <akr@jaist.ac.jp>"
902 'zero-characters-encoded-word-hack)
903
904 (encode
905 "From: (((((((((((((((((((((((((((((((((((((((((((((((((((((((\e$B$"\e(B))))))))))))))))))))))))))))))))))))))))))))))))))))))) <akr@jaist.ac.jp>"
906 "From:\r
907  ((((((((((((((((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?=\r
908  =?ISO-2022-JP?B?GyhC?=(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)=?ISO-2022-JP?B?GyhC?=\r
909  =?ISO-2022-JP?B?GyhC?=))))))))))))))))))))))))))))))))))))))))))))))))))))))\r
910  <akr@jaist.ac.jp>"
911 'zero-characters-encoded-word-hack)
912
913 (encode
914 "From: ((((((((((((((((((((((((((((((((((((((((((((((((((((((((\e$B$"\e(B)))))))))))))))))))))))))))))))))))))))))))))))))))))))) <akr@jaist.ac.jp>"
915 "From:\r
916  ((((((((((((((((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?=\r
917  =?ISO-2022-JP?B?GyhC?=((=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
918  =?ISO-2022-JP?B?GyhC?=))))))))))))))))))))))))))))))))=?ISO-2022-JP?B?GyhC?=\r
919  =?ISO-2022-JP?B?GyhC?=))))))))))))))))))))))))\r
920  <akr@jaist.ac.jp>"
921 'zero-characters-encoded-word-hack)
922
923 (encode
924 "From: ()(\e$B$"\e(B)() <akr@jaist.ac.jp>"
925 "From: ()(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)() <akr@jaist.ac.jp>")
926
927 (encode
928 "From: (\e$B$"\e(B)()()()()()()()()()()()()()()()()()()() <akr@jaist.ac.jp>"
929 "From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)()()()()()()()()()()()()()()()()()()()\r
930   <akr@jaist.ac.jp>")
931
932 (encode
933 "From: (\e$B$"\e(B)()()()()()()()()()()()()()()()()()()()()()() <akr@jaist.ac.jp>"
934 "From:\r
935  (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)()()()()()()()()()()()()()()()()()()()()()()\r
936   <akr@jaist.ac.jp>")
937
938 (encode
939 "From: (\e$B$"\e(B)()()()()()()()()()()()()()()()()()()()()()()() <akr@jaist.ac.jp>"
940 "From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
941  =?ISO-2022-JP?B?GyhC?=)()()()()()()()()()()()()()()()()()()()()()()()\r
942   <akr@jaist.ac.jp>"
943 'zero-characters-encoded-word-hack)
944
945 (encode
946 "From: (\e$B$"\e(B)()()()()()()()()()()()()()()()()()()()()()()()()()()() <akr@jaist.ac.jp>"
947 "From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
948  =?ISO-2022-JP?B?GyhC?=)()()()()()()()()()()()()()()()(=?ISO-2022-JP?B?GyhC?=\r
949  =?ISO-2022-JP?B?GyhC?=)()()()()()()()()()()() <akr@jaist.ac.jp>"
950 'zero-characters-encoded-word-hack)
951
952 (encode
953 "To: l@d (\e$B$"\e(B aaa)(\e$B$"\e(B)"
954 "To: l@d (=?ISO-2022-JP?B?GyRCJCIbKEI=?= aaa)(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)")
955
956 (encode
957 "To: l@d (\e$B$"\e(B aaaa)(\e$B$"\e(B)"
958 "To: l@d (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
959  aaaa)(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)")
960
961 (encode
962 "To: l@d (\e$B$"\e(B aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)(\e$B$"\e(B)"
963 "To: l@d (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
964  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)")
965
966 (encode
967 "To: l@d (\e$B$"\e(B aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)(\e$B$"\e(B)"
968 "To: l@d (=?ISO-2022-JP?B?GyRCJCIbKEIgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWE=?=\r
969  =?US-ASCII?Q?aaaaaaaaaaaaaaaaaa?=)(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)"
970 'encode-long-ascii-string-for-fold)
971
972 (encode
973 "To: l@d (\e$B$"\e(B aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()\e$B$"\e(B)"
974 "To: l@d (=?ISO-2022-JP?B?GyRCJCIbKEIgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWE=?=\r
975  =?US-ASCII?Q?aaaaaaaaaaaaaaaaaa?=()=?ISO-2022-JP?B?GyRCJCIbKEI=?=)"
976 'encode-long-ascii-string-for-fold)
977
978 (encode
979 "To: l@d (\e$B$"\e(B aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \e$B$"\e(B)(\e$B$"\e(B)"
980 "To: l@d (=?ISO-2022-JP?B?GyRCJCIbKEI=?= aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r
981  =?ISO-2022-JP?B?GyRCJCIbKEI=?=)(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)")
982
983 (encode
984 "To: l@d (\e$B$"\e(B aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa \e$B$"\e(B)(\e$B$"\e(B)"
985 "To: l@d (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
986  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r
987  =?ISO-2022-JP?B?GyRCJCIbKEI=?=)(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)")
988
989 ;----------------------------------------------------------------------------
990
991 ;;; Section 6: Encoding melancholic inputs.
992
993 (encode
994 "From: akr@jaist.ac.jp (\e$B$"\e(B(\e$B$$\e(B)\e$B$&\e(B)"
995 "From: akr@jaist.ac.jp\r
996  (=?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)"
997 'ignore-76bytes-limit)
998
999 (encode
1000 "From: akr@jaist.ac.jp (\e$B$"\e(B(\e$B$$\e(B)\e$B$&\e(B)"
1001 "From: akr@jaist.ac.jp (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r
1002  =?ISO-2022-JP?B?GyhC?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=\r
1003  =?ISO-2022-JP?B?GyhC?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)"
1004 'zero-characters-encoded-word-hack)
1005
1006 (encode
1007 "From: \e$B$"\e(B(\e$B$"\e(B) <akr@jaist.ac.jp>"
1008 "From: =?ISO-2022-JP?B?GyRCJCIbKEIoGyRCJCIbKEIp?= <akr@jaist.ac.jp>"
1009 'encode-sticked-comment-as-atom)
1010
1011 (encode
1012 "From: \e$B$"\e(B(\e$B$"\e(B) <akr@jaist.ac.jp>"
1013 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)\r
1014  <akr@jaist.ac.jp>"
1015 'permit-sticked-comment)
1016
1017 (encode
1018 "From: \e$B$"\e(B(\e$B$"\e(B) <akr@jaist.ac.jp>"
1019 "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)\r
1020  <akr@jaist.ac.jp>"
1021 'separate-sticked-comment)
1022
1023 (encode
1024 "To: \e$B$"\e(B<akr@jaist.ac.jp>"
1025 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
1026 'permit-sticked-special)
1027
1028 (encode
1029 "To: \e$B$"\e(B<akr@jaist.ac.jp>"
1030 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
1031 'separate-sticked-special)
1032
1033 (encode
1034 "To: <akr@jaist.ac.jp>,\e$B$"\e(B<akr@jaist.ac.jp>"
1035 "To: <akr@jaist.ac.jp>,=?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
1036 'permit-sticked-special)
1037
1038 (encode
1039 "To: <akr@jaist.ac.jp>,\e$B$"\e(B<akr@jaist.ac.jp>"
1040 "To: <akr@jaist.ac.jp>, =?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
1041 'separate-sticked-special)
1042
1043 (encode
1044 "To: akr@jaist.ac.jp,\e$B$"\e(B<akr@jaist.ac.jp>"
1045 "To: akr@jaist.ac.jp,=?ISO-2022-JP?B?GyRCJCIbKEI=?=<akr@jaist.ac.jp>"
1046 'permit-sticked-special)
1047
1048 (encode
1049 "To: akr@jaist.ac.jp,\e$B$"\e(B<akr@jaist.ac.jp>"
1050 "To: akr@jaist.ac.jp, =?ISO-2022-JP?B?GyRCJCIbKEI=?= <akr@jaist.ac.jp>"
1051 'separate-sticked-special)
1052
1053 (encode
1054 "To: \e$B$"\e(B:akr@jaist.ac.jp;"
1055 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:akr@jaist.ac.jp;"
1056 'permit-sticked-special)
1057
1058 (encode
1059 "To: \e$B$"\e(B:akr@jaist.ac.jp;"
1060 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?= :akr@jaist.ac.jp;"
1061 'separate-sticked-special)
1062
1063 (encode
1064 "To: \e$B$"\e(B:\e$B$$\e(B<akr@jaist.ac.jp>;"
1065 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=<akr@jaist.ac.jp>;"
1066 'ignore-76bytes-limit 'permit-sticked-special)
1067
1068 (encode
1069 "To: \e$B$"\e(B:\e$B$$\e(B<akr@jaist.ac.jp>;"
1070 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=\r
1071  =?ISO-2022-JP?B?GyhC?=<akr@jaist.ac.jp>;"
1072 'zero-characters-encoded-word-hack 'permit-sticked-special)
1073
1074 (encode
1075 "To: \e$B$"\e(B:\e$B$$\e(B<akr@jaist.ac.jp>;"
1076 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?= : =?ISO-2022-JP?B?GyRCJCQbKEI=?=\r
1077  <akr@jaist.ac.jp>;"
1078 'separate-sticked-special)
1079
1080 (encode
1081 "To: \e$B$"\e(B:\e$B$$\e(B<foo@bar>,\e$B$&\e(B<foo@bar>;,\e$B$(\e(B<foo@bar>"
1082 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=<foo@bar>,=?ISO-2022-JP?B?GyRCJCYbKEI=?=<foo@bar>;,=?ISO-2022-JP?B?GyRCJCgbKEI=?=<foo@bar>"
1083 'ignore-76bytes-limit 'permit-sticked-special)
1084
1085 (encode
1086 "To: \e$B$"\e(B:\e$B$$\e(B<foo@bar>,\e$B$&\e(B<foo@bar>;,\e$B$(\e(B<foo@bar>"
1087 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=\r
1088  =?ISO-2022-JP?B?GyhC?=<foo@bar>,=?ISO-2022-JP?B?GyRCJCYbKEI=?=\r
1089  =?ISO-2022-JP?B?GyhC?=<foo@bar>;,=?ISO-2022-JP?B?GyRCJCgbKEI=?=<foo@bar>"
1090 'zero-characters-encoded-word-hack 'permit-sticked-special)
1091
1092 (encode
1093 "To: \e$B$"\e(B:\e$B$$\e(B<foo@bar>,\e$B$&\e(B<foo@bar>;,\e$B$(\e(B<foo@bar>"
1094 "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?= : =?ISO-2022-JP?B?GyRCJCQbKEI=?=\r
1095  <foo@bar>, =?ISO-2022-JP?B?GyRCJCYbKEI=?= <foo@bar>;,\r
1096  =?ISO-2022-JP?B?GyRCJCgbKEI=?= <foo@bar>"
1097 'separate-sticked-special)
1098
1099 ;;; Section 7: Using embedded-encoded-words.
1100 ;;
1101 ;; embedded-encoded-word \e$BI=8=\e(B
1102 ;; 
1103 ;; RFC2047 \e$B$N%G%3!<%@$O@x:_E*$K\e(B(\e$B%G%3!<%I7k2L$G$J$/\e(B) encoded-word \e$B$=$N$b$N$r\e(B
1104 ;; \e$B=PNO$7$J$1$l$P$J$i$J$$$3$H$,$"$k!#\e(B
1105 ;;
1106 ;; 1. \e$BCN$i$J$$\e(B charset \e$B$b$7$/$O\e(B encoding \e$B$,;XDj$5$l$F$$$?$H$-!#\e(B
1107 ;;  =?unknown-charset?known-encoding?some-encoded-text?=
1108 ;;  =?known-charset?unknown-encoding?some-encoded-text?=
1109 ;;  =?unknown-charset?unknown-encoding?some-encoded-text?=
1110 ;;
1111 ;; 2. \e$B%G%3!<%I$G$-$F$bFbMF$,7uF]$9$.$k$H$-!#\e(B
1112 ;;  Non ASCII \e$B3HD%\e(B RFC822 \e$B$NCf$K\e(B =?US-ASCII?Q?=0D=0A=0D=0A?= \e$B$N%G%3!<%I\e(B
1113 ;; \e$B7k2L$rKd$a9~$`$N$O4m81$9$.$k!#\e(B
1114 ;;
1115 ;; \e$B$^$?!"%G%3!<%@$O\e(B encoded-word \e$B$N$h$&$K$_$($k%G%3!<%I7k2L$r=PNO$7$J$1\e(B
1116 ;; \e$B$l$P$J$i$J$$$3$H$b$"$k!#\e(B
1117 ;;
1118 ;;  =?US-ASCII?Q?=3D=3FUS-ASCII=3FQ=3Ftext=3F=3D?=
1119 ;;
1120 ;; \e$B%G%3!<%@$,C1$J$kJ8;zNs$r=PNO$9$k>l9g!"C1=c$K$O\e(B encoded-word \e$B$=$N$b$N$H\e(B
1121 ;; encoded-word \e$B$N$h$&$K$_$($kJ8;zNs$r6hJL$G$-$J$$!#\e(B
1122 ;; \e$B$3$3$G$OJ8;zNsCf$G$=$l$i$r3N<B$K6hJL$7$FI=8=$9$kJ}K!$r<($9!#\e(B
1123 ;;
1124 ;; rule 1: \e$BJ8;zNsCf$G\e(B =?charset?encoding?text?= \e$B$H$$$&%Q%?!<%s$K\e(B
1125 ;;  \e$B%^%C%A$7$J$$ItJ,$O$=$NItJ,$N$^$^$NFbMF$rI=$9!#\e(B
1126 ;; 
1127 ;; rule 2: \e$BJ8;zNsCf$G\e(B =?charset?encoding?text?= \e$B$H$$$&%Q%?!<%s$K\e(B
1128 ;;  \e$B%^%C%A$9$kItJ,$O\e(B charset \e$B$N@hF,$K\e(B + \e$B$,$$$/$DIU$$$F$$$k$+$GFbMF$N\e(B
1129 ;;  \e$B2r<a$rJQ$($k!#\e(B
1130 ;;
1131 ;;  3\e$B$rK!$H$7$F\e(B0\e$B$HEy$7$$>l9g\e(B(0, 3, 6, ...): charset \e$B$N@hF,$N\e(B + \e$B$N?t$r\e(B
1132 ;;    1/3 \e$B$K$7$?J8;zNs\e(B
1133 ;;  3\e$B$rK!$H$7$F\e(B1\e$B$HEy$7$$>l9g\e(B(1, 4, 7, ...): charset \e$B$N@hF,$N\e(B + \e$B$N?t$r\e(B
1134 ;;    1/3 (\e$B>.?tE@0J2<@Z<N$F\e(B)\e$B$K$7$F!"$=$l$r\e(B encoded-word \e$B$H;W$C$F%G\e(B
1135 ;;    \e$B%3!<%I$7$?J8;zNs!#\e(B
1136 ;;  3\e$B$rK!$H$7$F\e(B2\e$B$HEy$7$$>l9g\e(B(2, 5, 8, ...): charset \e$B$N@hF,$N\e(B + \e$B$N?t$r\e(B
1137 ;;    1/3 (\e$B>.?tE@0J2<@Z<N$F\e(B)\e$B$K$7$F!":G8e$N\e(B = \e$B$r<h$j=|$$$?J8;zNs\e(B
1138 ;;
1139 ;;  =?c?e?t?=?c?e?t?=... \e$B$H$$$&$h$&$K!"%Q%?!<%s$N@hF,$N\e(B = \e$B$H\e(B \e$BKvHx$N\e(B = 
1140 ;;  \e$B=E$J$k>l9g!"4q?tHVL\$N$b$N$KBP$7$F>e5-$N%k!<%k$rE,MQ$9$k!#\e(B
1141 ;;
1142 ;; NOTE: + \e$B$r\e(B embedded-encoded-word \e$BI=8=$N\e(B quote \e$BJ8;z$H8F$V!#\e(B
1143 ;;
1144 ;; NOTE: \e$B8=;~E@\e(B(1998/07/19)\e$B$G\e(B IANA \e$B$K$O\e(B + \e$B$r4^$`\e(B charset \e$B$O\e(B
1145 ;;  \e$BEPO?$5$l$F$$$J$$$N$G!"$=$l$i$N\e(B charset \e$B$r;H$C$?\e(B
1146 ;;  encoded-word \e$B$rI=8=$9$k$K$O\e(B + \e$B$r\e(B 1\e$B$D$D$1$k$3$H$K$J$k!#\e(B
1147 ;;
1148 ;;  =?US-ASCII?Q?abcdef?= \e$B$H$$$&\e(Bencoded-word : =?+US-ASCII?Q?abcdef?=
1149 ;;
1150 ;;  =?US-ASCII?Q?abcdef?= \e$B$H$$$&J8;zNs\e(B        : =?US-ASCII?Q?abcdef?=
1151 ;;  =?+US-ASCII?Q?abcdef?= \e$B$H$$$&J8;zNs\e(B       : =?+++US-ASCII?Q?abcdef?=
1152 ;;  =?++US-ASCII?Q?abcdef?= \e$B$H$$$&J8;zNs\e(B     : =?++++++US-ASCII?Q?abcdef?=
1153 ;;  =?+++US-ASCII?Q?abcdef?= \e$B$H$$$&J8;zNs\e(B    : =?+++++++++US-ASCII?Q?abcdef?=
1154 ;;  =?US-ASCII+?Q?abcdef?= \e$B$H$$$&J8;zNs\e(B      : =?US-ASCII+?Q?abcdef?=
1155 ;;  =?U+S-ASCII?Q?abcdef?= \e$B$H$$$&J8;zNs\e(B      : =?U+S-ASCII?Q?abcdef?=
1156 ;;
1157 ;;  =?US-ASCII?Q?abcdef? \e$B$H$$$&J8;zNs\e(B         : =?++US-ASCII?Q?abcdef?=
1158 ;;  =?+US-ASCII?Q?abcdef? \e$B$H$$$&J8;zNs\e(B        : =?+++++US-ASCII?Q?abcdef?=
1159 ;;  =?++US-ASCII?Q?abcdef? \e$B$H$$$&J8;zNs\e(B     : =?++++++++US-ASCII?Q?abcdef?=
1160 ;;  =?+++US-ASCII?Q?abcdef? \e$B$H$$$&J8;zNs\e(B    : =?+++++++++++US-ASCII?Q?abcdef?=
1161 ;;
1162 ;; NOTE: encoded-word \e$B$K8+$($kJ8;zNs$G\e(B + \e$B$,\e(B 3\e$BG\A}$5$l$k$N$O\e(B charset \e$B$N\e(B
1163 ;;  \e$B@hF,$@$1$G$"$j!"\e(Bencoding \e$B$d\e(B encoded-text \e$B$O$?$H$(\e(B + \e$B$,F~$C$F$$$F$b\e(B
1164 ;;  \e$BJQ2=$7$J$$!#$^$?!"\e(Bcharset \e$BCf$G$b\e(B \e$B@hF,0J30$N\e(B + \e$B$OJQ2=$7$J$$!#\e(B
1165 ;;
1166 ;; NOTE: charset \e$B$H\e(B encoding \e$B$K$O\e(B = \e$B$O4^$^$l$J$$$N$G\e(B 1\e$BJ8;z0J>e=E$J$k$3\e(B
1167 ;;  \e$B$H$O$J$$!#\e(B
1168 ;;
1169 ;; rule 3: \e$BJ8;zNsA4BN$NFbMF$O!"\e(Brule 1 \e$B$H\e(B rule 2 \e$B$G2r<a$7$?3FItJ,$N\e(B
1170 ;;   \e$BJ8;zNs$rC1=c$KO"7k$7$?J8;zNs$H$9$k!#\e(B
1171 ;;
1172 ;; NOTE: RFC2047 \e$B$G$O\e(B encoded-word \e$B$,6uGr$G6h@Z$i$l$J$1$l$P$J$i$J$$$H$+!"\e(B
1173 ;;  encoded-word \e$B$O\e(B 75bytes \e$B0J2<$G$J$1$l$P$J$i$J$$$H$+!"\e(B
1174 ;;  encoded-word \e$B$,4^$^$l$k9T$O\e(B 76bytes \e$B0J2<$G$J$1$l$P$J$i$J$$$J$I$H$$$&\e(B
1175 ;;  \e$B5,Ls$,$"$k$,!"\e(Bembedded-encoded-word \e$BI=8=$G$O$=$l$i$O:NMQ$7$J$$!#\e(B
1176 ;;  \e$BC1=c$K\e(B encoded-word \e$BFbIt$NJ8K!$@$1$rMxMQ$9$k!#\e(B
1177 ;;  (\e$BK\<AE*$K$O0[$J$kJ8K!$r:NMQ$9$k$3$H$b2DG=$G$"$k$,!"\e(BRFC2047 \e$B$K7I0U$r\e(B
1178 ;;  \e$BI=$7$F\e(B encoded-word \e$B$NJ8K!$r:NMQ$9$k!#\e(B)
1179 ;;
1180 ;; NOTE: embedded-encoded-word \e$BI=8=$7$?J8;zNs$NO"7k$O0BA4$G$O$J$$!#\e(B
1181 ;;  =?+US-ASCII?Q?ab \e$B$H\e(B cd?= \e$B$H$$$&\e(B embedded-encoded-word \e$BI=8=$7$?J8;zNs$O\e(B
1182 ;;  \e$B$=$l$>$l$=$NJ8;zNs$=$N$b$N$rI=8=$9$k$,!"$=$l$i$rO"7k$7$?J8;zNs\e(B
1183 ;;  =?+US-ASCII?Q?abcd?= \e$B$O\e(B abcd \e$B$H$$$&J8;zNs$rI=8=$9$k$3$H$K$J$j!"\e(B
1184 ;;  \e$B$=$l$>$l$NFbMF$NO"7k$H$O$J$i$J$$!#\e(B
1185 ;;
1186 ;;  \e$B$3$l$O$H$/$K\e(B Non ASCII \e$B3HD%\e(B RFC822 \e$B$NCf$K\e(B embedded-encoded-word \e$BI=8=$r\e(B
1187 ;;  \e$BKd$a9~$`$H$-$K5$$rIU$1$J$1$l$P$J$i$J$$!#\e(B(\e$BKd$a9~$s$@7k2L$O@5$7$$\e(B
1188 ;;  embedded-encoded-word \e$BI=8=$H$O$J$i$J$$$+$bCN$l$J$$!#\e(B)
1189
1190 (decode
1191 "Subject: =?Unknown-Charset?B?gqA=?="
1192 "Subject: =?+Unknown-Charset?B?gqA=?="
1193 'embedded-encoded-word)
1194
1195 (decode
1196 "Subject: =?US-ASCII?G?H4sIACqUszUAA8tIzcnJBwCGphA2BQAAAA==?="
1197 "Subject: =?+US-ASCII?G?H4sIACqUszUAA8tIzcnJBwCGphA2BQAAAA==?="
1198 'embedded-encoded-word)
1199
1200 (decode
1201 "Subject: =?US-ASCII?Unknown-Encoding?H4sIAGOUszUAAwtyczYyMDEHAEpvqpIHAAAA?="
1202 "Subject: =?+US-ASCII?Unknown-Encoding?H4sIAGOUszUAAwtyczYyMDEHAEpvqpIHAAAA?="
1203 'embedded-encoded-word)
1204
1205 (decode
1206 "Subject: =?ISO-2022-JP?G?H4sIAGiTszUAA5NWcVIBAhMtaQ0nAGLSaeEMAAAA?=\r
1207  =?ISO-2022-JP?G?H4sIAH6TszUAA5NWcVIxV3FTyVbxldZwAgAuIikKDgAAAA==?="
1208 "Subject: =?+ISO-2022-JP?G?H4sIAGiTszUAA5NWcVIBAhMtaQ0nAGLSaeEMAAAA?==?+ISO-2022-JP?G?H4sIAH6TszUAA5NWcVIxV3FTyVbxldZwAgAuIikKDgAAAA==?="
1209 'embedded-encoded-word)
1210
1211 (decode
1212 "Subject: =?Unknown-Charset?B?gqA=?= =?Unknown-Charset?B?gqA=?="
1213 "Subject: =?+Unknown-Charset?B?gqA=?==?+Unknown-Charset?B?gqA=?="
1214 'embedded-encoded-word)
1215
1216 (decode
1217 "Subject: =?Unknown-Charset?B?gqA=?=  =?Unknown-Charset?B?gqA=?="
1218 "Subject: =?+Unknown-Charset?B?gqA=?==?+Unknown-Charset?B?gqA=?="
1219 'embedded-encoded-word)
1220
1221 (decode
1222 "Subject: =?Unknown-Charset?B?gqA=?=\r
1223  =?Unknown-Charset?B?gqA=?="
1224 "Subject: =?+Unknown-Charset?B?gqA=?==?+Unknown-Charset?B?gqA=?="
1225 'embedded-encoded-word)
1226
1227 (decode
1228 "Subject: =?Unknown-Charset?B?gqA=?=\r
1229         =?Unknown-Charset?B?gqA=?="
1230 "Subject: =?+Unknown-Charset?B?gqA=?==?+Unknown-Charset?B?gqA=?="
1231 'embedded-encoded-word)
1232
1233 (decode
1234 "Subject: a=?Unknown-Charset?B?gqA=?="
1235 "Subject: a=?Unknown-Charset?B?gqA=?="
1236 'embedded-encoded-word)
1237
1238 (decode
1239 "Subject: =?Unknown-Charset?B?gqA=?=b"
1240 "Subject: =?Unknown-Charset?B?gqA=?=b"
1241 'embedded-encoded-word)
1242
1243 (decode
1244 "Subject: a=?Unknown-Charset?B?gqA=?=b"
1245 "Subject: a=?Unknown-Charset?B?gqA=?=b"
1246 'embedded-encoded-word)
1247
1248 (decode
1249 "Subject: a =?Unknown-Charset?B?gqA=?= b"
1250 "Subject: a =?+Unknown-Charset?B?gqA=?= b"
1251 'embedded-encoded-word)
1252
1253 (decode
1254 "Subject: =?ISO-2022-JP?B?DQoNCg==?="
1255 "Subject: =?+US-ASCII?Q?=0D=0A=0D=0A?="
1256 'embedded-encoded-word)
1257
1258 (decode
1259 "Subject: =?US-ASCII?Q?a=0D=0A_b?="
1260 "Subject: a b"
1261 'embedded-encoded-word)
1262
1263 (decode
1264 "Subject: =?US-ASCII?Q?a=0D=0Ab?="
1265 "Subject: a=?+US-ASCII?Q?=0D=0A?=b"
1266 'embedded-encoded-word)
1267
1268 ;;; Section 8: CR and LF.
1269
1270 (decode
1271 "From: akr@jaist.ac.jp (\r\\\n)"
1272 "From: akr@jaist.ac.jp (\r\\\n)")
1273
1274 (decode
1275 "From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A?= =?US-ASCII?Q?a?=)"
1276 "From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A?= a)")
1277
1278 (decode
1279 "From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A_?=)"
1280 "From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A_?=)")
1281
1282 (decode
1283 "From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A=09?=)"
1284 "From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A=09?=)")
1285
1286 (decode
1287 "From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A?= )"
1288 "From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A?= )")
1289
1290 (decode
1291 "From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A?=    )"
1292 "From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A?=    )")
1293
1294 (decode
1295 "From: akr@jaist.ac.jp (\\\r\\\n)"
1296 "From: akr@jaist.ac.jp (\\\r\\\n)")
1297
1298 (decode
1299 "From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0A?= =?US-ASCII?Q?a?=)"
1300 "From: akr@jaist.ac.jp (=?+US-ASCII?Q?=0D=0A?=a)"
1301 'embedded-encoded-word)
1302
1303 (decode
1304 "From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0Aa?=)"
1305 "From: akr@jaist.ac.jp (=?+US-ASCII?Q?=0D=0A?=a)"
1306 'embedded-encoded-word)
1307
1308 (decode
1309 "From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0A_?=)"
1310 "From: akr@jaist.ac.jp (\\ )")
1311
1312 (decode
1313 "From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0A=09?=)"
1314 "From: akr@jaist.ac.jp (\\      )")
1315
1316 (decode
1317 "From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0A?= )"
1318 "From: akr@jaist.ac.jp (\\ )")
1319
1320 (decode
1321 "From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0A?=  )"
1322 "From: akr@jaist.ac.jp (\\      )")
1323
1324 (decode
1325 "From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0A?=\r
1326  =?US-ASCII?Q?=0D=0A?= =?US-ASCII?Q?a?=)"
1327 "From: akr@jaist.ac.jp (=?+US-ASCII?Q?=0D=0A=0D=0A?=a)"
1328 'embedded-encoded-word)
1329
1330 (decode
1331 "From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0A?=\r
1332  =?US-ASCII?Q?=0D?=\\\n =?US-ASCII?Q?a?=)"
1333 "From: akr@jaist.ac.jp (=?+US-ASCII?Q?=0D=0A?=\r\\
1334  a)"
1335 'embedded-encoded-word)
1336
1337 ;;;end-test
1338
1339 (report)
1340
1341 ;----------------------------------------------------------------------------