mirror of
https://github.com/stalwartlabs/mail-server.git
synced 2025-09-19 10:24:34 +08:00
430 lines
12 KiB
Text
430 lines
12 KiB
Text
# RFC6638 - Recurring Event Scheduling
|
|
|
|
# Organizer invites participant to a recurring event
|
|
> put cyrus@example.com 9263504FD3AD
|
|
BEGIN:VCALENDAR
|
|
VERSION:2.0
|
|
PRODID:-//Example Corp.//CalDAV Client//EN
|
|
BEGIN:VTIMEZONE
|
|
TZID:America/Montreal
|
|
BEGIN:STANDARD
|
|
DTSTART:20071104T020000
|
|
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
|
|
TZNAME:EST
|
|
TZOFFSETFROM:-0400
|
|
TZOFFSETTO:-0500
|
|
END:STANDARD
|
|
BEGIN:DAYLIGHT
|
|
DTSTART:20070311T020000
|
|
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
|
|
TZNAME:EDT
|
|
TZOFFSETFROM:-0500
|
|
TZOFFSETTO:-0400
|
|
END:DAYLIGHT
|
|
END:VTIMEZONE
|
|
BEGIN:VEVENT
|
|
UID:9263504FD3AD
|
|
SEQUENCE:0
|
|
DTSTAMP:20090602T185254Z
|
|
DTSTART;TZID=America/Montreal:20090601T150000
|
|
DTEND;TZID=America/Montreal:20090601T160000
|
|
RRULE:FREQ=DAILY;INTERVAL=1;COUNT=5
|
|
TRANSP:OPAQUE
|
|
SUMMARY:Review Internet-Draft
|
|
ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
|
|
ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:mailto:cyrus@example.com
|
|
ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@example.net
|
|
END:VEVENT
|
|
END:VCALENDAR
|
|
|
|
> expect
|
|
from: cyrus@example.com
|
|
to: bernard@example.net
|
|
summary: invite
|
|
summary.attendee: Participants([ItipParticipant { email: "cyrus@example.com", name: Some("Cyrus Daboo"), is_organizer: true }, ItipParticipant { email: "bernard@example.net", name: Some("Bernard Desruisseaux"), is_organizer: false }])
|
|
summary.dtstart: Time(ItipTime { start: 1243882800, tz_id: 167 })
|
|
summary.rrule: Rrule(ICalendarRecurrenceRule { freq: Daily, until: None, count: Some(5), interval: Some(1), bysecond: [], byminute: [], byhour: [], byday: [], bymonthday: [], byyearday: [], byweekno: [], bymonth: [], bysetpos: [], wkst: None })
|
|
summary.summary: Text("Review Internet-Draft")
|
|
BEGIN:VCALENDAR
|
|
METHOD:REQUEST
|
|
PRODID:-//Stalwart Labs LLC//Stalwart Server//EN
|
|
VERSION:2.0
|
|
BEGIN:VEVENT
|
|
SUMMARY:Review Internet-Draft
|
|
DTEND;TZID=America/Montreal:20090601T160000
|
|
DTSTART;TZID=America/Montreal:20090601T150000
|
|
TRANSP:OPAQUE
|
|
ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;RSVP=
|
|
TRUE;PARTSTAT=NEEDS-ACTION:mailto:bernard@example.net
|
|
ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:mailto:cyrus@e
|
|
xample.com
|
|
ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
|
|
UID:9263504FD3AD
|
|
RRULE:FREQ=DAILY;COUNT=5;INTERVAL=1
|
|
DTSTAMP:0
|
|
SEQUENCE:1
|
|
END:VEVENT
|
|
BEGIN:VTIMEZONE
|
|
TZID:America/Montreal
|
|
BEGIN:STANDARD
|
|
DTSTART:20071104T020000
|
|
TZNAME:EST
|
|
TZOFFSETFROM:-0400
|
|
TZOFFSETTO:-0500
|
|
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
|
|
END:STANDARD
|
|
BEGIN:DAYLIGHT
|
|
DTSTART:20070311T020000
|
|
TZNAME:EDT
|
|
TZOFFSETFROM:-0500
|
|
TZOFFSETTO:-0400
|
|
RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
|
|
END:DAYLIGHT
|
|
END:VTIMEZONE
|
|
END:VCALENDAR
|
|
|
|
# Send iTIP message to participant
|
|
> send
|
|
|
|
# Make sure the participant receives the event
|
|
> get bernard@example.net 9263504FD3AD
|
|
BEGIN:VCALENDAR
|
|
PRODID:-//Stalwart Labs LLC//Stalwart Server//EN
|
|
VERSION:2.0
|
|
BEGIN:VEVENT
|
|
SUMMARY:Review Internet-Draft
|
|
DTEND;TZID=America/Montreal:20090601T160000
|
|
DTSTART;TZID=America/Montreal:20090601T150000
|
|
TRANSP:OPAQUE
|
|
ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;RSVP=
|
|
TRUE;PARTSTAT=NEEDS-ACTION:mailto:bernard@example.net
|
|
ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:mailto:cyrus@e
|
|
xample.com
|
|
ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
|
|
UID:9263504FD3AD
|
|
RRULE:FREQ=DAILY;COUNT=5;INTERVAL=1
|
|
DTSTAMP:0
|
|
SEQUENCE:1
|
|
END:VEVENT
|
|
BEGIN:VTIMEZONE
|
|
TZID:America/Montreal
|
|
BEGIN:STANDARD
|
|
DTSTART:20071104T020000
|
|
TZNAME:EST
|
|
TZOFFSETFROM:-0400
|
|
TZOFFSETTO:-0500
|
|
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
|
|
END:STANDARD
|
|
BEGIN:DAYLIGHT
|
|
DTSTART:20070311T020000
|
|
TZNAME:EDT
|
|
TZOFFSETFROM:-0500
|
|
TZOFFSETTO:-0400
|
|
RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
|
|
END:DAYLIGHT
|
|
END:VTIMEZONE
|
|
END:VCALENDAR
|
|
|
|
# Participant declines an instance of the recurring event
|
|
> put bernard@example.net 9263504FD3AD
|
|
BEGIN:VCALENDAR
|
|
VERSION:2.0
|
|
PRODID:-//Example Corp.//CalDAV Client//EN
|
|
BEGIN:VTIMEZONE
|
|
TZID:America/Montreal
|
|
BEGIN:STANDARD
|
|
DTSTART:20071104T020000
|
|
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
|
|
TZNAME:EST
|
|
TZOFFSETFROM:-0400
|
|
TZOFFSETTO:-0500
|
|
END:STANDARD
|
|
BEGIN:DAYLIGHT
|
|
DTSTART:20070311T020000
|
|
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
|
|
TZNAME:EDT
|
|
TZOFFSETFROM:-0500
|
|
TZOFFSETTO:-0400
|
|
END:DAYLIGHT
|
|
END:VTIMEZONE
|
|
BEGIN:VEVENT
|
|
UID:9263504FD3AD
|
|
SEQUENCE:1
|
|
DTSTAMP:20090602T185254Z
|
|
DTSTART;TZID=America/Montreal:20090601T150000
|
|
DTEND;TZID=America/Montreal:20090601T160000
|
|
RRULE:FREQ=DAILY;INTERVAL=1;COUNT=5
|
|
TRANSP:OPAQUE
|
|
SUMMARY:Review Internet-Draft
|
|
ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
|
|
ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:mailto:cyrus@example.com
|
|
ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@example.net
|
|
END:VEVENT
|
|
BEGIN:VEVENT
|
|
UID:9263504FD3AD
|
|
SEQUENCE:1
|
|
DTSTAMP:20090603T183823Z
|
|
RECURRENCE-ID;TZID=America/Montreal:20090602T150000
|
|
DTSTART;TZID=America/Montreal:20090602T150000
|
|
DTEND;TZID=America/Montreal:20090602T160000
|
|
TRANSP:TRANSPARENT
|
|
SUMMARY:Review Internet-Draft
|
|
ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
|
|
ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:mailto:cyrus@example.com
|
|
ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=DECLINED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@example.net
|
|
END:VEVENT
|
|
END:VCALENDAR
|
|
|
|
> expect
|
|
from: bernard@example.net
|
|
to: cyrus@example.com
|
|
summary: rsvp ACCEPTED
|
|
summary.attendee: Participants([ItipParticipant { email: "cyrus@example.com", name: Some("Cyrus Daboo"), is_organizer: true }, ItipParticipant { email: "bernard@example.net", name: Some("Bernard Desruisseaux"), is_organizer: false }])
|
|
summary.dtstart: Time(ItipTime { start: 1243882800, tz_id: 167 })
|
|
summary.rrule: Rrule(ICalendarRecurrenceRule { freq: Daily, until: None, count: Some(5), interval: Some(1), bysecond: [], byminute: [], byhour: [], byday: [], bymonthday: [], byyearday: [], byweekno: [], bymonth: [], bysetpos: [], wkst: None })
|
|
summary.summary: Text("Review Internet-Draft")
|
|
BEGIN:VCALENDAR
|
|
METHOD:REPLY
|
|
PRODID:-//Stalwart Labs LLC//Stalwart Server//EN
|
|
VERSION:2.0
|
|
BEGIN:VEVENT
|
|
ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED;ROLE=
|
|
REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@example.net
|
|
ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
|
|
UID:9263504FD3AD
|
|
DTSTAMP:0
|
|
SEQUENCE:1
|
|
REQUEST-STATUS:2.0;Success
|
|
END:VEVENT
|
|
BEGIN:VEVENT
|
|
ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=DECLINED;ROLE=
|
|
REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@example.net
|
|
ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
|
|
RECURRENCE-ID;TZID=America/Montreal:20090602T150000
|
|
UID:9263504FD3AD
|
|
DTSTAMP:0
|
|
SEQUENCE:1
|
|
REQUEST-STATUS:2.0;Success
|
|
END:VEVENT
|
|
BEGIN:VTIMEZONE
|
|
TZID:America/Montreal
|
|
BEGIN:STANDARD
|
|
DTSTART:20071104T020000
|
|
TZNAME:EST
|
|
TZOFFSETFROM:-0400
|
|
TZOFFSETTO:-0500
|
|
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
|
|
END:STANDARD
|
|
BEGIN:DAYLIGHT
|
|
DTSTART:20070311T020000
|
|
TZNAME:EDT
|
|
TZOFFSETFROM:-0500
|
|
TZOFFSETTO:-0400
|
|
RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
|
|
END:DAYLIGHT
|
|
END:VTIMEZONE
|
|
END:VCALENDAR
|
|
|
|
# Send iTIP message to organizer
|
|
> send
|
|
|
|
# Organizer receives the response
|
|
> get cyrus@example.com 9263504FD3AD
|
|
BEGIN:VCALENDAR
|
|
PRODID:-//Example Corp.//CalDAV Client//EN
|
|
VERSION:2.0
|
|
BEGIN:VEVENT
|
|
SUMMARY:Review Internet-Draft
|
|
DTEND;TZID=America/Montreal:20090601T160000
|
|
DTSTART;TZID=America/Montreal:20090601T150000
|
|
TRANSP:OPAQUE
|
|
ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;RSVP=
|
|
TRUE;PARTSTAT=ACCEPTED;SCHEDULE-STATUS=2.0:mailto:bernard@example.net
|
|
ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:mailto:cyrus@e
|
|
xample.com
|
|
ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
|
|
UID:9263504FD3AD
|
|
RRULE:FREQ=DAILY;COUNT=5;INTERVAL=1
|
|
DTSTAMP:1
|
|
SEQUENCE:1
|
|
END:VEVENT
|
|
BEGIN:VEVENT
|
|
ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=DECLINED;ROLE=
|
|
REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@example.net
|
|
ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
|
|
RECURRENCE-ID;TZID=America/Montreal:20090602T150000
|
|
UID:9263504FD3AD
|
|
DTSTAMP:0
|
|
SEQUENCE:1
|
|
END:VEVENT
|
|
BEGIN:VTIMEZONE
|
|
TZID:America/Montreal
|
|
BEGIN:STANDARD
|
|
DTSTART:20071104T020000
|
|
TZNAME:EST
|
|
TZOFFSETFROM:-0400
|
|
TZOFFSETTO:-0500
|
|
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
|
|
END:STANDARD
|
|
BEGIN:DAYLIGHT
|
|
DTSTART:20070311T020000
|
|
TZNAME:EDT
|
|
TZOFFSETFROM:-0500
|
|
TZOFFSETTO:-0400
|
|
RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
|
|
END:DAYLIGHT
|
|
END:VTIMEZONE
|
|
END:VCALENDAR
|
|
|
|
# Participant removes an instance of the recurring event
|
|
> put bernard@example.net 9263504FD3AD
|
|
BEGIN:VCALENDAR
|
|
VERSION:2.0
|
|
PRODID:-//Example Corp.//CalDAV Client//EN
|
|
BEGIN:VTIMEZONE
|
|
TZID:America/Montreal
|
|
BEGIN:STANDARD
|
|
DTSTART:20071104T020000
|
|
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
|
|
TZNAME:EST
|
|
TZOFFSETFROM:-0400
|
|
TZOFFSETTO:-0500
|
|
END:STANDARD
|
|
BEGIN:DAYLIGHT
|
|
DTSTART:20070311T020000
|
|
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
|
|
TZNAME:EDT
|
|
TZOFFSETFROM:-0500
|
|
TZOFFSETTO:-0400
|
|
END:DAYLIGHT
|
|
END:VTIMEZONE
|
|
BEGIN:VEVENT
|
|
UID:9263504FD3AD
|
|
SEQUENCE:1
|
|
DTSTAMP:20090602T185254Z
|
|
DTSTART;TZID=America/Montreal:20090601T150000
|
|
DTEND;TZID=America/Montreal:20090601T160000
|
|
RRULE:FREQ=DAILY;INTERVAL=1;COUNT=5
|
|
EXDATE;TZID=America/Montreal:20090603T150000
|
|
TRANSP:OPAQUE
|
|
SUMMARY:Review Internet-Draft
|
|
ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
|
|
ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:mailto:cyrus@example.com
|
|
ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@example.net
|
|
END:VEVENT
|
|
BEGIN:VEVENT
|
|
UID:9263504FD3AD
|
|
SEQUENCE:1
|
|
DTSTAMP:20090603T183823Z
|
|
RECURRENCE-ID;TZID=America/Montreal:20090602T150000
|
|
DTSTART;TZID=America/Montreal:20090602T150000
|
|
DTEND;TZID=America/Montreal:20090602T160000
|
|
TRANSP:TRANSPARENT
|
|
SUMMARY:Review Internet-Draft
|
|
ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
|
|
ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:mailto:cyrus@example.com
|
|
ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=DECLINED;ROLE=REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@example.net
|
|
END:VEVENT
|
|
END:VCALENDAR
|
|
|
|
> expect
|
|
from: bernard@example.net
|
|
to: cyrus@example.com
|
|
summary: rsvp DECLINED
|
|
summary.attendee: Participants([ItipParticipant { email: "cyrus@example.com", name: Some("Cyrus Daboo"), is_organizer: true }, ItipParticipant { email: "bernard@example.net", name: Some("Bernard Desruisseaux"), is_organizer: false }])
|
|
summary.dtstart: Time(ItipTime { start: 1243882800, tz_id: 167 })
|
|
summary.rrule: Rrule(ICalendarRecurrenceRule { freq: Daily, until: None, count: Some(5), interval: Some(1), bysecond: [], byminute: [], byhour: [], byday: [], bymonthday: [], byyearday: [], byweekno: [], bymonth: [], bysetpos: [], wkst: None })
|
|
summary.summary: Text("Review Internet-Draft")
|
|
BEGIN:VCALENDAR
|
|
METHOD:REPLY
|
|
PRODID:-//Stalwart Labs LLC//Stalwart Server//EN
|
|
VERSION:2.0
|
|
BEGIN:VEVENT
|
|
ATTENDEE;PARTSTAT=DECLINED:mailto:bernard@example.net
|
|
ORGANIZER:mailto:cyrus@example.com
|
|
RECURRENCE-ID;TZID=America/Montreal:20090603T150000
|
|
UID:9263504FD3AD
|
|
DTSTAMP:0
|
|
SEQUENCE:1
|
|
END:VEVENT
|
|
BEGIN:VTIMEZONE
|
|
TZID:America/Montreal
|
|
BEGIN:STANDARD
|
|
DTSTART:20071104T020000
|
|
TZNAME:EST
|
|
TZOFFSETFROM:-0400
|
|
TZOFFSETTO:-0500
|
|
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
|
|
END:STANDARD
|
|
BEGIN:DAYLIGHT
|
|
DTSTART:20070311T020000
|
|
TZNAME:EDT
|
|
TZOFFSETFROM:-0500
|
|
TZOFFSETTO:-0400
|
|
RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
|
|
END:DAYLIGHT
|
|
END:VTIMEZONE
|
|
END:VCALENDAR
|
|
|
|
# Send iTIP message to organizer
|
|
> send
|
|
|
|
# Organizer receives the response
|
|
> get cyrus@example.com 9263504FD3AD
|
|
BEGIN:VCALENDAR
|
|
PRODID:-//Example Corp.//CalDAV Client//EN
|
|
VERSION:2.0
|
|
BEGIN:VEVENT
|
|
ATTENDEE;PARTSTAT=DECLINED:mailto:bernard@example.net
|
|
ORGANIZER:mailto:cyrus@example.com
|
|
RECURRENCE-ID;TZID=America/Montreal:20090603T150000
|
|
UID:9263504FD3AD
|
|
DTSTAMP:0
|
|
SEQUENCE:1
|
|
END:VEVENT
|
|
BEGIN:VEVENT
|
|
SUMMARY:Review Internet-Draft
|
|
DTEND;TZID=America/Montreal:20090601T160000
|
|
DTSTART;TZID=America/Montreal:20090601T150000
|
|
TRANSP:OPAQUE
|
|
ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;RSVP=
|
|
TRUE;PARTSTAT=ACCEPTED;SCHEDULE-STATUS=2.0:mailto:bernard@example.net
|
|
ATTENDEE;CN="Cyrus Daboo";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:mailto:cyrus@e
|
|
xample.com
|
|
ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
|
|
UID:9263504FD3AD
|
|
RRULE:FREQ=DAILY;COUNT=5;INTERVAL=1
|
|
DTSTAMP:1
|
|
SEQUENCE:1
|
|
END:VEVENT
|
|
BEGIN:VEVENT
|
|
ATTENDEE;CN="Bernard Desruisseaux";CUTYPE=INDIVIDUAL;PARTSTAT=DECLINED;ROLE=
|
|
REQ-PARTICIPANT;RSVP=TRUE:mailto:bernard@example.net
|
|
ORGANIZER;CN="Cyrus Daboo":mailto:cyrus@example.com
|
|
RECURRENCE-ID;TZID=America/Montreal:20090602T150000
|
|
UID:9263504FD3AD
|
|
DTSTAMP:0
|
|
SEQUENCE:1
|
|
END:VEVENT
|
|
BEGIN:VTIMEZONE
|
|
TZID:America/Montreal
|
|
BEGIN:STANDARD
|
|
DTSTART:20071104T020000
|
|
TZNAME:EST
|
|
TZOFFSETFROM:-0400
|
|
TZOFFSETTO:-0500
|
|
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
|
|
END:STANDARD
|
|
BEGIN:DAYLIGHT
|
|
DTSTART:20070311T020000
|
|
TZNAME:EDT
|
|
TZOFFSETFROM:-0500
|
|
TZOFFSETTO:-0400
|
|
RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
|
|
END:DAYLIGHT
|
|
END:VTIMEZONE
|
|
END:VCALENDAR
|
|
|
|
|
|
|
|
|