MMCT TEAM
Server IP : 111.118.215.189  /  Your IP : 3.18.102.38
Web Server : Apache
System : Linux md-in-83.webhostbox.net 4.19.286-203.ELK.el7.x86_64 #1 SMP Wed Jun 14 04:33:55 CDT 2023 x86_64
User : a1673wkz ( 2475)
PHP Version : 8.2.25
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON
Directory (0755) :  /usr/share/emacs/24.3/lisp/calendar/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : //usr/share/emacs/24.3/lisp/calendar/icalendar.elc
;ELC
;;; Compiled by mockbuild@buildfarm06-new.corp.cloudlinux.com on Fri Oct 11 10:08:30 2024
;;; from file /builddir/build/BUILD/emacs-24.3/lisp/calendar/icalendar.el
;;; in Emacs version 24.3.1
;;; with all optimizations.

;;; This file uses dynamic docstrings, first added in Emacs 19.29.

;;; This file does not contain utf-8 non-ASCII characters,
;;; and so can be loaded in Emacs versions earlier than 23.

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


#@33 Version number of icalendar.el.
(defconst icalendar-version "0.19" (#$ . 561))
(byte-code "\300\301\302\303\304\305\306\307&\210\310\311\312\313\314\315\306\301&\210\310\316\317\320\314\321\306\301&\210\310\322\323\324\314\321\306\301&\210\310\325\326\327\314\321\306\301&\210\310\330\331\332\314\321\306\301&\210\310\333\334\335\314\321\306\301&\210\310\336\337\340\314\321\341\342\306\301&	\210\310\343\344\345\314\321\306\301&\210\310\346\347\350\314\321\306\301&\210\310\351\352\353\314\354\306\301&\210\310\355\356\357\314\360\306\301&\210\310\361\362\363\314\321\306\301&\207" [custom-declare-group icalendar nil "iCalendar support." :prefix "icalendar-" :group calendar custom-declare-variable icalendar-import-format "%s%d%l%o" "Format for importing events from iCalendar into Emacs diary.\nIt defines how iCalendar events are inserted into diary file.\nThis may either be a string or a function.\n\nIn case of a formatting STRING the following specifiers can be used:\n%c Class, see `icalendar-import-format-class'\n%d Description, see `icalendar-import-format-description'\n%l Location, see `icalendar-import-format-location'\n%o Organizer, see `icalendar-import-format-organizer'\n%s Summary, see `icalendar-import-format-summary'\n%t Status, see `icalendar-import-format-status'\n%u URL, see `icalendar-import-format-url'\n%U UID, see `icalendar-import-format-uid'\n\nA formatting FUNCTION will be called with a VEVENT as its only\nargument.  It must return a string.  See\n`icalendar-import-format-sample' for an example." :type (choice (string :tag "String") (function :tag "Function")) icalendar-import-format-summary "%s" "Format string defining how the summary element is formatted.\nThis applies only if the summary is not empty! `%s' is replaced\nby the summary." string icalendar-import-format-description "\n Desc: %s" "Format string defining how the description element is formatted.\nThis applies only if the description is not empty! `%s' is\nreplaced by the description." icalendar-import-format-location "\n Location: %s" "Format string defining how the location element is formatted.\nThis applies only if the location is not empty! `%s' is replaced\nby the location." icalendar-import-format-organizer "\n Organizer: %s" "Format string defining how the organizer element is formatted.\nThis applies only if the organizer is not empty! `%s' is\nreplaced by the organizer." icalendar-import-format-url "\n URL: %s" "Format string defining how the URL element is formatted.\nThis applies only if the URL is not empty! `%s' is replaced by\nthe URL." icalendar-import-format-uid "\n UID: %s" "Format string defining how the UID element is formatted.\nThis applies only if the UID is not empty! `%s' is replaced by\nthe UID." :version "24.3" icalendar-import-format-status "\n Status: %s" "Format string defining how the status element is formatted.\nThis applies only if the status is not empty! `%s' is replaced by\nthe status." icalendar-import-format-class "\n Class: %s" "Format string defining how the class element is formatted.\nThis applies only if the class is not empty! `%s' is replaced by\nthe class." icalendar-recurring-start-year 2005 "Start year for recurring events.\nSome calendar browsers only propagate recurring events for\nseveral years beyond the start time.  Set this string to a year\njust before the start of your personal calendar." integer icalendar-export-hidden-diary-entries t "Determines whether hidden diary entries are exported.\nIf non-nil hidden diary entries (starting with `&') get exported,\nif nil they are ignored." boolean icalendar-uid-format "emacs%t%c" "Format of unique ID code (UID) for each iCalendar object.\nThe following specifiers are available:\n%c COUNTER, an integer value that is increased each time a uid is\n   generated.  This may be necessary for systems which do not\n   provide time-resolution finer than a second.\n%h HASH, a hash value of the diary entry,\n%s DTSTART, the start date (excluding time) of the diary entry,\n%t TIMESTAMP, a unique creation timestamp,\n%u USERNAME, the variable `user-login-name'.\n\nFor example, a value of \"%s_%h@mydomain.com\" will generate a\nUID code for each entry composed of the time of the event, a hash\ncode for the event, and your personal domain name."] 10)
#@34 Enable icalendar debug messages.
(defvar icalendar-debug nil (#$ . 4868))
(defconst icalendar--weekday-array ["SU" "MO" "TU" "WE" "TH" "FR" "SA"])
(byte-code "\300\301!\210\300\302!\207" [require calendar diary-lib] 2)
#@53 Print message ARGS if `icalendar-debug' is non-nil.
(defalias 'icalendar--dmsg #[(&rest args) "\205\302\303	\"\207" [icalendar-debug args apply message] 3 (#$ . 5093)])
#@267 Return a new buffer containing the unfolded contents of a buffer.
Folding is the iCalendar way of wrapping long lines.  In the
created buffer all occurrences of CR LF BLANK are replaced by the
empty string.  Argument FOLDED-ICAL-BUFFER is the unfolded input
buffer.
(defalias 'icalendar--get-unfolded-buffer #[(folded-ical-buffer) "\302\303!rq\210\304 \210\305	!\210eb\210\306\307\310\311#\203#\312\313\310\211#\210\202))\207" [unfolded-buffer folded-ical-buffer get-buffer-create " *icalendar-work*" erase-buffer insert-buffer-substring re-search-forward "
?\n[ 	]" nil t replace-match ""] 4 (#$ . 5272)])
#@164 Replace regular expression in string.
Pass arguments REGEXP REP STRING FIXEDCASE LITERAL to
`replace-regexp-in-string' (Emacs) or to `replace-in-string' (XEmacs).
(defalias 'icalendar--rris #[(regexp rep string &optional fixedcase literal) "\306\307!\203\307	\n\f%\207\306\310!\205 \311 \312\216\310\n	\f$*\207" [regexp rep string fixedcase literal save-match-data-internal fboundp replace-regexp-in-string replace-in-string match-data ((byte-code "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3))] 6 (#$ . 5892)])
(put 'icalendar--rris 'byte-optimizer 'byte-compile-inline-expand)
#@253 Recursively read the next iCalendar element in the current buffer.
INVALUE gives the current iCalendar element we are reading.
INPARAMS gives the current parameters.....
This function calls itself recursively for each nested calendar element
it finds.
(defalias 'icalendar--read-element #[(invalue inparams) "\306\211\211\211\211\211\211\211\211\307&'()\306(\203\310\311\306\307#\203\312\313\314!!&\315u\210\306\211'\316\317!\203\214\310\320\306\211#\210\312\313\314!!\310\321\306\307#\210\315u\210\313\322!\206Z\313\323!\nD\316\324!\203\204\310\325\306\307#\210\313\322!\203x\313\322!\202|\313\323!\326\f\n\"\202_\326
\f\"\2026\316\327!\204\226\330\331!\210\314u\210\310\332\306\307#\210\333\334\313\335!\306\211*+,-.\336\337!\203\305\337.-,+*%\202\334\336\340!\205\334\341 /\342\216\340,.-*$*-&
	E'&\343=\203\374\326(\344\312	!
\"C\"(\202&\345=\203	\306\211\202\326)'C\")\2020\203&01)(F\202((.\n\207" [continue value param-value param-name param params nil t re-search-forward "^\\([A-Za-z0-9-]+\\)[;:]" intern match-string 1 -1 looking-at ";" ";\\([A-Za-z0-9-]+\\)=" "\\(\\([^;,:\"]+\\)\\|\"\\([^\"]+\\)\"\\)[;:]" 2 3 "," "\\(\\([^;,:]+\\)\\|\"\\([^\"]+\\)\"\\)" append ":" error "Oops" "\\(.*\\)\\(
?\n[ 	].*\\)*" "
?\n[ 	]" "" 0 fboundp replace-regexp-in-string replace-in-string match-data ((byte-code "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3)) BEGIN icalendar--read-element END name line children element literal fixedcase string rep regexp save-match-data-internal invalue inparams] 11 (#$ . 6512)])
#@71 For the given EVENT return the value of the first occurrence of PROP.
(defalias 'icalendar--get-event-property #[(event prop) "\300\301\215\207" [found (byte-code "\211AA)@\305\211\203*@\211@\f=\203#\306\307\n\211AA)@\"\210A\211\204*\305\207" [event x pp props prop nil throw found] 4)] 2 (#$ . 8137)])
#@72 For the given EVENT return attributes of the first occurrence of PROP.
(defalias 'icalendar--get-event-property-attributes #[(event prop) "\300\301\215\207" [found (byte-code "\211AA)@\305\211\203)@\211@\f=\203\"\306\307\n\211A@)\"\210A\211\204*\305\207" [event x pp props prop nil throw found] 4)] 2 (#$ . 8459)])
#@71 For the given EVENT return a list of all values of the property PROP.
(defalias 'icalendar--get-event-properties #[(event prop) "\211AA)@\306\211\211\203/\f@\211@
=\203(\307\310\211AA)@\311\"\n\"\fA\211\204\n+\207" [event x result pp props prop nil append split-string ","] 5 (#$ . 8793)])
#@147 Return all children of the given NODE which have a name NAME.
For instance the VCALENDAR node can have VEVENT children as well as VTODO
children.
(defalias 'icalendar--get-children #[(node name) "\306\211AA)\211A@)@\f=\203\n\2036\307\306\310\311\n\"\"\211\2035\2033\312
\"\2025
)*\207" [node x children result name subresult nil delq mapcar #[(n) "\302	\"\207" [n name icalendar--get-children] 3] append] 6 (#$ . 9104)])
#@64 Return the list of all existing events in the given ICALENDAR.
(defalias 'icalendar--all-events #[(icalendar) "\302\303\304	\237\"\210)\207" [result icalendar nil mapc #[(elt) "\302\303\304\"	\"\211\207" [elt result append icalendar--get-children VEVENT] 4]] 3 (#$ . 9552)])
#@29 Split VALUE-STRING at ';='.
(defalias 'icalendar--split-value #[(value-string) "\304\211\211\203;r\305\306!q\210\307\304!\210\310 \210c\210eb\210\311\312\304\313#\203:\314\315\316!!\315\317!\320\n	DC\"\202)\n+\207" [param-value param-name result value-string nil get-buffer-create " *icalendar-work*" set-buffer-modified-p erase-buffer re-search-forward "\\([A-Za-z0-9-]+\\)=\\(\\([^;:]+\\)\\|\"\\([^\"]+\\)\"\\);?" t intern match-string 1 2 append] 4 (#$ . 9837)])
#@233 Return a cons of two strings representing a timezone start.
ALIST is an alist entry from a VTIMEZONE, like STANDARD.
DST-P is non-nil if this is for daylight savings time.
The strings are suitable for assembling into a TZ variable.
(defalias 'icalendar--convert-tz-offset #[(alist dst-p) "\306\236\211AA)@\307\236\211AA)@\310\236\211AA)@\211\205\310\205\310\n\205\310\311!\312
\236\211A@)%\313
\236\211A@)&\314
\236\211A@)'%\315\230\205\307&\205\307(\203a\316\202b\317\f\320H\321=\203n\322\202o\323\f\324\325O\326\f\325\327O\260\330'\331\332O!\211)\333=\203\216'\202\223'\320\331O\211*\334\230\203\236\335*\336&\337*\337)\333=\203\260\340\202\264\341)!\342\n\343\344O\326\n\344\331O\326\n\331\332O\260\f*B,+\207" [alist x dtstart rrule-value offset rrule TZOFFSETTO RRULE DTSTART icalendar--split-value FREQ BYMONTH BYDAY "YEARLY" "DST" "STD" 0 45 "+" "-" 1 3 ":" 5 icalendar--get-weekday-number -2 nil -1 "-1" "5" "M" "." "0" int-to-string "/" -6 -4 freq bymonth byday dst-p day week] 16 (#$ . 10323)])
#@95 Turn a VTIMEZONE ALIST into a cons (ID . TZ-STRING).
Return nil if timezone cannot be parsed.
(defalias 'icalendar--parse-vtimezone #[(alist) "\306\307\310\"!\311\312\"\211@A)\211A@)\211\205\313\314\"\311\315\"\211@A)\211A@)\211\2056\313
\316\"	\205[\205[	\f\203W@\f@\317\fA\317A\260\202Z@B-\207" [alist tz-id x daylight day standard icalendar--convert-string-for-import icalendar--get-event-property TZID icalendar--get-children DAYLIGHT icalendar--convert-tz-offset t STANDARD nil "," std] 8 (#$ . 11379)])
#@144 Convert all timezones in the ICALENDAR into an alist.
Each element of the alist is a cons (ID . TZ-STRING),
like `icalendar--parse-vtimezone'.
(defalias 'icalendar--convert-all-timezones #[(icalendar) "\304\305	@\306\"\304\211\203$@\307\n!\211\203\nBA\211\204*)\207" [result icalendar zone --dolist-tail-- nil icalendar--get-children VTIMEZONE icalendar--parse-vtimezone] 4 (#$ . 11925)])
#@154 Return a timezone string for the time zone in PROP-LIST, or nil if none.
ZONE-MAP is a timezone alist as returned by `icalendar--convert-all-timezones'.
(defalias 'icalendar--find-time-zone #[(prop-list zone-map) "\303\304\"\211\205\305	\n\"A)\207" [prop-list id zone-map plist-get TZID assoc] 4 (#$ . 12337)])
#@438 Return ISODATETIMESTRING in format like `decode-time'.
Converts from ISO-8601 to Emacs representation.  If
ISODATETIMESTRING specifies UTC time (trailing letter Z) the
decoded time is given in the local time zone!  If optional
parameter DAY-SHIFT is non-nil the result is shifted by DAY-SHIFT
days.
ZONE, if provided, is the timezone, in any format understood by `encode-time'.

FIXME: multiple comma-separated values should be allowed!
(defalias 'icalendar--decode-isodatetime #[(isodatetimestring &optional day-shift zone) "\306!\210\2052\307\310\311O!\307\311\312O!\307\312\313O!\310\211\211'G\314V\2039\307\315\316O!\307\316\317O!G\320V\203G\307\317\321O!G\321V\203]\322\323\321H\"\203]\324 @	\\(\203,\325
\f'E\211))\326)8)\327*'\330'!\203\204\331\332!\202'\310V\203'S*\333)\211)\211)@))\211)\211+A@*))\326)8)'\f
S\334_\\,
\326V\203,\335
\311_\\\336\245Z,'\211'\310W\203\336\337'!S'\330'\311\246!\205\367\330'\340\246!?\206\367\330'\341\246!)\203,T,,-*\342_*\311\245*\340\245[*\341\245%\202\337'T!*\343)\211)\211)@))\211)\211+A@*))\326)8)'\f
S\334_\\,
\326V\203\217,\335
\311_\\\336\245Z,'\211'\310W\203m\337'!S'\330'\311\246!\205\206\330'\340\246!?\206\206\330'\341\246!)\203\217,T,,-*\342_*\311\245*\340\245[*\341\245\344\211)\211)@))\211)\211+A@*))\326)8)'\f
S\334_\\,
\326V\203,\335
\311_\\\336\245Z,'\211'\310W\203\357\337'!S'\330'\311\246!\205\330'\340\246!?\206\330'\341\246!)\203,T,,-&+(\\!\211-@-A@\326-8')\327\345\346\217.\207" [isodatetimestring second minute hour day month icalendar--dmsg read 0 4 6 8 12 9 11 13 14 15 char-equal 90 current-time-zone calendar-gregorian-from-absolute 2 nil zerop error "There was no year zero" + 31 23 10 abs 100 400 365 - (12 31 -1) (byte-code "\306\307	\n\f
&!\207" [second minute hour day month year decode-time encode-time zone] 9) ((error (byte-code "\306\307\"\210	\n\f
\n\310\311\310\257	\207" [isodatetimestring second minute hour day month message "Cannot decode \"%s\"" 0 nil year] 9))) year day-shift date offset-years x day-of-year mdy] 12 (#$ . 12659)])
#@391 Convert ISODURATIONSTRING into format provided by `decode-time'.
Converts from ISO-8601 to Emacs representation.  If ISODURATIONSTRING
specifies UTC time (trailing letter Z) the decoded time is given in
the local time zone!

Optional argument DURATION-CORRECTION shortens result by one day.

FIXME: TZID-attributes are ignored....!
FIXME: multiple comma-separated values should be allowed!
(defalias 'icalendar--decode-isoduration #[(isodurationstring &optional duration-correction) "\205\225\306 \307\216\310\311\"\210\312\211\211\211\211\211\313\224\2035\314\315\224\315\225O!\203\211\fS\202\211\316\224\203y\317\224\203J\314\320\224\320\225O!\321_\321\224\203X\314\322\224\322\225O!\323\224\203g\314\324\224\324\225O!\325\224\203\211\314\326\224\326\225O!\202\211\327\224\203\211\314\330\224\330\225O!\321_
\f\n\257.\207" [isodurationstring save-match-data-internal years months days hours match-data ((byte-code "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3)) string-match "^P[+-]?\\(\\(\\([0-9]+\\)D\\)\\|\\(\\(\\([0-9]+\\)D\\)?T\\(\\([0-9]+\\)H\\)?\\(\\([0-9]+\\)M\\)?\\(\\([0-9]+\\)S\\)?\\)\\|\\(\\([0-9]+\\)W\\)\\)$" 0 2 read 3 4 5 6 7 8 9 10 11 12 13 14 minutes seconds duration-correction] 6 (#$ . 14851)])
#@125 Add TIME1 to TIME2.
Both times must be given in decoded form.  One of these times must be
valid (year > 1900 or something).
(defalias 'icalendar--add-decoded-times #[(time1 time2) "\302\303@	@\\A@	A@\\\3048\304	8\\\3058\305	8\\\3068\306	8\\\3078\307	8\\\310\211&!\207" [time1 time2 decode-time encode-time 2 3 4 5 nil] 10 (#$ . 16147)])
#@217 Convert the decoded DATETIME to American-style format.
Optional argument SEPARATOR gives the separator between month,
day, and year.  If nil a blank character is used as separator.
American format: "month day year".
(defalias 'icalendar--datetime-to-american-date #[(datetime &optional separator) "\205\302\303\3048	\206\305\3068	\206\305\3078&\207" [datetime separator format "%d%s%d%s%d" 4 " " 3 5] 8 (#$ . 16498)])
(byte-code "\300\301\302\303#\210\304\301\302\305#\207" [defalias icalendar--datetime-to-noneuropean-date icalendar--datetime-to-american-date nil make-obsolete "icalendar 0.19"] 4)
#@217 Convert the decoded DATETIME to European format.
Optional argument SEPARATOR gives the separator between month,
day, and year.  If nil a blank character is used as separator.
European format: (day month year).
FIXME
(defalias 'icalendar--datetime-to-european-date #[(datetime &optional separator) "\205\302\303\3048	\206\305\3068	\206\305\3078&\207" [datetime separator format "%d%s%d%s%d" 3 " " 4 5] 8 (#$ . 17116)])
#@201 Convert the decoded DATETIME to ISO format.
Optional argument SEPARATOR gives the separator between month,
day, and year.  If nil a blank character is used as separator.
ISO format: (year month day).
(defalias 'icalendar--datetime-to-iso-date #[(datetime &optional separator) "\205\302\303\3048	\206\305\3068	\206\305\3078&\207" [datetime separator format "%d%s%d%s%d" 5 " " 4 3] 8 (#$ . 17552)])
#@144 Return current calendar date style.
Convenience function to handle transition from old
`european-calendar-style' to new `calendar-date-style'.
(defalias 'icalendar--date-style #[nil "\302\300!\203\207	\203\303\207\304\207" [calendar-date-style european-calendar-style boundp european american] 2 (#$ . 17967)])
#@254 Convert the decoded DATETIME to diary format.
Optional argument SEPARATOR gives the separator between month,
day, and year.  If nil a blank character is used as separator.
Call icalendar--datetime-to-*-date according to the current
calendar date style.
(defalias 'icalendar--datetime-to-diary-date #[(datetime &optional separator) "\302\303\304\305 \"!	\"\207" [datetime separator intern-soft format "icalendar--datetime-to-%s-date" icalendar--date-style] 4 (#$ . 18290)])
#@107 Extract the time part of a decoded DATETIME into 24-hour format.
Note that this silently ignores seconds.
(defalias 'icalendar--datetime-to-colontime #[(datetime) "\301\302\3038A@#\207" [datetime format "%02d:%02d" 2] 4 (#$ . 18771)])
#@50 Return the month number for the given MONTHNAME.
(defalias 'icalendar--get-month-number #[(monthname) "\300\301\215\207" [found (byte-code "\304\227\305\306\"\210*\307\207" [monthname m num calendar-month-name-array 1 mapc #[(month) "\227\211\n\230\204	\304\305O\n\230\203\306\307\"\210T\211)\207" [month mm m num 0 3 throw found] 4] -1] 3)] 2 (#$ . 19014)])
#@42 Return the number for the ABBREVWEEKDAY.
(defalias 'icalendar--get-weekday-number #[(abbrevweekday) "\203\301\302\215\207\303\207" [abbrevweekday found (byte-code "\304\227\305\306\"*\207" [abbrevweekday aw num icalendar--weekday-array 0 mapc #[(day) "\227\211\n\230\203\304\305\"\210T\211)\207" [day d aw num throw found] 4]] 3) -1] 2 (#$ . 19392)])
#@68 Return the list of numbers for the comma-separated ABBREVWEEKDAYS.
(defalias 'icalendar--get-weekday-numbers #[(abbrevweekdays) "\205\304\305\306\n\"\307\310\305\311\312\227\313\"\"\"*\207" [abbrevweekdays num icalendar--weekday-array weekday-alist -1 mapcar #[(day) "T	\227B\207" [num day] 2] delq nil #[(abbrevday) "\302	\"A\207" [abbrevday weekday-alist assoc] 3] split-string ","] 7 (#$ . 19763)])
#@33 Return the abbreviated WEEKDAY.
(defalias 'icalendar--get-weekday-abbrev #[(weekday) "\300\301\215\207" [found (byte-code "\304\227\305\306\"\210*\307\207" [weekday w num calendar-day-name-array 0 mapc #[(day) "\227\211\n\230\204	\305\306O\n\230\203\307\310\fH\"\210\fT\211)\207" [day d w icalendar--weekday-array num 0 3 throw found] 5] nil] 3)] 2 (#$ . 20181)])
#@149 Convert DATE to iso-style date.
DATE must be a list of the form (month day year).
If DAY-SHIFT is non-nil, the result is shifted by DAY-SHIFT days.
(defalias 'icalendar--date-to-isodate #[(date &optional day-shift) "\306\211\3078)\310\311\n!\203\312\313!\202k\n\314V\203\224\nS\315\211\211@)\211\211A@*\3078)
S\316_\\\307V\203\200\317\320_\\\321\245Z\n\211\314W\203a\322\n!S\311\n\320\246!\205w\311\n\323\246!?\206w\311\n\324\246!)\203\200T-	\325_	\320\245	\323\245[	\324\245%\202k\322\nT!\326\211\211@)\211\211A@*\3078)
S\316_\\\307V\203\370\317\320_\\\321\245Z\n\211\314W\203\331\322\n!S\311\n\320\246!\205\357\311\n\323\246!?\206\357\311\n\324\246!)\203\370T-	\325_	\320\245	\323\245[	\324\245\327\211\211@)\211\211A@*\3078)
S\316_\\\307V\203f\317\320_\\\321\245Z\n\211\314W\203G\322\n!S\311\n\320\246!\205]\311\n\323\246!?\206]\311\n\324\246!)\203fT-&+\206r\314\\!\330\331\3078@A@$)\207" [date offset-years year month x day calendar-gregorian-from-absolute 2 nil zerop error "There was no year zero" 0 + 31 23 4 10 abs 100 400 365 - (12 31 -1) format "%04d%02d%02d" day-of-year day-shift mdy] 12 (#$ . 20564)])
#@299 Convert diary-style DATESTRING to iso-style date.
If DAY-SHIFT is non-nil, the result is shifted by DAY-SHIFT days
-- DAY-SHIFT must be either nil or an integer.  This function
tries to figure the date style from DATESTRING itself.  If that
is not possible it uses the current calendar date style.
(defalias 'icalendar--datestring-to-isodate #[(datestring &optional day-shift) "\306\307\211\310 \311\216\312\313\f\"\2030\314\f\315\224\315\225O!\314\f\316\224\316\225O!\314\f\317\224\317\225O!\202\317\312\320\f\"\203c\314\f\315\224\315\225O!\314\f\316\224\316\225O!\314\f\317\224\317\225O!\321 \322=\203\317	\n
)\202\317\312\323\f\"\203\210\314\f\315\224\315\225O!\324\f\316\224\316\225O!\314\f\317\224\317\225O!\202\317\312\325\f\"\203\255\314\f\315\224\315\225O!\324\f\316\224\316\225O!\314\f\317\224\317\225O!\202\317\312\326\f\"\203\317\314\f\316\224\316\225O!\324\f\315\224\315\225O!\314\f\317\224\317\225O!*\n\327V\205\224\330	\nE\211**\316*8)\307+\331!\203\365\332\333!\202i\327V\203~S+\334*\211*\211*@)*\211*\211A@***\316*8)\n	S\335_\\,	\316V\203f,\336	\337_\\\340\245Z,\211\327W\203G\341!S\331\337\246!\205]\331\342\246!?\206]\331\343\246!)\203f,T,,-+\344_+\337\245+\342\245[+\343\245%\202i\341T!+\345*\211*\211*@)*\211*\211A@***\316*8)\n	S\335_\\,	\316V\203\353,\336	\337_\\\340\245Z,\211\327W\203\314\341!S\331\337\246!\205\342\331\342\246!?\206\342\331\343\246!)\203\353,T,,-+\344_+\337\245+\342\245[+\343\245\346\211*\211*@)*\211*\211A@***\316*8)\n	S\335_\\,	\316V\203d,\336	\337_\\\340\245Z,\211\327W\203E\341!S\331\337\246!\205[\331\342\246!?\206[\331\343\246!)\203d,T,,-&+-\206p\327\\!.\347\350\351\316.8.@.A@$!\210\350\351\316.8.@.A@$)+\207" [year month day save-match-data-internal datestring x -1 nil match-data ((byte-code "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3)) string-match "\\s-*\\([0-9]\\{4\\}\\)[ 	/]\\s-*0?\\([1-9][0-9]?\\)[ 	/]\\s-*0?\\([1-9][0-9]?\\)" read 1 2 3 "\\s-*0?\\([1-9][0-9]?\\)[ 	/]\\s-*0?\\([1-9][0-9]?\\),?[ 	/]\\s-*\\([0-9]\\{4\\}\\)" icalendar--date-style american "\\s-*\\([0-9]\\{4\\}\\)[ 	/]\\s-*\\([A-Za-z][^ ]+\\)[ 	/]\\s-*0?\\([123]?[0-9]\\)" icalendar--get-month-number "\\s-*0?\\([123]?[0-9]\\)[ 	/]\\s-*\\([A-Za-z][^ ]+\\)[ 	/]\\s-*\\([0-9]\\{4\\}\\)" "\\s-*\\([A-Za-z][^ ]+\\)[ 	/]\\s-*0?\\([123]?[0-9]\\),?[ 	/]\\s-*\\([0-9]\\{4\\}\\)" 0 calendar-gregorian-from-absolute zerop error "There was no year zero" + 31 23 4 10 abs 100 400 365 - (12 31 -1) icalendar--dmsg format "%04d%02d%02d" date offset-years day-of-year day-shift mdy] 12 (#$ . 21812)])
#@148 Convert a time like 9:30pm to an iso-conform string like T213000.
In this example the TIMESTRING would be "9:30" and the AMPMSTRING
would be "pm".
(defalias 'icalendar--diarytime-to-isotime #[(timestring ampmstring) "\205n\306\307\310\311\211\312\313!\203\313
\f\n	%\2022\312\314!\2052\315 \316\216\314
\f	$*-!\203O\317\230\203O\320W\203O\320\\\203h\321\230\203h\320Y\203h\320Z\322\323\")\207" [timestring literal fixedcase string rep regexp read ":" "" nil fboundp replace-regexp-in-string replace-in-string match-data ((byte-code "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3)) "pm" 1200 "am" format "T%04d00" save-match-data-internal starttimenum ampmstring] 7 (#$ . 24514)])
#@55 Escape comma and other critical characters in STRING.
(defalias 'icalendar--convert-string-for-export #[(string) "\306\307\310\211\311\312!\203\312\f\n	%\202,\311\313!\205,\314 \315\216\313\f	$*-\207" [string literal fixedcase rep regexp save-match-data-internal "," "\\\\," nil fboundp replace-regexp-in-string replace-in-string match-data ((byte-code "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3))] 6 (#$ . 25271)])
#@60 Remove escape chars for comma, semicolon etc. from STRING.
(defalias 'icalendar--convert-string-for-import #[(string) "\306\307\310\311\312\313\314\315\316\211\317\320!\203 \320\f\n	%\2022\317\321!\2052\322 \323\216\321\f	$*-\316\211\317\320!\203J\320\f\n	%\202\\\317\321!\205\\\322 \323\216\321\f	$*-\316\211\317\320!\203t\320\f\n	%\202\206\317\321!\205\206\322 \323\216\321\f	$*-\316\211\317\320!\203\236\320\f\n	%\202\260\317\321!\205\260\322 \323\216\321\f	$*-\207" [string literal fixedcase rep regexp save-match-data-internal "\\\\n" "\n " "\\\\\"" "\"" "\\\\;" ";" "\\\\," "," nil fboundp replace-regexp-in-string replace-in-string match-data ((byte-code "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3))] 12 (#$ . 25737)])
#@171 Export diary file to iCalendar format.
All diary entries in the file DIARY-FILENAME are converted to iCalendar
format.  The result is appended to the file ICAL-FILENAME.
(defalias 'icalendar-export-file #[(diary-filename ical-filename) "r\302!q\210\303ed	#)\207" [diary-filename ical-filename find-file icalendar-export-region] 4 (#$ . 26552) "FExport diary data from file: \nFinto iCalendar file: "])
(byte-code "\300\301\302\303#\210\304\301\302\305#\207" [defalias icalendar-convert-diary-to-ical icalendar-export-file nil make-obsolete "22.1"] 4)
#@44 Auxiliary counter for creating unique ids.
(defvar icalendar--uid-count 0 (#$ . 27110))
#@211 Construct a unique iCalendar UID for a diary entry.
ENTRY-FULL is the full diary entry string.  CONTENTS is the
current iCalendar object, as a string.  Increase
`icalendar--uid-count'.  Returns the UID string.
(defalias 'icalendar--create-uid #[(entry-full contents) "\306\307\301\n#\203\306\307\301\n#\202w\310\311\312\313\"	\314\211%T\310\315\312\316\317 @\317 \211A@)\317 \211AA)@$	\314\211%\310\320\312\313\321\322\n!!\"	\314\211%\310\323
\206S\324	\314\211%\325\326\"\203j\327\224\327\225O\202k\330\310\331	\314\211%)	)\207" [icalendar-uid-format uid entry-full icalendar--uid-count x user-login-name get-text-property 0 replace-regexp-in-string "%c" format "%d" t "%t" "%d%d%d" current-time "%h" abs sxhash "%u" "UNKNOWN_USER" string-match "^DTSTART[^:]*:\\([0-9]*\\)" 1 "DTSTART" "%s" contents dtstart] 8 (#$ . 27205)])
#@389 Export region in diary file to iCalendar format.
All diary entries in the region from MIN to MAX in the current buffer are
converted to iCalendar format.  The result is appended to the file
ICAL-FILENAME.
This function attempts to return t if something goes wrong.  In this
case an error string which describes all the errors and problems is
written into the buffer `*icalendar-errors*'.
(defalias 'icalendar-export-region #[(min max ical-filename) "\306\307\306\211\211\211\310\211\211\311\312!\313Q\310!\"#$%&r\314\315!q\210\316 \210)\212'b\210\317(\203:\320\202;\321)\322#\203f\323\324!$\325\224\203T\323\325!#\202W\306#$#P\"\326\327\330\217\210\2020r\331*\332+!q\210db\210\333c\210\334c\210\335c\210&c\210\336c\210\337 \210\204\215\340 \210+.\207" [diary-nonmarking-symbol other-elements nonmarker found-error contents contents-n-summary "" 0 nil "^" regexp-quote "?" get-buffer-create "*icalendar-errors*" erase-buffer re-search-forward "^\\([^ 	\n#].+\\)\\(\\(\n[ 	].*\\)*\\)" "^\\([^ 	\n&#].+\\)\\(\\(\n[ 	].*\\)*\\)" t match-string 1 2 error-val (byte-code "\306	\"\307!\n@\310\n\211A@)Q\311\312\f\"A\311\313\f\"A\311\314\f\"A\311\315\f\"A\311\316\f\"A\311\317\f\"A\311\320\f\"A\311\321\f\"A
\f\211\n\203Y\322\nQ\203f\323Q\f\203s\324\fQ
\203\200\325
Q\203\215\326Q\203\232\327Q\330\206\245\331\"P.\332R\306\207" [nonmarker entry-main contents-n-summary entry-full other-elements x icalendar--convert-to-ical icalendar--parse-summary-and-rest "\nSUMMARY:" assoc cla des loc org sta sum url uid "\nCLASS:" "\nDESCRIPTION:" "\nLOCATION:" "\nORGANIZER:" "\nSTATUS:" "\nURL:" "\nBEGIN:VEVENT\nUID:" icalendar--create-uid "\nEND:VEVENT" contents header result] 11) ((error (byte-code "\303r\304\305!q\210\306\307\310e`\"	\n$c\210)\303\207" [found-error error-val entry-main t get-buffer-create "*icalendar-errors*" format "Error in line %d -- %s: `%s'\n" count-lines] 5))) utf-8 find-file "BEGIN:VCALENDAR" "\nPRODID:-//Emacs//NONSGML icalendar.el//EN" "\nVERSION:2.0" "\nEND:VCALENDAR\n" save-buffer bury-buffer header entry-full entry-rest entry-main start result min icalendar-export-hidden-diary-entries max coding-system-for-write ical-filename] 12 (#$ . 28066) "r\nFExport diary data into iCalendar file: "])
#@171 Convert a diary entry to iCalendar format.
NONMARKER is a regular expression matching the start of non-marking
entries.  ENTRY-MAIN is the first line of the diary entry.
(defalias 'icalendar--convert-to-ical #[(nonmarker entry-main) "\302	\"\206B\303	\"\206B\304	\"\206B\305	\"\206B\306	\"\206B\307	\"\206B\310	\"\206B\311	\"\206B\312	\"\206B\313\314!\207" [nonmarker entry-main icalendar--convert-anniversary-to-ical icalendar--convert-cyclic-to-ical icalendar--convert-date-to-ical icalendar--convert-float-to-ical icalendar--convert-block-to-ical icalendar--convert-sexp-to-ical icalendar--convert-weekly-to-ical icalendar--convert-yearly-to-ical icalendar--convert-ordinary-to-ical error "Could not parse entry"] 3 (#$ . 30409)])
#@85 Parse SUMMARY-AND-REST from a diary to fill iCalendar properties.
Returns an alist.
(defalias 'icalendar--parse-summary-and-rest #[(summary-and-rest) "\306 \307\216\310	!?\205+\311	\312\313	\"\206\314\312\315	\"\206!\314\312\316	\"\206*\314+\312\317	\"\2064\314,\312\320	\"\206>\314-\312\321	\"\206H\314.\312\322	\"\206R\314/\312\323	\"\206\\\3140\324\f
+,.-/0\257\325\"1\3262\311\21134\311\21156\311\21178\311\2119:1G\326;<;<W\203\230\f\326Y\203\273;18\fU\203\2732T\2112\327_3\202\217
\326Y\203\330;18
U\203\3302T\2112\327_4\202\217+\326Y\203\367;18+U\203\3672T\2112\327_5\202\217,\326Y\203;18,U\2032T\2112\327_6\202\217.\326Y\2035;18.U\20352T\2112\327_7\202\217-\326Y\203T;18-U\203T2T\2112\327_8\202\217/\326Y\203s;18/U\203s2T\2112\327_9\202\2170\326Y\203\217;180U\203\2172T\2112\327_:;T\211;\202\230*\330\331\320\332=\333QD\313\332>\333QD\315\332?\333QD\316\332@\333QD\317\332A\333QD\321\332B\333QD\322\332C\333QD\323\332D\333QD\257\"\210\334\320\335\311\336EFGHI\337\340!\203\374\340IHGFE%\202\337\341!\205\306 \342\216\341GIHE$*-\343Q\312J\"\205)\311\211\211\211\211\211\211\211*)K('&%$8\203L8\224\203LJ8\2248\225OK3\203b3\224\203bJ3\2243\225O$4\203x4\224\203xJ4\2244\225O%5\203\2165\224\203\216J5\2245\225O&6\203\2446\224\203\244J6\2246\225O'7\203\2727\224\203\272J7\2247\225O(9\203\3209\224\203\320J9\2249\225O):\203\346:\224\203\346J:\224:\225O*$\205\357\344$B%\205\370\345%B&\205\346&B'\205\n\347'B(\205\350(B)\205\351)B*\205%\352*B\257..*\207" [save-match-data-internal icalendar-import-format case-fold-search s p-cla p-des match-data ((byte-code "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3)) functionp nil string-match "%c" -1 "%d" "%l" "%o" "%s" "%t" "%u" "%U" sort < 0 2 mapc #[(ij) "@\211A@)\n\306\211\f
\307\310!\203$\310
\f
\f%\2029\307\311!\2059\312 \313\216\311

\f$*-\211\207" [ij x s literal fixedcase string t fboundp replace-regexp-in-string replace-in-string match-data #1=((byte-code "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3)) rep regexp save-match-data-internal] 7] "\\(" "\\)??" "\\`" "\\(.*?\\)" t fboundp replace-regexp-in-string replace-in-string #1# "\\'" cla des loc org sta url uid p-loc p-org p-sum p-sta p-url p-uid p-list ct pos-cla pos-des pos-loc pos-org pos-sta pos-sum pos-url pos-uid i --dotimes-limit-- icalendar-import-format-summary icalendar-import-format-class icalendar-import-format-description icalendar-import-format-location icalendar-import-format-organizer icalendar-import-format-status icalendar-import-format-url icalendar-import-format-uid literal fixedcase string rep regexp summary-and-rest sum] 14 (#$ . 31167)])
#@180 Convert "ordinary" diary entry to iCalendar format.
NONMARKER is a regular expression matching the start of non-marking
entries.  ENTRY-MAIN is the first line of the diary entry.
(defalias 'icalendar--convert-ordinary-to-ical #[(nonmarker entry-main) "\306\307\310\311\312\313\314\260	\"\205	\315\224\315\225O\316\n!\316\n\315\"\317\320\321\224\205-	\321\224\321\225O\322\224\2058	\322\224\322\225O\"+\320\323\224\205G	\323\224\323\225O\324\224\205R	\324\224\324\225O\",\325	\326\224\326\225O!-\327\330	\"\210\204l\331\332!\210+\203u\202v\f+\203\340,\204\340\333\334\335+\317\211./012\336\337!\203\247\337210/.%\202\276\336\340!\205\276\341 3\342\216\340021.$*-!\2114\343W\203\324\344\345\3464\\\",\202\337\344\3454\343Z\",\f)\347+\203\352\350\202\353\351+\206\362\335\352,\203\374\350\202\375\351
,\206\335\260-.D\207" [nonmarker entry-main datetime startisostring endisostring endisostring1 string-match "\\([^ /]+[ /]+[^ /]+[ /]+[^ ]+\\)\\s-*" "\\(\\([0-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?" "\\(" "-\\([0-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?\\)?" "\\)?" "\\s-*\\(.*?\\) ?$" 1 icalendar--datestring-to-isodate nil icalendar--diarytime-to-isotime 3 4 6 7 icalendar--convert-string-for-export 8 icalendar--dmsg "ordinary %s" error "Could not parse date" read "^T0?" "" fboundp replace-regexp-in-string replace-in-string match-data ((byte-code "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3)) 230000 format "T%06d" 10000 "\nDTSTART;" "VALUE=DATE-TIME:" "VALUE=DATE:" "\nDTEND;" starttimestring endtimestring summary literal fixedcase string rep regexp save-match-data-internal time] 9 (#$ . 34083)])
#@67 Find the first ABBREVWEEKDAY in a given YEAR.
Returns day number.
(defalias 'icalendar-first-weekday-of-year #[(abbrevweekday year) "\304\305\211E!\306\n!	ZT\211\307X\203\310\\\202%\310V\203%\310Z*\207" [year day-of-week-jan01 abbrevweekday result calendar-day-of-week 1 icalendar--get-weekday-number 0 7] 5 (#$ . 35778)])
#@176 Convert weekly diary entry to iCalendar format.
NONMARKER is a regular expression matching the start of non-marking
entries.  ENTRY-MAIN is the first line of the diary entry.
(defalias 'icalendar--convert-weekly-to-ical #[(nonmarker entry-main) "\306\307\310\311\312\313\314\315\316\260		\"\205\373\317	\320\224\320\225O!\205\373\317	\320\224\320\225O!\321\322\224\2051	\322\224\322\225O\323\224\205<	\323\224\323\225O\"\321\324\224\205J	\324\224\324\225O\325\224\205U	\325\224\325\225O\"\326	\327\224\327\225O!\330\331	\"\210\203\266\f\204\266\332\333\334\335\211./012\336\337!\203\222\337210/.%\202\251\336\340!\205\251\341 3\342\216\340021.$*-!4\343\344\3454\\\")\346\203\277\347\202\300\350\343\3515\320\352\n5\"$\206\320\334\353\f\203\331\347\202\332\350\343\3515\320\352\n5\"\f\203\354\354\202\355\320\\$\f\206\364\334\355\n\260\n
,D\207" [nonmarker entry-main day starttimestring endtimestring summary string-match "\\([a-z]+\\)\\s-+" "\\(\\([0-9][0-9]?:[0-9][0-9]\\)" "\\([ap]m\\)?" "\\(-" "\\([0-9][0-9]?:[0-9][0-9]\\)" "\\([ap]m\\)?\\)?" "\\)?" "\\s-*\\(.*?\\) ?$" icalendar--get-weekday-abbrev 1 icalendar--diarytime-to-isotime 3 4 6 7 icalendar--convert-string-for-export 8 icalendar--dmsg "weekly %s" read "^T0?" "" nil fboundp replace-regexp-in-string replace-in-string match-data ((byte-code "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3)) format "T%06d" 10000 "\nDTSTART;" "VALUE=DATE-TIME:" "VALUE=DATE:" "%04d%02d%02d" icalendar-first-weekday-of-year "\nDTEND;" 0 "\nRRULE:FREQ=WEEKLY;INTERVAL=1;BYDAY=" literal fixedcase string rep regexp save-match-data-internal time icalendar-recurring-start-year] 13 (#$ . 36121)])
#@176 Convert yearly diary entry to iCalendar format.
NONMARKER is a regular expression matching the start of non-marking
entries.  ENTRY-MAIN is the first line of the diary entry.
(defalias 'icalendar--convert-yearly-to-ical #[(nonmarker entry-main) "\306\307 \310=\203
\311\202\312\313\314\315\316\317\320\260	\"\205'\307 \310=\203&\321\202'\322\307 \310=\2033\322\2024\321\323	\n\224\n\225O!\324	\224\225O!\325\326\224\205S	\326\224\326\225O\327\224\205^	\327\224\327\225O\"4\325\330\224\205m	\330\224\330\225O\331\224\205x	\331\224\331\225O\"5\332	\333\224\333\225O!6\334\335	\"\2104\203\3375\204\337\323\336\3374\340\211789:;\341\342!\203\272\342;:987%\202\321\341\343!\205\321\344 <\345\216\3439;:7$*-!=\346\347\350=\\\"5)\3514\203\351\352\202\352\353\346\354
\f#4\206\365\337\3555\203\377\352\202\353\356
\f\357E5\203\360\202\321\"5\206\337\361\346\362
\"\363\346\362\f\"\260\f6.D\207" [nonmarker entry-main daypos monpos day month string-match icalendar--date-style european "\\([0-9]+[0-9]?\\)\\s-+\\([a-z]+\\)\\s-+" "\\([a-z]+\\)\\s-+\\([0-9]+[0-9]?\\)\\s-+" "\\*?\\s-*" "\\(\\([0-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?" "\\(" "-\\([0-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?\\)?" "\\)?" "\\s-*\\([^0-9]+.*?\\) ?$" 1 2 read icalendar--get-month-number icalendar--diarytime-to-isotime 4 5 7 8 icalendar--convert-string-for-export 9 icalendar--dmsg "yearly %s" "^T0?" "" nil fboundp replace-regexp-in-string replace-in-string match-data ((byte-code "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3)) format "T%06d" 10000 "\nDTSTART;" "VALUE=DATE-TIME:" "VALUE=DATE:" "1900%02d%02d" "\nDTEND;" icalendar--date-to-isodate 1900 0 "\nRRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=" "%d" ";BYMONTHDAY=" starttimestring endtimestring summary literal fixedcase string rep regexp save-match-data-internal time] 14 (#$ . 37842)])
#@206 Convert complex sexp diary entry to iCalendar format -- unsupported!

FIXME!

NONMARKER is a regular expression matching the start of non-marking
entries.  ENTRY-MAIN is the first line of the diary entry.
(defalias 'icalendar--convert-sexp-to-ical #[(nonmarker entry-main) "\302\303P	\"\203 \304\305	\"\210\306\307	\310\224\310\225O	\311\224\311\225OQ\"\207\302\312P	\"\2032\304\313	\"\210\314\315!\207\316\207" [nonmarker entry-main string-match "%%(and \\(([^)]+)\\))\\(\\s-*.*?\\) ?$" icalendar--dmsg "diary-sexp from icalendar.el %s" icalendar--convert-to-ical "%%" 1 2 "%%([^)]+)\\s-*.*" "diary-sexp %s" error "Sexp-entries are not supported yet" nil] 7 (#$ . 39744)])
#@175 Convert block diary entry to iCalendar format.
NONMARKER is a regular expression matching the start of non-marking
entries.  ENTRY-MAIN is the first line of the diary entry.
(defalias 'icalendar--convert-block-to-ical #[(nonmarker entry-main) "\306\307\310\311\312\313\314\315\260	\"\205\346	\316\224\316\225O	\317\224\317\225O\320\n!\320!\320\316\"+\321\322\224\2058	\322\224\322\225O\323\224\205C	\323\224\323\225O\",\321\324\224\205R	\324\224\324\225O\325\224\205]	\325\224\325\225O\"-\326	\327\224\327\225O!.\330\331	\"\210,\203\304-\204\304\332\333\334,\335\211/0123\336\337!\203\237\3373210/%\202\266\336\340!\205\266\341 4\342\216\340132/$*-!5\343\344\3455\\\"-),\203\333\346\f,\347\f-\350
\260.D\202\344\351\f\352+R.D.\207" [nonmarker entry-main startstring endstring startisostring endisostring string-match "%%(diary-block \\([^ /]+[ /]+[^ /]+[ /]+[^ ]+\\)" " +\\([^ /]+[ /]+[^ /]+[ /]+[^ ]+\\))\\s-*" "\\(\\([0-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?" "\\(" "-\\([0-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?\\)?" "\\)?" "\\s-*\\(.*?\\) ?$" 1 2 icalendar--datestring-to-isodate icalendar--diarytime-to-isotime 4 5 7 8 icalendar--convert-string-for-export 9 icalendar--dmsg "diary-block %s" read "^T0?" "" nil fboundp replace-regexp-in-string replace-in-string match-data ((byte-code "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3)) format "T%06d" 10000 "\nDTSTART;VALUE=DATE-TIME:" "\nDTEND;VALUE=DATE-TIME:" "\nRRULE:FREQ=DAILY;INTERVAL=1;UNTIL=" "\nDTSTART;VALUE=DATE:" "\nDTEND;VALUE=DATE:" endisostring+1 starttimestring endtimestring summary literal fixedcase string rep regexp save-match-data-internal time] 9 (#$ . 40430)])
#@255 Convert float diary entry to iCalendar format -- partially unsupported!

  FIXME! DAY from diary-float yet unimplemented.

  NONMARKER is a regular expression matching the start of non-marking
  entries.  ENTRY-MAIN is the first line of the diary entry.
(defalias 'icalendar--convert-float-to-ical #[(nonmarker entry-main) "\306\307P	\"\205\240\310\311!r\nq\210\312\216\313\314	\"c\210eb\210\315p!\211A@\3168\3178'\3208(\321\322\323`d{#)(\203I\324\325	\"\210\326\327!\210\330\331\332\333 \"\334 	*+\335\f
'#*?\205h\336\331\332\333 \"P\337\f\247\204s\f<\203w\340\202x\341\f<\205\210\342\343\f\211,A@)\344#\f\247\205\220\345\f!\346\345'!-
H\260\n).	D\207" [nonmarker entry-main #1=#:temp-buffer sexp month dayname string-match "%%\\((diary-float .+\\) ?$" generate-new-buffer " *temp*" ((byte-code "\301!\203\n\302!\210\301\207" [#1# buffer-name kill-buffer] 2)) match-string 1 read 2 3 4 replace-regexp-in-string "\\(^ +\\| +$\\)" "" icalendar--dmsg "diary-float %s" error "Don't know if or how to implement day in `diary-float'" "\nDTSTART;VALUE=DATE:" format-time-string "%Y%m%d" current-time calendar-current-date diary-float "\nEXDATE;VALUE=DATE:" "\nRRULE:" "FREQ=YEARLY;BYMONTH=" "FREQ=MONTHLY" mapconcat #[(m) "\301!\207" [m number-to-string] 2] "," number-to-string ";BYDAY=" n day summary entry date x icalendar--weekday-array] 12 (#$ . 42144)])
#@206 Convert `diary-date' diary entry to iCalendar format -- unsupported!

FIXME!

NONMARKER is a regular expression matching the start of non-marking
entries.  ENTRY-MAIN is the first line of the diary entry.
(defalias 'icalendar--convert-date-to-ical #[(nonmarker entry-main) "\302\303P	\"\205\304\305	\"\210\306\307!\207" [nonmarker entry-main string-match "%%(diary-date \\([^)]+\\))\\s-*\\(.*?\\) ?$" icalendar--dmsg "diary-date %s" error "`diary-date' is not supported yet"] 3 (#$ . 43536)])
#@184 Convert `diary-cyclic' diary entry to iCalendar format.
NONMARKER is a regular expression matching the start of non-marking
entries.  ENTRY-MAIN is the first line of the diary entry.
(defalias 'icalendar--convert-cyclic-to-ical #[(nonmarker entry-main) "\306\307\310\311\312\313\314\315\260	\"\205\373	\316\224\316\225O	\317\224\317\225O\320!\320!\320\316\"+\321\322\224\2058	\322\224\322\225O\323\224\205C	\323\224\323\225O\",\321\324\224\205R	\324\224\324\225O\325\224\205]	\325\224\325\225O\"-\326	\327\224\327\225O!.\330\331	\"\210,\203\304-\204\304\332\333\334,\335\211/0123\336\337!\203\237\3373210/%\202\266\336\340!\205\266\341 4\342\216\340132/$*-!5\343\344\3455\\\"-)\346,\203\316\347\202\317\350\f,\206\326\334\351-\203\340\347\202\341\350-\203\352
\202\354+-\206\362\334\352\n\260\n..D\207" [nonmarker entry-main frequency datetime startisostring endisostring string-match "%%(diary-cyclic \\([^ ]+\\) +" "\\([^ /]+[ /]+[^ /]+[ /]+[^ ]+\\))\\s-*" "\\(\\([0-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?" "\\(" "-\\([0-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?\\)?" "\\)?" "\\s-*\\(.*?\\) ?$" 1 2 icalendar--datestring-to-isodate icalendar--diarytime-to-isotime 4 5 7 8 icalendar--convert-string-for-export 9 icalendar--dmsg "diary-cyclic %s" read "^T0?" "" nil fboundp replace-regexp-in-string replace-in-string match-data ((byte-code "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3)) format "T%06d" 10000 "\nDTSTART;" "VALUE=DATE-TIME:" "VALUE=DATE:" "\nDTEND;" "\nRRULE:FREQ=DAILY;INTERVAL=" endisostring+1 starttimestring endtimestring summary literal fixedcase string rep regexp save-match-data-internal time] 10 (#$ . 44039)])
#@189 Convert `diary-anniversary' diary entry to iCalendar format.
NONMARKER is a regular expression matching the start of non-marking
entries.  ENTRY-MAIN is the first line of the diary entry.
(defalias 'icalendar--convert-anniversary-to-ical #[(nonmarker entry-main) "\306\307\310\311\312\313\314\260	\"\205\350	\315\224\315\225O\316\n!\316\n\315\"\317\320\224\205+	\320\224\320\225O\321\224\2056	\321\224\321\225O\"\317\322\224\205D	\322\224\322\225O\323\224\205O	\323\224\323\225O\"+\324	\325\224\325\225O!,\326\327	\"\210
\203\264+\204\264\330\331\332
\333\211-./01\334\335!\203\217\33510/.-%\202\246\334\336!\205\246\337 2\340\216\336/10-$*-!3\341\342\3433\\\"+)\344
\203\275\345\202\276\346
\206\304\332\347+\203\316\345\202\317\346\f+\206\326\332\350\351\321\322O\352\322\325O\260
,.D\207" [nonmarker entry-main datetime startisostring endisostring starttimestring string-match "%%(diary-anniversary \\([^)]+\\))\\s-*" "\\(\\([0-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?" "\\(" "-\\([0-9][0-9]?:[0-9][0-9]\\)\\([ap]m\\)?\\)?" "\\)?" "\\s-*\\(.*?\\) ?$" 1 icalendar--datestring-to-isodate icalendar--diarytime-to-isotime 3 4 6 7 icalendar--convert-string-for-export 8 icalendar--dmsg "diary-anniversary %s" read "^T0?" "" nil fboundp replace-regexp-in-string replace-in-string match-data ((byte-code "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3)) format "T%06d" 10000 "\nDTSTART;" "VALUE=DATE-TIME:" "VALUE=DATE:" "\nDTEND;" "\nRRULE:FREQ=YEARLY;INTERVAL=1" ";BYMONTH=" ";BYMONTHDAY=" endtimestring summary literal fixedcase string rep regexp save-match-data-internal time] 15 (#$ . 45756)])
#@235 Import an iCalendar file and append to a diary file.
Argument ICAL-FILENAME output iCalendar file.
Argument DIARY-FILENAME input `diary-file'.
Optional argument NON-MARKING determines whether events are created as
non-marking or not.
(defalias 'icalendar-import-file #[(ical-filename diary-filename &optional non-marking) "r\303!q\210\304	\305\n#)\207" [ical-filename diary-filename non-marking find-file icalendar-import-buffer t] 4 (#$ . 47426) "fImport iCalendar data from file: \nFinto diary file:\np"])
#@597 Extract iCalendar events from current buffer.

This function searches the current buffer for the first iCalendar
object, reads it and adds all VEVENT elements to the diary
DIARY-FILE.

It will ask for each appointment whether to add it to the diary
unless DO-NOT-ASK is non-nil.  When called interactively,
DO-NOT-ASK is nil, so that you are asked for each event.

NON-MARKING determines whether diary events are created as
non-marking.

Return code t means that importing worked well, return code nil
means that an error has occurred.  Error messages will be in the
buffer `*icalendar-errors*'.
(defalias 'icalendar-import-buffer #[(&optional diary-file do-not-ask non-marking) "r\306\307!\210\310p!q\210eb\210\306\311!\210\312\313\314\315#\203W\314\211\306\316!\210\317 \210\320\314\211\"\306\321!\210\306\322!\210\323	\n\f$\n\203M\324\n!\211\203Lr
q\210\325 \210))\306\326!\210*?\202\\\306\327!\210\314)\207" [ical-errors ical-contents diary-file do-not-ask non-marking b message "Preparing iCalendar..." icalendar--get-unfolded-buffer "Preparing iCalendar...done" re-search-forward "^BEGIN:VCALENDAR\\s-*$" nil t "Reading iCalendar..." beginning-of-line icalendar--read-element "Reading iCalendar...done" "Converting iCalendar..." icalendar--convert-ical-to-diary find-buffer-visiting save-buffer "Converting iCalendar...done" "Current buffer does not contain iCalendar contents!"] 6 (#$ . 47942) nil])
(byte-code "\300\301\302\303#\210\304\301\302\305#\207" [defalias icalendar-extract-ical-from-buffer icalendar-import-buffer nil make-obsolete "22.1"] 4)
#@55 Create a string representation of an iCalendar EVENT.
(defalias 'icalendar--format-ical-event #[(event) "\305!\203\n	!\207\306\307\310\311\n\"\210\f+\207" [icalendar-import-format event conversion-list case-fold-search string functionp nil (("%c" CLASS icalendar-import-format-class) ("%d" DESCRIPTION icalendar-import-format-description) ("%l" LOCATION icalendar-import-format-location) ("%o" ORGANIZER icalendar-import-format-organizer) ("%s" SUMMARY icalendar-import-format-summary) ("%t" STATUS icalendar-import-format-status) ("%u" URL icalendar-import-format-url) ("%U" UID icalendar-import-format-uid)) mapc #[(i) "@\211A@)\211AA)@\306
\"\307\203jG\310V\203j\311\312!\fJ\313\211\314\315!\203P\315%\202g\314\316!\205g\317 \320\216\316$*-	\313\211\314\315!\203\220\315%\202\247\314\316!\205\247\317 \320\216\316$*-\211-\207" [i spec x prop format event icalendar--get-event-property "" 0 "%s" icalendar--convert-string-for-import t fboundp replace-regexp-in-string replace-in-string match-data ((byte-code "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3)) contents formatted-contents literal fixedcase string rep regexp save-match-data-internal] 7]] 3 (#$ . 49520)])
#@473 Convert iCalendar data to an Emacs diary file.
Import VEVENTS from the iCalendar object ICAL-LIST and saves them to a
DIARY-FILE.  If DO-NOT-ASK is nil the user is asked for each event
whether to actually import it.  NON-MARKING determines whether diary
events are created as non-marking.
This function attempts to return t if something goes wrong.  In this
case an error string which describes all the errors and problems is
written into the buffer `*icalendar-errors*'.
(defalias 'icalendar--convert-ical-to-diary #[(ical-list diary-file &optional do-not-ask non-marking) "\306!\307\310\311\312!\311\211	\203)	@	A\311\313\314\315\217\210\202\203E\316!\211\203Drq\210db\210\317c\210))\f\203Vr\320\321!q\210\322 \210\nc\210)\323\324!\210\f.\207" [ical-list ev error-string event-ok found-error zone-map icalendar--all-events #1="" t nil icalendar--convert-all-timezones error-val (byte-code "\306\307\"\310\311\307\"\n\"\312	\313#\314\f!\315\f!.\306\316\"/\310\311\316\"\n\"0\312/\3130#1\312/\3170#2\313\21134\3135\320\306\321\"\206O\322!6\306\323\"7\306\324\"8\306\325\"9\326\327
6#\210	\203\201\311\307\"\211:A@)\330\230\203\201\313.9\203\265\331\f\3329!\"\331\f\3329\333\"\";<1\203\2541<=\204\254\334\3356\"\210<1;2*1\203\301\3141!\202\302
32\203\320\3142!\202\321
41\203\356\311\316\"\211:A@)\330\230\204\356\3151!\202\360.5\326\336
3#\2107\203\337\f.5$=\333>\202k8\203%\326\340!\210\341=\342\343\3448!\"\210\202k
3\230\204:\345
4#=\333>\202k.\203^5\203L.5\230\204^\346\f1.5%=\333>\202k\326\347!\210\314\f\350\"=\333>>\203\220=\351\352!Q=?\203\201\3136\353=@A6$@\202\233\333B\354\355C#C.\313\207" [e dtstart zone-map dtstart-zone dtstart-dec start-d icalendar--get-event-property DTSTART icalendar--find-time-zone icalendar--get-event-property-attributes icalendar--decode-isodatetime nil icalendar--datetime-to-diary-date icalendar--datetime-to-colontime DTEND -1 icalendar--convert-string-for-import SUMMARY "No summary" RRULE RDATE DURATION icalendar--dmsg "%s: `%s'" "DATE" icalendar--add-decoded-times icalendar--decode-isoduration t message "Inconsistent endtime and duration for %s" "start-d: %s, end-d: %s" icalendar--convert-recurring-to-diary "rdate event" #1# mapc #[(datestring) "\301\302!P\211\207" [diary-string format "......"] 3] icalendar--split-value icalendar--convert-non-recurring-all-day-to-diary icalendar--convert-non-recurring-not-all-day-to-diary "all day event" "/" " " icalendar--format-ical-event icalendar--add-diary-entry format "%s\nCannot handle this event:%s" start-t dtend dtend-zone dtend-dec dtend-1-dec end-d end-1-d end-t summary rrule rdate duration x dtend-1-dec-d dtend-dec-d diary-string event-ok do-not-ask diary-file non-marking found-error error-string] 7) ((error (byte-code "\304\305\"\210\306\307\310\n$\304\311\"\207" [e found-error error-val error-string message "Ignoring event \"%s\"" t format "%s\n%s\nCannot handle this event: %s" "%s"] 5))) find-buffer-visiting "\n" get-buffer-create "*icalendar-errors*" erase-buffer message "Converting iCalendar...done" e diary-string diary-file b] 4 (#$ . 50825)])
#@195 Convert recurring iCalendar event E to diary format.

DTSTART-DEC is the DTSTART property of E.
START-T is the event's start time in diary format.
END-T is the event's end time in diary format.
(defalias 'icalendar--convert-recurring-to-diary #[(e dtstart-dec start-t end-t) "\306\307!\210\310\311\"\312	!\313\314\n\"\211A@)\313\315\n\"\211A@)\313\316\n\"\211A@)@\317\313\320\n\"\211A@)\206:\321!A\322B!C\322\323
!!D\322\323
\324\"!E\325F@\203C
\203e\326\327!\210\202C\330G\f\331\230\203\231\332B\330\211\211\317@!A_\330\211\257\"\332B\330\211\211\317@!SA_\330\211\257\"G\2027\f\333\230\203\316\332B\330\211\211\334\317@!A\335#\330\211\257\"\332B\330\211\211\334\317@!SA\335#\330\211\257\"G\2027\f\336\230\203\332B\330\211\211\211\317@!SA_\330\257\"\332B\330\211\211\211\317@!SA_\330\257\"G\2027\f\337\230\2032\332B\330\211\211\211\211\317@!SA_\257\"\332B\330\211\211\211\211\317@!SA_\257\"G\2027\326\340\f\"\210\322
!D\322G!E)\f\333\230\203$\313\341\n\"\211A@)H\342H!\211IG\343V\205f\344\345I\"JK\204\266\306\346!\210
\203\231\344\347J\206\205\344\350A\335_C#C@\203\221E\202\223D$F\202 \344\351J\206\241\325J\203\252\343\202\256A\335_C$F\202 \306\352!\210
\203\357\344\353J\206\316\344\350A\335_C#CDK\206\330\325L\203\341\354\202\342\325L\206\350\325&F\202 \344\355J\206\367\325J\203\343\202A\335_CK\206\f\325L\203\354\202\325L\206\325&F+\202\211\f\337\230\203\264\306\356!\210
\203\224\357B8\360B8MN\361\362 \363=\203P\344\364MN#\202o\362 \365=\203a\344\366NM#\202o\362 \367=\205o\344\366MN#\370C\371D\372K\206|\325L\203\205\354\202\206\325L\206\214\325\260\nF*\202\211\344\373CK\206\236\325L\203\247\354\202\250\325L\206\256\325%F\202\211\f\336\230\203+\306\374!\210\344\375\357B8N\362 \363=\203\325\344\376N\"\202\362\362 \365=\203\344\344\377N\"\202\362\362 \367=\205\362\344\201XN\")C
\203\376D\202\362 \363=\203\201Y\202\201ZK\206\325L\203\354\202\325L\206$\325&F\202\211\f\331\230\203\211
\203g\344\201[AC\211@\203HE\202JDK\206P\325L\203Y\354\202Z\325L\206`\325&F\202\211\344\201\\ACK\206u\325L\203~\354\202\325L\206\205\325&F\201]\201^\"\211O\203\323O@!P\322P!Q\201_\344\201`Q\"F\201a\211RSTUV\201b\201c!\203\331\201cVUTSR%\202\372\201b\201d!\205\372\201e W\201f\216\201dTVUR$*-F*OA\211O\204\227)\310\201g\"\203!F\201h\201]\201g\"QFF.\n\207" [e rrule rrule-props x frequency until icalendar--dmsg "recurring event" icalendar--get-event-property RRULE icalendar--split-value assoc FREQ UNTIL COUNT read INTERVAL "1" icalendar--datetime-to-diary-date icalendar--decode-isodatetime -1 "" message "Must not have UNTIL and COUNT -- ignoring COUNT element!" 0 "DAILY" icalendar--add-decoded-times "WEEKLY" * 7 "MONTHLY" "YEARLY" "Cannot handle COUNT attribute for `%s' events." BYDAY icalendar--get-weekday-numbers 1 format "(memq (calendar-day-of-week date) '%s) " "weekly all-day" "%%%%(and %s(diary-block %s %s))" "(diary-cyclic %d %s) " "%%%%(and %s(diary-cyclic %d %s))" "weekly not-all-day" "%%%%(and %s(diary-block %s %s)) %s%s%s" "-" "%%%%(and %s(diary-cyclic %d %s)) %s%s%s" "yearly" 3 4 "%%(and (diary-date " icalendar--date-style iso "t %d %d" european "%d %d t" american ") (diary-block " " " ")) " "%%%%(and (diary-anniversary %s)) %s%s%s" "monthly" "%%%%(and (diary-date %s) (diary-block %s %s)) %s%s%s" "t t %d" "%d t t" count interval dtstart-dec dtstart-conv until-conv until-1-conv result until-1 byday weekdays weekday-clause start-t end-t month day ex-dates ex-start ex-d literal fixedcase string rep regexp save-match-data-internal "t %d t" "9999 1 1" "1 1 9999" "%%%%(and (diary-cyclic %s %s) (diary-block %s %s)) %s%s%s" "%%%%(and (diary-cyclic %s %s)) %s%s%s" icalendar--get-event-properties EXDATE "^%%(\\(and \\)?" "%%%%(and (not (diary-date %s)) " nil fboundp replace-regexp-in-string replace-in-string match-data ((byte-code "\301\302\"\207" [save-match-data-internal set-match-data evaporate] 3)) EXRULE "\n Exception rules: "] 11 (#$ . 54061)])
#@176 Convert non-recurring iCalendar EVENT to diary format.

DTSTART is the decoded DTSTART property of E.
Argument START-D gives the first day.
Argument END-D gives the last day.
(defalias 'icalendar--convert-non-recurring-all-day-to-diary #[(event start-d end-d) "\302\303!\210\304\305	#\207" [start-d end-d icalendar--dmsg "non-recurring all-day event" format "%%%%(and (diary-block %s %s))"] 4 (#$ . 58254)])
#@247 Convert recurring icalendar EVENT to diary format.

DTSTART-DEC is the decoded DTSTART property of E.
DTEND-DEC is the decoded DTEND property of E.
START-T is the event's start time in diary format.
END-T is the event's end time in diary format.
(defalias 'icalendar--convert-non-recurring-not-all-day-to-diary #[(event dtstart-dec dtend-dec start-t end-t) "\303\304!\210\203\305\306\307	\310\"\n$\207\305\311\307	\310\"\n#\207" [end-t dtstart-dec start-t icalendar--dmsg "not all day event" format "%s %s-%s" icalendar--datetime-to-diary-date "/" "%s %s"] 5 (#$ . 58670)])
#@325 Add STRING to the diary file DIARY-FILE.
STRING must be a properly formatted valid diary entry.  NON-MARKING
determines whether diary events are created as non-marking.  If
SUMMARY is not nil it must be a string that gives the summary of the
entry.  In this case the user will be asked whether he wants to insert
the entry.
(defalias 'icalendar--add-diary-entry #[(string diary-file non-marking &optional summary) "\203
\305\306\307\"!\2035\203\305\306\310!!\311 \312\216\204$\313\314!\315\316!\203.\316\202/\317\f	#\210*r\320!q\210db\210`Sf\321U\203J\322\323!\210)\207" [summary non-marking #1=#:wconfig diary-file string y-or-n-p format "Add appointment for `%s' to diary? " "Make appointment non-marking? " current-window-configuration ((set-window-configuration #1#)) read-file-name "Add appointment to this diary file: " fboundp diary-make-entry make-diary-entry find-file 32 delete-char -1] 4 (#$ . 59255)])
#@53 Example function for formatting an iCalendar EVENT.
(defalias 'icalendar-import-format-sample #[(event) "\301\302\303\304\"\206\n\305\303\306\"\206\305\303\307\"\206\305\303\310\"\206\"\305\303\311\"\206*\305\303\312\"\2062\305\303\313\"\206:\305&\207" [event format "SUMMARY=`%s' DESCRIPTION=`%s' LOCATION=`%s' ORGANIZER=`%s' STATUS=`%s' URL=`%s' CLASS=`%s'" icalendar--get-event-property SUMMARY "" DESCRIPTION LOCATION ORGANIZER STATUS URL CLASS] 11 (#$ . 60193)])
(provide 'icalendar)

MMCT - 2023