;ELC   
;;; Compiled by amu@quiche-lorraine.mit.edu on Thu Jan  6 19:18:08 2000
;;; from file /afs/sipb.mit.edu/contrib/emacs/packages/gnus-5.8.3/lisp/nnimap.el
;;; in Emacs version 20.4.1
;;; 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 "`nnimap.el' was compiled for Emacs 19.29 or later"))

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


(byte-code "\304\305!\210\304\306!\210\304\307!\210\304\310!\210\304\311!\210\304\312!\210\304\313!\210\304\314!\210\304\315!\210\316\317\320\321\"\321\211FB\316\322D	B\323\302B\321\207" [nnoo-definition-alist nnoo-state-alist nnimap-version current-load-list require imap nnoo nnmail nnheader mm-util gnus gnus-range gnus-start gnus-int nnimap mapcar #[(p) "C\207" [p] 1] nil "*internal-non-initialized-backend*" "nnimap 0.131"] 4)
#@74 Address of physical IMAP server.  If nil, use the virtual server's name.
(defvar nnimap-address nil (#$ . 1079))
(nnoo-define 'nnimap-address nil)
#@101 Port number on physical IMAP server.
If nil, defaults to 993 for SSL connections and 143 otherwise.
(defvar nnimap-server-port nil (#$ . 1233))
(nnoo-define 'nnimap-server-port nil)
#@114 If non-nil, do crossposting if several split methods match the mail.
If nil, the first match found will be used.
(defvar nnimap-split-crosspost t (#$ . 1422))
#@168 *Name of mailbox to split mail from.

Mail is read from this mailbox and split according to rules in
`nnimap-split-rules'.

This can be a string or a list of strings.
(defvar nnimap-split-inbox nil (#$ . -1588))
#@1241 *Mail will be split according to theese rules.

Mail is read from mailbox(es) specified in `nnimap-split-inbox'.

If you'd like, for instance, one mail group for mail from the
"gnus-imap" mailing list, one group for junk mail and leave
everything else in the incoming mailbox, you could do something like
this:

(setq nnimap-split-rule '(("INBOX.gnus-imap"   "From:.*gnus-imap")
			  ("INBOX.junk"        "Subject:.*buy")))

As you can see, `nnimap-split-rule' is a list of lists, where the first
element in each "rule" is the name of the IMAP mailbox, and the
second is a regexp that nnimap will try to match on the header to find
a fit.

The first element can also be a list.  In that case, the first element
is the server the second element is the group on that server in which
the matching article will be stored.

The second element can also be a function.  In that case, it will be
called narrowed to the headers with the first element of the rule as
the argument.  It should return a non-nil value if it thinks that the
mail belongs in that group.

This variable can also have a function as its value, the function will
be called with the headers narrowed and should return a group where it
thinks the article should be splitted to.
(defvar nnimap-split-rule nil (#$ . -1808))
#@39 Like `nnmail-split-fancy', which see.
(defvar nnimap-split-fancy nil (#$ . 3098))
#@11 Obsolete.
(defvar nnimap-auth-method nil (#$ . 3186))
(nnoo-define 'nnimap-auth-method nil)
#@495 How nnimap will connect to the server.

The default, nil, will try to use the "best" method the server can
handle.

Change this if

1) you want to connect with SSL.  The SSL integration with IMAP is
   brain-dead so you'll have to tell it specifically.

2) your server is more capable than your environment -- i.e. your
   server accept Kerberos login's but you haven't installed the
   `imtest' program or your machine isn't configured for Kerberos.

Possible choices: kerberos4, ssl, network
(defvar nnimap-stream nil (#$ . 3285))
(nnoo-define 'nnimap-stream nil)
#@460 How nnimap authenticate itself to the server.

The default, nil, will try to use the "best" method the server can
handle.

There is only one reason for fiddling with this variable, and that is
if your server is more capable than your environment -- i.e. you
connect to a server that accept Kerberos login's but you haven't
installed the `imtest' program or your machine isn't configured for
Kerberos.

Possible choices: kerberos4, cram-md5, login, anonymous.
(defvar nnimap-authenticator nil (#$ . 3858))
(nnoo-define 'nnimap-authenticator nil)
#@87 Directory to keep NOV cache files for nnimap groups.
See also `nnimap-nov-file-name'.
(defvar nnimap-directory (nnheader-concat gnus-directory "overview/") (#$ . 4409))
(nnoo-define 'nnimap-directory nil)
#@259 NOV cache base filename.
The group name and `nnimap-nov-file-name-suffix' will be appended.  A
typical complete file name would be
~/News/overview/nnimap.pdc.INBOX.ding.nov, or
~/News/overview/nnimap/pdc/INBOX/ding/nov if
`nnmail-use-long-file-names' is nil
(defvar nnimap-nov-file-name "nnimap." (#$ . 4621))
(nnoo-define 'nnimap-nov-file-name nil)
#@37 Suffix for NOV cache base filename.
(defvar nnimap-nov-file-name-suffix ".novcache" (#$ . 4977))
(nnoo-define 'nnimap-nov-file-name-suffix nil)
#@237 If non-nil, nnimap will never generate or use a local nov database for this backend.
Using nov databases will speed up header fetching considerably.
Unlike other backends, you do not need to take special care if you
flip this variable.
(defvar nnimap-nov-is-evil nil (#$ . 5128))
(nnoo-define 'nnimap-nov-is-evil nil)
#@522 Whether to expunge a group when it is closed.
When a IMAP group with articles marked for deletion is closed, this
variable determine if nnimap should actually remove the articles or
not.

If always, nnimap always perform a expunge when closing the group.
If never, nnimap never expunges articles marked for deletion.
If ask, nnimap will ask you if you wish to expunge marked articles.

When setting this variable to `never', you can only expunge articles
by using `G x' (gnus-group-nnimap-expunge) from the Group buffer.
(defvar nnimap-expunge-on-close 'always (#$ . 5453))
(nnoo-define 'nnimap-expunge-on-close nil)
#@526 A string LIMIT or list of strings with mailbox wildcards used to limit available groups.
See below for available wildcards.

The LIMIT string can be a cons cell (REFERENCE . LIMIT), where
REFERENCE will be passed as the first parameter to LIST/LSUB.  The
semantics of this are server specific, on the University of Washington
server you can specify a directory.

Example:
 '("INBOX" "mail/*" ("~friend/mail/" . "list/*"))

There are two wildcards * and %. * matches everything, % matches
everything in the current hierarchy.
(defvar nnimap-list-pattern "*" (#$ . 6077))
(nnoo-define 'nnimap-list-pattern nil)
#@591 IMAP support a news-like mode, also known as bulletin board mode, where replies is sent via IMAP instead of SMTP.

This variable should contain a regexp matching groups where you wish
replies to be stored to the mailbox directly.

Example:
  '("^[^I][^N][^B][^O][^X].*$")

This will match all groups not beginning with "INBOX".

Note that there is nothing technically different between mail-like and
news-like mailboxes.  If you wish to have a group with todo items or
similar which you wouldn't want to set up a mailing list for, you can
use this to make replies go directly to the group.
(defvar nnimap-news-groups nil (#$ . 6693))
(nnoo-define 'nnimap-news-groups nil)
#@34 Obsolete.  Use `nnimap-address'.
(defvar nnimap-server-address nil (#$ . 7371))
(nnoo-define 'nnimap-server-address nil)
#@64 Authorization information for IMAP servers.  In .netrc format.
(custom-declare-variable 'nnimap-authinfo-file '"~/.authinfo" '(#$ . 7498) :type '(choice file (repeat :tag "Entries" :menu-tag "Inline" (list :format "%v" :value ("" ("login" . "") ("password" . "")) (string :tag "Host") (checklist :inline t (cons :format "%v" (const :format "" "login") (string :format "Login: %v")) (cons :format "%v" (const :format "" "password") (string :format "Password: %v")))))))
#@104 If non-nil, nnimap check whether articles still exist on server before using data stored in NOV cache.
(custom-declare-variable 'nnimap-prune-cache 't '(#$ . 7974) :type 'boolean)
#@166 Method to use to request a list of all folders from the server.
If this is 'imap-mailbox-lsub, then use a server-side subscription list to
restrict visible folders.
(defvar nnimap-request-list-method 'imap-mailbox-list (#$ . 8161))
(byte-code "\306\300!\204 \307\300	B\306\302!\204 \307\302	B\306\303!\204  \307\303	B\306\304!\204, \307\304	B\310	B\306\305!\204< \311\305	B\306\312!\204I \313\n\312	B\314	B\307\207" [nnimap-debug current-load-list nnimap-current-move-server nnimap-current-move-group nnimap-current-move-article nnimap-progress-chars boundp nil nnimap-length (124 47 45 92) nnimap-progress-how-often 20 nnimap-counter] 2)
#@61 Gnus callback the nnimap asynchronous callback should call.
(defvar nnimap-callback-callback-function nil (#$ . 8822))
#@73 Which buffer the asynchronous article prefetch callback should work in.
(defvar nnimap-callback-buffer nil (#$ . 8947))
(byte-code "\304\300!\204 \305\300	B\304\302!\204 \305\302	B\304\303!\204  \305\303	B\306\307!\207" [nnimap-server-buffer-alist current-load-list nnimap-current-server nnimap-server-buffer boundp nil nnoo-define-basics-1 nnimap] 2)
#@54 Return buffer for SERVER, if nil use current server.
(defalias 'nnimap-get-server-buffer #[(server) "\303\206 	\n\"A@\207" [server nnimap-current-server nnimap-server-buffer-alist assoc] 3 (#$ . 9313)])
(put 'nnimap-get-server-buffer 'byte-optimizer 'byte-compile-inline-expand)
#@116 Return buffer for SERVER, changing the current server as a side-effect.
If SERVER is nil, uses the current server.
(defalias 'nnimap-possibly-change-server #[(server) "\206 	\211\304\206 	\n\"A@)\211\207" [server nnimap-current-server nnimap-server-buffer-alist nnimap-server-buffer assoc] 4 (#$ . 9601)])
#@65 Verify stored uidvalidity match current one in GROUP on SERVER.
(defalias 'nnimap-verify-uidvalidity #[(group server) "\305\306\307\310	\"!\"\311\312!\313\n\312\"\211\203' \f\232\205/ \314\n\312#\210\315\202/ \316\n\312B\"\210\315+\207" [group server gnusgroup new-uidvalidity old-uidvalidity gnus-group-prefixed-name gnus-server-to-method format "nnimap:%s" imap-mailbox-get uidvalidity gnus-group-get-parameter gnus-group-set-parameter t gnus-group-add-parameter] 7 (#$ . 9920)])
#@113 Find lowest and highest active article nummber in GROUP.
If EXAMINE is non-nil the group is selected read-only.
(defalias 'nnimap-find-minmax-uid #[(group &optional examine) "rq\210\305	\n\"\205* \306\211\307\310!\311V\203# \312\313\314\306\315$\210\316\317\320\"\210\307\310!\fE*)\207" [nnimap-server-buffer group examine maxuid minuid imap-mailbox-select nil imap-mailbox-get exists 0 imap-fetch "1,*" "UID" nouidfetch imap-message-map #[(uid Uid) "\203\n 	^\202 	\n\203 \n	]\202 	\211\207" [minuid uid maxuid] 2] UID] 5 (#$ . 10416)])
#@62 Make GROUP the current group, and SERVER the current server.
(defalias 'nnimap-possibly-change-group #[(group &optional server) "\305!\205O r	q\210\n\203 \306\n!\203 \202N \307\n!\203I \310\n\206% \f\"\204; \311\312\n\"\313U\204; \314\315\316\n\"!\203? \202N \317 \210\320\321\n\"\202N \322\323\324 \")\207" [server nnimap-server-buffer group imap-current-mailbox nnimap-current-server nnimap-possibly-change-server imap-current-mailbox-p imap-mailbox-select nnimap-verify-uidvalidity imap-mailbox-get exists 0 yes-or-no-p format "nnimap: Group %s is not uidvalid.  Continue? " imap-mailbox-unselect error "nnimap: Group %s is not uid-valid." nnheader-report nnimap imap-error-text] 4 (#$ . 10971)])
#@56 Return STRING with all whitespace replaced with space.
(defalias 'nnimap-replace-whitespace #[(string) "\205 \301\302\"\203 \303\304\305\211$\202 \207" [string string-match "[\n	]+" replace-match " " t] 5 (#$ . 11683)])
#@72 Hook to insert NOV line for current article into `nntp-server-buffer'.
(defalias 'nnimap-retrieve-headers-progress #[nil "\247\203% \306	T\211\n\246!\203% V\203% \307\310\311	\fG\n_\246\n\245\f8#\210rq\210\312\211\211\211 !\"r#q\210$\313\314!\203O \315\316\317\"@8\202T \316\320\"\"\321rpq\210\316$\322\")!!\316$\323\" )\324\325\326\327!!%\330\216r%q\210\331 \210\"c\210\332 \210\333\334!\211&\335I\210&\310 I\210&\336!I\210&,!-\207" [nnmail-large-newsgroup nnimap-counter nnimap-progress-how-often nnimap-length nnimap-progress-chars nntp-server-buffer zerop nnheader-message 6 "nnimap: Retrieving headers... %c" nil imap-capability IMAP4rev1 2 imap-message-get BODYDETAIL RFC822\.HEADER imap-body-lines BODY RFC822\.SIZE nnheader-insert-nov get-buffer-create generate-new-buffer-name " *temp*" ((byte-code "\301!\203\n \302!\210\301\207" [#1=#:temp-buffer buffer-name kill-buffer] 2)) buffer-disable-undo nnheader-ms-strip-cr nnheader-parse-head naked 0 7 uid chars lines headers nnimap-server-buffer imap-current-message #1# head] 7 (#$ . 11918)])
#@67 Get a range of articles to fetch based on ARTICLES and FETCH-OLD.
(defalias 'nnimap-retrieve-which-headers #[(articles fetch-old) "rq\210	\242\247\2031 \303\304\305\306\307\310\n\205' \n\247\203\" \311	@\nZ]\202# \311	@SB!	\"!!P!\2025 \312\313	\")\207" [nnimap-server-buffer articles fetch-old imap-search "UID " nnimap-range-to-string gnus-compress-sequence append gnus-uncompress-sequence 1 mapcar #[(msgid) "\301\302\303\"!\207" [msgid imap-search format "HEADER Message-Id %s"] 4]] 9 (#$ . 13011)])
#@36 Make pathname for GROUP on SERVER.
(defalias 'nnimap-group-overview-filename #[(group server) "\306\307!!\310	\n\311\232\203 \312\202 \n\313\f\260\314\"\204* \315P!\2031 P\202= \316\317\320\321#\"P*\207" [nnimap-directory nnimap-nov-file-name server group nnimap-nov-file-name-suffix file file-name-as-directory expand-file-name nnheader-translate-file-chars "" "unnamed" "." t file-exists-p mm-encode-coding-string nnheader-replace-chars-in-string 46 47 dir nnmail-use-long-file-names nnmail-pathname-coding-system] 7 (#$ . 13522)])
(defalias 'nnimap-retrieve-headers-from-file #[(group server) "rq\210\306	\n\"\307!\205G \310!\210\311\312!\210eb\210m?\205\" \313p!db\210\314y\210o?\2050 \313p!\211\247\203B \f\247\203B \fB\202F \315 \210\312**\207" [nntp-server-buffer group server nov max min nnimap-group-overview-filename file-exists-p mm-insert-file-contents set-buffer-modified-p nil read -1 erase-buffer] 4])
(defalias 'nnimap-retrieve-headers-from-server #[(articles group server) "rq\210\306\307	!\310\311\312	!\313\314\315\316!\"\317\320!\203' \321\322\"\202, \321\323\")P\"\210\247\205A V\205A \324\325\326\",\207" [nnimap-server-buffer articles nnimap-counter nnimap-length imap-fetch-data-hook nnmail-extra-headers (nnimap-retrieve-headers-progress) gnus-range-length 0 imap-fetch nnimap-range-to-string "(UID RFC822.SIZE BODY " append (Subject From Date Message-Id References In-Reply-To Xref) copy-sequence imap-capability IMAP4rev1 format "BODY.PEEK[HEADER.FIELDS %s])" "RFC822.HEADER.LINES %s)" nnheader-message 6 "nnimap: Retrieving headers...done" headers nnmail-large-newsgroup] 7])
(defalias 'nnimap-use-nov-p #[(group server) "\206$ 	\206$ \304\305\306\n\"!!\205 \307\306\n\"!?\205$ \310\311\306\n\"\"\207" [gnus-nov-is-evil nnimap-nov-is-evil group server gnus-make-directory file-name-directory nnimap-group-overview-filename file-writable-p message "nnimap: Nov cache not writable, %s"] 5])
(defalias 'nnimap-retrieve-headers #[(articles &optional group server fetch-old) "\306	\"\205\322 r\nq\210\307 \210\310	\"\203  \311\312!	#\210\202\320 \313\211\211\211\314\"\211@\315!@\211\203\317 \316	\"\211\203\262 @W\203^ eb\210\311@SB	#\210\fAV\203t db\210\311AT\fB	#\210\203\272 eb\210\317\"\313 \211!\203\256 !@ \320\321\322 \"\313\323#\203\245 \324y\210`\325y\210`|\210!A\211!\204\212 *\202\272 \311\fB	#\210\326 \203\312 \327\325d\330	\"\313\331%\210\332\f\"\210,)\333\207" [group server nntp-server-buffer articles high low nnimap-possibly-change-group erase-buffer nnimap-use-nov-p nnimap-retrieve-headers-from-server gnus-compress-sequence nil nnimap-retrieve-which-headers last nnimap-retrieve-headers-from-file gnus-set-difference re-search-forward format "^%d	" t 0 1 buffer-modified-p nnmail-write-region nnimap-group-overview-filename nomesg nnheader-nov-delete-outside-range nov cached uids fetch-old nnimap-prune-cache uid #1=#:--dolist-temp--82146] 7])
(nnoo-register-function 'nnimap-retrieve-headers)
(defalias 'nnimap-open-connection #[(server) "\306	\n\f%\204 \307\310\311#\207\312\313\f\"\204( \312\314\f\"\204( \315\f!\210\307\310\316#\210\317\211\211\211\320\321!\203h \321!\322\323\"\324\"\203S \323\"\206X \323\"\322\325\"\322\326\"\327\f#\203\202 \fD B\211 \330!\210\202\217 \315\f!\210\331\f!\210\307\310\332#,\207" [nnimap-address nnimap-server-port nnimap-stream nnimap-authenticator nnimap-server-buffer server imap-open nnheader-report nnimap "Can't open connection to server %s" imap-capability IMAP4 IMAP4rev1 imap-close "Server %s is not IMAP4 compliant" nil fboundp gnus-parse-netrc gnus-netrc-get gnus-netrc-machine "machine" "login" "password" imap-authenticate nnimap-possibly-change-server kill-buffer "Could not authenticate to %s" passwd user alist list nnimap-authinfo-file nnimap-server-buffer-alist] 6])
(defalias 'nnimap-open-server #[(server &optional defs) "\303 \210\304!\203 \305\207\302	\236\204 \302\306PD	B\307	\236\2048 \310	\236\2032 \307\310	\236A@D	B\2028 \307D	B\311\312	#\210\n\203H \313\n!\206K \314!\207" [server defs nnimap-server-buffer nnheader-init-server-buffer nnimap-server-opened t " *nnimap* " nnimap-address nnimap-server-address nnoo-change-server nnimap imap-opened nnimap-open-connection] 4])
(nnoo-register-function 'nnimap-open-server)
#@214 Whether SERVER is opened.
If SERVER is the current virtual server, and the connection to the
physical server is alive, this function return a non-nil value.  If
SERVER is nil, it is treated as the current server.
(defalias 'nnimap-server-opened #[(&optional server) "\204 	\205\" \303\304\206 	\"\205\" \305\306\206 	\n\"A@)!\207" [server nnimap-current-server nnimap-server-buffer-alist nnoo-server-opened nnimap imap-opened assoc] 4 (#$ . 17915)])
(nnoo-register-function 'nnimap-server-opened)
#@129 Close connection to server and free all resources connected to it.
Return nil if the server couldn't be closed for some reason.
(defalias 'nnimap-close-server #[(&optional server) "\206 	\304!\204 \305\306\206 	\n\"A@)!\203G \307\306\206' 	\n\"A@)!\210\310\306\2067 	\n\"A@)!\210\311\311\312\n\"\313\314\")\207" [server nnimap-current-server nnimap-server-buffer-alist nnimap-server-buffer nnimap-server-opened imap-opened assoc imap-close kill-buffer nil delq nnoo-close-server nnimap] 4 (#$ . 18427)])
(nnoo-register-function 'nnimap-close-server)
#@263 Close connection to all servers and free all resources that the backend have reserved.
All buffers that have been created by that
backend should be killed.  (Not the nntp-server-buffer, though.) This
function is generally only called when Gnus is shutting down.
(defalias 'nnimap-request-close #[nil "\301\302\"\210\303\211\207" [nnimap-server-buffer-alist mapcar #[(server) "\301@!\207" [server nnimap-close-server] 2] nil] 3 (#$ . 19004)])
(nnoo-register-function 'nnimap-request-close)
#@59 This function returns the last error message from server.
(defalias 'nnimap-status-message #[(&optional server) "\301!\205\n \302\303\"\207" [server nnimap-possibly-change-server nnoo-status-message nnimap] 3 (#$ . 19502)])
(nnoo-register-function 'nnimap-status-message)
(defalias 'nnimap-demule #[(string) "\301\302!\203 \303\302K!\203 \302\202 \304\206 \305!\207" [string fboundp string-as-multibyte subrp identity ""] 2])
(defalias 'nnimap-callback #[nil "\303\304\305\"\210rq\210r	q\210\306\307\310 \311\"!)c\210\312 \210\n\313!)\207" [nnimap-callback-buffer nnimap-server-buffer nnimap-callback-callback-function remove-hook imap-fetch-data-hook nnimap-callback nnimap-demule imap-message-get imap-current-message RFC822 nnheader-ms-strip-cr t] 4])
(defalias 'nnimap-request-article-part #[(article part prop &optional group server to-buffer) "\306	\"\205v \n;\203 \307\310\311\n\"\"\242\202 \n\211\205u \312\313\314\n#\210\f\204^ r\206. q\210\315 \210\316\317\n\320%!c\210\321 \210\312\313\322\n#\210o\203W \323\324\325\326!#\202Z \nB)\202u \327\330\331\"\210\f\332\n\320$\210\nB)\207" [group server article nnimap-server-buffer nnheader-callback-function to-buffer nnimap-possibly-change-group imap-search format "HEADER Message-Id %s" gnus-message 9 "nnimap: Fetching (part of) article %d..." erase-buffer nnimap-demule imap-fetch nil nnheader-ms-strip-cr "nnimap: Fetching (part of) article %d...done" nnheader-report nnimap "No such article: %s" imap-error-text add-hook imap-fetch-data-hook nnimap-callback imap-fetch-asynch nntp-server-buffer part prop nnimap-callback-callback-function nnimap-callback-buffer] 8])
(defalias 'nnimap-asynchronous-p #[nil "\300\207" [t] 1])
(nnoo-register-function 'nnimap-asynchronous-p)
(defalias 'nnimap-request-article #[(article &optional group server to-buffer) "\304\305\306	\n&\207" [article group server to-buffer nnimap-request-article-part "RFC822.PEEK" RFC822] 7])
(nnoo-register-function 'nnimap-request-article)
(defalias 'nnimap-request-head #[(article &optional group server to-buffer) "\304\305\306	\n&\207" [article group server to-buffer nnimap-request-article-part "RFC822.HEADER" RFC822\.HEADER] 7])
(nnoo-register-function 'nnimap-request-head)
(defalias 'nnimap-request-body #[(article &optional group server to-buffer) "\304\305\306	\n&\207" [article group server to-buffer nnimap-request-article-part "RFC822.TEXT.PEEK" RFC822\.TEXT] 7])
(nnoo-register-function 'nnimap-request-body)
(defalias 'nnimap-request-group #[(group &optional server fast) "\305\306\307\310\311\312\313	\"!\"\n\"J8	#\210\314	\"\205Y \315\f\203% \202X \316\317\"\211\2046 \320\321\322#\202X \323\324@\206> \325\326A@\206F \326]\3068\206N \325%\210\320\321\327#\210\317)\207" [group server gnus-newsrc-hashtb info fast nnimap-request-update-info-internal 2 intern-soft gnus-group-prefixed-name gnus-server-to-method format "nnimap:%s" nnimap-possibly-change-group nil nnimap-find-minmax-uid t nnheader-report nnimap "Could not get active info for %s" nnheader-insert "211 %d %d %d %s\n" 0 1 "Group %s selected"] 10])
(nnoo-register-function 'nnimap-request-group)
(defalias 'nnimap-close-group #[(group &optional server) "rq\210\305 \205H \306	\n\"\205H \307>\203 \310 \210\311 \210\202F \312>\203C \313\314!\203= \315\316\317\f\"!\203= \310 \210\311 \210\202F \320 \210\202F \320 \210\f?)\207" [nnimap-server-buffer group server nnimap-expunge-on-close imap-current-mailbox imap-opened nnimap-possibly-change-group 'always imap-mailbox-expunge imap-mailbox-close 'ask imap-search "DELETED" gnus-y-or-n-p format "Expunge articles in group `%s'? " imap-mailbox-unselect] 4])
(defalias 'nnimap-pattern-to-list-arguments #[(pattern) "\301\302<\203 A<\203 \202 C\"\207" [pattern mapcar #[(p) "\242\243\206 B\207" [p] 2]] 3])
(defalias 'nnimap-request-list #[(&optional server) "\306!\205\241 r	q\210\307 \210)\310\311\312G\313V\203 \314P\202 \315#\210r\nq\210\316!\317\211\203\214 @\fA\f@\"\317\211\203\204 @\320\321\322\"\235\204{ \323\324\"\211\203z r	q\210\325\326\3278\206l \313\330A@\206u \330]$c\210))A\211\204B *A\211\204/ +\310\311\331G\313V\203\235 \314P\202\236 \315#\210\332\207" [server nntp-server-buffer nnimap-server-buffer nnimap-list-pattern pattern #1=#:--dolist-temp--82147 nnimap-possibly-change-server erase-buffer gnus-message 5 "nnimap: Generating active list%s..." 0 " for " "" nnimap-pattern-to-list-arguments nil "\\NoSelect" imap-mailbox-get list-flags nnimap-find-minmax-uid examine format "\"%s\" %d %d y\n" 2 1 "nnimap: Generating active list%s...done" t nnimap-request-list-method mbx #2=#:--dolist-temp--82148 info] 8])
(nnoo-register-function 'nnimap-request-list)
(defalias 'nnimap-request-post #[(&optional server) "\306\307\310\311!!\312\211\203\\ \n@\313	\"\314\f\"J\204I \315\f!\204I \316\317\320\f\"!\203D \321\f\"\203= \315\f\312\211$\204I \322\323\f\"\204I \322\324\f\"\210\325	A@\"\204T \312)\nA\211\204 \312+\207" [success mbx #1=#:--dolist-temp--82149 gnus-command-method to-newsgroup gnus-active-hashtb t message-tokenize-header message-fetch-field "Newsgroups" nil gnus-group-prefixed-name intern-soft gnus-activate-group gnus-y-or-n-p format "No such group: %s.  Create it? " gnus-request-create-group error "Couldn't create group %s" "No such group: %s" nnimap-request-accept-article] 6])
(nnoo-register-function 'nnimap-request-post)
(defalias 'nnimap-retrieve-groups #[(groups &optional server) "\306!\205Z \307\310\311\"\210r	q\210\312 \210\n\313\211\203S \f@\307\314\315#\210\316\317\320#\235\204L \321\322\"\323\324\3258\206> \326\327A@\206G \327]$c\210)\fA\211\204 +\307\310\330\"\210\331\207" [server nntp-server-buffer groups group #1=#:--dolist-temp--82150 nnimap-server-buffer nnimap-possibly-change-server gnus-message 5 "nnimap: Checking mailboxes..." erase-buffer nil 7 "nnimap: Checking mailbox %s" "\\NoSelect" imap-mailbox-get list-flags nnimap-find-minmax-uid examine format "\"%s\" %d %d y\n" 2 0 1 "nnimap: Checking mailboxes...done" active info] 7])
(nnoo-register-function 'nnimap-retrieve-groups)
(defalias 'nnimap-request-update-info-internal #[(group info &optional server) "\306	\"\205l \n\205l rq\210\307\310\311\n@#\210\312\313!\203] \314\211\315\316\n8!\317\320!\321\f\"\322\317\323!\"\324\325\"\326\327\"\211@\250\203T A\204T @@BC\202U \nAA\240\210*\330\331\"\210\307\310\332\n@#\210\n)\207" [group server info nnimap-server-buffer unseen seen nnimap-possibly-change-group gnus-message 5 "nnimap: Updating info for %s..." nnimap-mark-permanent-p read nil gnus-uncompress-range 2 imap-search "UNSEEN UNDELETED" gnus-set-difference append "SEEN" sort < gnus-compress-sequence t mapcar #[(pred) "\302A!\205% \303A!\304\305!\235\205% \306	\307A\310\311\312A!!!\313	8#\313#\207" [pred info nnimap-mark-permanent-p nnimap-mark-to-flag imap-mailbox-get flags gnus-info-set-entry nnimap-update-alist-soft gnus-compress-sequence imap-search nnimap-mark-to-predicate 3] 8] "nnimap: Updating info for %s...done" gnus-article-mark-lists] 5])
(nnoo-register-function 'nnimap-request-update-info-internal)
(defalias 'nnimap-request-type #[(group &optional article) "\203 \302	\"\203 \303\207\304\207" [nnimap-news-groups group string-match news mail] 3])
(nnoo-register-function 'nnimap-request-type)
(defalias 'nnimap-request-set-mark #[(group actions &optional server) "\306	\"\203\232 r\nq\210\307\310\311\312#\210\f\211A@\211\203\223 @A@\3138\307\314\315\"\316>\203A \317B\320\321\"\210\203\217 \203\217 \322=\203f \323\324!\325\307\326#\"\210\202\217 \327=\203| \330\324!\325\307\326#\"\210\202\217 \331=\203\217 \332\324!\325\307\326#\"\210,\202 \310\311\333#\210*\307\207" [group server nnimap-server-buffer action actions marks nnimap-possibly-change-group nil gnus-message 7 "nnimap: Setting marks in %s..." 2 delq cache dormant tick mapcar #[(mark) "\302\303!!\205 	B\211\207" [mark marks imap-message-flag-permanent-p nnimap-mark-to-flag] 3] del imap-message-flags-del nnimap-range-to-string nnimap-mark-to-flag t add imap-message-flags-add set imap-message-flags-set "nnimap: Setting marks in %s...done" cmdmarks what range] 6])
(nnoo-register-function 'nnimap-request-set-mark)
#@55 Like nnmail-split-fancy, but uses nnimap-split-fancy.
(defalias 'nnimap-split-fancy #[nil "\301 )\207" [nnimap-split-fancy nnmail-split-fancy] 1 (#$ . 27824)])
(defalias 'nnimap-split-to-groups #[(rules) "rq\210eb\210\304\305\306\307#\203 \310\311\307\211#\210\202 \312	!\203# 	 \202+ \306\211\313\314\215*)\207" [nntp-server-buffer rules regrepp to-groups re-search-forward "\\(?\n[ 	]+\\)+" nil t replace-match " " functionp split-done (byte-code "\306\211\203X \n@\211@	A@eb\210;\203' \307\310\f\"\311\306\312#\202* \f!\203P \313\f\"\204P \203? \314\f!\202@ \fB\204P \315\316\"\210*\nA\211\204 \306*\207" [rules rule #1=#:--dolist-temp--82151 regexp group regrepp nil string-match "\\\\[0-9&]" re-search-forward t assoc nnmail-expand-newtext throw split-done to-groups nnimap-split-crosspost] 5)] 4])
(defalias 'nnimap-split-find-rule #[(server inbox) "\207" [nnimap-split-rule] 1])
(defalias 'nnimap-split-find-inbox #[(server) "<\203 \207C\207" [nnimap-split-inbox] 1])
(defalias 'nnimap-split-articles #[(&optional group server) "\306!\205\272 r	q\210\307\211\211\310!\n\211A@\211\203\270 \311\f!\203\270 \312\f\"\211\203\251 \313\314!\307\211\203\250 @\315!\203\237 \307\316!\307 \211!\203\221 !@ \317\320! \307\321$\203~ \322\323\f %\210\324 \325BC\"B\"\202\210 \322\326\f %\210!A\211!\204S *\203\237 \327\330\331\"\332\"\210A\211\2049 *\333\f!\203 \334 \210\335 \210\202 -\324\207" [server nnimap-server-buffer inboxes removeorig inbox rule nnimap-possibly-change-server nil nnimap-split-find-inbox nnimap-possibly-change-group nnimap-split-find-rule imap-search "UNSEEN UNDELETED" nnimap-request-head nnimap-split-to-groups imap-message-copy number-to-string nocopyuid message "IMAP split moved %s:%s:%d to %s" t 0 "IMAP split failed to move %s:%s:%d to %s" imap-message-flags-add format "%d" "\\Seen \\Deleted" imap-mailbox-select imap-mailbox-expunge imap-mailbox-close article #1=#:--dolist-temp--82152 to-group #2=#:--dolist-temp--82153 nnmail-split-history] 8])
(defalias 'nnimap-request-scan #[(&optional group server) "\302	\"\207" [group server nnimap-split-articles] 3])
(nnoo-register-function 'nnimap-request-scan)
(defalias 'nnimap-request-newgroups #[(date &optional server) "\306!\205\230 r	q\210\307\310\311G\312V\203 \313\202 \314$\210\315 \210\316\n!\317\211\203\203 \f@\320\321@\317$\317\211\203{ @\322\323\324\325#\"\204r \326\327\"\211 \203q \330\331\332 8\206d \312\333 A@\206m \333]$c\210)A\211\204< *\fA\211\204) *\307\310\334G\312V\203\222 \313\202\223 \314$\210)\335\207" [server nntp-server-buffer nnimap-list-pattern pattern #1=#:--dolist-temp--82154 nnimap-server-buffer nnimap-possibly-change-server gnus-message 5 "nnimap: Listing subscribed mailboxes%s%s..." 0 " on " "" erase-buffer nnimap-pattern-to-list-arguments nil imap-mailbox-lsub "*" member-if #[(mailbox) "\227\301\230\207" [mailbox "\\noselect"] 2] imap-mailbox-get list-flags nnimap-find-minmax-uid examine format "\"%s\" %d %d y\n" 2 1 "nnimap: Listing subscribed mailboxes%s%s...done" t mbx #2=#:--dolist-temp--82155 info] 8])
(nnoo-register-function 'nnimap-request-newgroups)
(defalias 'nnimap-request-create-group #[(group &optional server args) "\303!\205 \304	\305\n#\206 \306	\n\"\207" [server group nnimap-server-buffer nnimap-possibly-change-server imap-mailbox-status uidvalidity imap-mailbox-create] 4])
(nnoo-register-function 'nnimap-request-create-group)
#@32 Return TIME for TIME1 - TIME2.
(defalias 'nnimap-time-substract #[(time1 time2) "@	@ZA@	A@Z\211\304W\203  \nS\305\306\307\"\\D\202# \nD*\207" [time1 time2 ms ls 0 expt 2 16] 5 (#$ . 31334)])
#@60 Return date, in format "3-Aug-1998", for DAYSAGO days ago.
(defalias 'nnimap-date-days-ago #[(daysago) "\302\303\304\305 \306!\"\"\307	!\310=\203 	\311\312O\202 	)\207" [daysago date format-time-string "%d-%b-%Y" nnimap-time-substract current-time days-to-time string-to-char 48 1 nil] 6 (#$ . 31537)])
(defalias 'nnimap-request-expire-articles-progress #[nil "\301\302\303#\207" [imap-current-message gnus-message 5 "nnimap: Marking article %d for deletion..."] 4])
(defalias 'nnimap-request-expire-articles #[(articles group &optional server force) "\306!\211\203y \307\n\"\203y r\fq\210\203% \310\311	!\312\"\203x \313\202x \2031 \n!\2063 \211\314=\203I \310\311	!\312\"\203w \313\202w \247\203w \315\316\317\311	!\320!#!\321\211\203v \310\311\306!!\312\"\203v \322\"*)))\207" [articles artseq group server nnimap-server-buffer force gnus-compress-sequence nnimap-possibly-change-group imap-message-flags-add nnimap-range-to-string "\\Deleted" nil immediate imap-search format "UID %s NOT SINCE %s" nnimap-date-days-ago (nnimap-request-expire-articles-progress) gnus-set-difference nnmail-expiry-wait-function nnmail-expiry-wait days imap-fetch-data-hook oldarts] 7])
(nnoo-register-function 'nnimap-request-expire-articles)
(defalias 'nnimap-request-move-article #[(article group server accept-form &optional last) "\306!\205F \212\307\310!	\n\311\312	\n#\203C \212q\210\313p!\210\314!\210\315!\316!\210\f)\203C \317	C\n\320$\210\f.\207" [server article group nnimap-current-server result nnimap-current-move-server nnimap-possibly-change-server get-buffer-create " *nnimap move*" nil nnimap-request-article buffer-disable-undo insert-buffer-substring eval kill-buffer nnimap-request-expire-articles t nnimap-current-move-group nnimap-current-move-article buf nntp-server-buffer accept-form] 5])
(nnoo-register-function 'nnimap-request-move-article)
(defalias 'nnimap-request-accept-article #[(group &optional server last) "\306!\205] \307\n\230\203\" \310\f!\205G \311\312!\313\307%\202G rpq\210eb\210\314\315\307\316#\2038 \317\320!\210\202) )\321!\210\322p\307\211%\211\203U 	A@B\202\\ \323\324\325!\")\207" [server uid nnimap-current-server nnimap-current-move-server nnimap-current-move-group nnimap-current-move-article nnimap-possibly-change-server nil nnimap-possibly-change-group imap-message-copy number-to-string dontcreate search-forward "\n" t replace-match "\n" imap-mailbox-unselect imap-message-append nnheader-report nnimap imap-error-text group nnimap-server-buffer] 6])
(nnoo-register-function 'nnimap-request-accept-article)
(defalias 'nnimap-request-delete-group #[(group force &optional server) "\304!\205 r	q\210\n\203 \305\306\"?\206 \307!\202 \310)\207" [server nnimap-server-buffer force group nnimap-possibly-change-server imap-mailbox-status uidvalidity imap-mailbox-delete t] 3])
(nnoo-register-function 'nnimap-request-delete-group)
(defalias 'nnimap-request-rename-group #[(group new-name &optional server) "\304!\205 \305	\n#\207" [server group new-name nnimap-server-buffer nnimap-possibly-change-server imap-mailbox-rename] 4])
(nnoo-register-function 'nnimap-request-rename-group)
(defalias 'nnimap-expunge #[(mailbox server) "\303	\"\205\n \304\n!\207" [mailbox server nnimap-server-buffer nnimap-possibly-change-group imap-mailbox-expunge] 3])
(defalias 'nnimap-acl-get #[(mailbox server) "\303!\205\n \304	\n\"\207" [server mailbox nnimap-server-buffer nnimap-possibly-change-server imap-mailbox-acl-get] 3])
(defalias 'nnimap-acl-edit #[(mailbox method old-acls new-acls) "\304A@!\205# \305\306	\"\204 \307\310!\210r	q\210\311\312\n\"\210\311\313\"\210)\314\207" [method nnimap-server-buffer old-acls new-acls nnimap-possibly-change-server imap-capability ACL error "Your server does not support ACL editing" mapcar #[(old-acl) "\303@	\"?\205 \304@\n\"\206 \305\306@\"\207" [old-acl new-acls mailbox assoc imap-mailbox-acl-delete error "Can't delete ACL for %s"] 3] #[(new-acl) "A\305@	\"A\n\205 \205 \n\230?\205( \306@\f#\206( \307\310@#*\207" [new-acl old-acls old-rights new-rights mailbox assoc imap-mailbox-acl-set error "Can't set ACL for %s to %s"] 4] t] 3])
(byte-code "\303\304\305B\"\301\nB\303\207" [gnus-article-mark-lists nnimap-mark-to-predicate-alist current-load-list mapcar #[(pair) "\301A\302\"\206 A\303\304\305A!\"B\207" [pair assoc ((read . "SEEN") (tick . "FLAGGED") (draft . "DRAFT") (reply . "ANSWERED")) format "KEYWORD gnus-%s" symbol-name] 5] (read . read)] 4)
#@186 Convert a Gnus mark (a symbol such as read, tick, expire) to a IMAP predicate.
This is a string such as "SEEN", "FLAGGED", "KEYWORD gnus-expire",
to be used within a IMAP SEARCH query.
(defalias 'nnimap-mark-to-predicate #[(pred) "	\236A\207" [pred nnimap-mark-to-predicate-alist] 2 (#$ . 36090)])
(byte-code "\303\304\305B\"\301\nB\303\207" [gnus-article-mark-lists nnimap-mark-to-flag-alist current-load-list mapcar #[(pair) "\301A\302\"\206 A\303\304\305A!\"B\207" [pair assoc ((read . "\\Seen") (tick . "\\Flagged") (draft . "\\Draft") (reply . "\\Answered")) format "gnus-%s" symbol-name] 5] (read . read)] 4)
(defalias 'nnimap-mark-to-flag-1 #[(preds) "\203 <\203 \302@!\302A!B\207\303	\"A\207" [preds nnimap-mark-to-flag-alist nnimap-mark-to-flag assoc] 3])
#@173 Convert a Gnus mark (a symbol such as read, tick, expire) to a IMAP flag.
This is a string such as "\Seen", "\Flagged", "gnus-expire", to
be used in a STORE FLAGS command.
(defalias 'nnimap-mark-to-flag #[(preds &optional always-list make-string) "\304!\n\204\f \203 	<\204 	C\202 	\n\203$ \305\306	\307#\202% 	)\207" [preds result make-string always-list nnimap-mark-to-flag-1 mapconcat #[(flag) "<\203 \301\302\303#\207\207" [flag mapconcat identity " "] 4] " "] 4 (#$ . 36877)])
#@91 Return t iff MARK can be permanently (between IMAP sessions) saved on articles, in GROUP.
(defalias 'nnimap-mark-permanent-p #[(mark &optional group) "\301\302!!\207" [mark imap-message-flag-permanent-p nnimap-mark-to-flag] 3 (#$ . 37376)])
#@304 Delete by side effect any elements of LIST whose car is `equal' to KEY.
The modified LIST is returned.  If the first member
of LIST has a car that is `equal' to KEY, there is no way to remove it
by side effect; therefore, write `(setq foo (remassoc key foo))' to be
sure of changing the value of `foo'.
(defalias 'nnimap-remassoc #[(key alist) "\205 	@@\232\203 A\207\302	A\"\241\210\207" [alist key nnimap-remassoc] 4 (#$ . 37625)])
(defalias 'nnimap-update-alist-soft #[(key value alist) "\203 	B\303	\n\"B\207\303	\n\"\207" [value key alist nnimap-remassoc] 4])
(defalias 'nnimap-range-to-string #[(range) "\301\302<\203 A<\204 C\202 \303#\207" [range mapconcat #[(item) ":\203 \301\302@A#\207\301\303\"\207" [item format "%d:%d" "%d"] 4] ","] 4])
(byte-code "\203 \301\302!\210\303\304!!\210\305\306\307\"\210\310\311!\207" [nnimap-debug require trace buffer-disable-undo get-buffer-create mapcar #[(f) "\302	\"\207" [f nnimap-debug trace-function-background] 3] (nnimap-possibly-change-server nnimap-verify-uidvalidity nnimap-find-minmax-uid nnimap-possibly-change-group nnimap-retrieve-headers-progress nnimap-retrieve-which-headers nnimap-group-overview-filename nnimap-retrieve-headers-from-file nnimap-retrieve-headers-from-server nnimap-retrieve-headers nnimap-open-connection nnimap-open-server nnimap-server-opened nnimap-close-server nnimap-request-close nnimap-status-message nnimap-request-article-part nnimap-request-article nnimap-request-head nnimap-request-body nnimap-request-group nnimap-close-group nnimap-pattern-to-list-arguments nnimap-request-list nnimap-request-post nnimap-retrieve-groups nnimap-request-update-info-internal nnimap-request-type nnimap-request-set-mark nnimap-split-to-groups nnimap-split-find-rule nnimap-split-find-inbox nnimap-split-articles nnimap-request-scan nnimap-request-newgroups nnimap-request-create-group nnimap-time-substract nnimap-date-days-ago nnimap-request-expire-articles-progress nnimap-request-expire-articles nnimap-request-move-article nnimap-request-accept-article nnimap-request-delete-group nnimap-request-rename-group gnus-group-nnimap-expunge gnus-group-nnimap-edit-acl gnus-group-nnimap-edit-acl-done nnimap-group-mode-hook nnimap-mark-to-predicate nnimap-mark-to-flag-1 nnimap-mark-to-flag nnimap-mark-permanent-p nnimap-remassoc nnimap-update-alist-soft nnimap-range-to-string) provide nnimap] 3)
