;ELC   
;;; Compiled by root@tweety.build.redhat.com on Tue Dec 14 03:50:02 2004
;;; from file /usr/src/build/496412-noarch/BUILD/flim-1.14.7/eword-decode.el
;;; in Emacs version 21.3.1
;;; with bytecomp version 2.85.4.1
;;; with all optimizations.

;;; This file uses dynamic docstrings, first added in Emacs 19.29.
(if (and (boundp 'emacs-version)
	 (< (aref emacs-version (1- (length emacs-version))) ?A)
	 (or (and (boundp 'epoch::version) epoch::version)
	     (string-lessp emacs-version "19.29")))
    (error "`eword-decode.el' was compiled for Emacs 19.29 or later"))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


(byte-code "\303\304!\210\303\305!\210\303\306!\210\301B\307\302B\310\303\207" [current-load-list eword-encoded-text-regexp eword-encoded-word-regexp require mime-def mel std11 "[!->@-~]+" "=\\?\\([^][()<>@,;:\\\"/?= - *'%]+\\)\\(\\*[-A-Za-z]+\\)?\\?\\([^][()<>@,;:\\\"/?= - ]+\\)\\?\\([!->@-~]+\\)\\?="] 2)
#@366 Decode MIME encoded-words in STRING.

STRING is unfolded before decoding.

If an encoded-word is broken or your emacs implementation can not
decode the charset included in it, it is not decoded.

If MUST-UNFOLD is non-nil, it unfolds and eliminates line-breaks even
if there are in decoded encoded-words (generated by bad manner MUA
such as a version of Net$cape).
(defalias 'eword-decode-string #[(string &optional must-unfold) "\306!\307\310\211\211\311\"\203O \312\224\312\225\211\203O \n\312V\203: \313=\2033 \311\314\312\nO\"\204: \f\312\nOP\f\315\n	O\"P	\310O\313\202\f \fP,\207" [string end beg ew dest eword-encoded-word-regexp std11-unfold-string "" nil string-match 0 t "^[ 	]+$" eword-decode-encoded-word must-unfold] 5 (#$ . 961)])
(defalias 'eword-decode-structured-field-body #[(string &optional start-column max-column start) "\305	\306#\307\310\211\203 \f@\311\n!P\fA\211\204 +\207" [string start token result tokens eword-lexical-analyze must-unfold "" nil eword-decode-token] 5])
#@351 Decode and unfold STRING as structured field body.
It decodes non us-ascii characters in FULL-NAME encoded as
encoded-words or invalid "raw" string.  "Raw" non us-ascii
characters are regarded as variable `default-mime-charset'.

If an encoded-word is broken or your emacs implementation can not
decode the charset included in it, it is not decoded.
(defalias 'eword-decode-and-unfold-structured-field-body #[(string &optional start-column max-column start) "\306	\307#\310\203+ @\211@A\311=\203! \n\312P\202& \n\313\f!P*\202 \n*\207" [string start result tokens token type eword-lexical-analyze must-unfold "" spaces " " eword-decode-token] 5 (#$ . 1999)])
(defalias 'eword-decode-and-fold-structured-field-body #[(string start-column &optional max-column start) "\203 	GV\203 	\207\n\204 \f\306	\307#\310\311@\211\203\240 A\211\203\240 @\211\312=\203\205 @\313!\314!\\\315\\\211\nW\203o \316Q\202| \317QTA,\202\234 \313!P\314!\\))\202# \203\257 \313!P\202\261 ,\207" [mime-field-decoding-max-size string max-column fill-column start-column start eword-lexical-analyze must-unfold "" nil spaces eword-decode-token string-width 1 " " "\n " token result tokens c type next-token next-str next-len next-c str] 6])
(defalias 'eword-decode-unstructured-field-body #[(string &optional start-column max-column) "\306	\307\307\203 \310\n\"\211\203 \311\f\"\202 ,!\207" [string default-mime-charset lbt charset cs enable-multibyte-characters eword-decode-string nil mime-charset-to-coding-system decode-coding-string] 4])
(defalias 'eword-decode-and-unfold-unstructured-field-body #[(string &optional start-column max-column) "\306\307!	\310\310\203 \311\n\"\211\203 \312\f\"\202  ,\313\"\207" [string default-mime-charset lbt charset cs enable-multibyte-characters eword-decode-string std11-unfold-string nil mime-charset-to-coding-system decode-coding-string must-unfold] 4])
(defalias 'eword-decode-unfolded-unstructured-field-body #[(string &optional start-column max-column) "\306	\307\307\203 \310\n\"\211\203 \311\f\"\202 ,\312\"\207" [string default-mime-charset lbt charset cs enable-multibyte-characters eword-decode-string nil mime-charset-to-coding-system decode-coding-string must-unfold] 4])
#@284 Decode MIME encoded-words in region between START and END.

If UNFOLDING is not nil, it unfolds before decoding.

If MUST-UNFOLD is non-nil, it unfolds and eliminates line-breaks even
if there are in decoded encoded-words (generated by bad manner MUA
such as a version of Net$cape).
(defalias 'eword-decode-region #[(start end &optional unfolding must-unfold) "\212\214	}\210\n\203 \305 \210eb\210\306\307\310\311\307\310\260\312\313#\203* \314\315!\210eb\210\202 \306\312\313#\205E \316\317\224\317\225{\317\224\317\225|\210\f\"c\210\202* *\207" [start end unfolding eword-encoded-word-regexp must-unfold eword-decode-unfold re-search-forward "\\(" "\\)" "\\(\n?[ 	]\\)+" nil t replace-match "\\1\\7" eword-decode-encoded-word 0] 8 (#$ . 4348) "*r"])
(defalias 'eword-decode-unfold #[nil "eb\210\305\211\211\306\305\307#\205@ \310\224\311 	{\312\f\n\"\203	 \214	b}\210\306\313\305\307#\2039 \314\315\316!!\210\202( db\210)\202	 +\207" [end beg field std11-field-head-regexp eword-encoded-word-regexp nil re-search-forward t 0 std11-field-end string-match "\n\\([ 	]\\)" replace-match match-string 1] 4])
(byte-code "\301B\303\301!\204\f \304\302B\303\302!\204 \304\304\207" [current-load-list mime-field-decoder-alist mime-field-decoder-cache boundp nil] 2)
#@39 *Field decoder cache update function.
(defvar mime-update-field-decoder-cache 'mime-update-field-decoder-cache (#$ . -5636))
#@208 Set decoder of FIELD.
SPECS must be like `MODE1 DECODER1 MODE2 DECODER2 ...'.
Each mode must be `nil', `plain', `wide', `summary' or `nov'.
If mode is `nil', corresponding decoder is set up for every modes.
(defalias 'mime-set-field-decoder #[(field &rest specs) "\205G \211A@\211A@\211\203: \n\236\211\203( \f\306	\fA#\241\210\2021 \n	BCBB)\307\310#\202F \310\311	\312	\313	\314	&	*\207" [specs function mode mime-field-decoder-alist cell field put-alist apply mime-set-field-decoder plain wide summary nov] 11 (#$ . 5768)])
#@95 Return field-presentation-method from NAME.
NAME must be `plain', `wide', `summary' or `nov'.
(defalias 'mime-find-field-presentation-method '(macro . #[(name) "\301=\203 \302\207:\2032 @\2032 A:\2032 A@9\2032 AA\2042 \303\304\305BB\306\307BBE\207\303\304\303\310BB\311BB\306\303\312BB\313BBE\207" [name nil (or (assq 'summary mime-field-decoder-cache) '(summary)) or assq (mime-field-decoder-cache) cons (nil) ('summary) (mime-field-decoder-cache) ('summary) (nil)] 6 (#$ . 6316)]))
#@124 Return function to decode field-body of FIELD in MODE.
Optional argument MODE must be object of field-presentation-method.
(defalias 'mime-find-field-decoder-internal #[(field &optional mode) "	A\236\206 \n	@\"	\211@\236A\241\210A\207" [field mode mime-update-field-decoder-cache mime-field-decoder-cache] 4 (#$ . 6818)])
#@248 Return function to decode field-body of FIELD in MODE.
Optional argument MODE must be object or name of
field-presentation-method.  Name of field-presentation-method must be
`plain', `wide', `summary' or `nov'.
Default value of MODE is `summary'.
(defalias 'mime-find-field-decoder #[(field &optional mode) "9\2034 \206\n \305	\236\206 \206 \305\306BA\211\203) \n\236\211\203) \nA\2022 \f\2060 \305\"A)\207\211A\236\206L \f@\"\211@	\236A\241\210A*\207" [mode mime-field-decoder-cache p field mime-update-field-decoder-cache summary nil] 5 (#$ . 7151)])
#@56 Update field decoder cache `mime-field-decoder-cache'.
(defalias 'mime-update-field-decoder-cache #[(field mode &optional function) "\306=\203 \307\202$ \204$ 	\206 \310\n\236A\f\236\206! \311\236A)	\236\307\n\211\203T \fA\236\211\n\203C \n\241\210\202` \fB\211\nAB\241\210\202` 	\fB\211\nCBB\n*\207" [function mode mime-field-decoder-alist decoder-alist field mime-field-decoder-cache identity nil summary t ret cell] 4 (#$ . 7728)])
(byte-code "\302\303\304\211#\210\302\305\304\211#\210\302\306\304\211#\210\302\307\304\211#\210\302\310\304\211#\210\302\311\304\211#\210\302\312\304\211#\210\302\313\304\211#\210\302\314\304\211#\210\302\315\304\211#\210\302\316\304\211#\210\302\317\304\211#\210\302\320\304\211#\210\302\321\304\211#\210\302\322\304\211#\210\302\323\304\211#\210\302\324\304\211#\210\302\325\304\211#\210\302\326\304\211#\210\302\327\304\211#\210\302\330\304\211#\210\302\331\304\211#\210\332\304	\203\242 	\211A@\302\333\334\335\336\337\340\341\340&	\210\202\210 *\302\342\333\343\335\343\337\344\341\345&	\207" [field fields mime-set-field-decoder Archive nil Content-Md5 Control Date Distribution Followup-Host Followup-To Lines Message-Id Newsgroups Nntp-Posting-Host Path Posted-And-Mailed Received Status X-Face X-Face-Version X-Info X-Pgp-Key-Info X-Pgp-Sig X-Pgp-Sig-Version Xref (Reply-To Resent-Reply-To From Resent-From Sender Resent-Sender To Resent-To Cc Resent-Cc Bcc Resent-Bcc Dcc Mail-Followup-To Mime-Version Content-Type Content-Transfer-Encoding Content-Disposition User-Agent) plain eword-decode-structured-field-body wide eword-decode-and-fold-structured-field-body summary eword-decode-and-unfold-structured-field-body nov t eword-decode-unstructured-field-body eword-decode-and-unfold-unstructured-field-body eword-decode-unfolded-unstructured-field-body] 10)
#@326 Decode FIELD-BODY as FIELD-NAME in MODE, and return the result.
Optional argument MODE must be `plain', `wide', `summary' or `nov'.
Default mode is `summary'.

If MODE is `wide' and MAX-COLUMN is non-nil, the result is folded with
MAX-COLUMN.

Non MIME encoded-word part in FILED-BODY is decoded with
`default-mime-charset'.
(defalias 'mime-decode-field-body #[(field-body field-name &optional mode max-column) "\306\211\2119\203 \307\310!!T\202\" \311\312!!\307!T\313\n\f\"\211\2034 	#\202A \f\314=\203@ \315!\202A +\207" [decoder len field-name-symbol field-name mode field-body nil string-width symbol-name intern capitalize mime-find-field-decoder summary std11-unfold-string max-column] 5 (#$ . 9574)])
#@270 Decode MIME encoded-words in region between START and END.
If CODE-CONVERSION is nil, it decodes only encoded-words.  If it is
mime-charset, it decodes non-ASCII bit patterns as the mime-charset.
Otherwise it decodes non-ASCII bit patterns as the
default-mime-charset.
(defalias 'mime-decode-header-in-region #[(start end &optional code-conversion) "\212\214	}\210\n\205 \306\n!\203 \n\202 \211\203\253 \307\236\206# \307\310B\310\211\211\211\211\211eb\210\311\310\312#\205\246 \313\224\313\225S{\314!\315\316!!\211\211A\236\206\200 @\"\211@\236A\241\210A*\211\2039 \317 	{\f	|\210T\"c\210*\2029 .\202\260 \320ed\312#+\207" [start end code-conversion default-mime-charset default-charset mime-field-decoder-cache mime-charset-to-coding-system wide nil re-search-forward t 0 string-width intern capitalize std11-field-end eword-decode-region field-decoder len field-name p beg mode-obj std11-field-head-regexp mode field mime-update-field-decoder-cache body] 8 (#$ . 10309) "*r"])
#@312 Decode MIME encoded-words in header fields.
If CODE-CONVERSION is nil, it decodes only encoded-words.  If it is
mime-charset, it decodes non-ASCII bit patterns as the mime-charset.
Otherwise it decodes non-ASCII bit patterns as the
default-mime-charset.
If SEPARATOR is not nil, it is used as header separator.
(defalias 'mime-decode-header-in-buffer #[(&optional code-conversion separator) "\302e\212eb\210\303\304\305\206 \306!\307Q\310\311#\203 \312\224\202 d)	#\207" [separator code-conversion mime-decode-header-in-region re-search-forward "^\\(" regexp-quote "" "\\)?$" nil t 0] 6 (#$ . 11370) "*"])
(byte-code "\302\303\304\"\210\305\303\304\"\210\301B\306\301!\204 \307\302\207" [current-load-list eword-decode-encoded-word-error-handler defalias eword-decode-header mime-decode-header-in-buffer make-obsolete boundp eword-decode-encoded-word-default-error-handler] 3)
#@37 Face used for invalid encoded-word.
(defvar eword-warning-face nil (#$ . 12261))
(defalias 'eword-decode-encoded-word-default-error-handler #[(word signal) "\302\303G	\205 \304	D$\205 \207" [word eword-warning-face add-text-properties 0 face] 5])
#@281 Decode WORD as an encoded-word.

If charset is unknown or unsupported, return WORD.
If encoding is unknown, or some error occurs while decoding,
`eword-decode-encoded-word-error-handler' is called with WORD and an
error condition.

If MUST-UNFOLD is non-nil, unfold decoded WORD.
(defalias 'eword-decode-encoded-word #[(word &optional must-unfold) "\302	\"\203 \303\304\305\217\206 	\207" [eword-encoded-word-regexp word string-match err (byte-code "\302\303\224\303\225O\304\224\205 \305\304\224T\304\225O\227!\306\224\306\225O\226\307\224\307\225O	%\207" [word must-unfold eword-decode-encoded-text 1 2 intern 3 4] 7) ((error (funcall eword-decode-encoded-word-error-handler word err)))] 3 (#$ . 12520)])
#@466 Decode STRING as an encoded-text.

If your emacs implementation can not decode CHARSET, it returns nil.

If LANGUAGE is non-nil, it is put to `mime-language' text-property.
If ENCODING is not "B" or "Q", it occurs error.
So you should write error-handling code if you don't want break by errors.

If MUST-UNFOLD is non-nil, it unfolds and eliminates line-breaks even
if there are in decoded encoded-text (generated by bad manner MUA such
as a version of Net$cape).
(defalias 'eword-decode-encoded-text #[(charset language encoding string &optional must-unfold) "\306!\205M \307	\n\"\211\205L \310\310\203, \306\f\"\211\203, \311	\"\202- 	,\203< \312\313\314!\315#\203K \316\317G\320%\210)\207" [charset string encoding dest lbt cs mime-charset-to-coding-system encoded-text-decode-string nil decode-coding-string mapconcat #[(chr) "\301=\203 \302\207\303=\203 \302\207\304=\203 \305\207\306!\207" [chr 10 "" 13 9 " " char-to-string] 2] std11-unfold-string "" put-text-property 0 mime-language enable-multibyte-characters must-unfold language] 7 (#$ . 13242)])
(byte-code "\301B\302\301!\204\f \303\303\207" [current-load-list eword-lexical-analyze-cache boundp nil] 2)
#@98 *Max position of eword-lexical-analyze-cache.
It is max size of eword-lexical-analyze-cache - 1.
(defvar eword-lexical-analyze-cache-max 299 (#$ . -14452))
#@603 *List of functions to return result of lexical analyze.
Each function must have three arguments: STRING, START and MUST-UNFOLD.
STRING is the target string to be analyzed.
START is start position of STRING to analyze.
If MUST-UNFOLD is not nil, each function must unfold and eliminate
bare-CR and bare-LF from the result even if they are included in
content of the encoded-word.
Each function must return nil if it can not analyze STRING as its
format.

Previous function is preferred to next function.  If a function
returns nil, next function is used.  Otherwise the return value will
be the result.
(defvar mime-header-lexical-analyzer '(eword-analyze-quoted-string eword-analyze-domain-literal eword-analyze-comment eword-analyze-spaces eword-analyze-special eword-analyze-encoded-word eword-analyze-atom) (#$ . -14615))
(defalias 'eword-analyze-quoted-string #[(string start &optional must-unfold) "\306\307\211\310	%\310\211\205H \311	TSO!\f\310\310\2037 \312\"\211\2037 \313\"\2028 ,\203C \314\n!\315\nBB*\207" [string start ret p default-mime-charset lbt std11-check-enclosure 34 nil std11-strip-quoted-pair mime-charset-to-coding-system decode-coding-string eword-decode-string quoted-string charset cs enable-multibyte-characters mime-header-accept-quoted-encoded-words] 7])
(defalias 'eword-analyze-domain-literal #[(string start &optional must-unfold) "\302	\"\207" [string start std11-analyze-domain-literal] 3])
(defalias 'eword-analyze-comment #[(string from &optional must-unfold) "G	\206 \306\307\211\211\211\211\fV\205- H\310=\205- T\211\311\312\215.\207" [string from ret chr last-str dest 0 nil 40 tag (byte-code "	W\205\377 \nH\211\306=\2033 T\211	Y\203 \307\310\311\"\210\f\nSO\312\nH!QT\211\202  \313=\203\211 \f\nOP\307\310\314\315\230\203P \202 \316\311\311\203w \317\"\211\203w \320\n\"\202x \n,\"B\237BTB\"\210\202  \321=\203\370 \322\n#\211\203\360 \f\nOP\211\315\230\203\261 @B\202\343 @\316\f\311\311\203\332 \317\"\211\203\332 \320\n\"\202\333 \n,\"BBA\211\315\202  \307\310\311\"\210\202  T\211\202 \207" [i len string chr last-str from 92 throw tag nil char-to-string 41 comment "" eword-decode-string mime-charset-to-coding-system decode-coding-string 40 eword-analyze-comment ret dest default-mime-charset lbt charset cs enable-multibyte-characters must-unfold] 8) i len] 7])
(defalias 'eword-analyze-spaces #[(string start &optional must-unfold) "\302	\"\207" [string start std11-analyze-spaces] 3])
(defalias 'eword-analyze-special #[(string start &optional must-unfold) "\302	\"\207" [string start std11-analyze-special] 3])
(defalias 'eword-analyze-encoded-word #[(string start &optional must-unfold) "\306	\n#\205C \307\224\nU\205C \307\225\310\311\307	\"\"\211\306\312	\n#\203= \307\224\nU\203= \307\225\f\310\311\313	\"\"P\202 \314\fB*B\207" [eword-encoded-word-regexp string start must-unfold dest end string-match 0 eword-decode-encoded-word match-string "[ 	\n]*\\(=\\?\\([^][()<>@,;:\\\"/?= - *'%]+\\)\\(\\*[-A-Za-z]+\\)?\\?\\([^][()<>@,;:\\\"/?= - ]+\\)\\?\\([!->@-~]+\\)\\?=\\)" 1 atom] 6])
(defalias 'eword-analyze-atom #[(string start &optional must-unfold) "\306	\n#\205> \307\224\nU\205> \307\225\310	\nO\f\311\f\311\2038 \312\f\"\211\2038 \313	\"\2029 	,B)B\207" [std11-atom-regexp string start end default-mime-charset lbt string-match 0 atom nil mime-charset-to-coding-system decode-coding-string charset cs enable-multibyte-characters] 4])
(defalias 'eword-lexical-analyze-internal #[(string start must-unfold) "G\306\211\fW\203P \306\211	\211\n@\211	\2034 	\f#\211\2044 \nA\211\n\202 \206B \307\f\306OBTB+\211@\nB	A\211\202 \n\237+\207" [string ret dest len start mime-header-lexical-analyzer nil error r func rest must-unfold] 5])
#@254 Return lexical analyzed list corresponding STRING.
It is like std11-lexical-analyze, but it decodes non us-ascii
characters encoded as encoded-words or invalid "raw" format.
"Raw" non us-ascii characters are regarded as variable
`default-mime-charset'.
(defalias 'eword-lexical-analyze #[(string &optional start must-unfold) "	\206 \306\307O\307\211\310\306\fG\307\f$\210\311\f\"\211\203# A\202? \312\f\306#\fBB\f\233\211A\203> \n\307\241\210+\207" [string start cell ret key eword-lexical-analyze-cache 0 nil set-text-properties assoc eword-lexical-analyze-internal must-unfold eword-lexical-analyze-cache-max] 5 (#$ . 18515)])
(defalias 'eword-decode-token #[(token) "@A\211\304=\203 \305	!\202C \n\306=\203B \307	\203: 	@;\203- \310	@\311\"\2021 \312	@!P	A\211\204 \313\314Q)\202C 	*\207" [token value type dest quoted-string std11-wrap-as-quoted-string comment "" std11-wrap-as-quoted-pairs (40 41) eword-decode-token "(" ")"] 5])
#@342 Extract full name and canonical address from STRING.
Returns a list of the form (FULL-NAME CANONICAL-ADDRESS).
If no name can be extracted, FULL-NAME will be nil.
It decodes non us-ascii characters in FULL-NAME encoded as
encoded-words or invalid "raw" string.  "Raw" non us-ascii
characters are regarded as variable `default-mime-charset'.
(defalias 'eword-extract-address-components #[(string &optional start) "\305\306\307!	\310#!@\311\n!\312\n!\f+D\207" [string start structure phrase address std11-parse-address eword-lexical-analyze std11-unfold-string must-unfold std11-full-name-string std11-address-string] 5 (#$ . 19486)])
(provide 'eword-decode)
