;ELC   
;;; Compiled by amu@daemon on Thu Jan 11 15:03:45 2001
;;; from file /afs/sipb.mit.edu/contrib/emacs/packages/gnus-5.8.8/lisp/mm-decode.el
;;; in Emacs version 20.7.2
;;; with bytecomp version 2.56
;;; 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 "`mm-decode.el' was compiled for Emacs 19.29 or later"))

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


(byte-code "\302\303!\210\302\304!\210\302\305!\210\306\307\310\"\210\311\312\313\314\315	\316	\317	\320&\207" [:link :group require mail-parse mailcap mm-bodies autoload mm-inline-partial "mm-partial" custom-declare-group mime-display nil "Display of MIME in mail and news articles." (custom-manual "(emacs-mime)Customization") mail news multimedia] 12)
(defalias 'mm-handle-buffer '(macro . #[(handle) "\301\302E\207" [handle nth 0] 3]))
(defalias 'mm-handle-type '(macro . #[(handle) "\301\302E\207" [handle nth 1] 3]))
(defalias 'mm-handle-media-type #[(handle) "@;\203	 @\207A@@\207" [handle] 1])
(put 'mm-handle-media-type 'byte-optimizer 'byte-compile-inline-expand)
(defalias 'mm-handle-media-supertype #[(handle) "\301\211@;\203 @\202 A@@)\302\"@\207" [handle split-string "/"] 4])
(put 'mm-handle-media-supertype 'byte-optimizer 'byte-compile-inline-expand)
(defalias 'mm-handle-media-subtype #[(handle) "\301\211@;\203 @\202 A@@)\302\"A@\207" [handle split-string "/"] 4])
(put 'mm-handle-media-subtype 'byte-optimizer 'byte-compile-inline-expand)
(defalias 'mm-handle-encoding '(macro . #[(handle) "\301\302E\207" [handle nth 2] 3]))
(defalias 'mm-handle-undisplayer '(macro . #[(handle) "\301\302E\207" [handle nth 3] 3]))
(defalias 'mm-handle-set-undisplayer '(macro . #[(handle function) "\302\303\304E	E\207" [handle function setcar nthcdr 3] 4]))
(defalias 'mm-handle-disposition '(macro . #[(handle) "\301\302E\207" [handle nth 4] 3]))
(defalias 'mm-handle-description '(macro . #[(handle) "\301\302E\207" [handle nth 5] 3]))
(defalias 'mm-handle-cache '(macro . #[(handle) "\301\302E\207" [handle nth 6] 3]))
(defalias 'mm-handle-set-cache '(macro . #[(handle contents) "\302\303\304E	E\207" [handle contents setcar nthcdr 6] 4]))
(defalias 'mm-handle-id '(macro . #[(handle) "\301\302E\207" [handle nth 7] 3]))
(defalias 'mm-make-handle '(macro . #[(&optional buffer type encoding undisplayer disposition description cache id) "\306	\n\f\257	\207" [buffer type encoding undisplayer disposition description list cache id] 9]))
#@74 Alist of media types/tests saying whether types can be displayed inline.
(custom-declare-variable 'mm-inline-media-tests ''(("image/jpeg" mm-inline-image (lambda (handle) (mm-valid-and-fit-image-p 'jpeg handle))) ("image/png" mm-inline-image (lambda (handle) (mm-valid-and-fit-image-p 'png handle))) ("image/gif" mm-inline-image (lambda (handle) (mm-valid-and-fit-image-p 'gif handle))) ("image/tiff" mm-inline-image (lambda (handle) (mm-valid-and-fit-image-p 'tiff handle))) ("image/xbm" mm-inline-image (lambda (handle) (mm-valid-and-fit-image-p 'xbm handle))) ("image/x-xbitmap" mm-inline-image (lambda (handle) (mm-valid-and-fit-image-p 'xbm handle))) ("image/xpm" mm-inline-image (lambda (handle) (mm-valid-and-fit-image-p 'xpm handle))) ("image/x-pixmap" mm-inline-image (lambda (handle) (mm-valid-and-fit-image-p 'xpm handle))) ("image/bmp" mm-inline-image (lambda (handle) (mm-valid-and-fit-image-p 'bmp handle))) ("text/plain" mm-inline-text identity) ("text/enriched" mm-inline-text identity) ("text/richtext" mm-inline-text identity) ("text/x-patch" mm-display-patch-inline (lambda (handle) (locate-library "diff-mode"))) ("application/emacs-lisp" mm-display-elisp-inline identity) ("text/html" mm-inline-text (lambda (handle) (locate-library "w3"))) ("text/x-vcard" mm-inline-text (lambda (handle) (or (featurep 'vcard) (locate-library "vcard")))) ("message/delivery-status" mm-inline-text identity) ("message/rfc822" mm-inline-message identity) ("message/partial" mm-inline-partial identity) ("text/.*" mm-inline-text identity) ("audio/wav" mm-inline-audio (lambda (handle) (and (or (featurep 'nas-sound) (featurep 'native-sound)) (device-sound-enabled-p)))) ("audio/au" mm-inline-audio (lambda (handle) (and (or (featurep 'nas-sound) (featurep 'native-sound)) (device-sound-enabled-p)))) ("application/pgp-signature" ignore identity) ("multipart/alternative" ignore identity) ("multipart/mixed" ignore identity) ("multipart/related" ignore identity)) '(#$ . 2708) :type '(repeat (list (string :tag "MIME type") (function :tag "Display function") (function :tag "Display test"))) :group 'mime-display)
#@54 List of media types that are to be displayed inline.
(custom-declare-variable 'mm-inlined-types ''("image/.*" "text/.*" "message/delivery-status" "message/rfc822" "message/partial" "application/emacs-lisp" "application/pgp-signature") '(#$ . 4829) :type '(repeat string) :group 'mime-display)
#@53 A list of MIME types to be displayed automatically.
(custom-declare-variable 'mm-automatic-display ''("text/plain" "text/enriched" "text/richtext" "text/html" "text/x-vcard" "image/.*" "message/delivery-status" "multipart/.*" "message/rfc822" "text/x-patch" "application/pgp-signature" "application/emacs-lisp") '(#$ . 5128) :type '(repeat string) :group 'mime-display)
#@69 Types to have "attachment" ignored if they can be displayed inline.
(custom-declare-variable 'mm-attachment-override-types ''("text/x-vcard") '(#$ . 5504) :type '(repeat string) :group 'mime-display)
#@74 Types to be treated as attachments even if they can be displayed inline.
(custom-declare-variable 'mm-inline-override-types 'nil '(#$ . 5710) :type '(repeat string) :group 'mime-display)
#@76 List of MIME type regexps that will be displayed externally automatically.
(custom-declare-variable 'mm-automatic-external-display 'nil '(#$ . 5903) :type '(repeat string) :group 'mime-display)
#@463 List of MIME types that are discouraged when viewing multipart/alternative.
Viewing agents are supposed to view the last possible part of a message,
as that is supposed to be the richest.  However, users may prefer other
types instead, and this list says what types are most unwanted.  If,
for instance, text/html parts are very unwanted, and text/richtext are
somewhat unwanted, then the value of this variable should be set
to:

 ("text/html" "text/richtext")
(custom-declare-variable 'mm-discouraged-alternatives 'nil '(#$ . 6104) :type '(repeat string) :group 'mime-display)
#@42 Where mm will store its temporary files.
(defvar mm-tmp-directory (byte-code "\301\302!\203	 \302 \207\303\300!\203 \207\304\207" [temporary-file-directory fboundp temp-directory boundp "/tmp/"] 2) (#$ . 6689))
#@48 If non-nil, then all images fit in the buffer.
(custom-declare-variable 'mm-inline-large-images 'nil '(#$ . 6908) :type 'boolean :group 'mime-display)
(byte-code "\305\300!\204 \306\300	B\305\302!\204 \307\302	B\305\303!\204  \306\303	B\305\304!\204, \310\304	B\306\207" [mm-dissection-list current-load-list mm-last-shell-command mm-content-id-alist mm-dissect-default-type boundp nil "" "text/plain"] 2)
#@42 Keymap for input viewer with completion.
(defvar mm-viewer-completion-map (byte-code "\302\303!\304	\"\210)\207" [map minibuffer-local-completion-map make-sparse-keymap mm-viewer-completion-map set-keymap-parent] 3) (#$ . 7330))
(define-key mm-viewer-completion-map " " 'self-insert-command)
#@63 Dissect the current buffer and return a list of MIME handles.
(defalias 'mm-dissect-buffer #[(&optional no-strict-mime) "\212\306\211\211\211\211\211\211\211\211()*\214\307 \210+\204% \310\311!\203@ \310\312!*\313\314\315\217)\310\316!\310\317!\310\320!\310\321!)\f\203I \322\f!)\203W \323\324)@\"\204v \325,C\f\205g \326\327\330\f!!\227!+\205q \331\332\333\217\n%\202\341 \334)@\324\"\211(A@(\211A(@\211(\335\232\203\252 \336\232\203\233 \337\202\234 \340,)@\341)!)B\202\307 \325)\f\205\271 \326\327\330\f!!\227!+\205\303 \342\343\344\217\n	&	\203\340 \323\345	\"\203\330 \346\347	\"	B-B-.\n\207" [result id description cd cte subtype nil mail-narrow-to-head mail-fetch-field "mime-version" "content-type" #1=#:G88902 (mail-header-parse-content-type ct) ((error)) "content-transfer-encoding" "content-disposition" "content-description" "content-id" mail-header-strip string-match "/" mm-dissect-singlepart intern mail-header-remove-whitespace mail-header-remove-comments #2=#:G88903 (mail-header-parse-content-disposition cd) ((error)) split-string "multipart" "digest" "message/rfc822" "text/plain" mm-dissect-multipart #3=#:G88904 (mail-header-parse-content-disposition cd) ((error)) " *<\\(.*\\)> *" match-string 1 type ctl ct no-strict-mime mm-dissect-default-type mm-content-id-alist] 10 (#$ . 7631)])
(defalias 'mm-dissect-singlepart #[(ctl cte &optional force cdl description id) "\204 	@\306\232\203 \307\310	\"\202 \311\205- \312 	\n\313\f\313\257\211\f@B\f)\207" [force ctl cte cdl description id "text/plain" assoc format t mm-copy-to-buffer nil res mm-dissection-list] 9])
#@26 Remove all MIME handles.
(defalias 'mm-remove-all-parts #[nil "\301\302\"\210\303\211\207" [mm-dissection-list mapcar mm-remove-part nil] 3 (#$ . 9278) nil])
(defalias 'mm-dissect-multipart #[(ctl) "eb\210\306\307\301\"P\310	!\311P\312\312\212db\210\313\n\312\314#\203% \315\224\202& d)\310	!\316P\317	\314#\203T \315\224b\210\203L \212\214`}\210\320\314!C\f\244*\321y\210`\202. \203f \212\214}\210\320\314!C\f\244*\f\237-\207" [ctl boundary close-delimiter start parts end "\n--" mail-content-type-get regexp-quote "--[ 	]*$" nil re-search-backward t 0 "[ 	]*$" re-search-forward mm-dissect-buffer 2] 4])
#@60 Copy the contents of the current buffer to a fresh buffer.
(defalias 'mm-copy-to-buffer #[nil "\212p\302eb\210\303\304\302\305#\210`\306\307!q\210\310	\"\210p+\207" [beg obuf nil search-forward-regexp "^\n" t generate-new-buffer " *mm*" insert-buffer-substring] 4 (#$ . 9908)])
(defalias 'mm-display-parts #[(handle &optional no-default) "@;\203\f \301\302A\"\207\303@!\203  \214``}\210\304!\210db)\207\301\302\"\207" [handle mapcar mm-display-parts bufferp mm-display-part] 3])
#@142 Display the MIME part represented by HANDLE.
Returns nil if the part is removed; inline if displayed inline;
external if displayed external.
(defalias 'mm-display-part #[(handle &optional no-default) "\212\304 \210\305!\203 \306!\202e \211@;\203 @\202! A@@)\307	!\310!\2038 \311y\210\312!\210\313\202d \n\204A ?\205d \n\204\\ \314	!@\315\232\203\\ \311y\210\316\317!\"\210\313\202d \320\n\206c \321\"*)\207" [handle type method no-default mailcap-parse-mailcaps mm-handle-displayed-p mm-remove-part mailcap-mime-info mm-inlined-p 1 mm-display-inline inline split-string "text" mm-insert-inline mm-get-part mm-display-external mailcap-save-binary-file] 5 (#$ . 10403)])
#@30 Display HANDLE using METHOD.
(defalias 'mm-display-external #[(handle method) "p\306\307\310\311!!\312\216r\nq\210\313!\203\204 p\314=\203( \315\316!q\210\306\202B \317!\210\320\f\321\"\211?\203; \322?!\210)\323\315\316!!\210\324 \210\325@!\210\326\f!\210eb\210\327\330\"\210p\331\332\211@;\203f @\202j A@@)\321\"\236A\333\216\203}  \202\200 \334!,\202\222\317!\210\335\336\337B\"!C\340\3418\342\"\"\332\211@;\203\247 @\202\253 A@@)\321\"D\343\344D\"\206\275 \343\345D\"E\343\346D\"F\306G\306H\347C!\210\350C\351\"\210\"\203\351 \336\352\"!C\"G\202\362 \335\336\353C\"!G@I\354edG\306\355%\210)\327\330\"\210E\203.\356\216\357\360\306\361\362JK\363GA@#&\210)\327\364\365G\"\"\210\366\202\220F\203mrq\210\367y\210\370\371\216\372J\306\315\316!\211H\306K\363GA@#&\210\373H!\205e\212Hq\210\374 ))\"\210)\375\202\220\376\216\357\360\315\316!\211HJK\363GA@#%\210)\327\364\365G\"\"\210\366.-\207" [outbuf default-enable-multibyte-characters #1=#:temp-buffer method cur handle nil get-buffer-create generate-new-buffer-name " *temp*" ((byte-code "\301!\203\n \302!\210\301\207" [#1# buffer-name kill-buffer] 2)) functionp mailcap-save-binary-file generate-new-buffer "*mm*" mm-insert-part get-buffer-window t select-window switch-to-buffer buffer-disable-undo mm-set-buffer-file-coding-system insert-buffer-substring message "Viewing with %s" non-viewer mailcap-mime-info ((byte-code "\204 	\203 \304\n\233\240\210\304\207" [non-viewer method handle mm 3] 2)) mm-save-part make-temp-name expand-file-name "emm." mail-content-type-get 4 filename assoc "needsterm" "needsterminal" "copiousoutput" make-directory set-file-modes 448 file-name-nondirectory "mm." write-region nomesg ((byte-code "\303\233	\nB\240\207" [handle file buffer 3] 3)) start-process "*display*" "xterm" "-e" mm-mailcap-command "Displaying %s..." format external 1 mm-insert-inline ((byte-code "\300\301\302\217\210\303\304\305\217\210\306\307\310\217\207" [#2=#:G88905 (delete-file file) ((error)) #3=#:G88906 (byte-code "\301\302!!\207" [file delete-directory file-name-directory] 3) ((error)) #4=#:G88907 (kill-buffer buffer) ((error))] 3)) call-process buffer-live-p buffer-string inline ((byte-code "\303\233	\nB\240\207" [handle file buffer 3] 3)) win mm-binary-coding-system mm mm-tmp-directory dir mime-info needsterm copiousoutput file buffer coding-system-for-write shell-file-name shell-command-switch] 13 (#$ . 11094)])
(defalias 'mm-mailcap-command #[(method file type-list) "A\306\307\310\211\211\311\312#\203q \306\224OB\306\225\313\306\"\313\314\"	\315\230\203< \316B\202 	\317\230\203N \310\320!B\202 	\321\230\203^ \320@!B\202 \320\322\n!\236A\206j \323!B\202 GOB\f\203\212 \324B\320!B\325\326\237\323#.\207" [type-list total sub out uses-stdin beg 0 t nil string-match "%{\\([^}]+\\)}\\|%s\\|%t\\|%%" match-string 1 "%%" "%" "%s" mm-quote-arg "%t" intern "" "<" mapconcat identity ctl method file] 6])
#@57 Remove the displayed MIME parts represented by HANDLES.
(defalias 'mm-remove-parts #[(handles) "<\203 \302@!\203 \303!\207\304\211A@\211\205; 	;\204 	<\2034 	@;\2034 \305	A!\210\202 \303	!\210\202 )\207" [handles handle bufferp mm-remove-part nil mm-remove-parts] 2 (#$ . 14135)])
#@57 Remove the displayed MIME parts represented by HANDLES.
(defalias 'mm-destroy-parts #[(handles) "<\203 \302@!\203 \303!\207\304\211A@\211\205; 	;\204 	<\2034 	@;\2034 \305	A!\210\202 \303	!\210\202 )\207" [handles handle bufferp mm-destroy-part nil mm-destroy-parts] 2 (#$ . 14434)])
#@55 Remove the displayed MIME part represented by HANDLE.
(defalias 'mm-remove-part #[(handle) "<\205 \3028\303\304\305\217\210\302\233\306\240)\207" [handle object 3 #1=#:G88908 (byte-code "\301!\203 \302!\210\202L \303!\204 <\203% @\304=\203%  \210\202L :\203< \305\306\307\217\210\310\311\312\217\210\313\314\315\217\210\202L \316!\203L \317!\203L \320!\210\301\207" [object mm-annotationp delete-annotation functionp lambda #2=#:G88909 (byte-code "\301@!\207" [object delete-file] 2) ((error)) #3=#:G88910 (byte-code "\301\302@!!\207" [object delete-directory file-name-directory] 3) ((error)) #4=#:G88911 (byte-code "\301A!\207" [object kill-buffer] 2) ((error)) bufferp buffer-live-p kill-buffer] 3) ((error)) nil] 3 (#$ . 14736)])
(defalias 'mm-display-inline #[(handle) "\211@;\203 @\202 A@@)\304\n	\"A@\211!\210eb*\207" [handle type mm-inline-media-tests function mm-assoc-string-match] 4])
(defalias 'mm-assoc-string-match #[(alist type) "\300\301\215\207" [--cl-block-nil-- (byte-code "\304\211\203 \n@\305	@\"\203 \306\307	\"\210\nA\211\204 *\304\207" [alist elem #1=#:--dolist-temp--88912 type nil string-match throw --cl-block-nil--] 4)] 2])
#@45 Say whether HANDLE can be displayed inline.
(defalias 'mm-inlinable-p #[(handle) "	\211@;\203 	@\202 	A@@)\305\f\2038 \306\f@@\"\2030 \f@AA@\305\n	!\f\211A\210\202 \n+\207" [mm-inline-media-tests handle test type alist nil string-match] 4 (#$ . 15932)])
#@66 Say whether the user wants HANDLE to be displayed automatically.
(defalias 'mm-automatic-display-p #[(handle) "	\211@;\203 	@\202 	A@@)\306\211\211A@\211\203> \307	!\204 \310\f\"\203 \311	!\203 \312\306\211\202 \n,\207" [mm-automatic-display handle result method type methods nil mm-inline-override-p string-match mm-inlinable-p t] 5 (#$ . 16205)])
#@66 Say whether the user wants HANDLE to be displayed automatically.
(defalias 'mm-inlined-p #[(handle) "	\211@;\203 	@\202 	A@@)\306\211\211A@\211\203> \307	!\204 \310\f\"\203 \311	!\203 \312\306\211\202 \n,\207" [mm-inlined-types handle result method type methods nil mm-inline-override-p string-match mm-inlinable-p t] 5 (#$ . 16578)])
#@64 Say whether HANDLE should have attachment behavior overridden.
(defalias 'mm-attachment-override-p #[(handle) "	\211@;\203 	@\202 	A@@)\305\306\307\215+\207" [mm-attachment-override-types handle ty type types nil found (byte-code "\211A@\211\205 \304	\n\"\203  \305!\203  \306\307\310\"\210\202  \207" [types ty type handle string-match mm-inlinable-p throw found t] 3)] 4 (#$ . 16937)])
#@60 Say whether HANDLE should have inline behavior overridden.
(defalias 'mm-inline-override-p #[(handle) "	\211@;\203 	@\202 	A@@)\305\306\307\215+\207" [mm-inline-override-types handle ty type types nil found (byte-code "\211A@\211\205 \303	\n\"\203  \304\305\306\"\210\202  \207" [types ty type string-match throw found t] 3)] 4 (#$ . 17343)])
#@42 Return the user-defined method for TYPE.
(defalias 'mm-automatic-external-display-p #[(type) "\305\211\211A@\211\203 \306\n\f\"\203 \307\305\211\202 	+\207" [mm-automatic-external-display result method methods type nil string-match t] 4 (#$ . 17703)])
#@50 Destroy the data structures connected to HANDLE.
(defalias 'mm-destroy-part #[(handle) "<\205 \301!\210\302@!\205 \303@!\207" [handle mm-remove-part buffer-live-p kill-buffer] 2 (#$ . 17973)])
#@41 Say whether HANDLE is displayed or not.
(defalias 'mm-handle-displayed-p #[(handle) "\3018\207" [handle 3] 2 (#$ . 18178)])
#@44 Return the contents of HANDLE as a string.
(defalias 'mm-get-part #[(handle) "\303\304\305\306!!\307\216r	q\210\310\n!\210\311 ,\207" [default-enable-multibyte-characters #1=#:temp-buffer handle nil get-buffer-create generate-new-buffer-name " *temp*" ((byte-code "\301!\203\n \302!\210\301\207" [#1# buffer-name kill-buffer] 2)) mm-insert-part buffer-string] 3 (#$ . 18309)])
#@54 Insert the contents of HANDLE in the current buffer.
(defalias 'mm-insert-part #[(handle) "p\212	\306	\211@;\203 	@\202 	A@@)\307\"@)\310\235\203V \311\312\313!!\314\216r\nq\210\315	@!\210\316\317	8	\211@;\203C 	@\202G 	A@@)\"\210pq\210\315!,\202\212 \320\311\312\313!!\321\216rq\210\315	@!\210\316\317	8	\211@;\203z 	@\202~ 	A@@)\"\210pq\210\315!-*\207" [cur handle #1=#:temp-buffer temp default-enable-multibyte-characters #2=#:temp-buffer split-string "/" ("text" "message") get-buffer-create generate-new-buffer-name " *temp*" ((byte-code "\301!\203\n \302!\210\301\207" [#1# buffer-name kill-buffer] 2)) insert-buffer-substring mm-decode-content-transfer-encoding 2 nil ((byte-code "\301!\203\n \302!\210\301\207" [#2# buffer-name kill-buffer] 2))] 5 (#$ . 18696)])
(byte-code "\302\300!\204 \303\300	B\303\207" [mm-default-directory current-load-list boundp nil] 2)
#@25 Write HANDLE to a file.
(defalias 'mm-save-part #[(handle) "\306A@\301\"\306\3078\302\"\310\n\203 \311\n!\312\313\314\n\206$ 	\206$ \315\f\206) \"\"\316!\317!\203? \320\321\322\"!\205C \323\"+\207" [handle name filename file mm-default-directory default-directory mail-content-type-get 4 nil file-name-nondirectory read-file-name "Save MIME part to: " expand-file-name "" file-name-directory file-exists-p yes-or-no-p format "File %s already exists; overwrite? " mm-save-part-to-file] 5 (#$ . 19598)])
(defalias 'mm-save-part-to-file #[(handle file) "\306\307\310\311!!\312\216r	q\210\313\n!\210\314\315\316B\315ed#.\207" [default-enable-multibyte-characters #1=#:temp-buffer handle inhibit-file-name-handlers inhibit-file-name-operation coding-system-for-write nil get-buffer-create generate-new-buffer-name " *temp*" ((byte-code "\301!\203\n \302!\210\301\207" [#1# buffer-name kill-buffer] 2)) mm-insert-part binary write-region jka-compr-handler file] 4])
#@27 Pipe HANDLE to a process.
(defalias 'mm-pipe-part #[(handle) "\306A@\301\"\307\310\n\"\311\312\313\314!!\315\216rq\210\316!\210\317ed\311$.\207" [handle name mm-last-shell-command command default-enable-multibyte-characters #1=#:temp-buffer mail-content-type-get read-string "Shell command on MIME part: " nil get-buffer-create generate-new-buffer-name " *temp*" ((byte-code "\301!\203\n \302!\210\301\207" [#1# buffer-name kill-buffer] 2)) mm-insert-part shell-command-on-region] 5 (#$ . 20590)])
#@30 Display HANDLE using METHOD.
(defalias 'mm-interactively-view-part #[(handle) "\211@;\203 @\202 A@@)\306\307\310	\311\"\"\312\313\n\")\211\314\230\203- \315\316!\210\317\320\"\2038 \321P\322\323!\"+\207" [handle type methods mm-viewer-completion-map minibuffer-local-completion-map method mapcar #[(i) "\301\302\"AC\207" [i assoc viewer] 3] mailcap-mime-info all completing-read "Viewer: " "" error "No method given" string-match "^[^% 	]+$" " %s" mm-display-external copy-sequence] 6 (#$ . 21105)])
#@37 Say which of HANDLES are preferred.
(defalias 'mm-preferred-alternative #[(handles &optional preferred) "\203	 C\202\f \306	!\307\211\211\211\211\f\f\211A\f@\211\203s 	\203 @\211\211@;\203< \n@\202@ \nA@@)\232\203k \310\n!\203k \n@;\204d \311\n8\203d \311\n8@\312\232\203k \n\307\307\f\211A\210\202( \f.\207" [preferred handles handle type result h mm-preferred-alternative-precedence nil mm-automatic-display-p 4 "inline" p prec] 7 (#$ . 21628)])
#@75 Return the precedence based on HANDLES and `mm-discouraged-alternatives'.
(defalias 'mm-preferred-alternative-precedence #[(handles) "\306\307\"\237\310\n!\311\211\203B \f@\312	!\311\211\203: @\313\"\2031 \314	\"C\244A\211\204 *\fA\211\204 *	)\207" [handles seq mm-discouraged-alternatives disc #1=#:--dolist-temp--88913 elem mapcar mm-handle-media-type reverse nil copy-sequence string-match delete #2=#:--dolist-temp--88914] 5 (#$ . 22111)])
#@41 Return the handle(s) referred to by ID.
(defalias 'mm-get-content-id #[(id) "\302	\"A\207" [id mm-content-id-alist assoc] 3 (#$ . 22584)])
#@43 Return an image instance based on HANDLE.
(defalias 'mm-get-image #[(handle) "\305\211@;\203 @\202 A@@)\306\"A@)\307\211\310\232\203' \311\2022 \n\312\232\2031 \313\2022 \n\3148\206X \307\315\316\317!!\320\216r\fq\210\321!\210\322\323\324\217\211\314\233	\240\210,*\207" [handle spec type default-enable-multibyte-characters #1=#:temp-buffer split-string "/" nil "x-pixmap" "xpm" "x-xbitmap" "xbm" 6 get-buffer-create generate-new-buffer-name " *temp*" ((byte-code "\301!\203\n \302!\210\301\207" [#1# buffer-name kill-buffer] 2)) mm-insert-part #2=#:G88915 (byte-code "\304\305!\203 \305\306 \307!\310#\207\311\232\203, \312\313\314	\"!\315\216\316ed\n#\210\317\320\nBC!*\207\317\321\307!\306 #!\207" [type mm-tmp-directory file :data fboundp create-image buffer-string intern data-p "xbm" make-temp-name expand-file-name "emm.xbm" ((byte-code "\300\301\302\217\207" [#3=#:G88916 (delete-file file) ((error))] 3)) write-region make-glyph x vector] 5) ((error))] 5 (#$ . 22730)])
#@62 Say whether the image in HANDLE will fit the current window.
(defalias 'mm-image-fit-p #[(handle) "\306!\307\310!\203  \n\206; \310	!\311 W\205; \312	!\313 W\202; \314	!\211@A\n\206: \315 SW\205: \f\316 W+)\207" [handle image mm-inline-large-images size w h mm-get-image fboundp glyph-width window-pixel-width glyph-height window-pixel-height image-size window-height window-width] 3 (#$ . 23741)])
#@56 Say whether FORMAT can be displayed natively by Emacs.
(defalias 'mm-valid-image-format-p #[(format) "\301\302!\203\n \302!\207\301\303!\203 \304 \205 \303!\207\305\207" [format fboundp valid-image-instantiator-format-p image-type-available-p display-graphic-p nil] 2 (#$ . 24153)])
#@74 Say whether FORMAT can be displayed natively and HANDLE fits the window.
(defalias 'mm-valid-and-fit-image-p #[(format handle) "\302!\205	 \303	!\207" [format handle mm-valid-image-format-p mm-image-fit-p] 2 (#$ . 24446)])
(provide 'mm-decode)
