From 939675651a8214f6128449e9f9c14af1e2e6eef4 Mon Sep 17 00:00:00 2001 From: "mvl%exedo.nl" Date: Wed, 5 Jan 2005 20:09:32 +0000 Subject: [PATCH] This commit was generated by cvs2svn to compensate for changes in r167305, which included commits to RCS files with non-trunk default branches. git-svn-id: svn://10.0.0.236/trunk@167306 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/calendar/libical/AUTHORS | 4 + mozilla/calendar/libical/ChangeLog | 811 + mozilla/calendar/libical/LICENSE | 33 + mozilla/calendar/libical/NEWS | 522 + mozilla/calendar/libical/README | 102 + mozilla/calendar/libical/THANKS | 69 + mozilla/calendar/libical/TODO | 39 + .../calendar/libical/design-data/Makefile.am | 6 + .../calendar/libical/design-data/Makefile.in | 242 + .../libical/design-data/components.txt | 22 + .../libical/design-data/parameters.csv | 33 + .../libical/design-data/params-in-prop.txt | 57 + .../libical/design-data/properties.csv | 108 + .../libical/design-data/restrictions.csv | 1420 + .../calendar/libical/design-data/status.txt | 56 + .../libical/design-data/value-types.csv | 35 + mozilla/calendar/libical/scripts/Makefile.am | 9 + mozilla/calendar/libical/scripts/Makefile.in | 245 + .../libical/scripts/mkderivedcomponents.pl | 170 + .../libical/scripts/mkderivedparameters.pl | 332 + .../libical/scripts/mkderivedproperties.pl | 258 + .../libical/scripts/mkderivedvalues.pl | 236 + mozilla/calendar/libical/scripts/mkinclude.sh | 39 + .../calendar/libical/scripts/mkneticali.pl | 99 + .../scripts/mkparameterrestrictions.pl | 85 + .../libical/scripts/mkrestrictionrecords.pl | 109 + .../libical/scripts/mkrestrictiontable.pl | 98 + .../libical/scripts/readvaluesfile.pl | 133 + mozilla/calendar/libical/src/Makefile.am | 19 + mozilla/calendar/libical/src/Makefile.in | 362 + .../calendar/libical/src/libical/Makefile.am | 284 + .../calendar/libical/src/libical/Makefile.in | 776 + mozilla/calendar/libical/src/libical/astime.h | 65 + .../libical/src/libical/autogenex/ical.h | 3622 ++ .../libical/autogenex/icalderivedparameter.c | 1202 + .../libical/autogenex/icalderivedparameter.h | 310 + .../libical/autogenex/icalderivedproperty.c | 2514 + .../libical/autogenex/icalderivedproperty.h | 473 + .../src/libical/autogenex/icalderivedvalue.c | 1007 + .../src/libical/autogenex/icalderivedvalue.h | 324 + .../src/libical/autogenex/icalrestriction.c | 1861 + .../src/libical/autogenex/icalversion.h | 7 + .../calendar/libical/src/libical/caldate.c | 176 + .../calendar/libical/src/libical/icalarray.c | 163 + .../calendar/libical/src/libical/icalarray.h | 63 + .../calendar/libical/src/libical/icalattach.c | 139 + .../calendar/libical/src/libical/icalattach.h | 60 + .../libical/src/libical/icalattachimpl.h | 59 + .../libical/src/libical/icalcomponent.c | 2652 + .../libical/src/libical/icalcomponent.h | 287 + .../src/libical/icalderivedparameter.c.in | 205 + .../src/libical/icalderivedparameter.h.in | 38 + .../src/libical/icalderivedproperty.c.in | 285 + .../src/libical/icalderivedproperty.h.in | 22 + .../libical/src/libical/icalderivedvalue.c.in | 337 + .../libical/src/libical/icalderivedvalue.h.in | 65 + .../libical/src/libical/icalduration.c | 332 + .../libical/src/libical/icalduration.h | 62 + .../calendar/libical/src/libical/icalenums.c | 166 + .../calendar/libical/src/libical/icalenums.h | 166 + .../calendar/libical/src/libical/icalerror.c | 251 + .../calendar/libical/src/libical/icalerror.h | 160 + .../libical/src/libical/icallangbind.c | 312 + .../libical/src/libical/icallangbind.h | 54 + .../calendar/libical/src/libical/icalmemory.c | 367 + .../calendar/libical/src/libical/icalmemory.h | 84 + .../calendar/libical/src/libical/icalmime.c | 394 + .../calendar/libical/src/libical/icalmime.h | 43 + .../libical/src/libical/icalparameter_cxx.cpp | 289 + .../libical/src/libical/icalparameter_cxx.h | 159 + .../libical/src/libical/icalparameterimpl.h | 52 + .../calendar/libical/src/libical/icalparser.c | 1108 + .../calendar/libical/src/libical/icalparser.h | 96 + .../calendar/libical/src/libical/icalperiod.c | 170 + .../calendar/libical/src/libical/icalperiod.h | 55 + .../libical/src/libical/icalproperty_cxx.cpp | 704 + .../libical/src/libical/icalproperty_cxx.h | 365 + .../calendar/libical/src/libical/icalrecur.c | 2458 + .../calendar/libical/src/libical/icalrecur.h | 215 + .../libical/src/libical/icalrestriction.c.in | 465 + .../libical/src/libical/icalrestriction.h | 63 + .../calendar/libical/src/libical/icaltime.c | 1050 + .../calendar/libical/src/libical/icaltime.h | 277 + .../libical/src/libical/icaltimezone.c | 1672 + .../libical/src/libical/icaltimezone.h | 167 + .../calendar/libical/src/libical/icaltypes.c | 191 + .../calendar/libical/src/libical/icaltypes.h | 107 + .../libical/src/libical/icalvalue_cxx.cpp | 262 + .../libical/src/libical/icalvalue_cxx.h | 151 + .../libical/src/libical/icalvalueimpl.h | 95 + .../libical/src/libical/icalversion.h.in | 7 + .../libical/src/libical/icptrholder.h | 93 + .../calendar/libical/src/libical/libical.dsp | 594 + mozilla/calendar/libical/src/libical/pvl.c | 584 + mozilla/calendar/libical/src/libical/pvl.h | 97 + mozilla/calendar/libical/src/libical/sspm.c | 1621 + mozilla/calendar/libical/src/libical/sspm.h | 143 + .../libical/src/libical/vcomponent.cpp | 817 + .../calendar/libical/src/libical/vcomponent.h | 340 + .../calendar/libical/src/libical/vsnprintf.c | 172 + .../libical/src/libicalss/Makefile.am | 148 + .../libical/src/libicalss/Makefile.in | 656 + .../libical/src/libicalss/icalbdbset.c | 1598 + .../libical/src/libicalss/icalbdbset.h | 147 + .../libical/src/libicalss/icalbdbset_cxx.h | 61 + .../libical/src/libicalss/icalbdbsetimpl.h | 41 + .../libical/src/libicalss/icalcalendar.c | 263 + .../libical/src/libicalss/icalcalendar.h | 67 + .../libical/src/libicalss/icalcaputil.h | 58 + .../libical/src/libicalss/icalclassify.c | 756 + .../libical/src/libicalss/icalclassify.h | 45 + .../libical/src/libicalss/icalcluster.c | 245 + .../libical/src/libicalss/icalcluster.h | 61 + .../libical/src/libicalss/icalclusterimpl.h | 45 + .../calendar/libical/src/libicalss/icalcsdb.h | 67 + .../libical/src/libicalss/icaldirset.c | 805 + .../libical/src/libicalss/icaldirset.h | 98 + .../libical/src/libicalss/icaldirsetimpl.h | 48 + .../libical/src/libicalss/icalfileset.c | 921 + .../libical/src/libicalss/icalfileset.h | 131 + .../libical/src/libicalss/icalfilesetimpl.h | 53 + .../libical/src/libicalss/icalgauge.c | 529 + .../libical/src/libicalss/icalgauge.h | 61 + .../libical/src/libicalss/icalgaugeimpl.h | 63 + .../libical/src/libicalss/icalmessage.c | 378 + .../libical/src/libicalss/icalmessage.h | 71 + .../calendar/libical/src/libicalss/icalset.c | 493 + .../calendar/libical/src/libicalss/icalset.h | 184 + .../libical/src/libicalss/icalspanlist.c | 567 + .../libical/src/libicalss/icalspanlist.h | 77 + .../src/libicalss/icalspanlist_cxx.cpp | 92 + .../libical/src/libicalss/icalspanlist_cxx.h | 53 + .../libical/src/libicalss/icalsslexer.c | 2485 + .../libical/src/libicalss/icalsslexer.l | 117 + .../libical/src/libicalss/icalssyacc.c | 1399 + .../libical/src/libicalss/icalssyacc.h | 31 + .../libical/src/libicalss/icalssyacc.y | 252 + .../libical/src/libicalss/libicalss.dsp | 212 + mozilla/calendar/libical/src/test/2445.ics | 326 + mozilla/calendar/libical/src/test/2446.ics | 0 mozilla/calendar/libical/src/test/Makefile.am | 54 + mozilla/calendar/libical/src/test/Makefile.in | 695 + .../calendar/libical/src/test/copycluster.c | 133 + mozilla/calendar/libical/src/test/findobj.c | 71 + .../libical/src/test/icaltestparser.c | 122 + mozilla/calendar/libical/src/test/itip.ics | 14 + .../calendar/libical/src/test/outgoing.ics | 544 + mozilla/calendar/libical/src/test/process.c | 407 + mozilla/calendar/libical/src/test/recur.c | 161 + mozilla/calendar/libical/src/test/recur.dsp | 102 + .../libical/src/test/regression-classify.c | 187 + .../libical/src/test/regression-component.c | 580 + .../libical/src/test/regression-cxx.cpp | 137 + .../libical/src/test/regression-recur.c | 194 + .../libical/src/test/regression-storage.c | 804 + .../libical/src/test/regression-utils.c | 169 + .../calendar/libical/src/test/regression.c | 3667 ++ .../calendar/libical/src/test/regression.dsp | 125 + .../calendar/libical/src/test/regression.h | 53 + mozilla/calendar/libical/src/test/storage.c | 873 + mozilla/calendar/libical/src/test/stow.c | 890 + .../libical/src/test/test_fileset.ics | 60 + .../calendar/libical/src/test/testclassify.c | 128 + mozilla/calendar/libical/src/test/testmime.c | 339 + mozilla/calendar/libical/src/test/testvcal.c | 64 + mozilla/calendar/libical/test-data/0 | 7 + mozilla/calendar/libical/test-data/1 | 38 + mozilla/calendar/libical/test-data/1.1 | 13 + mozilla/calendar/libical/test-data/2 | 22 + mozilla/calendar/libical/test-data/2445.ics | 331 + mozilla/calendar/libical/test-data/2446.ics | 1006 + mozilla/calendar/libical/test-data/3 | 21 + mozilla/calendar/libical/test-data/4 | 23 + mozilla/calendar/libical/test-data/5 | 16 + mozilla/calendar/libical/test-data/6 | 12 + mozilla/calendar/libical/test-data/7 | 14 + mozilla/calendar/libical/test-data/8 | 6 + .../calendar/libical/test-data/Makefile.am | 27 + .../calendar/libical/test-data/calendar.ics | 63 + .../calendar/libical/test-data/classify.ics | 43 + .../libical/test-data/complex-mime-error.txt | 59 + .../libical/test-data/complex-mime.txt | 81 + mozilla/calendar/libical/test-data/hist.data | 403 + .../calendar/libical/test-data/incoming.ics | 294 + mozilla/calendar/libical/test-data/large.ics | 40533 ++++++++++++++++ .../calendar/libical/test-data/overlaps.ics | 32 + .../libical/test-data/process-calendar.ics | 108 + .../libical/test-data/process-incoming.ics | 107 + .../libical/test-data/recur-errors.txt | 44 + mozilla/calendar/libical/test-data/recur.txt | 644 + .../libical/test-data/restriction.ics | 49 + .../libical/test-data/simple-mime.txt | 27 + .../libical/test-data/smallcluster.ics | 13 + .../calendar/libical/test-data/spanlist.ics | 35 + .../calendar/libical/test-data/stresstest.ics | 178 + .../calendar/libical/test-data/user-cal.vcf | 76 + mozilla/calendar/libical/ylwrap | 143 + .../libical/zoneinfo/Africa/Abidjan.ics | 22 + .../libical/zoneinfo/Africa/Accra.ics | 48 + .../libical/zoneinfo/Africa/Addis_Ababa.ics | 29 + .../libical/zoneinfo/Africa/Algiers.ics | 97 + .../libical/zoneinfo/Africa/Asmera.ics | 36 + .../libical/zoneinfo/Africa/Bamako.ics | 36 + .../libical/zoneinfo/Africa/Bangui.ics | 22 + .../libical/zoneinfo/Africa/Banjul.ics | 36 + .../libical/zoneinfo/Africa/Bissau.ics | 29 + .../libical/zoneinfo/Africa/Blantyre.ics | 22 + .../libical/zoneinfo/Africa/Brazzaville.ics | 22 + .../libical/zoneinfo/Africa/Bujumbura.ics | 22 + .../libical/zoneinfo/Africa/Cairo.ics | 137 + .../libical/zoneinfo/Africa/Casablanca.ics | 58 + .../libical/zoneinfo/Africa/Ceuta.ics | 106 + .../libical/zoneinfo/Africa/Conakry.ics | 36 + .../libical/zoneinfo/Africa/Dakar.ics | 29 + .../libical/zoneinfo/Africa/Dar_es_Salaam.ics | 36 + .../libical/zoneinfo/Africa/Djibouti.ics | 22 + .../libical/zoneinfo/Africa/Douala.ics | 22 + .../libical/zoneinfo/Africa/El_Aaiun.ics | 29 + .../libical/zoneinfo/Africa/Freetown.ics | 88 + .../libical/zoneinfo/Africa/Gaborone.ics | 36 + .../libical/zoneinfo/Africa/Harare.ics | 22 + .../libical/zoneinfo/Africa/Johannesburg.ics | 45 + .../libical/zoneinfo/Africa/Kampala.ics | 43 + .../libical/zoneinfo/Africa/Khartoum.ics | 73 + .../libical/zoneinfo/Africa/Kigali.ics | 22 + .../libical/zoneinfo/Africa/Kinshasa.ics | 22 + .../libical/zoneinfo/Africa/Lagos.ics | 22 + .../libical/zoneinfo/Africa/Libreville.ics | 22 + .../calendar/libical/zoneinfo/Africa/Lome.ics | 22 + .../libical/zoneinfo/Africa/Luanda.ics | 29 + .../libical/zoneinfo/Africa/Lubumbashi.ics | 22 + .../libical/zoneinfo/Africa/Lusaka.ics | 22 + .../libical/zoneinfo/Africa/Malabo.ics | 29 + .../libical/zoneinfo/Africa/Maputo.ics | 22 + .../libical/zoneinfo/Africa/Maseru.ics | 36 + .../libical/zoneinfo/Africa/Mbabane.ics | 22 + .../libical/zoneinfo/Africa/Mogadishu.ics | 36 + .../libical/zoneinfo/Africa/Monrovia.ics | 36 + .../libical/zoneinfo/Africa/Nairobi.ics | 43 + .../libical/zoneinfo/Africa/Ndjamena.ics | 36 + .../libical/zoneinfo/Africa/Niamey.ics | 36 + .../libical/zoneinfo/Africa/Nouakchott.ics | 36 + .../libical/zoneinfo/Africa/Ouagadougou.ics | 22 + .../libical/zoneinfo/Africa/Porto-Novo.ics | 29 + .../libical/zoneinfo/Africa/Sao_Tome.ics | 29 + .../libical/zoneinfo/Africa/Timbuktu.ics | 22 + .../libical/zoneinfo/Africa/Tripoli.ics | 74 + .../libical/zoneinfo/Africa/Tunis.ics | 65 + .../libical/zoneinfo/Africa/Windhoek.ics | 71 + .../libical/zoneinfo/America/Adak.ics | 137 + .../libical/zoneinfo/America/Anchorage.ics | 137 + .../libical/zoneinfo/America/Anguilla.ics | 22 + .../libical/zoneinfo/America/Antigua.ics | 29 + .../libical/zoneinfo/America/Araguaina.ics | 98 + .../libical/zoneinfo/America/Aruba.ics | 29 + .../libical/zoneinfo/America/Asuncion.ics | 113 + .../libical/zoneinfo/America/Barbados.ics | 49 + .../libical/zoneinfo/America/Belem.ics | 69 + .../libical/zoneinfo/America/Belize.ics | 100 + .../libical/zoneinfo/America/Boa_Vista.ics | 74 + .../libical/zoneinfo/America/Bogota.ics | 43 + .../libical/zoneinfo/America/Boise.ics | 121 + .../libical/zoneinfo/America/Buenos_Aires.ics | 138 + .../zoneinfo/America/Cambridge_Bay.ics | 149 + .../libical/zoneinfo/America/Cancun.ics | 90 + .../libical/zoneinfo/America/Caracas.ics | 36 + .../libical/zoneinfo/America/Catamarca.ics | 137 + .../libical/zoneinfo/America/Cayenne.ics | 29 + .../libical/zoneinfo/America/Cayman.ics | 29 + .../libical/zoneinfo/America/Chicago.ics | 177 + .../libical/zoneinfo/America/Chihuahua.ics | 95 + .../libical/zoneinfo/America/Cordoba.ics | 133 + .../libical/zoneinfo/America/Costa_Rica.ics | 49 + .../libical/zoneinfo/America/Cuiaba.ics | 100 + .../libical/zoneinfo/America/Curacao.ics | 29 + .../libical/zoneinfo/America/Dawson.ics | 94 + .../libical/zoneinfo/America/Dawson_Creek.ics | 109 + .../libical/zoneinfo/America/Denver.ics | 103 + .../libical/zoneinfo/America/Detroit.ics | 101 + .../libical/zoneinfo/America/Dominica.ics | 22 + .../libical/zoneinfo/America/Edmonton.ics | 89 + .../libical/zoneinfo/America/Eirunepe.ics | 73 + .../libical/zoneinfo/America/El_Salvador.ics | 38 + .../libical/zoneinfo/America/Fortaleza.ics | 78 + .../libical/zoneinfo/America/Glace_Bay.ics | 84 + .../libical/zoneinfo/America/Godthab.ics | 65 + .../libical/zoneinfo/America/Goose_Bay.ics | 228 + .../libical/zoneinfo/America/Grand_Turk.ics | 57 + .../libical/zoneinfo/America/Grenada.ics | 22 + .../libical/zoneinfo/America/Guadeloupe.ics | 22 + .../libical/zoneinfo/America/Guatemala.ics | 40 + .../libical/zoneinfo/America/Guayaquil.ics | 29 + .../libical/zoneinfo/America/Guyana.ics | 43 + .../libical/zoneinfo/America/Halifax.ics | 162 + .../libical/zoneinfo/America/Havana.ics | 135 + .../libical/zoneinfo/America/Hermosillo.ics | 73 + .../zoneinfo/America/Indiana/Indianapolis.ics | 115 + .../libical/zoneinfo/America/Indiana/Knox.ics | 154 + .../zoneinfo/America/Indiana/Marengo.ics | 123 + .../zoneinfo/America/Indiana/Vevay.ics | 88 + .../libical/zoneinfo/America/Indianapolis.ics | 115 + .../libical/zoneinfo/America/Inuvik.ics | 94 + .../libical/zoneinfo/America/Iqaluit.ics | 134 + .../libical/zoneinfo/America/Jamaica.ics | 68 + .../libical/zoneinfo/America/Jujuy.ics | 155 + .../libical/zoneinfo/America/Juneau.ics | 124 + .../zoneinfo/America/Kentucky/Louisville.ics | 160 + .../zoneinfo/America/Kentucky/Monticello.ics | 147 + .../libical/zoneinfo/America/La_Paz.ics | 36 + .../libical/zoneinfo/America/Lima.ics | 53 + .../libical/zoneinfo/America/Los_Angeles.ics | 126 + .../libical/zoneinfo/America/Louisville.ics | 160 + .../libical/zoneinfo/America/Maceio.ics | 82 + .../libical/zoneinfo/America/Managua.ics | 57 + .../libical/zoneinfo/America/Manaus.ics | 73 + .../libical/zoneinfo/America/Martinique.ics | 43 + .../libical/zoneinfo/America/Mazatlan.ics | 84 + .../libical/zoneinfo/America/Mendoza.ics | 155 + .../libical/zoneinfo/America/Menominee.ics | 105 + .../libical/zoneinfo/America/Merida.ics | 66 + .../libical/zoneinfo/America/Mexico_City.ics | 89 + .../libical/zoneinfo/America/Miquelon.ics | 62 + .../libical/zoneinfo/America/Monterrey.ics | 68 + .../libical/zoneinfo/America/Montevideo.ics | 140 + .../libical/zoneinfo/America/Montreal.ics | 146 + .../libical/zoneinfo/America/Montserrat.ics | 22 + .../libical/zoneinfo/America/Nassau.ics | 65 + .../libical/zoneinfo/America/New_York.ics | 171 + .../libical/zoneinfo/America/Nipigon.ics | 71 + .../libical/zoneinfo/America/Nome.ics | 137 + .../libical/zoneinfo/America/Noronha.ics | 73 + .../libical/zoneinfo/America/Panama.ics | 29 + .../libical/zoneinfo/America/Pangnirtung.ics | 152 + .../libical/zoneinfo/America/Paramaribo.ics | 50 + .../libical/zoneinfo/America/Phoenix.ics | 58 + .../zoneinfo/America/Port-au-Prince.ics | 71 + .../zoneinfo/America/Port_of_Spain.ics | 22 + .../libical/zoneinfo/America/Porto_Velho.ics | 69 + .../libical/zoneinfo/America/Puerto_Rico.ics | 36 + .../libical/zoneinfo/America/Rainy_River.ics | 71 + .../libical/zoneinfo/America/Rankin_Inlet.ics | 130 + .../libical/zoneinfo/America/Recife.ics | 78 + .../libical/zoneinfo/America/Regina.ics | 99 + .../libical/zoneinfo/America/Rio_Branco.ics | 69 + .../libical/zoneinfo/America/Rosario.ics | 135 + .../libical/zoneinfo/America/Santiago.ics | 152 + .../zoneinfo/America/Santo_Domingo.ics | 74 + .../libical/zoneinfo/America/Sao_Paulo.ics | 107 + .../libical/zoneinfo/America/Scoresbysund.ics | 78 + .../libical/zoneinfo/America/Shiprock.ics | 103 + .../libical/zoneinfo/America/St_Johns.ics | 229 + .../libical/zoneinfo/America/St_Kitts.ics | 22 + .../libical/zoneinfo/America/St_Lucia.ics | 29 + .../libical/zoneinfo/America/St_Thomas.ics | 22 + .../libical/zoneinfo/America/St_Vincent.ics | 29 + .../zoneinfo/America/Swift_Current.ics | 74 + .../libical/zoneinfo/America/Tegucigalpa.ics | 38 + .../libical/zoneinfo/America/Thule.ics | 36 + .../libical/zoneinfo/America/Thunder_Bay.ics | 86 + .../libical/zoneinfo/America/Tijuana.ics | 105 + .../libical/zoneinfo/America/Tortola.ics | 22 + .../libical/zoneinfo/America/Vancouver.ics | 115 + .../libical/zoneinfo/America/Whitehorse.ics | 94 + .../libical/zoneinfo/America/Winnipeg.ics | 136 + .../libical/zoneinfo/America/Yakutat.ics | 117 + .../libical/zoneinfo/America/Yellowknife.ics | 81 + .../libical/zoneinfo/Antarctica/Casey.ics | 22 + .../libical/zoneinfo/Antarctica/Davis.ics | 30 + .../zoneinfo/Antarctica/DumontDUrville.ics | 36 + .../libical/zoneinfo/Antarctica/Mawson.ics | 22 + .../libical/zoneinfo/Antarctica/McMurdo.ics | 79 + .../libical/zoneinfo/Antarctica/Palmer.ics | 137 + .../zoneinfo/Antarctica/South_Pole.ics | 79 + .../libical/zoneinfo/Antarctica/Syowa.ics | 22 + .../libical/zoneinfo/Antarctica/Vostok.ics | 22 + .../libical/zoneinfo/Arctic/Longyearbyen.ics | 96 + .../calendar/libical/zoneinfo/Asia/Aden.ics | 22 + .../calendar/libical/zoneinfo/Asia/Almaty.ics | 94 + .../calendar/libical/zoneinfo/Asia/Amman.ics | 89 + .../calendar/libical/zoneinfo/Asia/Anadyr.ics | 119 + .../calendar/libical/zoneinfo/Asia/Aqtau.ics | 122 + .../calendar/libical/zoneinfo/Asia/Aqtobe.ics | 106 + .../libical/zoneinfo/Asia/Ashgabat.ics | 89 + .../libical/zoneinfo/Asia/Baghdad.ics | 73 + .../libical/zoneinfo/Asia/Bahrain.ics | 29 + .../calendar/libical/zoneinfo/Asia/Baku.ics | 133 + .../libical/zoneinfo/Asia/Bangkok.ics | 29 + .../calendar/libical/zoneinfo/Asia/Beirut.ics | 104 + .../libical/zoneinfo/Asia/Bishkek.ics | 105 + .../calendar/libical/zoneinfo/Asia/Brunei.ics | 29 + .../libical/zoneinfo/Asia/Calcutta.ics | 44 + .../libical/zoneinfo/Asia/Chungking.ics | 53 + .../libical/zoneinfo/Asia/Colombo.ics | 64 + .../libical/zoneinfo/Asia/Damascus.ics | 115 + .../calendar/libical/zoneinfo/Asia/Dhaka.ics | 57 + .../calendar/libical/zoneinfo/Asia/Dili.ics | 50 + .../calendar/libical/zoneinfo/Asia/Dubai.ics | 22 + .../libical/zoneinfo/Asia/Dushanbe.ics | 75 + .../calendar/libical/zoneinfo/Asia/Gaza.ics | 139 + .../calendar/libical/zoneinfo/Asia/Harbin.ics | 68 + .../libical/zoneinfo/Asia/Hong_Kong.ics | 102 + .../calendar/libical/zoneinfo/Asia/Hovd.ics | 75 + .../libical/zoneinfo/Asia/Irkutsk.ics | 102 + .../libical/zoneinfo/Asia/Istanbul.ics | 168 + .../libical/zoneinfo/Asia/Jakarta.ics | 71 + .../libical/zoneinfo/Asia/Jayapura.ics | 36 + .../libical/zoneinfo/Asia/Jerusalem.ics | 142 + .../calendar/libical/zoneinfo/Asia/Kabul.ics | 29 + .../libical/zoneinfo/Asia/Kamchatka.ics | 95 + .../libical/zoneinfo/Asia/Karachi.ics | 50 + .../libical/zoneinfo/Asia/Kashgar.ics | 60 + .../libical/zoneinfo/Asia/Katmandu.ics | 29 + .../libical/zoneinfo/Asia/Krasnoyarsk.ics | 95 + .../libical/zoneinfo/Asia/Kuala_Lumpur.ics | 64 + .../libical/zoneinfo/Asia/Kuching.ics | 76 + .../calendar/libical/zoneinfo/Asia/Kuwait.ics | 22 + .../calendar/libical/zoneinfo/Asia/Macao.ics | 81 + .../libical/zoneinfo/Asia/Magadan.ics | 95 + .../calendar/libical/zoneinfo/Asia/Manila.ics | 55 + .../calendar/libical/zoneinfo/Asia/Muscat.ics | 22 + .../libical/zoneinfo/Asia/Nicosia.ics | 103 + .../libical/zoneinfo/Asia/Novosibirsk.ics | 109 + .../calendar/libical/zoneinfo/Asia/Omsk.ics | 95 + .../libical/zoneinfo/Asia/Phnom_Penh.ics | 43 + .../libical/zoneinfo/Asia/Pontianak.ics | 71 + .../libical/zoneinfo/Asia/Pyongyang.ics | 51 + .../calendar/libical/zoneinfo/Asia/Qatar.ics | 29 + .../libical/zoneinfo/Asia/Rangoon.ics | 43 + .../calendar/libical/zoneinfo/Asia/Riyadh.ics | 22 + .../calendar/libical/zoneinfo/Asia/Saigon.ics | 43 + .../libical/zoneinfo/Asia/Samarkand.ics | 104 + .../calendar/libical/zoneinfo/Asia/Seoul.ics | 76 + .../libical/zoneinfo/Asia/Shanghai.ics | 57 + .../libical/zoneinfo/Asia/Singapore.ics | 71 + .../calendar/libical/zoneinfo/Asia/Taipei.ics | 74 + .../libical/zoneinfo/Asia/Tashkent.ics | 92 + .../libical/zoneinfo/Asia/Tbilisi.ics | 145 + .../calendar/libical/zoneinfo/Asia/Tehran.ics | 167 + .../libical/zoneinfo/Asia/Thimphu.ics | 29 + .../calendar/libical/zoneinfo/Asia/Tokyo.ics | 36 + .../libical/zoneinfo/Asia/Ujung_Pandang.ics | 43 + .../libical/zoneinfo/Asia/Ulaanbaatar.ics | 75 + .../calendar/libical/zoneinfo/Asia/Urumqi.ics | 53 + .../libical/zoneinfo/Asia/Vientiane.ics | 43 + .../libical/zoneinfo/Asia/Vladivostok.ics | 95 + .../libical/zoneinfo/Asia/Yakutsk.ics | 95 + .../libical/zoneinfo/Asia/Yekaterinburg.ics | 113 + .../libical/zoneinfo/Asia/Yerevan.ics | 117 + .../libical/zoneinfo/Atlantic/Azores.ics | 230 + .../libical/zoneinfo/Atlantic/Bermuda.ics | 55 + .../libical/zoneinfo/Atlantic/Canary.ics | 72 + .../libical/zoneinfo/Atlantic/Cape_Verde.ics | 43 + .../libical/zoneinfo/Atlantic/Faeroe.ics | 64 + .../libical/zoneinfo/Atlantic/Jan_Mayen.ics | 96 + .../libical/zoneinfo/Atlantic/Madeira.ics | 208 + .../libical/zoneinfo/Atlantic/Reykjavik.ics | 110 + .../zoneinfo/Atlantic/South_Georgia.ics | 22 + .../libical/zoneinfo/Atlantic/St_Helena.ics | 29 + .../libical/zoneinfo/Atlantic/Stanley.ics | 127 + .../libical/zoneinfo/Australia/Adelaide.ics | 109 + .../libical/zoneinfo/Australia/Brisbane.ics | 57 + .../zoneinfo/Australia/Broken_Hill.ics | 123 + .../libical/zoneinfo/Australia/Darwin.ics | 49 + .../libical/zoneinfo/Australia/Hobart.ics | 121 + .../libical/zoneinfo/Australia/Lindeman.ics | 62 + .../libical/zoneinfo/Australia/Lord_Howe.ics | 101 + .../libical/zoneinfo/Australia/Melbourne.ics | 116 + .../libical/zoneinfo/Australia/Perth.ics | 53 + .../libical/zoneinfo/Australia/Sydney.ics | 117 + .../libical/zoneinfo/Europe/Amsterdam.ics | 171 + .../libical/zoneinfo/Europe/Andorra.ics | 60 + .../libical/zoneinfo/Europe/Athens.ics | 129 + .../libical/zoneinfo/Europe/Belfast.ics | 227 + .../libical/zoneinfo/Europe/Belgrade.ics | 76 + .../libical/zoneinfo/Europe/Berlin.ics | 110 + .../libical/zoneinfo/Europe/Bratislava.ics | 103 + .../libical/zoneinfo/Europe/Brussels.ics | 165 + .../libical/zoneinfo/Europe/Bucharest.ics | 116 + .../libical/zoneinfo/Europe/Budapest.ics | 108 + .../libical/zoneinfo/Europe/Chisinau.ics | 174 + .../libical/zoneinfo/Europe/Copenhagen.ics | 95 + .../libical/zoneinfo/Europe/Dublin.ics | 208 + .../libical/zoneinfo/Europe/Gibraltar.ics | 178 + .../libical/zoneinfo/Europe/Helsinki.ics | 79 + .../libical/zoneinfo/Europe/Istanbul.ics | 168 + .../libical/zoneinfo/Europe/Kaliningrad.ics | 145 + .../calendar/libical/zoneinfo/Europe/Kiev.ics | 150 + .../libical/zoneinfo/Europe/Lisbon.ics | 235 + .../libical/zoneinfo/Europe/Ljubljana.ics | 76 + .../libical/zoneinfo/Europe/London.ics | 215 + .../libical/zoneinfo/Europe/Luxembourg.ics | 168 + .../libical/zoneinfo/Europe/Madrid.ics | 143 + .../libical/zoneinfo/Europe/Malta.ics | 124 + .../libical/zoneinfo/Europe/Minsk.ics | 142 + .../libical/zoneinfo/Europe/Monaco.ics | 170 + .../libical/zoneinfo/Europe/Moscow.ics | 162 + .../libical/zoneinfo/Europe/Nicosia.ics | 103 + .../calendar/libical/zoneinfo/Europe/Oslo.ics | 96 + .../libical/zoneinfo/Europe/Paris.ics | 169 + .../libical/zoneinfo/Europe/Prague.ics | 103 + .../calendar/libical/zoneinfo/Europe/Riga.ics | 180 + .../calendar/libical/zoneinfo/Europe/Rome.ics | 132 + .../libical/zoneinfo/Europe/Samara.ics | 131 + .../libical/zoneinfo/Europe/San_Marino.ics | 132 + .../libical/zoneinfo/Europe/Sarajevo.ics | 76 + .../libical/zoneinfo/Europe/Simferopol.ics | 158 + .../libical/zoneinfo/Europe/Skopje.ics | 76 + .../libical/zoneinfo/Europe/Sofia.ics | 123 + .../libical/zoneinfo/Europe/Stockholm.ics | 81 + .../libical/zoneinfo/Europe/Tallinn.ics | 158 + .../libical/zoneinfo/Europe/Tirane.ics | 92 + .../libical/zoneinfo/Europe/Uzhgorod.ics | 153 + .../libical/zoneinfo/Europe/Vaduz.ics | 64 + .../libical/zoneinfo/Europe/Vatican.ics | 132 + .../libical/zoneinfo/Europe/Vienna.ics | 92 + .../libical/zoneinfo/Europe/Vilnius.ics | 162 + .../libical/zoneinfo/Europe/Warsaw.ics | 164 + .../libical/zoneinfo/Europe/Zagreb.ics | 76 + .../libical/zoneinfo/Europe/Zaporozhye.ics | 145 + .../libical/zoneinfo/Europe/Zurich.ics | 83 + .../libical/zoneinfo/Indian/Antananarivo.ics | 36 + .../libical/zoneinfo/Indian/Chagos.ics | 22 + .../libical/zoneinfo/Indian/Christmas.ics | 22 + .../libical/zoneinfo/Indian/Cocos.ics | 15 + .../libical/zoneinfo/Indian/Comoro.ics | 22 + .../libical/zoneinfo/Indian/Kerguelen.ics | 22 + .../calendar/libical/zoneinfo/Indian/Mahe.ics | 22 + .../libical/zoneinfo/Indian/Maldives.ics | 29 + .../libical/zoneinfo/Indian/Mauritius.ics | 22 + .../libical/zoneinfo/Indian/Mayotte.ics | 22 + .../libical/zoneinfo/Indian/Reunion.ics | 22 + mozilla/calendar/libical/zoneinfo/Makefile.am | 38 + mozilla/calendar/libical/zoneinfo/Makefile.in | 296 + .../libical/zoneinfo/Pacific/Apia.ics | 36 + .../libical/zoneinfo/Pacific/Auckland.ics | 124 + .../libical/zoneinfo/Pacific/Chatham.ics | 29 + .../libical/zoneinfo/Pacific/Easter.ics | 140 + .../libical/zoneinfo/Pacific/Efate.ics | 54 + .../libical/zoneinfo/Pacific/Enderbury.ics | 36 + .../libical/zoneinfo/Pacific/Fakaofo.ics | 22 + .../libical/zoneinfo/Pacific/Fiji.ics | 38 + .../libical/zoneinfo/Pacific/Funafuti.ics | 22 + .../libical/zoneinfo/Pacific/Galapagos.ics | 29 + .../libical/zoneinfo/Pacific/Gambier.ics | 22 + .../libical/zoneinfo/Pacific/Guadalcanal.ics | 22 + .../libical/zoneinfo/Pacific/Guam.ics | 36 + .../libical/zoneinfo/Pacific/Honolulu.ics | 58 + .../libical/zoneinfo/Pacific/Johnston.ics | 15 + .../libical/zoneinfo/Pacific/Kiritimati.ics | 36 + .../libical/zoneinfo/Pacific/Kosrae.ics | 36 + .../libical/zoneinfo/Pacific/Kwajalein.ics | 36 + .../libical/zoneinfo/Pacific/Majuro.ics | 29 + .../libical/zoneinfo/Pacific/Marquesas.ics | 22 + .../libical/zoneinfo/Pacific/Midway.ics | 36 + .../libical/zoneinfo/Pacific/Nauru.ics | 43 + .../libical/zoneinfo/Pacific/Niue.ics | 36 + .../libical/zoneinfo/Pacific/Norfolk.ics | 29 + .../libical/zoneinfo/Pacific/Noumea.ics | 40 + .../libical/zoneinfo/Pacific/Pago_Pago.ics | 50 + .../libical/zoneinfo/Pacific/Palau.ics | 22 + .../libical/zoneinfo/Pacific/Pitcairn.ics | 29 + .../libical/zoneinfo/Pacific/Ponape.ics | 22 + .../libical/zoneinfo/Pacific/Port_Moresby.ics | 29 + .../libical/zoneinfo/Pacific/Rarotonga.ics | 66 + .../libical/zoneinfo/Pacific/Saipan.ics | 43 + .../libical/zoneinfo/Pacific/Tahiti.ics | 22 + .../libical/zoneinfo/Pacific/Tarawa.ics | 22 + .../libical/zoneinfo/Pacific/Tongatapu.ics | 52 + .../libical/zoneinfo/Pacific/Truk.ics | 22 + .../libical/zoneinfo/Pacific/Wake.ics | 22 + .../libical/zoneinfo/Pacific/Wallis.ics | 22 + .../calendar/libical/zoneinfo/Pacific/Yap.ics | 29 + mozilla/calendar/libical/zoneinfo/zones.tab | 373 + 573 files changed, 137933 insertions(+) create mode 100644 mozilla/calendar/libical/AUTHORS create mode 100644 mozilla/calendar/libical/ChangeLog create mode 100644 mozilla/calendar/libical/LICENSE create mode 100644 mozilla/calendar/libical/NEWS create mode 100644 mozilla/calendar/libical/README create mode 100644 mozilla/calendar/libical/THANKS create mode 100644 mozilla/calendar/libical/TODO create mode 100644 mozilla/calendar/libical/design-data/Makefile.am create mode 100644 mozilla/calendar/libical/design-data/Makefile.in create mode 100644 mozilla/calendar/libical/design-data/components.txt create mode 100644 mozilla/calendar/libical/design-data/parameters.csv create mode 100644 mozilla/calendar/libical/design-data/params-in-prop.txt create mode 100644 mozilla/calendar/libical/design-data/properties.csv create mode 100644 mozilla/calendar/libical/design-data/restrictions.csv create mode 100644 mozilla/calendar/libical/design-data/status.txt create mode 100644 mozilla/calendar/libical/design-data/value-types.csv create mode 100644 mozilla/calendar/libical/scripts/Makefile.am create mode 100644 mozilla/calendar/libical/scripts/Makefile.in create mode 100755 mozilla/calendar/libical/scripts/mkderivedcomponents.pl create mode 100755 mozilla/calendar/libical/scripts/mkderivedparameters.pl create mode 100755 mozilla/calendar/libical/scripts/mkderivedproperties.pl create mode 100755 mozilla/calendar/libical/scripts/mkderivedvalues.pl create mode 100644 mozilla/calendar/libical/scripts/mkinclude.sh create mode 100755 mozilla/calendar/libical/scripts/mkneticali.pl create mode 100755 mozilla/calendar/libical/scripts/mkparameterrestrictions.pl create mode 100755 mozilla/calendar/libical/scripts/mkrestrictionrecords.pl create mode 100755 mozilla/calendar/libical/scripts/mkrestrictiontable.pl create mode 100644 mozilla/calendar/libical/scripts/readvaluesfile.pl create mode 100644 mozilla/calendar/libical/src/Makefile.am create mode 100644 mozilla/calendar/libical/src/Makefile.in create mode 100644 mozilla/calendar/libical/src/libical/Makefile.am create mode 100644 mozilla/calendar/libical/src/libical/Makefile.in create mode 100644 mozilla/calendar/libical/src/libical/astime.h create mode 100644 mozilla/calendar/libical/src/libical/autogenex/ical.h create mode 100644 mozilla/calendar/libical/src/libical/autogenex/icalderivedparameter.c create mode 100644 mozilla/calendar/libical/src/libical/autogenex/icalderivedparameter.h create mode 100644 mozilla/calendar/libical/src/libical/autogenex/icalderivedproperty.c create mode 100644 mozilla/calendar/libical/src/libical/autogenex/icalderivedproperty.h create mode 100644 mozilla/calendar/libical/src/libical/autogenex/icalderivedvalue.c create mode 100644 mozilla/calendar/libical/src/libical/autogenex/icalderivedvalue.h create mode 100644 mozilla/calendar/libical/src/libical/autogenex/icalrestriction.c create mode 100644 mozilla/calendar/libical/src/libical/autogenex/icalversion.h create mode 100644 mozilla/calendar/libical/src/libical/caldate.c create mode 100644 mozilla/calendar/libical/src/libical/icalarray.c create mode 100644 mozilla/calendar/libical/src/libical/icalarray.h create mode 100644 mozilla/calendar/libical/src/libical/icalattach.c create mode 100644 mozilla/calendar/libical/src/libical/icalattach.h create mode 100644 mozilla/calendar/libical/src/libical/icalattachimpl.h create mode 100644 mozilla/calendar/libical/src/libical/icalcomponent.c create mode 100644 mozilla/calendar/libical/src/libical/icalcomponent.h create mode 100644 mozilla/calendar/libical/src/libical/icalderivedparameter.c.in create mode 100644 mozilla/calendar/libical/src/libical/icalderivedparameter.h.in create mode 100644 mozilla/calendar/libical/src/libical/icalderivedproperty.c.in create mode 100644 mozilla/calendar/libical/src/libical/icalderivedproperty.h.in create mode 100644 mozilla/calendar/libical/src/libical/icalderivedvalue.c.in create mode 100644 mozilla/calendar/libical/src/libical/icalderivedvalue.h.in create mode 100644 mozilla/calendar/libical/src/libical/icalduration.c create mode 100644 mozilla/calendar/libical/src/libical/icalduration.h create mode 100644 mozilla/calendar/libical/src/libical/icalenums.c create mode 100644 mozilla/calendar/libical/src/libical/icalenums.h create mode 100644 mozilla/calendar/libical/src/libical/icalerror.c create mode 100644 mozilla/calendar/libical/src/libical/icalerror.h create mode 100644 mozilla/calendar/libical/src/libical/icallangbind.c create mode 100644 mozilla/calendar/libical/src/libical/icallangbind.h create mode 100644 mozilla/calendar/libical/src/libical/icalmemory.c create mode 100644 mozilla/calendar/libical/src/libical/icalmemory.h create mode 100644 mozilla/calendar/libical/src/libical/icalmime.c create mode 100644 mozilla/calendar/libical/src/libical/icalmime.h create mode 100644 mozilla/calendar/libical/src/libical/icalparameter_cxx.cpp create mode 100644 mozilla/calendar/libical/src/libical/icalparameter_cxx.h create mode 100644 mozilla/calendar/libical/src/libical/icalparameterimpl.h create mode 100644 mozilla/calendar/libical/src/libical/icalparser.c create mode 100644 mozilla/calendar/libical/src/libical/icalparser.h create mode 100644 mozilla/calendar/libical/src/libical/icalperiod.c create mode 100644 mozilla/calendar/libical/src/libical/icalperiod.h create mode 100644 mozilla/calendar/libical/src/libical/icalproperty_cxx.cpp create mode 100644 mozilla/calendar/libical/src/libical/icalproperty_cxx.h create mode 100644 mozilla/calendar/libical/src/libical/icalrecur.c create mode 100644 mozilla/calendar/libical/src/libical/icalrecur.h create mode 100644 mozilla/calendar/libical/src/libical/icalrestriction.c.in create mode 100644 mozilla/calendar/libical/src/libical/icalrestriction.h create mode 100644 mozilla/calendar/libical/src/libical/icaltime.c create mode 100644 mozilla/calendar/libical/src/libical/icaltime.h create mode 100644 mozilla/calendar/libical/src/libical/icaltimezone.c create mode 100644 mozilla/calendar/libical/src/libical/icaltimezone.h create mode 100644 mozilla/calendar/libical/src/libical/icaltypes.c create mode 100644 mozilla/calendar/libical/src/libical/icaltypes.h create mode 100644 mozilla/calendar/libical/src/libical/icalvalue_cxx.cpp create mode 100644 mozilla/calendar/libical/src/libical/icalvalue_cxx.h create mode 100644 mozilla/calendar/libical/src/libical/icalvalueimpl.h create mode 100644 mozilla/calendar/libical/src/libical/icalversion.h.in create mode 100644 mozilla/calendar/libical/src/libical/icptrholder.h create mode 100644 mozilla/calendar/libical/src/libical/libical.dsp create mode 100644 mozilla/calendar/libical/src/libical/pvl.c create mode 100644 mozilla/calendar/libical/src/libical/pvl.h create mode 100644 mozilla/calendar/libical/src/libical/sspm.c create mode 100644 mozilla/calendar/libical/src/libical/sspm.h create mode 100644 mozilla/calendar/libical/src/libical/vcomponent.cpp create mode 100644 mozilla/calendar/libical/src/libical/vcomponent.h create mode 100644 mozilla/calendar/libical/src/libical/vsnprintf.c create mode 100644 mozilla/calendar/libical/src/libicalss/Makefile.am create mode 100644 mozilla/calendar/libical/src/libicalss/Makefile.in create mode 100644 mozilla/calendar/libical/src/libicalss/icalbdbset.c create mode 100644 mozilla/calendar/libical/src/libicalss/icalbdbset.h create mode 100644 mozilla/calendar/libical/src/libicalss/icalbdbset_cxx.h create mode 100644 mozilla/calendar/libical/src/libicalss/icalbdbsetimpl.h create mode 100644 mozilla/calendar/libical/src/libicalss/icalcalendar.c create mode 100644 mozilla/calendar/libical/src/libicalss/icalcalendar.h create mode 100644 mozilla/calendar/libical/src/libicalss/icalcaputil.h create mode 100644 mozilla/calendar/libical/src/libicalss/icalclassify.c create mode 100644 mozilla/calendar/libical/src/libicalss/icalclassify.h create mode 100644 mozilla/calendar/libical/src/libicalss/icalcluster.c create mode 100644 mozilla/calendar/libical/src/libicalss/icalcluster.h create mode 100644 mozilla/calendar/libical/src/libicalss/icalclusterimpl.h create mode 100644 mozilla/calendar/libical/src/libicalss/icalcsdb.h create mode 100644 mozilla/calendar/libical/src/libicalss/icaldirset.c create mode 100644 mozilla/calendar/libical/src/libicalss/icaldirset.h create mode 100644 mozilla/calendar/libical/src/libicalss/icaldirsetimpl.h create mode 100644 mozilla/calendar/libical/src/libicalss/icalfileset.c create mode 100644 mozilla/calendar/libical/src/libicalss/icalfileset.h create mode 100644 mozilla/calendar/libical/src/libicalss/icalfilesetimpl.h create mode 100644 mozilla/calendar/libical/src/libicalss/icalgauge.c create mode 100644 mozilla/calendar/libical/src/libicalss/icalgauge.h create mode 100644 mozilla/calendar/libical/src/libicalss/icalgaugeimpl.h create mode 100644 mozilla/calendar/libical/src/libicalss/icalmessage.c create mode 100644 mozilla/calendar/libical/src/libicalss/icalmessage.h create mode 100644 mozilla/calendar/libical/src/libicalss/icalset.c create mode 100644 mozilla/calendar/libical/src/libicalss/icalset.h create mode 100644 mozilla/calendar/libical/src/libicalss/icalspanlist.c create mode 100644 mozilla/calendar/libical/src/libicalss/icalspanlist.h create mode 100644 mozilla/calendar/libical/src/libicalss/icalspanlist_cxx.cpp create mode 100644 mozilla/calendar/libical/src/libicalss/icalspanlist_cxx.h create mode 100644 mozilla/calendar/libical/src/libicalss/icalsslexer.c create mode 100644 mozilla/calendar/libical/src/libicalss/icalsslexer.l create mode 100644 mozilla/calendar/libical/src/libicalss/icalssyacc.c create mode 100644 mozilla/calendar/libical/src/libicalss/icalssyacc.h create mode 100644 mozilla/calendar/libical/src/libicalss/icalssyacc.y create mode 100644 mozilla/calendar/libical/src/libicalss/libicalss.dsp create mode 100644 mozilla/calendar/libical/src/test/2445.ics create mode 100644 mozilla/calendar/libical/src/test/2446.ics create mode 100644 mozilla/calendar/libical/src/test/Makefile.am create mode 100644 mozilla/calendar/libical/src/test/Makefile.in create mode 100644 mozilla/calendar/libical/src/test/copycluster.c create mode 100644 mozilla/calendar/libical/src/test/findobj.c create mode 100644 mozilla/calendar/libical/src/test/icaltestparser.c create mode 100644 mozilla/calendar/libical/src/test/itip.ics create mode 100644 mozilla/calendar/libical/src/test/outgoing.ics create mode 100644 mozilla/calendar/libical/src/test/process.c create mode 100644 mozilla/calendar/libical/src/test/recur.c create mode 100644 mozilla/calendar/libical/src/test/recur.dsp create mode 100644 mozilla/calendar/libical/src/test/regression-classify.c create mode 100644 mozilla/calendar/libical/src/test/regression-component.c create mode 100644 mozilla/calendar/libical/src/test/regression-cxx.cpp create mode 100644 mozilla/calendar/libical/src/test/regression-recur.c create mode 100644 mozilla/calendar/libical/src/test/regression-storage.c create mode 100644 mozilla/calendar/libical/src/test/regression-utils.c create mode 100644 mozilla/calendar/libical/src/test/regression.c create mode 100644 mozilla/calendar/libical/src/test/regression.dsp create mode 100644 mozilla/calendar/libical/src/test/regression.h create mode 100644 mozilla/calendar/libical/src/test/storage.c create mode 100644 mozilla/calendar/libical/src/test/stow.c create mode 100644 mozilla/calendar/libical/src/test/test_fileset.ics create mode 100644 mozilla/calendar/libical/src/test/testclassify.c create mode 100644 mozilla/calendar/libical/src/test/testmime.c create mode 100644 mozilla/calendar/libical/src/test/testvcal.c create mode 100644 mozilla/calendar/libical/test-data/0 create mode 100644 mozilla/calendar/libical/test-data/1 create mode 100644 mozilla/calendar/libical/test-data/1.1 create mode 100644 mozilla/calendar/libical/test-data/2 create mode 100644 mozilla/calendar/libical/test-data/2445.ics create mode 100644 mozilla/calendar/libical/test-data/2446.ics create mode 100644 mozilla/calendar/libical/test-data/3 create mode 100644 mozilla/calendar/libical/test-data/4 create mode 100644 mozilla/calendar/libical/test-data/5 create mode 100644 mozilla/calendar/libical/test-data/6 create mode 100644 mozilla/calendar/libical/test-data/7 create mode 100644 mozilla/calendar/libical/test-data/8 create mode 100644 mozilla/calendar/libical/test-data/Makefile.am create mode 100644 mozilla/calendar/libical/test-data/calendar.ics create mode 100644 mozilla/calendar/libical/test-data/classify.ics create mode 100644 mozilla/calendar/libical/test-data/complex-mime-error.txt create mode 100644 mozilla/calendar/libical/test-data/complex-mime.txt create mode 100644 mozilla/calendar/libical/test-data/hist.data create mode 100644 mozilla/calendar/libical/test-data/incoming.ics create mode 100644 mozilla/calendar/libical/test-data/large.ics create mode 100644 mozilla/calendar/libical/test-data/overlaps.ics create mode 100644 mozilla/calendar/libical/test-data/process-calendar.ics create mode 100644 mozilla/calendar/libical/test-data/process-incoming.ics create mode 100644 mozilla/calendar/libical/test-data/recur-errors.txt create mode 100644 mozilla/calendar/libical/test-data/recur.txt create mode 100644 mozilla/calendar/libical/test-data/restriction.ics create mode 100644 mozilla/calendar/libical/test-data/simple-mime.txt create mode 100644 mozilla/calendar/libical/test-data/smallcluster.ics create mode 100644 mozilla/calendar/libical/test-data/spanlist.ics create mode 100644 mozilla/calendar/libical/test-data/stresstest.ics create mode 100644 mozilla/calendar/libical/test-data/user-cal.vcf create mode 100644 mozilla/calendar/libical/ylwrap create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Abidjan.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Accra.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Addis_Ababa.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Algiers.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Asmera.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Bamako.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Bangui.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Banjul.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Bissau.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Blantyre.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Brazzaville.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Bujumbura.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Cairo.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Casablanca.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Ceuta.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Conakry.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Dakar.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Dar_es_Salaam.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Djibouti.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Douala.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/El_Aaiun.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Freetown.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Gaborone.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Harare.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Johannesburg.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Kampala.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Khartoum.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Kigali.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Kinshasa.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Lagos.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Libreville.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Lome.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Luanda.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Lubumbashi.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Lusaka.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Malabo.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Maputo.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Maseru.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Mbabane.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Mogadishu.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Monrovia.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Nairobi.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Ndjamena.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Niamey.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Nouakchott.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Ouagadougou.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Porto-Novo.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Sao_Tome.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Timbuktu.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Tripoli.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Tunis.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Africa/Windhoek.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Adak.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Anchorage.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Anguilla.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Antigua.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Araguaina.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Aruba.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Asuncion.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Barbados.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Belem.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Belize.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Boa_Vista.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Bogota.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Boise.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Buenos_Aires.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Cambridge_Bay.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Cancun.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Caracas.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Catamarca.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Cayenne.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Cayman.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Chicago.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Chihuahua.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Cordoba.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Costa_Rica.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Cuiaba.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Curacao.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Dawson.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Dawson_Creek.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Denver.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Detroit.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Dominica.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Edmonton.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Eirunepe.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/El_Salvador.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Fortaleza.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Glace_Bay.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Godthab.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Goose_Bay.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Grand_Turk.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Grenada.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Guadeloupe.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Guatemala.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Guayaquil.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Guyana.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Halifax.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Havana.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Hermosillo.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Indiana/Indianapolis.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Indiana/Knox.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Indiana/Marengo.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Indiana/Vevay.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Indianapolis.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Inuvik.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Iqaluit.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Jamaica.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Jujuy.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Juneau.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Kentucky/Louisville.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Kentucky/Monticello.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/La_Paz.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Lima.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Los_Angeles.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Louisville.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Maceio.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Managua.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Manaus.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Martinique.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Mazatlan.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Mendoza.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Menominee.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Merida.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Mexico_City.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Miquelon.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Monterrey.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Montevideo.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Montreal.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Montserrat.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Nassau.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/New_York.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Nipigon.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Nome.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Noronha.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Panama.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Pangnirtung.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Paramaribo.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Phoenix.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Port-au-Prince.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Port_of_Spain.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Porto_Velho.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Puerto_Rico.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Rainy_River.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Rankin_Inlet.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Recife.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Regina.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Rio_Branco.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Rosario.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Santiago.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Santo_Domingo.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Sao_Paulo.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Scoresbysund.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Shiprock.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/St_Johns.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/St_Kitts.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/St_Lucia.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/St_Thomas.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/St_Vincent.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Swift_Current.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Tegucigalpa.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Thule.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Thunder_Bay.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Tijuana.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Tortola.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Vancouver.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Whitehorse.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Winnipeg.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Yakutat.ics create mode 100644 mozilla/calendar/libical/zoneinfo/America/Yellowknife.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Antarctica/Casey.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Antarctica/Davis.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Antarctica/DumontDUrville.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Antarctica/Mawson.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Antarctica/McMurdo.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Antarctica/Palmer.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Antarctica/South_Pole.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Antarctica/Syowa.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Antarctica/Vostok.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Arctic/Longyearbyen.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Aden.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Almaty.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Amman.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Anadyr.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Aqtau.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Aqtobe.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Ashgabat.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Baghdad.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Bahrain.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Baku.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Bangkok.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Beirut.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Bishkek.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Brunei.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Calcutta.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Chungking.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Colombo.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Damascus.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Dhaka.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Dili.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Dubai.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Dushanbe.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Gaza.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Harbin.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Hong_Kong.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Hovd.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Irkutsk.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Istanbul.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Jakarta.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Jayapura.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Jerusalem.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Kabul.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Kamchatka.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Karachi.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Kashgar.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Katmandu.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Krasnoyarsk.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Kuala_Lumpur.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Kuching.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Kuwait.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Macao.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Magadan.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Manila.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Muscat.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Nicosia.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Novosibirsk.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Omsk.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Phnom_Penh.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Pontianak.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Pyongyang.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Qatar.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Rangoon.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Riyadh.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Saigon.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Samarkand.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Seoul.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Shanghai.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Singapore.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Taipei.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Tashkent.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Tbilisi.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Tehran.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Thimphu.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Tokyo.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Ujung_Pandang.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Ulaanbaatar.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Urumqi.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Vientiane.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Vladivostok.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Yakutsk.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Yekaterinburg.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Asia/Yerevan.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Atlantic/Azores.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Atlantic/Bermuda.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Atlantic/Canary.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Atlantic/Cape_Verde.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Atlantic/Faeroe.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Atlantic/Jan_Mayen.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Atlantic/Madeira.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Atlantic/Reykjavik.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Atlantic/South_Georgia.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Atlantic/St_Helena.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Atlantic/Stanley.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Australia/Adelaide.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Australia/Brisbane.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Australia/Broken_Hill.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Australia/Darwin.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Australia/Hobart.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Australia/Lindeman.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Australia/Lord_Howe.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Australia/Melbourne.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Australia/Perth.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Australia/Sydney.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Amsterdam.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Andorra.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Athens.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Belfast.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Belgrade.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Berlin.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Bratislava.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Brussels.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Bucharest.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Budapest.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Chisinau.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Copenhagen.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Dublin.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Gibraltar.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Helsinki.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Istanbul.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Kaliningrad.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Kiev.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Lisbon.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Ljubljana.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/London.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Luxembourg.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Madrid.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Malta.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Minsk.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Monaco.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Moscow.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Nicosia.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Oslo.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Paris.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Prague.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Riga.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Rome.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Samara.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/San_Marino.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Sarajevo.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Simferopol.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Skopje.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Sofia.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Stockholm.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Tallinn.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Tirane.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Uzhgorod.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Vaduz.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Vatican.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Vienna.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Vilnius.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Warsaw.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Zagreb.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Zaporozhye.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Europe/Zurich.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Indian/Antananarivo.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Indian/Chagos.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Indian/Christmas.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Indian/Cocos.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Indian/Comoro.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Indian/Kerguelen.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Indian/Mahe.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Indian/Maldives.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Indian/Mauritius.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Indian/Mayotte.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Indian/Reunion.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Makefile.am create mode 100644 mozilla/calendar/libical/zoneinfo/Makefile.in create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Apia.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Auckland.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Chatham.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Easter.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Efate.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Enderbury.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Fakaofo.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Fiji.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Funafuti.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Galapagos.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Gambier.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Guadalcanal.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Guam.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Honolulu.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Johnston.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Kiritimati.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Kosrae.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Kwajalein.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Majuro.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Marquesas.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Midway.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Nauru.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Niue.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Norfolk.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Noumea.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Pago_Pago.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Palau.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Pitcairn.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Ponape.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Port_Moresby.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Rarotonga.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Saipan.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Tahiti.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Tarawa.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Tongatapu.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Truk.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Wake.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Wallis.ics create mode 100644 mozilla/calendar/libical/zoneinfo/Pacific/Yap.ics create mode 100644 mozilla/calendar/libical/zoneinfo/zones.tab diff --git a/mozilla/calendar/libical/AUTHORS b/mozilla/calendar/libical/AUTHORS new file mode 100644 index 00000000000..ce25b7bd751 --- /dev/null +++ b/mozilla/calendar/libical/AUTHORS @@ -0,0 +1,4 @@ +John Gray +Andrea Campi + +Original author May 1998-December 2001, Eric Busboom diff --git a/mozilla/calendar/libical/ChangeLog b/mozilla/calendar/libical/ChangeLog new file mode 100644 index 00000000000..97d25838f07 --- /dev/null +++ b/mozilla/calendar/libical/ChangeLog @@ -0,0 +1,811 @@ +2002-07-09 Andrea Campi + + * src/libical/icalcomponent.c + * src/libical/icalcomponent.h: Added a check for valid component kind + before instancing a new one. + +2002-07-08 Andrea Campi + + * src/python/Gauge.py + * src/python/LibicalWrap.i + * src/python/Property.py + * src/python/Store.py + * src/python/Time.py + * src/python/python-binding.txt + * src/python/test.py: Updated the python bindings to match the C API + changes. + Obtained from: Mark Tearle + +2002-07-04 Andrea Campi + + * src/libical/icalderivedproperty.c.in + * src/libical/icalproperty.c + * src/libical/icalproperty.h: Added a check for valid property kind + before instancing a new one. + + * src/libical/icalvalue.c: Fixed icalvalue_new_clone to properly clone + X- properties. + +2002-06-28 Andrea Campi + + * design-data/parameters.csv + * src/libicalss/icalgauge.c + * src/libicalss/icalgaugeimpl.h + * src/libicalss/icalsslexer.c + * src/libicalss/icalsslexer.l + * src/libicalss/icalssyacc.c + * src/libicalss/icalssyacc.h + * src/libicalss/icalssyacc.y: Added IS NULL to icalgauge + syntax. + Obtained from: Paul Lindner + + * src/libical/icallexer.c + * src/libical/icallexer.l + * src/libical/icalyacc.c + * src/libical/icalyacc.h + * src/libical/icalyacc.y: Sent lex/yacc code to Attic. + + * src/libical/icalparameter.c: Changed icalparameter_as_ical_string + to also quote the param value if it contains a , (comma), as per RFC2445. + + * src/libicalss/icalset.c + * src/libicalss/icalset.h: Added experimental code to support + dynamic loading of icalset derived classes. + + * src/libicalss/Makefile.am + * src/libicalss/icalspanlist_cxx.cpp + * src/libicalss/icalspanlist_cxx.h: Added C++ binding for libicalss. + Obtained from: Paul Lindner + +2002-06-28 Eric Busboom + + * src/libical/Makefile.am + * src/libical/icalduration.c + * src/libical/icalparser.c + * src/libical/icalvalue.c + * src/libical/icalyacc.c + * src/libical/icalyacc.h: removed lex and yacc by writing + code to parse UTC-OFFSET + +2002-06-27 Andrea Campi + + * src/libical/icalcomponent.c + * src/libical/icalcomponent.h: Added icalcomponent_foreach_recurrence + as a better way of handling recurrences; deprecated + icalcomponent_get_span + Obtained from: Paul Lindner + + * src/libical/icalderivedvalue.c.in + * src/libical/icalvalue.c + * src/libical/icalvalue.h: Added a check for valid value kind before + instancing a new one. + Obtained from: Paul Lindner + + * src/libical/icalproperty.c + * src/libical/icalproperty.h: Deprecated icalproperty_remove_parameter, + added 3 new functions to do the same in a safer way (wrt X- params). + Obtained from: Paul Lindner + + * src/libical/icaltime.c + * src/libical/icaltime.h: Added functions to work with time spans. + Obtained from: Paul Lindner + +2002-06-26 Andrea Campi + + * src/libical/icalduration.c: Fixed icaldurationtype_from_int to + generate valid RFC2445 durations (it used to mix weeks and other + time units). + +2002-06-13 Andrea Campi + + * src/libical/icalvalue.c: Fixed escaping of TEXT values and + formatting of UTCOFFSET values to more closely match RFC2445. + + * configure.in + * src/libical/Makefile.am + * src/libical/icalparameter_cxx.cpp + * src/libical/icalparameter_cxx.h + * src/libical/icalproperty_cxx.cpp + * src/libical/icalproperty_cxx.h + * src/libical/icalvalue_cxx.cpp + * src/libical/icalvalue_cxx.h + * src/libical/vcomponent.cpp + * src/libical/vcomponent.h + * src/libicalss/icalbdbset_cxx.h: Added C++ binding. + Obtained from: Paul Lindner + + * configure.in + * src/libicalss/Makefile.am + * src/libicalss/icalbdbset.c + * src/libicalss/icalbdbset.h + * src/libicalss/icalbdbset.h + * src/libicalss/icalbdbsetimpl.h + * src/test/Makefile.am + * src/test/storage.c: Added BerkeleyDB 4.0 icalset implementation. + Obtained from: Paul Lindner + +2002-06-11 Andrea Campi + + * src/test/Makefile.am + * src/test/regression-classify.c + * src/test/regression-component.c + * src/test/regression-recur.c + * src/test/regression-utils.c + * src/test/regression.c + * src/test/regression.h + * src/test/test_fileset.ics: New regression test suite + Obtained from: Paul Lindner + + * src/libical/icalcomponent.c + * src/libical/icalproperty.c + * src/libical/icalproperty.h + * src/python/test.py + * src/test/regression.c: Improved X- parameter handling. + Obtained from: Mark Tearle + +2002-06-07 Andrea Campi + + * configure.in + * src/libical/Makefile.am + * src/libical/icallexer.l + * src/libical/icalparser.c + * src/libical/icalparser.h + * src/libical/icalyacc.y + * src/libicalss/Makefile.am + * src/libicalss/icalgauge.c + * src/libicalss/icalsslexer.c + * src/libicalss/icalsslexer.l + * src/libicalss/icalssyacc.c + * src/libicalss/icalssyacc.h + * src/libicalss/icalssyacc.y: Made parser fully reentrant using + recent versions of flex/bison. Also committed the generated files + so that the library can be compiled even without those tools. + Obtained from: Paul Lindner + + * src/python/LibicalWrap.i + * src/python/Property.py + * src/python/test.py: Support X- properties in the Python wrapper. + Obtained from: Mark Tearle + +2002-06-04 Andrea Campi + + * *: Constifed a lot of functions, also made a few of them static + Obtained from: Paul Lindner + +2002-06-03 Andrea Campi + * src/libical/icallangbind.c + * src/python/Component.py + * src/python/Gauge.py + * src/python/Libical.py + * src/python/LibicalWrap.i + * src/python/Store.py + * src/python/test.py: Fully implemented FileStore and Gauge + in the python bindings. + Obtained from: Mark Tearle + +2002-05-28 Andrea Campi + + * src/libical/icalattach.c + * src/libical/icalattach.h + * src/libical/icalattachimpl.h + * src/libical/icalderivedproperty.c.in + * src/libical/icalderivedvalue.c.in + * src/libical/icalderivedvalue.h.in + * src/libical/icaltypes.c + * src/libical/icaltypes.h + * src/libical/icalvalue.c + * src/libical/icalvalueimpl.h: Changed ATTACH to be an opaque type + +2002-05-27 Eric Busboom + + * scripts/mkderivedparameters.pl + * scripts/mkderivedproperties.pl + * scripts/mkderivedvalues.pl + * src/libical/icalderivedparameter.c.in + * src/libical/icalderivedparameter.h.in + * src/libical/icalderivedproperty.c.in + * src/libical/icalderivedproperty.h.in + * src/libical/icalderivedvalue.c.in + * src/libical/icalderivedvalue.h.in: changed the auto generated + files and scripts so that the generated code is inserted into the + middle of the template (.in) file, instead of the end. This means + we could get rid of the declaration for the maps. + +2002-05-27 Andrea Campi + + * src/libical/icaltimezone.c: Worked around Outlook/Exchange brokenness. + Obtained from: evolution CVS repository + +2002-05-24 Andrea Campi + + * src/libical/icalproperty.c: Implemented proper RFC2445 folding. + Obtained from: evolution CVS repository + + * src/libical/icalrecur.c: Worked around Outlook/Exchange brokenness. + Obtained from: evolution CVS repository + + +2002-05-21 Andrea Campi + + * src/libical/*: Removed void * in favor of opaque typedef types. + This helped uncover a few bugs and made debugging easier. + Obtained from: Paul Lindner + +2002-05-10 Andrea Campi + + * src/libical/icalmemory.c: Made the memory allocator threadsafe. + This code is currently conditional on USE_THREAD, but it might + become the default in the future. + Obtained from: Paul Lindner + + * src/libical/icaltime.c: Implemented icaltime_is_date(), with the + intent of removing all direct accesses to is_date. + +2002-05-09 Andrea Campi + + * icaltime.c Rewrote and documented icaltime API, with the goal of + keeping it stable until release 1.0. Some functions and internal + implementation details are now declared obsolete and removed from + the documentation; they will be removed at a later time. + +2001-12-12 Eric Busboom + + * icalrecur.c implemented recurrence rule for "FREQ=YEARLY", + with no BY rules. + +2001-12-11 Eric Busboom + + * icalrecur.c Fixed bug in next_month for MONTHLY rules that have + only BYDAY rules. The code would miss valid dates that fell on the + first of the month. created new routine is_day_in_byday() + + * icaltime.c Fixed icaltime_from_day_of_year to correctly handle + negative and over-range day-of-years + + * icaltime.c collected all instances of leap year code into + icaltime_is_leap_year + + * icaltime.c icaltime_day_of_year. Changed an assert into code + that advances the year when the day of year is lager than the + number of days in the given year + + * icalerrno.c,h Added the function version + icalerror_set_errno. Only the define verson existed. + + * icaltime.c Moved all of the getenv/putenv operations into icaltimegm() + +2001-06-29 Eric Busboom + + * icalderivedproperties.h,c Changed the signature if the CLASS + property from TEXT to CLASS. ( enum icalproperty_class) + +2001-06-22 Eric Busboom + + * icaltypes.c Fixed bug in icaltriggertype_new_from_string htat + caused it to fail. + +2001-04-12 Eric Busboom + + * icalvalue.c Added quoting to apostrophies ("'") in text + values. This is not required by the spec, but it is necessary in + icallangbind_property_eval_string, since ' is special in both perl + and python. + +2001-04-10 Eric Busboom + + * icalvalue.c Added routine icalvalue_reset_kind. This routine is + now called by all autogenerated icalvalue_set_* + routines. icalvalue_reset_kind() will change the kind of the value + based on the data in the value. Currently, it will set a value to + either DATETIME or DATE based on the is_date flag of icaltimetype. + +2001-04-09 Eric Busboom + + * icalproperty.h Converted REQUEST-STATUS to use the struct + icalreqstat structure instead of a string + +2001-04-01 Eric Busboom + + * icalcomponent.h Changed meaning of + icalcomponent_new_from_string. It used to create a new component + given the text name of the component type to create. Now it calls + icalparser_parse_string to create a new component from the + complete iCalendar text representation of the component. + +2001-03-31 Eric Busboom + + * icalvalue Changed ACTION properties to take an ACTION value + instead of TEXT. The ACTION value is enumerated. + +2001-03-26 Eric Busboom + + * icalparameter.h icalparameter_rsvp_* routines now take, return + ICAL_RSVP_TRUE and ICAL_RSVP_FALSE, not 0 and 1 + +2001-03-25 Eric Busboom + + * icalrecur.c Many changes to get YEARLY rules working and fix + other errors. Recurrences are stil broken, but more types of rue + now work. + +2001-03-16 Eric Busboom + + * icalparameter.c Changed icalparameter_new_from_string() to + icalparameter_new_from_value_string(). Created new + icalparameter_new_from_string() that takes strings of + form"PARAMNAME=PARAMVALUE" + + * *_XNAME changes all _XNAME enumerations to _X + + * derived props, values, parameters. Seperated out derived + proeprties, parameters and values into their own files. This makes + it easier to auto generate all of the enumerations for values, + parameters and proeprties. + + * icalenum.h Major changes to icalenum. Movel all of the + icalenum_* values to other modules, and changed the names. Look + for #defines in icalenum.h tying the old name to the new + name. Also moved all of the enumerations into other files. + + + +2001-02-26 Eric Busboom + + * src/libical/icalproperty.c Added + icalproperty_set_parameter_from_string and + icalproperty_set_value_from_string to aid in binding to Python + +2001-02-15 Eric Busboom + + * design-data/prop-to-value.txt Made a new CSV file, + properties.cvs That collects property-to-value and default value + information + + * src/libical/icalproperty.{c,h}.in Moved auto generated code into + icalderivedproperty.{c,h} and created icalderivedproperty.{c,h}.in + + + +2001-02-14 JP Rosevear + + * src/libical/Makefile.am: Sigh, automake is dumber than i thought + +2001-02-12 JP Rosevear + + * src/test/Makefile.am: link with the static versions + + * src/python/Makefile.am: use include dir discovered in configure checks + + * src/python/.cvsignore: shush + + * src/libical/icalrestriction.c: remove autogenerated file + + * src/libical/Makefile.am: the generated files are now disted so + look for them in the source dir rather than the build dir + + * src/Makefile.am: Only build the python dir if all the configure + stuff checked out + + * configure.in: Remove shared library disabling and add a python + check and allow for the python bindings to not be built + +2001-02-11 Eric Busboom + + * src/python/Makefile.am Tweaked makefile to use automake more, + but it stil isn't quie right. + +2001-02-09 JP Rosevear + + * Shush cvs + +2001-02-09 JP Rosevear + + * src/libical/Makefile.am: Slightly over zealous during the merge + +2001-02-09 JP Rosevear + + * src/libical/Makefile.am: Correct typo + + * Removal of more auto generated files + +2001-02-09 JP Rosevear + + * Removal of various auto generated files + +2001-02-09 JP Rosevear + + * src/libical/icalparameter.c.in (icalparameter_new_from_string): + its NEEDS-ACTION rather than NEEDSACTION + (icalparameter_as_ical_string): ditto + +2001-02-09 Eric Busboom + + * python Added src/python directory. Inserted SWIG wrapper files, + and a simple interface to Component, Time, Duration, Period and + Store. + + * icallangbind.c More experimental work + + * icalduration.{c,h}, icalperiod.{c,h} Broke out period and + duration types into their own files + +2001-02-06 Christopher James Lahey + + * src/libical/icallangbind.c: Added a missing #include here. + + * src/libical/icalrecur.c (icalrecur_add_bydayrules): Copy the + passed in const vals since we change it. + +2001-02-06 Eric Busboom + + * icaltime.c Changed icaltime_from_day_of_year to run mktime in + the UTC timezone. This fixed a bug where it would return one day + eariler for some timezones. + +2001-02-05 Ettore Perazzoli + + * src/libical/Makefile.am (COMBINEDHEADERS): `icalvalue.h', + `icalparameter.h', `icalproperty.h' and `icalrestriction.h' are + created in the builddir so they shouldn't be prefixed with + `$(top_builddir)/src/libical'. + +2001-01-26 Eric Busboom + + * icalproperty.c.in Improved icalproperty_as_ical_string() to + eliminate the possibility of having a VALUE parameter that does + not match the actual kind of value. + + * icalvalue.c.in made icalvalue_*_trigger() and + icalvalue_*_datetimeperiod non-autogenerated. These routines were + for combined value type -- non standard values that can have more + than on standard value type. These non-standard types now delegate + to stadard types. + +2001-01-24 Eric Busboom + + * icalfileset.c fixed icalfileset_read-from_file so it will handle + lines longer than 80 char properly. + +2001-01-23 JP Rosevear + + * configure.in: Don't AC_INIT on an autogenerated file that does not + exist beforehand + +2001-01-23 Eric Busboom + + * icltime.c Removed all of the _local_ routines and simplified + icaltime_utc_offset and icaltime_as_timet + + * regression.c Added tests for triggers and improvements to icaltime.c + + * icaltypes.c Addedd icaltriggertype_from_string and changed + icaltriggertype to be a struct + +2001-01-22 Eric Busboom + + * icaltime.c implemented icaldurationtype_from_string to parse the + string it self, rather than use lex/yacc + +2001-01-15 Eric Busboom + + * icalfileset.c Many improvements. File locking now works, and so + does searching with icalfileset_select() + +2001-01-08 Eric Busboom + + * Makefile.am Remove spaces after -I in several + Makefile.am routines. + + * icalset.c removed return statements from some void functions. + + * icalparameter.c.in Added break to default: case that had no + body. Compilers on Solaris and Tru64 UNIX complained. + +2001-01-02 Eric Busboom + + * icaltime.c Changed icaldurationtype_from_time and _as_timet to + _from_int and _as_int. This is a change interface that may break + some code. + + * icalgauge.c icalgaugeimpl.h, icalgauge.h., Rewrote gauge code to + use pvl-lists directly, instead of trying to reuse icalcomponent. + +2000-12-13 Ettore Perazzoli + + * src/libicalvcal/Makefile.am (INCLUDES): Add + `$(top_builddir)/src/libical' to the include directory list. + + * src/libical/Makefile.am (icalparameter.h): Use `$(srcdir)'. + (icalparameter.c): Likewise. + (icalproperty.h): Likewise. + (icalproperty.c): Likewise. + (icalvalue.h): Likewise. + (icalvalue.c): Likewise. + (icalrestriction.c): Likewise. + (COMBINEDHEADERS): `icalvalue.h', `icalparameter.h' and + `icalproperty.h' are in builddir, not srcdir, so fix the list to + use `$(top_builddir)' instead of `$(top_srcdir)'. + (all): Removed. + (BUILT_SOURCES): Move `ical.h' here instead. + (ical.h): Don't depend on `(BUILT_SOURCES)'; this a built source + itself. + +2000-12-12 Eric Busboom + + * icalparser.c Addedd support for x-parameters. + + * icalenum.c Fixed icalenum_parameter_type_to_string and + icalenum_property_type_to_string to property identify X- parameers + and properties. + + * icalparameter.c Fixed icalparameter_as_ical_string to property + write out X-Parameters. + + +2000-12-11 Eric Busboom + + * icalcstp.c added empty bodies to prep_* routines so that shared + libraries would build. + +2000-12-11 JP Rosevear + + * src/libical/icaltime.c (icaltime_compare_date_only): New + function that compares only the dates, not the times as well. + + * src/libical/icaltime.h: Add prototype for the function above. + + * src/libical/icalrecur.h (struct icalrecurrencetype): Correct + header documentation. + + * src/libical/icaltypes.c: No longer include . + + * src/libical/icalrecur.c: Likewise. + + * src/libical/icalvalue.c: Likewise. + + * src/libical/icalyacc.y: Likewise. + +2000-12-11 Federico Mena Quintero + + * configure.in (AC_OUTPUT): Fixed order of generated files to make + "make distcheck" work. Turn on AM_MAINTAINER_MODE. + + * src/libical/Makefile.am (EXTRA_DIST): Add icalversion.h.in. + (COMBINEDHEADERS): Added paths to make "make distcheck" work. + (libical_la_SOURCES): Added headers for distribution in our weird + setup. + +2000-12-06 Eric Busboom + + * icaltime.c added icaltime_as_local to convert a UTC time to a + local time + + * icaltime.h icaltime.c Removed is_utc argument from + icaltime_from_timet + + +2000-11-29 Eric Busboom + + * icalrecur.c More testing and bug fixes. Many more of the rules + in recur.txt work correctly. + +2000-11-28 Eric Busboom + + * icalrecur.c Several changes to extract icalrecur.c from + libical. I'd like to make it into a reference impl for recurrence + rules. CHanges include moving all of the recurrence type and + recurrence enums from icalenum and icaltypes into icalrecur, and + adding code to parse recurrence rule strings. + + * icaltime.c Changed icaltime_from_string to parse the string + directly. Now icaltime.c has no dependency on icalvalue.c + +2000-11-21 Eric Busboom + + * icalrecur.c Fixed a bug in the increment_* routines that made + incrementing by more then 1 insensible. Thanks to Martin Neimeier + +2000-11-20 Eric Busboom + + * icalmessage.c Many routines to create new ical messages. + + * icalspanlist.c Code to generate a list of the busy time f the + VEVENTS in a set. Also includes routiens to generate free and busy + lists from the spanlist, and to find the next free time after a + given time. + + * icalvalue.c The STATUS property now has its own value type, + STATUS, which holds the enumeration icalproperty_status. + + * icalrestriction.c Added more restrictions. Now handles mutual + and exclusive consitions, and checks for the reight values in + STATUS properties + + +2000-11-10 Eric Busboom + + * icaltypes.c Added routine to create durationtype from string: + icaldurationtype_from_string + +2000-11-09 Eric Busboom + + * icalcomponet.c Add sever get/set convienience routines to access + and manipulate common component propoerties from the component + interface. This eliminates the need to create a lot of temporary + variables if you just want to change the start time of and event. + +2000-11-06 Eric Busboom + + * icalcomponent.c Added new routines to icalcomponent: + _get_span -- returns the start and end times of the event in UTC + _get_first_real_component -- return ref to VTODO, VEVENT or VJOURNAL + + * icalspanlist.c Added new class, icalspanlist, that generates a + list of alternating busy and free times from an icalset. The class + includes routines to gnerate rfc2445 busy and free lists, and to + get the next avaliable busy or free time after a given time. + +2000-11-06 Federico Mena Quintero + + * src/libical/icalvalue.c (icalvalue_recur_as_ical_string): Handle + both the position and weekday in the by_day field. + +2000-10-20 Eric Busboom + + * Const correctness. Added 'const' all over everywhere. + +2000-10-19 Eric Busboom + + * icalproperty, icalparameter, icalvalue .c, .h Changed most + instances of char* to const char* + + * icalclassify.h Added multiple include protection + + * icalset.h and others, got rid of parameter named "new" + +2000-10-15 Eric Busboom + + * icalcomponent Added convienience functions for constructing + components: icalcomponent_new_vcalendar(), etc. + + * Makefile.am Incorporated build system patch from Federico + Quintero. Misc small fixes and cleanup + + * scripts Incorporated auto-gen patch from Frederico. Generated + code in libical now uses icalproperty.c.in (etc) instead of + editing file icalparoperty.c in place. + + * libical. Changed flex/bison to use the -P/-p options to set + ical_yy as a prefix. Removed prefix redefinition from icalyacc.y + +2000-10-12 Eric Busboom + + * icalproperty.c Fixed icalproperty_get_{first,next}_parameter to + honor the parameter kind argument + + * icalparameter.c Added, but did not complete, a new version of + icalparameters_from_string that does not use the hairy nested + case/switch statements of the previous version + + +2000-10-02 Eric Busboom + + * ical.h ical.h and icalss.h now are concatenations of all of the + public headers for their respective libraries. Thus, only ical.h, + icalss.h and icalvcal.h need to be installed. + +2000-09-11 Eric Busboom + + * icalvcal.c Added more comments + +2000-08-31 JP Rosevear + + * configure.in: Don't list config.h in AC_OUTPUT + +2000-08-26 Ettore Perazzoli + + * examples/Makefile.am (INCLUDES): More `$(srcdir)' loving. + + * src/libicalvcal/Makefile.am (INCLUDES): Add `-I + $(srcdir)/../libical' for builddir != srcdir loving. + +2000-08-25 Christopher James Lahey + + * examples/access_properties_and_parameters.c, + src/libicalvcal/vcc.y: Got rid of some warnings. + + * src/libicalvcal/vcc.c: Checking in generated C file. + +2000-08-25 Christopher James Lahey + + * src/libical/icalcomponent.c: Fixed an incorrect struct name. + +2000-08-25 Peter Williams + + * src/libical/icalcomponent.c (icalcomponent_end_component): Compile fix; + use icalerror_check_arg_re so we can return an valid icalcompiter. + (icalcomponent_begin_component): Same. + +2000-08-24 Federico Mena Quintero + + * src/test/Makefile.am: Make it work. + +2000-08-04 Eric Busboom + + * stow.c Changed stow to write data to a file ( icalfileset) not a + calendar. Also added MIME parsing capability + + * sspm.c Core of the mime processor. Now handles quoted-printable + and base64 encodings + + * icalmime.h New file that parses mime data and returns an + icalcomponent that includes all of the parts. + + +2000-07-26 Eric Busboom + + * icaldirset.h misc bug fixes to get deleting components to work + + * icalcomponent.h Eliminated internal use of _get_first_component + and _get_next_component, since these will reset the interal + iterators. + +2000-07-23 Eric Busboom + + * icalcomponent.h Added external iterators to icalcomponent for + subcomponents: icalcompiter. These are still experimental, but they + seem to work OK and have a nice syntax + +2000-07-18 Eric Busboom + + * icalset This is a new "superclass" for icalstore, icalcluster, + and others. It merges the interfaces of the old icalstore and + icalcluster + + * icalstore.{c,h} CHanged name to icaldirset + + * icalcluster.{c,h} Changed name to icalfileset + + +2000-06-12 Eric Busboom + + * icalstow.c misc improvements and bug fixes to make it useful. + +2000-06-09 Eric Busboom + + * icalrecur.c More extensive code changes for recurrence rule. + + * icalyacc.y Added support for integers in by day lists + +2000-06-01 Eric Busboom + + * icalrecur.c moved recur code into new files + +2000-05-30 Eric Busboom + + * icaltypes.c Extensive work on code to expand recurences + + * icaltypes.h Changed signature icaltimetype_from_timet to include + is_utc flag. + + +2000-03-17 Eric Busboom + + * icalstore.c Vastly improved icalstore_test. + +2000-03-16 Eric Busboom + + * icalcluster.c Added compile flag (ICAL_SAFESAVES) to switch how + icalcluster saves files during commits. When the flag is define, + it will write the data to a temorar file and rename the file to + the target file. + + * storage.c Added seterate test suite for sotage components + + * icalparser.c Created parser object, implemented line-oriented + parsering, and made message oriented parsing work in terms f line + oriented parsing. + + * icalparser.c Fixed icalparser_get_line to remove \r in input. + + diff --git a/mozilla/calendar/libical/LICENSE b/mozilla/calendar/libical/LICENSE new file mode 100644 index 00000000000..9ed264adf93 --- /dev/null +++ b/mozilla/calendar/libical/LICENSE @@ -0,0 +1,33 @@ +Libical is distributed under both the LGPL and the MPL. The MPL +notice, reproduced below, covers the use of either of the licenses. + +---------------------------------------------------------------------- + +The contents of this file are subject to the Mozilla Public License +Version 1.1 (the "License"); you may not use this file except in +compliance with the License. You may obtain a copy of the License at +http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS +IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +implied. See the License for the specific language governing rights +and limitations under the License. + + The Original Code is libical. + + The Initial Developer of the Original Code is Eric Busboom + + All Rights Reserved. + + Contributor(s): See individual source files. + +Alternatively, the contents of this file may be used under the terms +of the LGPL license, in which case the provisions of LGPL License are +applicable instead of those above. If you wish to allow use of your +version of this file only under the terms of the LGPL License and not +to allow others to use your version of this file under the MPL, +indicate your decision by deleting the provisions above and replace +them with the notice and other provisions required by the LGPL +License. If you do not delete the provisions above, a recipient may +use your version of this file under either the MPL or the LGPL +License." diff --git a/mozilla/calendar/libical/NEWS b/mozilla/calendar/libical/NEWS new file mode 100644 index 00000000000..ad1299b2faa --- /dev/null +++ b/mozilla/calendar/libical/NEWS @@ -0,0 +1,522 @@ +Version 0.24, XX Xxx 2002 ( cvs tag libical-0-24 ) +-------------------------------------------------- + +**** Incompatibilities with previous version **** + +CSTP client/server code has been removed from libicalss. +Future versions will eventually contain a full CAP 6.0 +client/server implementation. + +icalproperty_get_name() is deprecated and will change +in a future release. Use icalproperty_get_icalproperty_name() +instead. + +icalcomponent_get_span() is deprecated in this release +because it does not handle recurring events. See +icalcomponent_foreach_recurrence() for an alternate +interface. + +The icalproperty_remove_parameter() call is deprecated +because it improperly deals with extended parameters. +See icalproperty_remove_parameter_by_kind() for a +compatible call. + +Code that deals with the TRANSPARENT property now +uses enumeration values to get/set values instead of +strings. + +The code for dealing with icalsets was overhauled. You +will want to use the common icalset_* routines +directly instead of calling into the icalfileset_* or +icaldirset_* routines. + +A number of routines now expect to be called with +const arguments. A number of routines now +return pointers to const data. + + +**** New Features **** + +Major cleanup of the time-handling routines. New API is +available that deals with timezones much more cleanly. + +The regression routines in src/test are much cleaner. +Test runs summarize which tests fail and do not +immediately abort() like the old set of tests. A +number of old, commented tests were resurrected. + +C++ Interface: New libraries libical_cxx.la and libicalss_cxx.la +are build when you configure with the --enable-cxx option. + +Java Interface: A JNI interface to libical is build when +you configure with the --enable-java option. + +Most of libical is now reentrant and thread safe. The Lex/Yacc +query parser is pre-built with flex 2.5.8 and bison 1.34. To +rebuild these files you will need to specify the --with-devel +option. The --enable-reentrant option also adds the -D_REENTRANT +flag for systems that require it. The build system attempts to +add the pthread libraries to support a thread safe memory allocator +and thread-safe error handling. + +A new storage mechanism for Berkeley DB 4.0 was contributed +by Critical Path. Specify the --with-bdb4 and --with-bdb4-dir +options to enable. + +Embedded code comments are slowly being migrated to be +doxygen compliant. See http://www.doxygen.org/ for +more on this wonderful tool. + +The code should now compile with non-gcc compilers. Certain +parts of the autogenerated code were causing problems. The +code base has also been ported to the windows Visual C +environment. + + +Version 0.23, 26 Mar 01 ( cvs tag libical-0-23 ) +------------------------------------------------ + +**** Incompatibilities with previous versions **** + +icalparameter_new_rsvp +icalparameter_get_rsvp +icalparameter_set_rsvp + + These routines now take and return ICAL_RSVP_TRUE and + ICAL_RSVP_FALSE instead of 0 and 1 + +icalenum_*_to_* + + These routines have been moved to icalproperty, icalparameter + or icalvalue + + + +Python interface: An alpha level python interface is available in +src/python. + +Perl interface: A pre-alpha level interface is available in +src/Net-ICal-Libical + +Code Autogeneration: Converted all of the important files in +design-data/ to .csv files and improved the code that is generated +from them. Now all of the enumerations for property, parameters and +values are generated from thes files, as are the string +representations for the enumerations. You can add a new property or +parameter to the system simply by adding a line to the appropriate +file in design-data/ + +Recurrences: Improved the recurrence code by fixing bugs in MONTHLY +recurrences and completely re-implementing expand_year_days() for +YEARLY recurrences. Hubert V's aided in testing. + +Build system: JP Rosevear made several improvements to the build +system. Now checking out the code from cvs should give to a complete +but minimal distribution, without any of the autognerated files. + +Interface changes: Nearly all of the icalenum routines for converting +between strings and enumerations have been moved out of icalenum into +icalproperty, icalparameter and icalvalue. This means that their names +have changed, although #defines have been added to icalenum.h to map +back to the old names. + +Added src/libical/icllangbind.c that has some functions to make it +easier to bind libical to other languages. + + +Version 0.22, 15 Jan 01 ( cvs tag libical-0-22) +---------------------------------------------- + +Many improvements to the time routines in icaltime.c. I think that +they actually make sense now. Note that there is an interface change +with icaltime_from_timet() -- I removed the is_utc parameter, since +all timet values are in UTC. Use icaltime_from_int() if you really +want the old interface + +Major improvements to icalfileset. icalfileset_select now works and so +does file locking. + +Minor revision to the documentation, but it does include a new section +on file storage ( icalfileset ) and time ( icaltime.c) + +Lots of bug fixes and small patches. + +I improved the regression test in src/test/regression.c. It now have +command line switches to select specific tests ( undocumentated, of +course ) and more of the tests include asserts, so you can just run it +without looking at the output. If the test runs without crashing, it +is mostly OK. + + + +Version 0.21, 20 Nov 00 ( cvs tag libical-0-21) +---------------------------------------------- + + * icalmessage.c Many routines to create new ical messages. + + * icalspanlist.c Code to generate a list of the busy time f the + VEVENTS in a set. Also includes routiens to generate free and busy + lists from the spanlist, and to find the next free time after a + given time. + + * icalvalue.c The STATUS property now has its own value type, + STATUS, which holds the enumeration icalproperty_status. + + * icalrestriction.c Added more restrictions. Now handles mutual + and exclusive consitions, and checks for the reight values in + STATUS properties + + * icaltypes.c Added routine to create durationtype from string: + icaldurationtype_from_string + + + * icalcomponet.c Add sever get/set convienience routines to access + and manipulate common component propoerties from the component + interface. This eliminates the need to create a lot of temporary + variables if you just want to change the start time of and event. + + + * icalcomponent.c Added new routines to icalcomponent: + _get_span -- returns the start and end times of the event in UTC + _get_first_real_component -- return ref to VTODO, VEVENT or VJOURNAL + + * icalspanlist.c Added new class, icalspanlist, that generates a + list of alternating busy and free times from an icalset. The class + includes routines to gnerate rfc2445 busy and free lists, and to + get the next avaliable busy or free time after a given time. + + +Version 0.20D 3 Nov 00 +----------------------- + +Many miscelaneous tweaks to the build system + +More work to icalclassify. + +Aded routines to icaltime.c to convert to and from specific timezones +in Olsen format ("America/Los_Angeles") + + +Version 0.20 7 Sept 00 (cvs tag libical-0-20 ) +---------------------------------------------- + +Addedd icalclassify() which looks at a message and determine how to +process it. + +Misc bug fixes and tweaks. + +Version 0.19 6 August 00 (cvs tag libical-0-19) +----------------------------------------------- + +Created a MIME parser in icalmime.c. This will take any complex MIME +encapsulated message and return an icalcomponent with the same +structure. Each MIME part is represented by a component of type +X-LIC-MIMEPART. + +Added MIME partsing to stow.c + +Added external iterators to icalcomponent. See test_iterators() in +test/regression.c + +Refactored icalcluster and icalstore into icalset, icalfileset and +icaldirset, which have a pseudo inheritance relationship between them. + +Fixed more memory leaks. + +Version 0.18a 10 June 00 ( cvs tag libical-0-18a ) +----------------------------------------------- + +Did the final tweaks to stow.c, a program to recieve and store iMIP +messages. + + +Version 0.18 10 June 00 ( cvs tag libical-0-18 ) +----------------------------------------------- + +Added libicalvcal, which includes the Versit code for parsing vCal +files and a routine (icalvcal_convert() ) that converts a vCal object +to an iCal object. The test program is src/test/testvcal. + +Added marginally functional recurrence code. The curent code does not +handle all of the examples in rfc2445 ( which are extracted in +test-data/recur.txt ) but it can do all of the obvious cases. See the +test program in src/test/recur.c for an example. In particular, the +code cannot handle the integer values in BYDAY, nor negative integers +in BYMONTH or BYMONTHDAY. It also cannot handle BYSETPOS. + +Moved some code to the examples directory and improved the comments. + +Did a little more work on the documentation in the doc directory. The +documentation is in LyX source, but there is a text version in +UsingLibical.txt + + +Version 0.17 15 May 00 (cvs tag libical-0-17 ) +--------------------------------------------- + +Fixed two bugs that added extraneous '/' to test values + +Fixed type in internal string for the COUNTER method + +Eliminated a memory leak in icalparser.c + + +Version 0.16a 29 April 00 +---------------------------------------------- + +Fixed bug in icalvalue_new_from_string that caused METHOD value to +choke on non standard input. + +Fixed a memory leak in icalparser_add_line -- failed to free 'line' + + +Version 0.16 5 April 00 ( cvs tag libical-0-16) +---------------------------------------------- + +Now using automake. + +Substantial changes to the parser. New interfaces let you parser +multiple components from a single stream by feading the parser object +one line at a time. + +Added a STRING value type. this type is like TEXT, but does not +backslash magic characters. It is used in PRODID and REQUEST-STATUS, +where the '/' and ';' are literal. + +Added several convience functions for REQUEST-STATUS to icalenums.c + +Addedd a routine to icalcomponent to convert X-LIC errors to +REQUEST-STATUS return values. + +Version 0.15a 5 Mar 00 (cvs tag libical-0-15a) +--------------------- + +Experimented with CVS + +Fixed icalvalue_set_text to convert escaped characters into the proper +values. + +Other minor code tweaks. + + +Version 0.15 7 Feb 00 +--------------------- + +Split the storage classess ( icalstore, icalcluster, icalcalendar ) +into a seperate library, libicalss + +Implemented restriction checking in file icalrestrictions.c. The +checking is not complete, but can handle the bulk of the restrictions +described in RFC 2446. + +Created a new value type, METHOD. Changed METHOD property to use the +new value. The METHOD value uses an enumeration. + + +Version 0.14b +------------- + +Implemented parsing of RECUR values, although it does not handle BYDAY +specs with numbers. + +Fixed error in icalparser_next_line that mangled lines longer than the +temp buffer (1024 chars.) The temp buffer is now 80 chars, and it can +handle (apparently) arbitrary length lines + +Fixed severe brokenness in a value, but I forgot which one. + +Cleaned cruft out of the distribution, so the tarfile is smaller. + + +Version 0.14a 14 Jan 00 +----------------------- + +Fixed bug in ROLE parameter -- missing '-' in the text of allowed values + +Fixed bug in X-parameters + +Version 0.14 11 Jan 00 +---------------------- + +Fixed wrong value type for TRIGGER property + +Added Calendar object. Calendar is an aggregate of two stores and two +clusters, and can store all of the inforamation associated with a +calendar. + +icalcomponent_add_property and icalcomponent_add_component will +complain if you try to add a component or property that is already +part of an other component. The *_free routines wil complain if you try +to free a linked component or property. + +More improvements to error handling. + +Parser is much more robust. + +Minor memory enhancements. + +Regression test runs without memory leaks. + +Version 0.13d 21Dec99 +--------------------- + +Seperated perl interface and library + +Added autoconf support + +Scripts that generate derived properties, values and parameters now +change source and header files inline. + +Changed icalstore to cluster all components with DTSTART in a month +into a single file. This should reduce number of file accesses by a +factor of 60. + +Ran code through Purify and fixed memory leaks. + + +Version 0.13 16Nov99 +--------------------- + +Yet more bug fixes! Yeah! + +Added better error handling. The Parser inserts X-LIC-*ERROR +properties to warn of parsing errors. + +The imip source/sink programs in /src/imip is demonstrably functional. + +Version 0.12b 17Oct99 +--------------------- + +More bug fixes, particularily in parse from string routines + +ICal::Store is mostly functional + +This is version is a checkpoint, not a release. + +Version 0.12a 10Oct99 +--------------------- + +Expanded perl interface: + Added 1/2 of Store module + Fixed bugs + Implemeted get_{first,next}_property + +Extended C interface + Made get_{first,next}_property work properly + Fixed bugs + + +This is version is a checkpoint, not a release. + +Version 0.12 27Aug99 +-------------------- + +Added a rudimentatry perl interface + +This is version is a checkpoint, not a release. + + +Version 0.11 11Aug99 +-------------------- + +Eliminated most use of flex/bison -- all parsing, except for the +values, is done in C. + +Cleaned up memory leaks. Purify claims that I got them all. + +Moved all derived component/prop/param/value code ( in .inc / .h +files) into main files ( icalcomponent.{c,h}, icalproperty.{c,h}, etc/ +) + +Implemented *_clone routines. + +Fixed a lot of bugs. + +Implemented more value types. Still unimplemeneted are BINARY and RECUR + +Included MacOS/Code Warior files from Graham Davison + + +Version 0.10 8Jul99 +------------------- + +Eliminated shift/reduce and reduce/reduce conflicts in the parser. +This version is almost feature complete -- it has the basic structure +for all of the library's functionality, and it will only require +implementing procedure shells and fixing bugs. I think that all of the +hard work is done... + +Version 0.09a,b 3,7 Jul99 +------------------------- + +Various improvements to the parser, added some functionality. The parser code +is mostly complete, and should be fully functional, except for a horde of +bugs. Also added support for X-Properties. + +Version 0.09 25Jun99 +-------------------- + +Added a parser in files src/comp/icalitip.{y,l} The lexer is mostly +functional, but the parser is not. + + +Version 0.08 2Jun99 +-------------------- + +All files now have MPL licensing + +Implement enough of the code to perform some rudimentary testing + + +Version 0.07 14May99 +-------------------- + +Remove all interfaces that construct object from a string + +Moved most code back into comp directory + +Implemented C files for most headers -- usecases.c now links. + +Many improvements to generation scripts. + + + +Version 0.06 25Apr99 +-------------------- + +Expanded distribution to include: + Directory structure that can accomodate future expansion + Several levels of Makefiles + This CHANGES file + +Added headers for irip and parse modules + +Added several files with design information + +Added scripts that I had used to generate much of the ical header code. + +Split C headers from CC headers + +Added data for iTIP and iCAL component restrictions in restrictions.csv + +Version 0.05 11Apr99 +---------------------- + +Changes to ical headers + + Added derived Property classes. + + Improved the interface to the derived property and parameter classes + + Added derived component classes. + + Created usecases.c and ccusecases.cc to demonstrate use + + C++ interface compile + + +Version 0.04 5Apr99 +------------------- + +Version 0.02 30Mar99 +-------------------- diff --git a/mozilla/calendar/libical/README b/mozilla/calendar/libical/README new file mode 100644 index 00000000000..19a4740e940 --- /dev/null +++ b/mozilla/calendar/libical/README @@ -0,0 +1,102 @@ + +LIBICAL -- An implementation of basic iCAL protocols + +The code and datafiles in this distribution are licensed under the +Mozilla Public License. See http://www.mozilla.org/NPL/MPL-1.0.html +for a copy of the license. Alternately, you may use libical under the +terms of the GNU Library General Public License. See +http://www.fsf.org/copyleft/lesser.html for a copy of the LGPL. + +This dual license ensures that the library can be incorporated into +both proprietary code and GPL'd programs, and will benefit from +improvements made by programmers in both realms. I will only accept +changes into my version of the library if they are similarly +dual-licensed. + +Portions of this distribution are (C) Copyright 1996 Apple Computer, +Inc., AT&T Corp., International Business Machines Corporation and +Siemens Rolm Communications Inc. See src/libicalvcal/README.TXT for +details. + +Portions of this distribution are Copyright (c) 1997 Theo de +Raadt. See the header for src/libical/vsnprintf.c for the full +copyright statement. + +This code is under active development. If you would like to contribute +to the project, you can contact me, Eric Busboom, at +eric@softwarestudio.org. The project has a webpage at + + http://softwarestudio.org/libical/index.html + +and a mailing list that you can join by sending the following mail: + + ------------ + To: minimalist@softwarestudio.org + Subject: subscribe libical + ------------ + + +Building the library +-------------------- + +This distribution is developed on Red Hat Linux 6.0 and usually +compiles on SunOS 5.6 and FreeBSD 2.27. I have reports of success of +previous version on MacOS ( with CodeWarrior ) and on UnixWare, but I +don't know about any other systems. + +The library is configured with automake. IF YOU ARE BUILDING THE +SOURCE FROM A TARBALL, From the root directory, run + + ./configure + +To build all of the Makefiles for your system. If you will be +installing the library, you may want to use the --prefix flag to set +the directory where the library and header files will be installed. + + ./configure --prefix=/proj/local/ + +If configure runs fine, run "make" to build the library and +"make install" to install it. + +Although the distribution uses libtool to generate libraries, it has +shared libraries turned off by default. To create and install shared +libraries use: + + ./configure --enable-shared + + +IF YOU ARE BUILDING FROM CVS, there will be no configure file until +you create one with autogen.sh. YOu can pass configure parameters to +autogen.sh on the command line. + +The current version of libical focuses on creating and +manipulating iCal objects. With it, you can parse text representations +of iCal components, add and remove sub-components, properties, +parameters and values, and print the components back out as strings. + + +Notes for Libical Developers +------------------- + +If you don't want to use gcc as the compiler, and you got the sources +from CVS, you should set the CC variable to the path to the compiler +and run "automake --include-deps" to keep automake from using +gcc-specific automatic dependancy tracking. + + > CC=/pkg/SUNWspro/bin/cc; export CC + > automake --include-deps + > ./configure --prefix=/proj/local/ + > make + +You will not need to re-run automake unless you got the sources from CVS. + +Using the Library +----------------- + +There is rudimentary, unfinished documentation in the /doc directory, +and annotated examples in /examples and the test code in src/test. + + + +Eric Busboom +eric@softwarestudio.org diff --git a/mozilla/calendar/libical/THANKS b/mozilla/calendar/libical/THANKS new file mode 100644 index 00000000000..d795eecaa3c --- /dev/null +++ b/mozilla/calendar/libical/THANKS @@ -0,0 +1,69 @@ +Thanks to: + +Allan Clark for testing libical against +UnixWare. + +Graham Davison for MacOS support and +miscelaneous code bits + +Seth Alves for the first cut at the Makefile.am +files and various utility functions. + +Russ Steinthal for several utility functions and +comments. + +Ola Lundqvist for the vCal test data file. + +Colin DuPlantis for new functions in icalparser.c + +Holger Schmidt for all of icalcstp.c, The +CSTP protocol implementation, and modifications to icalcstp.h + +Gisle Hannemyr The decode*() functions in sspm.c +are based on the decode() routine in the mimelite program, Copyright +(c) 1994 Gisle Hannemyr. + +The Evolution team at Helixcode ( Federico Mena Quintero +, JP Rosevear , Ettore +Perazzoli , Christopher James Lahey +, Peter Williams ) for +miscelaneous patches and adjustments to the build system. + +Cornelius Schumacher for many insightful +suggestions and a few patches. + +Mark D. Anderson for discussions and ideas. + +Martin Neimeier for correcting bugs in icalrecur.c + +Tom Leitner For several bug fixes in +compiling on Tru64 UNIX. + +Patrick Lewis for several bug reports and +substantial ( co-authorship) contributions to the Python bindings + +Larry W. Virden for several bug reports in compiling +on Solaris. + +Bryan Bartone for code changes based on porting +libical to Windows. + +Hubert V for checking and analyzing the output +of the recurrence rule system. + +Jonathan Yue for icalproperty_get_name() + +Jeff Mace for finding bugs in gauges. + +John Gray for routing memory leaks, porting to +WIN32, and taking over leadership of the project. + +Andrea Campi for miscellaneous updates and beginning +of Doxygen documentation. + +Paul Lindner for several contributions, including +C++ binding, reentrant parser, thread safe memory allocator, and a +lot of documentation. + +Mark Tearle for keeping the Python bindings up +to date. diff --git a/mozilla/calendar/libical/TODO b/mozilla/calendar/libical/TODO new file mode 100644 index 00000000000..f707c2a525a --- /dev/null +++ b/mozilla/calendar/libical/TODO @@ -0,0 +1,39 @@ + +TODOs for libical +----------------- + +libical treats properties with multiple values incorrecty -- it always +seperates multiple values into multiple properties. This is not +acceptable for CATEGORIES and RESOURCES. + +Some TEXT valued properties, like METHOD, have a limited set of valid +values. The code should check that the values of these properites are +valid. ( Although METHOD now uses enums, and is not really TEXT valued ) + +Finish implementing values + ATTACH/BINARY + content_type + language + +Check for buffer overflow on external input. + +Error Handling + + Dates and times: the parser will accept many illegal date time + values + +RECUR values ignore integers in BYDAY clauses, ie 'FREQ=MONTHLY;BYDAY=-1SU' + +Restrictions code does not catch lack of DTEND or DURATION + +For some value types, if there illegal characters in the value ( like +4.56 in an integer value), the parser will output the characters to +stdout. + +Check all uses of strcpy and sprinf for buffer overflows + +Make the mime parsing code in sspm grow the list of parts as needed, +rather than having a hard limit. + +in sspm.c, and unrecognized content-transfer-encoding values must +force a content type of application/octet-stream. diff --git a/mozilla/calendar/libical/design-data/Makefile.am b/mozilla/calendar/libical/design-data/Makefile.am new file mode 100644 index 00000000000..8f27cd6ce0a --- /dev/null +++ b/mozilla/calendar/libical/design-data/Makefile.am @@ -0,0 +1,6 @@ +EXTRA_DIST =\ + properties.csv \ + parameters.csv \ + restrictions.csv \ + status.txt \ + value-types.csv diff --git a/mozilla/calendar/libical/design-data/Makefile.in b/mozilla/calendar/libical/design-data/Makefile.in new file mode 100644 index 00000000000..659836cf249 --- /dev/null +++ b/mozilla/calendar/libical/design-data/Makefile.in @@ -0,0 +1,242 @@ +# Makefile.in generated automatically by automake 1.5 from Makefile.am. + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_HEADER = $(INSTALL_DATA) +transform = @program_transform_name@ +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_alias = @build_alias@ +build_triplet = @build@ +host_alias = @host_alias@ +host_triplet = @host@ +target_alias = @target_alias@ +target_triplet = @target@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AWK = @AWK@ +BDB_DIR = @BDB_DIR@ +BDB_DIR_INCLUDE = @BDB_DIR_INCLUDE@ +BDB_DIR_LIB = @BDB_DIR_LIB@ +BDB_LIB = @BDB_LIB@ +BDB_VERSION = @BDB_VERSION@ +CC = @CC@ +CXX = @CXX@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +EXEEXT = @EXEEXT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +JAR = @JAR@ +JAVA = @JAVA@ +JAVAC = @JAVAC@ +JAVAH = @JAVAH@ +JAVA_PLATFORM = @JAVA_PLATFORM@ +LEX = @LEX@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +MAINT = @MAINT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PTHREAD_LIBS = @PTHREAD_LIBS@ +PY_CFLAGS = @PY_CFLAGS@ +PY_EXTRA_LIBS = @PY_EXTRA_LIBS@ +PY_LIBS = @PY_LIBS@ +PY_LIB_LOC = @PY_LIB_LOC@ +RANLIB = @RANLIB@ +RRCAP_CFLAGS = @RRCAP_CFLAGS@ +RRCAP_LIBS = @RRCAP_LIBS@ +VERSION = @VERSION@ +YACC = @YACC@ +am__include = @am__include@ +am__quote = @am__quote@ +install_sh = @install_sh@ +python_val = @python_val@ + +EXTRA_DIST = \ + properties.csv \ + parameters.csv \ + restrictions.csv \ + status.txt \ + value-types.csv + +subdir = design-data +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +DIST_COMMON = Makefile.am Makefile.in +all: all-am + +.SUFFIXES: + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu design-data/Makefile +Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && \ + CONFIG_HEADERS= CONFIG_LINKS= \ + CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status +uninstall-info-am: +tags: TAGS +TAGS: + + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + if test -f $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + $(mkinstalldirs) "$(distdir)/$$dir"; \ + fi; \ + if test -d $$d/$$file; then \ + cp -pR $$d/$$file $(distdir) \ + || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile + +installdirs: + +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool uninstall uninstall-am uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/mozilla/calendar/libical/design-data/components.txt b/mozilla/calendar/libical/design-data/components.txt new file mode 100644 index 00000000000..c4736e72b26 --- /dev/null +++ b/mozilla/calendar/libical/design-data/components.txt @@ -0,0 +1,22 @@ +ANY +VAGENDA +VALARM +VCALENDAR +VCAR +VCOMMAND +VEVENT +VFREEBUSY +VJOURNAL +VQUERY +VSCHEDULE +VTIMEZONE +VTODO +X +XAUDIOALARM +XDAYLIGHTSAVINGSTIME +XDISPLAYALARM +XEMAILALARM +XLICINVALID +XMIMEPART +XPROCEDUREALARM +XSTANDARDTIME diff --git a/mozilla/calendar/libical/design-data/parameters.csv b/mozilla/calendar/libical/design-data/parameters.csv new file mode 100644 index 00000000000..d0a2ef9df6c --- /dev/null +++ b/mozilla/calendar/libical/design-data/parameters.csv @@ -0,0 +1,33 @@ +"#Name ","C Type","Enumeration Values" +"ALTREP","const char*", +"CN","const char*", +"CUTYPE","icalparameter_cutype","INDIVIDUAL;GROUP;RESOURCE;ROOM;UNKNOWN" +"DELEGATED-FROM","const char*", +"DELEGATED-TO","const char*", +"DIR","const char*", +"ENCODING","icalparameter_encoding","8BIT;BASE64" +"FBTYPE","icalparameter_fbtype","FREE;BUSY;BUSYUNAVAILABLE;BUSYTENTATIVE" +"FMTTYPE","const char*", +"LANGUAGE","const char*", +"MEMBER","const char*", +"PARTSTAT","icalparameter_partstat","NEEDS-ACTION;ACCEPTED;DECLINED;TENTATIVE;DELEGATED;COMPLETED;INPROCESS" +"RANGE","icalparameter_range","THISANDPRIOR;THISANDFUTURE" +"RELATED","icalparameter_related","START;END" +"RELTYPE","icalparameter_reltype","PARENT;CHILD;SIBLING" +"ROLE","icalparameter_role","CHAIR;REQ-PARTICIPANT;OPT-PARTICIPANT;NON-PARTICIPANT" +"RSVP","icalparameter_rsvp","TRUE;FALSE" +"SENT-BY","const char*", +"TZID","const char*", +"VALUE","icalparameter_value","BINARY;BOOLEAN;DATE;DURATION;FLOAT;INTEGER;PERIOD;RECUR;TEXT;URI;ERROR;DATE-TIME;UTC-OFFSET;CAL-ADDRESS" +"X","const char*", +"X-LIC-ERRORTYPE","icalparameter_xlicerrortype","COMPONENT-PARSE-ERROR;PROPERTY-PARSE-ERROR;PARAMETER-NAME-PARSE-ERROR;PARAMETER-VALUE-PARSE-ERROR;VALUE-PARSE-ERROR;INVALID-ITIP;UNKNOWN-VCAL-PROP-ERROR;MIME-PARSE-ERROR;VCAL-PROP-PARSE-ERROR" +"X-LIC-COMPARETYPE","icalparameter_xliccomparetype","EQUAL;NOTEQUAL;LESS;GREATER;LESSEQUAL;GREATEREQUAL;REGEX;ISNULL;ISNOTNULL" +"#CAP Parameters","Draft 8", +"#this parameter should really be called ACTION, but this conflicts with the ACTION property" +"ACTIONPARAM","icalparameter_action","ASK;ABORT" +"ID","const char*", +"ENABLE","icalparameter_enable","TRUE;FALSE" +"LATENCY","const char*", +"LOCAL","icalparameter_local","TRUE;FALSE" +"LOCALIZE","const char*", +"OPTIONS","const char*", diff --git a/mozilla/calendar/libical/design-data/params-in-prop.txt b/mozilla/calendar/libical/design-data/params-in-prop.txt new file mode 100644 index 00000000000..863366312ec --- /dev/null +++ b/mozilla/calendar/libical/design-data/params-in-prop.txt @@ -0,0 +1,57 @@ +ACTION VALUE X +ATTACH FMTTYPE ENCODING VALUE X +ATTENDEE CN CUTYPE DELEGATED-FROM DELEGATED-TO DIR LANGUAGE MEMBER PARTSTAT ROLE RSVP SENT-BY X +CALSCALE X +CATEGORIES LANGUAGE X +CLASS X +CMD ACTIONPARAM ID LATENCY LOCALIZE OPTIONS X +COMMENT ALTREP LANGUAGE X +COMPLETED X +CONTACT ALTREP LANGUAGE X +CREATED X +DESCRIPTION ALTREP LANGUAGE X +DTEND VALUE TZID X +DTSTAMP X +DTSTART VALUE TZID X +DUE VALUE TZID X +DURATION X +EXDATE VALUE TZID X +EXRULE X +FREEBUSY FBTYPE X +GEO X +LAST-MODIFIED X +LOCATION ALTREP LANGUAGE X +METHOD X +ORGANIZER CN DIR LANGUAGE SENT-BY X +PERCENT-COMPLETE X +PRIORITY X +PRODID X +RDATE VALUE TZID X +RECURRENCE-ID VALUE RANGE TZID X +RELATED-TO RELTYPE X +REPEAT X +REQUEST-STATUS LANGUAGE X +RESOURCES ALTREP LANGUAGE X +RRULE X +SEQUENCE LOCAL X +STATUS X +SUMMARY ALTREP LANGUAGE X +TRANSP X +TRIGGER ENABLE VALUE RELATED X +TZID X +TZNAME LANGUAGE X +TZOFFSETFROM X +TZOFFSETTO X +TZURL X +UID X +URL X +VERSION X +XPROP LANGUAGE X +X-LIC-ERROR XLICEERRORTYPE X +SCOPE X +MAXRESULTS X +MAXRESULTSSIZE X +QUERY X +QUERYNAME X +TARGET X +EXPAND X diff --git a/mozilla/calendar/libical/design-data/properties.csv b/mozilla/calendar/libical/design-data/properties.csv new file mode 100644 index 00000000000..11f977ed3d5 --- /dev/null +++ b/mozilla/calendar/libical/design-data/properties.csv @@ -0,0 +1,108 @@ +,, +"#Property Name","libical Value type","iCalendar default value" +"ACTION","ACTION","ACTION" +"ATTACH","ATTACH","URI" +"ATTENDEE","CAL-ADDRESS","CAL-ADDRESS" +"CALSCALE","TEXT","TEXT" +"CATEGORIES","TEXT","TEXT" +"CLASS","CLASS","CLASS" +"COMMENT","TEXT","TEXT" +"COMPLETED","DATE-TIME","DATE-TIME" +"CONTACT","TEXT","TEXT" +"CREATED","DATE-TIME","DATE-TIME" +"DESCRIPTION","TEXT","TEXT" +"DTEND","DATE-TIME","DATE-TIME" +"DTSTAMP","DATE-TIME","DATE-TIME" +"DTSTART","DATE-TIME","DATE-TIME" +"DUE","DATE-TIME","DATE-TIME" +"DURATION","DURATION","DURATION" +"EXDATE","DATE-TIME","DATE-TIME" +"EXRULE","RECUR","RECUR" +"FREEBUSY","PERIOD","PERIOD" +"GEO","GEO","GEO" +"LAST-MODIFIED","DATE-TIME","DATE-TIME" +"LOCATION","TEXT","TEXT" +"METHOD","METHOD","METHOD" +"ORGANIZER","CAL-ADDRESS","CAL-ADDRESS" +"PERCENT-COMPLETE","INTEGER","INTEGER" +"PRIORITY","INTEGER","INTEGER" +"PRODID","TEXT","TEXT" +"RDATE","DATE-TIME-PERIOD","DATE-TIME" +"RECURRENCE-ID","DATE-TIME","DATE-TIME" +"RELATED-TO","TEXT","TEXT" +"REPEAT","INTEGER","INTEGER" +"REQUEST-STATUS","REQUEST-STATUS","REQUEST-STATUS" +"RESOURCES","TEXT","TEXT" +"RRULE","RECUR","RECUR" +"SEQUENCE","INTEGER","INTEGER" +"STATUS","STATUS","STATUS" +"SUMMARY","TEXT","TEXT" +"TRANSP","TRANSP","TRANSP" +"TRIGGER","TRIGGER","DURATION" +"TZID","TEXT","TEXT" +"TZNAME","TEXT","TEXT" +"TZOFFSETFROM","UTC-OFFSET","UTC-OFFSET" +"TZOFFSETTO","UTC-OFFSET","UTC-OFFSET" +"TZURL","URI","URI" +"UID","TEXT","TEXT" +"URL","URI","URI" +"VERSION","TEXT","TEXT" +"X","X","X" +"MAXRESULTS","INTEGER","INTEGER" +"MAXRESULTSSIZE","INTEGER","INTEGER" +"QUERYNAME","TEXT","TEXT" +"X-LIC-ERROR","TEXT","TEXT" +"X-LIC-CLUSTERCOUNT","STRING","STRING" +"X-LIC-MIMECONTENTTYPE","STRING","STRING" +"X-LIC-MIMECHARSET","STRING","STRING" +"X-LIC-MIMEENCODING","STRING","STRING" +"X-LIC-MIMEOPTINFO","STRING","STRING" +"X-LIC-MIMECID","STRING","STRING" +"X-LIC-MIMEFILENAME","STRING","STRING" +"X-LIC-CLASS","X-LIC-CLASS","X-LIC-CLASS" +"ANY","NO","NO" +"NO","NO","NO" +"#CAP Properties",, +,"FIXME","Should be BOOLEAN" +"ALLOW-CONFLICT","TEXT","TEXT" +"CALID","TEXT","TEXT" +"CALMASTER","TEXT","TEXT" +"CARID","TEXT","TEXT" +"CMD","CMD","CMD" +"CSID","URI","URI" +"DECREED","TEXT","TEXT" +"DEFAULT-CHARSET","TEXT","TEXT" +"DEFAULT-LOCALE","TEXT","TEXT" +"DEFAULT-TZID","TEXT","TEXT" +"DEFAULT-VCARS","TEXT","TEXT" +,"FIXME","Should be UPN-FILTER" +"DENY","TEXT","TEXT" +,"FIXME","Should be BOOLEAN" +"EXPAND","INTEGER","INTEGER" +,"FIXME","Should be UPN-FILTER" +"GRANT","TEXT","TEXT" +"MAXDATE","DATE-TIME","DATE-TIME" +"MINDATE","DATE-TIME","DATE-TIME" +"NAME","TEXT","TEXT" +"OWNER","TEXT","TEXT" +"PERMISSION","TEXT","TEXT" +"QUERY","QUERY","QUERY" +"QUERYID","TEXT","TEXT" +"RELCALID","TEXT","TEXT" +"RESTRICTION","QUERY","QUERY" +"SCOPE","TEXT","TEXT" +"TARGET","CAL-ADDRESS","CAL-ADDRESS" +"#CAP Properties","These are only allowed in VREPLY", +"CAP-VERSION","TEXT","TEXT" +"CAR-LEVEL","CAR-LEVEL","CAR-LEVEL" +"COMPONENTS","TEXT","TEXT" +"STORES-EXPANDED","TEXT","TEXT" +"DATE-MAX","DATE-TIME","DATE-TIME" +"DATE-MIN","DATE-TIME","DATE-TIME" +"ITIP-VERSION","TEXT","TEXT" +"MAX-COMPONENT-SIZE","INTEGER","INTEGER" +"MULTIPART","TEXT","TEXT" +"QUERY-LEVEL","QUERY-LEVEL","QUERY-LEVEL" +"RECUR-ACCEPTED","TEXT","TEXT" +"RECUR-EXPAND","TEXT","TEXT" +"RECUR-LIMIT","TEXT","TEXT" diff --git a/mozilla/calendar/libical/design-data/restrictions.csv b/mozilla/calendar/libical/design-data/restrictions.csv new file mode 100644 index 00000000000..70cadea2e0a --- /dev/null +++ b/mozilla/calendar/libical/design-data/restrictions.csv @@ -0,0 +1,1420 @@ +# Method, Target component, Property, Sub-component, Restriction +PUBLISH,VEVENT,NONE,NONE,ONEPLUS +PUBLISH,VEVENT,DTSTAMP,NONE,ONE +PUBLISH,VEVENT,DTSTART,NONE,ONE +PUBLISH,VEVENT,ORGANIZER,NONE,ONE +PUBLISH,VEVENT,SUMMARY,NONE,ONE +PUBLISH,VEVENT,UID,NONE,ONE +PUBLISH,VEVENT,RECURRENCEID,NONE,ZEROORONE,must_be_recurring +PUBLISH,VEVENT,SEQUENCE,NONE,ZEROORONE +PUBLISH,VEVENT,ATTACH,NONE,ZEROPLUS +PUBLISH,VEVENT,CATEGORIES,NONE,ZEROPLUS #Non-standard +PUBLISH,VEVENT,CLASS,NONE,ZEROORONE +PUBLISH,VEVENT,COMMENT,NONE,ZEROORONE +PUBLISH,VEVENT,CONTACT,NONE,ZEROPLUS +PUBLISH,VEVENT,CREATED,NONE,ZEROORONE +PUBLISH,VEVENT,DESCRIPTION,NONE,ZEROORONE +PUBLISH,VEVENT,DTEND,NONE,ONEEXCLUSIVE,no_duration +PUBLISH,VEVENT,DURATION,NONE,ONEEXCLUSIVE,no_dtend +PUBLISH,VEVENT,EXDATE,NONE,ZEROPLUS +PUBLISH,VEVENT,EXRULE,NONE,ZEROPLUS +PUBLISH,VEVENT,GEO,NONE,ZEROORONE +PUBLISH,VEVENT,LASTMODIFIED,NONE,ZEROORONE +PUBLISH,VEVENT,LOCATION,NONE,ZEROORONE +PUBLISH,VEVENT,PRIORITY,NONE,ZEROORONE +PUBLISH,VEVENT,RDATE,NONE,ZEROPLUS +PUBLISH,VEVENT,RELATEDTO,NONE,ZEROPLUS +PUBLISH,VEVENT,RESOURCES,NONE,ZEROORONE +PUBLISH,VEVENT,RRULE,NONE,ZEROPLUS +PUBLISH,VEVENT,STATUS,NONE,ZEROORONE,may_be_tent_conf_cancel +PUBLISH,VEVENT,TRANSP,NONE,ZEROORONE +PUBLISH,VEVENT,URL,NONE,ZEROORONE +PUBLISH,VEVENT,X,NONE,ZEROPLUS +PUBLISH,VEVENT,ATTENDEE,NONE,ZERO +PUBLISH,VEVENT,REQUESTSTATUS,NONE,ZERO +PUBLISH,VEVENT,NONE,VALARM,ZEROPLUS +PUBLISH,VEVENT,NONE,VFREEBUSY,ZERO +PUBLISH,VEVENT,NONE,VJOURNAL,ZERO +PUBLISH,VEVENT,NONE,VTODO,ZERO +PUBLISH,VEVENT,NONE,VTIMEZONE,ZEROPLUS,must_if_tz_ref +PUBLISH,VEVENT,NONE,X,ZEROPLUS +PUBLISH,VEVENT,RELCALID,NONE,ZEROORONE +REQUEST,VEVENT,NONE,NONE,ONEPLUS +REQUEST,VEVENT,ATTENDEE,NONE,ONEPLUS +REQUEST,VEVENT,DTSTAMP,NONE,ONE +REQUEST,VEVENT,DTSTART,NONE,ONE +REQUEST,VEVENT,ORGANIZER,NONE,ONE +REQUEST,VEVENT,SEQUENCE,NONE,ZEROORONE +REQUEST,VEVENT,SUMMARY,NONE,ONE +REQUEST,VEVENT,UID,NONE,ONE +REQUEST,VEVENT,ATTACH,NONE,ZEROPLUS +REQUEST,VEVENT,CATEGORIES,NONE,ZEROPLUS #Non-standard +REQUEST,VEVENT,CLASS,NONE,ZEROORONE +REQUEST,VEVENT,COMMENT,NONE,ZEROORONE +REQUEST,VEVENT,CONTACT,NONE,ZEROPLUS +REQUEST,VEVENT,CREATED,NONE,ZEROORONE +REQUEST,VEVENT,DESCRIPTION,NONE,ZEROORONE +REQUEST,VEVENT,DTEND,NONE,ONEEXCLUSIVE,no_duration +REQUEST,VEVENT,DURATION,NONE,ONEEXCLUSIVE,no_dtend +REQUEST,VEVENT,EXDATE,NONE,ZEROPLUS +REQUEST,VEVENT,EXRULE,NONE,ZEROPLUS +REQUEST,VEVENT,GEO,NONE,ZEROORONE +REQUEST,VEVENT,LASTMODIFIED,NONE,ZEROORONE +REQUEST,VEVENT,LOCATION,NONE,ZEROORONE +REQUEST,VEVENT,PRIORITY,NONE,ZEROORONE +REQUEST,VEVENT,RDATE,NONE,ZEROPLUS +REQUEST,VEVENT,RECURRENCEID,NONE,ZEROORONE,must_be_recurring +REQUEST,VEVENT,RELATEDTO,NONE,ZEROPLUS +REQUEST,VEVENT,REQUESTSTATUS,NONE,ZEROPLUS +REQUEST,VEVENT,RESOURCES,NONE,ZEROORONE +REQUEST,VEVENT,RRULE,NONE,ZEROPLUS +REQUEST,VEVENT,STATUS,NONE,ZEROORONE,may_be_tent_conf +REQUEST,VEVENT,TRANSP,NONE,ZEROORONE +REQUEST,VEVENT,URL,NONE,ZEROORONE +REQUEST,VEVENT,X,NONE,ZEROPLUS +REQUEST,VEVENT,NONE,VALARM,ZEROPLUS +REQUEST,VEVENT,NONE,VTIMEZONE,ZEROPLUS,must_if_tz_ref +REQUEST,VEVENT,NONE,X,ZEROPLUS +REQUEST,VEVENT,NONE,VFREEBUSY,ZERO +REQUEST,VEVENT,NONE,VJOURNAL,ZERO +REQUEST,VEVENT,NONE,VTODO,ZERO +REQUEST,VEVENT,RELCALID,NONE,ZEROORONE +REPLY,VEVENT,NONE,NONE,ONEPLUS +REPLY,VEVENT,ATTENDEE,NONE,ONE +REPLY,VEVENT,DTSTAMP,NONE,ONE +REPLY,VEVENT,ORGANIZER,NONE,ONE +REPLY,VEVENT,RECURRENCEID,NONE,ZEROORONE,must_be_recurring +REPLY,VEVENT,UID,NONE,ONE +REPLY,VEVENT,SEQUENCE,NONE,ZEROORONE +REPLY,VEVENT,ATTACH,NONE,ZEROPLUS +REPLY,VEVENT,CATEGORIES,NONE,ZEROPLUS #Non-standard +REPLY,VEVENT,CLASS,NONE,ZEROORONE +REPLY,VEVENT,COMMENT,NONE,ZEROORONE +REPLY,VEVENT,CONTACT,NONE,ZEROPLUS +REPLY,VEVENT,CREATED,NONE,ZEROORONE +REPLY,VEVENT,DESCRIPTION,NONE,ZEROORONE +REPLY,VEVENT,DTEND,NONE,ONEEXCLUSIVE,no_duration +REPLY,VEVENT,DTSTART,NONE,ZEROORONE +REPLY,VEVENT,DURATION,NONE,ONEEXCLUSIVE,no_dtend +REPLY,VEVENT,EXDATE,NONE,ZEROPLUS +REPLY,VEVENT,EXRULE,NONE,ZEROPLUS +REPLY,VEVENT,GEO,NONE,ZEROORONE +REPLY,VEVENT,LASTMODIFIED,NONE,ZEROORONE +REPLY,VEVENT,LOCATION,NONE,ZEROORONE +REPLY,VEVENT,PRIORITY,NONE,ZEROORONE +REPLY,VEVENT,RDATE,NONE,ZEROPLUS +REPLY,VEVENT,RELATEDTO,NONE,ZEROPLUS +REPLY,VEVENT,RESOURCES,NONE,ZEROORONE +REPLY,VEVENT,REQUESTSTATUS,NONE,ZEROPLUS +REPLY,VEVENT,RRULE,NONE,ZEROPLUS +REPLY,VEVENT,STATUS,NONE,ZEROORONE +REPLY,VEVENT,SUMMARY,NONE,ZEROORONE +REPLY,VEVENT,TRANSP,NONE,ZEROORONE +REPLY,VEVENT,URL,NONE,ZEROORONE +REPLY,VEVENT,X,NONE,ZEROPLUS +REPLY,VEVENT,NONE,VTIMEZONE,ZEROORONE,must_if_tz_ref +REPLY,VEVENT,NONE,X,ZEROPLUS +REPLY,VEVENT,NONE,VALARM,ZERO +REPLY,VEVENT,NONE,VFREEBUSY,ZERO +REPLY,VEVENT,NONE,VJOURNAL,ZERO +REPLY,VEVENT,NONE,VTODO,ZERO +REPLY,VEVENT,RELCALID,NONE,ZEROORONE +ADD,VEVENT,NONE,NONE,ONE +ADD,VEVENT,DTSTAMP,NONE,ONE +ADD,VEVENT,DTSTART,NONE,ONE +ADD,VEVENT,ORGANIZER,NONE,ONE +ADD,VEVENT,SEQUENCE,NONE,ONE +ADD,VEVENT,SUMMARY,NONE,ONE +ADD,VEVENT,UID,NONE,ONE +ADD,VEVENT,ATTACH,NONE,ZEROPLUS +ADD,VEVENT,ATTENDEE,NONE,ZEROPLUS +ADD,VEVENT,CATEGORIES,NONE,ZEROPLUS #Non-standard +ADD,VEVENT,CLASS,NONE,ZEROORONE +ADD,VEVENT,COMMENT,NONE,ZEROORONE +ADD,VEVENT,CONTACT,NONE,ZEROPLUS +ADD,VEVENT,CREATED,NONE,ZEROORONE +ADD,VEVENT,DESCRIPTION,NONE,ZEROORONE +ADD,VEVENT,DTEND,NONE,ONEEXCLUSIVE,no_duration +ADD,VEVENT,DURATION,NONE,ONEEXCLUSIVE,no_dtend +ADD,VEVENT,EXDATE,NONE,ZEROPLUS +ADD,VEVENT,EXRULE,NONE,ZEROPLUS +ADD,VEVENT,GEO,NONE,ZEROORONE +ADD,VEVENT,LASTMODIFIED,NONE,ZEROORONE +ADD,VEVENT,LOCATION,NONE,ZEROORONE +ADD,VEVENT,PRIORITY,NONE,ZEROORONE +ADD,VEVENT,RDATE,NONE,ZEROPLUS +ADD,VEVENT,RELATEDTO,NONE,ZEROPLUS +ADD,VEVENT,RESOURCES,NONE,ZEROORONE +ADD,VEVENT,RRULE,NONE,ZEROPLUS +ADD,VEVENT,STATUS,NONE,ZEROORONE,may_be_tent_conf +ADD,VEVENT,TRANSP,NONE,ZEROORONE +ADD,VEVENT,URL,NONE,ZEROORONE +ADD,VEVENT,X,NONE,ZEROPLUS +ADD,VEVENT,RECURRENCEID,NONE,ZERO,must_be_recurring +ADD,VEVENT,REQUESTSTATUS,NONE,ZERO +ADD,VEVENT,NONE,VALARM,ZEROPLUS +ADD,VEVENT,NONE,VTIMEZONE,ZEROPLUS,must_if_tz_ref +ADD,VEVENT,NONE,X,ZEROPLUS +ADD,VEVENT,NONE,VFREEBUSY,ZERO +ADD,VEVENT,NONE,VTODO,ZERO +ADD,VEVENT,NONE,VJOURNAL,ZERO +ADD,VEVENT,RELCALID,NONE,ZEROORONE +CANCEL,VEVENT,NONE,NONE,ONEPLUS +CANCEL,VEVENT,ATTENDEE,NONE,ZEROPLUS +CANCEL,VEVENT,DTSTAMP,NONE,ONE +CANCEL,VEVENT,ORGANIZER,NONE,ONE +CANCEL,VEVENT,SEQUENCE,NONE,ONE +CANCEL,VEVENT,UID,NONE,ONE +CANCEL,VEVENT,COMMENT,NONE,ZEROORONE +CANCEL,VEVENT,ATTACH,NONE,ZEROPLUS +CANCEL,VEVENT,CATEGORIES,NONE,ZEROPLUS #Non-standard +CANCEL,VEVENT,CLASS,NONE,ZEROORONE +CANCEL,VEVENT,CONTACT,NONE,ZEROPLUS +CANCEL,VEVENT,CREATED,NONE,ZEROORONE +CANCEL,VEVENT,DESCRIPTION,NONE,ZEROORONE +CANCEL,VEVENT,DTEND,NONE,ONEEXCLUSIVE ,no_duration +CANCEL,VEVENT,DTSTART,NONE,ZEROORONE +CANCEL,VEVENT,DURATION,NONE,ONEEXCLUSIVE,no_dtend +CANCEL,VEVENT,EXDATE,NONE,ZEROPLUS +CANCEL,VEVENT,EXRULE,NONE,ZEROPLUS +CANCEL,VEVENT,GEO,NONE,ZEROORONE +CANCEL,VEVENT,LASTMODIFIED,NONE,ZEROORONE +CANCEL,VEVENT,LOCATION,NONE,ZEROORONE +CANCEL,VEVENT,PRIORITY,NONE,ZEROORONE +CANCEL,VEVENT,RDATE,NONE,ZEROPLUS +CANCEL,VEVENT,RECURRENCEID,NONE,ZEROORONE,must_be_recurring +CANCEL,VEVENT,RELATEDTO,NONE,ZEROPLUS +CANCEL,VEVENT,RESOURCES,NONE,ZEROORONE +CANCEL,VEVENT,RRULE,NONE,ZEROPLUS +CANCEL,VEVENT,STATUS,NONE,ZEROORONE,must_be_canceled_no_attendee +CANCEL,VEVENT,SUMMARY,NONE,ZEROORONE +CANCEL,VEVENT,TRANSP,NONE,ZEROORONE +CANCEL,VEVENT,URL,NONE,ZEROORONE +CANCEL,VEVENT,X,NONE,ZEROPLUS +CANCEL,VEVENT,REQUESTSTATUS,NONE,ZERO +CANCEL,VEVENT,NONE,VTIMEZONE,ZEROPLUS,must_if_tz_ref +CANCEL,VEVENT,NONE,X,ZEROPLUS +CANCEL,VEVENT,NONE,VTODO,ZERO +CANCEL,VEVENT,NONE,VJOURNAL,ZERO +CANCEL,VEVENT,NONE,VFREEBUSY,ZERO +CANCEL,VEVENT,NONE,VALARM,ZERO +CANCEL,VEVENT,RELCALID,NONE,ZEROORONE +REFRESH,VEVENT,NONE,NONE,ONE +REFRESH,VEVENT,ATTENDEE,NONE,ONE +REFRESH,VEVENT,DTSTAMP,NONE,ONE +REFRESH,VEVENT,ORGANIZER,NONE,ONE +REFRESH,VEVENT,UID,NONE,ONE +REFRESH,VEVENT,COMMENT,NONE,ZEROORONE +REFRESH,VEVENT,RECURRENCEID,NONE,ZEROORONE,must_be_recurring +REFRESH,VEVENT,X,NONE,ZEROPLUS +REFRESH,VEVENT,ATTACH,NONE,ZERO +REFRESH,VEVENT,CATEGORIES,NONE,ZERO +REFRESH,VEVENT,CLASS,NONE,ZERO +REFRESH,VEVENT,CONTACT,NONE,ZERO +REFRESH,VEVENT,CREATED,NONE,ZERO +REFRESH,VEVENT,DESCRIPTION,NONE,ZERO +REFRESH,VEVENT,DTEND,NONE,ZERO +REFRESH,VEVENT,DTSTART,NONE,ZERO +REFRESH,VEVENT,DURATION,NONE,ZERO +REFRESH,VEVENT,EXDATE,NONE,ZERO +REFRESH,VEVENT,EXRULE,NONE,ZERO +REFRESH,VEVENT,GEO,NONE,ZERO +REFRESH,VEVENT,LASTMODIFIED,NONE,ZERO +REFRESH,VEVENT,LOCATION,NONE,ZERO +REFRESH,VEVENT,PRIORITY,NONE,ZERO +REFRESH,VEVENT,RDATE,NONE,ZERO +REFRESH,VEVENT,RELATEDTO,NONE,ZERO +REFRESH,VEVENT,REQUESTSTATUS,NONE,ZERO +REFRESH,VEVENT,RESOURCES,NONE,ZERO +REFRESH,VEVENT,RRULE,NONE,ZERO +REFRESH,VEVENT,SEQUENCE,NONE,ZERO +REFRESH,VEVENT,STATUS,NONE,ZERO +REFRESH,VEVENT,SUMMARY,NONE,ZERO +REFRESH,VEVENT,TRANSP,NONE,ZERO +REFRESH,VEVENT,URL,NONE,ZERO +REFRESH,VEVENT,NONE,X,ZEROPLUS +REFRESH,VEVENT,NONE,VTODO,ZERO +REFRESH,VEVENT,NONE,VJOURNAL,ZERO +REFRESH,VEVENT,NONE,VFREEBUSY,ZERO +REFRESH,VEVENT,NONE,VTIMEZONE,ZERO,must_if_tz_ref +REFRESH,VEVENT,NONE,VALARM,ZERO +REFRESH,VEVENT,RELCALID,NONE,ZEROORONE +COUNTER,VEVENT,NONE,NONE,ONE +COUNTER,VEVENT,DTSTAMP,NONE,ONE +COUNTER,VEVENT,DTSTART,NONE,ONE +COUNTER,VEVENT,ORGANIZER,NONE,ONE +COUNTER,VEVENT,SEQUENCE,NONE,ONE +COUNTER,VEVENT,SUMMARY,NONE,ONE +COUNTER,VEVENT,UID,NONE,ONE +COUNTER,VEVENT,ATTACH,NONE,ZEROPLUS +COUNTER,VEVENT,ATTENDEE,NONE,ZEROPLUS +COUNTER,VEVENT,CATEGORIES,NONE,ZEROPLUS #Non-standard +COUNTER,VEVENT,CLASS,NONE,ZEROORONE +COUNTER,VEVENT,COMMENT,NONE,ZEROORONE +COUNTER,VEVENT,CONTACT,NONE,ZEROPLUS +COUNTER,VEVENT,CREATED,NONE,ZEROORONE +COUNTER,VEVENT,DESCRIPTION,NONE,ZEROORONE +COUNTER,VEVENT,DTEND,NONE,ONEEXCLUSIVE,no_duration +COUNTER,VEVENT,DURATION,NONE,ONEEXCLUSIVE,no_dtend +COUNTER,VEVENT,EXDATE,NONE,ZEROPLUS +COUNTER,VEVENT,EXRULE,NONE,ZEROPLUS +COUNTER,VEVENT,GEO,NONE,ZEROORONE +COUNTER,VEVENT,LASTMODIFIED,NONE,ZEROORONE +COUNTER,VEVENT,LOCATION,NONE,ZEROORONE +COUNTER,VEVENT,PRIORITY,NONE,ZEROORONE +COUNTER,VEVENT,RDATE,NONE,ZEROPLUS +COUNTER,VEVENT,RECURRENCEID,NONE,ZEROORONE,must_be_recurring +COUNTER,VEVENT,RELATEDTO,NONE,ZEROPLUS +COUNTER,VEVENT,REQUESTSTATUS,NONE,ZEROPLUS +COUNTER,VEVENT,RESOURCES,NONE,ZEROORONE +COUNTER,VEVENT,RRULE,NONE,ZEROPLUS +COUNTER,VEVENT,STATUS,NONE,ZEROORONE,may_be_tent_conf_cancel +COUNTER,VEVENT,TRANSP,NONE,ZEROORONE +COUNTER,VEVENT,URL,NONE,ZEROORONE +COUNTER,VEVENT,X,NONE,ZEROPLUS +COUNTER,VEVENT,NONE,VALARM,ZEROPLUS +COUNTER,VEVENT,NONE,VTIMEZONE,ZEROPLUS,must_if_tz_ref +COUNTER,VEVENT,NONE,X,ZEROPLUS +COUNTER,VEVENT,NONE,VTODO,ZERO +COUNTER,VEVENT,NONE,VJOURNAL,ZERO +COUNTER,VEVENT,NONE,VFREEBUSY,ZERO +COUNTER,VEVENT,RELCALID,NONE,ZEROORONE +DECLINECOUNTER,VEVENT,NONE,NONE,ONE +DECLINECOUNTER,VEVENT,DTSTAMP,NONE,ONE +DECLINECOUNTER,VEVENT,ORGANIZER,NONE,ONE +DECLINECOUNTER,VEVENT,UID,NONE,ONE +DECLINECOUNTER,VEVENT,COMMENT,NONE,ZEROORONE +DECLINECOUNTER,VEVENT,RECURRENCEID,NONE,ZEROORONE,must_be_recurring +DECLINECOUNTER,VEVENT,REQUESTSTATUS,NONE,ZEROPLUS +DECLINECOUNTER,VEVENT,SEQUENCE,NONE,ZERO +DECLINECOUNTER,VEVENT,X,NONE,ZEROPLUS +DECLINECOUNTER,VEVENT,ATTACH,NONE,ZERO +DECLINECOUNTER,VEVENT,ATTENDEE,NONE,ZERO +DECLINECOUNTER,VEVENT,CATEGORIES,NONE,ZERO +DECLINECOUNTER,VEVENT,CLASS,NONE,ZERO +DECLINECOUNTER,VEVENT,CONTACT,NONE,ZERO +DECLINECOUNTER,VEVENT,CREATED,NONE,ZERO +DECLINECOUNTER,VEVENT,DESCRIPTION,NONE,ZERO +DECLINECOUNTER,VEVENT,DTEND,NONE,ZERO +DECLINECOUNTER,VEVENT,DTSTART,NONE,ZERO +DECLINECOUNTER,VEVENT,DURATION,NONE,ZERO +DECLINECOUNTER,VEVENT,EXDATE,NONE,ZERO +DECLINECOUNTER,VEVENT,EXRULE,NONE,ZERO +DECLINECOUNTER,VEVENT,GEO,NONE,ZERO +DECLINECOUNTER,VEVENT,LASTMODIFIED,NONE,ZERO +DECLINECOUNTER,VEVENT,LOCATION,NONE,ZERO +DECLINECOUNTER,VEVENT,PRIORITY,NONE,ZERO +DECLINECOUNTER,VEVENT,RDATE,NONE,ZERO +DECLINECOUNTER,VEVENT,RELATEDTO,NONE,ZERO +DECLINECOUNTER,VEVENT,RESOURCES,NONE,ZERO +DECLINECOUNTER,VEVENT,RRULE,NONE,ZERO +DECLINECOUNTER,VEVENT,STATUS,NONE,ZERO +DECLINECOUNTER,VEVENT,SUMMARY,NONE,ZERO +DECLINECOUNTER,VEVENT,TRANSP,NONE,ZERO +DECLINECOUNTER,VEVENT,URL,NONE,ZERO +DECLINECOUNTER,VEVENT,NONE,X,ZEROPLUS +DECLINECOUNTER,VEVENT,NONE,VTODO,ZERO +DECLINECOUNTER,VEVENT,NONE,VJOURNAL,ZERO +DECLINECOUNTER,VEVENT,NONE,VFREEBUSY,ZERO +DECLINECOUNTER,VEVENT,NONE,VTIMEZONE,ZERO,must_if_tz_ref +DECLINECOUNTER,VEVENT,NONE,VALARM,ZERO +DECLINECOUNTER,VEVENT,RELCALID,NONE,ZEROORONE +PUBLISH,VFREEBUSY,NONE,NONE,ONEPLUS +PUBLISH,VFREEBUSY,DTSTAMP,NONE,ONE +PUBLISH,VFREEBUSY,DTSTART,NONE,ONE +PUBLISH,VFREEBUSY,DTEND,NONE,ONE +PUBLISH,VFREEBUSY,FREEBUSY,NONE,ONEPLUS +PUBLISH,VFREEBUSY,ORGANIZER,NONE,ONE +PUBLISH,VFREEBUSY,COMMENT,NONE,ZEROORONE +PUBLISH,VFREEBUSY,CONTACT,NONE,ZEROPLUS +PUBLISH,VFREEBUSY,X,NONE,ZEROPLUS +PUBLISH,VFREEBUSY,URL,NONE,ZEROORONE +PUBLISH,VFREEBUSY,ATTENDEE,NONE,ZERO +PUBLISH,VFREEBUSY,DURATION,NONE,ZERO +PUBLISH,VFREEBUSY,REQUESTSTATUS,NONE,ZERO +PUBLISH,VFREEBUSY,UID,NONE,ZERO +PUBLISH,VFREEBUSY,NONE,X,ZEROPLUS +PUBLISH,VFREEBUSY,NONE,VEVENT,ZERO +PUBLISH,VFREEBUSY,NONE,VTODO,ZERO +PUBLISH,VFREEBUSY,NONE,VJOURNAL,ZERO +PUBLISH,VFREEBUSY,NONE,VTIMEZONE,ZERO,must_if_tz_ref +PUBLISH,VFREEBUSY,NONE,VALARM,ZERO +REQUEST,VFREEBUSY,NONE,NONE,ONE +REQUEST,VFREEBUSY,ATTENDEE,NONE,ONEPLUS +REQUEST,VFREEBUSY,DTEND,NONE,ONE +REQUEST,VFREEBUSY,DTSTAMP,NONE,ONE +REQUEST,VFREEBUSY,DTSTART,NONE,ONE +REQUEST,VFREEBUSY,ORGANIZER,NONE,ONE +REQUEST,VFREEBUSY,UID,NONE,ONE +REQUEST,VFREEBUSY,COMMENT,NONE,ZEROORONE +REQUEST,VFREEBUSY,CONTACT,NONE,ZEROPLUS +REQUEST,VFREEBUSY,X,NONE,ZEROPLUS +REQUEST,VFREEBUSY,FREEBUSY,NONE,ZERO +REQUEST,VFREEBUSY,DURATION,NONE,ZERO +REQUEST,VFREEBUSY,REQUESTSTATUS,NONE,ZERO +REQUEST,VFREEBUSY,URL,NONE,ZERO +REQUEST,VFREEBUSY,NONE,X,ZEROPLUS +REQUEST,VFREEBUSY,NONE,VALARM,ZERO +REQUEST,VFREEBUSY,NONE,VEVENT,ZERO +REQUEST,VFREEBUSY,NONE,VTODO,ZERO +REQUEST,VFREEBUSY,NONE,VJOURNAL,ZERO +REQUEST,VFREEBUSY,NONE,VTIMEZONE,ZERO +REPLY,VFREEBUSY,NONE,NONE,ONE +REPLY,VFREEBUSY,ATTENDEE,NONE,ONE +REPLY,VFREEBUSY,DTSTAMP,NONE,ONE +REPLY,VFREEBUSY,DTEND,NONE,ONE +REPLY,VFREEBUSY,DTSTART,NONE,ONE +REPLY,VFREEBUSY,FREEBUSY,NONE,ONEPLUS +REPLY,VFREEBUSY,ORGANIZER,NONE,ONE +REPLY,VFREEBUSY,UID,NONE,ONE +REPLY,VFREEBUSY,COMMENT,NONE,ZEROORONE +REPLY,VFREEBUSY,CONTACT,NONE,ZEROPLUS +REPLY,VFREEBUSY,REQUESTSTATUS,NONE,ZEROPLUS +REPLY,VFREEBUSY,URL,NONE,ZEROORONE +REPLY,VFREEBUSY,X,NONE,ZEROPLUS +REPLY,VFREEBUSY,DURATION,NONE,ZERO +REPLY,VFREEBUSY,SEQUENCE,NONE,ZERO +REPLY,VFREEBUSY,NONE,X,ZEROPLUS +REPLY,VFREEBUSY,NONE,VALARM,ZERO +REPLY,VFREEBUSY,NONE,VEVENT,ZERO +REPLY,VFREEBUSY,NONE,VTODO,ZERO +REPLY,VFREEBUSY,NONE,VJOURNAL,ZERO +REPLY,VFREEBUSY,NONE,VTIMEZONE,ZERO +PUBLISH,VTODO,NONE,NONE,ONEPLUS +PUBLISH,VTODO,DTSTAMP,NONE,ONE +PUBLISH,VTODO,DTSTART,NONE,ZEROORONE +PUBLISH,VTODO,ORGANIZER,NONE,ONE +PUBLISH,VTODO,PRIORITY,NONE,ONE +PUBLISH,VTODO,SEQUENCE,NONE,ZEROORONE +PUBLISH,VTODO,SUMMARY,NONE,ONE +PUBLISH,VTODO,UID,NONE,ONE +PUBLISH,VTODO,ATTACH,NONE,ZEROPLUS +PUBLISH,VTODO,CATEGORIES,NONE,ZEROPLUS #Non-Standard +PUBLISH,VTODO,CLASS,NONE,ZEROORONE +PUBLISH,VTODO,COMMENT,NONE,ZEROORONE +PUBLISH,VTODO,CONTACT,NONE,ZEROPLUS +PUBLISH,VTODO,CREATED,NONE,ZEROORONE +PUBLISH,VTODO,DESCRIPTION,NONE,ZEROORONE +PUBLISH,VTODO,DUE,NONE,ZEROORONE +PUBLISH,VTODO,DURATION,NONE,ZEROORONE +PUBLISH,VTODO,EXDATE,NONE,ZEROPLUS +PUBLISH,VTODO,EXRULE,NONE,ZEROPLUS +PUBLISH,VTODO,GEO,NONE,ZEROORONE +PUBLISH,VTODO,LASTMODIFIED,NONE,ZEROORONE +PUBLISH,VTODO,LOCATION,NONE,ZEROORONE +PUBLISH,VTODO,PERCENTCOMPLETE,NONE,ZEROORONE +PUBLISH,VTODO,RDATE,NONE,ZEROPLUS +PUBLISH,VTODO,RECURRENCEID,NONE,ZEROORONE,must_be_recurring +PUBLISH,VTODO,RELATEDTO,NONE,ZEROPLUS +PUBLISH,VTODO,RESOURCES,NONE,ZEROORONE +PUBLISH,VTODO,RRULE,NONE,ZEROPLUS +PUBLISH,VTODO,STATUS,NONE,ZEROORONE +PUBLISH,VTODO,URL,NONE,ZEROORONE +PUBLISH,VTODO,X,NONE,ZEROPLUS +PUBLISH,VTODO,ATTENDEE,NONE,ZERO +PUBLISH,VTODO,REQUESTSTATUS,NONE,ZERO +PUBLISH,VTODO,NONE,VTIMEZONE,ZEROPLUS +PUBLISH,VTODO,NONE,VALARM,ZEROPLUS +PUBLISH,VTODO,NONE,X,ZEROPLUS +PUBLISH,VTODO,NONE,VFREEBUSY,ZERO +PUBLISH,VTODO,NONE,VEVENT,ZERO +PUBLISH,VTODO,NONE,VJOURNAL,ZERO +PUBLISH,VTODO,RELCALID,NONE,ZEROORONE +REQUEST,VTODO,NONE,NONE,ONEPLUS +REQUEST,VTODO,ATTENDEE,NONE,ONEPLUS +REQUEST,VTODO,DTSTAMP,NONE,ONE +REQUEST,VTODO,DTSTART,NONE,ZEROORONE +REQUEST,VTODO,ORGANIZER,NONE,ONE +REQUEST,VTODO,PRIORITY,NONE,ONE +REQUEST,VTODO,SEQUENCE,NONE,ZEROORONE +REQUEST,VTODO,SUMMARY,NONE,ONE +REQUEST,VTODO,UID,NONE,ONE +REQUEST,VTODO,ATTACH,NONE,ZEROPLUS +REQUEST,VTODO,CATEGORIES,NONE,ZEROPLUS #Non-Standard +REQUEST,VTODO,CLASS,NONE,ZEROORONE +REQUEST,VTODO,COMMENT,NONE,ZEROORONE +REQUEST,VTODO,CONTACT,NONE,ZEROPLUS +REQUEST,VTODO,CREATED,NONE,ZEROORONE +REQUEST,VTODO,DESCRIPTION,NONE,ZEROORONE +REQUEST,VTODO,DUE,NONE,ZEROORONE +REQUEST,VTODO,DURATION,NONE,ZEROORONE +REQUEST,VTODO,EXDATE,NONE,ZEROPLUS +REQUEST,VTODO,EXRULE,NONE,ZEROPLUS +REQUEST,VTODO,GEO,NONE,ZEROORONE +REQUEST,VTODO,LASTMODIFIED,NONE,ZEROORONE +REQUEST,VTODO,LOCATION,NONE,ZEROORONE +REQUEST,VTODO,PERCENTCOMPLETE,NONE,ZEROORONE +REQUEST,VTODO,RDATE,NONE,ZEROPLUS +REQUEST,VTODO,RECURRENCEID,NONE,ZEROORONE,must_be_recurring +REQUEST,VTODO,RELATEDTO,NONE,ZEROPLUS +REQUEST,VTODO,RESOURCES,NONE,ZEROORONE +REQUEST,VTODO,RRULE,NONE,ZEROPLUS +REQUEST,VTODO,STATUS,NONE,ZEROORONE,may_be_comp_need_process +REQUEST,VTODO,URL,NONE,ZEROORONE +REQUEST,VTODO,X,NONE,ZEROPLUS +REQUEST,VTODO,REQUESTSTATUS,NONE,ZERO +REQUEST,VTODO,NONE,VALARM,ZEROPLUS +REQUEST,VTODO,NONE,VTIMEZONE,ZEROPLUS +REQUEST,VTODO,NONE,X,ZEROPLUS +REQUEST,VTODO,NONE,VEVENT,ZERO +REQUEST,VTODO,NONE,VFREEBUSY,ZERO +REQUEST,VTODO,NONE,VJOURNAL,ZERO +REQUEST,VTODO,RELCALID,NONE,ZEROORONE +REPLY,VTODO,NONE,NONE,ONEPLUS +REPLY,VTODO,ATTENDEE,NONE,ONEPLUS +REPLY,VTODO,DTSTAMP,NONE,ONE +REPLY,VTODO,ORGANIZER,NONE,ONE +REPLY,VTODO,REQUESTSTATUS,NONE,ONEPLUS +REPLY,VTODO,UID,NONE,ONE +REPLY,VTODO,ATTACH,NONE,ZEROPLUS +REPLY,VTODO,CATEGORIES,NONE,ZEROPLUS #Non-Standard +REPLY,VTODO,CLASS,NONE,ZEROORONE +REPLY,VTODO,COMMENT,NONE,ZEROORONE +REPLY,VTODO,CONTACT,NONE,ZEROPLUS +REPLY,VTODO,CREATED,NONE,ZEROORONE +REPLY,VTODO,DESCRIPTION,NONE,ZEROORONE +REPLY,VTODO,DTSTART,NONE,ZEROORONE +REPLY,VTODO,DUE,NONE,ZEROORONE +REPLY,VTODO,DURATION,NONE,ZEROORONE +REPLY,VTODO,EXDATE,NONE,ZEROPLUS +REPLY,VTODO,EXRULE,NONE,ZEROPLUS +REPLY,VTODO,GEO,NONE,ZEROORONE +REPLY,VTODO,LASTMODIFIED,NONE,ZEROORONE +REPLY,VTODO,LOCATION,NONE,ZEROORONE +REPLY,VTODO,PERCENTCOMPLETE,NONE,ZEROORONE +REPLY,VTODO,PRIORITY,NONE,ZEROORONE +REPLY,VTODO,RDATE,NONE,ZEROPLUS +REPLY,VTODO,RELATEDTO,NONE,ZEROPLUS +REPLY,VTODO,RESOURCES,NONE,ZEROORONE +REPLY,VTODO,RRULE,NONE,ZEROPLUS +REPLY,VTODO,RECURRENCEID,NONE,ZEROORONE,must_be_recurring +REPLY,VTODO,SEQUENCE,NONE,ZEROORONE +REPLY,VTODO,STATUS,NONE,ZEROORONE +REPLY,VTODO,SUMMARY,NONE,ZEROORONE +REPLY,VTODO,URL,NONE,ZEROORONE +REPLY,VTODO,X,NONE,ZEROPLUS +REPLY,VTODO,NONE,VTIMEZONE,ZEROORONE +REPLY,VTODO,NONE,X,ZEROPLUS +REPLY,VTODO,NONE,VALARM,ZERO +REPLY,VTODO,NONE,VEVENT,ZERO +REPLY,VTODO,NONE,VFREEBUSY,ZERO +REPLY,VTODO,RELCALID,NONE,ZEROORONE +ADD,VTODO,NONE,NONE,ONE +ADD,VTODO,DTSTAMP,NONE,ONE +ADD,VTODO,ORGANIZER,NONE,ONE +ADD,VTODO,PRIORITY,NONE,ONE +ADD,VTODO,SEQUENCE,NONE,ONE +ADD,VTODO,SUMMARY,NONE,ONE +ADD,VTODO,UID,NONE,ONE +ADD,VTODO,ATTACH,NONE,ZEROPLUS +ADD,VTODO,ATTENDEE,NONE,ZEROPLUS +ADD,VTODO,CATEGORIES,NONE,ZEROPLUS +ADD,VTODO,CLASS,NONE,ZEROORONE +ADD,VTODO,COMMENT,NONE,ZEROORONE +ADD,VTODO,CONTACT,NONE,ZEROPLUS +ADD,VTODO,CREATED,NONE,ZEROORONE +ADD,VTODO,DESCRIPTION,NONE,ZEROORONE +ADD,VTODO,DTSTART,NONE,ZEROORONE +ADD,VTODO,DUE,NONE,ZEROORONE +ADD,VTODO,DURATION,NONE,ZEROORONE +ADD,VTODO,EXDATE,NONE,ZEROPLUS +ADD,VTODO,EXRULE,NONE,ZEROPLUS +ADD,VTODO,GEO,NONE,ZEROORONE +ADD,VTODO,LASTMODIFIED,NONE,ZEROORONE +ADD,VTODO,LOCATION,NONE,ZEROORONE +ADD,VTODO,PERCENTCOMPLETE,NONE,ZEROORONE +ADD,VTODO,RDATE,NONE,ZEROPLUS +ADD,VTODO,RELATEDTO,NONE,ZEROPLUS +ADD,VTODO,RESOURCES,NONE,ZEROORONE +ADD,VTODO,RRULE,NONE,ZEROPLUS +ADD,VTODO,STATUS,NONE,ZEROORONE,may_be_comp_need_process +ADD,VTODO,URL,NONE,ZEROORONE +ADD,VTODO,X,NONE,ZEROPLUS +ADD,VTODO,RECURRENCEID,NONE,ZERO,must_be_recurring +ADD,VTODO,REQUESTSTATUS,NONE,ZERO +ADD,VTODO,NONE,VALARM,ZEROPLUS +ADD,VTODO,NONE,VTIMEZONE,ZEROPLUS +ADD,VTODO,NONE,X,ZEROPLUS +ADD,VTODO,NONE,VEVENT,ZERO +ADD,VTODO,NONE,VJOURNAL,ZERO +ADD,VTODO,NONE,VFREEBUSY,ZERO +ADD,VTODO,RELCALID,NONE,ZEROORONE +CANCEL,VTODO,NONE,NONE,ONE +CANCEL,VTODO,ATTENDEE,NONE,ZEROPLUS +CANCEL,VTODO,UID,NONE,ONE +CANCEL,VTODO,DTSTAMP,NONE,ONE +CANCEL,VTODO,ORGANIZER,NONE,ONE +CANCEL,VTODO,SEQUENCE,NONE,ONE +CANCEL,VTODO,ATTACH,NONE,ZEROPLUS +CANCEL,VTODO,CATEGORIES,NONE,ZEROPLUS #Non-Standard +CANCEL,VTODO,CLASS,NONE,ZEROORONE +CANCEL,VTODO,COMMENT,NONE,ZEROORONE +CANCEL,VTODO,CONTACT,NONE,ZEROPLUS +CANCEL,VTODO,CREATED,NONE,ZEROORONE +CANCEL,VTODO,DESCRIPTION,NONE,ZEROORONE +CANCEL,VTODO,DTSTART,NONE,ZEROORONE +CANCEL,VTODO,DUE,NONE,ZEROORONE +CANCEL,VTODO,DURATION,NONE,ZEROORONE +CANCEL,VTODO,EXDATE,NONE,ZEROPLUS +CANCEL,VTODO,EXRULE,NONE,ZEROPLUS +CANCEL,VTODO,GEO,NONE,ZEROORONE +CANCEL,VTODO,LASTMODIFIED,NONE,ZEROORONE +CANCEL,VTODO,LOCATION,NONE,ZEROORONE +CANCEL,VTODO,PERCENTCOMPLETE,NONE,ZEROORONE +CANCEL,VTODO,RDATE,NONE,ZEROPLUS +CANCEL,VTODO,RECURRENCEID,NONE,ZEROORONE,must_be_recurring +CANCEL,VTODO,RELATEDTO,NONE,ZEROPLUS +CANCEL,VTODO,RESOURCES,NONE,ZEROORONE +CANCEL,VTODO,RRULE,NONE,ZEROPLUS +CANCEL,VTODO,PRIORITY,NONE,ZEROORONE +CANCEL,VTODO,STATUS,NONE,ZEROORONE,must_be_canceled_no_attendee +CANCEL,VTODO,URL,NONE,ZEROORONE +CANCEL,VTODO,X,NONE,ZEROPLUS +CANCEL,VTODO,REQUESTSTATUS,NONE,ZERO +CANCEL,VTODO,NONE,VTIMEZONE,ZEROORONE +CANCEL,VTODO,NONE,X,ZEROPLUS +CANCEL,VTODO,NONE,VALARM,ZERO +CANCEL,VTODO,NONE,VEVENT,ZERO +CANCEL,VTODO,NONE,VFREEBUSY,ZERO +CANCEL,VTODO,RELCALID,NONE,ZEROORONE +REFRESH,VTODO,NONE,NONE,ONE +REFRESH,VTODO,ATTENDEE,NONE,ONE +REFRESH,VTODO,DTSTAMP,NONE,ONE +REFRESH,VTODO,UID,NONE,ONE +REFRESH,VTODO,RECURRENCEID,NONE,ZEROORONE,must_be_recurring +REFRESH,VTODO,X,NONE,ZEROPLUS +REFRESH,VTODO,ATTACH,NONE,ZERO +REFRESH,VTODO,CATEGORIES,NONE,ZERO +REFRESH,VTODO,CLASS,NONE,ZERO +REFRESH,VTODO,COMMENT,NONE,ZERO +REFRESH,VTODO,CONTACT,NONE,ZERO +REFRESH,VTODO,CREATED,NONE,ZERO +REFRESH,VTODO,DESCRIPTION,NONE,ZERO +REFRESH,VTODO,DTSTART,NONE,ZERO +REFRESH,VTODO,DUE,NONE,ZERO +REFRESH,VTODO,DURATION,NONE,ZERO +REFRESH,VTODO,EXDATE,NONE,ZERO +REFRESH,VTODO,EXRULE,NONE,ZERO +REFRESH,VTODO,GEO,NONE,ZERO +REFRESH,VTODO,LASTMODIFIED,NONE,ZERO +REFRESH,VTODO,LOCATION,NONE,ZERO +REFRESH,VTODO,ORGANIZER,NONE,ZERO +REFRESH,VTODO,PERCENTCOMPLETE,NONE,ZERO +REFRESH,VTODO,PRIORITY,NONE,ZERO +REFRESH,VTODO,RDATE,NONE,ZERO +REFRESH,VTODO,RELATEDTO,NONE,ZERO +REFRESH,VTODO,REQUESTSTATUS,NONE,ZERO +REFRESH,VTODO,RESOURCES,NONE,ZERO +REFRESH,VTODO,RRULE,NONE,ZERO +REFRESH,VTODO,SEQUENCE,NONE,ZERO +REFRESH,VTODO,STATUS,NONE,ZERO +REFRESH,VTODO,URL,NONE,ZERO +REFRESH,VTODO,NONE,X,ZEROPLUS +REFRESH,VTODO,NONE,VALARM,ZERO +REFRESH,VTODO,NONE,VEVENT,ZERO +REFRESH,VTODO,NONE,VFREEBUSY,ZERO +REFRESH,VTODO,NONE,VTIMEZONE,ZERO +REFRESH,VTODO,RELCALID,NONE,ZEROORONE +COUNTER,VTODO,NONE,NONE,ONE +COUNTER,VTODO,ATTENDEE,NONE,ONEPLUS +COUNTER,VTODO,DTSTAMP,NONE,ONE +COUNTER,VTODO,ORGANIZER,NONE,ONE +COUNTER,VTODO,PRIORITY,NONE,ONE +COUNTER,VTODO,SUMMARY,NONE,ONE +COUNTER,VTODO,UID,NONE,ONE +COUNTER,VTODO,ATTACH,NONE,ZEROPLUS +COUNTER,VTODO,CATEGORIES,NONE,ZEROPLUS #Non-standard +COUNTER,VTODO,CLASS,NONE,ZEROORONE +COUNTER,VTODO,COMMENT,NONE,ZEROORONE +COUNTER,VTODO,CONTACT,NONE,ZEROPLUS +COUNTER,VTODO,CREATED,NONE,ZEROORONE +COUNTER,VTODO,DESCRIPTION,NONE,ZEROORONE +COUNTER,VTODO,DTSTART,NONE,ZEROORONE +COUNTER,VTODO,DUE,NONE,ZEROORONE +COUNTER,VTODO,DURATION,NONE,ZEROORONE +COUNTER,VTODO,EXDATE,NONE,ZEROPLUS +COUNTER,VTODO,EXRULE,NONE,ZEROPLUS +COUNTER,VTODO,GEO,NONE,ZEROORONE +COUNTER,VTODO,LASTMODIFIED,NONE,ZEROORONE +COUNTER,VTODO,LOCATION,NONE,ZEROORONE +COUNTER,VTODO,PERCENTCOMPLETE,NONE,ZEROORONE +COUNTER,VTODO,RDATE,NONE,ZEROPLUS +COUNTER,VTODO,RECURRENCEID,NONE,ZEROORONE,must_be_recurring +COUNTER,VTODO,RELATEDTO,NONE,ZEROPLUS +COUNTER,VTODO,REQUESTSTATUS,NONE,ZEROPLUS +COUNTER,VTODO,RESOURCES,NONE,ZEROORONE +COUNTER,VTODO,RRULE,NONE,ZEROORONE +COUNTER,VTODO,SEQUENCE,NONE,ZEROORONE +COUNTER,VTODO,STATUS,NONE,ZEROORONE,may_be_comp_need_process +COUNTER,VTODO,URL,NONE,ZEROORONE +COUNTER,VTODO,X,NONE,ZEROPLUS +COUNTER,VTODO,NONE,VALARM,ZEROPLUS +COUNTER,VTODO,NONE,VTIMEZONE,ZEROORONE +COUNTER,VTODO,NONE,X,ZEROPLUS +COUNTER,VTODO,NONE,VEVENT,ZERO +COUNTER,VTODO,NONE,VFREEBUSY,ZERO +COUNTER,VTODO,RELCALID,NONE,ZEROORONE +DECLINECOUNTER,VTODO,NONE,NONE,ONE +DECLINECOUNTER,VTODO,ATTENDEE,NONE,ONEPLUS +DECLINECOUNTER,VTODO,DTSTAMP,NONE,ONE +DECLINECOUNTER,VTODO,ORGANIZER,NONE,ONE +DECLINECOUNTER,VTODO,SEQUENCE,NONE,ONE +DECLINECOUNTER,VTODO,UID,NONE,ONE +DECLINECOUNTER,VTODO,ATTACH,NONE,ZEROPLUS +DECLINECOUNTER,VTODO,CATEGORIES,NONE,ZEROPLUS #Non-standard +DECLINECOUNTER,VTODO,CLASS,NONE,ZEROORONE +DECLINECOUNTER,VTODO,COMMENT,NONE,ZEROORONE +DECLINECOUNTER,VTODO,CONTACT,NONE,ZEROPLUS +DECLINECOUNTER,VTODO,CREATED,NONE,ZEROORONE +DECLINECOUNTER,VTODO,DESCRIPTION,NONE,ZEROORONE +DECLINECOUNTER,VTODO,DTSTART,NONE,ZEROORONE +DECLINECOUNTER,VTODO,DUE,NONE,ZEROORONE +DECLINECOUNTER,VTODO,DURATION,NONE,ZEROORONE +DECLINECOUNTER,VTODO,EXDATE,NONE,ZEROPLUS +DECLINECOUNTER,VTODO,EXRULE,NONE,ZEROPLUS +DECLINECOUNTER,VTODO,GEO,NONE,ZEROORONE +DECLINECOUNTER,VTODO,LASTMODIFIED,NONE,ZEROORONE +DECLINECOUNTER,VTODO,LOCATION,NONE,ZEROORONE +DECLINECOUNTER,VTODO,PERCENTCOMPLETE,NONE,ZEROORONE +DECLINECOUNTER,VTODO,PRIORITY,NONE,ZEROORONE +DECLINECOUNTER,VTODO,RDATE,NONE,ZEROPLUS +DECLINECOUNTER,VTODO,RECURRENCEID,NONE,ZEROORONE,must_be_recurring +DECLINECOUNTER,VTODO,RELATEDTO,NONE,ZEROPLUS +DECLINECOUNTER,VTODO,REQUESTSTATUS,NONE,ZEROPLUS +DECLINECOUNTER,VTODO,RESOURCES,NONE,ZEROORONE +DECLINECOUNTER,VTODO,RRULE,NONE,ZEROPLUS +DECLINECOUNTER,VTODO,STATUS,NONE,ZEROORONE +DECLINECOUNTER,VTODO,URL,NONE,ZEROORONE +DECLINECOUNTER,VTODO,X,NONE,ZEROPLUS +DECLINECOUNTER,VTODO,NONE,VTIMEZONE,ZEROPLUS +DECLINECOUNTER,VTODO,NONE,X,ZEROPLUS +DECLINECOUNTER,VTODO,NONE,VALARM,ZERO +DECLINECOUNTER,VTODO,NONE,VEVENT,ZERO +DECLINECOUNTER,VTODO,NONE,VFREEBUSY,ZERO +DECLINECOUNTER,VTODO,RELCALID,NONE,ZEROORONE +PUBLISH,VJOURNAL,NONE,NONE,ONEPLUS +PUBLISH,VJOURNAL,DESCRIPTION,NONE,ONE +PUBLISH,VJOURNAL,DTSTAMP,NONE,ONE +PUBLISH,VJOURNAL,DTSTART,NONE,ONE +PUBLISH,VJOURNAL,ORGANIZER,NONE,ONE +PUBLISH,VJOURNAL,UID,NONE,ONE +PUBLISH,VJOURNAL,ATTACH,NONE,ZEROPLUS +PUBLISH,VJOURNAL,CATEGORIES,NONE,ZEROPLUS #Non-standard +PUBLISH,VJOURNAL,CLASS,NONE,ZEROORONE +PUBLISH,VJOURNAL,COMMENT,NONE,ZEROORONE +PUBLISH,VJOURNAL,CONTACT,NONE,ZEROPLUS +PUBLISH,VJOURNAL,CREATED,NONE,ZEROORONE +PUBLISH,VJOURNAL,EXDATE,NONE,ZEROPLUS +PUBLISH,VJOURNAL,EXRULE,NONE,ZEROPLUS +PUBLISH,VJOURNAL,LASTMODIFIED,NONE,ZEROORONE +PUBLISH,VJOURNAL,RDATE,NONE,ZEROPLUS +PUBLISH,VJOURNAL,RECURRENCEID,NONE,ZEROORONE,must_be_recurring +PUBLISH,VJOURNAL,RELATEDTO,NONE,ZEROPLUS +PUBLISH,VJOURNAL,RRULE,NONE,ZEROPLUS +PUBLISH,VJOURNAL,SEQUENCE,NONE,ZEROORONE +PUBLISH,VJOURNAL,STATUS,NONE,ZEROORONE,may_be_draft_final_canceled +PUBLISH,VJOURNAL,SUMMARY,NONE,ZEROORONE +PUBLISH,VJOURNAL,URL,NONE,ZEROORONE +PUBLISH,VJOURNAL,X,NONE,ZEROPLUS +PUBLISH,VJOURNAL,ATTENDEE,NONE,ZERO +PUBLISH,VJOURNAL,NONE,VALARM,ZEROPLUS +PUBLISH,VJOURNAL,NONE,VTIMEZONE,ZEROPLUS +PUBLISH,VJOURNAL,NONE,X,ZEROPLUS +PUBLISH,VJOURNAL,NONE,VEVENT,ZERO +PUBLISH,VJOURNAL,NONE,VFREEBUSY,ZERO +PUBLISH,VJOURNAL,NONE,VTODO,ZERO +ADD,VJOURNAL,NONE,NONE,ONE +ADD,VJOURNAL,DESCRIPTION,NONE,ONE +ADD,VJOURNAL,DTSTAMP,NONE,ONE +ADD,VJOURNAL,DTSTART,NONE,ONE +ADD,VJOURNAL,ORGANIZER,NONE,ONE +ADD,VJOURNAL,SEQUENCE,NONE,ONE +ADD,VJOURNAL,UID,NONE,ONE +ADD,VJOURNAL,ATTACH,NONE,ZEROPLUS +ADD,VJOURNAL,CATEGORIES,NONE,ZEROPLUS #Non-standard +ADD,VJOURNAL,CLASS,NONE,ZEROORONE +ADD,VJOURNAL,COMMENT,NONE,ZEROORONE +ADD,VJOURNAL,CONTACT,NONE,ZEROPLUS +ADD,VJOURNAL,CREATED,NONE,ZEROORONE +ADD,VJOURNAL,EXDATE,NONE,ZEROPLUS +ADD,VJOURNAL,EXRULE,NONE,ZEROPLUS +ADD,VJOURNAL,LASTMODIFIED,NONE,ZEROORONE +ADD,VJOURNAL,RDATE,NONE,ZEROPLUS +ADD,VJOURNAL,RELATEDTO,NONE,ZEROPLUS +ADD,VJOURNAL,RRULE,NONE,ZEROPLUS +ADD,VJOURNAL,STATUS,NONE,ZEROORONE +ADD,VJOURNAL,SUMMARY,NONE,ZEROORONE +ADD,VJOURNAL,URL,NONE,ZEROORONE +ADD,VJOURNAL,X,NONE,ZEROPLUS +ADD,VJOURNAL,ATTENDEE,NONE,ZERO +ADD,VJOURNAL,RECURRENCEID,NONE,ZERO +ADD,VJOURNAL,NONE,VALARM,ZEROPLUS +ADD,VJOURNAL,NONE,VTIMEZONE,ZEROORONE +ADD,VJOURNAL,NONE,X,ZEROPLUS +ADD,VJOURNAL,NONE,VEVENT,ZERO +ADD,VJOURNAL,NONE,VFREEBUSY,ZERO +ADD,VJOURNAL,NONE,VTODO,ZERO +CANCEL,VJOURNAL,NONE,NONE,ONEPLUS +CANCEL,VJOURNAL,DTSTAMP,NONE,ONE +CANCEL,VJOURNAL,ORGANIZER,NONE,ONE +CANCEL,VJOURNAL,SEQUENCE,NONE,ONE +CANCEL,VJOURNAL,UID,NONE,ONE +CANCEL,VJOURNAL,ATTACH,NONE,ZEROPLUS +CANCEL,VJOURNAL,ATTENDEE,NONE,ZEROPLUS +CANCEL,VJOURNAL,CATEGORIES,NONE,ZEROPLUS #Non-standard +CANCEL,VJOURNAL,CLASS,NONE,ZEROORONE +CANCEL,VJOURNAL,COMMENT,NONE,ZEROORONE +CANCEL,VJOURNAL,CONTACT,NONE,ZEROPLUS +CANCEL,VJOURNAL,CREATED,NONE,ZEROORONE +CANCEL,VJOURNAL,DESCRIPTION,NONE,ZEROORONE +CANCEL,VJOURNAL,DTSTART,NONE,ZEROORONE +CANCEL,VJOURNAL,EXDATE,NONE,ZEROPLUS +CANCEL,VJOURNAL,EXRULE,NONE,ZEROPLUS +CANCEL,VJOURNAL,LASTMODIFIED,NONE,ZEROORONE +CANCEL,VJOURNAL,RDATE,NONE,ZEROPLUS +CANCEL,VJOURNAL,RECURRENCEID,NONE,ZEROORONE,must_be_recurring +CANCEL,VJOURNAL,RELATEDTO,NONE,ZEROPLUS +CANCEL,VJOURNAL,RRULE,NONE,ZEROPLUS +CANCEL,VJOURNAL,STATUS,NONE,ZEROORONE,must_be_cancel_if_present +CANCEL,VJOURNAL,SUMMARY,NONE,ZEROORONE +CANCEL,VJOURNAL,URL,NONE,ZEROORONE +CANCEL,VJOURNAL,X,NONE,ZEROPLUS +CANCEL,VJOURNAL,REQUESTSTATUS,NONE,ZERO +CANCEL,VJOURNAL,NONE,VTIMEZONE,ZEROPLUS +CANCEL,VJOURNAL,NONE,X,ZEROPLUS +CANCEL,VJOURNAL,NONE,VALARM,ZERO +CANCEL,VJOURNAL,NONE,VEVENT,ZERO +CANCEL,VJOURNAL,NONE,VFREEBUSY,ZERO +CANCEL,VJOURNAL,NONE,VTODO,ZERO +PUBLISH,VAGENDA,NONE,NONE,ONEPLUS +PUBLISH,VAGENDA,CALMASTER,NONE,ONE +PUBLISH,VAGENDA,OWNER,NONE,ZEROORONE +PUBLISH,VAGENDA,RELCALID,NONE,ZEROORONE +PUBLISH,VAGENDA,TZID,NONE,ONE +REQUEST,VAGENDA,NONE,NONE,ONEPLUS +REQUEST,VAGENDA,CALMASTER,NONE,ONE +REQUEST,VAGENDA,OWNER,NONE,ZEROORONE +REQUEST,VAGENDA,RELCALID,NONE,ZEROORONE +REQUEST,VAGENDA,TZID,NONE,ONE +REPLY,VAGENDA,NONE,NONE,ONEPLUS +REPLY,VAGENDA,CALMASTER,NONE,ONE +REPLY,VAGENDA,OWNER,NONE,ZEROORONE +REPLY,VAGENDA,RELCALID,NONE,ZEROORONE +REPLY,VAGENDA,TZID,NONE,ONE +ADD,VAGENDA,NONE,NONE,ONEPLUS +ADD,VAGENDA,CALMASTER,NONE,ONE +ADD,VAGENDA,OWNER,NONE,ZEROORONE +ADD,VAGENDA,RELCALID,NONE,ZEROORONE +ADD,VAGENDA,TZID,NONE,ONE +CANCEL,VAGENDA,NONE,NONE,ONEPLUS +CANCEL,VAGENDA,CALMASTER,NONE,ONE +CANCEL,VAGENDA,OWNER,NONE,ZEROORONE +CANCEL,VAGENDA,RELCALID,NONE,ZEROORONE +CANCEL,VAGENDA,TZID,NONE,ONE +REFRESH,VAGENDA,NONE,NONE,ONEPLUS +REFRESH,VAGENDA,CALMASTER,NONE,ONE +REFRESH,VAGENDA,OWNER,NONE,ZEROORONE +REFRESH,VAGENDA,RELCALID,NONE,ZEROORONE +REFRESH,VAGENDA,TZID,NONE,ONE +COUNTER,VAGENDA,NONE,NONE,ONEPLUS +COUNTER,VAGENDA,CALMASTER,NONE,ONE +COUNTER,VAGENDA,OWNER,NONE,ZEROORONE +COUNTER,VAGENDA,RELCALID,NONE,ZEROORONE +COUNTER,VAGENDA,TZID,NONE,ONE +DECLINECOUNTER,VAGENDA,NONE,NONE,ONEPLUS +DECLINECOUNTER,VAGENDA,CALMASTER,NONE,ONE +DECLINECOUNTER,VAGENDA,OWNER,NONE,ZEROORONE +DECLINECOUNTER,VAGENDA,RELCALID,NONE,ZEROORONE +DECLINECOUNTER,VAGENDA,TZID,NONE,ONE +NONE,VAGENDA,ALLOWCONFLICT,NONE,ONE +NONE,VAGENDA,CALMASTER,NONE,ONE +NONE,VAGENDA,OWNER,NONE,ZEROORONE +NONE,VAGENDA,RELCALID,NONE,ZEROORONE +NONE,VAGENDA,TZID,NONE,ONE +NONE,VAGENDA,DEFAULTCHARSET,NONE,ONE +NONE,VAGENDA,DEFAULTLOCALE,NONE,ONE +NONE,VAGENDA,DEFAULTTZID,NONE,ONE +NONE,VCALENDAR,ACTION,NONE,ZERO +NONE,VCALENDAR,ATTACH,NONE,ZERO +NONE,VCALENDAR,ATTENDEE,NONE,ZERO +NONE,VCALENDAR,RELCALID,NONE,ZEROORONE +NONE,VCALENDAR,CALSCALE,NONE,ZEROORONE +NONE,VCALENDAR,CATEGORIES,NONE,ZERO +NONE,VCALENDAR,CLASS,NONE,ZERO +NONE,VCALENDAR,COMMENT,NONE,ZERO +NONE,VCALENDAR,COMPLETED,NONE,ZERO +NONE,VCALENDAR,CONTACT,NONE,ZERO +NONE,VCALENDAR,CREATED,NONE,ZERO +NONE,VCALENDAR,DESCRIPTION,NONE,ZERO +NONE,VCALENDAR,DTEND,NONE,ZERO +NONE,VCALENDAR,DTSTAMP,NONE,ZERO +NONE,VCALENDAR,DTSTART,NONE,ZERO +NONE,VCALENDAR,DUE,NONE,ZERO +NONE,VCALENDAR,DURATION,NONE,ZERO +NONE,VCALENDAR,EXDATE,NONE,ZERO +NONE,VCALENDAR,EXRULE,NONE,ZERO +NONE,VCALENDAR,FREEBUSY,NONE,ZERO +NONE,VCALENDAR,GEO,NONE,ZERO +NONE,VCALENDAR,LASTMODIFIED,NONE,ZERO +NONE,VCALENDAR,LOCATION,NONE,ZERO +NONE,VCALENDAR,METHOD,NONE,ZEROORONE +NONE,VCALENDAR,ORGANIZER,NONE,ZERO +NONE,VCALENDAR,PERCENTCOMPLETE,NONE,ZERO +NONE,VCALENDAR,PRIORITY,NONE,ZERO +NONE,VCALENDAR,PRODID,NONE,ONE +NONE,VCALENDAR,RDATE,NONE,ZERO +NONE,VCALENDAR,RECURRENCEID,NONE,ZERO +NONE,VCALENDAR,RELATEDTO,NONE,ZERO +NONE,VCALENDAR,REPEAT,NONE,ZERO +NONE,VCALENDAR,REQUESTSTATUS,NONE,ZERO +NONE,VCALENDAR,RESOURCES,NONE,ZERO +NONE,VCALENDAR,RRULE,NONE,ZERO +NONE,VCALENDAR,SEQUENCE,NONE,ZERO +NONE,VCALENDAR,STATUS,NONE,ZERO +NONE,VCALENDAR,SUMMARY,NONE,ZERO +NONE,VCALENDAR,TRANSP,NONE,ZERO +NONE,VCALENDAR,TRIGGER,NONE,ZERO +NONE,VCALENDAR,TZID,NONE,ZERO +NONE,VCALENDAR,TZNAME,NONE,ZERO +NONE,VCALENDAR,TZOFFSETFROM,NONE,ZERO +NONE,VCALENDAR,TZOFFSETTO,NONE,ZERO +NONE,VCALENDAR,TZURL,NONE,ZERO +NONE,VCALENDAR,UID,NONE,ZERO +NONE,VCALENDAR,URL,NONE,ZERO +NONE,VCALENDAR,VERSION,NONE,ONE +NONE,VCALENDAR,X,NONE,ZEROPLUS +NONE,VEVENT,ACTION,NONE,ZERO +NONE,VEVENT,ATTACH,NONE,ZEROPLUS +NONE,VEVENT,ATTENDEE,NONE,ZEROPLUS +NONE,VEVENT,CALSCALE,NONE,ZERO +NONE,VEVENT,CATEGORIES,NONE,ZEROPLUS +NONE,VEVENT,CLASS,NONE,ZEROORONE +NONE,VEVENT,COMMENT,NONE,ZEROPLUS +NONE,VEVENT,COMPLETED,NONE,ZERO +NONE,VEVENT,CONTACT,NONE,ZEROPLUS +NONE,VEVENT,CREATED,NONE,ZEROORONE +NONE,VEVENT,DESCRIPTION,NONE,ZEROORONE +NONE,VEVENT,DTEND,NONE,ONEEXCLUSIVE,no_duration +NONE,VEVENT,DTSTAMP,NONE,ZEROORONE +NONE,VEVENT,DTSTART,NONE,ZEROORONE +NONE,VEVENT,DUE,NONE,ZERO +NONE,VEVENT,DURATION,NONE,ONEEXCLUSIVE,no_dtend +NONE,VEVENT,EXDATE,NONE,ZEROPLUS +NONE,VEVENT,EXRULE,NONE,ZEROPLUS +NONE,VEVENT,FREEBUSY,NONE,ZERO +NONE,VEVENT,GEO,NONE,ZEROORONE +NONE,VEVENT,LASTMODIFIED,NONE,ZEROORONE +NONE,VEVENT,LOCATION,NONE,ZEROORONE +NONE,VEVENT,METHOD,NONE,ZERO +NONE,VEVENT,ORGANIZER,NONE,ZEROORONE +NONE,VEVENT,PERCENTCOMPLETE,NONE,ZERO +NONE,VEVENT,PRIORITY,NONE,ZEROORONE +NONE,VEVENT,PRODID,NONE,ZERO +NONE,VEVENT,RDATE,NONE,ZEROPLUS +NONE,VEVENT,RECURRENCEID,NONE,ZEROORONE,must_be_recurring +NONE,VEVENT,RELATEDTO,NONE,ZEROPLUS +NONE,VEVENT,REPEAT,NONE,ZERO +NONE,VEVENT,REQUESTSTATUS,NONE,ZEROPLUS +NONE,VEVENT,RESOURCES,NONE,ZEROPLUS +NONE,VEVENT,RRULE,NONE,ZEROPLUS +NONE,VEVENT,SEQUENCE,NONE,ZEROORONE +NONE,VEVENT,STATUS,NONE,ZEROORONE +NONE,VEVENT,SUMMARY,NONE,ZEROORONE +NONE,VEVENT,TRANSP,NONE,ZEROORONE +NONE,VEVENT,TRIGGER,NONE,ZERO +NONE,VEVENT,TZID,NONE,ZERO +NONE,VEVENT,TZNAME,NONE,ZERO +NONE,VEVENT,TZOFFSETFROM,NONE,ZERO +NONE,VEVENT,TZOFFSETTO,NONE,ZERO +NONE,VEVENT,TZURL,NONE,ZERO +NONE,VEVENT,UID,NONE,ZEROORONE +NONE,VEVENT,URL,NONE,ZEROORONE +NONE,VEVENT,VERSION,NONE,ZERO +NONE,VEVENT,X,NONE,ZEROPLUS +NONE,VEVENT,RELCALID,NONE,ZEROORONE +NONE,VTODO,ACTION,NONE,ZERO +NONE,VTODO,ATTACH,NONE,ZEROPLUS +NONE,VTODO,ATTENDEE,NONE,ZEROPLUS +NONE,VTODO,CALSCALE,NONE,ZERO +NONE,VTODO,CATEGORIES,NONE,ZEROPLUS +NONE,VTODO,CLASS,NONE,ZEROORONE +NONE,VTODO,COMMENT,NONE,ZEROPLUS +NONE,VTODO,COMPLETED,NONE,ZEROORONE +NONE,VTODO,CONTACT,NONE,ZEROPLUS +NONE,VTODO,CREATED,NONE,ZEROORONE +NONE,VTODO,DESCRIPTION,NONE,ZEROORONE +NONE,VTODO,DTEND,NONE,ZERO +NONE,VTODO,DTSTAMP,NONE,ZEROORONE +NONE,VTODO,DTSTART,NONE,ZEROORONE +NONE,VTODO,DUE,NONE,ONEEXCLUSIVE +NONE,VTODO,DURATION,NONE,ONEEXCLUSIVE +NONE,VTODO,EXDATE,NONE,ZEROPLUS +NONE,VTODO,EXRULE,NONE,ZEROPLUS +NONE,VTODO,FREEBUSY,NONE,ZERO +NONE,VTODO,GEO,NONE,ZEROORONE +NONE,VTODO,LASTMODIFIED,NONE,ZEROORONE +NONE,VTODO,LOCATION,NONE,ZEROORONE +NONE,VTODO,METHOD,NONE,ZERO +NONE,VTODO,ORGANIZER,NONE,ZEROORONE +NONE,VTODO,PERCENTCOMPLETE,NONE,ZEROORONE +NONE,VTODO,PRIORITY,NONE,ZEROORONE +NONE,VTODO,PRODID,NONE,ZERO +NONE,VTODO,RDATE,NONE,ZEROPLUS +NONE,VTODO,RECURRENCEID,NONE,ZEROORONE,must_be_recurring +NONE,VTODO,RELATEDTO,NONE,ZEROPLUS +NONE,VTODO,REPEAT,NONE,ZERO +NONE,VTODO,REQUESTSTATUS,NONE,ZEROPLUS +NONE,VTODO,RESOURCES,NONE,ZEROPLUS +NONE,VTODO,RRULE,NONE,ZEROPLUS +NONE,VTODO,SEQUENCE,NONE,ZEROORONE +NONE,VTODO,STATUS,NONE,ZEROORONE +NONE,VTODO,SUMMARY,NONE,ZEROORONE +NONE,VTODO,TRANSP,NONE,ZERO +NONE,VTODO,TRIGGER,NONE,ZERO +NONE,VTODO,TZID,NONE,ZERO +NONE,VTODO,TZNAME,NONE,ZERO +NONE,VTODO,TZOFFSETFROM,NONE,ZERO +NONE,VTODO,TZOFFSETTO,NONE,ZERO +NONE,VTODO,TZURL,NONE,ZERO +NONE,VTODO,UID,NONE,ZEROORONE +NONE,VTODO,URL,NONE,ZEROORONE +NONE,VTODO,VERSION,NONE,ZERO +NONE,VTODO,X,NONE,ZEROPLUS +NONE,VTODO,RELCALID,NONE,ZEROORONE +NONE,VJOURNAL,ACTION,NONE,ZERO +NONE,VJOURNAL,ATTACH,NONE,ZEROPLUS +NONE,VJOURNAL,ATTENDEE,NONE,ZEROPLUS +NONE,VJOURNAL,CALSCALE,NONE,ZERO +NONE,VJOURNAL,CATEGORIES,NONE,ZEROPLUS +NONE,VJOURNAL,CLASS,NONE,ZEROORONE +NONE,VJOURNAL,COMMENT,NONE,ZEROPLUS +NONE,VJOURNAL,COMPLETED,NONE,ZERO +NONE,VJOURNAL,CONTACT,NONE,ZEROPLUS +NONE,VJOURNAL,CREATED,NONE,ZEROORONE +NONE,VJOURNAL,DESCRIPTION,NONE,ZEROORONE +NONE,VJOURNAL,DTEND,NONE,ZERO +NONE,VJOURNAL,DTSTAMP,NONE,ZEROORONE +NONE,VJOURNAL,DTSTART,NONE,ZEROORONE +NONE,VJOURNAL,DUE,NONE,ONEEXCLUSIVE +NONE,VJOURNAL,DURATION,NONE,ONEEXCLUSIVE +NONE,VJOURNAL,EXDATE,NONE,ZEROPLUS +NONE,VJOURNAL,EXRULE,NONE,ZEROPLUS +NONE,VJOURNAL,FREEBUSY,NONE,ZERO +NONE,VJOURNAL,GEO,NONE,ZERO +NONE,VJOURNAL,LASTMODIFIED,NONE,ZEROORONE +NONE,VJOURNAL,LOCATION,NONE,ZERO +NONE,VJOURNAL,METHOD,NONE,ZERO +NONE,VJOURNAL,ORGANIZER,NONE,ZEROORONE +NONE,VJOURNAL,PERCENTCOMPLETE,NONE,ZERO +NONE,VJOURNAL,PRIORITY,NONE,ZERO +NONE,VJOURNAL,PRODID,NONE,ZERO +NONE,VJOURNAL,RDATE,NONE,ZEROPLUS +NONE,VJOURNAL,RECURRENCEID,NONE,ZEROORONE,must_be_recurring +NONE,VJOURNAL,RELATEDTO,NONE,ZEROPLUS +NONE,VJOURNAL,REPEAT,NONE,ZERO +NONE,VJOURNAL,REQUESTSTATUS,NONE,ZEROPLUS +NONE,VJOURNAL,RESOURCES,NONE,ZERO +NONE,VJOURNAL,RRULE,NONE,ZEROPLUS +NONE,VJOURNAL,SEQUENCE,NONE,ZEROORONE +NONE,VJOURNAL,STATUS,NONE,ZEROORONE +NONE,VJOURNAL,SUMMARY,NONE,ZEROORONE +NONE,VJOURNAL,TRANSP,NONE,ZERO +NONE,VJOURNAL,TRIGGER,NONE,ZERO +NONE,VJOURNAL,TZID,NONE,ZERO +NONE,VJOURNAL,TZNAME,NONE,ZERO +NONE,VJOURNAL,TZOFFSETFROM,NONE,ZERO +NONE,VJOURNAL,TZOFFSETTO,NONE,ZERO +NONE,VJOURNAL,TZURL,NONE,ZERO +NONE,VJOURNAL,UID,NONE,ZEROORONE +NONE,VJOURNAL,URL,NONE,ZEROORONE +NONE,VJOURNAL,VERSION,NONE,ZERO +NONE,VJOURNAL,X,NONE,ZEROPLUS +NONE,VFREEBUSY,ACTION,NONE,ZERO +NONE,VFREEBUSY,ATTACH,NONE,ZERO +NONE,VFREEBUSY,ATTENDEE,NONE,ZEROPLUS +NONE,VFREEBUSY,CALSCALE,NONE,ZERO +NONE,VFREEBUSY,CATEGORIES,NONE,ZERO +NONE,VFREEBUSY,CLASS,NONE,ZERO +NONE,VFREEBUSY,COMMENT,NONE,ZEROPLUS +NONE,VFREEBUSY,COMPLETED,NONE,ZERO +NONE,VFREEBUSY,CONTACT,NONE,ZEROORONE +NONE,VFREEBUSY,CREATED,NONE,ZERO +NONE,VFREEBUSY,DESCRIPTION,NONE,ZERO +NONE,VFREEBUSY,DTEND,NONE,ZEROORONE +NONE,VFREEBUSY,DTSTAMP,NONE,ZERO +NONE,VFREEBUSY,DTSTART,NONE,ZEROORONE +NONE,VFREEBUSY,DUE,NONE,ZERO +NONE,VFREEBUSY,DURATION,NONE,ZEROORONE +NONE,VFREEBUSY,EXDATE,NONE,ZERO +NONE,VFREEBUSY,EXRULE,NONE,ZERO +NONE,VFREEBUSY,FREEBUSY,NONE,ZEROPLUS +NONE,VFREEBUSY,GEO,NONE,ZERO +NONE,VFREEBUSY,LASTMODIFIED,NONE,ZERO +NONE,VFREEBUSY,LOCATION,NONE,ZERO +NONE,VFREEBUSY,METHOD,NONE,ZERO +NONE,VFREEBUSY,ORGANIZER,NONE,ZEROORONE +NONE,VFREEBUSY,PERCENTCOMPLETE,NONE,ZERO +NONE,VFREEBUSY,PRIORITY,NONE,ZERO +NONE,VFREEBUSY,PRODID,NONE,ZERO +NONE,VFREEBUSY,RDATE,NONE,ZERO +NONE,VFREEBUSY,RECURRENCEID,NONE,ZERO +NONE,VFREEBUSY,RELATEDTO,NONE,ZERO +NONE,VFREEBUSY,REPEAT,NONE,ZERO +NONE,VFREEBUSY,REQUESTSTATUS,NONE,ZEROPLUS +NONE,VFREEBUSY,RESOURCES,NONE,ZERO +NONE,VFREEBUSY,RRULE,NONE,ZERO +NONE,VFREEBUSY,SEQUENCE,NONE,ZERO +NONE,VFREEBUSY,STATUS,NONE,ZERO +NONE,VFREEBUSY,SUMMARY,NONE,ZERO +NONE,VFREEBUSY,TRANSP,NONE,ZERO +NONE,VFREEBUSY,TRIGGER,NONE,ZERO +NONE,VFREEBUSY,TZID,NONE,ZERO +NONE,VFREEBUSY,TZNAME,NONE,ZERO +NONE,VFREEBUSY,TZOFFSETFROM,NONE,ZERO +NONE,VFREEBUSY,TZOFFSETTO,NONE,ZERO +NONE,VFREEBUSY,TZURL,NONE,ZERO +NONE,VFREEBUSY,UID,NONE,ZEROORONE +NONE,VFREEBUSY,URL,NONE,ZEROORONE +NONE,VFREEBUSY,VERSION,NONE,ZERO +NONE,VFREEBUSY,X,NONE,ZEROPLUS +NONE,VTIMEZONE,ACTION,NONE,ZERO +NONE,VTIMEZONE,ATTACH,NONE,ZERO +NONE,VTIMEZONE,ATTENDEE,NONE,ZERO +NONE,VTIMEZONE,CALSCALE,NONE,ZERO +NONE,VTIMEZONE,CATEGORIES,NONE,ZERO +NONE,VTIMEZONE,CLASS,NONE,ZERO +NONE,VTIMEZONE,COMMENT,NONE,ZERO +NONE,VTIMEZONE,COMPLETED,NONE,ZERO +NONE,VTIMEZONE,CONTACT,NONE,ZERO +NONE,VTIMEZONE,CREATED,NONE,ZERO +NONE,VTIMEZONE,DESCRIPTION,NONE,ZERO +NONE,VTIMEZONE,DTEND,NONE,ZERO +NONE,VTIMEZONE,DTSTAMP,NONE,ZERO +NONE,VTIMEZONE,DTSTART,NONE,ZERO +NONE,VTIMEZONE,DUE,NONE,ZERO +NONE,VTIMEZONE,DURATION,NONE,ZERO +NONE,VTIMEZONE,EXDATE,NONE,ZERO +NONE,VTIMEZONE,EXRULE,NONE,ZERO +NONE,VTIMEZONE,FREEBUSY,NONE,ZERO +NONE,VTIMEZONE,GEO,NONE,ZERO +NONE,VTIMEZONE,LASTMODIFIED,NONE,ZEROORONE +NONE,VTIMEZONE,LOCATION,NONE,ZERO +NONE,VTIMEZONE,METHOD,NONE,ZERO +NONE,VTIMEZONE,ORGANIZER,NONE,ZERO +NONE,VTIMEZONE,PERCENTCOMPLETE,NONE,ZERO +NONE,VTIMEZONE,PRIORITY,NONE,ZERO +NONE,VTIMEZONE,PRODID,NONE,ZERO +NONE,VTIMEZONE,RDATE,NONE,ZERO +NONE,VTIMEZONE,RECURRENCEID,NONE,ZERO +NONE,VTIMEZONE,RELATEDTO,NONE,ZERO +NONE,VTIMEZONE,REPEAT,NONE,ZERO +NONE,VTIMEZONE,REQUESTSTATUS,NONE,ZERO +NONE,VTIMEZONE,RESOURCES,NONE,ZERO +NONE,VTIMEZONE,RRULE,NONE,ZERO +NONE,VTIMEZONE,SEQUENCE,NONE,ZERO +NONE,VTIMEZONE,STATUS,NONE,ZERO +NONE,VTIMEZONE,SUMMARY,NONE,ZERO +NONE,VTIMEZONE,TRANSP,NONE,ZERO +NONE,VTIMEZONE,TRIGGER,NONE,ZERO +NONE,VTIMEZONE,TZID,NONE,ONE +NONE,VTIMEZONE,TZNAME,NONE,ZERO +NONE,VTIMEZONE,TZOFFSETFROM,NONE,ZERO +NONE,VTIMEZONE,TZOFFSETTO,NONE,ZERO +NONE,VTIMEZONE,TZURL,NONE,ZEROPLUS +NONE,VTIMEZONE,UID,NONE,ZERO +NONE,VTIMEZONE,URL,NONE,ZERO +NONE,VTIMEZONE,VERSION,NONE,ZERO +NONE,VTIMEZONE,X,NONE,ZEROORONE +NONE,VTIMEZONE,NONE,XSTANDARD,ZEROPLUS +NONE,VTIMEZONE,NONE,XDAYLIGHT,ZEROPLUS +NONE,XSTANDARD,ACTION,NONE,ZERO +NONE,XSTANDARD,ATTACH,NONE,ZERO +NONE,XSTANDARD,ATTENDEE,NONE,ZERO +NONE,XSTANDARD,CALSCALE,NONE,ZERO +NONE,XSTANDARD,CATEGORIES,NONE,ZERO +NONE,XSTANDARD,CLASS,NONE,ZERO +NONE,XSTANDARD,COMMENT,NONE,ZEROPLUS +NONE,XSTANDARD,COMPLETED,NONE,ZERO +NONE,XSTANDARD,CONTACT,NONE,ZERO +NONE,XSTANDARD,CREATED,NONE,ZERO +NONE,XSTANDARD,DESCRIPTION,NONE,ZERO +NONE,XSTANDARD,DTEND,NONE,ZERO +NONE,XSTANDARD,DTSTAMP,NONE,ZERO +NONE,XSTANDARD,DTSTART,NONE,ONE +NONE,XSTANDARD,DUE,NONE,ZERO +NONE,XSTANDARD,DURATION,NONE,ZERO +NONE,XSTANDARD,EXDATE,NONE,ZERO +NONE,XSTANDARD,EXRULE,NONE,ZERO +NONE,XSTANDARD,FREEBUSY,NONE,ZERO +NONE,XSTANDARD,GEO,NONE,ZERO +NONE,XSTANDARD,LASTMODIFIED,NONE,ZERO +NONE,XSTANDARD,LOCATION,NONE,ZERO +NONE,XSTANDARD,METHOD,NONE,ZERO +NONE,XSTANDARD,ORGANIZER,NONE,ZERO +NONE,XSTANDARD,PERCENTCOMPLETE,NONE,ZERO +NONE,XSTANDARD,PRIORITY,NONE,ZERO +NONE,XSTANDARD,PRODID,NONE,ZERO +NONE,XSTANDARD,RDATE,NONE,ZEROPLUS +NONE,XSTANDARD,RECURRENCEID,NONE,ZERO +NONE,XSTANDARD,RELATEDTO,NONE,ZERO +NONE,XSTANDARD,REPEAT,NONE,ZERO +NONE,XSTANDARD,REQUESTSTATUS,NONE,ZERO +NONE,XSTANDARD,RESOURCES,NONE,ZERO +NONE,XSTANDARD,RRULE,NONE,ZEROPLUS +NONE,XSTANDARD,SEQUENCE,NONE,ZERO +NONE,XSTANDARD,STATUS,NONE,ZERO +NONE,XSTANDARD,SUMMARY,NONE,ZERO +NONE,XSTANDARD,TRANSP,NONE,ZERO +NONE,XSTANDARD,TRIGGER,NONE,ZERO +NONE,XSTANDARD,TZID,NONE,ZERO +NONE,XSTANDARD,TZNAME,NONE,ZEROPLUS +NONE,XSTANDARD,TZOFFSETFROM,NONE,ONE +NONE,XSTANDARD,TZOFFSETTO,NONE,ONE +NONE,XSTANDARD,TZURL,NONE,ZERO +NONE,XSTANDARD,UID,NONE,ZERO +NONE,XSTANDARD,URL,NONE,ZERO +NONE,XSTANDARD,VERSION,NONE,ZERO +NONE,XSTANDARD,X,NONE,ZEROPLUS +NONE,XDAYLIGHT,ACTION,NONE,ZERO +NONE,XDAYLIGHT,ATTACH,NONE,ZERO +NONE,XDAYLIGHT,ATTENDEE,NONE,ZERO +NONE,XDAYLIGHT,CALSCALE,NONE,ZERO +NONE,XDAYLIGHT,CATEGORIES,NONE,ZERO +NONE,XDAYLIGHT,CLASS,NONE,ZERO +NONE,XDAYLIGHT,COMMENT,NONE,ZEROPLUS +NONE,XDAYLIGHT,COMPLETED,NONE,ZERO +NONE,XDAYLIGHT,CONTACT,NONE,ZERO +NONE,XDAYLIGHT,CREATED,NONE,ZERO +NONE,XDAYLIGHT,DESCRIPTION,NONE,ZERO +NONE,XDAYLIGHT,DTEND,NONE,ZERO +NONE,XDAYLIGHT,DTSTAMP,NONE,ZERO +NONE,XDAYLIGHT,DTSTART,NONE,ONE +NONE,XDAYLIGHT,DUE,NONE,ZERO +NONE,XDAYLIGHT,DURATION,NONE,ZERO +NONE,XDAYLIGHT,EXDATE,NONE,ZERO +NONE,XDAYLIGHT,EXRULE,NONE,ZERO +NONE,XDAYLIGHT,FREEBUSY,NONE,ZERO +NONE,XDAYLIGHT,GEO,NONE,ZERO +NONE,XDAYLIGHT,LASTMODIFIED,NONE,ZERO +NONE,XDAYLIGHT,LOCATION,NONE,ZERO +NONE,XDAYLIGHT,METHOD,NONE,ZERO +NONE,XDAYLIGHT,ORGANIZER,NONE,ZERO +NONE,XDAYLIGHT,PERCENTCOMPLETE,NONE,ZERO +NONE,XDAYLIGHT,PRIORITY,NONE,ZERO +NONE,XDAYLIGHT,PRODID,NONE,ZERO +NONE,XDAYLIGHT,RDATE,NONE,ZEROPLUS +NONE,XDAYLIGHT,RECURRENCEID,NONE,ZERO +NONE,XDAYLIGHT,RELATEDTO,NONE,ZERO +NONE,XDAYLIGHT,REPEAT,NONE,ZERO +NONE,XDAYLIGHT,REQUESTSTATUS,NONE,ZERO +NONE,XDAYLIGHT,RESOURCES,NONE,ZERO +NONE,XDAYLIGHT,RRULE,NONE,ZEROPLUS +NONE,XDAYLIGHT,SEQUENCE,NONE,ZERO +NONE,XDAYLIGHT,STATUS,NONE,ZERO +NONE,XDAYLIGHT,SUMMARY,NONE,ZERO +NONE,XDAYLIGHT,TRANSP,NONE,ZERO +NONE,XDAYLIGHT,TRIGGER,NONE,ZERO +NONE,XDAYLIGHT,TZID,NONE,ZERO +NONE,XDAYLIGHT,TZNAME,NONE,ZEROPLUS +NONE,XDAYLIGHT,TZOFFSETFROM,NONE,ONE +NONE,XDAYLIGHT,TZOFFSETTO,NONE,ONE +NONE,XDAYLIGHT,TZURL,NONE,ZERO +NONE,XDAYLIGHT,UID,NONE,ZERO +NONE,XDAYLIGHT,URL,NONE,ZERO +NONE,XDAYLIGHT,VERSION,NONE,ZERO +NONE,XDAYLIGHT,X,NONE,ZEROPLUS +NONE,XAUDIOALARM,ACTION,NONE,ONE +NONE,XAUDIOALARM,ATTACH,NONE,ZEROORONE +NONE,XAUDIOALARM,ATTENDEE,NONE,ZERO +NONE,XAUDIOALARM,CALSCALE,NONE,ZERO +NONE,XAUDIOALARM,CATEGORIES,NONE,ZERO +NONE,XAUDIOALARM,CLASS,NONE,ZERO +NONE,XAUDIOALARM,COMMENT,NONE,ZERO +NONE,XAUDIOALARM,COMPLETED,NONE,ZERO +NONE,XAUDIOALARM,CONTACT,NONE,ZERO +NONE,XAUDIOALARM,CREATED,NONE,ZERO +NONE,XAUDIOALARM,DESCRIPTION,NONE,ZERO +NONE,XAUDIOALARM,DTEND,NONE,ZERO +NONE,XAUDIOALARM,DTSTAMP,NONE,ZERO +NONE,XAUDIOALARM,DTSTART,NONE,ZERO +NONE,XAUDIOALARM,DUE,NONE,ZERO +NONE,XAUDIOALARM,DURATION,NONE,ONEMUTUAL,must_have_repeat +NONE,XAUDIOALARM,REPEAT,NONE,ONEMUTUAL,must_have_duration +NONE,XAUDIOALARM,EXDATE,NONE,ZERO +NONE,XAUDIOALARM,EXRULE,NONE,ZERO +NONE,XAUDIOALARM,FREEBUSY,NONE,ZERO +NONE,XAUDIOALARM,GEO,NONE,ZERO +NONE,XAUDIOALARM,LASTMODIFIED,NONE,ZERO +NONE,XAUDIOALARM,LOCATION,NONE,ZERO +NONE,XAUDIOALARM,METHOD,NONE,ZERO +NONE,XAUDIOALARM,ORGANIZER,NONE,ZERO +NONE,XAUDIOALARM,PERCENTCOMPLETE,NONE,ZERO +NONE,XAUDIOALARM,PRIORITY,NONE,ZERO +NONE,XAUDIOALARM,PRODID,NONE,ZERO +NONE,XAUDIOALARM,RDATE,NONE,ZERO +NONE,XAUDIOALARM,RECURRENCEID,NONE,ZERO +NONE,XAUDIOALARM,RELATEDTO,NONE,ZERO +NONE,XAUDIOALARM,REQUESTSTATUS,NONE,ZERO +NONE,XAUDIOALARM,RESOURCES,NONE,ZERO +NONE,XAUDIOALARM,RRULE,NONE,ZERO +NONE,XAUDIOALARM,SEQUENCE,NONE,ZERO +NONE,XAUDIOALARM,STATUS,NONE,ZERO +NONE,XAUDIOALARM,SUMMARY,NONE,ZERO +NONE,XAUDIOALARM,TRANSP,NONE,ZERO +NONE,XAUDIOALARM,TRIGGER,NONE,ONE +NONE,XAUDIOALARM,TZID,NONE,ZERO +NONE,XAUDIOALARM,TZNAME,NONE,ZERO +NONE,XAUDIOALARM,TZOFFSETFROM,NONE,ZERO +NONE,XAUDIOALARM,TZOFFSETTO,NONE,ZERO +NONE,XAUDIOALARM,TZURL,NONE,ZERO +NONE,XAUDIOALARM,UID,NONE,ZERO +NONE,XAUDIOALARM,URL,NONE,ZERO +NONE,XAUDIOALARM,VERSION,NONE,ZERO +NONE,XAUDIOALARM,X,NONE,ZEROPLUS +NONE,XDISPLAYALARM,ACTION,NONE,ONE +NONE,XDISPLAYALARM,ATTACH,NONE,ZERO +NONE,XDISPLAYALARM,ATTENDEE,NONE,ZERO +NONE,XDISPLAYALARM,CALSCALE,NONE,ZERO +NONE,XDISPLAYALARM,CATEGORIES,NONE,ZERO +NONE,XDISPLAYALARM,CLASS,NONE,ZERO +NONE,XDISPLAYALARM,COMMENT,NONE,ZERO +NONE,XDISPLAYALARM,COMPLETED,NONE,ZERO +NONE,XDISPLAYALARM,CONTACT,NONE,ZERO +NONE,XDISPLAYALARM,CREATED,NONE,ZERO +NONE,XDISPLAYALARM,DESCRIPTION,NONE,ONE +NONE,XDISPLAYALARM,DTEND,NONE,ZERO +NONE,XDISPLAYALARM,DTSTAMP,NONE,ZERO +NONE,XDISPLAYALARM,DTSTART,NONE,ZERO +NONE,XDISPLAYALARM,DUE,NONE,ZERO +NONE,XDISPLAYALARM,DURATION,NONE,ONEMUTUAL,must_have_repeat +NONE,XDISPLAYALARM,REPEAT,NONE,ONEMUTUAL,must_have_duration +NONE,XDISPLAYALARM,EXDATE,NONE,ZERO +NONE,XDISPLAYALARM,EXRULE,NONE,ZERO +NONE,XDISPLAYALARM,FREEBUSY,NONE,ZERO +NONE,XDISPLAYALARM,GEO,NONE,ZERO +NONE,XDISPLAYALARM,LASTMODIFIED,NONE,ZERO +NONE,XDISPLAYALARM,LOCATION,NONE,ZERO +NONE,XDISPLAYALARM,METHOD,NONE,ZERO +NONE,XDISPLAYALARM,ORGANIZER,NONE,ZERO +NONE,XDISPLAYALARM,PERCENTCOMPLETE,NONE,ZERO +NONE,XDISPLAYALARM,PRIORITY,NONE,ZERO +NONE,XDISPLAYALARM,PRODID,NONE,ZERO +NONE,XDISPLAYALARM,RDATE,NONE,ZERO +NONE,XDISPLAYALARM,RECURRENCEID,NONE,ZERO +NONE,XDISPLAYALARM,RELATEDTO,NONE,ZERO +NONE,XDISPLAYALARM,REQUESTSTATUS,NONE,ZERO +NONE,XDISPLAYALARM,RESOURCES,NONE,ZERO +NONE,XDISPLAYALARM,RRULE,NONE,ZERO +NONE,XDISPLAYALARM,SEQUENCE,NONE,ZERO +NONE,XDISPLAYALARM,STATUS,NONE,ZERO +NONE,XDISPLAYALARM,SUMMARY,NONE,ZERO +NONE,XDISPLAYALARM,TRANSP,NONE,ZERO +NONE,XDISPLAYALARM,TRIGGER,NONE,ONE +NONE,XDISPLAYALARM,TZID,NONE,ZERO +NONE,XDISPLAYALARM,TZNAME,NONE,ZERO +NONE,XDISPLAYALARM,TZOFFSETFROM,NONE,ZERO +NONE,XDISPLAYALARM,TZOFFSETTO,NONE,ZERO +NONE,XDISPLAYALARM,TZURL,NONE,ZERO +NONE,XDISPLAYALARM,UID,NONE,ZERO +NONE,XDISPLAYALARM,URL,NONE,ZERO +NONE,XDISPLAYALARM,VERSION,NONE,ZERO +NONE,XDISPLAYALARM,X,NONE,ZEROPLUS +NONE,XEMAILALARM,ACTION,NONE,ONE,must_be_email +NONE,XEMAILALARM,ATTACH,NONE,ZEROPLUS +NONE,XEMAILALARM,ATTENDEE,NONE,ONEPLUS +NONE,XEMAILALARM,CALSCALE,NONE,ZERO +NONE,XEMAILALARM,CATEGORIES,NONE,ZERO +NONE,XEMAILALARM,CLASS,NONE,ZERO +NONE,XEMAILALARM,COMMENT,NONE,ZERO +NONE,XEMAILALARM,COMPLETED,NONE,ZERO +NONE,XEMAILALARM,CONTACT,NONE,ZERO +NONE,XEMAILALARM,CREATED,NONE,ZERO +NONE,XEMAILALARM,DESCRIPTION,NONE,ONE +NONE,XEMAILALARM,DTEND,NONE,ZERO +NONE,XEMAILALARM,DTSTAMP,NONE,ZERO +NONE,XEMAILALARM,DTSTART,NONE,ZERO +NONE,XEMAILALARM,DUE,NONE,ZERO +NONE,XEMAILALARM,DURATION,NONE,ONEMUTUAL,must_have_repeat +NONE,XEMAILALARM,REPEAT,NONE,ONEMUTUAL,must_have_duration +NONE,XEMAILALARM,EXDATE,NONE,ZERO +NONE,XEMAILALARM,EXRULE,NONE,ZERO +NONE,XEMAILALARM,FREEBUSY,NONE,ZERO +NONE,XEMAILALARM,GEO,NONE,ZERO +NONE,XEMAILALARM,LASTMODIFIED,NONE,ZERO +NONE,XEMAILALARM,LOCATION,NONE,ZERO +NONE,XEMAILALARM,METHOD,NONE,ZERO +NONE,XEMAILALARM,ORGANIZER,NONE,ZERO +NONE,XEMAILALARM,PERCENTCOMPLETE,NONE,ZERO +NONE,XEMAILALARM,PRIORITY,NONE,ZERO +NONE,XEMAILALARM,PRODID,NONE,ZERO +NONE,XEMAILALARM,RDATE,NONE,ZERO +NONE,XEMAILALARM,RECURRENCEID,NONE,ZERO +NONE,XEMAILALARM,RELATEDTO,NONE,ZERO +NONE,XEMAILALARM,REQUESTSTATUS,NONE,ZERO +NONE,XEMAILALARM,RESOURCES,NONE,ZERO +NONE,XEMAILALARM,RRULE,NONE,ZERO +NONE,XEMAILALARM,SEQUENCE,NONE,ZERO +NONE,XEMAILALARM,STATUS,NONE,ZERO +NONE,XEMAILALARM,SUMMARY,NONE,ONE +NONE,XEMAILALARM,TRANSP,NONE,ZERO +NONE,XEMAILALARM,TRIGGER,NONE,ONE +NONE,XEMAILALARM,TZID,NONE,ZERO +NONE,XEMAILALARM,TZNAME,NONE,ZERO +NONE,XEMAILALARM,TZOFFSETFROM,NONE,ZERO +NONE,XEMAILALARM,TZOFFSETTO,NONE,ZERO +NONE,XEMAILALARM,TZURL,NONE,ZERO +NONE,XEMAILALARM,UID,NONE,ZERO +NONE,XEMAILALARM,URL,NONE,ZERO +NONE,XEMAILALARM,VERSION,NONE,ZERO +NONE,XEMAILALARM,X,NONE,ZEROPLUS +NONE,XPROCEDUREALARM,ACTION,NONE,ONE +NONE,XPROCEDUREALARM,ATTACH,NONE,ZEROORONE +NONE,XPROCEDUREALARM,ATTENDEE,NONE,ZERO +NONE,XPROCEDUREALARM,CALSCALE,NONE,ZERO +NONE,XPROCEDUREALARM,CATEGORIES,NONE,ZERO +NONE,XPROCEDUREALARM,CLASS,NONE,ZERO +NONE,XPROCEDUREALARM,COMMENT,NONE,ZERO +NONE,XPROCEDUREALARM,COMPLETED,NONE,ZERO +NONE,XPROCEDUREALARM,CONTACT,NONE,ZERO +NONE,XPROCEDUREALARM,CREATED,NONE,ZERO +NONE,XPROCEDUREALARM,DESCRIPTION,NONE,ZEROORONE +NONE,XPROCEDUREALARM,DTEND,NONE,ZERO +NONE,XPROCEDUREALARM,DTSTAMP,NONE,ZERO +NONE,XPROCEDUREALARM,DTSTART,NONE,ZERO +NONE,XPROCEDUREALARM,DUE,NONE,ZERO +NONE,XPROCEDUREALARM,DURATION,NONE,ONEMUTUAL,must_have_repeat +NONE,XPROCEDUREALARM,REPEAT,NONE,ONEMUTUAL,must_have_duration +NONE,XPROCEDUREALARM,EXDATE,NONE,ZERO +NONE,XPROCEDUREALARM,EXRULE,NONE,ZERO +NONE,XPROCEDUREALARM,FREEBUSY,NONE,ZERO +NONE,XPROCEDUREALARM,GEO,NONE,ZERO +NONE,XPROCEDUREALARM,LASTMODIFIED,NONE,ZERO +NONE,XPROCEDUREALARM,LOCATION,NONE,ZERO +NONE,XPROCEDUREALARM,METHOD,NONE,ZERO +NONE,XPROCEDUREALARM,ORGANIZER,NONE,ZERO +NONE,XPROCEDUREALARM,PERCENTCOMPLETE,NONE,ZERO +NONE,XPROCEDUREALARM,PRIORITY,NONE,ZERO +NONE,XPROCEDUREALARM,PRODID,NONE,ZERO +NONE,XPROCEDUREALARM,RDATE,NONE,ZERO +NONE,XPROCEDUREALARM,RECURRENCEID,NONE,ZERO +NONE,XPROCEDUREALARM,RELATEDTO,NONE,ZERO +NONE,XPROCEDUREALARM,REQUESTSTATUS,NONE,ZERO +NONE,XPROCEDUREALARM,RESOURCES,NONE,ZERO +NONE,XPROCEDUREALARM,RRULE,NONE,ZERO +NONE,XPROCEDUREALARM,SEQUENCE,NONE,ZERO +NONE,XPROCEDUREALARM,STATUS,NONE,ZERO +NONE,XPROCEDUREALARM,SUMMARY,NONE,ZERO +NONE,XPROCEDUREALARM,TRANSP,NONE,ZERO +NONE,XPROCEDUREALARM,TRIGGER,NONE,ONE +NONE,XPROCEDUREALARM,TZID,NONE,ZERO +NONE,XPROCEDUREALARM,TZNAME,NONE,ZERO +NONE,XPROCEDUREALARM,TZOFFSETFROM,NONE,ZERO +NONE,XPROCEDUREALARM,TZOFFSETTO,NONE,ZERO +NONE,XPROCEDUREALARM,TZURL,NONE,ZERO +NONE,XPROCEDUREALARM,UID,NONE,ZERO +NONE,XPROCEDUREALARM,URL,NONE,ZERO +NONE,XPROCEDUREALARM,VERSION,NONE,ZERO +NONE,XPROCEDUREALARM,X,NONE,ZEROPLUS +NONE,VQUERY,QUERY,NONE,ZEROORONE +NONE,VQUERY,QUERYNAME,NONE,ONE +NONE,VQUERY,EXPAND,NONE,ONE diff --git a/mozilla/calendar/libical/design-data/status.txt b/mozilla/calendar/libical/design-data/status.txt new file mode 100644 index 00000000000..9e7bbf83a7d --- /dev/null +++ b/mozilla/calendar/libical/design-data/status.txt @@ -0,0 +1,56 @@ +2.0 STATOK Operation was successfully performed. +2.0.1 STARTSENDATA Start ICAL input; end with . +2.0.11 OKDATAFOLLOWS The request was processed successfully. Reply data follows on the next line and terminates with . +2.0.2 REPLYPENDING A timeout has occurred. The server is still working on the reply. Use CONTINUE to continue waiting for the reply or ABORT to terminate the command. +2.0.3 ABORTED The command currently underway was successsfully aborted. +2.0.4 WILLATTEMPT The specified Calendar is not here but an attempt will be made to deliver the request or reply to the Calendar anyway. +2.0.5 TRUSTEDWILLQUEUE The request or reply will be queued and delivered to the target calendar when its iRIP server contacts this server and issues the SWITCH command. +2.0.6 WILLATTEMPT The specified Calendar is not here but an attempt will be made to deliver the request or reply to the Calendar anyway. +2.0.7 QUEUED The message has been queued for delivery. +2.0.8 QUEUEEMPTY There are no more queued messages. +2.1 FALLBACK Success. Fallback taken on one or more property values. +2.2 NOCOMMANDINPROGRESS An ABORT or CONTINUE was received when no command was in progress +2.2 IGPROP Success. Invalid property ignored. +2.3 IGPARAM Success. invalid property parameter ignored. +2.4 IGXPROP Success. Unknown non-standard property ignored. +2.5 IGXPARAM Success. Unknown non standard property value ignored. +2.6 IGCOMP Success. Invalid calendar component ignored. +2.7 FORWARD Success. Request forwarded to Calendar User. +2.8 ONEEVENT Success. Repeating event ignored. Scheduled as a single component. +2.9 TRUNC Success. Truncated end date time to date boundary. +2.10 ONETODO Success. Repeating VTODO ignored. Scheduled as a single VTODO. +2.11 TRUNCRRULE Success. Unbounded RRULE clipped at some finite number of instances +3.0 INVPROPNAME Invalid property name. +3.1 INVPROPVAL Invalid property value. +3.2 INVPARAM Invalid property parameter. +3.3 INVPARAMVAL Invalid property parameter value. +3.4 INVCOMP Invalid calendar component sequence. +3.5 INVTIME Invalid date or time. +3.6 INVRULE Invalid rule. +3.7 INVCU Invalid Calendar User. +3.8 NOAUTH No authority. +3.9 BADVERSION Unsupported version. +3.10 TOOBIG Request entity too large. +3.11 MISSREQCOMP Required component or property missing. +3.12 UNKCOMP Unknown component or property found. +3.13 BADCOMP Unsupported component or property found +3.14 NOCAP Unsupported capability. +4.0 BUSY Event conflict. Date/time is busy. +5.0 MAYBE Request MAY supported. +5.1 UNAVAIL Service unavailable. +5.2 NOSERVICE Invalid calendar service. +5.3 NOSCHED No scheduling support for user. +6.1 AUTHENTICATEFAILURE Unsupported authentication mechanism, credentials rejected +6.2 AUTHENTICATIONABORTED Sender aborted authentication, authentication exchange cancelled +8.0 GENERALFAILURE A failure has occurred in the Receiver that prevents the operation from succeeding. +8.1 SERVERTOOBUSY The iRIP Receiver is too busy. +8.2 ICALOBJECTTOOBIG Object has exceeded the server's size limit. +8.3 DATETOOLARGE A DATETIME value was too far in the future to be represented on this Calendar. +8.4 DATETOOSMALL A DATETIME value was too far in the past to be represented on this Calendar. +9.0 INVALIDIRIPCOMMAND An unrecongnized command was received. +9.1 UNEXPECTEDCOMMAND The command is not allowed for the server's current state. +10.1 REFERRAL Accompanied by an alternate address. +10.2 SERVERSHUTDOWN The server is shutting down. +10.3 SERVERSTOPPING FLOOD 2 +10.4 EXCEEDEDQUOTAS The operation would cause a resource to exceed the allocated quota +10.5 QUEUEDTOOLONG The ITIP message has been queued too long. Delivery has been aborted. diff --git a/mozilla/calendar/libical/design-data/value-types.csv b/mozilla/calendar/libical/design-data/value-types.csv new file mode 100644 index 00000000000..1e6b88b3c54 --- /dev/null +++ b/mozilla/calendar/libical/design-data/value-types.csv @@ -0,0 +1,35 @@ +"#Name","C type& gen flag","Python","Component Values","Enum Values" +"BINARY","(a)const char*","file","unitary", +"BOOLEAN","(a)int","integer","unitary", +"CAL-ADDRESS","(a)const char*","string","unitary", +"DATE","(a)struct icaltimetype","Time","unitary", +"DATE-TIME","(a)struct icaltimetype","Time","unitary", +"DURATION","(a)struct icaldurationtype","Duration","unitary", +"FLOAT","(a)float","float","unitary", +"INTEGER","(a)int","integer","unitary", +"PERIOD","(a)struct icalperiodtype","Period","unitary", +"RECUR","(m)struct icalrecurrencetype","RecurrenceSet","unitary", +"TEXT","(a)const char*","string","unitary", +"URI","(a)const char*","string","unitary", +"UTC-OFFSET","(a)int","integer","unitary", +"QUERY","(a)const char*","string","unitary", +"#Non-standard multi-valued types",,,, +"ATTACH","(m)icalattach *","none","URI;BINARY", +"DATE-TIME-PERIOD","(m)struct icaldatetimeperiodtype","none","DATE-TIME;PERIOD", +"TRIGGER","(m)struct icaltriggertype","string","DURATION;DATE-TIME", +"#Non-standard property enumeration types",,,, +"METHOD","(a)enum icalproperty_method","string","unitary","PUBLISH;REQUEST;REPLY;ADD;CANCEL;REFRESH;COUNTER;DECLINECOUNTER;CREATE;READ;RESPONSE;MOVE;MODIFY;GENERATEUID;DELETE" +"X-LIC-CLASS","(a)enum icalproperty_xlicclass","string","unitary","PUBLISH-NEW;PUBLISH-UPDATE;PUBLISH-FREEBUSY;REQUEST-NEW;REQUEST-UPDATE;REQUEST-RESCHEDULE;REQUEST-DELEGATE;REQUEST-NEW-ORGANIZER;REQUEST-FORWARD;REQUEST-STATUS;REQUEST-FREEBUSY;REPLY-ACCEPT;REPLY-DECLINE;REPLY-DELEGATE;REPLY-CRASHER-ACCEPT;REPLY-CRASHER-DECLINE;ADD-INSTANCE;CANCEL-EVENT;CANCEL-INSTANCE;CANCEL-ALL;REFRESH;COUNTER;DECLINECOUNTER;MALFORMED;OBSOLETE;MISSEQUENCED;UNKNOWN" +"ACTION","(a)enum icalproperty_action","string","unitary","AUDIO;DISPLAY;EMAIL;PROCEDURE" +"STATUS","(a)enum icalproperty_status","string","unitary","TENTATIVE;CONFIRMED;COMPLETED;NEEDS-ACTION;CANCELLED;IN-PROCESS;DRAFT;FINAL" +"TRANSP","(a)enum icalproperty_transp","string","unitary","OPAQUE;OPAQUE-NOCONFLICT;TRANSPARENT;TRANSPARENT-NOCONFLICT" +"CLASS","(a)enum icalproperty_class","string","unitary","PUBLIC;PRIVATE;CONFIDENTIAL" +"#Other non-standard",,,, +"REQUEST-STATUS","(a)struct icalreqstattype","string","unitary" +"GEO","(a)struct icalgeotype","tuple","unitary", +"STRING","(a)const char*","string","unitary", +"X","(m)const char*","string","unitary", +"#CAP enumeration types",,,, +"CMD","(a)enum icalproperty_cmd","string","unitary","ABORT;CONTINUE;CREATE;DELETE;GENERATE-UID;GET-CAPABILITY;IDENTIFY;MODIFY;MOVE;REPLY;SEARCH;SET-LOCALE" +"QUERY-LEVEL","(a)enum icalproperty_querylevel","string","unitary","CAL-QL-1;CAL-QL-NONE" +"CAR-LEVEL","(a)enum icalproperty_carlevel","string","unitary","CAR-NONE;CAR-MIN;CAR-FULL-1" diff --git a/mozilla/calendar/libical/scripts/Makefile.am b/mozilla/calendar/libical/scripts/Makefile.am new file mode 100644 index 00000000000..c61eaefdce3 --- /dev/null +++ b/mozilla/calendar/libical/scripts/Makefile.am @@ -0,0 +1,9 @@ +EXTRA_DIST = \ +mkderivedcomponents.pl \ +mkderivedparameters.pl \ +mkderivedproperties.pl \ +mkderivedvalues.pl \ +mkparameterrestrictions.pl \ +mkrestrictionrecords.pl \ +mkrestrictiontable.pl \ +readvaluesfile.pl diff --git a/mozilla/calendar/libical/scripts/Makefile.in b/mozilla/calendar/libical/scripts/Makefile.in new file mode 100644 index 00000000000..6123a27545d --- /dev/null +++ b/mozilla/calendar/libical/scripts/Makefile.in @@ -0,0 +1,245 @@ +# Makefile.in generated automatically by automake 1.5 from Makefile.am. + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_HEADER = $(INSTALL_DATA) +transform = @program_transform_name@ +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_alias = @build_alias@ +build_triplet = @build@ +host_alias = @host_alias@ +host_triplet = @host@ +target_alias = @target_alias@ +target_triplet = @target@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AWK = @AWK@ +BDB_DIR = @BDB_DIR@ +BDB_DIR_INCLUDE = @BDB_DIR_INCLUDE@ +BDB_DIR_LIB = @BDB_DIR_LIB@ +BDB_LIB = @BDB_LIB@ +BDB_VERSION = @BDB_VERSION@ +CC = @CC@ +CXX = @CXX@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +EXEEXT = @EXEEXT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +JAR = @JAR@ +JAVA = @JAVA@ +JAVAC = @JAVAC@ +JAVAH = @JAVAH@ +JAVA_PLATFORM = @JAVA_PLATFORM@ +LEX = @LEX@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +MAINT = @MAINT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PTHREAD_LIBS = @PTHREAD_LIBS@ +PY_CFLAGS = @PY_CFLAGS@ +PY_EXTRA_LIBS = @PY_EXTRA_LIBS@ +PY_LIBS = @PY_LIBS@ +PY_LIB_LOC = @PY_LIB_LOC@ +RANLIB = @RANLIB@ +RRCAP_CFLAGS = @RRCAP_CFLAGS@ +RRCAP_LIBS = @RRCAP_LIBS@ +VERSION = @VERSION@ +YACC = @YACC@ +am__include = @am__include@ +am__quote = @am__quote@ +install_sh = @install_sh@ +python_val = @python_val@ + +EXTRA_DIST = \ +mkderivedcomponents.pl \ +mkderivedparameters.pl \ +mkderivedproperties.pl \ +mkderivedvalues.pl \ +mkparameterrestrictions.pl \ +mkrestrictionrecords.pl \ +mkrestrictiontable.pl \ +readvaluesfile.pl + +subdir = scripts +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +DIST_COMMON = Makefile.am Makefile.in +all: all-am + +.SUFFIXES: + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu scripts/Makefile +Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && \ + CONFIG_HEADERS= CONFIG_LINKS= \ + CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status +uninstall-info-am: +tags: TAGS +TAGS: + + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + if test -f $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + $(mkinstalldirs) "$(distdir)/$$dir"; \ + fi; \ + if test -d $$d/$$file; then \ + cp -pR $$d/$$file $(distdir) \ + || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile + +installdirs: + +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +uninstall-am: uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool uninstall uninstall-am uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/mozilla/calendar/libical/scripts/mkderivedcomponents.pl b/mozilla/calendar/libical/scripts/mkderivedcomponents.pl new file mode 100755 index 00000000000..31743c3ba37 --- /dev/null +++ b/mozilla/calendar/libical/scripts/mkderivedcomponents.pl @@ -0,0 +1,170 @@ +#!/usr/bin/env perl + +use Getopt::Std; +getopts('chspi:'); + + +# ARG 0 is components.txt +open(PV,"$ARGV[0]") || die "Can't open components file $ARGV[0]:$!"; + +my @components; + +while (){ + + s/#.*//; + + chop; + + push(@components,$_); + +} + +close PV; + +# Write the file inline by copying everything before a demarcation +# line, and putting the generated data after the demarcation + +if ($opt_i) { + + open(IN,$opt_i) || die "Can't open input file \"$opt_i\""; + + while(){ + + if (/Do not edit/){ + last; + } + + print; + + } + + if($opt_i){ + print "# Everything below this line is machine generated. Do not edit. \n"; + } else { + print "/* Everything below this line is machine generated. Do not edit. */\n"; + } + +} + +if ($opt_c or $opt_h and !$opt_i){ + +print < /* for va_arg functions */ + +EOM + +} + +if ($opt_p and !$opt_i){ + +print <1,RANGE=>1,RSVP=>1,XLICERRORTYPE=>1,XLICCOMPARETYPE=>1); + +%params = read_parameters_file($ARGV[0]); + + +# Write the file inline by copying everything before a demarcation +# line, and putting the generated data after the demarcation + +if ($opt_i) { + + open(IN,$opt_i) || die "Can't open input file $opt_i"; + + while(){ + if (//){ + insert_code(); + } else { + print; + } + + } + + if($opt_p){ + print "# Everything below this line is machine generated. Do not edit. \n"; + } else { + print "/* Everything below this line is machine generated. Do not edit. */\n"; + } + +} + +sub insert_code +{ + +# Write parameter enumerations and datatypes + +if($opt_h){ + print "typedef enum icalparameter_kind {\n ICAL_ANY_PARAMETER = 0,\n"; + foreach $param (sort keys %params) { + + next if !$param; + + next if $param eq 'NO' or $param eq 'ANY'; + + my $uc = join("",map {uc($_);} split(/-/,$param)); + + my @enums = @{$params{$param}->{'enums'}}; + + print " ICAL_${uc}_PARAMETER, \n"; + + } + print " ICAL_NO_PARAMETER\n} icalparameter_kind;\n\n"; + + # Now create enumerations for parameter values + $idx = 20000; + + print "#define ICALPARAMETER_FIRST_ENUM $idx\n\n"; + + foreach $param (sort keys %params) { + + next if !$param; + + next if $param eq 'NO' or $prop eq 'ANY'; + + my $type = $params{$param}->{"C"}; + my $ucv = join("",map {uc(lc($_));} split(/-/,$param)); + my @enums = @{$params{$param}->{'enums'}}; + + if(@enums){ + + print "typedef enum $type {\n"; + my $first = 1; + + unshift(@enums,"X"); + + push(@enums,"NONE"); + + foreach $e (@enums) { + if (!$first){ + print ",\n"; + } else { + $first = 0; + } + + my $uce = join("",map {uc(lc($_));} split(/-/,$e)); + + print " ICAL_${ucv}_${uce} = $idx"; + + $idx++; + } + $c_type =~ s/enum //; + + print "\n} $type;\n\n"; + } + } + + print "#define ICALPARAMETER_LAST_ENUM $idx\n\n"; + +} + +if ($opt_c){ + + + # Create the icalparameter_value to icalvalue_kind conversion table + my $count = 0; + my $out; + + foreach $enum (@{$params{'VALUE'}->{'enums'}}){ + next if $enum eq 'NO' or $enum eq 'ERROR'; + $uc = join("",map {uc(lc($_));} split(/-/,$enum)); + $out.=" {ICAL_VALUE_${uc},ICAL_${uc}_VALUE},\n"; + $count++; + } + + $count+=2; + print "static struct icalparameter_value_kind_map value_kind_map[$count] = {\n"; + print $out; + print " {ICAL_VALUE_X,ICAL_X_VALUE},\n"; + print " {ICAL_VALUE_NONE,ICAL_NO_VALUE}\n};\n\n"; + + #Create the parameter Name map + + $out=""; + $count=0; + foreach $param (sort keys %params) { + + next if !$param; + + next if $param eq 'NO' or $prop eq 'ANY'; + + my $lc = join("",map {lc($_);} split(/-/,$param)); + my $uc = join("",map {uc(lc($_));} split(/-/,$param)); + + $count++; + $out.=" {ICAL_${uc}_PARAMETER,\"$param\"},\n"; + + } + $count+=1; + print "static struct icalparameter_kind_map parameter_map[$count] = { \n"; + print $out; + print " { ICAL_NO_PARAMETER, \"\"}\n};\n\n"; + + # Create the parameter value map + $out =""; + $count=0; + foreach $param (sort keys %params) { + + next if !$param; + + next if $param eq 'NO' or $prop eq 'ANY'; + + my $type = $params{$param}->{"C"}; + my $uc = join("",map {uc(lc($_));} split(/-/,$param)); + my @enums = @{$params{$param}->{'enums'}}; + + if(@enums){ + + foreach $e (@enums){ + my $uce = join("",map {uc(lc($_));} split(/-/,$e)); + + $count++; + $out.=" {ICAL_${uc}_PARAMETER,ICAL_${uc}_${uce},\"$e\"},\n"; + } + + } + } + + $count+=3; + print "static struct icalparameter_map icalparameter_map[] = {\n"; + print "{ICAL_ANY_PARAMETER,0,\"\"},\n"; + print $out; + print " {ICAL_NO_PARAMETER,0,\"\"}};\n\n"; + +} + +foreach $param (keys %params){ + + my $type = $params{$param}->{'C'}; + + my $ucf = join("",map {ucfirst(lc($_));} split(/-/,$param)); + + my $lc = lc($ucf); + my $uc = uc($lc); + + my $charorenum; + my $set_code; + my $pointer_check; + my $pointer_check_v; + my $xrange; + + if ($type=~/char/ ) { + + $charorenum = " icalerror_check_arg_rz( (param!=0), \"param\");\n return param->string;"; + + $set_code = "((struct icalparameter_impl*)param)->string = icalmemory_strdup(v);"; + + $pointer_check = "icalerror_check_arg_rz( (v!=0),\"v\");"; + $pointer_check_v = "icalerror_check_arg_rv( (v!=0),\"v\");"; + + } else { + + $xrange =" if (param->string != 0){\n return ICAL_${uc}_X;\n }\n" if !exists $no_xname{$uc}; + + $charorenum= "icalerror_check_arg( (param!=0), \"param\");\n$xrange\nreturn ($type)(param->data);"; + + $pointer_check = "icalerror_check_arg_rz(v >= ICAL_${uc}_X,\"v\");\n icalerror_check_arg_rz(v < ICAL_${uc}_NONE,\"v\");"; + + $pointer_check_v = "icalerror_check_arg_rv(v >= ICAL_${uc}_X,\"v\");\n icalerror_check_arg_rv(v < ICAL_${uc}_NONE,\"v\");"; + + $set_code = "((struct icalparameter_impl*)param)->data = (int)v;"; + + } + + + + if ($opt_c) { + + print <[0] = \$p; + + return \$self; +} + +sub get +{ + my \$self = shift; + my \$impl = \$self->_impl(); + + return Net::ICal::icalparameter_as_ical_string(\$impl); + +} + +sub set +{ + # This is hard to implement, so I've punted for now. + die "Set is not implemented"; +} + +EOM + +} + +} + +if ($opt_h){ + +print <){ + + if (//){ + insert_code(); + } else { + print; + } + + } + +} + +sub fudge_data { + my $prop = shift; + + my $value = $propmap{$prop}->{'lic_value'}; + + if (!$value){ + die "Can't find value for property \"$prop\"\n"; + } + my $ucf = join("",map {ucfirst(lc($_));} split(/-/,$prop)); + my $lc = lc($ucf); + my $uc = uc($lc); + + my $ucfvalue = join("",map {ucfirst(lc($_));} split(/-/,$value)); + my $lcvalue = lc($ucfvalue); + my $ucvalue = uc($lcvalue); + + my $type = $valuemap{$value}->{C}->[1]; + + return ($uc,$lc,$lcvalue,$ucvalue,$type); + +} + +sub insert_code { + +# Create the property map data +if($opt_c){ + + + my @props = sort keys %propmap; + my $count = scalar(@props); + + + print "static struct icalproperty_map property_map[$count] = {\n"; + + foreach $prop (@props) { + + next if !$prop; + + next if $prop eq 'NO'; + + my ($uc,$lc,$lcvalue,$ucvalue,$type) = fudge_data($prop); + + print "{ICAL_${uc}_PROPERTY,\"$prop\",ICAL_${ucvalue}_VALUE},\n"; + + } + + $prop = "NO"; + + my ($uc,$lc,$lcvalue,$ucvalue,$type) = fudge_data($prop); + + print "{ICAL_${uc}_PROPERTY,\"\",ICAL_NO_VALUE}};\n\n"; + + $idx = 10000; + $count = 1; + my $out = ""; + + foreach $value (sort keys %valuemap) { + + next if !$value; + next if $value eq 'NO' or $prop eq 'ANY'; + + my $ucv = join("",map {uc(lc($_));} split(/-/,$value)); + my @enums = @{$valuemap{$value}->{'enums'}}; + + if(@enums){ + + my ($c_autogen,$c_type) = @{$valuemap{$value}->{'C'}}; + + unshift(@enums,"X"); + push(@enums,"NONE"); + + foreach $e (@enums) { + + my $uce = join("",map {uc(lc($_));} split(/-/,$e)); + + if($e ne "X" and $e ne "NONE"){ + $str = $e; + } else { + $str = ""; + } + + $out.=" {ICAL_${ucv}_PROPERTY,ICAL_${ucv}_${uce},\"$str\" }, /*$idx*/\n"; + + $idx++; + $count++; + } + + } + } + + $count++; + print "static struct icalproperty_enum_map enum_map[$count] = {\n"; + print $out; + print " {ICAL_NO_PROPERTY,0,\"\"}\n};\n\n"; + + + +} + + +if($opt_h){ + + # Create the property enumerations list + print "typedef enum icalproperty_kind {\n ICAL_ANY_PROPERTY = 0,\n"; + foreach $prop (sort keys %propmap) { + + next if !$prop; + + next if $prop eq 'NO' or $prop eq 'ANY'; + + my ($uc,$lc,$lcvalue,$ucvalue,$type) = fudge_data($prop); + + print " ICAL_${uc}_PROPERTY, \n"; + + } + print " ICAL_NO_PROPERTY\n} icalproperty_kind;\n\n"; + + +} + + +foreach $prop (sort keys %propmap) { + + next if !$prop; + + next if $prop eq 'NO' or $prop eq 'ANY'; + + my ($uc,$lc,$lcvalue,$ucvalue,$type) = fudge_data($prop); + + + my $pointer_check; + if ($type =~ /\*/){ + $pointer_check = "icalerror_check_arg_rz( (v!=0),\"v\");\n" if $type =~ /\*/; + } elsif ( $type eq "void" ){ + $pointer_check = "icalerror_check_arg_rv( (v!=0),\"v\");\n" if $type =~ /\*/; + + } + + my $set_pointer_check = "icalerror_check_arg_rv( (v!=0),\"v\");\n" if $type =~ /\*/; + + if($opt_c) { # Generate C source + + if ($include_vanew) { + print< generate c code file + # h-> generate header file + + # Open with value-types.txt + +my %h = read_values_file($ARGV[0]); + + + # Write the file inline by copying everything before a demarcation + # line, and putting the generated data after the demarcation + +if ($opt_i) { + + open(IN,$opt_i) || die "Can't open input file $opt_i"; + + while(){ + if (//){ + insert_code(); + } else { + print; + } + + + } +} + +sub insert_code +{ + # Map type names to the value in the icalvalue_impl data union */ + +%union_map = ( + BOOLEAN => 'int', + CALADDRESS=>'string', + DATE=>'time', + DATETIME=>'time', + DATETIMEDATE=>'time', + DATETIMEPERIOD=>'period', + DURATION=>'duration', + INTEGER=>'int', + TEXT=>'string', + URI=>'string', + UTCOFFSET=>'int', + QUERY=>'string', + BINARY=>'string', + X=>'string' + ); + + +if($opt_h){ + + # First print out the value enumerations + $idx = 5000; + print "typedef enum icalvalue_kind {\n"; + print " ICAL_ANY_VALUE=$idx,\n"; + + foreach $value (keys %h) { + + $idx++; + my $ucv = join("",map {uc(lc($_));} split(/-/,$value)); + + next if $value eq "NO"; + + print " ICAL_${ucv}_VALUE=$idx,\n"; + } + + $idx++; + print " ICAL_NO_VALUE=$idx\n} icalvalue_kind ;\n\n"; + + # Now create enumerations for property values + $idx = 10000; + + print "#define ICALPROPERTY_FIRST_ENUM $idx\n\n"; + + foreach $value (sort keys %h) { + + next if !$value; + + next if $value eq 'NO' or $prop eq 'ANY'; + + my $ucv = join("",map {uc(lc($_));} split(/-/,$value)); + my @enums = @{$h{$value}->{'enums'}}; + + if(@enums){ + + my ($c_autogen,$c_type) = @{$h{$value}->{'C'}}; + print "typedef $c_type {\n"; + my $first = 1; + + unshift(@enums,"X"); + + push(@enums,"NONE"); + + foreach $e (@enums) { + if (!$first){ + print ",\n"; + } else { + $first = 0; + } + + my $uce = join("",map {uc(lc($_));} split(/-/,$e)); + + print " ICAL_${ucv}_${uce} = $idx"; + + $idx++; + } + + $c_type =~ s/enum //; + + print "\n} $c_type;\n\n"; + } + } + + print "#define ICALPROPERTY_LAST_ENUM $idx\n\n"; + +} + + +if($opt_c){ + + # print out the value to string map + + my $count = scalar(keys %h) + 1; + print "static struct icalvalue_kind_map value_map[$count]={\n"; + + foreach $value (keys %h) { + + $idx++; + my $ucv = join("",map {uc(lc($_));} split(/-/,$value)); + + next if $value eq "NO"; + + print " {ICAL_${ucv}_VALUE,\"$value\"},\n"; + } + + + print " {ICAL_NO_VALUE,\"\"}\n};"; + +} + + +foreach $value (keys %h) { + + my $autogen = $h{$value}->{C}->[0]; + my $type = $h{$value}->{C}->[1]; + + my $ucf = join("",map {ucfirst(lc($_));} split(/-/,$value)); + + my $lc = lc($ucf); + my $uc = uc($lc); + + my $pointer_check = "icalerror_check_arg_rz( (v!=0),\"v\");\n" if $type =~ /\*/; + my $pointer_check_rv = "icalerror_check_arg_rv( (v!=0),\"v\");\n" if $type =~ /\*/; + + my $assign; + + if ($type =~ /char/){ + $assign = "icalmemory_strdup(v);\n\n if (impl->data.v_string == 0){\n errno = ENOMEM;\n }\n"; + } else { + $assign = "v;"; + } + + my $union_data; + + if(@{$h{$value}->{'enums'}}){ + $union_data = 'enum'; + + } elsif (exists $union_map{$uc} ){ + $union_data=$union_map{$uc}; + } else { + $union_data = $lc; + } + + if ($opt_c && $autogen) { + + print "\n\n\ +icalvalue* icalvalue_new_${lc} ($type v){\ + struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_${uc}_VALUE);\ + $pointer_check\ + icalvalue_set_${lc}((icalvalue*)impl,v);\ + return (icalvalue*)impl;\ +}\ +void icalvalue_set_${lc}(icalvalue* value, $type v) {\ + struct icalvalue_impl* impl; \ + icalerror_check_arg_rv( (value!=0),\"value\");\ + $pointer_check_rv\ + icalerror_check_value_type(value, ICAL_${uc}_VALUE);\ + impl = (struct icalvalue_impl*)value;\n"; + + if( $union_data eq 'string') { + + print " if(impl->data.v_${union_data}!=0) {free((void*)impl->data.v_${union_data});}\n"; + } + + + print "\n\ + impl->data.v_$union_data = $assign \n\ + icalvalue_reset_kind(impl);\n}\n"; + + print "$type icalvalue_get_${lc}(const icalvalue* value) {\n"; + if( $type =~ /^(int|const char\s?[*])$/) { + print " icalerror_check_arg_rz( (value!=0),\"value\");\n"; + } else { + print " icalerror_check_arg( (value!=0),\"value\");\n"; + } + print " icalerror_check_value_type(value, ICAL_${uc}_VALUE);\ + return ((struct icalvalue_impl*)value)->data.v_${union_data};\n}\n"; + + + } elsif($opt_h && $autogen) { + + print "\n /* $value */ \ +icalvalue* icalvalue_new_${lc}($type v); \ +$type icalvalue_get_${lc}(const icalvalue* value); \ +void icalvalue_set_${lc}(icalvalue* value, ${type} v);\n\n"; + + } + +} + + +if ($opt_h){ + print "#endif /*ICALVALUE_H*/\n"; + } + + +} diff --git a/mozilla/calendar/libical/scripts/mkinclude.sh b/mozilla/calendar/libical/scripts/mkinclude.sh new file mode 100644 index 00000000000..a77c8d74a83 --- /dev/null +++ b/mozilla/calendar/libical/scripts/mkinclude.sh @@ -0,0 +1,39 @@ +#!/bin/sh + +# +# Given a list of headers, combine them into one, excluding certain lines +# +OUTFILE="/dev/stdout" +COMBINEDHEADERS="" +EXCLUDES="" + +while [ $# -gt 0 ] +do + case $1 in + -o) OUTFILE=$2; shift;; + -e) EXCLUDES="$EXCLUDES $2"; shift;; + *) COMBINEDHEADERS="$COMBINEDHEADERS $1"; + esac + shift +done + +echo '#ifdef __cplusplus' > $OUTFILE +echo 'extern "C" {' >> $OUTFILE +echo '#endif' >> $OUTFILE +echo '/*' >> $OUTFILE +echo " \$Id\$" >> $OUTFILE +echo '*/' >> $OUTFILE +cat $COMBINEDHEADERS >> file.temp1 +for exclude in $EXCLUDES +do + cp file.temp1 file.temp2 + egrep -v "$exclude" file.temp2 > file.temp1 +done +cat file.temp1 >> $OUTFILE +rm -f file.temp1 +rm -f file.temp2 +echo '#ifdef __cplusplus' >> $OUTFILE +echo '};' >> $OUTFILE +echo '#endif' >> $OUTFILE + + diff --git a/mozilla/calendar/libical/scripts/mkneticali.pl b/mozilla/calendar/libical/scripts/mkneticali.pl new file mode 100755 index 00000000000..937de49908f --- /dev/null +++ b/mozilla/calendar/libical/scripts/mkneticali.pl @@ -0,0 +1,99 @@ +#!/usr/local/bin/perl + +$pr = 1; +$ignore = 0; + + +print< /* for size_t */ +#include + +%} + +EOM + +foreach $f (@ARGV) +{ + @f = split(/\//,$f); + $fn = pop(@f); + + $fn=~/pvl/ && next; + $fn=~/sspm/ && next; + $fn=~/cstp/ && next; + $fn=~/csdb/ && next; + $fn=~/vcal/ && next; + $fn=~/yacc/ && next; + $fn=~/lex/ && next; + + print "\n/**********************************************************************\n"; + + print "\t$fn\n"; + print "**********************************************************************/\n\n"; + + + open F, $f; + + while(){ + + s/^#.*//; + + s/\/\*.*\*\///; + + /^\/\// && next; + + next if /^$/; + + if(/\/\*/){ $pr = 0;} + + /icalparser_parse\(/ and $ignore = 1; + /vanew/ and $ignore = 1; + /_stub/ and $ignore = 1; + /_response/ and $ignore = 1; + /line_gen_func/ and $ignore = 1; + /extern/ and $ignore = 1; + /sspm/ and $ignore = 1; + /icalrecur/ and $ignore = 1; + + if ($pr == 1 && $ignore == 0){ + print ; + } + + + if(/\*\//){ $pr = 1;} + + if (/\;/){ $ignore = 0; } + + } + +} + + diff --git a/mozilla/calendar/libical/scripts/mkparameterrestrictions.pl b/mozilla/calendar/libical/scripts/mkparameterrestrictions.pl new file mode 100755 index 00000000000..2c57eb4ca54 --- /dev/null +++ b/mozilla/calendar/libical/scripts/mkparameterrestrictions.pl @@ -0,0 +1,85 @@ +#!/usr/bin/perl + +# Version: 1.0 +# Script last updated: 30May1999 GMD +# Change log: +# + + +# usually open params-in-prop.txt +open(F,"$ARGV[0]") || die "Can't open restriction file $ARGV[0]:$!"; + +print <) +{ + chop; + + # split line by whitespace + my @v = split(/\s+/,$_); + # property is first item on line + my $prop = shift @v; + my $prop_name = $prop; + if (substr($prop,0,1) eq "X") { $prop = "X"; } + $prop = join("",split(/-/,$prop)); + +print < + +# usually open restrictions.csv +open(F,"$ARGV[0]") || die "Can't open restriction file $ARGV[0]:$!"; + +print <) +{ + chop; + + # split line at commas + my ($method,$component,$property,$subcomponent,$restriction)=split(/\,/,$_); + + # + #put in code to generate comments here! + # + if ($method ne $last_method) + { + $need_header = 1; + $last_method = $method; + } + if ($component ne $last_component) + { + $need_header = 1; + $last_component = $component; + } + + if ($need_header) + { + print "\n\t/* METHOD: ${method}, COMPONENT: ${component} */\n"; + $need_header = 0; + } + + foreach $item ($component,$property,$subcomponent,$restriction) + { + # handle special cases. + if ($item eq "NONE") + { $item = "NO"; } + else { if (substr($item,0,1) eq "X") + { $item = "X"; }} + + # strip out dashes + $item = join("",split(/-/,$item)); + } + # strip leading V from component names + $component =~ s/^(V?)(\w+?)((SAVINGS)?)((TIME)?)$/$2/; + $subcomponent =~ s/^V(\w+)/$1/; + + print "\t\{ICAL_METHOD_${method},ICAL_${component}_COMPONENT,"; + print "ICAL_${property}_PROPERTY,ICAL_${subcomponent}_COMPONENT,"; + print "ICAL_RESTRICTION_${restriction}\},\n"; + +} + +print <){ + + if (/Do not edit/){ + last; + } + + print; + + } + + print "/* Everything below this line is machine generated. Do not edit. */\n"; + + + close IN; +} + +# First build the property restriction table +print "icalrestriction_property_record icalrestriction_property_records[] = {\n"; + +while() +{ + + chop; + + s/\#.*$//; + + my($method,$targetcomp,$prop,$subcomp,$restr,$sub) = split(/,/,$_); + + next if !$method; + + if(!$sub) { + $sub = "0"; + } else { + $sub = "icalrestriction_".$sub; + } + + if($prop ne "NONE"){ + print(" \{ICAL_METHOD_${method},ICAL_${targetcomp}_COMPONENT,ICAL_${prop}_PROPERTY,ICAL_RESTRICTION_${restr},$sub},\n"); + } + +} + + +# Print the terminating line +print " {ICAL_METHOD_NONE,ICAL_NO_COMPONENT,ICAL_NO_PROPERTY,ICAL_RESTRICTION_NONE}\n"; + +print "};\n"; + +print "icalrestriction_component_record icalrestriction_component_records[] = {\n"; + + +# Go back through the entire file and build the component restriction table +close(F); +open(F,"$ARGV[0]") || die "Can't open restriction data file $ARGV[0]:$!"; + +while() +{ + + chop; + + s/\#.*$//; + + my($method,$targetcomp,$prop,$subcomp,$restr,$sub) = split(/,/,$_); + + next if !$method; + + if(!$sub) { + $sub = "0"; + } else { + $sub = "icalrestriction_".$sub; + } + + + if($subcomp ne "NONE"){ + print(" \{ICAL_METHOD_${method},ICAL_${targetcomp}_COMPONENT,ICAL_${subcomp}_COMPONENT,ICAL_RESTRICTION_${restr},$sub\},\n"); + } + +} + +# print the terminating line +print " {ICAL_METHOD_NONE,ICAL_NO_COMPONENT,ICAL_NO_COMPONENT,ICAL_RESTRICTION_NONE}\n"; +print "};\n"; diff --git a/mozilla/calendar/libical/scripts/readvaluesfile.pl b/mozilla/calendar/libical/scripts/readvaluesfile.pl new file mode 100644 index 00000000000..cb40db84ff3 --- /dev/null +++ b/mozilla/calendar/libical/scripts/readvaluesfile.pl @@ -0,0 +1,133 @@ + + +sub read_values_file { + + my $path = shift; + my %h; + + open(F,$path) || die "Can't open values file $path"; + + while(){ + + chop; + + s/#.*$//g; + s/\"//g; + s/\r//g; + + next if ! $_; + + @column = split(/,/,$_); + + my $value_name = $column[0]; + + my $c_type_str = $column[1]; + my $c_autogen = ($c_type_str =~ /\(a\)/); + + my $c_type = $c_type_str; + $c_type =~ s/\(.\)//; + + my $python_type = $column[2]; + my $components = $column[3]; + my $enum_values = $column[4]; + + my @components; + if($components ne "unitary"){ + @components = split(/;/,$components); + } else { + @components = (); + } + + my @enums; + if($enum_values) { + @enums = split(/;/,$enum_values); + + } else { + @enums = (); + } + + $h{$value_name} = { C => [$c_autogen,$c_type], + perl => $perl_type, + python => $python_type, + components=>[@components], + enums=>[@enums] + }; + } + + return %h; +} + +sub read_properties_file { + + my $path = shift; + my %h; + + open(F,$path) || die "Can't open properties file $path"; + + while(){ + + chop; + + s/#.*$//g; + s/\"//g; + s/\r//g; + + next if ! $_; + + @column = split(/,/,$_); + + my $property_name = $column[0]; + + my $lic_value = $column[1]; + my $default_value = $column[2]; + + $h{$property_name} = { lic_value => $lic_value, + default_value => $default_value + }; + } + + return %h; +} + +sub read_parameters_file { + + my $path = shift; + my %h; + + open(F,$path) || die "Can't open parameters file $path"; + + while(){ + + chop; + + s/#.*$//g; + s/\"//g; + s/\r//g; + + next if ! $_; + + @column = split(/\,/,$_); + + my $parameter_name = $column[0]; + + my $data_type = $column[1]; + my $enum_string = $column[2]; + + my @enums; + if($enum_string){ + @enums = split(/;/,$enum_string); + } + + $h{$parameter_name} = { C => $data_type, + enums => [@enums] + }; + } + + close(F); + + return %h; +} + + + +1; diff --git a/mozilla/calendar/libical/src/Makefile.am b/mozilla/calendar/libical/src/Makefile.am new file mode 100644 index 00000000000..5e5cd331dbc --- /dev/null +++ b/mozilla/calendar/libical/src/Makefile.am @@ -0,0 +1,19 @@ +if WITH_PYTHON +PYTHON_DIR = python +else +PYTHON_DIR = +endif + +if WITH_JAVA +JAVA_DIR = java +else +JAVA_DIR = +endif + +if WITH_CAP +LIBICALCAP_DIR = libicalcap +else +LIBICALCAP_DIR = +endif + +SUBDIRS = libical libicalss $(LIBICALCAP_DIR) libicalvcal $(PYTHON_DIR) $(JAVA_DIR) test diff --git a/mozilla/calendar/libical/src/Makefile.in b/mozilla/calendar/libical/src/Makefile.in new file mode 100644 index 00000000000..d59085f72f5 --- /dev/null +++ b/mozilla/calendar/libical/src/Makefile.in @@ -0,0 +1,362 @@ +# Makefile.in generated automatically by automake 1.5 from Makefile.am. + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_HEADER = $(INSTALL_DATA) +transform = @program_transform_name@ +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_alias = @build_alias@ +build_triplet = @build@ +host_alias = @host_alias@ +host_triplet = @host@ +target_alias = @target_alias@ +target_triplet = @target@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AWK = @AWK@ +BDB_DIR = @BDB_DIR@ +BDB_DIR_INCLUDE = @BDB_DIR_INCLUDE@ +BDB_DIR_LIB = @BDB_DIR_LIB@ +BDB_LIB = @BDB_LIB@ +BDB_VERSION = @BDB_VERSION@ +CC = @CC@ +CXX = @CXX@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +EXEEXT = @EXEEXT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +JAR = @JAR@ +JAVA = @JAVA@ +JAVAC = @JAVAC@ +JAVAH = @JAVAH@ +JAVA_PLATFORM = @JAVA_PLATFORM@ +LEX = @LEX@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +MAINT = @MAINT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PTHREAD_LIBS = @PTHREAD_LIBS@ +PY_CFLAGS = @PY_CFLAGS@ +PY_EXTRA_LIBS = @PY_EXTRA_LIBS@ +PY_LIBS = @PY_LIBS@ +PY_LIB_LOC = @PY_LIB_LOC@ +RANLIB = @RANLIB@ +RRCAP_CFLAGS = @RRCAP_CFLAGS@ +RRCAP_LIBS = @RRCAP_LIBS@ +VERSION = @VERSION@ +YACC = @YACC@ +am__include = @am__include@ +am__quote = @am__quote@ +install_sh = @install_sh@ +python_val = @python_val@ + +@WITH_PYTHON_TRUE@PYTHON_DIR = python +@WITH_PYTHON_FALSE@PYTHON_DIR = + +@WITH_JAVA_TRUE@JAVA_DIR = java +@WITH_JAVA_FALSE@JAVA_DIR = + +@WITH_CAP_TRUE@LIBICALCAP_DIR = libicalcap +@WITH_CAP_FALSE@LIBICALCAP_DIR = + +SUBDIRS = libical libicalss $(LIBICALCAP_DIR) libicalvcal $(PYTHON_DIR) $(JAVA_DIR) test +subdir = src +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = + +RECURSIVE_TARGETS = info-recursive dvi-recursive install-info-recursive \ + uninstall-info-recursive all-recursive install-data-recursive \ + install-exec-recursive installdirs-recursive install-recursive \ + uninstall-recursive check-recursive installcheck-recursive +DIST_COMMON = Makefile.am Makefile.in +DIST_SUBDIRS = libical libicalss libicalcap libicalvcal python java test +all: all-recursive + +.SUFFIXES: + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/Makefile +Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && \ + CONFIG_HEADERS= CONFIG_LINKS= \ + CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique $(LISP) + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ + || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + +GTAGS: + here=`CDPATH=: && cd $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + if test -f $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + $(mkinstalldirs) "$(distdir)/$$dir"; \ + fi; \ + if test -d $$d/$$file; then \ + cp -pR $$d/$$file $(distdir) \ + || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + for subdir in $(DIST_SUBDIRS); do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" \ + distdir=../$(distdir)/$$subdir \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: + +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +uninstall-am: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) GTAGS all all-am check check-am clean \ + clean-generic clean-libtool clean-recursive distclean \ + distclean-generic distclean-libtool distclean-recursive \ + distclean-tags distdir dvi dvi-am dvi-recursive info info-am \ + info-recursive install install-am install-data install-data-am \ + install-data-recursive install-exec install-exec-am \ + install-exec-recursive install-info install-info-am \ + install-info-recursive install-man install-recursive \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am installdirs-recursive maintainer-clean \ + maintainer-clean-generic maintainer-clean-recursive mostlyclean \ + mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \ + tags tags-recursive uninstall uninstall-am uninstall-info-am \ + uninstall-info-recursive uninstall-recursive + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/mozilla/calendar/libical/src/libical/Makefile.am b/mozilla/calendar/libical/src/libical/Makefile.am new file mode 100644 index 00000000000..bd81698d310 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/Makefile.am @@ -0,0 +1,284 @@ +#====================================================================== +# FILE: Makefile.am +# CREATOR: eric +# +# $Id: Makefile.am,v 1.35 2002/11/05 14:59:21 acampi Exp $ +# +# +# (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of either: +# +# The LGPL as published by the Free Software Foundation, version +# 2.1, available at: http://www.fsf.org/copyleft/lesser.html +# +# Or: +# +# The Mozilla Public License Version 1.0. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# +# +#====================================================================== + + +DESIGNDATA = $(top_srcdir)/design-data +ICALSCRIPTS = $(top_srcdir)/scripts + +if WITH_CXX +cxx_lib=libical_cxx.la +cxx_headers=vcomponent.h icalparameter_cxx.h icalproperty_cxx.h icalvalue_cxx.h icptrholder.h +else +cxx_lib= +cxx_headers= +endif + +lib_LTLIBRARIES = libical.la $(cxx_lib) + +noinst_LTLIBRARIES = libical-static.la +libical_static_la_SOURCES = $(libical_la_SOURCES) +libical_static_la_LDFLAGS = --all-static + +CPPFLAGS = -DPACKAGE_DATA_DIR=\""$(datadir)/$(PACKAGE)"\" + +# CFLAGS = -g + +all: ical.h + +INCLUDES = \ + -I$(top_builddir) \ + -I$(top_srcdir)/src \ + -I$(top_builddir)/src \ + -I$(srcdir) + +libical_la_LDFLAGS = -version-info 0:0:0 + + +libical_la_SOURCES = \ + $(BUILT_SOURCES) \ + icalarray.c \ + icalarray.h \ + icalattach.h \ + icalattachimpl.h \ + icalattach.c \ + icalcomponent.c \ + icalcomponent.h \ + icalenums.c \ + icalenums.h \ + icalerror.c \ + icalerror.h \ + icalmemory.c \ + icalmemory.h \ + icalmime.c \ + icalmime.h \ + icalparameter.c \ + icalparameter.h \ + icalparameterimpl.h \ + icalparser.c \ + icalparser.h \ + icalproperty.c \ + icalproperty.h \ + icalrecur.c \ + icalrecur.h \ + icalrestriction.h \ + icaltime.c \ + icaltime.h \ + icaltimezone.c \ + icaltimezone.h \ + icalduration.h \ + icalduration.c \ + icalperiod.h \ + icalperiod.c \ + icaltypes.c \ + icaltypes.h \ + icalvalue.c \ + icalvalue.h \ + icalvalueimpl.h \ + pvl.c \ + pvl.h \ + sspm.c \ + sspm.h \ + vsnprintf.c \ + icallangbind.h \ + icallangbind.c \ + caldate.c \ + astime.h + +if WITH_CXX +libical_cxx_la_SOURCES = \ + $(libical_la_SOURCES) \ + vcomponent.h \ + vcomponent.cpp \ + icalproperty_cxx.h \ + icalproperty_cxx.cpp \ + icalparameter_cxx.h \ + icalparameter_cxx.cpp \ + icalvalue_cxx.h \ + icalvalue_cxx.cpp \ + icptrholder.h +endif + +libicalincludedir = $(includedir) + +libicalinclude_HEADERS = ical.h icalmemory.h icalerror.h $(cxx_headers) + +# ORDERING OF HEADERS IS SIGNIFICANT. Don't change this ordering. It +# is required to make the combined header ical.h properly +COMBINEDHEADERS = \ + $(top_builddir)/config.h \ + $(top_builddir)/src/libical/icalversion.h \ + $(top_srcdir)/src/libical/icaltime.h \ + $(top_srcdir)/src/libical/icalduration.h \ + $(top_srcdir)/src/libical/icalperiod.h \ + $(top_srcdir)/src/libical/icalenums.h \ + $(top_srcdir)/src/libical/icaltypes.h \ + $(top_srcdir)/src/libical/icalrecur.h \ + $(top_srcdir)/src/libical/icalattach.h \ + icalderivedvalue.h \ + icalderivedparameter.h \ + $(top_srcdir)/src/libical/icalvalue.h \ + $(top_srcdir)/src/libical/icalparameter.h \ + icalderivedproperty.h \ + $(top_srcdir)/src/libical/icalproperty.h \ + $(top_srcdir)/src/libical/pvl.h \ + $(top_srcdir)/src/libical/icalarray.h \ + $(top_srcdir)/src/libical/icalcomponent.h \ + $(top_srcdir)/src/libical/icaltimezone.h \ + $(top_srcdir)/src/libical/icalparser.h \ + $(top_srcdir)/src/libical/icalmemory.h \ + $(top_srcdir)/src/libical/icalerror.h \ + $(top_srcdir)/src/libical/icalrestriction.h \ + $(top_srcdir)/src/libical/sspm.h \ + $(top_srcdir)/src/libical/icalmime.h \ + $(top_srcdir)/src/libical/icallangbind.h + +BUILT_COMBINEDHEADERS = \ + icalderivedparameter.h \ + icalderivedproperty.h \ + icalderivedvalue.h + +BUILT_SOURCES = \ + $(BUILT_COMBINEDHEADERS)\ + icalderivedparameter.c \ + icalderivedproperty.c \ + icalrestriction.c \ + icalderivedvalue.c + +ical.h: $(COMBINEDHEADERS) + echo '#ifdef __cplusplus' > ical.h + echo 'extern "C" {' >> ical.h + echo '#endif' >> ical.h + echo '/*' >> ical.h + echo ' $$''Id''$$' >> ical.h + echo '*/' >> ical.h + cat $(COMBINEDHEADERS) \ + | egrep -v "#include.*\"ical" \ + | egrep -v "#include.*\"config" \ + | egrep -v "#include.*\"pvl\.h\"" \ + | egrep -v '\$$(Id|Locker): .+\$$'>> ical.h + echo '#ifdef __cplusplus' >> ical.h + echo '};' >> ical.h + echo '#endif' >> ical.h + + +# parameters + +PARAMETERDEPS = \ + $(ICALSCRIPTS)/mkderivedparameters.pl \ + $(DESIGNDATA)/parameters.csv \ + icalderivedparameter.c.in \ + icalderivedparameter.h.in + +icalderivedparameter.h: $(PARAMETERDEPS) + $(PERL) -I $(ICALSCRIPTS) $(ICALSCRIPTS)/mkderivedparameters.pl -i $(srcdir)/icalderivedparameter.h.in -h $(DESIGNDATA)/parameters.csv > icalderivedparameter.h + +icalderivedparameter.c: $(PARAMETERDEPS) $(BUILT_COMBINEDHEADERS) + $(PERL) -I $(ICALSCRIPTS) $(ICALSCRIPTS)/mkderivedparameters.pl -i $(srcdir)/icalderivedparameter.c.in -c $(DESIGNDATA)/parameters.csv > icalderivedparameter.c + +# properties + +PROPERTYDEPS = \ + $(ICALSCRIPTS)/mkderivedproperties.pl \ + $(DESIGNDATA)/properties.csv \ + $(DESIGNDATA)/value-types.csv \ + icalderivedproperty.c.in \ + icalderivedproperty.h.in + + +icalderivedproperty.h: $(PROPERTYDEPS) + $(PERL) -I$(ICALSCRIPTS) $(ICALSCRIPTS)/mkderivedproperties.pl \ + -i $(srcdir)/icalderivedproperty.h.in -h $(DESIGNDATA)/properties.csv\ + ${DESIGNDATA}/value-types.csv > icalderivedproperty.h + +icalderivedproperty.c: $(PROPERTYDEPS) $(BUILT_COMBINEDHEADERS) + $(PERL) -I$(ICALSCRIPTS) $(ICALSCRIPTS)/mkderivedproperties.pl \ + -i $(srcdir)/icalderivedproperty.c.in -c $(DESIGNDATA)/properties.csv \ + ${DESIGNDATA}/value-types.csv > icalderivedproperty.c + +# restrictions + +RESTRICTIONDEPS = \ + $(ICALSCRIPTS)/mkrestrictiontable.pl \ + $(DESIGNDATA)/restrictions.csv \ + icalrestriction.c.in + +icalrestriction.c: $(RESTRICTIONDEPS) + $(PERL) $(ICALSCRIPTS)/mkrestrictiontable.pl -i $(srcdir)/icalrestriction.c.in \ + $(DESIGNDATA)/restrictions.csv > icalrestriction.c + +# values + +VALUEDEPS = \ + $(ICALSCRIPTS)/mkderivedvalues.pl \ + $(DESIGNDATA)/value-types.csv \ + icalderivedvalue.c.in \ + icalderivedvalue.h.in + +icalderivedvalue.h: $(VALUEDEPS) + $(PERL) -I$(ICALSCRIPTS) $(ICALSCRIPTS)/mkderivedvalues.pl \ + -i $(srcdir)/icalderivedvalue.h.in -h $(DESIGNDATA)/value-types.csv > icalderivedvalue.h + +icalderivedvalue.c: $(VALUEDEPS) $(BUILT_COMBINEDHEADERS) + $(PERL) -I$(ICALSCRIPTS) $(ICALSCRIPTS)/mkderivedvalues.pl \ + -i $(srcdir)/icalderivedvalue.c.in -c $(DESIGNDATA)/value-types.csv > icalderivedvalue.c + +# c++ needs ical.h auto-generated. +icalparameter_cxx.lo: ical.h +icalproperty_cxx.lo: ical.h +icalvalue_cxx.lo: ical.h +vcomponent.lo: ical.h + + +# housekeeping +CONFIG_CLEAN_FILES = y.output + +CLEANFILES = $(BUILT_SOURCES) $(BUILT_COMBINEDHEADERS) + +dist-hook: + cd $(distdir); rm -f $(BUILT_SOURCES) + cd $(distdir); rm -f ical.h icalversion.h + +EXTRA_DIST = \ + icalderivedparameter.c.in \ + icalderivedparameter.h.in \ + icalderivedproperty.c.in \ + icalderivedproperty.h.in \ + icalrestriction.c.in \ + icalderivedvalue.c.in \ + icalderivedvalue.h.in \ + icalversion.h.in + +$(srcdir)/icalcomponent.c: icalderivedvalue.h icalderivedproperty.h icalderivedparameter.h +icalderivedparameter.c: icalderivedvalue.h icalderivedproperty.h icalderivedparameter.h +icalderivedproperty.c: icalderivedvalue.h icalderivedproperty.h icalderivedparameter.h +icalderivedvalue.c: icalderivedvalue.h icalderivedproperty.h icalderivedparameter.h +$(srcdir)/icalduration.c: icalderivedvalue.h icalderivedproperty.h icalderivedparameter.h +$(srcdir)/icallangbind.c: icalderivedvalue.h icalderivedproperty.h icalderivedparameter.h +$(srcdir)/icalmime.c: icalderivedvalue.h icalderivedproperty.h icalderivedparameter.h +$(srcdir)/icalparameter.c: icalderivedvalue.h icalderivedproperty.h icalderivedparameter.h +$(srcdir)/icalparser.c: icalderivedvalue.h icalderivedproperty.h icalderivedparameter.h +$(srcdir)/icalproperty.c: icalderivedvalue.h icalderivedproperty.h icalderivedparameter.h +$(srcdir)/icalrestriction.c: icalderivedvalue.h icalderivedproperty.h icalderivedparameter.h +$(srcdir)/icaltime.c: icalderivedvalue.h icalderivedproperty.h icalderivedparameter.h +$(srcdir)/icalvalue.c: icalderivedvalue.h icalderivedproperty.h icalderivedparameter.h diff --git a/mozilla/calendar/libical/src/libical/Makefile.in b/mozilla/calendar/libical/src/libical/Makefile.in new file mode 100644 index 00000000000..dc4183d979c --- /dev/null +++ b/mozilla/calendar/libical/src/libical/Makefile.in @@ -0,0 +1,776 @@ +# Makefile.in generated automatically by automake 1.5 from Makefile.am. + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +#====================================================================== +# FILE: Makefile.am +# CREATOR: eric +# +# $Id: Makefile.in,v 1.1 2003/04/28 17:20:46 acampi Exp $ +# +# +# (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of either: +# +# The LGPL as published by the Free Software Foundation, version +# 2.1, available at: http://www.fsf.org/copyleft/lesser.html +# +# Or: +# +# The Mozilla Public License Version 1.0. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# +# +#====================================================================== + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_HEADER = $(INSTALL_DATA) +transform = @program_transform_name@ +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_alias = @build_alias@ +build_triplet = @build@ +host_alias = @host_alias@ +host_triplet = @host@ +target_alias = @target_alias@ +target_triplet = @target@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AWK = @AWK@ +BDB_DIR = @BDB_DIR@ +BDB_DIR_INCLUDE = @BDB_DIR_INCLUDE@ +BDB_DIR_LIB = @BDB_DIR_LIB@ +BDB_LIB = @BDB_LIB@ +BDB_VERSION = @BDB_VERSION@ +CC = @CC@ +CXX = @CXX@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +EXEEXT = @EXEEXT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +JAR = @JAR@ +JAVA = @JAVA@ +JAVAC = @JAVAC@ +JAVAH = @JAVAH@ +JAVA_PLATFORM = @JAVA_PLATFORM@ +LEX = @LEX@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +MAINT = @MAINT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PTHREAD_LIBS = @PTHREAD_LIBS@ +PY_CFLAGS = @PY_CFLAGS@ +PY_EXTRA_LIBS = @PY_EXTRA_LIBS@ +PY_LIBS = @PY_LIBS@ +PY_LIB_LOC = @PY_LIB_LOC@ +RANLIB = @RANLIB@ +RRCAP_CFLAGS = @RRCAP_CFLAGS@ +RRCAP_LIBS = @RRCAP_LIBS@ +VERSION = @VERSION@ +YACC = @YACC@ +am__include = @am__include@ +am__quote = @am__quote@ +install_sh = @install_sh@ +python_val = @python_val@ + +DESIGNDATA = $(top_srcdir)/design-data +ICALSCRIPTS = $(top_srcdir)/scripts + +@WITH_CXX_TRUE@cxx_lib = libical_cxx.la +@WITH_CXX_FALSE@cxx_lib = +@WITH_CXX_TRUE@cxx_headers = vcomponent.h icalparameter_cxx.h icalproperty_cxx.h icalvalue_cxx.h icptrholder.h +@WITH_CXX_FALSE@cxx_headers = + +lib_LTLIBRARIES = libical.la $(cxx_lib) + +noinst_LTLIBRARIES = libical-static.la +libical_static_la_SOURCES = $(libical_la_SOURCES) +libical_static_la_LDFLAGS = --all-static + +CPPFLAGS = -DPACKAGE_DATA_DIR=\""$(datadir)/$(PACKAGE)"\" + +INCLUDES = \ + -I$(top_builddir) \ + -I$(top_srcdir)/src \ + -I$(top_builddir)/src \ + -I$(srcdir) + + +libical_la_LDFLAGS = -version-info 0:0:0 + +libical_la_SOURCES = \ + $(BUILT_SOURCES) \ + icalarray.c \ + icalarray.h \ + icalattach.h \ + icalattachimpl.h \ + icalattach.c \ + icalcomponent.c \ + icalcomponent.h \ + icalenums.c \ + icalenums.h \ + icalerror.c \ + icalerror.h \ + icalmemory.c \ + icalmemory.h \ + icalmime.c \ + icalmime.h \ + icalparameter.c \ + icalparameter.h \ + icalparameterimpl.h \ + icalparser.c \ + icalparser.h \ + icalproperty.c \ + icalproperty.h \ + icalrecur.c \ + icalrecur.h \ + icalrestriction.h \ + icaltime.c \ + icaltime.h \ + icaltimezone.c \ + icaltimezone.h \ + icalduration.h \ + icalduration.c \ + icalperiod.h \ + icalperiod.c \ + icaltypes.c \ + icaltypes.h \ + icalvalue.c \ + icalvalue.h \ + icalvalueimpl.h \ + pvl.c \ + pvl.h \ + sspm.c \ + sspm.h \ + vsnprintf.c \ + icallangbind.h \ + icallangbind.c \ + caldate.c \ + astime.h + + +@WITH_CXX_TRUE@libical_cxx_la_SOURCES = \ +@WITH_CXX_TRUE@ $(libical_la_SOURCES) \ +@WITH_CXX_TRUE@ vcomponent.h \ +@WITH_CXX_TRUE@ vcomponent.cpp \ +@WITH_CXX_TRUE@ icalproperty_cxx.h \ +@WITH_CXX_TRUE@ icalproperty_cxx.cpp \ +@WITH_CXX_TRUE@ icalparameter_cxx.h \ +@WITH_CXX_TRUE@ icalparameter_cxx.cpp \ +@WITH_CXX_TRUE@ icalvalue_cxx.h \ +@WITH_CXX_TRUE@ icalvalue_cxx.cpp \ +@WITH_CXX_TRUE@ icptrholder.h + + +libicalincludedir = $(includedir) + +libicalinclude_HEADERS = ical.h icalmemory.h icalerror.h $(cxx_headers) + +# ORDERING OF HEADERS IS SIGNIFICANT. Don't change this ordering. It +# is required to make the combined header ical.h properly +COMBINEDHEADERS = \ + $(top_builddir)/config.h \ + $(top_builddir)/src/libical/icalversion.h \ + $(top_srcdir)/src/libical/icaltime.h \ + $(top_srcdir)/src/libical/icalduration.h \ + $(top_srcdir)/src/libical/icalperiod.h \ + $(top_srcdir)/src/libical/icalenums.h \ + $(top_srcdir)/src/libical/icaltypes.h \ + $(top_srcdir)/src/libical/icalrecur.h \ + $(top_srcdir)/src/libical/icalattach.h \ + icalderivedvalue.h \ + icalderivedparameter.h \ + $(top_srcdir)/src/libical/icalvalue.h \ + $(top_srcdir)/src/libical/icalparameter.h \ + icalderivedproperty.h \ + $(top_srcdir)/src/libical/icalproperty.h \ + $(top_srcdir)/src/libical/pvl.h \ + $(top_srcdir)/src/libical/icalarray.h \ + $(top_srcdir)/src/libical/icalcomponent.h \ + $(top_srcdir)/src/libical/icaltimezone.h \ + $(top_srcdir)/src/libical/icalparser.h \ + $(top_srcdir)/src/libical/icalmemory.h \ + $(top_srcdir)/src/libical/icalerror.h \ + $(top_srcdir)/src/libical/icalrestriction.h \ + $(top_srcdir)/src/libical/sspm.h \ + $(top_srcdir)/src/libical/icalmime.h \ + $(top_srcdir)/src/libical/icallangbind.h + + +BUILT_COMBINEDHEADERS = \ + icalderivedparameter.h \ + icalderivedproperty.h \ + icalderivedvalue.h + + +BUILT_SOURCES = \ + $(BUILT_COMBINEDHEADERS)\ + icalderivedparameter.c \ + icalderivedproperty.c \ + icalrestriction.c \ + icalderivedvalue.c + + + +# parameters +PARAMETERDEPS = \ + $(ICALSCRIPTS)/mkderivedparameters.pl \ + $(DESIGNDATA)/parameters.csv \ + icalderivedparameter.c.in \ + icalderivedparameter.h.in + + + +# properties +PROPERTYDEPS = \ + $(ICALSCRIPTS)/mkderivedproperties.pl \ + $(DESIGNDATA)/properties.csv \ + $(DESIGNDATA)/value-types.csv \ + icalderivedproperty.c.in \ + icalderivedproperty.h.in + + + +# restrictions +RESTRICTIONDEPS = \ + $(ICALSCRIPTS)/mkrestrictiontable.pl \ + $(DESIGNDATA)/restrictions.csv \ + icalrestriction.c.in + + + +# values +VALUEDEPS = \ + $(ICALSCRIPTS)/mkderivedvalues.pl \ + $(DESIGNDATA)/value-types.csv \ + icalderivedvalue.c.in \ + icalderivedvalue.h.in + + +# housekeeping +CONFIG_CLEAN_FILES = y.output + +CLEANFILES = $(BUILT_SOURCES) $(BUILT_COMBINEDHEADERS) + +EXTRA_DIST = \ + icalderivedparameter.c.in \ + icalderivedparameter.h.in \ + icalderivedproperty.c.in \ + icalderivedproperty.h.in \ + icalrestriction.c.in \ + icalderivedvalue.c.in \ + icalderivedvalue.h.in \ + icalversion.h.in + +subdir = src/libical +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES) + +libical_static_la_LIBADD = +am_libical_static_la_OBJECTS = icalderivedparameter.lo \ + icalderivedproperty.lo icalrestriction.lo icalderivedvalue.lo \ + icalarray.lo icalattach.lo icalcomponent.lo icalenums.lo \ + icalerror.lo icalmemory.lo icalmime.lo icalparameter.lo \ + icalparser.lo icalproperty.lo icalrecur.lo icaltime.lo \ + icaltimezone.lo icalduration.lo icalperiod.lo icaltypes.lo \ + icalvalue.lo pvl.lo sspm.lo vsnprintf.lo icallangbind.lo \ + caldate.lo +libical_static_la_OBJECTS = $(am_libical_static_la_OBJECTS) +libical_la_LIBADD = +am_libical_la_OBJECTS = icalderivedparameter.lo icalderivedproperty.lo \ + icalrestriction.lo icalderivedvalue.lo icalarray.lo \ + icalattach.lo icalcomponent.lo icalenums.lo icalerror.lo \ + icalmemory.lo icalmime.lo icalparameter.lo icalparser.lo \ + icalproperty.lo icalrecur.lo icaltime.lo icaltimezone.lo \ + icalduration.lo icalperiod.lo icaltypes.lo icalvalue.lo pvl.lo \ + sspm.lo vsnprintf.lo icallangbind.lo caldate.lo +libical_la_OBJECTS = $(am_libical_la_OBJECTS) +libical_cxx_la_LDFLAGS = +libical_cxx_la_LIBADD = +@WITH_CXX_TRUE@am_libical_cxx_la_OBJECTS = icalderivedparameter.lo \ +@WITH_CXX_TRUE@ icalderivedproperty.lo icalrestriction.lo \ +@WITH_CXX_TRUE@ icalderivedvalue.lo icalarray.lo icalattach.lo \ +@WITH_CXX_TRUE@ icalcomponent.lo icalenums.lo icalerror.lo \ +@WITH_CXX_TRUE@ icalmemory.lo icalmime.lo icalparameter.lo \ +@WITH_CXX_TRUE@ icalparser.lo icalproperty.lo icalrecur.lo \ +@WITH_CXX_TRUE@ icaltime.lo icaltimezone.lo icalduration.lo \ +@WITH_CXX_TRUE@ icalperiod.lo icaltypes.lo icalvalue.lo pvl.lo \ +@WITH_CXX_TRUE@ sspm.lo vsnprintf.lo icallangbind.lo caldate.lo \ +@WITH_CXX_TRUE@ vcomponent.lo icalproperty_cxx.lo \ +@WITH_CXX_TRUE@ icalparameter_cxx.lo icalvalue_cxx.lo +@WITH_CXX_FALSE@am_libical_cxx_la_OBJECTS = +libical_cxx_la_OBJECTS = $(am_libical_cxx_la_OBJECTS) + +DEFS = @DEFS@ +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +LDFLAGS = @LDFLAGS@ +LIBS = @LIBS@ +depcomp = $(SHELL) $(top_srcdir)/depcomp +@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/caldate.Plo $(DEPDIR)/icalarray.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/icalattach.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/icalcomponent.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/icalderivedparameter.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/icalderivedproperty.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/icalderivedvalue.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/icalduration.Plo $(DEPDIR)/icalenums.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/icalerror.Plo $(DEPDIR)/icallangbind.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/icalmemory.Plo $(DEPDIR)/icalmime.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/icalparameter.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/icalparameter_cxx.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/icalparser.Plo $(DEPDIR)/icalperiod.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/icalproperty.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/icalproperty_cxx.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/icalrecur.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/icalrestriction.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/icaltime.Plo $(DEPDIR)/icaltimezone.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/icaltypes.Plo $(DEPDIR)/icalvalue.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/icalvalue_cxx.Plo $(DEPDIR)/pvl.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/sspm.Plo $(DEPDIR)/vcomponent.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/vsnprintf.Plo +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ + $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CFLAGS = @CFLAGS@ +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXFLAGS = @CXXFLAGS@ +DIST_SOURCES = $(libical_static_la_SOURCES) $(libical_la_SOURCES) \ + $(libical_cxx_la_SOURCES) +HEADERS = $(libicalinclude_HEADERS) + +DIST_COMMON = $(libicalinclude_HEADERS) Makefile.am Makefile.in \ + icalversion.h.in +SOURCES = $(libical_static_la_SOURCES) $(libical_la_SOURCES) $(libical_cxx_la_SOURCES) + +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .cpp .lo .o .obj + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/libical/Makefile +Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && \ + CONFIG_HEADERS= CONFIG_LINKS= \ + CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status +icalversion.h: $(top_builddir)/config.status icalversion.h.in + cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= CONFIG_LINKS= $(SHELL) ./config.status +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(libdir) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + echo " $(LIBTOOL) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$p"; \ + $(LIBTOOL) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$p; \ + else :; fi; \ + done + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p"; \ + $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) +libical-static.la: $(libical_static_la_OBJECTS) $(libical_static_la_DEPENDENCIES) + $(LINK) $(libical_static_la_LDFLAGS) $(libical_static_la_OBJECTS) $(libical_static_la_LIBADD) $(LIBS) +libical.la: $(libical_la_OBJECTS) $(libical_la_DEPENDENCIES) + $(LINK) -rpath $(libdir) $(libical_la_LDFLAGS) $(libical_la_OBJECTS) $(libical_la_LIBADD) $(LIBS) +libical_cxx.la: $(libical_cxx_la_OBJECTS) $(libical_cxx_la_DEPENDENCIES) + $(CXXLINK) -rpath $(libdir) $(libical_cxx_la_LDFLAGS) $(libical_cxx_la_OBJECTS) $(libical_cxx_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) core *.core + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/caldate.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icalarray.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icalattach.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icalcomponent.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icalderivedparameter.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icalderivedproperty.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icalderivedvalue.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icalduration.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icalenums.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icalerror.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icallangbind.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icalmemory.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icalmime.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icalparameter.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icalparameter_cxx.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icalparser.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icalperiod.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icalproperty.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icalproperty_cxx.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icalrecur.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icalrestriction.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icaltime.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icaltimezone.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icaltypes.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icalvalue.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icalvalue_cxx.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/pvl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/sspm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/vcomponent.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/vsnprintf.Plo@am__quote@ + +distclean-depend: + -rm -rf $(DEPDIR) + +.c.o: +@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< + +.c.obj: +@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(COMPILE) -c `cygpath -w $<` + +.c.lo: +@AMDEP_TRUE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(LTCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$< +CCDEPMODE = @CCDEPMODE@ + +.cpp.o: +@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CXXCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$< + +.cpp.obj: +@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CXXCOMPILE) -c -o $@ `cygpath -w $<` + +.cpp.lo: +@AMDEP_TRUE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(LTCXXCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$< +CXXDEPMODE = @CXXDEPMODE@ +uninstall-info-am: +install-libicalincludeHEADERS: $(libicalinclude_HEADERS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(libicalincludedir) + @list='$(libicalinclude_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(INSTALL_HEADER) $$d$$p $(DESTDIR)$(libicalincludedir)/$$f"; \ + $(INSTALL_HEADER) $$d$$p $(DESTDIR)$(libicalincludedir)/$$f; \ + done + +uninstall-libicalincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(libicalinclude_HEADERS)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(libicalincludedir)/$$f"; \ + rm -f $(DESTDIR)$(libicalincludedir)/$$f; \ + done + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique $(LISP) + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ + || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + +GTAGS: + here=`CDPATH=: && cd $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = ../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + if test -f $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + $(mkinstalldirs) "$(distdir)/$$dir"; \ + fi; \ + if test -d $$d/$$file; then \ + cp -pR $$d/$$file $(distdir) \ + || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="${top_distdir}" distdir="$(distdir)" \ + dist-hook +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) + +installdirs: + $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(libicalincludedir) + +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +clean: clean-am + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-compile distclean-depend \ + distclean-generic distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: install-libicalincludeHEADERS + +install-exec-am: install-libLTLIBRARIES + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES \ + uninstall-libicalincludeHEADERS + +.PHONY: GTAGS all all-am check check-am clean clean-generic \ + clean-libLTLIBRARIES clean-libtool clean-noinstLTLIBRARIES \ + distclean distclean-compile distclean-depend distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am info \ + info-am install install-am install-data install-data-am \ + install-exec install-exec-am install-info install-info-am \ + install-libLTLIBRARIES install-libicalincludeHEADERS \ + install-man install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool tags uninstall uninstall-am \ + uninstall-info-am uninstall-libLTLIBRARIES \ + uninstall-libicalincludeHEADERS + + +# CFLAGS = -g + +all: ical.h + +ical.h: $(COMBINEDHEADERS) + echo '#ifdef __cplusplus' > ical.h + echo 'extern "C" {' >> ical.h + echo '#endif' >> ical.h + echo '/*' >> ical.h + echo ' $$''Id''$$' >> ical.h + echo '*/' >> ical.h + cat $(COMBINEDHEADERS) \ + | egrep -v "#include.*\"ical" \ + | egrep -v "#include.*\"config" \ + | egrep -v "#include.*\"pvl\.h\"" \ + | egrep -v '\$$(Id|Locker): .+\$$'>> ical.h + echo '#ifdef __cplusplus' >> ical.h + echo '};' >> ical.h + echo '#endif' >> ical.h + +icalderivedparameter.h: $(PARAMETERDEPS) + $(PERL) -I $(ICALSCRIPTS) $(ICALSCRIPTS)/mkderivedparameters.pl -i $(srcdir)/icalderivedparameter.h.in -h $(DESIGNDATA)/parameters.csv > icalderivedparameter.h + +icalderivedparameter.c: $(PARAMETERDEPS) $(BUILT_COMBINEDHEADERS) + $(PERL) -I $(ICALSCRIPTS) $(ICALSCRIPTS)/mkderivedparameters.pl -i $(srcdir)/icalderivedparameter.c.in -c $(DESIGNDATA)/parameters.csv > icalderivedparameter.c + +icalderivedproperty.h: $(PROPERTYDEPS) + $(PERL) -I$(ICALSCRIPTS) $(ICALSCRIPTS)/mkderivedproperties.pl \ + -i $(srcdir)/icalderivedproperty.h.in -h $(DESIGNDATA)/properties.csv\ + ${DESIGNDATA}/value-types.csv > icalderivedproperty.h + +icalderivedproperty.c: $(PROPERTYDEPS) $(BUILT_COMBINEDHEADERS) + $(PERL) -I$(ICALSCRIPTS) $(ICALSCRIPTS)/mkderivedproperties.pl \ + -i $(srcdir)/icalderivedproperty.c.in -c $(DESIGNDATA)/properties.csv \ + ${DESIGNDATA}/value-types.csv > icalderivedproperty.c + +icalrestriction.c: $(RESTRICTIONDEPS) + $(PERL) $(ICALSCRIPTS)/mkrestrictiontable.pl -i $(srcdir)/icalrestriction.c.in \ + $(DESIGNDATA)/restrictions.csv > icalrestriction.c + +icalderivedvalue.h: $(VALUEDEPS) + $(PERL) -I$(ICALSCRIPTS) $(ICALSCRIPTS)/mkderivedvalues.pl \ + -i $(srcdir)/icalderivedvalue.h.in -h $(DESIGNDATA)/value-types.csv > icalderivedvalue.h + +icalderivedvalue.c: $(VALUEDEPS) $(BUILT_COMBINEDHEADERS) + $(PERL) -I$(ICALSCRIPTS) $(ICALSCRIPTS)/mkderivedvalues.pl \ + -i $(srcdir)/icalderivedvalue.c.in -c $(DESIGNDATA)/value-types.csv > icalderivedvalue.c + +# c++ needs ical.h auto-generated. +icalparameter_cxx.lo: ical.h +icalproperty_cxx.lo: ical.h +icalvalue_cxx.lo: ical.h +vcomponent.lo: ical.h + +dist-hook: + cd $(distdir); rm -f $(BUILT_SOURCES) + cd $(distdir); rm -f ical.h icalversion.h + +$(srcdir)/icalcomponent.c: icalderivedvalue.h icalderivedproperty.h icalderivedparameter.h +icalderivedparameter.c: icalderivedvalue.h icalderivedproperty.h icalderivedparameter.h +icalderivedproperty.c: icalderivedvalue.h icalderivedproperty.h icalderivedparameter.h +icalderivedvalue.c: icalderivedvalue.h icalderivedproperty.h icalderivedparameter.h +$(srcdir)/icalduration.c: icalderivedvalue.h icalderivedproperty.h icalderivedparameter.h +$(srcdir)/icallangbind.c: icalderivedvalue.h icalderivedproperty.h icalderivedparameter.h +$(srcdir)/icalmime.c: icalderivedvalue.h icalderivedproperty.h icalderivedparameter.h +$(srcdir)/icalparameter.c: icalderivedvalue.h icalderivedproperty.h icalderivedparameter.h +$(srcdir)/icalparser.c: icalderivedvalue.h icalderivedproperty.h icalderivedparameter.h +$(srcdir)/icalproperty.c: icalderivedvalue.h icalderivedproperty.h icalderivedparameter.h +$(srcdir)/icalrestriction.c: icalderivedvalue.h icalderivedproperty.h icalderivedparameter.h +$(srcdir)/icaltime.c: icalderivedvalue.h icalderivedproperty.h icalderivedparameter.h +$(srcdir)/icalvalue.c: icalderivedvalue.h icalderivedproperty.h icalderivedparameter.h +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/mozilla/calendar/libical/src/libical/astime.h b/mozilla/calendar/libical/src/libical/astime.h new file mode 100644 index 00000000000..6962c060a86 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/astime.h @@ -0,0 +1,65 @@ +/* + * Copyright (c) 1986-2000, Hiram Clawson + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * Redistributions of source code must retain the above + * copyright notice, this list of conditions and the + * following disclaimer. + * + * Redistributions in binary form must reproduce the + * above copyright notice, this list of conditions and + * the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * Neither name of The Museum of Hiram nor the names of + * its contributors may be used to endorse or promote products + * derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * @file astime.h + * @brief contains definitions of structures used for time calculations. + */ + +#ifndef _astime_h_ +#define _astime_h_ + +typedef struct ut_instant { + double j_date; /**< julian decimal date, 0 = 01 Jan 4713 BC 12 HR UT */ + long year; /**< year, valid range [-4,713, +2,147,483,647] */ + int month; /**< [1-12] */ + int day; /**< [1-31] */ + int i_hour; /**< [0-23] */ + int i_minute; /**< [0-59] */ + int i_second; /**< [0-59] */ + double d_hour; /**< [0.0-23.9999] includes minute and second */ + double d_minute; /**< [0.0-59.9999] includes second */ + double d_second; /**< [0.0-59.9999] */ + int weekday; /**< [0-6] */ + int day_of_year; /**< [1-366] */ +} UTinstant, * UTinstantPtr; + +/* Functions in caldate.c */ + +long caldat( UTinstantPtr ); /** converts julian date to year,mo,da */ +double juldat( UTinstantPtr ); /** returns julian day from year,mo,da */ + +#endif /* _astime_h_ */ diff --git a/mozilla/calendar/libical/src/libical/autogenex/ical.h b/mozilla/calendar/libical/src/libical/autogenex/ical.h new file mode 100644 index 00000000000..df0c797f3b0 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/autogenex/ical.h @@ -0,0 +1,3622 @@ +#ifdef __cplusplus +extern "C" { +#endif +/* config.h. Generated automatically by configure. */ +/* config.h.in. Generated automatically from configure.in by autoheader. */ + +/* Define to empty if the keyword does not work. */ +/* #undef const */ + +/* Define to `unsigned' if doesn't define. */ +/* #undef size_t */ + +/* Define if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define if your declares struct tm. */ +/* #undef TM_IN_SYS_TIME */ + +/* Define if lex declares yytext as a char * by default, not a char[]. */ +#define YYTEXT_POINTER 1 + +/* Define if you have the gmtime_r function. */ +#define HAVE_GMTIME_R 1 + +/* Define if you have the iswspace function. */ +#define HAVE_ISWSPACE 1 + +/* Define if you have the snprintf function. */ +#define HAVE_SNPRINTF 1 + +/* Define if you have the strdup function. */ +#define HAVE_STRDUP 1 + +/* Define if you have the header file. */ +#define HAVE_ASSERT_H 1 + +/* Define if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Define if you have the header file. */ +#define HAVE_PTHREAD_H 1 + +/* Define if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define if you have the header file. */ +#define HAVE_TIME_H 1 + +/* Define if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define if you have the header file. */ +#define HAVE_WCTYPE_H 1 + +/* Name of package */ +#define PACKAGE "libical" + +/* Version number of package */ +#define VERSION "0.24" + +/* Define if we want _REENTRANT */ +/* #undef ICAL_REENTRANT */ + +/* Define to make icalerror_* calls abort instead of internally signalling an error */ +#define ICAL_ERRORS_ARE_FATAL 1 + +/* Define to 1 if you DO NOT WANT to see deprecated messages */ +#define NO_WARN_DEPRECATED 1 + +/* Define to 1 if you DO NO WANT to see the warning messages related to ICAL_MALFORMEDDATA_ERROR and parsing .ics zoneinfo files */ +#define NO_WARN_ICAL_MALFORMEDDATA_ERROR_HACK 1 + +/* Define to terminate lines with n instead of rn */ +#define ICAL_UNIX_NEWLINE 1 + +/* Define if we have pthread. */ +#define HAVE_PTHREAD + +/* Define if we have pthread. */ +#define HAVE_PTHREAD + +#ifndef ICAL_VERSION_H +#define ICAL_VERSION_H + +#define ICAL_PACKAGE "libical" +#define ICAL_VERSION "0.24" + +#endif +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icaltime.h + CREATOR: eric 02 June 2000 + + + $Id: ical.h,v 1.6 2002/10/10 00:41:34 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The Original Code is eric. The Initial Developer of the Original + Code is Eric Busboom + + +======================================================================*/ + +/** @file icaltime.h + * @brief struct icaltimetype is a pseudo-object that abstracts time + * handling. + * + * It can represent either a DATE or a DATE-TIME (floating, UTC or in a + * given timezone), and it keeps track internally of its native timezone. + * + * The typical usage is to call the correct constructor specifying the + * desired timezone. If this is not known until a later time, the + * correct behavior is to specify a NULL timezone and call + * icaltime_convert_to_zone() at a later time. + * + * There are several ways to create a new icaltimetype: + * + * - icaltime_null_time() + * - icaltime_null_date() + * - icaltime_current_time_with_zone() + * - icaltime_today() + * - icaltime_from_timet_with_zone(time_t tm, int is_date, + * icaltimezone *zone) + * - icaltime_from_string_with_zone(const char* str, icaltimezone *zone) + * - icaltime_from_day_of_year(short doy, short year) + * - icaltime_from_week_number(short week_number, short year) + * + * italtimetype objects can be converted to different formats: + * + * - icaltime_as_timet(struct icaltimetype tt) + * - icaltime_as_timet_with_zone(struct icaltimetype tt, + * icaltimezone *zone) + * - icaltime_as_ical_string(struct icaltimetype tt) + * + * Accessor methods include: + * + * - icaltime_get_timezone(struct icaltimetype t) + * - icaltime_get_tzid(struct icaltimetype t) + * - icaltime_set_timezone(struct icaltimetype t, const icaltimezone *zone) + * - icaltime_day_of_year(struct icaltimetype t) + * - icaltime_day_of_week(struct icaltimetype t) + * - icaltime_start_doy_of_week(struct icaltimetype t) + * - icaltime_week_number(struct icaltimetype t) + * + * Query methods include: + * + * - icaltime_is_null_time(struct icaltimetype t) + * - icaltime_is_valid_time(struct icaltimetype t) + * - icaltime_is_date(struct icaltimetype t) + * - icaltime_is_utc(struct icaltimetype t) + * - icaltime_is_floating(struct icaltimetype t) + * + * Modify, compare and utility methods include: + * + * - icaltime_add(struct icaltimetype t, struct icaldurationtype d) + * - icaltime_subtract(struct icaltimetype t1, struct icaltimetype t2) + * - icaltime_compare_with_zone(struct icaltimetype a,struct icaltimetype b) + * - icaltime_compare(struct icaltimetype a,struct icaltimetype b) + * - icaltime_compare_date_only(struct icaltimetype a, + * struct icaltimetype b) + * - icaltime_adjust(struct icaltimetype *tt, int days, int hours, + * int minutes, int seconds); + * - icaltime_normalize(struct icaltimetype t); + * - icaltime_convert_to_zone(const struct icaltimetype tt, + * icaltimezone *zone); + */ + +#ifndef ICALTIME_H +#define ICALTIME_H + +#include + +/* An opaque struct representing a timezone. We declare this here to avoid + a circular dependancy. */ +#ifndef ICALTIMEONE_DEFINED +#define ICALTIMEONE_DEFINED +typedef struct _icaltimezone icaltimezone; +#endif + +/** icaltime_span is returned by icalcomponent_get_span() */ +struct icaltime_span { + time_t start; /**< in UTC */ + time_t end; /**< in UTC */ + int is_busy; /**< 1->busy time, 0-> free time */ +}; + +typedef struct icaltime_span icaltime_span; + +/* + * FIXME + * + * is_utc is redundant, and might be considered a minor optimization. + * It might be deprecated, so you should use icaltime_is_utc() instead. + */ +struct icaltimetype +{ + int year; /**< Actual year, e.g. 2001. */ + int month; /**< 1 (Jan) to 12 (Dec). */ + int day; + int hour; + int minute; + int second; + + int is_utc; /**< 1-> time is in UTC timezone */ + + int is_date; /**< 1 -> interpret this as date. */ + + int is_daylight; /**< 1 -> time is in daylight savings time. */ + + const icaltimezone *zone; /**< timezone */ +}; + +typedef struct icaltimetype icaltimetype; + +/** Return a null time, which indicates no time has been set. + This time represent the beginning of the epoch */ +struct icaltimetype icaltime_null_time(void); + +/** Return a null date */ +struct icaltimetype icaltime_null_date(void); + +/** Returns the current time in the given timezone, as an icaltimetype. */ +struct icaltimetype icaltime_current_time_with_zone(const icaltimezone *zone); + +/** Returns the current day as an icaltimetype, with is_date set. */ +struct icaltimetype icaltime_today(void); + +/** Convert seconds past UNIX epoch to a timetype*/ +struct icaltimetype icaltime_from_timet(const time_t v, const int is_date); + +/** Convert seconds past UNIX epoch to a timetype, using timezones. */ +struct icaltimetype icaltime_from_timet_with_zone(const time_t tm, + const int is_date, const icaltimezone *zone); + +/** create a time from an ISO format string */ +struct icaltimetype icaltime_from_string(const char* str); + +/** create a time from an ISO format string */ +struct icaltimetype icaltime_from_string_with_zone(const char* str, + const icaltimezone *zone); + +/** Create a new time, given a day of year and a year. */ +struct icaltimetype icaltime_from_day_of_year(const short doy, + const short year); + +/** @brief Contructor (TODO). + * Create a new time from a weeknumber and a year. */ +struct icaltimetype icaltime_from_week_number(const short week_number, + const short year); + +/** Return the time as seconds past the UNIX epoch */ +time_t icaltime_as_timet(const struct icaltimetype); + +/** Return the time as seconds past the UNIX epoch, using timezones. */ +time_t icaltime_as_timet_with_zone(const struct icaltimetype tt, + const icaltimezone *zone); + +/** Return a string represention of the time, in RFC2445 format. The + string is owned by libical */ +const char* icaltime_as_ical_string(const struct icaltimetype tt); + +/** @brief Return the timezone */ +const icaltimezone *icaltime_get_timezone(const struct icaltimetype t); + +/** @brief Return the tzid, or NULL for a floating time */ +char *icaltime_get_tzid(const struct icaltimetype t); + +/** @brief Set the timezone */ +struct icaltimetype icaltime_set_timezone(struct icaltimetype *t, + const icaltimezone *zone); + +/** Return the day of the year of the given time */ +short icaltime_day_of_year(const struct icaltimetype t); + +/** Return the day of the week of the given time. Sunday is 1 */ +short icaltime_day_of_week(const struct icaltimetype t); + +/** Return the day of the year for the Sunday of the week that the + given time is within. */ +short icaltime_start_doy_of_week(const struct icaltimetype t); + +/** Return the week number for the week the given time is within */ +short icaltime_week_number(const struct icaltimetype t); + +/** Return true of the time is null. */ +int icaltime_is_null_time(const struct icaltimetype t); + +/** Returns false if the time is clearly invalid, but is not null. This + is usually the result of creating a new time type buy not clearing + it, or setting one of the flags to an illegal value. */ +int icaltime_is_valid_time(const struct icaltimetype t); + +/** @brief Returns true if time is of DATE type, false if DATE-TIME */ +int icaltime_is_date(const struct icaltimetype t); + +/** @brief Returns true if time is relative to UTC zone */ +int icaltime_is_utc(const struct icaltimetype t); + +/** @brief Returns true if time is a floating time */ +int icaltime_is_floating(const struct icaltimetype t); + +/** Return -1, 0, or 1 to indicate that ab */ +int icaltime_compare_with_zone(const struct icaltimetype a, + const struct icaltimetype b); + +/** Return -1, 0, or 1 to indicate that ab */ +int icaltime_compare(const struct icaltimetype a, + const struct icaltimetype b); + +/** like icaltime_compare, but only use the date parts. */ +int icaltime_compare_date_only(const struct icaltimetype a, + const struct icaltimetype b); + +/** Adds or subtracts a number of days, hours, minutes and seconds. */ +void icaltime_adjust(struct icaltimetype *tt, const int days, + const int hours, const int minutes, const int seconds); + +/** Normalize the icaltime, so that all fields are within the normal range. */ +struct icaltimetype icaltime_normalize(const struct icaltimetype t); + +/** convert tt, of timezone tzid, into a utc time. Does nothing if the + time is already UTC. */ +struct icaltimetype icaltime_convert_to_zone(const struct icaltimetype tt, + const icaltimezone *zone); + +/** Return the number of days in the given month */ +short icaltime_days_in_month(const short month, const short year); + + +/** @brief calculate an icaltimespan given a start and end time. */ +struct icaltime_span icaltime_span_new(struct icaltimetype dtstart, + struct icaltimetype dtend, + int is_busy); + +/** @brief Returns true if the two spans overlap **/ +int icaltime_span_overlaps(icaltime_span *s1, + icaltime_span *s2); + +/** @brief Returns true if the span is totally within the containing + * span + */ +int icaltime_span_contains(icaltime_span *s, + icaltime_span *container); + + +#endif /* !ICALTIME_H */ + + +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalduration.h + CREATOR: eric 26 Jan 2001 + + + $Id: ical.h,v 1.6 2002/10/10 00:41:34 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The Original Code is eric. The Initial Developer of the Original + Code is Eric Busboom + + +======================================================================*/ + +#ifndef ICALDURATION_H +#define ICALDURATION_H + + +struct icaldurationtype +{ + int is_neg; + unsigned int days; + unsigned int weeks; + unsigned int hours; + unsigned int minutes; + unsigned int seconds; +}; + +struct icaldurationtype icaldurationtype_from_int(int t); +struct icaldurationtype icaldurationtype_from_string(const char*); +int icaldurationtype_as_int(struct icaldurationtype duration); +char* icaldurationtype_as_ical_string(struct icaldurationtype d); +struct icaldurationtype icaldurationtype_null_duration(void); +int icaldurationtype_is_null_duration(struct icaldurationtype d); + +struct icaltimetype icaltime_add(struct icaltimetype t, + struct icaldurationtype d); + +struct icaldurationtype icaltime_subtract(struct icaltimetype t1, + struct icaltimetype t2); + +#endif /* !ICALDURATION_H */ + + + +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalperiod.h + CREATOR: eric 26 Jan 2001 + + + $Id: ical.h,v 1.6 2002/10/10 00:41:34 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The Original Code is eric. The Initial Developer of the Original + Code is Eric Busboom + + +======================================================================*/ + +#ifndef ICALPERIOD_H +#define ICALPERIOD_H + + +struct icalperiodtype +{ + struct icaltimetype start; + struct icaltimetype end; + struct icaldurationtype duration; +}; + +struct icalperiodtype icalperiodtype_from_string (const char* str); + +const char* icalperiodtype_as_ical_string(struct icalperiodtype p); + +struct icalperiodtype icalperiodtype_null_period(void); + +int icalperiodtype_is_null_period(struct icalperiodtype p); + +int icalperiodtype_is_valid_period(struct icalperiodtype p); + +#endif /* !ICALTIME_H */ + + + + +/* -*- Mode: C -*-*/ +/*====================================================================== + FILE: icalenums.h + + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icalenums.h + + Contributions from: + Graham Davison (g.m.davison@computer.org) + +======================================================================*/ + +#ifndef ICALENUMS_H +#define ICALENUMS_H + + + +/*********************************************************************** + * Component enumerations +**********************************************************************/ + +typedef enum icalcomponent_kind { + ICAL_NO_COMPONENT, + ICAL_ANY_COMPONENT, /* Used to select all components*/ + ICAL_XROOT_COMPONENT, + ICAL_XATTACH_COMPONENT, /* MIME attached data, returned by parser. */ + ICAL_VEVENT_COMPONENT, + ICAL_VTODO_COMPONENT, + ICAL_VJOURNAL_COMPONENT, + ICAL_VCALENDAR_COMPONENT, + ICAL_VAGENDA_COMPONENT, + ICAL_VFREEBUSY_COMPONENT, + ICAL_VALARM_COMPONENT, + ICAL_XAUDIOALARM_COMPONENT, + ICAL_XDISPLAYALARM_COMPONENT, + ICAL_XEMAILALARM_COMPONENT, + ICAL_XPROCEDUREALARM_COMPONENT, + ICAL_VTIMEZONE_COMPONENT, + ICAL_XSTANDARD_COMPONENT, + ICAL_XDAYLIGHT_COMPONENT, + ICAL_X_COMPONENT, + ICAL_VSCHEDULE_COMPONENT, + ICAL_VQUERY_COMPONENT, + ICAL_VCAR_COMPONENT, + ICAL_VCOMMAND_COMPONENT, + ICAL_XLICINVALID_COMPONENT, + ICAL_XLICMIMEPART_COMPONENT /* a non-stardard component that mirrors + structure of MIME data */ + +} icalcomponent_kind; + + + +/*********************************************************************** + * Request Status codes + **********************************************************************/ + +typedef enum icalrequeststatus { + ICAL_UNKNOWN_STATUS, + ICAL_2_0_SUCCESS_STATUS, + ICAL_2_1_FALLBACK_STATUS, + ICAL_2_2_IGPROP_STATUS, + ICAL_2_3_IGPARAM_STATUS, + ICAL_2_4_IGXPROP_STATUS, + ICAL_2_5_IGXPARAM_STATUS, + ICAL_2_6_IGCOMP_STATUS, + ICAL_2_7_FORWARD_STATUS, + ICAL_2_8_ONEEVENT_STATUS, + ICAL_2_9_TRUNC_STATUS, + ICAL_2_10_ONETODO_STATUS, + ICAL_2_11_TRUNCRRULE_STATUS, + ICAL_3_0_INVPROPNAME_STATUS, + ICAL_3_1_INVPROPVAL_STATUS, + ICAL_3_2_INVPARAM_STATUS, + ICAL_3_3_INVPARAMVAL_STATUS, + ICAL_3_4_INVCOMP_STATUS, + ICAL_3_5_INVTIME_STATUS, + ICAL_3_6_INVRULE_STATUS, + ICAL_3_7_INVCU_STATUS, + ICAL_3_8_NOAUTH_STATUS, + ICAL_3_9_BADVERSION_STATUS, + ICAL_3_10_TOOBIG_STATUS, + ICAL_3_11_MISSREQCOMP_STATUS, + ICAL_3_12_UNKCOMP_STATUS, + ICAL_3_13_BADCOMP_STATUS, + ICAL_3_14_NOCAP_STATUS, + ICAL_3_15_INVCOMMAND, + ICAL_4_0_BUSY_STATUS, + ICAL_4_1_STORE_ACCESS_DENIED, + ICAL_4_2_STORE_FAILED, + ICAL_4_3_STORE_NOT_FOUND, + ICAL_5_0_MAYBE_STATUS, + ICAL_5_1_UNAVAIL_STATUS, + ICAL_5_2_NOSERVICE_STATUS, + ICAL_5_3_NOSCHED_STATUS, + ICAL_6_1_CONTAINER_NOT_FOUND, + ICAL_9_0_UNRECOGNIZED_COMMAND +} icalrequeststatus; + + +const char* icalenum_reqstat_desc(icalrequeststatus stat); +short icalenum_reqstat_major(icalrequeststatus stat); +short icalenum_reqstat_minor(icalrequeststatus stat); +icalrequeststatus icalenum_num_to_reqstat(short major, short minor); +char* icalenum_reqstat_code(icalrequeststatus stat); + +/*********************************************************************** + * Conversion functions +**********************************************************************/ + + +/* Thse routines used to be in icalenums.c, but were moved into the + icalproperty, icalparameter, icalvalue, or icalcomponent modules. */ + +/* const char* icalproperty_kind_to_string(icalproperty_kind kind);*/ +#define icalenum_property_kind_to_string(x) icalproperty_kind_to_string(x) + +/*icalproperty_kind icalproperty_string_to_kind(const char* string)*/ +#define icalenum_string_to_property_kind(x) icalproperty_string_to_kind(x) + +/*icalvalue_kind icalproperty_kind_to_value_kind(icalproperty_kind kind);*/ +#define icalenum_property_kind_to_value_kind(x) icalproperty_kind_to_value_kind(x) + +/*const char* icalenum_method_to_string(icalproperty_method);*/ +#define icalenum_method_to_string(x) icalproperty_method_to_string(x) + +/*icalproperty_method icalenum_string_to_method(const char* string);*/ +#define icalenum_string_to_method(x) icalproperty_string_to_method(x) + +/*const char* icalenum_status_to_string(icalproperty_status);*/ +#define icalenum_status_to_string(x) icalproperty_status_to_string(x) + +/*icalproperty_status icalenum_string_to_status(const char* string);*/ +#define icalenum_string_to_status(x) icalproperty_string_to_status(x) + +/*icalvalue_kind icalenum_string_to_value_kind(const char* str);*/ +#define icalenum_string_to_value_kind(x) icalvalue_string_to_kind(x) + +/*const char* icalenum_value_kind_to_string(icalvalue_kind kind);*/ +#define icalenum_value_kind_to_string(x) icalvalue_kind_to_string(x) + +/*const char* icalenum_component_kind_to_string(icalcomponent_kind kind);*/ +#define icalenum_component_kind_to_string(x) icalcomponent_kind_to_string(x) + +/*icalcomponent_kind icalenum_string_to_component_kind(const char* string);*/ +#define icalenum_string_to_component_kind(x) icalcomponent_string_to_kind(x) + + +#endif /* !ICALENUMS_H */ + +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icaltypes.h + CREATOR: eric 20 March 1999 + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icaltypes.h + +======================================================================*/ + +#ifndef ICALTYPES_H +#define ICALTYPES_H + +#include + + +struct icalgeotype +{ + float lat; + float lon; +}; + + +struct icaldatetimeperiodtype +{ + struct icaltimetype time; + struct icalperiodtype period; +}; + + +struct icaltriggertype +{ + struct icaltimetype time; + struct icaldurationtype duration; +}; + +struct icaltriggertype icaltriggertype_from_int(const int reltime); +struct icaltriggertype icaltriggertype_from_string(const char* str); + +int icaltriggertype_is_null_trigger(struct icaltriggertype tr); + +/* struct icalreqstattype. This struct contains two string pointers, +but don't try to free either of them. The "desc" string is a pointer +to a static table inside the library. Don't try to free it. The +"debug" string is a pointer into the string that the called passed +into to icalreqstattype_from_string. Don't try to free it either, and +don't use it after the original string has been freed. + +BTW, you would get that original string from +*icalproperty_get_requeststatus() or icalvalue_get_text(), when +operating on a the value of a request_status property. */ + +struct icalreqstattype { + + icalrequeststatus code; + const char* desc; + const char* debug; +}; + +struct icalreqstattype icalreqstattype_from_string(const char* str); +const char* icalreqstattype_as_string(struct icalreqstattype); + + + +struct icaltimezonephase { + const char* tzname; + int is_stdandard; /* 1 = standard tme, 0 = daylight savings time */ + struct icaltimetype dtstart; + int offsetto; + int tzoffsetfrom; + const char* comment; + struct icaldatetimeperiodtype rdate; + const char* rrule; +}; + + +struct icaltimezonetype { + const char* tzid; + struct icaltimetype last_mod; + const char* tzurl; + + /* Array of phases. The end of the array is a phase with tzname == 0 */ + struct icaltimezonephase *phases; +}; + +void icaltimezonetype_free(struct icaltimezonetype tzt); + + +#endif /* !ICALTYPES_H */ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalrecur.h + CREATOR: eric 20 March 2000 + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ +*/ + +/** +@file icalrecur.h +@brief Routines for dealing with recurring time + +How to use: + +1) Get a rule and a start time from a component + +@code + icalproperty rrule; + struct icalrecurrencetype recur; + struct icaltimetype dtstart; + + rrule = icalcomponent_get_first_property(comp,ICAL_RRULE_PROPERTY); + recur = icalproperty_get_rrule(rrule); + start = icalproperty_get_dtstart(dtstart); +@endcode + +Or, just make them up: + +@code + recur = icalrecurrencetype_from_string("FREQ=YEARLY;BYDAY=SU,WE"); + dtstart = icaltime_from_string("19970101T123000") +@endcode + +2) Create an iterator + +@code + icalrecur_iterator* ritr; + ritr = icalrecur_iterator_new(recur,start); +@endcode + +3) Iterator over the occurrences + +@code + struct icaltimetype next; + while (next = icalrecur_iterator_next(ritr) + && !icaltime_is_null_time(next){ + Do something with next + } +@endcode + +Note that that the time returned by icalrecur_iterator_next is in +whatever timezone that dtstart is in. + +======================================================================*/ + +#ifndef ICALRECUR_H +#define ICALRECUR_H + +#include + +/*********************************************************************** + * Recurrance enumerations +**********************************************************************/ + +typedef enum icalrecurrencetype_frequency +{ + /* These enums are used to index an array, so don't change the + order or the integers */ + + ICAL_SECONDLY_RECURRENCE=0, + ICAL_MINUTELY_RECURRENCE=1, + ICAL_HOURLY_RECURRENCE=2, + ICAL_DAILY_RECURRENCE=3, + ICAL_WEEKLY_RECURRENCE=4, + ICAL_MONTHLY_RECURRENCE=5, + ICAL_YEARLY_RECURRENCE=6, + ICAL_NO_RECURRENCE=7 + +} icalrecurrencetype_frequency; + +typedef enum icalrecurrencetype_weekday +{ + ICAL_NO_WEEKDAY, + ICAL_SUNDAY_WEEKDAY, + ICAL_MONDAY_WEEKDAY, + ICAL_TUESDAY_WEEKDAY, + ICAL_WEDNESDAY_WEEKDAY, + ICAL_THURSDAY_WEEKDAY, + ICAL_FRIDAY_WEEKDAY, + ICAL_SATURDAY_WEEKDAY +} icalrecurrencetype_weekday; + +enum { + ICAL_RECURRENCE_ARRAY_MAX = 0x7f7f, + ICAL_RECURRENCE_ARRAY_MAX_BYTE = 0x7f +}; + + + +/********************** Recurrence type routines **************/ + +/* See RFC 2445 Section 4.3.10, RECUR Value, for an explaination of + the values and fields in struct icalrecurrencetype */ + +#define ICAL_BY_SECOND_SIZE 61 +#define ICAL_BY_MINUTE_SIZE 61 +#define ICAL_BY_HOUR_SIZE 25 +#define ICAL_BY_DAY_SIZE 364 /* 7 days * 52 weeks */ +#define ICAL_BY_MONTHDAY_SIZE 32 +#define ICAL_BY_YEARDAY_SIZE 367 +#define ICAL_BY_WEEKNO_SIZE 54 +#define ICAL_BY_MONTH_SIZE 13 +#define ICAL_BY_SETPOS_SIZE 367 + +/** Main struct for holding digested recurrence rules */ +struct icalrecurrencetype +{ + icalrecurrencetype_frequency freq; + + + /* until and count are mutually exclusive. */ + struct icaltimetype until; + int count; + + short interval; + + icalrecurrencetype_weekday week_start; + + /* The BY* parameters can each take a list of values. Here I + * assume that the list of values will not be larger than the + * range of the value -- that is, the client will not name a + * value more than once. + + * Each of the lists is terminated with the value + * ICAL_RECURRENCE_ARRAY_MAX unless the the list is full. + */ + + short by_second[ICAL_BY_SECOND_SIZE]; + short by_minute[ICAL_BY_MINUTE_SIZE]; + short by_hour[ICAL_BY_HOUR_SIZE]; + short by_day[ICAL_BY_DAY_SIZE]; /* Encoded value, see below */ + short by_month_day[ICAL_BY_MONTHDAY_SIZE]; + short by_year_day[ ICAL_BY_YEARDAY_SIZE]; + short by_week_no[ICAL_BY_WEEKNO_SIZE]; + short by_month[ICAL_BY_MONTH_SIZE]; + short by_set_pos[ICAL_BY_SETPOS_SIZE]; +}; + + +void icalrecurrencetype_clear(struct icalrecurrencetype *r); + +/** + * Array Encoding + * + * The 'day' element of the by_day array is encoded to allow + * representation of both the day of the week ( Monday, Tueday), but also + * the Nth day of the week ( First tuesday of the month, last thursday of + * the year) These routines decode the day values + */ + +/** 1 == Monday, etc. */ +enum icalrecurrencetype_weekday icalrecurrencetype_day_day_of_week(short day); + +/** 0 == any of day of week. 1 == first, 2 = second, -2 == second to last, etc */ +short icalrecurrencetype_day_position(short day); + + +/*********************************************************************** + * Recurrance rule parser +**********************************************************************/ + +/** Convert between strings and recurrencetype structures. */ +struct icalrecurrencetype icalrecurrencetype_from_string(const char* str); +char* icalrecurrencetype_as_string(struct icalrecurrencetype *recur); + + +/********** recurrence iteration routines ********************/ + +typedef struct icalrecur_iterator_impl icalrecur_iterator; + +/** Create a new recurrence rule iterator */ +icalrecur_iterator* icalrecur_iterator_new(struct icalrecurrencetype rule, + struct icaltimetype dtstart); + +/** Get the next occurrence from an iterator */ +struct icaltimetype icalrecur_iterator_next(icalrecur_iterator*); + +/** Free the iterator */ +void icalrecur_iterator_free(icalrecur_iterator*); + +/** + * Fills array up with at most 'count' time_t values, each + * representing an occurrence time in seconds past the POSIX epoch + */ +int icalrecur_expand_recurrence(char* rule, time_t start, + int count, time_t* array); + + +#endif +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalattach.h + CREATOR: acampi 28 May 02 + + + (C) COPYRIGHT 2002, Andrea Campi + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icalattach.h + +======================================================================*/ + +#ifndef ICALATTACH_H +#define ICALATTACH_H + + +typedef struct icalattach_impl icalattach; + +typedef void (* icalattach_free_fn_t) (unsigned char *data, void *user_data); + +icalattach *icalattach_new_from_url (const char *url); +icalattach *icalattach_new_from_data (const unsigned char *data, + icalattach_free_fn_t free_fn, void *free_fn_data); + +void icalattach_ref (icalattach *attach); +void icalattach_unref (icalattach *attach); + +int icalattach_get_is_url (icalattach *attach); +const char *icalattach_get_url (icalattach *attach); +unsigned char *icalattach_get_data (icalattach *attach); + +struct icalattachtype* icalattachtype_new(void); +void icalattachtype_add_reference(struct icalattachtype* v); +void icalattachtype_free(struct icalattachtype* v); + +void icalattachtype_set_url(struct icalattachtype* v, char* url); +char* icalattachtype_get_url(struct icalattachtype* v); + +void icalattachtype_set_base64(struct icalattachtype* v, char* base64, + int owns); +char* icalattachtype_get_base64(struct icalattachtype* v); + +void icalattachtype_set_binary(struct icalattachtype* v, char* binary, + int owns); +void* icalattachtype_get_binary(struct icalattachtype* v); + + + +#endif /* !ICALATTACH_H */ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalvalue.h + CREATOR: eric 20 March 1999 + + + $Id: ical.h,v 1.6 2002/10/10 00:41:34 acampi Exp $ + $Locker: $ + + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icalvalue.h + + ======================================================================*/ + +#ifndef ICALDERIVEDVALUE_H +#define ICALDERIVEDVALUE_H + + +typedef struct icalvalue_impl icalvalue; + + + +void icalvalue_set_x(icalvalue* value, const char* v); +icalvalue* icalvalue_new_x(const char* v); +const char* icalvalue_get_x(const icalvalue* value); + +icalvalue* icalvalue_new_recur (struct icalrecurrencetype v); +void icalvalue_set_recur(icalvalue* value, struct icalrecurrencetype v); +struct icalrecurrencetype icalvalue_get_recur(const icalvalue* value); + +icalvalue* icalvalue_new_trigger (struct icaltriggertype v); +void icalvalue_set_trigger(icalvalue* value, struct icaltriggertype v); +struct icaltriggertype icalvalue_get_trigger(const icalvalue* value); + +icalvalue* icalvalue_new_datetimeperiod (struct icaldatetimeperiodtype v); +void icalvalue_set_datetimeperiod(icalvalue* value, struct icaldatetimeperiodtype v); +struct icaldatetimeperiodtype icalvalue_get_datetimeperiod(const icalvalue* value); + +icalvalue *icalvalue_new_attach (icalattach *attach); +void icalvalue_set_attach (icalvalue *value, icalattach *attach); +icalattach *icalvalue_get_attach (const icalvalue *value); + +void icalvalue_reset_kind(icalvalue* value); + +typedef enum icalvalue_kind { + ICAL_ANY_VALUE=5000, + ICAL_BOOLEAN_VALUE=5001, + ICAL_UTCOFFSET_VALUE=5002, + ICAL_XLICCLASS_VALUE=5003, + ICAL_RECUR_VALUE=5004, + ICAL_METHOD_VALUE=5005, + ICAL_CALADDRESS_VALUE=5006, + ICAL_PERIOD_VALUE=5007, + ICAL_STATUS_VALUE=5008, + ICAL_BINARY_VALUE=5009, + ICAL_TEXT_VALUE=5010, + ICAL_DURATION_VALUE=5011, + ICAL_DATETIMEPERIOD_VALUE=5012, + ICAL_INTEGER_VALUE=5013, + ICAL_URI_VALUE=5014, + ICAL_TRIGGER_VALUE=5015, + ICAL_ATTACH_VALUE=5016, + ICAL_CLASS_VALUE=5017, + ICAL_FLOAT_VALUE=5018, + ICAL_QUERY_VALUE=5019, + ICAL_STRING_VALUE=5020, + ICAL_TRANSP_VALUE=5021, + ICAL_X_VALUE=5022, + ICAL_DATETIME_VALUE=5023, + ICAL_REQUESTSTATUS_VALUE=5024, + ICAL_GEO_VALUE=5025, + ICAL_DATE_VALUE=5026, + ICAL_ACTION_VALUE=5027, + ICAL_NO_VALUE=5028 +} icalvalue_kind ; + +#define ICALPROPERTY_FIRST_ENUM 10000 + +typedef enum icalproperty_action { + ICAL_ACTION_X = 10000, + ICAL_ACTION_AUDIO = 10001, + ICAL_ACTION_DISPLAY = 10002, + ICAL_ACTION_EMAIL = 10003, + ICAL_ACTION_PROCEDURE = 10004, + ICAL_ACTION_NONE = 10005 +} icalproperty_action; + +typedef enum icalproperty_class { + ICAL_CLASS_X = 10006, + ICAL_CLASS_PUBLIC = 10007, + ICAL_CLASS_PRIVATE = 10008, + ICAL_CLASS_CONFIDENTIAL = 10009, + ICAL_CLASS_NONE = 10010 +} icalproperty_class; + +typedef enum icalproperty_method { + ICAL_METHOD_X = 10011, + ICAL_METHOD_PUBLISH = 10012, + ICAL_METHOD_REQUEST = 10013, + ICAL_METHOD_REPLY = 10014, + ICAL_METHOD_ADD = 10015, + ICAL_METHOD_CANCEL = 10016, + ICAL_METHOD_REFRESH = 10017, + ICAL_METHOD_COUNTER = 10018, + ICAL_METHOD_DECLINECOUNTER = 10019, + ICAL_METHOD_CREATE = 10020, + ICAL_METHOD_READ = 10021, + ICAL_METHOD_RESPONSE = 10022, + ICAL_METHOD_MOVE = 10023, + ICAL_METHOD_MODIFY = 10024, + ICAL_METHOD_GENERATEUID = 10025, + ICAL_METHOD_DELETE = 10026, + ICAL_METHOD_NONE = 10027 +} icalproperty_method; + +typedef enum icalproperty_status { + ICAL_STATUS_X = 10028, + ICAL_STATUS_TENTATIVE = 10029, + ICAL_STATUS_CONFIRMED = 10030, + ICAL_STATUS_COMPLETED = 10031, + ICAL_STATUS_NEEDSACTION = 10032, + ICAL_STATUS_CANCELLED = 10033, + ICAL_STATUS_INPROCESS = 10034, + ICAL_STATUS_DRAFT = 10035, + ICAL_STATUS_FINAL = 10036, + ICAL_STATUS_NONE = 10037 +} icalproperty_status; + +typedef enum icalproperty_transp { + ICAL_TRANSP_X = 10038, + ICAL_TRANSP_OPAQUE = 10039, + ICAL_TRANSP_OPAQUENOCONFLICT = 10040, + ICAL_TRANSP_TRANSPARENT = 10041, + ICAL_TRANSP_TRANSPARENTNOCONFLICT = 10042, + ICAL_TRANSP_NONE = 10043 +} icalproperty_transp; + +typedef enum icalproperty_xlicclass { + ICAL_XLICCLASS_X = 10044, + ICAL_XLICCLASS_PUBLISHNEW = 10045, + ICAL_XLICCLASS_PUBLISHUPDATE = 10046, + ICAL_XLICCLASS_PUBLISHFREEBUSY = 10047, + ICAL_XLICCLASS_REQUESTNEW = 10048, + ICAL_XLICCLASS_REQUESTUPDATE = 10049, + ICAL_XLICCLASS_REQUESTRESCHEDULE = 10050, + ICAL_XLICCLASS_REQUESTDELEGATE = 10051, + ICAL_XLICCLASS_REQUESTNEWORGANIZER = 10052, + ICAL_XLICCLASS_REQUESTFORWARD = 10053, + ICAL_XLICCLASS_REQUESTSTATUS = 10054, + ICAL_XLICCLASS_REQUESTFREEBUSY = 10055, + ICAL_XLICCLASS_REPLYACCEPT = 10056, + ICAL_XLICCLASS_REPLYDECLINE = 10057, + ICAL_XLICCLASS_REPLYDELEGATE = 10058, + ICAL_XLICCLASS_REPLYCRASHERACCEPT = 10059, + ICAL_XLICCLASS_REPLYCRASHERDECLINE = 10060, + ICAL_XLICCLASS_ADDINSTANCE = 10061, + ICAL_XLICCLASS_CANCELEVENT = 10062, + ICAL_XLICCLASS_CANCELINSTANCE = 10063, + ICAL_XLICCLASS_CANCELALL = 10064, + ICAL_XLICCLASS_REFRESH = 10065, + ICAL_XLICCLASS_COUNTER = 10066, + ICAL_XLICCLASS_DECLINECOUNTER = 10067, + ICAL_XLICCLASS_MALFORMED = 10068, + ICAL_XLICCLASS_OBSOLETE = 10069, + ICAL_XLICCLASS_MISSEQUENCED = 10070, + ICAL_XLICCLASS_UNKNOWN = 10071, + ICAL_XLICCLASS_NONE = 10072 +} icalproperty_xlicclass; + +#define ICALPROPERTY_LAST_ENUM 10073 + + + /* BOOLEAN */ +icalvalue* icalvalue_new_boolean(int v); +int icalvalue_get_boolean(const icalvalue* value); +void icalvalue_set_boolean(icalvalue* value, int v); + + + /* UTC-OFFSET */ +icalvalue* icalvalue_new_utcoffset(int v); +int icalvalue_get_utcoffset(const icalvalue* value); +void icalvalue_set_utcoffset(icalvalue* value, int v); + + + /* X-LIC-CLASS */ +icalvalue* icalvalue_new_xlicclass(enum icalproperty_xlicclass v); +enum icalproperty_xlicclass icalvalue_get_xlicclass(const icalvalue* value); +void icalvalue_set_xlicclass(icalvalue* value, enum icalproperty_xlicclass v); + + + /* METHOD */ +icalvalue* icalvalue_new_method(enum icalproperty_method v); +enum icalproperty_method icalvalue_get_method(const icalvalue* value); +void icalvalue_set_method(icalvalue* value, enum icalproperty_method v); + + + /* CAL-ADDRESS */ +icalvalue* icalvalue_new_caladdress(const char* v); +const char* icalvalue_get_caladdress(const icalvalue* value); +void icalvalue_set_caladdress(icalvalue* value, const char* v); + + + /* PERIOD */ +icalvalue* icalvalue_new_period(struct icalperiodtype v); +struct icalperiodtype icalvalue_get_period(const icalvalue* value); +void icalvalue_set_period(icalvalue* value, struct icalperiodtype v); + + + /* STATUS */ +icalvalue* icalvalue_new_status(enum icalproperty_status v); +enum icalproperty_status icalvalue_get_status(const icalvalue* value); +void icalvalue_set_status(icalvalue* value, enum icalproperty_status v); + + + /* BINARY */ +icalvalue* icalvalue_new_binary(const char* v); +const char* icalvalue_get_binary(const icalvalue* value); +void icalvalue_set_binary(icalvalue* value, const char* v); + + + /* TEXT */ +icalvalue* icalvalue_new_text(const char* v); +const char* icalvalue_get_text(const icalvalue* value); +void icalvalue_set_text(icalvalue* value, const char* v); + + + /* DURATION */ +icalvalue* icalvalue_new_duration(struct icaldurationtype v); +struct icaldurationtype icalvalue_get_duration(const icalvalue* value); +void icalvalue_set_duration(icalvalue* value, struct icaldurationtype v); + + + /* INTEGER */ +icalvalue* icalvalue_new_integer(int v); +int icalvalue_get_integer(const icalvalue* value); +void icalvalue_set_integer(icalvalue* value, int v); + + + /* URI */ +icalvalue* icalvalue_new_uri(const char* v); +const char* icalvalue_get_uri(const icalvalue* value); +void icalvalue_set_uri(icalvalue* value, const char* v); + + + /* CLASS */ +icalvalue* icalvalue_new_class(enum icalproperty_class v); +enum icalproperty_class icalvalue_get_class(const icalvalue* value); +void icalvalue_set_class(icalvalue* value, enum icalproperty_class v); + + + /* FLOAT */ +icalvalue* icalvalue_new_float(float v); +float icalvalue_get_float(const icalvalue* value); +void icalvalue_set_float(icalvalue* value, float v); + + + /* QUERY */ +icalvalue* icalvalue_new_query(const char* v); +const char* icalvalue_get_query(const icalvalue* value); +void icalvalue_set_query(icalvalue* value, const char* v); + + + /* STRING */ +icalvalue* icalvalue_new_string(const char* v); +const char* icalvalue_get_string(const icalvalue* value); +void icalvalue_set_string(icalvalue* value, const char* v); + + + /* TRANSP */ +icalvalue* icalvalue_new_transp(enum icalproperty_transp v); +enum icalproperty_transp icalvalue_get_transp(const icalvalue* value); +void icalvalue_set_transp(icalvalue* value, enum icalproperty_transp v); + + + /* DATE-TIME */ +icalvalue* icalvalue_new_datetime(struct icaltimetype v); +struct icaltimetype icalvalue_get_datetime(const icalvalue* value); +void icalvalue_set_datetime(icalvalue* value, struct icaltimetype v); + + + /* REQUEST-STATUS */ +icalvalue* icalvalue_new_requeststatus(struct icalreqstattype v); +struct icalreqstattype icalvalue_get_requeststatus(const icalvalue* value); +void icalvalue_set_requeststatus(icalvalue* value, struct icalreqstattype v); + + + /* GEO */ +icalvalue* icalvalue_new_geo(struct icalgeotype v); +struct icalgeotype icalvalue_get_geo(const icalvalue* value); +void icalvalue_set_geo(icalvalue* value, struct icalgeotype v); + + + /* DATE */ +icalvalue* icalvalue_new_date(struct icaltimetype v); +struct icaltimetype icalvalue_get_date(const icalvalue* value); +void icalvalue_set_date(icalvalue* value, struct icaltimetype v); + + + /* ACTION */ +icalvalue* icalvalue_new_action(enum icalproperty_action v); +enum icalproperty_action icalvalue_get_action(const icalvalue* value); +void icalvalue_set_action(icalvalue* value, enum icalproperty_action v); + +#endif /*ICALVALUE_H*/ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalparam.h + CREATOR: eric 20 March 1999 + + + $Id: ical.h,v 1.6 2002/10/10 00:41:34 acampi Exp $ + $Locker: $ + + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icalparam.h + + ======================================================================*/ + +#ifndef ICALDERIVEDPARAMETER_H +#define ICALDERIVEDPARAMETER_H + + +typedef struct icalparameter_impl icalparameter; + +const char* icalparameter_enum_to_string(int e); +int icalparameter_string_to_enum(const char* str); + +typedef enum icalparameter_kind { + ICAL_ANY_PARAMETER = 0, + ICAL_ALTREP_PARAMETER, + ICAL_CN_PARAMETER, + ICAL_CUTYPE_PARAMETER, + ICAL_DELEGATEDFROM_PARAMETER, + ICAL_DELEGATEDTO_PARAMETER, + ICAL_DIR_PARAMETER, + ICAL_ENCODING_PARAMETER, + ICAL_FBTYPE_PARAMETER, + ICAL_FMTTYPE_PARAMETER, + ICAL_LANGUAGE_PARAMETER, + ICAL_MEMBER_PARAMETER, + ICAL_PARTSTAT_PARAMETER, + ICAL_RANGE_PARAMETER, + ICAL_RELATED_PARAMETER, + ICAL_RELTYPE_PARAMETER, + ICAL_ROLE_PARAMETER, + ICAL_RSVP_PARAMETER, + ICAL_SENTBY_PARAMETER, + ICAL_TZID_PARAMETER, + ICAL_VALUE_PARAMETER, + ICAL_X_PARAMETER, + ICAL_XLICCOMPARETYPE_PARAMETER, + ICAL_XLICERRORTYPE_PARAMETER, + ICAL_NO_PARAMETER +} icalparameter_kind; + +#define ICALPARAMETER_FIRST_ENUM 20000 + +typedef enum icalparameter_cutype { + ICAL_CUTYPE_X = 20000, + ICAL_CUTYPE_INDIVIDUAL = 20001, + ICAL_CUTYPE_GROUP = 20002, + ICAL_CUTYPE_RESOURCE = 20003, + ICAL_CUTYPE_ROOM = 20004, + ICAL_CUTYPE_UNKNOWN = 20005, + ICAL_CUTYPE_NONE = 20006 +} icalparameter_cutype; + +typedef enum icalparameter_encoding { + ICAL_ENCODING_X = 20007, + ICAL_ENCODING_8BIT = 20008, + ICAL_ENCODING_BASE64 = 20009, + ICAL_ENCODING_NONE = 20010 +} icalparameter_encoding; + +typedef enum icalparameter_fbtype { + ICAL_FBTYPE_X = 20011, + ICAL_FBTYPE_FREE = 20012, + ICAL_FBTYPE_BUSY = 20013, + ICAL_FBTYPE_BUSYUNAVAILABLE = 20014, + ICAL_FBTYPE_BUSYTENTATIVE = 20015, + ICAL_FBTYPE_NONE = 20016 +} icalparameter_fbtype; + +typedef enum icalparameter_partstat { + ICAL_PARTSTAT_X = 20017, + ICAL_PARTSTAT_NEEDSACTION = 20018, + ICAL_PARTSTAT_ACCEPTED = 20019, + ICAL_PARTSTAT_DECLINED = 20020, + ICAL_PARTSTAT_TENTATIVE = 20021, + ICAL_PARTSTAT_DELEGATED = 20022, + ICAL_PARTSTAT_COMPLETED = 20023, + ICAL_PARTSTAT_INPROCESS = 20024, + ICAL_PARTSTAT_NONE = 20025 +} icalparameter_partstat; + +typedef enum icalparameter_range { + ICAL_RANGE_X = 20026, + ICAL_RANGE_THISANDPRIOR = 20027, + ICAL_RANGE_THISANDFUTURE = 20028, + ICAL_RANGE_NONE = 20029 +} icalparameter_range; + +typedef enum icalparameter_related { + ICAL_RELATED_X = 20030, + ICAL_RELATED_START = 20031, + ICAL_RELATED_END = 20032, + ICAL_RELATED_NONE = 20033 +} icalparameter_related; + +typedef enum icalparameter_reltype { + ICAL_RELTYPE_X = 20034, + ICAL_RELTYPE_PARENT = 20035, + ICAL_RELTYPE_CHILD = 20036, + ICAL_RELTYPE_SIBLING = 20037, + ICAL_RELTYPE_NONE = 20038 +} icalparameter_reltype; + +typedef enum icalparameter_role { + ICAL_ROLE_X = 20039, + ICAL_ROLE_CHAIR = 20040, + ICAL_ROLE_REQPARTICIPANT = 20041, + ICAL_ROLE_OPTPARTICIPANT = 20042, + ICAL_ROLE_NONPARTICIPANT = 20043, + ICAL_ROLE_NONE = 20044 +} icalparameter_role; + +typedef enum icalparameter_rsvp { + ICAL_RSVP_X = 20045, + ICAL_RSVP_TRUE = 20046, + ICAL_RSVP_FALSE = 20047, + ICAL_RSVP_NONE = 20048 +} icalparameter_rsvp; + +typedef enum icalparameter_value { + ICAL_VALUE_X = 20049, + ICAL_VALUE_BINARY = 20050, + ICAL_VALUE_BOOLEAN = 20051, + ICAL_VALUE_DATE = 20052, + ICAL_VALUE_DURATION = 20053, + ICAL_VALUE_FLOAT = 20054, + ICAL_VALUE_INTEGER = 20055, + ICAL_VALUE_PERIOD = 20056, + ICAL_VALUE_RECUR = 20057, + ICAL_VALUE_TEXT = 20058, + ICAL_VALUE_URI = 20059, + ICAL_VALUE_ERROR = 20060, + ICAL_VALUE_DATETIME = 20061, + ICAL_VALUE_UTCOFFSET = 20062, + ICAL_VALUE_CALADDRESS = 20063, + ICAL_VALUE_NONE = 20064 +} icalparameter_value; + +typedef enum icalparameter_xliccomparetype { + ICAL_XLICCOMPARETYPE_X = 20065, + ICAL_XLICCOMPARETYPE_EQUAL = 20066, + ICAL_XLICCOMPARETYPE_NOTEQUAL = 20067, + ICAL_XLICCOMPARETYPE_LESS = 20068, + ICAL_XLICCOMPARETYPE_GREATER = 20069, + ICAL_XLICCOMPARETYPE_LESSEQUAL = 20070, + ICAL_XLICCOMPARETYPE_GREATEREQUAL = 20071, + ICAL_XLICCOMPARETYPE_REGEX = 20072, + ICAL_XLICCOMPARETYPE_ISNULL = 20073, + ICAL_XLICCOMPARETYPE_ISNOTNULL = 20074, + ICAL_XLICCOMPARETYPE_NONE = 20075 +} icalparameter_xliccomparetype; + +typedef enum icalparameter_xlicerrortype { + ICAL_XLICERRORTYPE_X = 20076, + ICAL_XLICERRORTYPE_COMPONENTPARSEERROR = 20077, + ICAL_XLICERRORTYPE_PROPERTYPARSEERROR = 20078, + ICAL_XLICERRORTYPE_PARAMETERNAMEPARSEERROR = 20079, + ICAL_XLICERRORTYPE_PARAMETERVALUEPARSEERROR = 20080, + ICAL_XLICERRORTYPE_VALUEPARSEERROR = 20081, + ICAL_XLICERRORTYPE_INVALIDITIP = 20082, + ICAL_XLICERRORTYPE_UNKNOWNVCALPROPERROR = 20083, + ICAL_XLICERRORTYPE_MIMEPARSEERROR = 20084, + ICAL_XLICERRORTYPE_VCALPROPPARSEERROR = 20085, + ICAL_XLICERRORTYPE_NONE = 20086 +} icalparameter_xlicerrortype; + +#define ICALPARAMETER_LAST_ENUM 20087 + +/* DELEGATED-FROM */ +icalparameter* icalparameter_new_delegatedfrom(const char* v); +const char* icalparameter_get_delegatedfrom(const icalparameter* value); +void icalparameter_set_delegatedfrom(icalparameter* value, const char* v); + +/* RELATED */ +icalparameter* icalparameter_new_related(icalparameter_related v); +icalparameter_related icalparameter_get_related(const icalparameter* value); +void icalparameter_set_related(icalparameter* value, icalparameter_related v); + +/* SENT-BY */ +icalparameter* icalparameter_new_sentby(const char* v); +const char* icalparameter_get_sentby(const icalparameter* value); +void icalparameter_set_sentby(icalparameter* value, const char* v); + +/* LANGUAGE */ +icalparameter* icalparameter_new_language(const char* v); +const char* icalparameter_get_language(const icalparameter* value); +void icalparameter_set_language(icalparameter* value, const char* v); + +/* RELTYPE */ +icalparameter* icalparameter_new_reltype(icalparameter_reltype v); +icalparameter_reltype icalparameter_get_reltype(const icalparameter* value); +void icalparameter_set_reltype(icalparameter* value, icalparameter_reltype v); + +/* ENCODING */ +icalparameter* icalparameter_new_encoding(icalparameter_encoding v); +icalparameter_encoding icalparameter_get_encoding(const icalparameter* value); +void icalparameter_set_encoding(icalparameter* value, icalparameter_encoding v); + +/* ALTREP */ +icalparameter* icalparameter_new_altrep(const char* v); +const char* icalparameter_get_altrep(const icalparameter* value); +void icalparameter_set_altrep(icalparameter* value, const char* v); + +/* FMTTYPE */ +icalparameter* icalparameter_new_fmttype(const char* v); +const char* icalparameter_get_fmttype(const icalparameter* value); +void icalparameter_set_fmttype(icalparameter* value, const char* v); + +/* FBTYPE */ +icalparameter* icalparameter_new_fbtype(icalparameter_fbtype v); +icalparameter_fbtype icalparameter_get_fbtype(const icalparameter* value); +void icalparameter_set_fbtype(icalparameter* value, icalparameter_fbtype v); + +/* RSVP */ +icalparameter* icalparameter_new_rsvp(icalparameter_rsvp v); +icalparameter_rsvp icalparameter_get_rsvp(const icalparameter* value); +void icalparameter_set_rsvp(icalparameter* value, icalparameter_rsvp v); + +/* RANGE */ +icalparameter* icalparameter_new_range(icalparameter_range v); +icalparameter_range icalparameter_get_range(const icalparameter* value); +void icalparameter_set_range(icalparameter* value, icalparameter_range v); + +/* DELEGATED-TO */ +icalparameter* icalparameter_new_delegatedto(const char* v); +const char* icalparameter_get_delegatedto(const icalparameter* value); +void icalparameter_set_delegatedto(icalparameter* value, const char* v); + +/* CN */ +icalparameter* icalparameter_new_cn(const char* v); +const char* icalparameter_get_cn(const icalparameter* value); +void icalparameter_set_cn(icalparameter* value, const char* v); + +/* ROLE */ +icalparameter* icalparameter_new_role(icalparameter_role v); +icalparameter_role icalparameter_get_role(const icalparameter* value); +void icalparameter_set_role(icalparameter* value, icalparameter_role v); + +/* X-LIC-COMPARETYPE */ +icalparameter* icalparameter_new_xliccomparetype(icalparameter_xliccomparetype v); +icalparameter_xliccomparetype icalparameter_get_xliccomparetype(const icalparameter* value); +void icalparameter_set_xliccomparetype(icalparameter* value, icalparameter_xliccomparetype v); + +/* PARTSTAT */ +icalparameter* icalparameter_new_partstat(icalparameter_partstat v); +icalparameter_partstat icalparameter_get_partstat(const icalparameter* value); +void icalparameter_set_partstat(icalparameter* value, icalparameter_partstat v); + +/* X-LIC-ERRORTYPE */ +icalparameter* icalparameter_new_xlicerrortype(icalparameter_xlicerrortype v); +icalparameter_xlicerrortype icalparameter_get_xlicerrortype(const icalparameter* value); +void icalparameter_set_xlicerrortype(icalparameter* value, icalparameter_xlicerrortype v); + +/* MEMBER */ +icalparameter* icalparameter_new_member(const char* v); +const char* icalparameter_get_member(const icalparameter* value); +void icalparameter_set_member(icalparameter* value, const char* v); + +/* X */ +icalparameter* icalparameter_new_x(const char* v); +const char* icalparameter_get_x(const icalparameter* value); +void icalparameter_set_x(icalparameter* value, const char* v); + +/* CUTYPE */ +icalparameter* icalparameter_new_cutype(icalparameter_cutype v); +icalparameter_cutype icalparameter_get_cutype(const icalparameter* value); +void icalparameter_set_cutype(icalparameter* value, icalparameter_cutype v); + +/* TZID */ +icalparameter* icalparameter_new_tzid(const char* v); +const char* icalparameter_get_tzid(const icalparameter* value); +void icalparameter_set_tzid(icalparameter* value, const char* v); + +/* VALUE */ +icalparameter* icalparameter_new_value(icalparameter_value v); +icalparameter_value icalparameter_get_value(const icalparameter* value); +void icalparameter_set_value(icalparameter* value, icalparameter_value v); + +/* DIR */ +icalparameter* icalparameter_new_dir(const char* v); +const char* icalparameter_get_dir(const icalparameter* value); +void icalparameter_set_dir(icalparameter* value, const char* v); + +#endif /*ICALPARAMETER_H*/ + +/* Everything below this line is machine generated. Do not edit. */ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalvalue.h + CREATOR: eric 20 March 1999 + + + $Id: ical.h,v 1.6 2002/10/10 00:41:34 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icalvalue.h + + ======================================================================*/ + +#ifndef ICALVALUE_H +#define ICALVALUE_H + +#include + +/* Defined in icalderivedvalue.h */ +/*typedef struct icalvalue_impl icalvalue;*/ + +icalvalue* icalvalue_new(icalvalue_kind kind); + +icalvalue* icalvalue_new_clone(const icalvalue* value); + +icalvalue* icalvalue_new_from_string(icalvalue_kind kind, const char* str); + +void icalvalue_free(icalvalue* value); + +int icalvalue_is_valid(const icalvalue* value); + +const char* icalvalue_as_ical_string(const icalvalue* value); + +icalvalue_kind icalvalue_isa(const icalvalue* value); + +int icalvalue_isa_value(void*); + +icalparameter_xliccomparetype icalvalue_compare(const icalvalue* a, const icalvalue *b); + + +/* Special, non autogenerated value accessors */ + +icalvalue* icalvalue_new_recur (struct icalrecurrencetype v); +void icalvalue_set_recur(icalvalue* value, struct icalrecurrencetype v); +struct icalrecurrencetype icalvalue_get_recur(const icalvalue* value); + +icalvalue* icalvalue_new_trigger (struct icaltriggertype v); +void icalvalue_set_trigger(icalvalue* value, struct icaltriggertype v); +struct icaltriggertype icalvalue_get_trigger(const icalvalue* value); + +icalvalue* icalvalue_new_datetimeperiod (struct icaldatetimeperiodtype v); +void icalvalue_set_datetimeperiod(icalvalue* value, + struct icaldatetimeperiodtype v); +struct icaldatetimeperiodtype icalvalue_get_datetimeperiod(const icalvalue* value); + +/* Convert enumerations */ + +icalvalue_kind icalvalue_string_to_kind(const char* str); +const char* icalvalue_kind_to_string(const icalvalue_kind kind); + +/** Check validity of a specific icalvalue_kind **/ +int icalvalue_kind_is_valid(const icalvalue_kind kind); + +/** Encode a character string in ical format, esacpe certain characters, etc. */ +int icalvalue_encode_ical_string(const char *szText, char *szEncText, int MaxBufferLen); + +#endif /*ICALVALUE_H*/ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalparam.h + CREATOR: eric 20 March 1999 + + + $Id: ical.h,v 1.6 2002/10/10 00:41:34 acampi Exp $ + $Locker: $ + + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icalparam.h + + ======================================================================*/ + +#ifndef ICALPARAM_H +#define ICALPARAM_H + + +/* Declared in icalderivedparameter.h */ +/*typedef struct icalparameter_impl icalparameter;*/ + +icalparameter* icalparameter_new(icalparameter_kind kind); +icalparameter* icalparameter_new_clone(icalparameter* p); + +/* Create from string of form "PARAMNAME=VALUE" */ +icalparameter* icalparameter_new_from_string(const char* value); + +/* Create from just the value, the part after the "=" */ +icalparameter* icalparameter_new_from_value_string(icalparameter_kind kind, const char* value); + +void icalparameter_free(icalparameter* parameter); + +char* icalparameter_as_ical_string(icalparameter* parameter); + +int icalparameter_is_valid(icalparameter* parameter); + +icalparameter_kind icalparameter_isa(icalparameter* parameter); + +int icalparameter_isa_parameter(void* param); + +/* Acess the name of an X parameer */ +void icalparameter_set_xname (icalparameter* param, const char* v); +const char* icalparameter_get_xname(icalparameter* param); +void icalparameter_set_xvalue (icalparameter* param, const char* v); +const char* icalparameter_get_xvalue(icalparameter* param); + +/* Convert enumerations */ + +const char* icalparameter_kind_to_string(icalparameter_kind kind); +icalparameter_kind icalparameter_string_to_kind(const char* string); + + + +#endif +/* -*- Mode: C -*- + ====================================================================== + FILE: icalderivedproperties.{c,h} + CREATOR: eric 09 May 1999 + + $Id: ical.h,v 1.6 2002/10/10 00:41:34 acampi Exp $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + ======================================================================*/ + + +#ifndef ICALDERIVEDPROPERTY_H +#define ICALDERIVEDPROPERTY_H + +#include + +typedef struct icalproperty_impl icalproperty; + +typedef enum icalproperty_kind { + ICAL_ANY_PROPERTY = 0, + ICAL_ACTION_PROPERTY, + ICAL_ALLOWCONFLICT_PROPERTY, + ICAL_ATTACH_PROPERTY, + ICAL_ATTENDEE_PROPERTY, + ICAL_CALID_PROPERTY, + ICAL_CALMASTER_PROPERTY, + ICAL_CALSCALE_PROPERTY, + ICAL_CARID_PROPERTY, + ICAL_CATEGORIES_PROPERTY, + ICAL_CLASS_PROPERTY, + ICAL_COMMENT_PROPERTY, + ICAL_COMPLETED_PROPERTY, + ICAL_CONTACT_PROPERTY, + ICAL_CREATED_PROPERTY, + ICAL_DECREED_PROPERTY, + ICAL_DEFAULTCHARSET_PROPERTY, + ICAL_DEFAULTLOCALE_PROPERTY, + ICAL_DEFAULTTZID_PROPERTY, + ICAL_DESCRIPTION_PROPERTY, + ICAL_DTEND_PROPERTY, + ICAL_DTSTAMP_PROPERTY, + ICAL_DTSTART_PROPERTY, + ICAL_DUE_PROPERTY, + ICAL_DURATION_PROPERTY, + ICAL_EXDATE_PROPERTY, + ICAL_EXPAND_PROPERTY, + ICAL_EXRULE_PROPERTY, + ICAL_FREEBUSY_PROPERTY, + ICAL_GEO_PROPERTY, + ICAL_LASTMODIFIED_PROPERTY, + ICAL_LOCATION_PROPERTY, + ICAL_MAXRESULTS_PROPERTY, + ICAL_MAXRESULTSSIZE_PROPERTY, + ICAL_METHOD_PROPERTY, + ICAL_ORGANIZER_PROPERTY, + ICAL_OWNER_PROPERTY, + ICAL_PERCENTCOMPLETE_PROPERTY, + ICAL_PRIORITY_PROPERTY, + ICAL_PRODID_PROPERTY, + ICAL_QUERY_PROPERTY, + ICAL_QUERYNAME_PROPERTY, + ICAL_RDATE_PROPERTY, + ICAL_RECURRENCEID_PROPERTY, + ICAL_RELATEDTO_PROPERTY, + ICAL_RELCALID_PROPERTY, + ICAL_REPEAT_PROPERTY, + ICAL_REQUESTSTATUS_PROPERTY, + ICAL_RESOURCES_PROPERTY, + ICAL_RRULE_PROPERTY, + ICAL_SCOPE_PROPERTY, + ICAL_SEQUENCE_PROPERTY, + ICAL_STATUS_PROPERTY, + ICAL_SUMMARY_PROPERTY, + ICAL_TARGET_PROPERTY, + ICAL_TRANSP_PROPERTY, + ICAL_TRIGGER_PROPERTY, + ICAL_TZID_PROPERTY, + ICAL_TZNAME_PROPERTY, + ICAL_TZOFFSETFROM_PROPERTY, + ICAL_TZOFFSETTO_PROPERTY, + ICAL_TZURL_PROPERTY, + ICAL_UID_PROPERTY, + ICAL_URL_PROPERTY, + ICAL_VERSION_PROPERTY, + ICAL_X_PROPERTY, + ICAL_XLICCLASS_PROPERTY, + ICAL_XLICCLUSTERCOUNT_PROPERTY, + ICAL_XLICERROR_PROPERTY, + ICAL_XLICMIMECHARSET_PROPERTY, + ICAL_XLICMIMECID_PROPERTY, + ICAL_XLICMIMECONTENTTYPE_PROPERTY, + ICAL_XLICMIMEENCODING_PROPERTY, + ICAL_XLICMIMEFILENAME_PROPERTY, + ICAL_XLICMIMEOPTINFO_PROPERTY, + ICAL_NO_PROPERTY +} icalproperty_kind; + + +/* ACTION */ +icalproperty* icalproperty_new_action(enum icalproperty_action v); +void icalproperty_set_action(icalproperty* prop, enum icalproperty_action v); +enum icalproperty_action icalproperty_get_action(const icalproperty* prop);icalproperty* icalproperty_vanew_action(enum icalproperty_action v, ...); + +/* ALLOW-CONFLICT */ +icalproperty* icalproperty_new_allowconflict(const char* v); +void icalproperty_set_allowconflict(icalproperty* prop, const char* v); +const char* icalproperty_get_allowconflict(const icalproperty* prop);icalproperty* icalproperty_vanew_allowconflict(const char* v, ...); + +/* ATTACH */ +icalproperty* icalproperty_new_attach(icalattach * v); +void icalproperty_set_attach(icalproperty* prop, icalattach * v); +icalattach * icalproperty_get_attach(const icalproperty* prop);icalproperty* icalproperty_vanew_attach(icalattach * v, ...); + +/* ATTENDEE */ +icalproperty* icalproperty_new_attendee(const char* v); +void icalproperty_set_attendee(icalproperty* prop, const char* v); +const char* icalproperty_get_attendee(const icalproperty* prop);icalproperty* icalproperty_vanew_attendee(const char* v, ...); + +/* CALID */ +icalproperty* icalproperty_new_calid(const char* v); +void icalproperty_set_calid(icalproperty* prop, const char* v); +const char* icalproperty_get_calid(const icalproperty* prop);icalproperty* icalproperty_vanew_calid(const char* v, ...); + +/* CALMASTER */ +icalproperty* icalproperty_new_calmaster(const char* v); +void icalproperty_set_calmaster(icalproperty* prop, const char* v); +const char* icalproperty_get_calmaster(const icalproperty* prop);icalproperty* icalproperty_vanew_calmaster(const char* v, ...); + +/* CALSCALE */ +icalproperty* icalproperty_new_calscale(const char* v); +void icalproperty_set_calscale(icalproperty* prop, const char* v); +const char* icalproperty_get_calscale(const icalproperty* prop);icalproperty* icalproperty_vanew_calscale(const char* v, ...); + +/* CARID */ +icalproperty* icalproperty_new_carid(const char* v); +void icalproperty_set_carid(icalproperty* prop, const char* v); +const char* icalproperty_get_carid(const icalproperty* prop);icalproperty* icalproperty_vanew_carid(const char* v, ...); + +/* CATEGORIES */ +icalproperty* icalproperty_new_categories(const char* v); +void icalproperty_set_categories(icalproperty* prop, const char* v); +const char* icalproperty_get_categories(const icalproperty* prop);icalproperty* icalproperty_vanew_categories(const char* v, ...); + +/* CLASS */ +icalproperty* icalproperty_new_class(enum icalproperty_class v); +void icalproperty_set_class(icalproperty* prop, enum icalproperty_class v); +enum icalproperty_class icalproperty_get_class(const icalproperty* prop);icalproperty* icalproperty_vanew_class(enum icalproperty_class v, ...); + +/* COMMENT */ +icalproperty* icalproperty_new_comment(const char* v); +void icalproperty_set_comment(icalproperty* prop, const char* v); +const char* icalproperty_get_comment(const icalproperty* prop);icalproperty* icalproperty_vanew_comment(const char* v, ...); + +/* COMPLETED */ +icalproperty* icalproperty_new_completed(struct icaltimetype v); +void icalproperty_set_completed(icalproperty* prop, struct icaltimetype v); +struct icaltimetype icalproperty_get_completed(const icalproperty* prop);icalproperty* icalproperty_vanew_completed(struct icaltimetype v, ...); + +/* CONTACT */ +icalproperty* icalproperty_new_contact(const char* v); +void icalproperty_set_contact(icalproperty* prop, const char* v); +const char* icalproperty_get_contact(const icalproperty* prop);icalproperty* icalproperty_vanew_contact(const char* v, ...); + +/* CREATED */ +icalproperty* icalproperty_new_created(struct icaltimetype v); +void icalproperty_set_created(icalproperty* prop, struct icaltimetype v); +struct icaltimetype icalproperty_get_created(const icalproperty* prop);icalproperty* icalproperty_vanew_created(struct icaltimetype v, ...); + +/* DECREED */ +icalproperty* icalproperty_new_decreed(const char* v); +void icalproperty_set_decreed(icalproperty* prop, const char* v); +const char* icalproperty_get_decreed(const icalproperty* prop);icalproperty* icalproperty_vanew_decreed(const char* v, ...); + +/* DEFAULT-CHARSET */ +icalproperty* icalproperty_new_defaultcharset(const char* v); +void icalproperty_set_defaultcharset(icalproperty* prop, const char* v); +const char* icalproperty_get_defaultcharset(const icalproperty* prop);icalproperty* icalproperty_vanew_defaultcharset(const char* v, ...); + +/* DEFAULT-LOCALE */ +icalproperty* icalproperty_new_defaultlocale(const char* v); +void icalproperty_set_defaultlocale(icalproperty* prop, const char* v); +const char* icalproperty_get_defaultlocale(const icalproperty* prop);icalproperty* icalproperty_vanew_defaultlocale(const char* v, ...); + +/* DEFAULT-TZID */ +icalproperty* icalproperty_new_defaulttzid(const char* v); +void icalproperty_set_defaulttzid(icalproperty* prop, const char* v); +const char* icalproperty_get_defaulttzid(const icalproperty* prop);icalproperty* icalproperty_vanew_defaulttzid(const char* v, ...); + +/* DESCRIPTION */ +icalproperty* icalproperty_new_description(const char* v); +void icalproperty_set_description(icalproperty* prop, const char* v); +const char* icalproperty_get_description(const icalproperty* prop);icalproperty* icalproperty_vanew_description(const char* v, ...); + +/* DTEND */ +icalproperty* icalproperty_new_dtend(struct icaltimetype v); +void icalproperty_set_dtend(icalproperty* prop, struct icaltimetype v); +struct icaltimetype icalproperty_get_dtend(const icalproperty* prop);icalproperty* icalproperty_vanew_dtend(struct icaltimetype v, ...); + +/* DTSTAMP */ +icalproperty* icalproperty_new_dtstamp(struct icaltimetype v); +void icalproperty_set_dtstamp(icalproperty* prop, struct icaltimetype v); +struct icaltimetype icalproperty_get_dtstamp(const icalproperty* prop);icalproperty* icalproperty_vanew_dtstamp(struct icaltimetype v, ...); + +/* DTSTART */ +icalproperty* icalproperty_new_dtstart(struct icaltimetype v); +void icalproperty_set_dtstart(icalproperty* prop, struct icaltimetype v); +struct icaltimetype icalproperty_get_dtstart(const icalproperty* prop);icalproperty* icalproperty_vanew_dtstart(struct icaltimetype v, ...); + +/* DUE */ +icalproperty* icalproperty_new_due(struct icaltimetype v); +void icalproperty_set_due(icalproperty* prop, struct icaltimetype v); +struct icaltimetype icalproperty_get_due(const icalproperty* prop);icalproperty* icalproperty_vanew_due(struct icaltimetype v, ...); + +/* DURATION */ +icalproperty* icalproperty_new_duration(struct icaldurationtype v); +void icalproperty_set_duration(icalproperty* prop, struct icaldurationtype v); +struct icaldurationtype icalproperty_get_duration(const icalproperty* prop);icalproperty* icalproperty_vanew_duration(struct icaldurationtype v, ...); + +/* EXDATE */ +icalproperty* icalproperty_new_exdate(struct icaltimetype v); +void icalproperty_set_exdate(icalproperty* prop, struct icaltimetype v); +struct icaltimetype icalproperty_get_exdate(const icalproperty* prop);icalproperty* icalproperty_vanew_exdate(struct icaltimetype v, ...); + +/* EXPAND */ +icalproperty* icalproperty_new_expand(int v); +void icalproperty_set_expand(icalproperty* prop, int v); +int icalproperty_get_expand(const icalproperty* prop);icalproperty* icalproperty_vanew_expand(int v, ...); + +/* EXRULE */ +icalproperty* icalproperty_new_exrule(struct icalrecurrencetype v); +void icalproperty_set_exrule(icalproperty* prop, struct icalrecurrencetype v); +struct icalrecurrencetype icalproperty_get_exrule(const icalproperty* prop);icalproperty* icalproperty_vanew_exrule(struct icalrecurrencetype v, ...); + +/* FREEBUSY */ +icalproperty* icalproperty_new_freebusy(struct icalperiodtype v); +void icalproperty_set_freebusy(icalproperty* prop, struct icalperiodtype v); +struct icalperiodtype icalproperty_get_freebusy(const icalproperty* prop);icalproperty* icalproperty_vanew_freebusy(struct icalperiodtype v, ...); + +/* GEO */ +icalproperty* icalproperty_new_geo(struct icalgeotype v); +void icalproperty_set_geo(icalproperty* prop, struct icalgeotype v); +struct icalgeotype icalproperty_get_geo(const icalproperty* prop);icalproperty* icalproperty_vanew_geo(struct icalgeotype v, ...); + +/* LAST-MODIFIED */ +icalproperty* icalproperty_new_lastmodified(struct icaltimetype v); +void icalproperty_set_lastmodified(icalproperty* prop, struct icaltimetype v); +struct icaltimetype icalproperty_get_lastmodified(const icalproperty* prop);icalproperty* icalproperty_vanew_lastmodified(struct icaltimetype v, ...); + +/* LOCATION */ +icalproperty* icalproperty_new_location(const char* v); +void icalproperty_set_location(icalproperty* prop, const char* v); +const char* icalproperty_get_location(const icalproperty* prop);icalproperty* icalproperty_vanew_location(const char* v, ...); + +/* MAXRESULTS */ +icalproperty* icalproperty_new_maxresults(int v); +void icalproperty_set_maxresults(icalproperty* prop, int v); +int icalproperty_get_maxresults(const icalproperty* prop);icalproperty* icalproperty_vanew_maxresults(int v, ...); + +/* MAXRESULTSSIZE */ +icalproperty* icalproperty_new_maxresultssize(int v); +void icalproperty_set_maxresultssize(icalproperty* prop, int v); +int icalproperty_get_maxresultssize(const icalproperty* prop);icalproperty* icalproperty_vanew_maxresultssize(int v, ...); + +/* METHOD */ +icalproperty* icalproperty_new_method(enum icalproperty_method v); +void icalproperty_set_method(icalproperty* prop, enum icalproperty_method v); +enum icalproperty_method icalproperty_get_method(const icalproperty* prop);icalproperty* icalproperty_vanew_method(enum icalproperty_method v, ...); + +/* ORGANIZER */ +icalproperty* icalproperty_new_organizer(const char* v); +void icalproperty_set_organizer(icalproperty* prop, const char* v); +const char* icalproperty_get_organizer(const icalproperty* prop);icalproperty* icalproperty_vanew_organizer(const char* v, ...); + +/* OWNER */ +icalproperty* icalproperty_new_owner(const char* v); +void icalproperty_set_owner(icalproperty* prop, const char* v); +const char* icalproperty_get_owner(const icalproperty* prop);icalproperty* icalproperty_vanew_owner(const char* v, ...); + +/* PERCENT-COMPLETE */ +icalproperty* icalproperty_new_percentcomplete(int v); +void icalproperty_set_percentcomplete(icalproperty* prop, int v); +int icalproperty_get_percentcomplete(const icalproperty* prop);icalproperty* icalproperty_vanew_percentcomplete(int v, ...); + +/* PRIORITY */ +icalproperty* icalproperty_new_priority(int v); +void icalproperty_set_priority(icalproperty* prop, int v); +int icalproperty_get_priority(const icalproperty* prop);icalproperty* icalproperty_vanew_priority(int v, ...); + +/* PRODID */ +icalproperty* icalproperty_new_prodid(const char* v); +void icalproperty_set_prodid(icalproperty* prop, const char* v); +const char* icalproperty_get_prodid(const icalproperty* prop);icalproperty* icalproperty_vanew_prodid(const char* v, ...); + +/* QUERY */ +icalproperty* icalproperty_new_query(const char* v); +void icalproperty_set_query(icalproperty* prop, const char* v); +const char* icalproperty_get_query(const icalproperty* prop);icalproperty* icalproperty_vanew_query(const char* v, ...); + +/* QUERYNAME */ +icalproperty* icalproperty_new_queryname(const char* v); +void icalproperty_set_queryname(icalproperty* prop, const char* v); +const char* icalproperty_get_queryname(const icalproperty* prop);icalproperty* icalproperty_vanew_queryname(const char* v, ...); + +/* RDATE */ +icalproperty* icalproperty_new_rdate(struct icaldatetimeperiodtype v); +void icalproperty_set_rdate(icalproperty* prop, struct icaldatetimeperiodtype v); +struct icaldatetimeperiodtype icalproperty_get_rdate(const icalproperty* prop);icalproperty* icalproperty_vanew_rdate(struct icaldatetimeperiodtype v, ...); + +/* RECURRENCE-ID */ +icalproperty* icalproperty_new_recurrenceid(struct icaltimetype v); +void icalproperty_set_recurrenceid(icalproperty* prop, struct icaltimetype v); +struct icaltimetype icalproperty_get_recurrenceid(const icalproperty* prop);icalproperty* icalproperty_vanew_recurrenceid(struct icaltimetype v, ...); + +/* RELATED-TO */ +icalproperty* icalproperty_new_relatedto(const char* v); +void icalproperty_set_relatedto(icalproperty* prop, const char* v); +const char* icalproperty_get_relatedto(const icalproperty* prop);icalproperty* icalproperty_vanew_relatedto(const char* v, ...); + +/* RELCALID */ +icalproperty* icalproperty_new_relcalid(const char* v); +void icalproperty_set_relcalid(icalproperty* prop, const char* v); +const char* icalproperty_get_relcalid(const icalproperty* prop);icalproperty* icalproperty_vanew_relcalid(const char* v, ...); + +/* REPEAT */ +icalproperty* icalproperty_new_repeat(int v); +void icalproperty_set_repeat(icalproperty* prop, int v); +int icalproperty_get_repeat(const icalproperty* prop);icalproperty* icalproperty_vanew_repeat(int v, ...); + +/* REQUEST-STATUS */ +icalproperty* icalproperty_new_requeststatus(struct icalreqstattype v); +void icalproperty_set_requeststatus(icalproperty* prop, struct icalreqstattype v); +struct icalreqstattype icalproperty_get_requeststatus(const icalproperty* prop);icalproperty* icalproperty_vanew_requeststatus(struct icalreqstattype v, ...); + +/* RESOURCES */ +icalproperty* icalproperty_new_resources(const char* v); +void icalproperty_set_resources(icalproperty* prop, const char* v); +const char* icalproperty_get_resources(const icalproperty* prop);icalproperty* icalproperty_vanew_resources(const char* v, ...); + +/* RRULE */ +icalproperty* icalproperty_new_rrule(struct icalrecurrencetype v); +void icalproperty_set_rrule(icalproperty* prop, struct icalrecurrencetype v); +struct icalrecurrencetype icalproperty_get_rrule(const icalproperty* prop);icalproperty* icalproperty_vanew_rrule(struct icalrecurrencetype v, ...); + +/* SCOPE */ +icalproperty* icalproperty_new_scope(const char* v); +void icalproperty_set_scope(icalproperty* prop, const char* v); +const char* icalproperty_get_scope(const icalproperty* prop);icalproperty* icalproperty_vanew_scope(const char* v, ...); + +/* SEQUENCE */ +icalproperty* icalproperty_new_sequence(int v); +void icalproperty_set_sequence(icalproperty* prop, int v); +int icalproperty_get_sequence(const icalproperty* prop);icalproperty* icalproperty_vanew_sequence(int v, ...); + +/* STATUS */ +icalproperty* icalproperty_new_status(enum icalproperty_status v); +void icalproperty_set_status(icalproperty* prop, enum icalproperty_status v); +enum icalproperty_status icalproperty_get_status(const icalproperty* prop);icalproperty* icalproperty_vanew_status(enum icalproperty_status v, ...); + +/* SUMMARY */ +icalproperty* icalproperty_new_summary(const char* v); +void icalproperty_set_summary(icalproperty* prop, const char* v); +const char* icalproperty_get_summary(const icalproperty* prop);icalproperty* icalproperty_vanew_summary(const char* v, ...); + +/* TARGET */ +icalproperty* icalproperty_new_target(const char* v); +void icalproperty_set_target(icalproperty* prop, const char* v); +const char* icalproperty_get_target(const icalproperty* prop);icalproperty* icalproperty_vanew_target(const char* v, ...); + +/* TRANSP */ +icalproperty* icalproperty_new_transp(enum icalproperty_transp v); +void icalproperty_set_transp(icalproperty* prop, enum icalproperty_transp v); +enum icalproperty_transp icalproperty_get_transp(const icalproperty* prop);icalproperty* icalproperty_vanew_transp(enum icalproperty_transp v, ...); + +/* TRIGGER */ +icalproperty* icalproperty_new_trigger(struct icaltriggertype v); +void icalproperty_set_trigger(icalproperty* prop, struct icaltriggertype v); +struct icaltriggertype icalproperty_get_trigger(const icalproperty* prop);icalproperty* icalproperty_vanew_trigger(struct icaltriggertype v, ...); + +/* TZID */ +icalproperty* icalproperty_new_tzid(const char* v); +void icalproperty_set_tzid(icalproperty* prop, const char* v); +const char* icalproperty_get_tzid(const icalproperty* prop);icalproperty* icalproperty_vanew_tzid(const char* v, ...); + +/* TZNAME */ +icalproperty* icalproperty_new_tzname(const char* v); +void icalproperty_set_tzname(icalproperty* prop, const char* v); +const char* icalproperty_get_tzname(const icalproperty* prop);icalproperty* icalproperty_vanew_tzname(const char* v, ...); + +/* TZOFFSETFROM */ +icalproperty* icalproperty_new_tzoffsetfrom(int v); +void icalproperty_set_tzoffsetfrom(icalproperty* prop, int v); +int icalproperty_get_tzoffsetfrom(const icalproperty* prop);icalproperty* icalproperty_vanew_tzoffsetfrom(int v, ...); + +/* TZOFFSETTO */ +icalproperty* icalproperty_new_tzoffsetto(int v); +void icalproperty_set_tzoffsetto(icalproperty* prop, int v); +int icalproperty_get_tzoffsetto(const icalproperty* prop);icalproperty* icalproperty_vanew_tzoffsetto(int v, ...); + +/* TZURL */ +icalproperty* icalproperty_new_tzurl(const char* v); +void icalproperty_set_tzurl(icalproperty* prop, const char* v); +const char* icalproperty_get_tzurl(const icalproperty* prop);icalproperty* icalproperty_vanew_tzurl(const char* v, ...); + +/* UID */ +icalproperty* icalproperty_new_uid(const char* v); +void icalproperty_set_uid(icalproperty* prop, const char* v); +const char* icalproperty_get_uid(const icalproperty* prop);icalproperty* icalproperty_vanew_uid(const char* v, ...); + +/* URL */ +icalproperty* icalproperty_new_url(const char* v); +void icalproperty_set_url(icalproperty* prop, const char* v); +const char* icalproperty_get_url(const icalproperty* prop);icalproperty* icalproperty_vanew_url(const char* v, ...); + +/* VERSION */ +icalproperty* icalproperty_new_version(const char* v); +void icalproperty_set_version(icalproperty* prop, const char* v); +const char* icalproperty_get_version(const icalproperty* prop);icalproperty* icalproperty_vanew_version(const char* v, ...); + +/* X */ +icalproperty* icalproperty_new_x(const char* v); +void icalproperty_set_x(icalproperty* prop, const char* v); +const char* icalproperty_get_x(const icalproperty* prop);icalproperty* icalproperty_vanew_x(const char* v, ...); + +/* X-LIC-CLASS */ +icalproperty* icalproperty_new_xlicclass(enum icalproperty_xlicclass v); +void icalproperty_set_xlicclass(icalproperty* prop, enum icalproperty_xlicclass v); +enum icalproperty_xlicclass icalproperty_get_xlicclass(const icalproperty* prop);icalproperty* icalproperty_vanew_xlicclass(enum icalproperty_xlicclass v, ...); + +/* X-LIC-CLUSTERCOUNT */ +icalproperty* icalproperty_new_xlicclustercount(const char* v); +void icalproperty_set_xlicclustercount(icalproperty* prop, const char* v); +const char* icalproperty_get_xlicclustercount(const icalproperty* prop);icalproperty* icalproperty_vanew_xlicclustercount(const char* v, ...); + +/* X-LIC-ERROR */ +icalproperty* icalproperty_new_xlicerror(const char* v); +void icalproperty_set_xlicerror(icalproperty* prop, const char* v); +const char* icalproperty_get_xlicerror(const icalproperty* prop);icalproperty* icalproperty_vanew_xlicerror(const char* v, ...); + +/* X-LIC-MIMECHARSET */ +icalproperty* icalproperty_new_xlicmimecharset(const char* v); +void icalproperty_set_xlicmimecharset(icalproperty* prop, const char* v); +const char* icalproperty_get_xlicmimecharset(const icalproperty* prop);icalproperty* icalproperty_vanew_xlicmimecharset(const char* v, ...); + +/* X-LIC-MIMECID */ +icalproperty* icalproperty_new_xlicmimecid(const char* v); +void icalproperty_set_xlicmimecid(icalproperty* prop, const char* v); +const char* icalproperty_get_xlicmimecid(const icalproperty* prop);icalproperty* icalproperty_vanew_xlicmimecid(const char* v, ...); + +/* X-LIC-MIMECONTENTTYPE */ +icalproperty* icalproperty_new_xlicmimecontenttype(const char* v); +void icalproperty_set_xlicmimecontenttype(icalproperty* prop, const char* v); +const char* icalproperty_get_xlicmimecontenttype(const icalproperty* prop);icalproperty* icalproperty_vanew_xlicmimecontenttype(const char* v, ...); + +/* X-LIC-MIMEENCODING */ +icalproperty* icalproperty_new_xlicmimeencoding(const char* v); +void icalproperty_set_xlicmimeencoding(icalproperty* prop, const char* v); +const char* icalproperty_get_xlicmimeencoding(const icalproperty* prop);icalproperty* icalproperty_vanew_xlicmimeencoding(const char* v, ...); + +/* X-LIC-MIMEFILENAME */ +icalproperty* icalproperty_new_xlicmimefilename(const char* v); +void icalproperty_set_xlicmimefilename(icalproperty* prop, const char* v); +const char* icalproperty_get_xlicmimefilename(const icalproperty* prop);icalproperty* icalproperty_vanew_xlicmimefilename(const char* v, ...); + +/* X-LIC-MIMEOPTINFO */ +icalproperty* icalproperty_new_xlicmimeoptinfo(const char* v); +void icalproperty_set_xlicmimeoptinfo(icalproperty* prop, const char* v); +const char* icalproperty_get_xlicmimeoptinfo(const icalproperty* prop);icalproperty* icalproperty_vanew_xlicmimeoptinfo(const char* v, ...); + + +#endif /*ICALPROPERTY_H*/ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalproperty.h + CREATOR: eric 20 March 1999 + + + $Id: ical.h,v 1.6 2002/10/10 00:41:34 acampi Exp $ + $Locker: $ + + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icalparam.h + + ======================================================================*/ + + +#ifndef ICALPROPERTY_H +#define ICALPROPERTY_H + +#include +#include /* for va_... */ + + + +/* Actually in icalderivedproperty.h: + typedef struct icalproperty_impl icalproperty; */ + + +icalproperty* icalproperty_new(icalproperty_kind kind); + +icalproperty* icalproperty_new_clone(icalproperty * prop); + +icalproperty* icalproperty_new_from_string(const char* str); + +const char* icalproperty_as_ical_string(icalproperty* prop); + +void icalproperty_free(icalproperty* prop); + +icalproperty_kind icalproperty_isa(icalproperty* property); +int icalproperty_isa_property(void* property); + +void icalproperty_add_parameters(struct icalproperty_impl *prop,va_list args); +void icalproperty_add_parameter(icalproperty* prop,icalparameter* parameter); +void icalproperty_set_parameter(icalproperty* prop,icalparameter* parameter); +void icalproperty_set_parameter_from_string(icalproperty* prop, + const char* name, const char* value); +const char* icalproperty_get_parameter_as_string(icalproperty* prop, + const char* name); + +void icalproperty_remove_parameter(icalproperty* prop, + icalparameter_kind kind); + +void icalproperty_remove_parameter_by_kind(icalproperty* prop, + icalparameter_kind kind); + +void icalproperty_remove_parameter_by_name(icalproperty* prop, + const char *name); + +void icalproperty_remove_parameter_by_ref(icalproperty* prop, + icalparameter *param); + + + +int icalproperty_count_parameters(const icalproperty* prop); + +/* Iterate through the parameters */ +icalparameter* icalproperty_get_first_parameter(icalproperty* prop, + icalparameter_kind kind); +icalparameter* icalproperty_get_next_parameter(icalproperty* prop, + icalparameter_kind kind); +/* Access the value of the property */ +void icalproperty_set_value(icalproperty* prop, icalvalue* value); +void icalproperty_set_value_from_string(icalproperty* prop,const char* value, const char* kind); + +icalvalue* icalproperty_get_value(const icalproperty* prop); +const char* icalproperty_get_value_as_string(const icalproperty* prop); + +/* Deal with X properties */ + +void icalproperty_set_x_name(icalproperty* prop, const char* name); +const char* icalproperty_get_x_name(icalproperty* prop); + +/** Return the name of the property -- the type name converted to a + * string, or the value of _get_x_name if the type is and X + * property + */ +const char* icalproperty_get_property_name (const icalproperty* prop); + +icalvalue_kind icalparameter_value_to_value_kind(icalparameter_value value); + +/* Convert kinds to string and get default value type */ + +icalvalue_kind icalproperty_kind_to_value_kind(icalproperty_kind kind); +icalproperty_kind icalproperty_value_kind_to_kind(icalvalue_kind kind); +const char* icalproperty_kind_to_string(icalproperty_kind kind); +icalproperty_kind icalproperty_string_to_kind(const char* string); + +/** Check validity of a specific icalproperty_kind **/ +int icalproperty_kind_is_valid(const icalproperty_kind kind); + +icalproperty_method icalproperty_string_to_method(const char* str); +const char* icalproperty_method_to_string(icalproperty_method method); + + +const char* icalproperty_enum_to_string(int e); +int icalproperty_string_to_enum(const char* str); +int icalproperty_kind_and_string_to_enum(const int kind, const char* str); + +const char* icalproperty_status_to_string(icalproperty_status); +icalproperty_status icalproperty_string_to_status(const char* string); + +int icalproperty_enum_belongs_to_property(icalproperty_kind kind, int e); + + + + +#endif /*ICALPROPERTY_H*/ +/*====================================================================== + FILE: pvl.h + CREATOR: eric November, 1995 + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org +======================================================================*/ + + +#ifndef __PVL_H__ +#define __PVL_H__ + +typedef struct pvl_list_t* pvl_list; +typedef struct pvl_elem_t* pvl_elem; + +/** + * This type is private. Always use pvl_elem instead. The struct would + * not even appear in this header except to make code in the USE_MACROS + * blocks work + */ + +typedef struct pvl_elem_t +{ + int MAGIC; /**< Magic Identifier */ + void *d; /**< Pointer to data user is storing */ + struct pvl_elem_t *next; /**< Next element */ + struct pvl_elem_t *prior; /**< Prior element */ +} pvl_elem_t; + + + +/** + * This global is incremented for each call to pvl_new_element(); it gives each + * list a unique identifer + */ + +extern int pvl_elem_count; +extern int pvl_list_count; + +/* Create new lists or elements */ +pvl_elem pvl_new_element(void* d, pvl_elem next,pvl_elem prior); +pvl_list pvl_newlist(void); +void pvl_free(pvl_list); + +/* Add, remove, or get the head of the list */ +void pvl_unshift(pvl_list l,void *d); +void* pvl_shift(pvl_list l); +pvl_elem pvl_head(pvl_list); + +/* Add, remove or get the tail of the list */ +void pvl_push(pvl_list l,void *d); +void* pvl_pop(pvl_list l); +pvl_elem pvl_tail(pvl_list); + +/* Insert elements in random places */ +typedef int (*pvl_comparef)(void* a, void* b); /* a, b are of the data type*/ +void pvl_insert_ordered(pvl_list l,pvl_comparef f,void *d); +void pvl_insert_after(pvl_list l,pvl_elem e,void *d); +void pvl_insert_before(pvl_list l,pvl_elem e,void *d); + +/* Remove an element, or clear the entire list */ +void* pvl_remove(pvl_list,pvl_elem); /* Remove element, return data */ +void pvl_clear(pvl_list); /* Remove all elements, de-allocate all data */ + +int pvl_count(pvl_list); + +/* Navagate the list */ +pvl_elem pvl_next(pvl_elem e); +pvl_elem pvl_prior(pvl_elem e); + +/* get the data in the list */ +#ifndef PVL_USE_MACROS +void* pvl_data(pvl_elem); +#else +#define pvl_data(x) x==0 ? 0 : ((struct pvl_elem_t *)x)->d; +#endif + + +/* Find an element for which a function returns true */ +typedef int (*pvl_findf)(void* a, void* b); /*a is list elem, b is other data*/ +pvl_elem pvl_find(pvl_list l,pvl_findf f,void* v); +pvl_elem pvl_find_next(pvl_list l,pvl_findf f,void* v); + +/** + * Pass each element in the list to a function + * a is list elem, b is other data + */ +typedef void (*pvl_applyf)(void* a, void* b); +void pvl_apply(pvl_list l,pvl_applyf f, void *v); + + +#endif /* __PVL_H__ */ + + + + + +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ +/*====================================================================== + FILE: icalarray.h + CREATOR: Damon Chaplin 07 March 2001 + + + $Id: ical.h,v 1.6 2002/10/10 00:41:34 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 2001, Ximian, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + +======================================================================*/ + + +#ifndef ICALARRAY_H +#define ICALARRAY_H + +/** @file icalarray.h + * + * @brief An array of arbitrarily-sized elements which grows + * dynamically as elements are added. + */ + +typedef struct _icalarray icalarray; +struct _icalarray { + int element_size; + int increment_size; + int num_elements; + int space_allocated; + void *data; +}; + + + +icalarray *icalarray_new (int element_size, + int increment_size); +void icalarray_free (icalarray *array); + +void icalarray_append (icalarray *array, + void *element); +void icalarray_remove_element_at (icalarray *array, + int position); + +void *icalarray_element_at (icalarray *array, + int position); + +void icalarray_sort (icalarray *array, + int (*compare) (const void *, const void *)); + + +#endif /* ICALARRAY_H */ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalcomponent.h + CREATOR: eric 20 March 1999 + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icalcomponent.h + +======================================================================*/ + +#ifndef ICALCOMPONENT_H +#define ICALCOMPONENT_H + + +typedef struct icalcomponent_impl icalcomponent; + +#ifndef ICALTIMEONE_DEFINED +#define ICALTIMEONE_DEFINED +/** @brief An opaque struct representing a timezone. + * We declare this here to avoid a circular dependancy. + */ +typedef struct _icaltimezone icaltimezone; +#endif + + +/* This is exposed so that callers will not have to allocate and + deallocate iterators. Pretend that you can't see it. */ +typedef struct icalcompiter +{ + icalcomponent_kind kind; + pvl_elem iter; + +} icalcompiter; + +icalcomponent* icalcomponent_new(icalcomponent_kind kind); +icalcomponent* icalcomponent_new_clone(icalcomponent* component); +icalcomponent* icalcomponent_new_from_string(char* str); +icalcomponent* icalcomponent_vanew(icalcomponent_kind kind, ...); +void icalcomponent_free(icalcomponent* component); + +char* icalcomponent_as_ical_string(icalcomponent* component); + +int icalcomponent_is_valid(icalcomponent* component); + +icalcomponent_kind icalcomponent_isa(const icalcomponent* component); + +int icalcomponent_isa_component (void* component); + +/* + * Working with properties + */ + +void icalcomponent_add_property(icalcomponent* component, + icalproperty* property); + +void icalcomponent_remove_property(icalcomponent* component, + icalproperty* property); + +int icalcomponent_count_properties(icalcomponent* component, + icalproperty_kind kind); + +/* Iterate through the properties */ +icalproperty* icalcomponent_get_current_property(icalcomponent* component); + +icalproperty* icalcomponent_get_first_property(icalcomponent* component, + icalproperty_kind kind); +icalproperty* icalcomponent_get_next_property(icalcomponent* component, + icalproperty_kind kind); + + +/* + * Working with components + */ + + +/* Return the first VEVENT, VTODO or VJOURNAL sub-component of cop, or + comp if it is one of those types */ + +icalcomponent* icalcomponent_get_inner(icalcomponent* comp); + + +void icalcomponent_add_component(icalcomponent* parent, + icalcomponent* child); + +void icalcomponent_remove_component(icalcomponent* parent, + icalcomponent* child); + +int icalcomponent_count_components(icalcomponent* component, + icalcomponent_kind kind); + +/** + This takes 2 VCALENDAR components and merges the second one into the first, + resolving any problems with conflicting TZIDs. comp_to_merge will no + longer exist after calling this function. */ +void icalcomponent_merge_component(icalcomponent* comp, + icalcomponent* comp_to_merge); + + +/* Iteration Routines. There are two forms of iterators, internal and +external. The internal ones came first, and are almost completely +sufficient, but they fail badly when you want to construct a loop that +removes components from the container.*/ + + +/* Iterate through components */ +icalcomponent* icalcomponent_get_current_component (icalcomponent* component); + +icalcomponent* icalcomponent_get_first_component(icalcomponent* component, + icalcomponent_kind kind); +icalcomponent* icalcomponent_get_next_component(icalcomponent* component, + icalcomponent_kind kind); + +/* Using external iterators */ +icalcompiter icalcomponent_begin_component(icalcomponent* component, + icalcomponent_kind kind); +icalcompiter icalcomponent_end_component(icalcomponent* component, + icalcomponent_kind kind); +icalcomponent* icalcompiter_next(icalcompiter* i); +icalcomponent* icalcompiter_prior(icalcompiter* i); +icalcomponent* icalcompiter_deref(icalcompiter* i); + + +/* Working with embedded error properties */ + + +/* Check the component against itip rules and insert error properties*/ +/* Working with embedded error properties */ +int icalcomponent_check_restrictions(icalcomponent* comp); + +/** Count embedded errors. */ +int icalcomponent_count_errors(icalcomponent* component); + +/** Remove all X-LIC-ERROR properties*/ +void icalcomponent_strip_errors(icalcomponent* component); + +/** Convert some X-LIC-ERROR properties into RETURN-STATUS properties*/ +void icalcomponent_convert_errors(icalcomponent* component); + +/* Internal operations. They are private, and you should not be using them. */ +icalcomponent* icalcomponent_get_parent(icalcomponent* component); +void icalcomponent_set_parent(icalcomponent* component, + icalcomponent* parent); + +/* Kind conversion routines */ + +int icalcomponent_kind_is_valid(const icalcomponent_kind kind); + +icalcomponent_kind icalcomponent_string_to_kind(const char* string); + +const char* icalcomponent_kind_to_string(icalcomponent_kind kind); + + +/************* Derived class methods. **************************** + +If the code was in an OO language, the remaining routines would be +members of classes derived from icalcomponent. Don't call them on the +wrong component subtypes. */ + +/** For VCOMPONENT: Return a reference to the first VEVENT, VTODO or + VJOURNAL */ +icalcomponent* icalcomponent_get_first_real_component(icalcomponent *c); + +/** For VEVENT, VTODO, VJOURNAL and VTIMEZONE: report the start and end + times of an event in UTC */ +struct icaltime_span icalcomponent_get_span(icalcomponent* comp); + +/******************** Convienience routines **********************/ + +void icalcomponent_set_dtstart(icalcomponent* comp, struct icaltimetype v); +struct icaltimetype icalcomponent_get_dtstart(icalcomponent* comp); + +/* For the icalcomponent routines only, dtend and duration are tied + together. If you call the set routine for one and the other exists, + the routine will calculate the change to the other. That is, if + there is a DTEND and you call set_duration, the routine will modify + DTEND to be the sum of DTSTART and the duration. If you call a get + routine for one and the other exists, the routine will calculate + the return value. If you call a set routine and neither exists, the + routine will create the apcompriate comperty */ + + +struct icaltimetype icalcomponent_get_dtend(icalcomponent* comp); +void icalcomponent_set_dtend(icalcomponent* comp, struct icaltimetype v); + +struct icaltimetype icalcomponent_get_due(icalcomponent* comp); +void icalcomponent_set_due(icalcomponent* comp, struct icaltimetype v); + +void icalcomponent_set_duration(icalcomponent* comp, + struct icaldurationtype v); +struct icaldurationtype icalcomponent_get_duration(icalcomponent* comp); + +void icalcomponent_set_method(icalcomponent* comp, icalproperty_method method); +icalproperty_method icalcomponent_get_method(icalcomponent* comp); + +struct icaltimetype icalcomponent_get_dtstamp(icalcomponent* comp); +void icalcomponent_set_dtstamp(icalcomponent* comp, struct icaltimetype v); + +void icalcomponent_set_summary(icalcomponent* comp, const char* v); +const char* icalcomponent_get_summary(icalcomponent* comp); + +void icalcomponent_set_comment(icalcomponent* comp, const char* v); +const char* icalcomponent_get_comment(icalcomponent* comp); + +void icalcomponent_set_uid(icalcomponent* comp, const char* v); +const char* icalcomponent_get_uid(icalcomponent* comp); + +void icalcomponent_set_relcalid(icalcomponent* comp, const char* v); +const char* icalcomponent_get_relcalid(icalcomponent* comp); + +void icalcomponent_set_recurrenceid(icalcomponent* comp, + struct icaltimetype v); +struct icaltimetype icalcomponent_get_recurrenceid(icalcomponent* comp); + +void icalcomponent_set_description(icalcomponent* comp, const char* v); +const char* icalcomponent_get_description(icalcomponent* comp); + +void icalcomponent_set_location(icalcomponent* comp, const char* v); +const char* icalcomponent_get_location(icalcomponent* comp); + +void icalcomponent_set_organizer(icalcomponent* comp, + struct icalorganizertype org); +struct icalorganizertype icalcomponent_get_organizer(icalcomponent* comp); + + +void icalcomponent_set_sequence(icalcomponent* comp, int v); +int icalcomponent_get_sequence(icalcomponent* comp); + +void icalcomponent_set_status(icalcomponent* comp, int v); +int icalcomponent_get_status(icalcomponent* comp); + + +/** Calls the given function for each TZID parameter found in the + component, and any subcomponents. */ +void icalcomponent_foreach_tzid(icalcomponent* comp, + void (*callback)(icalparameter *param, void *data), + void *callback_data); + +/** Returns the icaltimezone in the component corresponding to the + TZID, or NULL if it can't be found. */ +icaltimezone* icalcomponent_get_timezone(icalcomponent* comp, + const char *tzid); + +int icalproperty_recurrence_is_excluded(icalcomponent *comp, + struct icaltimetype *dtstart, + struct icaltimetype *recurtime); + +void icalcomponent_foreach_recurrence(icalcomponent* comp, + struct icaltimetype start, + struct icaltimetype end, + void (*callback)(icalcomponent *comp, + struct icaltime_span *span, + void *data), + void *callback_data); + + +/*************** Type Specific routines ***************/ + +icalcomponent* icalcomponent_new_vcalendar(); +icalcomponent* icalcomponent_new_vevent(); +icalcomponent* icalcomponent_new_vtodo(); +icalcomponent* icalcomponent_new_vjournal(); +icalcomponent* icalcomponent_new_valarm(); +icalcomponent* icalcomponent_new_vfreebusy(); +icalcomponent* icalcomponent_new_vtimezone(); +icalcomponent* icalcomponent_new_xstandard(); +icalcomponent* icalcomponent_new_xdaylight(); +icalcomponent* icalcomponent_new_vagenda(); +icalcomponent* icalcomponent_new_vquery(); + +#endif /* !ICALCOMPONENT_H */ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ +/*====================================================================== + FILE: icaltimezone.h + CREATOR: Damon Chaplin 15 March 2001 + + + $Id: ical.h,v 1.6 2002/10/10 00:41:34 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 2001, Damon Chaplin + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + +======================================================================*/ +/** + * @file icaltimezone.h + * @brief timezone handling routines + */ + +#ifndef ICALTIMEZONE_H +#define ICALTIMEZONE_H + +#include /* For FILE* */ + + +/** + * @par Creating/Destroying individual icaltimezones. + */ + +/** Creates a new icaltimezone. */ +icaltimezone *icaltimezone_new (void); + +/** Frees all memory used for the icaltimezone. Set free_struct to free the + icaltimezone struct as well. */ +void icaltimezone_free (icaltimezone *zone, + int free_struct); + + +/** + * @par Accessing timezones. + */ + +/** Free any builtin timezone information **/ +void icaltimezone_free_builtin_timezones(void); + +/** Returns the array of builtin icaltimezones. */ +icalarray* icaltimezone_get_builtin_timezones (void); + +/** Returns a single builtin timezone, given its Olson city name. */ +icaltimezone* icaltimezone_get_builtin_timezone (const char *location); + +/** Returns a single builtin timezone, given its TZID. */ +icaltimezone* icaltimezone_get_builtin_timezone_from_tzid (const char *tzid); + +/** Returns the UTC timezone. */ +icaltimezone* icaltimezone_get_utc_timezone (void); + +/** Returns the TZID of a timezone. */ +char* icaltimezone_get_tzid (icaltimezone *zone); + +/** Returns the city name of a timezone. */ +char* icaltimezone_get_location (icaltimezone *zone); + +/** Returns the TZNAME properties used in the latest STANDARD and DAYLIGHT + components. If they are the same it will return just one, e.g. "LMT". + If they are different it will format them like "EST/EDT". Note that this + may also return NULL. */ +char* icaltimezone_get_tznames (icaltimezone *zone); + +/** Returns the latitude of a builtin timezone. */ +double icaltimezone_get_latitude (icaltimezone *zone); + +/** Returns the longitude of a builtin timezone. */ +double icaltimezone_get_longitude (icaltimezone *zone); + +/** Returns the VTIMEZONE component of a timezone. */ +icalcomponent* icaltimezone_get_component (icaltimezone *zone); + +/** Sets the VTIMEZONE component of an icaltimezone, initializing the tzid, + location & tzname fields. It returns 1 on success or 0 on failure, i.e. + no TZID was found. */ +int icaltimezone_set_component (icaltimezone *zone, + icalcomponent *comp); + +/** + * @par Converting times between timezones. + */ + +void icaltimezone_convert_time (struct icaltimetype *tt, + icaltimezone *from_zone, + icaltimezone *to_zone); + + +/** + * @par Getting offsets from UTC. + */ + +/** Calculates the UTC offset of a given local time in the given + timezone. It is the number of seconds to add to UTC to get local + time. The is_daylight flag is set to 1 if the time is in + daylight-savings time. */ +int icaltimezone_get_utc_offset (icaltimezone *zone, + struct icaltimetype *tt, + int *is_daylight); + +/** Calculates the UTC offset of a given UTC time in the given + timezone. It is the number of seconds to add to UTC to get local + time. The is_daylight flag is set to 1 if the time is in + daylight-savings time. */ +int icaltimezone_get_utc_offset_of_utc_time (icaltimezone *zone, + struct icaltimetype *tt, + int *is_daylight); + + + +/* + * Handling arrays of timezones. Mainly for internal use. + */ +icalarray* icaltimezone_array_new (void); + +void icaltimezone_array_append_from_vtimezone (icalarray *timezones, + icalcomponent *child); +void icaltimezone_array_free (icalarray *timezones); + + +/* + * @par Handling the default location the timezone files + */ + +/** Set the directory to look for the zonefiles */ +void set_zone_directory(char *path); + +/** Free memory dedicated to the zonefile directory */ +void free_zone_directory(); + +/* + * @par Debugging Output. + */ + +/** Dumps information about changes in the timezone up to and including + max_year. */ +int icaltimezone_dump_changes (icaltimezone *zone, + int max_year, + FILE *fp); + +#endif /* ICALTIMEZONE_H */ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalparser.h + CREATOR: eric 20 April 1999 + + $Id: ical.h,v 1.6 2002/10/10 00:41:34 acampi Exp $ + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icalparser.h + +======================================================================*/ + + +#ifndef ICALPARSER_H +#define ICALPARSER_H + + +#include /* For FILE* */ + +typedef struct icalparser_impl icalparser; + + +/** + * @file icalparser.h + * @brief Line-oriented parsing. + * + * Create a new parser via icalparse_new_parser, then add lines one at + * a time with icalparse_add_line(). icalparser_add_line() will return + * non-zero when it has finished with a component. + */ + +typedef enum icalparser_state { + ICALPARSER_ERROR, + ICALPARSER_SUCCESS, + ICALPARSER_BEGIN_COMP, + ICALPARSER_END_COMP, + ICALPARSER_IN_PROGRESS +} icalparser_state; + +icalparser* icalparser_new(void); +icalcomponent* icalparser_add_line(icalparser* parser, char* str ); +icalcomponent* icalparser_clean(icalparser* parser); +icalparser_state icalparser_get_state(icalparser* parser); +void icalparser_free(icalparser* parser); + + +/** + * Message oriented parsing. icalparser_parse takes a string that + * holds the text ( in RFC 2445 format ) and returns a pointer to an + * icalcomponent. The caller owns the memory. line_gen_func is a + * pointer to a function that returns one content line per invocation + */ + +icalcomponent* icalparser_parse(icalparser *parser, + char* (*line_gen_func)(char *s, size_t size, void *d)); + +/** + Set the data that icalparser_parse will give to the line_gen_func + as the parameter 'd' + */ +void icalparser_set_gen_data(icalparser* parser, void* data); + + +icalcomponent* icalparser_parse_string(const char* str); + + +/*********************************************************************** + * Parser support functions + ***********************************************************************/ + +/** Use the flex/bison parser to turn a string into a value type */ +icalvalue* icalparser_parse_value(icalvalue_kind kind, + const char* str, icalcomponent** errors); + +/** Given a line generator function, return a single iCal content line.*/ +char* icalparser_get_line(icalparser* parser, char* (*line_gen_func)(char *s, size_t size, void *d)); + +char* icalparser_string_line_generator(char *out, size_t buf_size, void *d); + +#endif /* !ICALPARSE_H */ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalmemory.h + CREATOR: eric 30 June 1999 + + + $Id: ical.h,v 1.6 2002/10/10 00:41:34 acampi Exp $ + $Locker: $ + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The Initial Developer of the Original Code is Eric Busboom + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org +======================================================================*/ + +#ifndef ICALMEMORY_H +#define ICALMEMORY_H + +#ifndef WIN32 +#include /* for size_t */ +#else +#include +#endif + +/* Tmp buffers are managed by ical. References can be returned to the + caller, although the caller will not own the memory. */ + +void* icalmemory_tmp_buffer(size_t size); +char* icalmemory_tmp_copy(const char* str); + +/** Add an externally allocated buffer to the ring. */ +void icalmemory_add_tmp_buffer(void*); + + +/** Free all memory used in the ring */ +void icalmemory_free_ring(void); + +/* Non-tmp buffers must be freed. These are mostly wrappers around + * malloc, etc, but are used so the caller can change the memory + * allocators in a future version of the library */ + +void* icalmemory_new_buffer(size_t size); +void* icalmemory_resize_buffer(void* buf, size_t size); +void icalmemory_free_buffer(void* buf); + +/** + icalmemory_append_string will copy the string 'string' to the + buffer 'buf' starting at position 'pos', reallocing 'buf' if it is + too small. 'buf_size' is the size of 'buf' and will be changed if + 'buf' is reallocated. 'pos' will point to the last byte of the new + string in 'buf', usually a '\0' */ + +/* THESE ROUTINES CAN NOT BE USED ON TMP BUFFERS. Only use them on + normally allocated memory, or on buffers created from + icalmemory_new_buffer, never with buffers created by + icalmemory_tmp_buffer. If icalmemory_append_string has to resize a + buffer on the ring, the ring will loose track of it an you will + have memory problems. */ + +void icalmemory_append_string(char** buf, char** pos, size_t* buf_size, + const char* string); + +/** icalmemory_append_char is similar, but is appends a character instead of a string */ +void icalmemory_append_char(char** buf, char** pos, size_t* buf_size, + char ch); + +/** A wrapper around strdup. Partly to trap calls to strdup, partly + because in -ansi, gcc on Red Hat claims that strdup is undeclared */ +char* icalmemory_strdup(const char *s); + +#endif /* !ICALMEMORY_H */ + + + +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalerror.h + CREATOR: eric 09 May 1999 + + $Id: ical.h,v 1.6 2002/10/10 00:41:34 acampi Exp $ + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icalerror.h + +======================================================================*/ + + +#ifndef ICALERROR_H +#define ICALERROR_H + +#include +#include /* For icalerror_warn() */ + + +#ifdef HAVE_CONFIG_H +#endif + +#define ICAL_SETERROR_ISFUNC + + +/** This routine is called before any error is triggered. It is called + by icalerror_set_errno, so it does not appear in all of the macros + below */ +void icalerror_stop_here(void); + +void icalerror_crash_here(void); + +typedef enum icalerrorenum { + ICAL_NO_ERROR, /* icalerrno may not be initialized - put it first so and pray that the compiler initialize things to zero */ + ICAL_BADARG_ERROR, + ICAL_NEWFAILED_ERROR, + ICAL_ALLOCATION_ERROR, + ICAL_MALFORMEDDATA_ERROR, + ICAL_PARSE_ERROR, + ICAL_INTERNAL_ERROR, /* Like assert --internal consist. prob */ + ICAL_FILE_ERROR, + ICAL_USAGE_ERROR, + ICAL_UNIMPLEMENTED_ERROR, + ICAL_UNKNOWN_ERROR /* Used for problems in input to icalerror_strerror()*/ + +} icalerrorenum; + +icalerrorenum * icalerrno_return(void); +#define icalerrno (*(icalerrno_return())) + +/** If true, libicl aborts after a call to icalerror_set_error + * + * @warning NOT THREAD SAFE -- recommended that you do not change + * this in a multithreaded program. + */ +extern int icalerror_errors_are_fatal; + +/* Warning messages */ + +#ifdef __GNUC__ca +#define icalerror_warn(message) {fprintf(stderr,"%s(), %s:%d: %s\n",__FUNCTION__,__FILE__,__LINE__,message);} +#else /* __GNU_C__ */ +#define icalerror_warn(message) {fprintf(stderr,"%s:%d: %s\n",__FILE__,__LINE__,message);} +#endif /* __GNU_C__ */ + + +void icalerror_clear_errno(void); +void _icalerror_set_errno(icalerrorenum); + +/* Make an individual error fatal or non-fatal. */ +typedef enum icalerrorstate { + ICAL_ERROR_FATAL, /* Not fata */ + ICAL_ERROR_NONFATAL, /* Fatal */ + ICAL_ERROR_DEFAULT, /* Use the value of icalerror_errors_are_fatal*/ + ICAL_ERROR_UNKNOWN /* Asked state for an unknown error type */ +} icalerrorstate ; + +char* icalerror_strerror(icalerrorenum e); +char* icalerror_perror(); +void icalerror_set_error_state( icalerrorenum error, icalerrorstate); +icalerrorstate icalerror_get_error_state( icalerrorenum error); + +#ifndef ICAL_SETERROR_ISFUNC +#define icalerror_set_errno(x) \ +icalerrno = x; \ +if(icalerror_get_error_state(x)==ICAL_ERROR_FATAL || \ + (icalerror_get_error_state(x)==ICAL_ERROR_DEFAULT && \ + icalerror_errors_are_fatal == 1 )){ \ + icalerror_warn(icalerror_strerror(x)); \ + assert(0); \ +} +#else +void icalerror_set_errno(icalerrorenum x); +#endif + +#ifdef ICAL_ERRORS_ARE_FATAL +#undef NDEBUG +#endif + +#define icalerror_check_value_type(value,type); +#define icalerror_check_property_type(value,type); +#define icalerror_check_parameter_type(value,type); +#define icalerror_check_component_type(value,type); + +/* Assert with a message */ +#ifdef ICAL_ERRORS_ARE_FATAL + +#ifdef __GNUC__ +#define icalerror_assert(test,message) if(!(test)){fprintf(stderr,"%s(), %s:%d: %s\n",__FUNCTION__,__FILE__,__LINE__,message);icalerror_stop_here(); abort();} +#else /*__GNUC__*/ +#define icalerror_assert(test,message) if(!(test)){fprintf(stderr,"%s:%d: %s\n",__FILE__,__LINE__,message);icalerror_stop_here(); abort();} +#endif /*__GNUC__*/ + +#else /* ICAL_ERRORS_ARE_FATAL */ +#define icalerror_assert(test,message) +#endif /* ICAL_ERRORS_ARE_FATAL */ + +/* Check & abort if check fails */ +#define icalerror_check_arg(test,arg) if(!(test)) { icalerror_set_errno(ICAL_BADARG_ERROR); } + +/* Check & return void if check fails*/ +#define icalerror_check_arg_rv(test,arg) if(!(test)) {icalerror_set_errno(ICAL_BADARG_ERROR); return; } + +/* Check & return 0 if check fails*/ +#define icalerror_check_arg_rz(test,arg) if(!(test)) { icalerror_set_errno(ICAL_BADARG_ERROR); return 0;} + +/* Check & return an error if check fails*/ +#define icalerror_check_arg_re(test,arg,error) if(!(test)) { icalerror_stop_here(); assert(0); return error;} + +/* Check & return something*/ +#define icalerror_check_arg_rx(test,arg,x) if(!(test)) { icalerror_set_errno(ICAL_BADARG_ERROR); return x;} + + + +/* String interfaces to set an error to NONFATAL and restore it to its + original value */ + +icalerrorstate icalerror_supress(const char* error); +void icalerror_restore(const char* error, icalerrorstate es); + + +#endif /* !ICALERROR_H */ + + + +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalrestriction.h + CREATOR: eric 24 April 1999 + + $Id: ical.h,v 1.6 2002/10/10 00:41:34 acampi Exp $ + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icalrestriction.h + + Contributions from: + Graham Davison (g.m.davison@computer.org) + + +======================================================================*/ + + +#ifndef ICALRESTRICTION_H +#define ICALRESTRICTION_H + +/* These must stay in this order for icalrestriction_compare to work */ +typedef enum icalrestriction_kind { + ICAL_RESTRICTION_NONE=0, /* 0 */ + ICAL_RESTRICTION_ZERO, /* 1 */ + ICAL_RESTRICTION_ONE, /* 2 */ + ICAL_RESTRICTION_ZEROPLUS, /* 3 */ + ICAL_RESTRICTION_ONEPLUS, /* 4 */ + ICAL_RESTRICTION_ZEROORONE, /* 5 */ + ICAL_RESTRICTION_ONEEXCLUSIVE, /* 6 */ + ICAL_RESTRICTION_ONEMUTUAL, /* 7 */ + ICAL_RESTRICTION_UNKNOWN /* 8 */ +} icalrestriction_kind; + +int +icalrestriction_compare(icalrestriction_kind restr, int count); + + +int +icalrestriction_is_parameter_allowed(icalproperty_kind property, + icalparameter_kind parameter); + +int icalrestriction_check(icalcomponent* comp); + + +#endif /* !ICALRESTRICTION_H */ + + + +/* -*- Mode: C -*- + ====================================================================== + FILE: sspm.h Mime Parser + CREATOR: eric 25 June 2000 + + $Id: ical.h,v 1.6 2002/10/10 00:41:34 acampi Exp $ + $Locker: $ + + The contents of this file are subject to the Mozilla Public License + Version 1.0 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and + limitations under the License. + + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The Initial Developer of the Original Code is Eric Busboom + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + ======================================================================*/ + +#ifndef SSPM_H +#define SSPM_H + +enum sspm_major_type { + SSPM_NO_MAJOR_TYPE, + SSPM_TEXT_MAJOR_TYPE, + SSPM_IMAGE_MAJOR_TYPE, + SSPM_AUDIO_MAJOR_TYPE, + SSPM_VIDEO_MAJOR_TYPE, + SSPM_APPLICATION_MAJOR_TYPE, + SSPM_MULTIPART_MAJOR_TYPE, + SSPM_MESSAGE_MAJOR_TYPE, + SSPM_UNKNOWN_MAJOR_TYPE +}; + +enum sspm_minor_type { + SSPM_NO_MINOR_TYPE, + SSPM_ANY_MINOR_TYPE, + SSPM_PLAIN_MINOR_TYPE, + SSPM_RFC822_MINOR_TYPE, + SSPM_DIGEST_MINOR_TYPE, + SSPM_CALENDAR_MINOR_TYPE, + SSPM_MIXED_MINOR_TYPE, + SSPM_RELATED_MINOR_TYPE, + SSPM_ALTERNATIVE_MINOR_TYPE, + SSPM_PARALLEL_MINOR_TYPE, + SSPM_UNKNOWN_MINOR_TYPE +}; + +enum sspm_encoding { + SSPM_NO_ENCODING, + SSPM_QUOTED_PRINTABLE_ENCODING, + SSPM_8BIT_ENCODING, + SSPM_7BIT_ENCODING, + SSPM_BINARY_ENCODING, + SSPM_BASE64_ENCODING, + SSPM_UNKNOWN_ENCODING +}; + +enum sspm_error{ + SSPM_NO_ERROR, + SSPM_UNEXPECTED_BOUNDARY_ERROR, + SSPM_WRONG_BOUNDARY_ERROR, + SSPM_NO_BOUNDARY_ERROR, + SSPM_NO_HEADER_ERROR, + SSPM_MALFORMED_HEADER_ERROR +}; + + +struct sspm_header +{ + int def; + char* boundary; + enum sspm_major_type major; + enum sspm_minor_type minor; + char *minor_text; + char ** content_type_params; + char* charset; + enum sspm_encoding encoding; + char* filename; + char* content_id; + enum sspm_error error; + char* error_text; +}; + +struct sspm_part { + struct sspm_header header; + int level; + size_t data_size; + void *data; +}; + +struct sspm_action_map { + enum sspm_major_type major; + enum sspm_minor_type minor; + void* (*new_part)(); + void (*add_line)(void *part, struct sspm_header *header, + char* line, size_t size); + void* (*end_part)(void* part); + void (*free_part)(void *part); +}; + +char* sspm_major_type_string(enum sspm_major_type type); +char* sspm_minor_type_string(enum sspm_minor_type type); +char* sspm_encoding_string(enum sspm_encoding type); + +int sspm_parse_mime(struct sspm_part *parts, + size_t max_parts, + struct sspm_action_map *actions, + char* (*get_string)(char *s, size_t size, void* data), + void *get_string_data, + struct sspm_header *first_header + ); + +void sspm_free_parts(struct sspm_part *parts, size_t max_parts); + +char *decode_quoted_printable(char *dest, + char *src, + size_t *size); +char *decode_base64(char *dest, + char *src, + size_t *size); + + +int sspm_write_mime(struct sspm_part *parts,size_t num_parts, + char **output_string, char* header); + +#endif /*SSPM_H*/ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalmime.h + CREATOR: eric 26 July 2000 + + + $Id: ical.h,v 1.6 2002/10/10 00:41:34 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + +======================================================================*/ + +#ifndef ICALMIME_H +#define ICALMIME_H + + +icalcomponent* icalmime_parse( char* (*line_gen_func)(char *s, size_t size, + void *d), + void *data); + +/* The inverse of icalmime_parse, not implemented yet. Use sspm.h directly. */ +char* icalmime_as_mime_string(char* component); + + + +#endif /* !ICALMIME_H */ + + + +/* -*- Mode: C -*- + ====================================================================== + FILE: icallangbind.h + CREATOR: eric 25 jan 2001 + + DESCRIPTION: + + $Id: ical.h,v 1.6 2002/10/10 00:41:34 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 1999 Eric Busboom + http://www.softwarestudio.org + + This package is free software and is provided "as is" without + express or implied warranty. It may be used, redistributed and/or + modified under the same terms as perl itself. ( Either the Artistic + License or the GPL. ) + + ======================================================================*/ + +#ifndef __ICALLANGBIND_H__ +#define __ICALLANGBIND_H__ + +int* icallangbind_new_array(int size); +void icallangbind_free_array(int* array); +int icallangbind_access_array(int* array, int index); +icalproperty* icallangbind_get_property(icalcomponent *c, int n, const char* prop); +const char* icallangbind_get_property_val(icalproperty* p); +const char* icallangbind_get_parameter(icalproperty *p, const char* parameter); +icalcomponent* icallangbind_get_component(icalcomponent *c, const char* comp); + +icalproperty* icallangbind_get_first_property(icalcomponent *c, + const char* prop); + +icalproperty* icallangbind_get_next_property(icalcomponent *c, + const char* prop); + +icalcomponent* icallangbind_get_first_component(icalcomponent *c, + const char* comp); + +icalcomponent* icallangbind_get_next_component(icalcomponent *c, + const char* comp); + +icalparameter* icallangbind_get_first_parameter(icalproperty *prop); + +icalparameter* icallangbind_get_next_parameter(icalproperty *prop); + +const char* icallangbind_property_eval_string(icalproperty* prop, char* sep); + + +int icallangbind_string_to_open_flag(const char* str); +#endif /*__ICALLANGBIND_H__*/ +#ifdef __cplusplus +}; +#endif diff --git a/mozilla/calendar/libical/src/libical/autogenex/icalderivedparameter.c b/mozilla/calendar/libical/src/libical/autogenex/icalderivedparameter.c new file mode 100644 index 00000000000..484fd02a220 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/autogenex/icalderivedparameter.c @@ -0,0 +1,1202 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: icalderivedparameters.{c,h} + CREATOR: eric 09 May 1999 + + $Id: icalderivedparameter.c,v 1.5 2002/09/01 19:12:31 gray-john Exp $ + $Locker: $ + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icalderivedparameters.{c,h} + + Contributions from: + Graham Davison (g.m.davison@computer.org) + + ======================================================================*/ +/*#line 29 "icalparameter.c.in"*/ +#ifdef HAVE_CONFIG_H +#include +#endif + + +#include "icalparameter.h" +#include "icalparameterimpl.h" + +#include "icalproperty.h" +#include "icalerror.h" +#include "icalmemory.h" + +#include /* for malloc() */ +#include +#include /* for memset() */ + +icalvalue_kind icalparameter_value_to_value_kind(icalparameter_value value); + +struct icalparameter_impl* icalparameter_new_impl(icalparameter_kind kind); + +/* This map associates each of the parameters with the string + representation of the paramter's name */ +struct icalparameter_kind_map { + icalparameter_kind kind; + char *name; + +}; + +/* This map associates the enumerations for the VALUE parameter with + the kinds of VALUEs. */ + +struct icalparameter_value_kind_map { + icalparameter_value value; + icalvalue_kind kind; +}; + +/* This map associates the parameter enumerations with a specific parameter and the string representation of the enumeration */ + +struct icalparameter_map { + icalparameter_kind kind; + int enumeration; + const char* str; +}; + + + +static struct icalparameter_value_kind_map value_kind_map[15] = { + {ICAL_VALUE_BINARY,ICAL_BINARY_VALUE}, + {ICAL_VALUE_BOOLEAN,ICAL_BOOLEAN_VALUE}, + {ICAL_VALUE_DATE,ICAL_DATE_VALUE}, + {ICAL_VALUE_DURATION,ICAL_DURATION_VALUE}, + {ICAL_VALUE_FLOAT,ICAL_FLOAT_VALUE}, + {ICAL_VALUE_INTEGER,ICAL_INTEGER_VALUE}, + {ICAL_VALUE_PERIOD,ICAL_PERIOD_VALUE}, + {ICAL_VALUE_RECUR,ICAL_RECUR_VALUE}, + {ICAL_VALUE_TEXT,ICAL_TEXT_VALUE}, + {ICAL_VALUE_URI,ICAL_URI_VALUE}, + {ICAL_VALUE_DATETIME,ICAL_DATETIME_VALUE}, + {ICAL_VALUE_UTCOFFSET,ICAL_UTCOFFSET_VALUE}, + {ICAL_VALUE_CALADDRESS,ICAL_CALADDRESS_VALUE}, + {ICAL_VALUE_X,ICAL_X_VALUE}, + {ICAL_VALUE_NONE,ICAL_NO_VALUE} +}; + +static struct icalparameter_kind_map parameter_map[24] = { + {ICAL_ALTREP_PARAMETER,"ALTREP"}, + {ICAL_CN_PARAMETER,"CN"}, + {ICAL_CUTYPE_PARAMETER,"CUTYPE"}, + {ICAL_DELEGATEDFROM_PARAMETER,"DELEGATED-FROM"}, + {ICAL_DELEGATEDTO_PARAMETER,"DELEGATED-TO"}, + {ICAL_DIR_PARAMETER,"DIR"}, + {ICAL_ENCODING_PARAMETER,"ENCODING"}, + {ICAL_FBTYPE_PARAMETER,"FBTYPE"}, + {ICAL_FMTTYPE_PARAMETER,"FMTTYPE"}, + {ICAL_LANGUAGE_PARAMETER,"LANGUAGE"}, + {ICAL_MEMBER_PARAMETER,"MEMBER"}, + {ICAL_PARTSTAT_PARAMETER,"PARTSTAT"}, + {ICAL_RANGE_PARAMETER,"RANGE"}, + {ICAL_RELATED_PARAMETER,"RELATED"}, + {ICAL_RELTYPE_PARAMETER,"RELTYPE"}, + {ICAL_ROLE_PARAMETER,"ROLE"}, + {ICAL_RSVP_PARAMETER,"RSVP"}, + {ICAL_SENTBY_PARAMETER,"SENT-BY"}, + {ICAL_TZID_PARAMETER,"TZID"}, + {ICAL_VALUE_PARAMETER,"VALUE"}, + {ICAL_X_PARAMETER,"X"}, + {ICAL_XLICCOMPARETYPE_PARAMETER,"X-LIC-COMPARETYPE"}, + {ICAL_XLICERRORTYPE_PARAMETER,"X-LIC-ERRORTYPE"}, + { ICAL_NO_PARAMETER, ""} +}; + +static struct icalparameter_map icalparameter_map[] = { +{ICAL_ANY_PARAMETER,0,""}, + {ICAL_CUTYPE_PARAMETER,ICAL_CUTYPE_INDIVIDUAL,"INDIVIDUAL"}, + {ICAL_CUTYPE_PARAMETER,ICAL_CUTYPE_GROUP,"GROUP"}, + {ICAL_CUTYPE_PARAMETER,ICAL_CUTYPE_RESOURCE,"RESOURCE"}, + {ICAL_CUTYPE_PARAMETER,ICAL_CUTYPE_ROOM,"ROOM"}, + {ICAL_CUTYPE_PARAMETER,ICAL_CUTYPE_UNKNOWN,"UNKNOWN"}, + {ICAL_ENCODING_PARAMETER,ICAL_ENCODING_8BIT,"8BIT"}, + {ICAL_ENCODING_PARAMETER,ICAL_ENCODING_BASE64,"BASE64"}, + {ICAL_FBTYPE_PARAMETER,ICAL_FBTYPE_FREE,"FREE"}, + {ICAL_FBTYPE_PARAMETER,ICAL_FBTYPE_BUSY,"BUSY"}, + {ICAL_FBTYPE_PARAMETER,ICAL_FBTYPE_BUSYUNAVAILABLE,"BUSYUNAVAILABLE"}, + {ICAL_FBTYPE_PARAMETER,ICAL_FBTYPE_BUSYTENTATIVE,"BUSYTENTATIVE"}, + {ICAL_PARTSTAT_PARAMETER,ICAL_PARTSTAT_NEEDSACTION,"NEEDS-ACTION"}, + {ICAL_PARTSTAT_PARAMETER,ICAL_PARTSTAT_ACCEPTED,"ACCEPTED"}, + {ICAL_PARTSTAT_PARAMETER,ICAL_PARTSTAT_DECLINED,"DECLINED"}, + {ICAL_PARTSTAT_PARAMETER,ICAL_PARTSTAT_TENTATIVE,"TENTATIVE"}, + {ICAL_PARTSTAT_PARAMETER,ICAL_PARTSTAT_DELEGATED,"DELEGATED"}, + {ICAL_PARTSTAT_PARAMETER,ICAL_PARTSTAT_COMPLETED,"COMPLETED"}, + {ICAL_PARTSTAT_PARAMETER,ICAL_PARTSTAT_INPROCESS,"INPROCESS"}, + {ICAL_RANGE_PARAMETER,ICAL_RANGE_THISANDPRIOR,"THISANDPRIOR"}, + {ICAL_RANGE_PARAMETER,ICAL_RANGE_THISANDFUTURE,"THISANDFUTURE"}, + {ICAL_RELATED_PARAMETER,ICAL_RELATED_START,"START"}, + {ICAL_RELATED_PARAMETER,ICAL_RELATED_END,"END"}, + {ICAL_RELTYPE_PARAMETER,ICAL_RELTYPE_PARENT,"PARENT"}, + {ICAL_RELTYPE_PARAMETER,ICAL_RELTYPE_CHILD,"CHILD"}, + {ICAL_RELTYPE_PARAMETER,ICAL_RELTYPE_SIBLING,"SIBLING"}, + {ICAL_ROLE_PARAMETER,ICAL_ROLE_CHAIR,"CHAIR"}, + {ICAL_ROLE_PARAMETER,ICAL_ROLE_REQPARTICIPANT,"REQ-PARTICIPANT"}, + {ICAL_ROLE_PARAMETER,ICAL_ROLE_OPTPARTICIPANT,"OPT-PARTICIPANT"}, + {ICAL_ROLE_PARAMETER,ICAL_ROLE_NONPARTICIPANT,"NON-PARTICIPANT"}, + {ICAL_RSVP_PARAMETER,ICAL_RSVP_TRUE,"TRUE"}, + {ICAL_RSVP_PARAMETER,ICAL_RSVP_FALSE,"FALSE"}, + {ICAL_VALUE_PARAMETER,ICAL_VALUE_BINARY,"BINARY"}, + {ICAL_VALUE_PARAMETER,ICAL_VALUE_BOOLEAN,"BOOLEAN"}, + {ICAL_VALUE_PARAMETER,ICAL_VALUE_DATE,"DATE"}, + {ICAL_VALUE_PARAMETER,ICAL_VALUE_DURATION,"DURATION"}, + {ICAL_VALUE_PARAMETER,ICAL_VALUE_FLOAT,"FLOAT"}, + {ICAL_VALUE_PARAMETER,ICAL_VALUE_INTEGER,"INTEGER"}, + {ICAL_VALUE_PARAMETER,ICAL_VALUE_PERIOD,"PERIOD"}, + {ICAL_VALUE_PARAMETER,ICAL_VALUE_RECUR,"RECUR"}, + {ICAL_VALUE_PARAMETER,ICAL_VALUE_TEXT,"TEXT"}, + {ICAL_VALUE_PARAMETER,ICAL_VALUE_URI,"URI"}, + {ICAL_VALUE_PARAMETER,ICAL_VALUE_ERROR,"ERROR"}, + {ICAL_VALUE_PARAMETER,ICAL_VALUE_DATETIME,"DATE-TIME"}, + {ICAL_VALUE_PARAMETER,ICAL_VALUE_UTCOFFSET,"UTC-OFFSET"}, + {ICAL_VALUE_PARAMETER,ICAL_VALUE_CALADDRESS,"CAL-ADDRESS"}, + {ICAL_XLICCOMPARETYPE_PARAMETER,ICAL_XLICCOMPARETYPE_EQUAL,"EQUAL"}, + {ICAL_XLICCOMPARETYPE_PARAMETER,ICAL_XLICCOMPARETYPE_NOTEQUAL,"NOTEQUAL"}, + {ICAL_XLICCOMPARETYPE_PARAMETER,ICAL_XLICCOMPARETYPE_LESS,"LESS"}, + {ICAL_XLICCOMPARETYPE_PARAMETER,ICAL_XLICCOMPARETYPE_GREATER,"GREATER"}, + {ICAL_XLICCOMPARETYPE_PARAMETER,ICAL_XLICCOMPARETYPE_LESSEQUAL,"LESSEQUAL"}, + {ICAL_XLICCOMPARETYPE_PARAMETER,ICAL_XLICCOMPARETYPE_GREATEREQUAL,"GREATEREQUAL"}, + {ICAL_XLICCOMPARETYPE_PARAMETER,ICAL_XLICCOMPARETYPE_REGEX,"REGEX"}, + {ICAL_XLICCOMPARETYPE_PARAMETER,ICAL_XLICCOMPARETYPE_ISNULL,"ISNULL"}, + {ICAL_XLICCOMPARETYPE_PARAMETER,ICAL_XLICCOMPARETYPE_ISNOTNULL,"ISNOTNULL"}, + {ICAL_XLICERRORTYPE_PARAMETER,ICAL_XLICERRORTYPE_COMPONENTPARSEERROR,"COMPONENT-PARSE-ERROR"}, + {ICAL_XLICERRORTYPE_PARAMETER,ICAL_XLICERRORTYPE_PROPERTYPARSEERROR,"PROPERTY-PARSE-ERROR"}, + {ICAL_XLICERRORTYPE_PARAMETER,ICAL_XLICERRORTYPE_PARAMETERNAMEPARSEERROR,"PARAMETER-NAME-PARSE-ERROR"}, + {ICAL_XLICERRORTYPE_PARAMETER,ICAL_XLICERRORTYPE_PARAMETERVALUEPARSEERROR,"PARAMETER-VALUE-PARSE-ERROR"}, + {ICAL_XLICERRORTYPE_PARAMETER,ICAL_XLICERRORTYPE_VALUEPARSEERROR,"VALUE-PARSE-ERROR"}, + {ICAL_XLICERRORTYPE_PARAMETER,ICAL_XLICERRORTYPE_INVALIDITIP,"INVALID-ITIP"}, + {ICAL_XLICERRORTYPE_PARAMETER,ICAL_XLICERRORTYPE_UNKNOWNVCALPROPERROR,"UNKNOWN-VCAL-PROP-ERROR"}, + {ICAL_XLICERRORTYPE_PARAMETER,ICAL_XLICERRORTYPE_MIMEPARSEERROR,"MIME-PARSE-ERROR"}, + {ICAL_XLICERRORTYPE_PARAMETER,ICAL_XLICERRORTYPE_VCALPROPPARSEERROR,"VCAL-PROP-PARSE-ERROR"}, + {ICAL_NO_PARAMETER,0,""}}; + +/* DELEGATED-FROM */ +icalparameter* icalparameter_new_delegatedfrom(const char* v) +{ + struct icalparameter_impl *impl; + icalerror_clear_errno(); + icalerror_check_arg_rz( (v!=0),"v"); + impl = icalparameter_new_impl(ICAL_DELEGATEDFROM_PARAMETER); + if (impl == 0) { + return 0; + } + + icalparameter_set_delegatedfrom((icalparameter*) impl,v); + if (icalerrno != ICAL_NO_ERROR) { + icalparameter_free((icalparameter*) impl); + return 0; + } + + return (icalparameter*) impl; +} + +const char* icalparameter_get_delegatedfrom(const icalparameter* param) +{ + icalerror_clear_errno(); + icalerror_check_arg_rz( (param!=0), "param"); + return (const char*)((struct icalparameter_impl*)param)->string; +} + +void icalparameter_set_delegatedfrom(icalparameter* param, const char* v) +{ + icalerror_check_arg_rv( (v!=0),"v"); + icalerror_check_arg_rv( (param!=0), "param"); + icalerror_clear_errno(); + + ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v); +} + +/* RELATED */ +icalparameter* icalparameter_new_related(icalparameter_related v) +{ + struct icalparameter_impl *impl; + icalerror_clear_errno(); + icalerror_check_arg_rz(v >= ICAL_RELATED_X,"v"); + icalerror_check_arg_rz(v < ICAL_RELATED_NONE,"v"); + impl = icalparameter_new_impl(ICAL_RELATED_PARAMETER); + if (impl == 0) { + return 0; + } + + icalparameter_set_related((icalparameter*) impl,v); + if (icalerrno != ICAL_NO_ERROR) { + icalparameter_free((icalparameter*) impl); + return 0; + } + + return (icalparameter*) impl; +} + +icalparameter_related icalparameter_get_related(const icalparameter* param) +{ + icalerror_clear_errno(); +icalerror_check_arg( (param!=0), "param"); + +return (icalparameter_related)((struct icalparameter_impl*)param)->data; +} + +void icalparameter_set_related(icalparameter* param, icalparameter_related v) +{ + icalerror_check_arg_rv(v >= ICAL_RELATED_X,"v"); + icalerror_check_arg_rv(v < ICAL_RELATED_NONE,"v"); + icalerror_check_arg_rv( (param!=0), "param"); + icalerror_clear_errno(); + + ((struct icalparameter_impl*)param)->data = (int)v; +} + +/* SENT-BY */ +icalparameter* icalparameter_new_sentby(const char* v) +{ + struct icalparameter_impl *impl; + icalerror_clear_errno(); + icalerror_check_arg_rz( (v!=0),"v"); + impl = icalparameter_new_impl(ICAL_SENTBY_PARAMETER); + if (impl == 0) { + return 0; + } + + icalparameter_set_sentby((icalparameter*) impl,v); + if (icalerrno != ICAL_NO_ERROR) { + icalparameter_free((icalparameter*) impl); + return 0; + } + + return (icalparameter*) impl; +} + +const char* icalparameter_get_sentby(const icalparameter* param) +{ + icalerror_clear_errno(); + icalerror_check_arg_rz( (param!=0), "param"); + return (const char*)((struct icalparameter_impl*)param)->string; +} + +void icalparameter_set_sentby(icalparameter* param, const char* v) +{ + icalerror_check_arg_rv( (v!=0),"v"); + icalerror_check_arg_rv( (param!=0), "param"); + icalerror_clear_errno(); + + ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v); +} + +/* LANGUAGE */ +icalparameter* icalparameter_new_language(const char* v) +{ + struct icalparameter_impl *impl; + icalerror_clear_errno(); + icalerror_check_arg_rz( (v!=0),"v"); + impl = icalparameter_new_impl(ICAL_LANGUAGE_PARAMETER); + if (impl == 0) { + return 0; + } + + icalparameter_set_language((icalparameter*) impl,v); + if (icalerrno != ICAL_NO_ERROR) { + icalparameter_free((icalparameter*) impl); + return 0; + } + + return (icalparameter*) impl; +} + +const char* icalparameter_get_language(const icalparameter* param) +{ + icalerror_clear_errno(); + icalerror_check_arg_rz( (param!=0), "param"); + return (const char*)((struct icalparameter_impl*)param)->string; +} + +void icalparameter_set_language(icalparameter* param, const char* v) +{ + icalerror_check_arg_rv( (v!=0),"v"); + icalerror_check_arg_rv( (param!=0), "param"); + icalerror_clear_errno(); + + ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v); +} + +/* RELTYPE */ +icalparameter* icalparameter_new_reltype(icalparameter_reltype v) +{ + struct icalparameter_impl *impl; + icalerror_clear_errno(); + icalerror_check_arg_rz(v >= ICAL_RELTYPE_X,"v"); + icalerror_check_arg_rz(v < ICAL_RELTYPE_NONE,"v"); + impl = icalparameter_new_impl(ICAL_RELTYPE_PARAMETER); + if (impl == 0) { + return 0; + } + + icalparameter_set_reltype((icalparameter*) impl,v); + if (icalerrno != ICAL_NO_ERROR) { + icalparameter_free((icalparameter*) impl); + return 0; + } + + return (icalparameter*) impl; +} + +icalparameter_reltype icalparameter_get_reltype(const icalparameter* param) +{ + icalerror_clear_errno(); +icalerror_check_arg( (param!=0), "param"); + if ( ((struct icalparameter_impl*)param)->string != 0){ + return ICAL_RELTYPE_X; + } + +return (icalparameter_reltype)((struct icalparameter_impl*)param)->data; +} + +void icalparameter_set_reltype(icalparameter* param, icalparameter_reltype v) +{ + icalerror_check_arg_rv(v >= ICAL_RELTYPE_X,"v"); + icalerror_check_arg_rv(v < ICAL_RELTYPE_NONE,"v"); + icalerror_check_arg_rv( (param!=0), "param"); + icalerror_clear_errno(); + + ((struct icalparameter_impl*)param)->data = (int)v; +} + +/* ENCODING */ +icalparameter* icalparameter_new_encoding(icalparameter_encoding v) +{ + struct icalparameter_impl *impl; + icalerror_clear_errno(); + icalerror_check_arg_rz(v >= ICAL_ENCODING_X,"v"); + icalerror_check_arg_rz(v < ICAL_ENCODING_NONE,"v"); + impl = icalparameter_new_impl(ICAL_ENCODING_PARAMETER); + if (impl == 0) { + return 0; + } + + icalparameter_set_encoding((icalparameter*) impl,v); + if (icalerrno != ICAL_NO_ERROR) { + icalparameter_free((icalparameter*) impl); + return 0; + } + + return (icalparameter*) impl; +} + +icalparameter_encoding icalparameter_get_encoding(const icalparameter* param) +{ + icalerror_clear_errno(); +icalerror_check_arg( (param!=0), "param"); + if ( ((struct icalparameter_impl*)param)->string != 0){ + return ICAL_ENCODING_X; + } + +return (icalparameter_encoding)((struct icalparameter_impl*)param)->data; +} + +void icalparameter_set_encoding(icalparameter* param, icalparameter_encoding v) +{ + icalerror_check_arg_rv(v >= ICAL_ENCODING_X,"v"); + icalerror_check_arg_rv(v < ICAL_ENCODING_NONE,"v"); + icalerror_check_arg_rv( (param!=0), "param"); + icalerror_clear_errno(); + + ((struct icalparameter_impl*)param)->data = (int)v; +} + +/* ALTREP */ +icalparameter* icalparameter_new_altrep(const char* v) +{ + struct icalparameter_impl *impl; + icalerror_clear_errno(); + icalerror_check_arg_rz( (v!=0),"v"); + impl = icalparameter_new_impl(ICAL_ALTREP_PARAMETER); + if (impl == 0) { + return 0; + } + + icalparameter_set_altrep((icalparameter*) impl,v); + if (icalerrno != ICAL_NO_ERROR) { + icalparameter_free((icalparameter*) impl); + return 0; + } + + return (icalparameter*) impl; +} + +const char* icalparameter_get_altrep(const icalparameter* param) +{ + icalerror_clear_errno(); + icalerror_check_arg_rz( (param!=0), "param"); + return (const char*)((struct icalparameter_impl*)param)->string; +} + +void icalparameter_set_altrep(icalparameter* param, const char* v) +{ + icalerror_check_arg_rv( (v!=0),"v"); + icalerror_check_arg_rv( (param!=0), "param"); + icalerror_clear_errno(); + + ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v); +} + +/* FMTTYPE */ +icalparameter* icalparameter_new_fmttype(const char* v) +{ + struct icalparameter_impl *impl; + icalerror_clear_errno(); + icalerror_check_arg_rz( (v!=0),"v"); + impl = icalparameter_new_impl(ICAL_FMTTYPE_PARAMETER); + if (impl == 0) { + return 0; + } + + icalparameter_set_fmttype((icalparameter*) impl,v); + if (icalerrno != ICAL_NO_ERROR) { + icalparameter_free((icalparameter*) impl); + return 0; + } + + return (icalparameter*) impl; +} + +const char* icalparameter_get_fmttype(const icalparameter* param) +{ + icalerror_clear_errno(); + icalerror_check_arg_rz( (param!=0), "param"); + return (const char*)((struct icalparameter_impl*)param)->string; +} + +void icalparameter_set_fmttype(icalparameter* param, const char* v) +{ + icalerror_check_arg_rv( (v!=0),"v"); + icalerror_check_arg_rv( (param!=0), "param"); + icalerror_clear_errno(); + + ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v); +} + +/* FBTYPE */ +icalparameter* icalparameter_new_fbtype(icalparameter_fbtype v) +{ + struct icalparameter_impl *impl; + icalerror_clear_errno(); + icalerror_check_arg_rz(v >= ICAL_FBTYPE_X,"v"); + icalerror_check_arg_rz(v < ICAL_FBTYPE_NONE,"v"); + impl = icalparameter_new_impl(ICAL_FBTYPE_PARAMETER); + if (impl == 0) { + return 0; + } + + icalparameter_set_fbtype((icalparameter*) impl,v); + if (icalerrno != ICAL_NO_ERROR) { + icalparameter_free((icalparameter*) impl); + return 0; + } + + return (icalparameter*) impl; +} + +icalparameter_fbtype icalparameter_get_fbtype(const icalparameter* param) +{ + icalerror_clear_errno(); +icalerror_check_arg( (param!=0), "param"); + if ( ((struct icalparameter_impl*)param)->string != 0){ + return ICAL_FBTYPE_X; + } + +return (icalparameter_fbtype)((struct icalparameter_impl*)param)->data; +} + +void icalparameter_set_fbtype(icalparameter* param, icalparameter_fbtype v) +{ + icalerror_check_arg_rv(v >= ICAL_FBTYPE_X,"v"); + icalerror_check_arg_rv(v < ICAL_FBTYPE_NONE,"v"); + icalerror_check_arg_rv( (param!=0), "param"); + icalerror_clear_errno(); + + ((struct icalparameter_impl*)param)->data = (int)v; +} + +/* RSVP */ +icalparameter* icalparameter_new_rsvp(icalparameter_rsvp v) +{ + struct icalparameter_impl *impl; + icalerror_clear_errno(); + icalerror_check_arg_rz(v >= ICAL_RSVP_X,"v"); + icalerror_check_arg_rz(v < ICAL_RSVP_NONE,"v"); + impl = icalparameter_new_impl(ICAL_RSVP_PARAMETER); + if (impl == 0) { + return 0; + } + + icalparameter_set_rsvp((icalparameter*) impl,v); + if (icalerrno != ICAL_NO_ERROR) { + icalparameter_free((icalparameter*) impl); + return 0; + } + + return (icalparameter*) impl; +} + +icalparameter_rsvp icalparameter_get_rsvp(const icalparameter* param) +{ + icalerror_clear_errno(); +icalerror_check_arg( (param!=0), "param"); + +return (icalparameter_rsvp)((struct icalparameter_impl*)param)->data; +} + +void icalparameter_set_rsvp(icalparameter* param, icalparameter_rsvp v) +{ + icalerror_check_arg_rv(v >= ICAL_RSVP_X,"v"); + icalerror_check_arg_rv(v < ICAL_RSVP_NONE,"v"); + icalerror_check_arg_rv( (param!=0), "param"); + icalerror_clear_errno(); + + ((struct icalparameter_impl*)param)->data = (int)v; +} + +/* RANGE */ +icalparameter* icalparameter_new_range(icalparameter_range v) +{ + struct icalparameter_impl *impl; + icalerror_clear_errno(); + icalerror_check_arg_rz(v >= ICAL_RANGE_X,"v"); + icalerror_check_arg_rz(v < ICAL_RANGE_NONE,"v"); + impl = icalparameter_new_impl(ICAL_RANGE_PARAMETER); + if (impl == 0) { + return 0; + } + + icalparameter_set_range((icalparameter*) impl,v); + if (icalerrno != ICAL_NO_ERROR) { + icalparameter_free((icalparameter*) impl); + return 0; + } + + return (icalparameter*) impl; +} + +icalparameter_range icalparameter_get_range(const icalparameter* param) +{ + icalerror_clear_errno(); +icalerror_check_arg( (param!=0), "param"); + +return (icalparameter_range)((struct icalparameter_impl*)param)->data; +} + +void icalparameter_set_range(icalparameter* param, icalparameter_range v) +{ + icalerror_check_arg_rv(v >= ICAL_RANGE_X,"v"); + icalerror_check_arg_rv(v < ICAL_RANGE_NONE,"v"); + icalerror_check_arg_rv( (param!=0), "param"); + icalerror_clear_errno(); + + ((struct icalparameter_impl*)param)->data = (int)v; +} + +/* DELEGATED-TO */ +icalparameter* icalparameter_new_delegatedto(const char* v) +{ + struct icalparameter_impl *impl; + icalerror_clear_errno(); + icalerror_check_arg_rz( (v!=0),"v"); + impl = icalparameter_new_impl(ICAL_DELEGATEDTO_PARAMETER); + if (impl == 0) { + return 0; + } + + icalparameter_set_delegatedto((icalparameter*) impl,v); + if (icalerrno != ICAL_NO_ERROR) { + icalparameter_free((icalparameter*) impl); + return 0; + } + + return (icalparameter*) impl; +} + +const char* icalparameter_get_delegatedto(const icalparameter* param) +{ + icalerror_clear_errno(); + icalerror_check_arg_rz( (param!=0), "param"); + return (const char*)((struct icalparameter_impl*)param)->string; +} + +void icalparameter_set_delegatedto(icalparameter* param, const char* v) +{ + icalerror_check_arg_rv( (v!=0),"v"); + icalerror_check_arg_rv( (param!=0), "param"); + icalerror_clear_errno(); + + ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v); +} + +/* CN */ +icalparameter* icalparameter_new_cn(const char* v) +{ + struct icalparameter_impl *impl; + icalerror_clear_errno(); + icalerror_check_arg_rz( (v!=0),"v"); + impl = icalparameter_new_impl(ICAL_CN_PARAMETER); + if (impl == 0) { + return 0; + } + + icalparameter_set_cn((icalparameter*) impl,v); + if (icalerrno != ICAL_NO_ERROR) { + icalparameter_free((icalparameter*) impl); + return 0; + } + + return (icalparameter*) impl; +} + +const char* icalparameter_get_cn(const icalparameter* param) +{ + icalerror_clear_errno(); + icalerror_check_arg_rz( (param!=0), "param"); + return (const char*)((struct icalparameter_impl*)param)->string; +} + +void icalparameter_set_cn(icalparameter* param, const char* v) +{ + icalerror_check_arg_rv( (v!=0),"v"); + icalerror_check_arg_rv( (param!=0), "param"); + icalerror_clear_errno(); + + ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v); +} + +/* ROLE */ +icalparameter* icalparameter_new_role(icalparameter_role v) +{ + struct icalparameter_impl *impl; + icalerror_clear_errno(); + icalerror_check_arg_rz(v >= ICAL_ROLE_X,"v"); + icalerror_check_arg_rz(v < ICAL_ROLE_NONE,"v"); + impl = icalparameter_new_impl(ICAL_ROLE_PARAMETER); + if (impl == 0) { + return 0; + } + + icalparameter_set_role((icalparameter*) impl,v); + if (icalerrno != ICAL_NO_ERROR) { + icalparameter_free((icalparameter*) impl); + return 0; + } + + return (icalparameter*) impl; +} + +icalparameter_role icalparameter_get_role(const icalparameter* param) +{ + icalerror_clear_errno(); +icalerror_check_arg( (param!=0), "param"); + if ( ((struct icalparameter_impl*)param)->string != 0){ + return ICAL_ROLE_X; + } + +return (icalparameter_role)((struct icalparameter_impl*)param)->data; +} + +void icalparameter_set_role(icalparameter* param, icalparameter_role v) +{ + icalerror_check_arg_rv(v >= ICAL_ROLE_X,"v"); + icalerror_check_arg_rv(v < ICAL_ROLE_NONE,"v"); + icalerror_check_arg_rv( (param!=0), "param"); + icalerror_clear_errno(); + + ((struct icalparameter_impl*)param)->data = (int)v; +} + +/* X-LIC-COMPARETYPE */ +icalparameter* icalparameter_new_xliccomparetype(icalparameter_xliccomparetype v) +{ + struct icalparameter_impl *impl; + icalerror_clear_errno(); + icalerror_check_arg_rz(v >= ICAL_XLICCOMPARETYPE_X,"v"); + icalerror_check_arg_rz(v < ICAL_XLICCOMPARETYPE_NONE,"v"); + impl = icalparameter_new_impl(ICAL_XLICCOMPARETYPE_PARAMETER); + if (impl == 0) { + return 0; + } + + icalparameter_set_xliccomparetype((icalparameter*) impl,v); + if (icalerrno != ICAL_NO_ERROR) { + icalparameter_free((icalparameter*) impl); + return 0; + } + + return (icalparameter*) impl; +} + +icalparameter_xliccomparetype icalparameter_get_xliccomparetype(const icalparameter* param) +{ + icalerror_clear_errno(); +icalerror_check_arg( (param!=0), "param"); + +return (icalparameter_xliccomparetype)((struct icalparameter_impl*)param)->data; +} + +void icalparameter_set_xliccomparetype(icalparameter* param, icalparameter_xliccomparetype v) +{ + icalerror_check_arg_rv(v >= ICAL_XLICCOMPARETYPE_X,"v"); + icalerror_check_arg_rv(v < ICAL_XLICCOMPARETYPE_NONE,"v"); + icalerror_check_arg_rv( (param!=0), "param"); + icalerror_clear_errno(); + + ((struct icalparameter_impl*)param)->data = (int)v; +} + +/* PARTSTAT */ +icalparameter* icalparameter_new_partstat(icalparameter_partstat v) +{ + struct icalparameter_impl *impl; + icalerror_clear_errno(); + icalerror_check_arg_rz(v >= ICAL_PARTSTAT_X,"v"); + icalerror_check_arg_rz(v < ICAL_PARTSTAT_NONE,"v"); + impl = icalparameter_new_impl(ICAL_PARTSTAT_PARAMETER); + if (impl == 0) { + return 0; + } + + icalparameter_set_partstat((icalparameter*) impl,v); + if (icalerrno != ICAL_NO_ERROR) { + icalparameter_free((icalparameter*) impl); + return 0; + } + + return (icalparameter*) impl; +} + +icalparameter_partstat icalparameter_get_partstat(const icalparameter* param) +{ + icalerror_clear_errno(); +icalerror_check_arg( (param!=0), "param"); + if ( ((struct icalparameter_impl*)param)->string != 0){ + return ICAL_PARTSTAT_X; + } + +return (icalparameter_partstat)((struct icalparameter_impl*)param)->data; +} + +void icalparameter_set_partstat(icalparameter* param, icalparameter_partstat v) +{ + icalerror_check_arg_rv(v >= ICAL_PARTSTAT_X,"v"); + icalerror_check_arg_rv(v < ICAL_PARTSTAT_NONE,"v"); + icalerror_check_arg_rv( (param!=0), "param"); + icalerror_clear_errno(); + + ((struct icalparameter_impl*)param)->data = (int)v; +} + +/* X-LIC-ERRORTYPE */ +icalparameter* icalparameter_new_xlicerrortype(icalparameter_xlicerrortype v) +{ + struct icalparameter_impl *impl; + icalerror_clear_errno(); + icalerror_check_arg_rz(v >= ICAL_XLICERRORTYPE_X,"v"); + icalerror_check_arg_rz(v < ICAL_XLICERRORTYPE_NONE,"v"); + impl = icalparameter_new_impl(ICAL_XLICERRORTYPE_PARAMETER); + if (impl == 0) { + return 0; + } + + icalparameter_set_xlicerrortype((icalparameter*) impl,v); + if (icalerrno != ICAL_NO_ERROR) { + icalparameter_free((icalparameter*) impl); + return 0; + } + + return (icalparameter*) impl; +} + +icalparameter_xlicerrortype icalparameter_get_xlicerrortype(const icalparameter* param) +{ + icalerror_clear_errno(); +icalerror_check_arg( (param!=0), "param"); + +return (icalparameter_xlicerrortype)((struct icalparameter_impl*)param)->data; +} + +void icalparameter_set_xlicerrortype(icalparameter* param, icalparameter_xlicerrortype v) +{ + icalerror_check_arg_rv(v >= ICAL_XLICERRORTYPE_X,"v"); + icalerror_check_arg_rv(v < ICAL_XLICERRORTYPE_NONE,"v"); + icalerror_check_arg_rv( (param!=0), "param"); + icalerror_clear_errno(); + + ((struct icalparameter_impl*)param)->data = (int)v; +} + +/* MEMBER */ +icalparameter* icalparameter_new_member(const char* v) +{ + struct icalparameter_impl *impl; + icalerror_clear_errno(); + icalerror_check_arg_rz( (v!=0),"v"); + impl = icalparameter_new_impl(ICAL_MEMBER_PARAMETER); + if (impl == 0) { + return 0; + } + + icalparameter_set_member((icalparameter*) impl,v); + if (icalerrno != ICAL_NO_ERROR) { + icalparameter_free((icalparameter*) impl); + return 0; + } + + return (icalparameter*) impl; +} + +const char* icalparameter_get_member(const icalparameter* param) +{ + icalerror_clear_errno(); + icalerror_check_arg_rz( (param!=0), "param"); + return (const char*)((struct icalparameter_impl*)param)->string; +} + +void icalparameter_set_member(icalparameter* param, const char* v) +{ + icalerror_check_arg_rv( (v!=0),"v"); + icalerror_check_arg_rv( (param!=0), "param"); + icalerror_clear_errno(); + + ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v); +} + +/* X */ +icalparameter* icalparameter_new_x(const char* v) +{ + struct icalparameter_impl *impl; + icalerror_clear_errno(); + icalerror_check_arg_rz( (v!=0),"v"); + impl = icalparameter_new_impl(ICAL_X_PARAMETER); + if (impl == 0) { + return 0; + } + + icalparameter_set_x((icalparameter*) impl,v); + if (icalerrno != ICAL_NO_ERROR) { + icalparameter_free((icalparameter*) impl); + return 0; + } + + return (icalparameter*) impl; +} + +const char* icalparameter_get_x(const icalparameter* param) +{ + icalerror_clear_errno(); + icalerror_check_arg_rz( (param!=0), "param"); + return (const char*)((struct icalparameter_impl*)param)->string; +} + +void icalparameter_set_x(icalparameter* param, const char* v) +{ + icalerror_check_arg_rv( (v!=0),"v"); + icalerror_check_arg_rv( (param!=0), "param"); + icalerror_clear_errno(); + + ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v); +} + +/* CUTYPE */ +icalparameter* icalparameter_new_cutype(icalparameter_cutype v) +{ + struct icalparameter_impl *impl; + icalerror_clear_errno(); + icalerror_check_arg_rz(v >= ICAL_CUTYPE_X,"v"); + icalerror_check_arg_rz(v < ICAL_CUTYPE_NONE,"v"); + impl = icalparameter_new_impl(ICAL_CUTYPE_PARAMETER); + if (impl == 0) { + return 0; + } + + icalparameter_set_cutype((icalparameter*) impl,v); + if (icalerrno != ICAL_NO_ERROR) { + icalparameter_free((icalparameter*) impl); + return 0; + } + + return (icalparameter*) impl; +} + +icalparameter_cutype icalparameter_get_cutype(const icalparameter* param) +{ + icalerror_clear_errno(); +icalerror_check_arg( (param!=0), "param"); + if ( ((struct icalparameter_impl*)param)->string != 0){ + return ICAL_CUTYPE_X; + } + +return (icalparameter_cutype)((struct icalparameter_impl*)param)->data; +} + +void icalparameter_set_cutype(icalparameter* param, icalparameter_cutype v) +{ + icalerror_check_arg_rv(v >= ICAL_CUTYPE_X,"v"); + icalerror_check_arg_rv(v < ICAL_CUTYPE_NONE,"v"); + icalerror_check_arg_rv( (param!=0), "param"); + icalerror_clear_errno(); + + ((struct icalparameter_impl*)param)->data = (int)v; +} + +/* TZID */ +icalparameter* icalparameter_new_tzid(const char* v) +{ + struct icalparameter_impl *impl; + icalerror_clear_errno(); + icalerror_check_arg_rz( (v!=0),"v"); + impl = icalparameter_new_impl(ICAL_TZID_PARAMETER); + if (impl == 0) { + return 0; + } + + icalparameter_set_tzid((icalparameter*) impl,v); + if (icalerrno != ICAL_NO_ERROR) { + icalparameter_free((icalparameter*) impl); + return 0; + } + + return (icalparameter*) impl; +} + +const char* icalparameter_get_tzid(const icalparameter* param) +{ + icalerror_clear_errno(); + icalerror_check_arg_rz( (param!=0), "param"); + return (const char*)((struct icalparameter_impl*)param)->string; +} + +void icalparameter_set_tzid(icalparameter* param, const char* v) +{ + icalerror_check_arg_rv( (v!=0),"v"); + icalerror_check_arg_rv( (param!=0), "param"); + icalerror_clear_errno(); + + ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v); +} + +/* VALUE */ +icalparameter* icalparameter_new_value(icalparameter_value v) +{ + struct icalparameter_impl *impl; + icalerror_clear_errno(); + icalerror_check_arg_rz(v >= ICAL_VALUE_X,"v"); + icalerror_check_arg_rz(v < ICAL_VALUE_NONE,"v"); + impl = icalparameter_new_impl(ICAL_VALUE_PARAMETER); + if (impl == 0) { + return 0; + } + + icalparameter_set_value((icalparameter*) impl,v); + if (icalerrno != ICAL_NO_ERROR) { + icalparameter_free((icalparameter*) impl); + return 0; + } + + return (icalparameter*) impl; +} + +icalparameter_value icalparameter_get_value(const icalparameter* param) +{ + icalerror_clear_errno(); +icalerror_check_arg( (param!=0), "param"); + if ( ((struct icalparameter_impl*)param)->string != 0){ + return ICAL_VALUE_X; + } + +return (icalparameter_value)((struct icalparameter_impl*)param)->data; +} + +void icalparameter_set_value(icalparameter* param, icalparameter_value v) +{ + icalerror_check_arg_rv(v >= ICAL_VALUE_X,"v"); + icalerror_check_arg_rv(v < ICAL_VALUE_NONE,"v"); + icalerror_check_arg_rv( (param!=0), "param"); + icalerror_clear_errno(); + + ((struct icalparameter_impl*)param)->data = (int)v; +} + +/* DIR */ +icalparameter* icalparameter_new_dir(const char* v) +{ + struct icalparameter_impl *impl; + icalerror_clear_errno(); + icalerror_check_arg_rz( (v!=0),"v"); + impl = icalparameter_new_impl(ICAL_DIR_PARAMETER); + if (impl == 0) { + return 0; + } + + icalparameter_set_dir((icalparameter*) impl,v); + if (icalerrno != ICAL_NO_ERROR) { + icalparameter_free((icalparameter*) impl); + return 0; + } + + return (icalparameter*) impl; +} + +const char* icalparameter_get_dir(const icalparameter* param) +{ + icalerror_clear_errno(); + icalerror_check_arg_rz( (param!=0), "param"); + return (const char*)((struct icalparameter_impl*)param)->string; +} + +void icalparameter_set_dir(icalparameter* param, const char* v) +{ + icalerror_check_arg_rv( (v!=0),"v"); + icalerror_check_arg_rv( (param!=0), "param"); + icalerror_clear_errno(); + + ((struct icalparameter_impl*)param)->string = icalmemory_strdup(v); +} + + +const char* icalparameter_kind_to_string(icalparameter_kind kind) +{ + int i; + + for (i=0; parameter_map[i].kind != ICAL_NO_PARAMETER; i++) { + if (parameter_map[i].kind == kind) { + return parameter_map[i].name; + } + } + + return 0; + +} + +icalparameter_kind icalparameter_string_to_kind(const char* string) +{ + int i; + + if (string ==0 ) { + return ICAL_NO_PARAMETER; + } + + for (i=0; parameter_map[i].kind != ICAL_NO_PARAMETER; i++) { + + if (strcmp(parameter_map[i].name, string) == 0) { + return parameter_map[i].kind; + } + } + + if(strncmp(string,"X-",2)==0){ + return ICAL_X_PARAMETER; + } + + return ICAL_NO_PARAMETER; +} + + +icalvalue_kind icalparameter_value_to_value_kind(icalparameter_value value) +{ + int i; + + for (i=0; value_kind_map[i].kind != ICAL_NO_VALUE; i++) { + + if (value_kind_map[i].value == value) { + return value_kind_map[i].kind; + } + } + + return ICAL_NO_VALUE; +} + + +const char* icalparameter_enum_to_string(int e) +{ + int i; + + icalerror_check_arg_rz(e >= ICALPARAMETER_FIRST_ENUM,"e"); + icalerror_check_arg_rz(e <= ICALPARAMETER_LAST_ENUM,"e"); + + for (i=0; icalparameter_map[i].kind != ICAL_NO_PARAMETER; i++){ + if(e == icalparameter_map[i].enumeration){ + return icalparameter_map[i].str; + } + } + + return 0; +} + +int icalparameter_string_to_enum(const char* str) +{ + int i; + + icalerror_check_arg_rz(str != 0,"str"); + + for (i=0; icalparameter_map[i].kind != ICAL_NO_PARAMETER; i++){ + if(strcmp(str,icalparameter_map[i].str) == 0) { + return icalparameter_map[i].enumeration; + } + } + + return 0; +} + +icalparameter* icalparameter_new_from_value_string(icalparameter_kind kind,const char* val) +{ + + struct icalparameter_impl* param=0; + int found_kind = 0; + int i; + + icalerror_check_arg_rz((val!=0),"val"); + + /* Search through the parameter map to find a matching kind */ + + param = icalparameter_new_impl(kind); + + for (i=0; icalparameter_map[i].kind != ICAL_NO_PARAMETER; i++){ + if(kind == icalparameter_map[i].kind) { + found_kind = 1; + if(strcmp(val,icalparameter_map[i].str) == 0) { + + param->data = (int)icalparameter_map[i].enumeration; + return param; + } + } + } + + if(found_kind == 1){ + /* The kind was in the parameter map, but the string did not + match, so assume that it is an alternate value, like an + X-value.*/ + + icalparameter_set_xvalue(param, val); + + } else { + + /* If the kind was not found, then it must be a string type */ + + ((struct icalparameter_impl*)param)->string = icalmemory_strdup(val); + + } + + return param; +} + + + + +/* Everything below this line is machine generated. Do not edit. */ diff --git a/mozilla/calendar/libical/src/libical/autogenex/icalderivedparameter.h b/mozilla/calendar/libical/src/libical/autogenex/icalderivedparameter.h new file mode 100644 index 00000000000..1f891d4d682 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/autogenex/icalderivedparameter.h @@ -0,0 +1,310 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalparam.h + CREATOR: eric 20 March 1999 + + + $Id: icalderivedparameter.h,v 1.5 2002/09/01 19:12:31 gray-john Exp $ + $Locker: $ + + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icalparam.h + + ======================================================================*/ + +#ifndef ICALDERIVEDPARAMETER_H +#define ICALDERIVEDPARAMETER_H + + +typedef struct icalparameter_impl icalparameter; + +const char* icalparameter_enum_to_string(int e); +int icalparameter_string_to_enum(const char* str); + +typedef enum icalparameter_kind { + ICAL_ANY_PARAMETER = 0, + ICAL_ALTREP_PARAMETER, + ICAL_CN_PARAMETER, + ICAL_CUTYPE_PARAMETER, + ICAL_DELEGATEDFROM_PARAMETER, + ICAL_DELEGATEDTO_PARAMETER, + ICAL_DIR_PARAMETER, + ICAL_ENCODING_PARAMETER, + ICAL_FBTYPE_PARAMETER, + ICAL_FMTTYPE_PARAMETER, + ICAL_LANGUAGE_PARAMETER, + ICAL_MEMBER_PARAMETER, + ICAL_PARTSTAT_PARAMETER, + ICAL_RANGE_PARAMETER, + ICAL_RELATED_PARAMETER, + ICAL_RELTYPE_PARAMETER, + ICAL_ROLE_PARAMETER, + ICAL_RSVP_PARAMETER, + ICAL_SENTBY_PARAMETER, + ICAL_TZID_PARAMETER, + ICAL_VALUE_PARAMETER, + ICAL_X_PARAMETER, + ICAL_XLICCOMPARETYPE_PARAMETER, + ICAL_XLICERRORTYPE_PARAMETER, + ICAL_NO_PARAMETER +} icalparameter_kind; + +#define ICALPARAMETER_FIRST_ENUM 20000 + +typedef enum icalparameter_cutype { + ICAL_CUTYPE_X = 20000, + ICAL_CUTYPE_INDIVIDUAL = 20001, + ICAL_CUTYPE_GROUP = 20002, + ICAL_CUTYPE_RESOURCE = 20003, + ICAL_CUTYPE_ROOM = 20004, + ICAL_CUTYPE_UNKNOWN = 20005, + ICAL_CUTYPE_NONE = 20006 +} icalparameter_cutype; + +typedef enum icalparameter_encoding { + ICAL_ENCODING_X = 20007, + ICAL_ENCODING_8BIT = 20008, + ICAL_ENCODING_BASE64 = 20009, + ICAL_ENCODING_NONE = 20010 +} icalparameter_encoding; + +typedef enum icalparameter_fbtype { + ICAL_FBTYPE_X = 20011, + ICAL_FBTYPE_FREE = 20012, + ICAL_FBTYPE_BUSY = 20013, + ICAL_FBTYPE_BUSYUNAVAILABLE = 20014, + ICAL_FBTYPE_BUSYTENTATIVE = 20015, + ICAL_FBTYPE_NONE = 20016 +} icalparameter_fbtype; + +typedef enum icalparameter_partstat { + ICAL_PARTSTAT_X = 20017, + ICAL_PARTSTAT_NEEDSACTION = 20018, + ICAL_PARTSTAT_ACCEPTED = 20019, + ICAL_PARTSTAT_DECLINED = 20020, + ICAL_PARTSTAT_TENTATIVE = 20021, + ICAL_PARTSTAT_DELEGATED = 20022, + ICAL_PARTSTAT_COMPLETED = 20023, + ICAL_PARTSTAT_INPROCESS = 20024, + ICAL_PARTSTAT_NONE = 20025 +} icalparameter_partstat; + +typedef enum icalparameter_range { + ICAL_RANGE_X = 20026, + ICAL_RANGE_THISANDPRIOR = 20027, + ICAL_RANGE_THISANDFUTURE = 20028, + ICAL_RANGE_NONE = 20029 +} icalparameter_range; + +typedef enum icalparameter_related { + ICAL_RELATED_X = 20030, + ICAL_RELATED_START = 20031, + ICAL_RELATED_END = 20032, + ICAL_RELATED_NONE = 20033 +} icalparameter_related; + +typedef enum icalparameter_reltype { + ICAL_RELTYPE_X = 20034, + ICAL_RELTYPE_PARENT = 20035, + ICAL_RELTYPE_CHILD = 20036, + ICAL_RELTYPE_SIBLING = 20037, + ICAL_RELTYPE_NONE = 20038 +} icalparameter_reltype; + +typedef enum icalparameter_role { + ICAL_ROLE_X = 20039, + ICAL_ROLE_CHAIR = 20040, + ICAL_ROLE_REQPARTICIPANT = 20041, + ICAL_ROLE_OPTPARTICIPANT = 20042, + ICAL_ROLE_NONPARTICIPANT = 20043, + ICAL_ROLE_NONE = 20044 +} icalparameter_role; + +typedef enum icalparameter_rsvp { + ICAL_RSVP_X = 20045, + ICAL_RSVP_TRUE = 20046, + ICAL_RSVP_FALSE = 20047, + ICAL_RSVP_NONE = 20048 +} icalparameter_rsvp; + +typedef enum icalparameter_value { + ICAL_VALUE_X = 20049, + ICAL_VALUE_BINARY = 20050, + ICAL_VALUE_BOOLEAN = 20051, + ICAL_VALUE_DATE = 20052, + ICAL_VALUE_DURATION = 20053, + ICAL_VALUE_FLOAT = 20054, + ICAL_VALUE_INTEGER = 20055, + ICAL_VALUE_PERIOD = 20056, + ICAL_VALUE_RECUR = 20057, + ICAL_VALUE_TEXT = 20058, + ICAL_VALUE_URI = 20059, + ICAL_VALUE_ERROR = 20060, + ICAL_VALUE_DATETIME = 20061, + ICAL_VALUE_UTCOFFSET = 20062, + ICAL_VALUE_CALADDRESS = 20063, + ICAL_VALUE_NONE = 20064 +} icalparameter_value; + +typedef enum icalparameter_xliccomparetype { + ICAL_XLICCOMPARETYPE_X = 20065, + ICAL_XLICCOMPARETYPE_EQUAL = 20066, + ICAL_XLICCOMPARETYPE_NOTEQUAL = 20067, + ICAL_XLICCOMPARETYPE_LESS = 20068, + ICAL_XLICCOMPARETYPE_GREATER = 20069, + ICAL_XLICCOMPARETYPE_LESSEQUAL = 20070, + ICAL_XLICCOMPARETYPE_GREATEREQUAL = 20071, + ICAL_XLICCOMPARETYPE_REGEX = 20072, + ICAL_XLICCOMPARETYPE_ISNULL = 20073, + ICAL_XLICCOMPARETYPE_ISNOTNULL = 20074, + ICAL_XLICCOMPARETYPE_NONE = 20075 +} icalparameter_xliccomparetype; + +typedef enum icalparameter_xlicerrortype { + ICAL_XLICERRORTYPE_X = 20076, + ICAL_XLICERRORTYPE_COMPONENTPARSEERROR = 20077, + ICAL_XLICERRORTYPE_PROPERTYPARSEERROR = 20078, + ICAL_XLICERRORTYPE_PARAMETERNAMEPARSEERROR = 20079, + ICAL_XLICERRORTYPE_PARAMETERVALUEPARSEERROR = 20080, + ICAL_XLICERRORTYPE_VALUEPARSEERROR = 20081, + ICAL_XLICERRORTYPE_INVALIDITIP = 20082, + ICAL_XLICERRORTYPE_UNKNOWNVCALPROPERROR = 20083, + ICAL_XLICERRORTYPE_MIMEPARSEERROR = 20084, + ICAL_XLICERRORTYPE_VCALPROPPARSEERROR = 20085, + ICAL_XLICERRORTYPE_NONE = 20086 +} icalparameter_xlicerrortype; + +#define ICALPARAMETER_LAST_ENUM 20087 + +/* DELEGATED-FROM */ +icalparameter* icalparameter_new_delegatedfrom(const char* v); +const char* icalparameter_get_delegatedfrom(const icalparameter* value); +void icalparameter_set_delegatedfrom(icalparameter* value, const char* v); + +/* RELATED */ +icalparameter* icalparameter_new_related(icalparameter_related v); +icalparameter_related icalparameter_get_related(const icalparameter* value); +void icalparameter_set_related(icalparameter* value, icalparameter_related v); + +/* SENT-BY */ +icalparameter* icalparameter_new_sentby(const char* v); +const char* icalparameter_get_sentby(const icalparameter* value); +void icalparameter_set_sentby(icalparameter* value, const char* v); + +/* LANGUAGE */ +icalparameter* icalparameter_new_language(const char* v); +const char* icalparameter_get_language(const icalparameter* value); +void icalparameter_set_language(icalparameter* value, const char* v); + +/* RELTYPE */ +icalparameter* icalparameter_new_reltype(icalparameter_reltype v); +icalparameter_reltype icalparameter_get_reltype(const icalparameter* value); +void icalparameter_set_reltype(icalparameter* value, icalparameter_reltype v); + +/* ENCODING */ +icalparameter* icalparameter_new_encoding(icalparameter_encoding v); +icalparameter_encoding icalparameter_get_encoding(const icalparameter* value); +void icalparameter_set_encoding(icalparameter* value, icalparameter_encoding v); + +/* ALTREP */ +icalparameter* icalparameter_new_altrep(const char* v); +const char* icalparameter_get_altrep(const icalparameter* value); +void icalparameter_set_altrep(icalparameter* value, const char* v); + +/* FMTTYPE */ +icalparameter* icalparameter_new_fmttype(const char* v); +const char* icalparameter_get_fmttype(const icalparameter* value); +void icalparameter_set_fmttype(icalparameter* value, const char* v); + +/* FBTYPE */ +icalparameter* icalparameter_new_fbtype(icalparameter_fbtype v); +icalparameter_fbtype icalparameter_get_fbtype(const icalparameter* value); +void icalparameter_set_fbtype(icalparameter* value, icalparameter_fbtype v); + +/* RSVP */ +icalparameter* icalparameter_new_rsvp(icalparameter_rsvp v); +icalparameter_rsvp icalparameter_get_rsvp(const icalparameter* value); +void icalparameter_set_rsvp(icalparameter* value, icalparameter_rsvp v); + +/* RANGE */ +icalparameter* icalparameter_new_range(icalparameter_range v); +icalparameter_range icalparameter_get_range(const icalparameter* value); +void icalparameter_set_range(icalparameter* value, icalparameter_range v); + +/* DELEGATED-TO */ +icalparameter* icalparameter_new_delegatedto(const char* v); +const char* icalparameter_get_delegatedto(const icalparameter* value); +void icalparameter_set_delegatedto(icalparameter* value, const char* v); + +/* CN */ +icalparameter* icalparameter_new_cn(const char* v); +const char* icalparameter_get_cn(const icalparameter* value); +void icalparameter_set_cn(icalparameter* value, const char* v); + +/* ROLE */ +icalparameter* icalparameter_new_role(icalparameter_role v); +icalparameter_role icalparameter_get_role(const icalparameter* value); +void icalparameter_set_role(icalparameter* value, icalparameter_role v); + +/* X-LIC-COMPARETYPE */ +icalparameter* icalparameter_new_xliccomparetype(icalparameter_xliccomparetype v); +icalparameter_xliccomparetype icalparameter_get_xliccomparetype(const icalparameter* value); +void icalparameter_set_xliccomparetype(icalparameter* value, icalparameter_xliccomparetype v); + +/* PARTSTAT */ +icalparameter* icalparameter_new_partstat(icalparameter_partstat v); +icalparameter_partstat icalparameter_get_partstat(const icalparameter* value); +void icalparameter_set_partstat(icalparameter* value, icalparameter_partstat v); + +/* X-LIC-ERRORTYPE */ +icalparameter* icalparameter_new_xlicerrortype(icalparameter_xlicerrortype v); +icalparameter_xlicerrortype icalparameter_get_xlicerrortype(const icalparameter* value); +void icalparameter_set_xlicerrortype(icalparameter* value, icalparameter_xlicerrortype v); + +/* MEMBER */ +icalparameter* icalparameter_new_member(const char* v); +const char* icalparameter_get_member(const icalparameter* value); +void icalparameter_set_member(icalparameter* value, const char* v); + +/* X */ +icalparameter* icalparameter_new_x(const char* v); +const char* icalparameter_get_x(const icalparameter* value); +void icalparameter_set_x(icalparameter* value, const char* v); + +/* CUTYPE */ +icalparameter* icalparameter_new_cutype(icalparameter_cutype v); +icalparameter_cutype icalparameter_get_cutype(const icalparameter* value); +void icalparameter_set_cutype(icalparameter* value, icalparameter_cutype v); + +/* TZID */ +icalparameter* icalparameter_new_tzid(const char* v); +const char* icalparameter_get_tzid(const icalparameter* value); +void icalparameter_set_tzid(icalparameter* value, const char* v); + +/* VALUE */ +icalparameter* icalparameter_new_value(icalparameter_value v); +icalparameter_value icalparameter_get_value(const icalparameter* value); +void icalparameter_set_value(icalparameter* value, icalparameter_value v); + +/* DIR */ +icalparameter* icalparameter_new_dir(const char* v); +const char* icalparameter_get_dir(const icalparameter* value); +void icalparameter_set_dir(icalparameter* value, const char* v); + +#endif /*ICALPARAMETER_H*/ + +/* Everything below this line is machine generated. Do not edit. */ diff --git a/mozilla/calendar/libical/src/libical/autogenex/icalderivedproperty.c b/mozilla/calendar/libical/src/libical/autogenex/icalderivedproperty.c new file mode 100644 index 00000000000..2246c37f1b9 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/autogenex/icalderivedproperty.c @@ -0,0 +1,2514 @@ +/* -*- Mode: C -*- */ + +/*====================================================================== + FILE: icalderivedproperty.c + CREATOR: eric 15 Feb 2001 + + $Id: icalderivedproperty.c,v 1.6 2002/09/01 19:12:31 gray-john Exp $ + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icalproperty.c + +======================================================================*/ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "icalproperty.h" +#include "icalcomponent.h" +#include "pvl.h" +#include "icalenums.h" +#include "icalerror.h" +#include "icalmemory.h" +#include "icalparser.h" + +#include /* For icalmemory_strdup, rindex */ +#include +#include +#include +#include /* for printf */ +#include /* for va_list, va_start, etc. */ + +struct icalproperty_impl* +icalproperty_new_impl (icalproperty_kind kind); +void icalproperty_add_parameters(struct icalproperty_impl *prop,va_list args); + +/* This map associates the property kinds with the string + representation of the property name and the kind of VALUE that the + property uses as a default */ + +struct icalproperty_map { + icalproperty_kind kind; + const char *name; + icalvalue_kind value; + +}; + +/* This map associates the property enumerations with the king of + property that they are used in and the string representation of the + enumeration */ + +struct icalproperty_enum_map { + icalproperty_kind prop; + int prop_enum; + const char* str; +}; + + +static struct icalproperty_map property_map[77] = { +{ICAL_ACTION_PROPERTY,"ACTION",ICAL_ACTION_VALUE}, +{ICAL_ALLOWCONFLICT_PROPERTY,"ALLOW-CONFLICT",ICAL_TEXT_VALUE}, +{ICAL_ANY_PROPERTY,"ANY",ICAL_NO_VALUE}, +{ICAL_ATTACH_PROPERTY,"ATTACH",ICAL_ATTACH_VALUE}, +{ICAL_ATTENDEE_PROPERTY,"ATTENDEE",ICAL_CALADDRESS_VALUE}, +{ICAL_CALID_PROPERTY,"CALID",ICAL_TEXT_VALUE}, +{ICAL_CALMASTER_PROPERTY,"CALMASTER",ICAL_TEXT_VALUE}, +{ICAL_CALSCALE_PROPERTY,"CALSCALE",ICAL_TEXT_VALUE}, +{ICAL_CARID_PROPERTY,"CARID",ICAL_TEXT_VALUE}, +{ICAL_CATEGORIES_PROPERTY,"CATEGORIES",ICAL_TEXT_VALUE}, +{ICAL_CLASS_PROPERTY,"CLASS",ICAL_CLASS_VALUE}, +{ICAL_COMMENT_PROPERTY,"COMMENT",ICAL_TEXT_VALUE}, +{ICAL_COMPLETED_PROPERTY,"COMPLETED",ICAL_DATETIME_VALUE}, +{ICAL_CONTACT_PROPERTY,"CONTACT",ICAL_TEXT_VALUE}, +{ICAL_CREATED_PROPERTY,"CREATED",ICAL_DATETIME_VALUE}, +{ICAL_DECREED_PROPERTY,"DECREED",ICAL_TEXT_VALUE}, +{ICAL_DEFAULTCHARSET_PROPERTY,"DEFAULT-CHARSET",ICAL_TEXT_VALUE}, +{ICAL_DEFAULTLOCALE_PROPERTY,"DEFAULT-LOCALE",ICAL_TEXT_VALUE}, +{ICAL_DEFAULTTZID_PROPERTY,"DEFAULT-TZID",ICAL_TEXT_VALUE}, +{ICAL_DESCRIPTION_PROPERTY,"DESCRIPTION",ICAL_TEXT_VALUE}, +{ICAL_DTEND_PROPERTY,"DTEND",ICAL_DATETIME_VALUE}, +{ICAL_DTSTAMP_PROPERTY,"DTSTAMP",ICAL_DATETIME_VALUE}, +{ICAL_DTSTART_PROPERTY,"DTSTART",ICAL_DATETIME_VALUE}, +{ICAL_DUE_PROPERTY,"DUE",ICAL_DATETIME_VALUE}, +{ICAL_DURATION_PROPERTY,"DURATION",ICAL_DURATION_VALUE}, +{ICAL_EXDATE_PROPERTY,"EXDATE",ICAL_DATETIME_VALUE}, +{ICAL_EXPAND_PROPERTY,"EXPAND",ICAL_INTEGER_VALUE}, +{ICAL_EXRULE_PROPERTY,"EXRULE",ICAL_RECUR_VALUE}, +{ICAL_FREEBUSY_PROPERTY,"FREEBUSY",ICAL_PERIOD_VALUE}, +{ICAL_GEO_PROPERTY,"GEO",ICAL_GEO_VALUE}, +{ICAL_LASTMODIFIED_PROPERTY,"LAST-MODIFIED",ICAL_DATETIME_VALUE}, +{ICAL_LOCATION_PROPERTY,"LOCATION",ICAL_TEXT_VALUE}, +{ICAL_MAXRESULTS_PROPERTY,"MAXRESULTS",ICAL_INTEGER_VALUE}, +{ICAL_MAXRESULTSSIZE_PROPERTY,"MAXRESULTSSIZE",ICAL_INTEGER_VALUE}, +{ICAL_METHOD_PROPERTY,"METHOD",ICAL_METHOD_VALUE}, +{ICAL_ORGANIZER_PROPERTY,"ORGANIZER",ICAL_CALADDRESS_VALUE}, +{ICAL_OWNER_PROPERTY,"OWNER",ICAL_TEXT_VALUE}, +{ICAL_PERCENTCOMPLETE_PROPERTY,"PERCENT-COMPLETE",ICAL_INTEGER_VALUE}, +{ICAL_PRIORITY_PROPERTY,"PRIORITY",ICAL_INTEGER_VALUE}, +{ICAL_PRODID_PROPERTY,"PRODID",ICAL_TEXT_VALUE}, +{ICAL_QUERY_PROPERTY,"QUERY",ICAL_QUERY_VALUE}, +{ICAL_QUERYNAME_PROPERTY,"QUERYNAME",ICAL_TEXT_VALUE}, +{ICAL_RDATE_PROPERTY,"RDATE",ICAL_DATETIMEPERIOD_VALUE}, +{ICAL_RECURRENCEID_PROPERTY,"RECURRENCE-ID",ICAL_DATETIME_VALUE}, +{ICAL_RELATEDTO_PROPERTY,"RELATED-TO",ICAL_TEXT_VALUE}, +{ICAL_RELCALID_PROPERTY,"RELCALID",ICAL_TEXT_VALUE}, +{ICAL_REPEAT_PROPERTY,"REPEAT",ICAL_INTEGER_VALUE}, +{ICAL_REQUESTSTATUS_PROPERTY,"REQUEST-STATUS",ICAL_REQUESTSTATUS_VALUE}, +{ICAL_RESOURCES_PROPERTY,"RESOURCES",ICAL_TEXT_VALUE}, +{ICAL_RRULE_PROPERTY,"RRULE",ICAL_RECUR_VALUE}, +{ICAL_SCOPE_PROPERTY,"SCOPE",ICAL_TEXT_VALUE}, +{ICAL_SEQUENCE_PROPERTY,"SEQUENCE",ICAL_INTEGER_VALUE}, +{ICAL_STATUS_PROPERTY,"STATUS",ICAL_STATUS_VALUE}, +{ICAL_SUMMARY_PROPERTY,"SUMMARY",ICAL_TEXT_VALUE}, +{ICAL_TARGET_PROPERTY,"TARGET",ICAL_CALADDRESS_VALUE}, +{ICAL_TRANSP_PROPERTY,"TRANSP",ICAL_TRANSP_VALUE}, +{ICAL_TRIGGER_PROPERTY,"TRIGGER",ICAL_TRIGGER_VALUE}, +{ICAL_TZID_PROPERTY,"TZID",ICAL_TEXT_VALUE}, +{ICAL_TZNAME_PROPERTY,"TZNAME",ICAL_TEXT_VALUE}, +{ICAL_TZOFFSETFROM_PROPERTY,"TZOFFSETFROM",ICAL_UTCOFFSET_VALUE}, +{ICAL_TZOFFSETTO_PROPERTY,"TZOFFSETTO",ICAL_UTCOFFSET_VALUE}, +{ICAL_TZURL_PROPERTY,"TZURL",ICAL_URI_VALUE}, +{ICAL_UID_PROPERTY,"UID",ICAL_TEXT_VALUE}, +{ICAL_URL_PROPERTY,"URL",ICAL_URI_VALUE}, +{ICAL_VERSION_PROPERTY,"VERSION",ICAL_TEXT_VALUE}, +{ICAL_X_PROPERTY,"X",ICAL_X_VALUE}, +{ICAL_XLICCLASS_PROPERTY,"X-LIC-CLASS",ICAL_XLICCLASS_VALUE}, +{ICAL_XLICCLUSTERCOUNT_PROPERTY,"X-LIC-CLUSTERCOUNT",ICAL_STRING_VALUE}, +{ICAL_XLICERROR_PROPERTY,"X-LIC-ERROR",ICAL_TEXT_VALUE}, +{ICAL_XLICMIMECHARSET_PROPERTY,"X-LIC-MIMECHARSET",ICAL_STRING_VALUE}, +{ICAL_XLICMIMECID_PROPERTY,"X-LIC-MIMECID",ICAL_STRING_VALUE}, +{ICAL_XLICMIMECONTENTTYPE_PROPERTY,"X-LIC-MIMECONTENTTYPE",ICAL_STRING_VALUE}, +{ICAL_XLICMIMEENCODING_PROPERTY,"X-LIC-MIMEENCODING",ICAL_STRING_VALUE}, +{ICAL_XLICMIMEFILENAME_PROPERTY,"X-LIC-MIMEFILENAME",ICAL_STRING_VALUE}, +{ICAL_XLICMIMEOPTINFO_PROPERTY,"X-LIC-MIMEOPTINFO",ICAL_STRING_VALUE}, +{ICAL_NO_PROPERTY,"",ICAL_NO_VALUE}}; + +static struct icalproperty_enum_map enum_map[75] = { + {ICAL_ACTION_PROPERTY,ICAL_ACTION_X,"" }, /*10000*/ + {ICAL_ACTION_PROPERTY,ICAL_ACTION_AUDIO,"AUDIO" }, /*10001*/ + {ICAL_ACTION_PROPERTY,ICAL_ACTION_DISPLAY,"DISPLAY" }, /*10002*/ + {ICAL_ACTION_PROPERTY,ICAL_ACTION_EMAIL,"EMAIL" }, /*10003*/ + {ICAL_ACTION_PROPERTY,ICAL_ACTION_PROCEDURE,"PROCEDURE" }, /*10004*/ + {ICAL_ACTION_PROPERTY,ICAL_ACTION_NONE,"" }, /*10005*/ + {ICAL_CLASS_PROPERTY,ICAL_CLASS_X,"" }, /*10006*/ + {ICAL_CLASS_PROPERTY,ICAL_CLASS_PUBLIC,"PUBLIC" }, /*10007*/ + {ICAL_CLASS_PROPERTY,ICAL_CLASS_PRIVATE,"PRIVATE" }, /*10008*/ + {ICAL_CLASS_PROPERTY,ICAL_CLASS_CONFIDENTIAL,"CONFIDENTIAL" }, /*10009*/ + {ICAL_CLASS_PROPERTY,ICAL_CLASS_NONE,"" }, /*10010*/ + {ICAL_METHOD_PROPERTY,ICAL_METHOD_X,"" }, /*10011*/ + {ICAL_METHOD_PROPERTY,ICAL_METHOD_PUBLISH,"PUBLISH" }, /*10012*/ + {ICAL_METHOD_PROPERTY,ICAL_METHOD_REQUEST,"REQUEST" }, /*10013*/ + {ICAL_METHOD_PROPERTY,ICAL_METHOD_REPLY,"REPLY" }, /*10014*/ + {ICAL_METHOD_PROPERTY,ICAL_METHOD_ADD,"ADD" }, /*10015*/ + {ICAL_METHOD_PROPERTY,ICAL_METHOD_CANCEL,"CANCEL" }, /*10016*/ + {ICAL_METHOD_PROPERTY,ICAL_METHOD_REFRESH,"REFRESH" }, /*10017*/ + {ICAL_METHOD_PROPERTY,ICAL_METHOD_COUNTER,"COUNTER" }, /*10018*/ + {ICAL_METHOD_PROPERTY,ICAL_METHOD_DECLINECOUNTER,"DECLINECOUNTER" }, /*10019*/ + {ICAL_METHOD_PROPERTY,ICAL_METHOD_CREATE,"CREATE" }, /*10020*/ + {ICAL_METHOD_PROPERTY,ICAL_METHOD_READ,"READ" }, /*10021*/ + {ICAL_METHOD_PROPERTY,ICAL_METHOD_RESPONSE,"RESPONSE" }, /*10022*/ + {ICAL_METHOD_PROPERTY,ICAL_METHOD_MOVE,"MOVE" }, /*10023*/ + {ICAL_METHOD_PROPERTY,ICAL_METHOD_MODIFY,"MODIFY" }, /*10024*/ + {ICAL_METHOD_PROPERTY,ICAL_METHOD_GENERATEUID,"GENERATEUID" }, /*10025*/ + {ICAL_METHOD_PROPERTY,ICAL_METHOD_DELETE,"DELETE" }, /*10026*/ + {ICAL_METHOD_PROPERTY,ICAL_METHOD_NONE,"" }, /*10027*/ + {ICAL_STATUS_PROPERTY,ICAL_STATUS_X,"" }, /*10028*/ + {ICAL_STATUS_PROPERTY,ICAL_STATUS_TENTATIVE,"TENTATIVE" }, /*10029*/ + {ICAL_STATUS_PROPERTY,ICAL_STATUS_CONFIRMED,"CONFIRMED" }, /*10030*/ + {ICAL_STATUS_PROPERTY,ICAL_STATUS_COMPLETED,"COMPLETED" }, /*10031*/ + {ICAL_STATUS_PROPERTY,ICAL_STATUS_NEEDSACTION,"NEEDS-ACTION" }, /*10032*/ + {ICAL_STATUS_PROPERTY,ICAL_STATUS_CANCELLED,"CANCELLED" }, /*10033*/ + {ICAL_STATUS_PROPERTY,ICAL_STATUS_INPROCESS,"IN-PROCESS" }, /*10034*/ + {ICAL_STATUS_PROPERTY,ICAL_STATUS_DRAFT,"DRAFT" }, /*10035*/ + {ICAL_STATUS_PROPERTY,ICAL_STATUS_FINAL,"FINAL" }, /*10036*/ + {ICAL_STATUS_PROPERTY,ICAL_STATUS_NONE,"" }, /*10037*/ + {ICAL_TRANSP_PROPERTY,ICAL_TRANSP_X,"" }, /*10038*/ + {ICAL_TRANSP_PROPERTY,ICAL_TRANSP_OPAQUE,"OPAQUE" }, /*10039*/ + {ICAL_TRANSP_PROPERTY,ICAL_TRANSP_OPAQUENOCONFLICT,"OPAQUE-NOCONFLICT" }, /*10040*/ + {ICAL_TRANSP_PROPERTY,ICAL_TRANSP_TRANSPARENT,"TRANSPARENT" }, /*10041*/ + {ICAL_TRANSP_PROPERTY,ICAL_TRANSP_TRANSPARENTNOCONFLICT,"TRANSPARENT-NOCONFLICT" }, /*10042*/ + {ICAL_TRANSP_PROPERTY,ICAL_TRANSP_NONE,"" }, /*10043*/ + {ICAL_XLICCLASS_PROPERTY,ICAL_XLICCLASS_X,"" }, /*10044*/ + {ICAL_XLICCLASS_PROPERTY,ICAL_XLICCLASS_PUBLISHNEW,"PUBLISH-NEW" }, /*10045*/ + {ICAL_XLICCLASS_PROPERTY,ICAL_XLICCLASS_PUBLISHUPDATE,"PUBLISH-UPDATE" }, /*10046*/ + {ICAL_XLICCLASS_PROPERTY,ICAL_XLICCLASS_PUBLISHFREEBUSY,"PUBLISH-FREEBUSY" }, /*10047*/ + {ICAL_XLICCLASS_PROPERTY,ICAL_XLICCLASS_REQUESTNEW,"REQUEST-NEW" }, /*10048*/ + {ICAL_XLICCLASS_PROPERTY,ICAL_XLICCLASS_REQUESTUPDATE,"REQUEST-UPDATE" }, /*10049*/ + {ICAL_XLICCLASS_PROPERTY,ICAL_XLICCLASS_REQUESTRESCHEDULE,"REQUEST-RESCHEDULE" }, /*10050*/ + {ICAL_XLICCLASS_PROPERTY,ICAL_XLICCLASS_REQUESTDELEGATE,"REQUEST-DELEGATE" }, /*10051*/ + {ICAL_XLICCLASS_PROPERTY,ICAL_XLICCLASS_REQUESTNEWORGANIZER,"REQUEST-NEW-ORGANIZER" }, /*10052*/ + {ICAL_XLICCLASS_PROPERTY,ICAL_XLICCLASS_REQUESTFORWARD,"REQUEST-FORWARD" }, /*10053*/ + {ICAL_XLICCLASS_PROPERTY,ICAL_XLICCLASS_REQUESTSTATUS,"REQUEST-STATUS" }, /*10054*/ + {ICAL_XLICCLASS_PROPERTY,ICAL_XLICCLASS_REQUESTFREEBUSY,"REQUEST-FREEBUSY" }, /*10055*/ + {ICAL_XLICCLASS_PROPERTY,ICAL_XLICCLASS_REPLYACCEPT,"REPLY-ACCEPT" }, /*10056*/ + {ICAL_XLICCLASS_PROPERTY,ICAL_XLICCLASS_REPLYDECLINE,"REPLY-DECLINE" }, /*10057*/ + {ICAL_XLICCLASS_PROPERTY,ICAL_XLICCLASS_REPLYDELEGATE,"REPLY-DELEGATE" }, /*10058*/ + {ICAL_XLICCLASS_PROPERTY,ICAL_XLICCLASS_REPLYCRASHERACCEPT,"REPLY-CRASHER-ACCEPT" }, /*10059*/ + {ICAL_XLICCLASS_PROPERTY,ICAL_XLICCLASS_REPLYCRASHERDECLINE,"REPLY-CRASHER-DECLINE" }, /*10060*/ + {ICAL_XLICCLASS_PROPERTY,ICAL_XLICCLASS_ADDINSTANCE,"ADD-INSTANCE" }, /*10061*/ + {ICAL_XLICCLASS_PROPERTY,ICAL_XLICCLASS_CANCELEVENT,"CANCEL-EVENT" }, /*10062*/ + {ICAL_XLICCLASS_PROPERTY,ICAL_XLICCLASS_CANCELINSTANCE,"CANCEL-INSTANCE" }, /*10063*/ + {ICAL_XLICCLASS_PROPERTY,ICAL_XLICCLASS_CANCELALL,"CANCEL-ALL" }, /*10064*/ + {ICAL_XLICCLASS_PROPERTY,ICAL_XLICCLASS_REFRESH,"REFRESH" }, /*10065*/ + {ICAL_XLICCLASS_PROPERTY,ICAL_XLICCLASS_COUNTER,"COUNTER" }, /*10066*/ + {ICAL_XLICCLASS_PROPERTY,ICAL_XLICCLASS_DECLINECOUNTER,"DECLINECOUNTER" }, /*10067*/ + {ICAL_XLICCLASS_PROPERTY,ICAL_XLICCLASS_MALFORMED,"MALFORMED" }, /*10068*/ + {ICAL_XLICCLASS_PROPERTY,ICAL_XLICCLASS_OBSOLETE,"OBSOLETE" }, /*10069*/ + {ICAL_XLICCLASS_PROPERTY,ICAL_XLICCLASS_MISSEQUENCED,"MISSEQUENCED" }, /*10070*/ + {ICAL_XLICCLASS_PROPERTY,ICAL_XLICCLASS_UNKNOWN,"UNKNOWN" }, /*10071*/ + {ICAL_XLICCLASS_PROPERTY,ICAL_XLICCLASS_NONE,"" }, /*10072*/ + {ICAL_NO_PROPERTY,0,""} +}; + +icalproperty* icalproperty_vanew_action(enum icalproperty_action v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_ACTION_PROPERTY); + icalproperty_set_action((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* ACTION */ +icalproperty* icalproperty_new_action(enum icalproperty_action v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_ACTION_PROPERTY); + icalproperty_set_action((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_action(icalproperty* prop, enum icalproperty_action v){ + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_action(v)); +} +enum icalproperty_action icalproperty_get_action(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_action(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_allowconflict(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_ALLOWCONFLICT_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_allowconflict((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* ALLOW-CONFLICT */ +icalproperty* icalproperty_new_allowconflict(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_ALLOWCONFLICT_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_allowconflict((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_allowconflict(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_text(v)); +} +const char* icalproperty_get_allowconflict(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_text(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_attach(icalattach * v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_ATTACH_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_attach((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* ATTACH */ +icalproperty* icalproperty_new_attach(icalattach * v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_ATTACH_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_attach((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_attach(icalproperty* prop, icalattach * v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_attach(v)); +} +icalattach * icalproperty_get_attach(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_attach(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_attendee(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_ATTENDEE_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_attendee((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* ATTENDEE */ +icalproperty* icalproperty_new_attendee(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_ATTENDEE_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_attendee((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_attendee(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_caladdress(v)); +} +const char* icalproperty_get_attendee(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_caladdress(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_calid(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_CALID_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_calid((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* CALID */ +icalproperty* icalproperty_new_calid(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_CALID_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_calid((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_calid(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_text(v)); +} +const char* icalproperty_get_calid(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_text(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_calmaster(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_CALMASTER_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_calmaster((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* CALMASTER */ +icalproperty* icalproperty_new_calmaster(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_CALMASTER_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_calmaster((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_calmaster(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_text(v)); +} +const char* icalproperty_get_calmaster(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_text(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_calscale(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_CALSCALE_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_calscale((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* CALSCALE */ +icalproperty* icalproperty_new_calscale(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_CALSCALE_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_calscale((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_calscale(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_text(v)); +} +const char* icalproperty_get_calscale(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_text(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_carid(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_CARID_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_carid((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* CARID */ +icalproperty* icalproperty_new_carid(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_CARID_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_carid((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_carid(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_text(v)); +} +const char* icalproperty_get_carid(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_text(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_categories(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_CATEGORIES_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_categories((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* CATEGORIES */ +icalproperty* icalproperty_new_categories(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_CATEGORIES_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_categories((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_categories(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_text(v)); +} +const char* icalproperty_get_categories(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_text(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_class(enum icalproperty_class v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_CLASS_PROPERTY); + icalproperty_set_class((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* CLASS */ +icalproperty* icalproperty_new_class(enum icalproperty_class v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_CLASS_PROPERTY); + icalproperty_set_class((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_class(icalproperty* prop, enum icalproperty_class v){ + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_class(v)); +} +enum icalproperty_class icalproperty_get_class(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_class(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_comment(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_COMMENT_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_comment((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* COMMENT */ +icalproperty* icalproperty_new_comment(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_COMMENT_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_comment((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_comment(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_text(v)); +} +const char* icalproperty_get_comment(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_text(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_completed(struct icaltimetype v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_COMPLETED_PROPERTY); + icalproperty_set_completed((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* COMPLETED */ +icalproperty* icalproperty_new_completed(struct icaltimetype v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_COMPLETED_PROPERTY); + icalproperty_set_completed((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_completed(icalproperty* prop, struct icaltimetype v){ + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_datetime(v)); +} +struct icaltimetype icalproperty_get_completed(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_datetime(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_contact(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_CONTACT_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_contact((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* CONTACT */ +icalproperty* icalproperty_new_contact(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_CONTACT_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_contact((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_contact(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_text(v)); +} +const char* icalproperty_get_contact(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_text(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_created(struct icaltimetype v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_CREATED_PROPERTY); + icalproperty_set_created((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* CREATED */ +icalproperty* icalproperty_new_created(struct icaltimetype v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_CREATED_PROPERTY); + icalproperty_set_created((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_created(icalproperty* prop, struct icaltimetype v){ + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_datetime(v)); +} +struct icaltimetype icalproperty_get_created(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_datetime(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_decreed(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_DECREED_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_decreed((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* DECREED */ +icalproperty* icalproperty_new_decreed(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_DECREED_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_decreed((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_decreed(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_text(v)); +} +const char* icalproperty_get_decreed(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_text(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_defaultcharset(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_DEFAULTCHARSET_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_defaultcharset((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* DEFAULT-CHARSET */ +icalproperty* icalproperty_new_defaultcharset(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_DEFAULTCHARSET_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_defaultcharset((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_defaultcharset(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_text(v)); +} +const char* icalproperty_get_defaultcharset(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_text(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_defaultlocale(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_DEFAULTLOCALE_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_defaultlocale((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* DEFAULT-LOCALE */ +icalproperty* icalproperty_new_defaultlocale(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_DEFAULTLOCALE_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_defaultlocale((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_defaultlocale(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_text(v)); +} +const char* icalproperty_get_defaultlocale(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_text(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_defaulttzid(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_DEFAULTTZID_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_defaulttzid((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* DEFAULT-TZID */ +icalproperty* icalproperty_new_defaulttzid(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_DEFAULTTZID_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_defaulttzid((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_defaulttzid(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_text(v)); +} +const char* icalproperty_get_defaulttzid(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_text(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_description(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_DESCRIPTION_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_description((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* DESCRIPTION */ +icalproperty* icalproperty_new_description(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_DESCRIPTION_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_description((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_description(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_text(v)); +} +const char* icalproperty_get_description(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_text(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_dtend(struct icaltimetype v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_DTEND_PROPERTY); + icalproperty_set_dtend((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* DTEND */ +icalproperty* icalproperty_new_dtend(struct icaltimetype v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_DTEND_PROPERTY); + icalproperty_set_dtend((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_dtend(icalproperty* prop, struct icaltimetype v){ + icalvalue *value; + + icalerror_check_arg_rv( (prop!=0),"prop"); + if (v.is_date) + value = icalvalue_new_date(v); + else + value = icalvalue_new_datetime(v); + icalproperty_set_value(prop,value); +} +struct icaltimetype icalproperty_get_dtend(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_datetime(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_dtstamp(struct icaltimetype v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_DTSTAMP_PROPERTY); + icalproperty_set_dtstamp((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* DTSTAMP */ +icalproperty* icalproperty_new_dtstamp(struct icaltimetype v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_DTSTAMP_PROPERTY); + icalproperty_set_dtstamp((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_dtstamp(icalproperty* prop, struct icaltimetype v){ + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_datetime(v)); +} +struct icaltimetype icalproperty_get_dtstamp(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_datetime(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_dtstart(struct icaltimetype v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_DTSTART_PROPERTY); + icalproperty_set_dtstart((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* DTSTART */ +icalproperty* icalproperty_new_dtstart(struct icaltimetype v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_DTSTART_PROPERTY); + icalproperty_set_dtstart((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_dtstart(icalproperty* prop, struct icaltimetype v){ + icalvalue *value; + + icalerror_check_arg_rv( (prop!=0),"prop"); + if (v.is_date) + value = icalvalue_new_date(v); + else + value = icalvalue_new_datetime(v); + icalproperty_set_value(prop,value); +} +struct icaltimetype icalproperty_get_dtstart(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_datetime(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_due(struct icaltimetype v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_DUE_PROPERTY); + icalproperty_set_due((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* DUE */ +icalproperty* icalproperty_new_due(struct icaltimetype v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_DUE_PROPERTY); + icalproperty_set_due((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_due(icalproperty* prop, struct icaltimetype v){ + icalvalue *value; + + icalerror_check_arg_rv( (prop!=0),"prop"); + if (v.is_date) + value = icalvalue_new_date(v); + else + value = icalvalue_new_datetime(v); + icalproperty_set_value(prop,value); +} +struct icaltimetype icalproperty_get_due(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_datetime(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_duration(struct icaldurationtype v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_DURATION_PROPERTY); + icalproperty_set_duration((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* DURATION */ +icalproperty* icalproperty_new_duration(struct icaldurationtype v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_DURATION_PROPERTY); + icalproperty_set_duration((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_duration(icalproperty* prop, struct icaldurationtype v){ + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_duration(v)); +} +struct icaldurationtype icalproperty_get_duration(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_duration(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_exdate(struct icaltimetype v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_EXDATE_PROPERTY); + icalproperty_set_exdate((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* EXDATE */ +icalproperty* icalproperty_new_exdate(struct icaltimetype v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_EXDATE_PROPERTY); + icalproperty_set_exdate((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_exdate(icalproperty* prop, struct icaltimetype v){ + icalvalue *value; + + icalerror_check_arg_rv( (prop!=0),"prop"); + if (v.is_date) + value = icalvalue_new_date(v); + else + value = icalvalue_new_datetime(v); + icalproperty_set_value(prop,value); +} +struct icaltimetype icalproperty_get_exdate(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_datetime(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_expand(int v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_EXPAND_PROPERTY); + icalproperty_set_expand((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* EXPAND */ +icalproperty* icalproperty_new_expand(int v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_EXPAND_PROPERTY); + icalproperty_set_expand((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_expand(icalproperty* prop, int v){ + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_integer(v)); +} +int icalproperty_get_expand(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_integer(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_exrule(struct icalrecurrencetype v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_EXRULE_PROPERTY); + icalproperty_set_exrule((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* EXRULE */ +icalproperty* icalproperty_new_exrule(struct icalrecurrencetype v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_EXRULE_PROPERTY); + icalproperty_set_exrule((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_exrule(icalproperty* prop, struct icalrecurrencetype v){ + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_recur(v)); +} +struct icalrecurrencetype icalproperty_get_exrule(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_recur(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_freebusy(struct icalperiodtype v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_FREEBUSY_PROPERTY); + icalproperty_set_freebusy((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* FREEBUSY */ +icalproperty* icalproperty_new_freebusy(struct icalperiodtype v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_FREEBUSY_PROPERTY); + icalproperty_set_freebusy((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_freebusy(icalproperty* prop, struct icalperiodtype v){ + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_period(v)); +} +struct icalperiodtype icalproperty_get_freebusy(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_period(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_geo(struct icalgeotype v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_GEO_PROPERTY); + icalproperty_set_geo((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* GEO */ +icalproperty* icalproperty_new_geo(struct icalgeotype v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_GEO_PROPERTY); + icalproperty_set_geo((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_geo(icalproperty* prop, struct icalgeotype v){ + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_geo(v)); +} +struct icalgeotype icalproperty_get_geo(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_geo(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_lastmodified(struct icaltimetype v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_LASTMODIFIED_PROPERTY); + icalproperty_set_lastmodified((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* LAST-MODIFIED */ +icalproperty* icalproperty_new_lastmodified(struct icaltimetype v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_LASTMODIFIED_PROPERTY); + icalproperty_set_lastmodified((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_lastmodified(icalproperty* prop, struct icaltimetype v){ + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_datetime(v)); +} +struct icaltimetype icalproperty_get_lastmodified(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_datetime(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_location(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_LOCATION_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_location((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* LOCATION */ +icalproperty* icalproperty_new_location(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_LOCATION_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_location((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_location(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_text(v)); +} +const char* icalproperty_get_location(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_text(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_maxresults(int v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_MAXRESULTS_PROPERTY); + icalproperty_set_maxresults((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* MAXRESULTS */ +icalproperty* icalproperty_new_maxresults(int v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_MAXRESULTS_PROPERTY); + icalproperty_set_maxresults((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_maxresults(icalproperty* prop, int v){ + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_integer(v)); +} +int icalproperty_get_maxresults(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_integer(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_maxresultssize(int v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_MAXRESULTSSIZE_PROPERTY); + icalproperty_set_maxresultssize((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* MAXRESULTSSIZE */ +icalproperty* icalproperty_new_maxresultssize(int v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_MAXRESULTSSIZE_PROPERTY); + icalproperty_set_maxresultssize((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_maxresultssize(icalproperty* prop, int v){ + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_integer(v)); +} +int icalproperty_get_maxresultssize(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_integer(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_method(enum icalproperty_method v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_METHOD_PROPERTY); + icalproperty_set_method((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* METHOD */ +icalproperty* icalproperty_new_method(enum icalproperty_method v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_METHOD_PROPERTY); + icalproperty_set_method((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_method(icalproperty* prop, enum icalproperty_method v){ + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_method(v)); +} +enum icalproperty_method icalproperty_get_method(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_method(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_organizer(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_ORGANIZER_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_organizer((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* ORGANIZER */ +icalproperty* icalproperty_new_organizer(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_ORGANIZER_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_organizer((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_organizer(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_caladdress(v)); +} +const char* icalproperty_get_organizer(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_caladdress(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_owner(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_OWNER_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_owner((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* OWNER */ +icalproperty* icalproperty_new_owner(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_OWNER_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_owner((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_owner(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_text(v)); +} +const char* icalproperty_get_owner(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_text(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_percentcomplete(int v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_PERCENTCOMPLETE_PROPERTY); + icalproperty_set_percentcomplete((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* PERCENT-COMPLETE */ +icalproperty* icalproperty_new_percentcomplete(int v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_PERCENTCOMPLETE_PROPERTY); + icalproperty_set_percentcomplete((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_percentcomplete(icalproperty* prop, int v){ + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_integer(v)); +} +int icalproperty_get_percentcomplete(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_integer(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_priority(int v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_PRIORITY_PROPERTY); + icalproperty_set_priority((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* PRIORITY */ +icalproperty* icalproperty_new_priority(int v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_PRIORITY_PROPERTY); + icalproperty_set_priority((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_priority(icalproperty* prop, int v){ + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_integer(v)); +} +int icalproperty_get_priority(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_integer(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_prodid(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_PRODID_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_prodid((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* PRODID */ +icalproperty* icalproperty_new_prodid(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_PRODID_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_prodid((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_prodid(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_text(v)); +} +const char* icalproperty_get_prodid(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_text(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_query(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_QUERY_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_query((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* QUERY */ +icalproperty* icalproperty_new_query(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_QUERY_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_query((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_query(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_query(v)); +} +const char* icalproperty_get_query(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_query(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_queryname(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_QUERYNAME_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_queryname((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* QUERYNAME */ +icalproperty* icalproperty_new_queryname(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_QUERYNAME_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_queryname((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_queryname(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_text(v)); +} +const char* icalproperty_get_queryname(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_text(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_rdate(struct icaldatetimeperiodtype v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_RDATE_PROPERTY); + icalproperty_set_rdate((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* RDATE */ +icalproperty* icalproperty_new_rdate(struct icaldatetimeperiodtype v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_RDATE_PROPERTY); + icalproperty_set_rdate((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_rdate(icalproperty* prop, struct icaldatetimeperiodtype v){ + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_datetimeperiod(v)); +} +struct icaldatetimeperiodtype icalproperty_get_rdate(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_datetimeperiod(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_recurrenceid(struct icaltimetype v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_RECURRENCEID_PROPERTY); + icalproperty_set_recurrenceid((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* RECURRENCE-ID */ +icalproperty* icalproperty_new_recurrenceid(struct icaltimetype v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_RECURRENCEID_PROPERTY); + icalproperty_set_recurrenceid((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_recurrenceid(icalproperty* prop, struct icaltimetype v){ + icalvalue *value; + + icalerror_check_arg_rv( (prop!=0),"prop"); + if (v.is_date) + value = icalvalue_new_date(v); + else + value = icalvalue_new_datetime(v); + icalproperty_set_value(prop,value); +} +struct icaltimetype icalproperty_get_recurrenceid(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_datetime(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_relatedto(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_RELATEDTO_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_relatedto((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* RELATED-TO */ +icalproperty* icalproperty_new_relatedto(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_RELATEDTO_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_relatedto((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_relatedto(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_text(v)); +} +const char* icalproperty_get_relatedto(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_text(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_relcalid(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_RELCALID_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_relcalid((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* RELCALID */ +icalproperty* icalproperty_new_relcalid(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_RELCALID_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_relcalid((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_relcalid(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_text(v)); +} +const char* icalproperty_get_relcalid(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_text(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_repeat(int v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_REPEAT_PROPERTY); + icalproperty_set_repeat((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* REPEAT */ +icalproperty* icalproperty_new_repeat(int v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_REPEAT_PROPERTY); + icalproperty_set_repeat((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_repeat(icalproperty* prop, int v){ + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_integer(v)); +} +int icalproperty_get_repeat(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_integer(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_requeststatus(struct icalreqstattype v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_REQUESTSTATUS_PROPERTY); + icalproperty_set_requeststatus((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* REQUEST-STATUS */ +icalproperty* icalproperty_new_requeststatus(struct icalreqstattype v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_REQUESTSTATUS_PROPERTY); + icalproperty_set_requeststatus((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_requeststatus(icalproperty* prop, struct icalreqstattype v){ + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_requeststatus(v)); +} +struct icalreqstattype icalproperty_get_requeststatus(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_requeststatus(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_resources(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_RESOURCES_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_resources((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* RESOURCES */ +icalproperty* icalproperty_new_resources(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_RESOURCES_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_resources((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_resources(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_text(v)); +} +const char* icalproperty_get_resources(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_text(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_rrule(struct icalrecurrencetype v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_RRULE_PROPERTY); + icalproperty_set_rrule((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* RRULE */ +icalproperty* icalproperty_new_rrule(struct icalrecurrencetype v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_RRULE_PROPERTY); + icalproperty_set_rrule((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_rrule(icalproperty* prop, struct icalrecurrencetype v){ + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_recur(v)); +} +struct icalrecurrencetype icalproperty_get_rrule(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_recur(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_scope(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_SCOPE_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_scope((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* SCOPE */ +icalproperty* icalproperty_new_scope(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_SCOPE_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_scope((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_scope(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_text(v)); +} +const char* icalproperty_get_scope(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_text(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_sequence(int v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_SEQUENCE_PROPERTY); + icalproperty_set_sequence((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* SEQUENCE */ +icalproperty* icalproperty_new_sequence(int v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_SEQUENCE_PROPERTY); + icalproperty_set_sequence((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_sequence(icalproperty* prop, int v){ + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_integer(v)); +} +int icalproperty_get_sequence(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_integer(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_status(enum icalproperty_status v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_STATUS_PROPERTY); + icalproperty_set_status((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* STATUS */ +icalproperty* icalproperty_new_status(enum icalproperty_status v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_STATUS_PROPERTY); + icalproperty_set_status((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_status(icalproperty* prop, enum icalproperty_status v){ + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_status(v)); +} +enum icalproperty_status icalproperty_get_status(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_status(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_summary(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_SUMMARY_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_summary((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* SUMMARY */ +icalproperty* icalproperty_new_summary(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_SUMMARY_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_summary((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_summary(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_text(v)); +} +const char* icalproperty_get_summary(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_text(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_target(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_TARGET_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_target((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* TARGET */ +icalproperty* icalproperty_new_target(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_TARGET_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_target((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_target(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_caladdress(v)); +} +const char* icalproperty_get_target(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_caladdress(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_transp(enum icalproperty_transp v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_TRANSP_PROPERTY); + icalproperty_set_transp((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* TRANSP */ +icalproperty* icalproperty_new_transp(enum icalproperty_transp v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_TRANSP_PROPERTY); + icalproperty_set_transp((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_transp(icalproperty* prop, enum icalproperty_transp v){ + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_transp(v)); +} +enum icalproperty_transp icalproperty_get_transp(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_transp(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_trigger(struct icaltriggertype v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_TRIGGER_PROPERTY); + icalproperty_set_trigger((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* TRIGGER */ +icalproperty* icalproperty_new_trigger(struct icaltriggertype v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_TRIGGER_PROPERTY); + icalproperty_set_trigger((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_trigger(icalproperty* prop, struct icaltriggertype v){ + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_trigger(v)); +} +struct icaltriggertype icalproperty_get_trigger(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_trigger(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_tzid(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_TZID_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_tzid((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* TZID */ +icalproperty* icalproperty_new_tzid(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_TZID_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_tzid((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_tzid(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_text(v)); +} +const char* icalproperty_get_tzid(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_text(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_tzname(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_TZNAME_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_tzname((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* TZNAME */ +icalproperty* icalproperty_new_tzname(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_TZNAME_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_tzname((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_tzname(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_text(v)); +} +const char* icalproperty_get_tzname(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_text(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_tzoffsetfrom(int v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_TZOFFSETFROM_PROPERTY); + icalproperty_set_tzoffsetfrom((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* TZOFFSETFROM */ +icalproperty* icalproperty_new_tzoffsetfrom(int v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_TZOFFSETFROM_PROPERTY); + icalproperty_set_tzoffsetfrom((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_tzoffsetfrom(icalproperty* prop, int v){ + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_utcoffset(v)); +} +int icalproperty_get_tzoffsetfrom(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_utcoffset(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_tzoffsetto(int v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_TZOFFSETTO_PROPERTY); + icalproperty_set_tzoffsetto((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* TZOFFSETTO */ +icalproperty* icalproperty_new_tzoffsetto(int v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_TZOFFSETTO_PROPERTY); + icalproperty_set_tzoffsetto((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_tzoffsetto(icalproperty* prop, int v){ + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_utcoffset(v)); +} +int icalproperty_get_tzoffsetto(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_utcoffset(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_tzurl(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_TZURL_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_tzurl((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* TZURL */ +icalproperty* icalproperty_new_tzurl(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_TZURL_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_tzurl((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_tzurl(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_uri(v)); +} +const char* icalproperty_get_tzurl(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_uri(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_uid(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_UID_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_uid((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* UID */ +icalproperty* icalproperty_new_uid(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_UID_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_uid((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_uid(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_text(v)); +} +const char* icalproperty_get_uid(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_text(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_url(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_URL_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_url((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* URL */ +icalproperty* icalproperty_new_url(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_URL_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_url((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_url(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_uri(v)); +} +const char* icalproperty_get_url(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_uri(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_version(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_VERSION_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_version((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* VERSION */ +icalproperty* icalproperty_new_version(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_VERSION_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_version((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_version(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_text(v)); +} +const char* icalproperty_get_version(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_text(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_x(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_X_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_x((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* X */ +icalproperty* icalproperty_new_x(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_X_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_x((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_x(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_x(v)); +} +const char* icalproperty_get_x(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_x(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_xlicclass(enum icalproperty_xlicclass v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_XLICCLASS_PROPERTY); + icalproperty_set_xlicclass((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* X-LIC-CLASS */ +icalproperty* icalproperty_new_xlicclass(enum icalproperty_xlicclass v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_XLICCLASS_PROPERTY); + icalproperty_set_xlicclass((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_xlicclass(icalproperty* prop, enum icalproperty_xlicclass v){ + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_xlicclass(v)); +} +enum icalproperty_xlicclass icalproperty_get_xlicclass(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_xlicclass(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_xlicclustercount(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_XLICCLUSTERCOUNT_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_xlicclustercount((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* X-LIC-CLUSTERCOUNT */ +icalproperty* icalproperty_new_xlicclustercount(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_XLICCLUSTERCOUNT_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_xlicclustercount((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_xlicclustercount(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_string(v)); +} +const char* icalproperty_get_xlicclustercount(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_string(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_xlicerror(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_XLICERROR_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_xlicerror((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* X-LIC-ERROR */ +icalproperty* icalproperty_new_xlicerror(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_XLICERROR_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_xlicerror((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_xlicerror(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_text(v)); +} +const char* icalproperty_get_xlicerror(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_text(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_xlicmimecharset(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_XLICMIMECHARSET_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_xlicmimecharset((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* X-LIC-MIMECHARSET */ +icalproperty* icalproperty_new_xlicmimecharset(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_XLICMIMECHARSET_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_xlicmimecharset((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_xlicmimecharset(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_string(v)); +} +const char* icalproperty_get_xlicmimecharset(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_string(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_xlicmimecid(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_XLICMIMECID_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_xlicmimecid((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* X-LIC-MIMECID */ +icalproperty* icalproperty_new_xlicmimecid(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_XLICMIMECID_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_xlicmimecid((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_xlicmimecid(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_string(v)); +} +const char* icalproperty_get_xlicmimecid(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_string(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_xlicmimecontenttype(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_XLICMIMECONTENTTYPE_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_xlicmimecontenttype((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* X-LIC-MIMECONTENTTYPE */ +icalproperty* icalproperty_new_xlicmimecontenttype(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_XLICMIMECONTENTTYPE_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_xlicmimecontenttype((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_xlicmimecontenttype(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_string(v)); +} +const char* icalproperty_get_xlicmimecontenttype(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_string(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_xlicmimeencoding(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_XLICMIMEENCODING_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_xlicmimeencoding((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* X-LIC-MIMEENCODING */ +icalproperty* icalproperty_new_xlicmimeencoding(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_XLICMIMEENCODING_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_xlicmimeencoding((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_xlicmimeencoding(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_string(v)); +} +const char* icalproperty_get_xlicmimeencoding(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_string(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_xlicmimefilename(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_XLICMIMEFILENAME_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_xlicmimefilename((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* X-LIC-MIMEFILENAME */ +icalproperty* icalproperty_new_xlicmimefilename(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_XLICMIMEFILENAME_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_xlicmimefilename((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_xlicmimefilename(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_string(v)); +} +const char* icalproperty_get_xlicmimefilename(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_string(icalproperty_get_value(prop)); +} +icalproperty* icalproperty_vanew_xlicmimeoptinfo(const char* v, ...){ + va_list args; + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_XLICMIMEOPTINFO_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_xlicmimeoptinfo((icalproperty*)impl,v); + va_start(args,v); + icalproperty_add_parameters(impl, args); + va_end(args); + return (icalproperty*)impl; +} + +/* X-LIC-MIMEOPTINFO */ +icalproperty* icalproperty_new_xlicmimeoptinfo(const char* v) { + struct icalproperty_impl *impl = icalproperty_new_impl(ICAL_XLICMIMEOPTINFO_PROPERTY); icalerror_check_arg_rz( (v!=0),"v"); + + icalproperty_set_xlicmimeoptinfo((icalproperty*)impl,v); + return (icalproperty*)impl; +} + +void icalproperty_set_xlicmimeoptinfo(icalproperty* prop, const char* v){ + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_arg_rv( (prop!=0),"prop"); + icalproperty_set_value(prop,icalvalue_new_string(v)); +} +const char* icalproperty_get_xlicmimeoptinfo(const icalproperty* prop){ + icalerror_check_arg( (prop!=0),"prop"); + return icalvalue_get_string(icalproperty_get_value(prop)); +} + +int icalproperty_kind_is_valid(const icalproperty_kind kind) +{ + int i = 0; + do { + if (property_map[i].kind == kind) + return 1; + } while (property_map[i++].kind != ICAL_NO_PROPERTY); + + return 0; +} + +const char* icalproperty_kind_to_string(icalproperty_kind kind) +{ + int i; + + for (i=0; property_map[i].kind != ICAL_NO_PROPERTY; i++) { + if (property_map[i].kind == kind) { + return property_map[i].name; + } + } + + return 0; + +} + + +icalproperty_kind icalproperty_string_to_kind(const char* string) +{ + int i; + + if (string ==0 ) { + return ICAL_NO_PROPERTY; + } + + + for (i=0; property_map[i].kind != ICAL_NO_PROPERTY; i++) { + if (strcmp(property_map[i].name, string) == 0) { + return property_map[i].kind; + } + } + + if(strncmp(string,"X-",2)==0){ + return ICAL_X_PROPERTY; + } + + + return ICAL_NO_PROPERTY; +} + + +icalproperty_kind icalproperty_value_kind_to_kind(icalvalue_kind kind) +{ + int i; + + for (i=0; property_map[i].kind != ICAL_NO_PROPERTY; i++) { + if ( property_map[i].value == kind ) { + return property_map[i].kind; + } + } + + return ICAL_NO_VALUE; +} + + + +icalvalue_kind icalproperty_kind_to_value_kind(icalproperty_kind kind) +{ + int i; + + for (i=0; property_map[i].kind != ICAL_NO_PROPERTY; i++) { + if ( property_map[i].kind == kind ) { + return property_map[i].value; + } + } + + return ICAL_NO_VALUE; +} + + +const char* icalproperty_enum_to_string(int e) +{ + icalerror_check_arg_rz(e >= ICALPROPERTY_FIRST_ENUM,"e"); + icalerror_check_arg_rz(e <= ICALPROPERTY_LAST_ENUM,"e"); + + return enum_map[e-ICALPROPERTY_FIRST_ENUM].str; +} + +int icalproperty_kind_and_string_to_enum(const int kind, const char* str) +{ + icalproperty_kind pkind; + int i; + + icalerror_check_arg_rz(str!=0,"str") + + if ((pkind = icalproperty_value_kind_to_kind(kind)) == ICAL_NO_VALUE) + return 0; + + while(*str == ' '){ + str++; + } + + for (i=ICALPROPERTY_FIRST_ENUM; i != ICALPROPERTY_LAST_ENUM; i++) { + if (enum_map[i-ICALPROPERTY_FIRST_ENUM].prop == pkind) + break; + } + if (i == ICALPROPERTY_LAST_ENUM) + return 0; + + for (; i != ICALPROPERTY_LAST_ENUM; i++) { + if ( strcmp(enum_map[i-ICALPROPERTY_FIRST_ENUM].str, str) == 0) { + return enum_map[i-ICALPROPERTY_FIRST_ENUM].prop_enum; + } + } + + return 0; +} + +/** @deprecated please use icalproperty_kind_and_string_to_enum instead */ +int icalproperty_string_to_enum(const char* str) +{ + int i; + + icalerror_check_arg_rz(str!=0,"str") + + while(*str == ' '){ + str++; + } + + for (i=ICALPROPERTY_FIRST_ENUM; i != ICALPROPERTY_LAST_ENUM; i++) { + if ( strcmp(enum_map[i-ICALPROPERTY_FIRST_ENUM].str, str) == 0) { + return enum_map[i-ICALPROPERTY_FIRST_ENUM].prop_enum; + } + } + + return 0; +} + +int icalproperty_enum_belongs_to_property(icalproperty_kind kind, int e) +{ + int i; + + + for (i=ICALPROPERTY_FIRST_ENUM; i != ICALPROPERTY_LAST_ENUM; i++) { + if(enum_map[i-ICALPROPERTY_FIRST_ENUM].prop_enum == e && + enum_map[i-ICALPROPERTY_FIRST_ENUM].prop == kind ){ + return 1; + } + } + + return 0; +} + + +const char* icalproperty_method_to_string(icalproperty_method method) +{ + icalerror_check_arg_rz(method >= ICAL_METHOD_X,"method"); + icalerror_check_arg_rz(method <= ICAL_METHOD_NONE,"method"); + + return enum_map[method-ICALPROPERTY_FIRST_ENUM].str; +} + +icalproperty_method icalproperty_string_to_method(const char* str) +{ + int i; + + icalerror_check_arg_rx(str!=0,"str",ICAL_METHOD_NONE) + + while(*str == ' '){ + str++; + } + + for (i=ICAL_METHOD_X-ICALPROPERTY_FIRST_ENUM; + i != ICAL_METHOD_NONE-ICALPROPERTY_FIRST_ENUM; + i++) { + if ( strcmp(enum_map[i].str, str) == 0) { + return (icalproperty_method)enum_map[i].prop_enum; + } + } + + return ICAL_METHOD_NONE; +} + + +const char* icalenum_status_to_string(icalproperty_status status) +{ + icalerror_check_arg_rz(status >= ICAL_STATUS_X,"status"); + icalerror_check_arg_rz(status <= ICAL_STATUS_NONE,"status"); + + return enum_map[status-ICALPROPERTY_FIRST_ENUM].str; +} + +icalproperty_status icalenum_string_to_status(const char* str) +{ + int i; + + icalerror_check_arg_rx(str!=0,"str",ICAL_STATUS_NONE) + + while(*str == ' '){ + str++; + } + + for (i=ICAL_STATUS_X-ICALPROPERTY_FIRST_ENUM; + i != ICAL_STATUS_NONE-ICALPROPERTY_FIRST_ENUM; + i++) { + if ( strcmp(enum_map[i].str, str) == 0) { + return (icalproperty_method)enum_map[i].prop_enum; + } + } + + return ICAL_STATUS_NONE; + +} diff --git a/mozilla/calendar/libical/src/libical/autogenex/icalderivedproperty.h b/mozilla/calendar/libical/src/libical/autogenex/icalderivedproperty.h new file mode 100644 index 00000000000..cedf7739183 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/autogenex/icalderivedproperty.h @@ -0,0 +1,473 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: icalderivedproperties.{c,h} + CREATOR: eric 09 May 1999 + + $Id: icalderivedproperty.h,v 1.5 2002/09/01 19:12:31 gray-john Exp $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + ======================================================================*/ + + +#ifndef ICALDERIVEDPROPERTY_H +#define ICALDERIVEDPROPERTY_H + +#include +#include "icalparameter.h" +#include "icalderivedvalue.h" +#include "icalrecur.h" + +typedef struct icalproperty_impl icalproperty; + +typedef enum icalproperty_kind { + ICAL_ANY_PROPERTY = 0, + ICAL_ACTION_PROPERTY, + ICAL_ALLOWCONFLICT_PROPERTY, + ICAL_ATTACH_PROPERTY, + ICAL_ATTENDEE_PROPERTY, + ICAL_CALID_PROPERTY, + ICAL_CALMASTER_PROPERTY, + ICAL_CALSCALE_PROPERTY, + ICAL_CARID_PROPERTY, + ICAL_CATEGORIES_PROPERTY, + ICAL_CLASS_PROPERTY, + ICAL_COMMENT_PROPERTY, + ICAL_COMPLETED_PROPERTY, + ICAL_CONTACT_PROPERTY, + ICAL_CREATED_PROPERTY, + ICAL_DECREED_PROPERTY, + ICAL_DEFAULTCHARSET_PROPERTY, + ICAL_DEFAULTLOCALE_PROPERTY, + ICAL_DEFAULTTZID_PROPERTY, + ICAL_DESCRIPTION_PROPERTY, + ICAL_DTEND_PROPERTY, + ICAL_DTSTAMP_PROPERTY, + ICAL_DTSTART_PROPERTY, + ICAL_DUE_PROPERTY, + ICAL_DURATION_PROPERTY, + ICAL_EXDATE_PROPERTY, + ICAL_EXPAND_PROPERTY, + ICAL_EXRULE_PROPERTY, + ICAL_FREEBUSY_PROPERTY, + ICAL_GEO_PROPERTY, + ICAL_LASTMODIFIED_PROPERTY, + ICAL_LOCATION_PROPERTY, + ICAL_MAXRESULTS_PROPERTY, + ICAL_MAXRESULTSSIZE_PROPERTY, + ICAL_METHOD_PROPERTY, + ICAL_ORGANIZER_PROPERTY, + ICAL_OWNER_PROPERTY, + ICAL_PERCENTCOMPLETE_PROPERTY, + ICAL_PRIORITY_PROPERTY, + ICAL_PRODID_PROPERTY, + ICAL_QUERY_PROPERTY, + ICAL_QUERYNAME_PROPERTY, + ICAL_RDATE_PROPERTY, + ICAL_RECURRENCEID_PROPERTY, + ICAL_RELATEDTO_PROPERTY, + ICAL_RELCALID_PROPERTY, + ICAL_REPEAT_PROPERTY, + ICAL_REQUESTSTATUS_PROPERTY, + ICAL_RESOURCES_PROPERTY, + ICAL_RRULE_PROPERTY, + ICAL_SCOPE_PROPERTY, + ICAL_SEQUENCE_PROPERTY, + ICAL_STATUS_PROPERTY, + ICAL_SUMMARY_PROPERTY, + ICAL_TARGET_PROPERTY, + ICAL_TRANSP_PROPERTY, + ICAL_TRIGGER_PROPERTY, + ICAL_TZID_PROPERTY, + ICAL_TZNAME_PROPERTY, + ICAL_TZOFFSETFROM_PROPERTY, + ICAL_TZOFFSETTO_PROPERTY, + ICAL_TZURL_PROPERTY, + ICAL_UID_PROPERTY, + ICAL_URL_PROPERTY, + ICAL_VERSION_PROPERTY, + ICAL_X_PROPERTY, + ICAL_XLICCLASS_PROPERTY, + ICAL_XLICCLUSTERCOUNT_PROPERTY, + ICAL_XLICERROR_PROPERTY, + ICAL_XLICMIMECHARSET_PROPERTY, + ICAL_XLICMIMECID_PROPERTY, + ICAL_XLICMIMECONTENTTYPE_PROPERTY, + ICAL_XLICMIMEENCODING_PROPERTY, + ICAL_XLICMIMEFILENAME_PROPERTY, + ICAL_XLICMIMEOPTINFO_PROPERTY, + ICAL_NO_PROPERTY +} icalproperty_kind; + + +/* ACTION */ +icalproperty* icalproperty_new_action(enum icalproperty_action v); +void icalproperty_set_action(icalproperty* prop, enum icalproperty_action v); +enum icalproperty_action icalproperty_get_action(const icalproperty* prop);icalproperty* icalproperty_vanew_action(enum icalproperty_action v, ...); + +/* ALLOW-CONFLICT */ +icalproperty* icalproperty_new_allowconflict(const char* v); +void icalproperty_set_allowconflict(icalproperty* prop, const char* v); +const char* icalproperty_get_allowconflict(const icalproperty* prop);icalproperty* icalproperty_vanew_allowconflict(const char* v, ...); + +/* ATTACH */ +icalproperty* icalproperty_new_attach(icalattach * v); +void icalproperty_set_attach(icalproperty* prop, icalattach * v); +icalattach * icalproperty_get_attach(const icalproperty* prop);icalproperty* icalproperty_vanew_attach(icalattach * v, ...); + +/* ATTENDEE */ +icalproperty* icalproperty_new_attendee(const char* v); +void icalproperty_set_attendee(icalproperty* prop, const char* v); +const char* icalproperty_get_attendee(const icalproperty* prop);icalproperty* icalproperty_vanew_attendee(const char* v, ...); + +/* CALID */ +icalproperty* icalproperty_new_calid(const char* v); +void icalproperty_set_calid(icalproperty* prop, const char* v); +const char* icalproperty_get_calid(const icalproperty* prop);icalproperty* icalproperty_vanew_calid(const char* v, ...); + +/* CALMASTER */ +icalproperty* icalproperty_new_calmaster(const char* v); +void icalproperty_set_calmaster(icalproperty* prop, const char* v); +const char* icalproperty_get_calmaster(const icalproperty* prop);icalproperty* icalproperty_vanew_calmaster(const char* v, ...); + +/* CALSCALE */ +icalproperty* icalproperty_new_calscale(const char* v); +void icalproperty_set_calscale(icalproperty* prop, const char* v); +const char* icalproperty_get_calscale(const icalproperty* prop);icalproperty* icalproperty_vanew_calscale(const char* v, ...); + +/* CARID */ +icalproperty* icalproperty_new_carid(const char* v); +void icalproperty_set_carid(icalproperty* prop, const char* v); +const char* icalproperty_get_carid(const icalproperty* prop);icalproperty* icalproperty_vanew_carid(const char* v, ...); + +/* CATEGORIES */ +icalproperty* icalproperty_new_categories(const char* v); +void icalproperty_set_categories(icalproperty* prop, const char* v); +const char* icalproperty_get_categories(const icalproperty* prop);icalproperty* icalproperty_vanew_categories(const char* v, ...); + +/* CLASS */ +icalproperty* icalproperty_new_class(enum icalproperty_class v); +void icalproperty_set_class(icalproperty* prop, enum icalproperty_class v); +enum icalproperty_class icalproperty_get_class(const icalproperty* prop);icalproperty* icalproperty_vanew_class(enum icalproperty_class v, ...); + +/* COMMENT */ +icalproperty* icalproperty_new_comment(const char* v); +void icalproperty_set_comment(icalproperty* prop, const char* v); +const char* icalproperty_get_comment(const icalproperty* prop);icalproperty* icalproperty_vanew_comment(const char* v, ...); + +/* COMPLETED */ +icalproperty* icalproperty_new_completed(struct icaltimetype v); +void icalproperty_set_completed(icalproperty* prop, struct icaltimetype v); +struct icaltimetype icalproperty_get_completed(const icalproperty* prop);icalproperty* icalproperty_vanew_completed(struct icaltimetype v, ...); + +/* CONTACT */ +icalproperty* icalproperty_new_contact(const char* v); +void icalproperty_set_contact(icalproperty* prop, const char* v); +const char* icalproperty_get_contact(const icalproperty* prop);icalproperty* icalproperty_vanew_contact(const char* v, ...); + +/* CREATED */ +icalproperty* icalproperty_new_created(struct icaltimetype v); +void icalproperty_set_created(icalproperty* prop, struct icaltimetype v); +struct icaltimetype icalproperty_get_created(const icalproperty* prop);icalproperty* icalproperty_vanew_created(struct icaltimetype v, ...); + +/* DECREED */ +icalproperty* icalproperty_new_decreed(const char* v); +void icalproperty_set_decreed(icalproperty* prop, const char* v); +const char* icalproperty_get_decreed(const icalproperty* prop);icalproperty* icalproperty_vanew_decreed(const char* v, ...); + +/* DEFAULT-CHARSET */ +icalproperty* icalproperty_new_defaultcharset(const char* v); +void icalproperty_set_defaultcharset(icalproperty* prop, const char* v); +const char* icalproperty_get_defaultcharset(const icalproperty* prop);icalproperty* icalproperty_vanew_defaultcharset(const char* v, ...); + +/* DEFAULT-LOCALE */ +icalproperty* icalproperty_new_defaultlocale(const char* v); +void icalproperty_set_defaultlocale(icalproperty* prop, const char* v); +const char* icalproperty_get_defaultlocale(const icalproperty* prop);icalproperty* icalproperty_vanew_defaultlocale(const char* v, ...); + +/* DEFAULT-TZID */ +icalproperty* icalproperty_new_defaulttzid(const char* v); +void icalproperty_set_defaulttzid(icalproperty* prop, const char* v); +const char* icalproperty_get_defaulttzid(const icalproperty* prop);icalproperty* icalproperty_vanew_defaulttzid(const char* v, ...); + +/* DESCRIPTION */ +icalproperty* icalproperty_new_description(const char* v); +void icalproperty_set_description(icalproperty* prop, const char* v); +const char* icalproperty_get_description(const icalproperty* prop);icalproperty* icalproperty_vanew_description(const char* v, ...); + +/* DTEND */ +icalproperty* icalproperty_new_dtend(struct icaltimetype v); +void icalproperty_set_dtend(icalproperty* prop, struct icaltimetype v); +struct icaltimetype icalproperty_get_dtend(const icalproperty* prop);icalproperty* icalproperty_vanew_dtend(struct icaltimetype v, ...); + +/* DTSTAMP */ +icalproperty* icalproperty_new_dtstamp(struct icaltimetype v); +void icalproperty_set_dtstamp(icalproperty* prop, struct icaltimetype v); +struct icaltimetype icalproperty_get_dtstamp(const icalproperty* prop);icalproperty* icalproperty_vanew_dtstamp(struct icaltimetype v, ...); + +/* DTSTART */ +icalproperty* icalproperty_new_dtstart(struct icaltimetype v); +void icalproperty_set_dtstart(icalproperty* prop, struct icaltimetype v); +struct icaltimetype icalproperty_get_dtstart(const icalproperty* prop);icalproperty* icalproperty_vanew_dtstart(struct icaltimetype v, ...); + +/* DUE */ +icalproperty* icalproperty_new_due(struct icaltimetype v); +void icalproperty_set_due(icalproperty* prop, struct icaltimetype v); +struct icaltimetype icalproperty_get_due(const icalproperty* prop);icalproperty* icalproperty_vanew_due(struct icaltimetype v, ...); + +/* DURATION */ +icalproperty* icalproperty_new_duration(struct icaldurationtype v); +void icalproperty_set_duration(icalproperty* prop, struct icaldurationtype v); +struct icaldurationtype icalproperty_get_duration(const icalproperty* prop);icalproperty* icalproperty_vanew_duration(struct icaldurationtype v, ...); + +/* EXDATE */ +icalproperty* icalproperty_new_exdate(struct icaltimetype v); +void icalproperty_set_exdate(icalproperty* prop, struct icaltimetype v); +struct icaltimetype icalproperty_get_exdate(const icalproperty* prop);icalproperty* icalproperty_vanew_exdate(struct icaltimetype v, ...); + +/* EXPAND */ +icalproperty* icalproperty_new_expand(int v); +void icalproperty_set_expand(icalproperty* prop, int v); +int icalproperty_get_expand(const icalproperty* prop);icalproperty* icalproperty_vanew_expand(int v, ...); + +/* EXRULE */ +icalproperty* icalproperty_new_exrule(struct icalrecurrencetype v); +void icalproperty_set_exrule(icalproperty* prop, struct icalrecurrencetype v); +struct icalrecurrencetype icalproperty_get_exrule(const icalproperty* prop);icalproperty* icalproperty_vanew_exrule(struct icalrecurrencetype v, ...); + +/* FREEBUSY */ +icalproperty* icalproperty_new_freebusy(struct icalperiodtype v); +void icalproperty_set_freebusy(icalproperty* prop, struct icalperiodtype v); +struct icalperiodtype icalproperty_get_freebusy(const icalproperty* prop);icalproperty* icalproperty_vanew_freebusy(struct icalperiodtype v, ...); + +/* GEO */ +icalproperty* icalproperty_new_geo(struct icalgeotype v); +void icalproperty_set_geo(icalproperty* prop, struct icalgeotype v); +struct icalgeotype icalproperty_get_geo(const icalproperty* prop);icalproperty* icalproperty_vanew_geo(struct icalgeotype v, ...); + +/* LAST-MODIFIED */ +icalproperty* icalproperty_new_lastmodified(struct icaltimetype v); +void icalproperty_set_lastmodified(icalproperty* prop, struct icaltimetype v); +struct icaltimetype icalproperty_get_lastmodified(const icalproperty* prop);icalproperty* icalproperty_vanew_lastmodified(struct icaltimetype v, ...); + +/* LOCATION */ +icalproperty* icalproperty_new_location(const char* v); +void icalproperty_set_location(icalproperty* prop, const char* v); +const char* icalproperty_get_location(const icalproperty* prop);icalproperty* icalproperty_vanew_location(const char* v, ...); + +/* MAXRESULTS */ +icalproperty* icalproperty_new_maxresults(int v); +void icalproperty_set_maxresults(icalproperty* prop, int v); +int icalproperty_get_maxresults(const icalproperty* prop);icalproperty* icalproperty_vanew_maxresults(int v, ...); + +/* MAXRESULTSSIZE */ +icalproperty* icalproperty_new_maxresultssize(int v); +void icalproperty_set_maxresultssize(icalproperty* prop, int v); +int icalproperty_get_maxresultssize(const icalproperty* prop);icalproperty* icalproperty_vanew_maxresultssize(int v, ...); + +/* METHOD */ +icalproperty* icalproperty_new_method(enum icalproperty_method v); +void icalproperty_set_method(icalproperty* prop, enum icalproperty_method v); +enum icalproperty_method icalproperty_get_method(const icalproperty* prop);icalproperty* icalproperty_vanew_method(enum icalproperty_method v, ...); + +/* ORGANIZER */ +icalproperty* icalproperty_new_organizer(const char* v); +void icalproperty_set_organizer(icalproperty* prop, const char* v); +const char* icalproperty_get_organizer(const icalproperty* prop);icalproperty* icalproperty_vanew_organizer(const char* v, ...); + +/* OWNER */ +icalproperty* icalproperty_new_owner(const char* v); +void icalproperty_set_owner(icalproperty* prop, const char* v); +const char* icalproperty_get_owner(const icalproperty* prop);icalproperty* icalproperty_vanew_owner(const char* v, ...); + +/* PERCENT-COMPLETE */ +icalproperty* icalproperty_new_percentcomplete(int v); +void icalproperty_set_percentcomplete(icalproperty* prop, int v); +int icalproperty_get_percentcomplete(const icalproperty* prop);icalproperty* icalproperty_vanew_percentcomplete(int v, ...); + +/* PRIORITY */ +icalproperty* icalproperty_new_priority(int v); +void icalproperty_set_priority(icalproperty* prop, int v); +int icalproperty_get_priority(const icalproperty* prop);icalproperty* icalproperty_vanew_priority(int v, ...); + +/* PRODID */ +icalproperty* icalproperty_new_prodid(const char* v); +void icalproperty_set_prodid(icalproperty* prop, const char* v); +const char* icalproperty_get_prodid(const icalproperty* prop);icalproperty* icalproperty_vanew_prodid(const char* v, ...); + +/* QUERY */ +icalproperty* icalproperty_new_query(const char* v); +void icalproperty_set_query(icalproperty* prop, const char* v); +const char* icalproperty_get_query(const icalproperty* prop);icalproperty* icalproperty_vanew_query(const char* v, ...); + +/* QUERYNAME */ +icalproperty* icalproperty_new_queryname(const char* v); +void icalproperty_set_queryname(icalproperty* prop, const char* v); +const char* icalproperty_get_queryname(const icalproperty* prop);icalproperty* icalproperty_vanew_queryname(const char* v, ...); + +/* RDATE */ +icalproperty* icalproperty_new_rdate(struct icaldatetimeperiodtype v); +void icalproperty_set_rdate(icalproperty* prop, struct icaldatetimeperiodtype v); +struct icaldatetimeperiodtype icalproperty_get_rdate(const icalproperty* prop);icalproperty* icalproperty_vanew_rdate(struct icaldatetimeperiodtype v, ...); + +/* RECURRENCE-ID */ +icalproperty* icalproperty_new_recurrenceid(struct icaltimetype v); +void icalproperty_set_recurrenceid(icalproperty* prop, struct icaltimetype v); +struct icaltimetype icalproperty_get_recurrenceid(const icalproperty* prop);icalproperty* icalproperty_vanew_recurrenceid(struct icaltimetype v, ...); + +/* RELATED-TO */ +icalproperty* icalproperty_new_relatedto(const char* v); +void icalproperty_set_relatedto(icalproperty* prop, const char* v); +const char* icalproperty_get_relatedto(const icalproperty* prop);icalproperty* icalproperty_vanew_relatedto(const char* v, ...); + +/* RELCALID */ +icalproperty* icalproperty_new_relcalid(const char* v); +void icalproperty_set_relcalid(icalproperty* prop, const char* v); +const char* icalproperty_get_relcalid(const icalproperty* prop);icalproperty* icalproperty_vanew_relcalid(const char* v, ...); + +/* REPEAT */ +icalproperty* icalproperty_new_repeat(int v); +void icalproperty_set_repeat(icalproperty* prop, int v); +int icalproperty_get_repeat(const icalproperty* prop);icalproperty* icalproperty_vanew_repeat(int v, ...); + +/* REQUEST-STATUS */ +icalproperty* icalproperty_new_requeststatus(struct icalreqstattype v); +void icalproperty_set_requeststatus(icalproperty* prop, struct icalreqstattype v); +struct icalreqstattype icalproperty_get_requeststatus(const icalproperty* prop);icalproperty* icalproperty_vanew_requeststatus(struct icalreqstattype v, ...); + +/* RESOURCES */ +icalproperty* icalproperty_new_resources(const char* v); +void icalproperty_set_resources(icalproperty* prop, const char* v); +const char* icalproperty_get_resources(const icalproperty* prop);icalproperty* icalproperty_vanew_resources(const char* v, ...); + +/* RRULE */ +icalproperty* icalproperty_new_rrule(struct icalrecurrencetype v); +void icalproperty_set_rrule(icalproperty* prop, struct icalrecurrencetype v); +struct icalrecurrencetype icalproperty_get_rrule(const icalproperty* prop);icalproperty* icalproperty_vanew_rrule(struct icalrecurrencetype v, ...); + +/* SCOPE */ +icalproperty* icalproperty_new_scope(const char* v); +void icalproperty_set_scope(icalproperty* prop, const char* v); +const char* icalproperty_get_scope(const icalproperty* prop);icalproperty* icalproperty_vanew_scope(const char* v, ...); + +/* SEQUENCE */ +icalproperty* icalproperty_new_sequence(int v); +void icalproperty_set_sequence(icalproperty* prop, int v); +int icalproperty_get_sequence(const icalproperty* prop);icalproperty* icalproperty_vanew_sequence(int v, ...); + +/* STATUS */ +icalproperty* icalproperty_new_status(enum icalproperty_status v); +void icalproperty_set_status(icalproperty* prop, enum icalproperty_status v); +enum icalproperty_status icalproperty_get_status(const icalproperty* prop);icalproperty* icalproperty_vanew_status(enum icalproperty_status v, ...); + +/* SUMMARY */ +icalproperty* icalproperty_new_summary(const char* v); +void icalproperty_set_summary(icalproperty* prop, const char* v); +const char* icalproperty_get_summary(const icalproperty* prop);icalproperty* icalproperty_vanew_summary(const char* v, ...); + +/* TARGET */ +icalproperty* icalproperty_new_target(const char* v); +void icalproperty_set_target(icalproperty* prop, const char* v); +const char* icalproperty_get_target(const icalproperty* prop);icalproperty* icalproperty_vanew_target(const char* v, ...); + +/* TRANSP */ +icalproperty* icalproperty_new_transp(enum icalproperty_transp v); +void icalproperty_set_transp(icalproperty* prop, enum icalproperty_transp v); +enum icalproperty_transp icalproperty_get_transp(const icalproperty* prop);icalproperty* icalproperty_vanew_transp(enum icalproperty_transp v, ...); + +/* TRIGGER */ +icalproperty* icalproperty_new_trigger(struct icaltriggertype v); +void icalproperty_set_trigger(icalproperty* prop, struct icaltriggertype v); +struct icaltriggertype icalproperty_get_trigger(const icalproperty* prop);icalproperty* icalproperty_vanew_trigger(struct icaltriggertype v, ...); + +/* TZID */ +icalproperty* icalproperty_new_tzid(const char* v); +void icalproperty_set_tzid(icalproperty* prop, const char* v); +const char* icalproperty_get_tzid(const icalproperty* prop);icalproperty* icalproperty_vanew_tzid(const char* v, ...); + +/* TZNAME */ +icalproperty* icalproperty_new_tzname(const char* v); +void icalproperty_set_tzname(icalproperty* prop, const char* v); +const char* icalproperty_get_tzname(const icalproperty* prop);icalproperty* icalproperty_vanew_tzname(const char* v, ...); + +/* TZOFFSETFROM */ +icalproperty* icalproperty_new_tzoffsetfrom(int v); +void icalproperty_set_tzoffsetfrom(icalproperty* prop, int v); +int icalproperty_get_tzoffsetfrom(const icalproperty* prop);icalproperty* icalproperty_vanew_tzoffsetfrom(int v, ...); + +/* TZOFFSETTO */ +icalproperty* icalproperty_new_tzoffsetto(int v); +void icalproperty_set_tzoffsetto(icalproperty* prop, int v); +int icalproperty_get_tzoffsetto(const icalproperty* prop);icalproperty* icalproperty_vanew_tzoffsetto(int v, ...); + +/* TZURL */ +icalproperty* icalproperty_new_tzurl(const char* v); +void icalproperty_set_tzurl(icalproperty* prop, const char* v); +const char* icalproperty_get_tzurl(const icalproperty* prop);icalproperty* icalproperty_vanew_tzurl(const char* v, ...); + +/* UID */ +icalproperty* icalproperty_new_uid(const char* v); +void icalproperty_set_uid(icalproperty* prop, const char* v); +const char* icalproperty_get_uid(const icalproperty* prop);icalproperty* icalproperty_vanew_uid(const char* v, ...); + +/* URL */ +icalproperty* icalproperty_new_url(const char* v); +void icalproperty_set_url(icalproperty* prop, const char* v); +const char* icalproperty_get_url(const icalproperty* prop);icalproperty* icalproperty_vanew_url(const char* v, ...); + +/* VERSION */ +icalproperty* icalproperty_new_version(const char* v); +void icalproperty_set_version(icalproperty* prop, const char* v); +const char* icalproperty_get_version(const icalproperty* prop);icalproperty* icalproperty_vanew_version(const char* v, ...); + +/* X */ +icalproperty* icalproperty_new_x(const char* v); +void icalproperty_set_x(icalproperty* prop, const char* v); +const char* icalproperty_get_x(const icalproperty* prop);icalproperty* icalproperty_vanew_x(const char* v, ...); + +/* X-LIC-CLASS */ +icalproperty* icalproperty_new_xlicclass(enum icalproperty_xlicclass v); +void icalproperty_set_xlicclass(icalproperty* prop, enum icalproperty_xlicclass v); +enum icalproperty_xlicclass icalproperty_get_xlicclass(const icalproperty* prop);icalproperty* icalproperty_vanew_xlicclass(enum icalproperty_xlicclass v, ...); + +/* X-LIC-CLUSTERCOUNT */ +icalproperty* icalproperty_new_xlicclustercount(const char* v); +void icalproperty_set_xlicclustercount(icalproperty* prop, const char* v); +const char* icalproperty_get_xlicclustercount(const icalproperty* prop);icalproperty* icalproperty_vanew_xlicclustercount(const char* v, ...); + +/* X-LIC-ERROR */ +icalproperty* icalproperty_new_xlicerror(const char* v); +void icalproperty_set_xlicerror(icalproperty* prop, const char* v); +const char* icalproperty_get_xlicerror(const icalproperty* prop);icalproperty* icalproperty_vanew_xlicerror(const char* v, ...); + +/* X-LIC-MIMECHARSET */ +icalproperty* icalproperty_new_xlicmimecharset(const char* v); +void icalproperty_set_xlicmimecharset(icalproperty* prop, const char* v); +const char* icalproperty_get_xlicmimecharset(const icalproperty* prop);icalproperty* icalproperty_vanew_xlicmimecharset(const char* v, ...); + +/* X-LIC-MIMECID */ +icalproperty* icalproperty_new_xlicmimecid(const char* v); +void icalproperty_set_xlicmimecid(icalproperty* prop, const char* v); +const char* icalproperty_get_xlicmimecid(const icalproperty* prop);icalproperty* icalproperty_vanew_xlicmimecid(const char* v, ...); + +/* X-LIC-MIMECONTENTTYPE */ +icalproperty* icalproperty_new_xlicmimecontenttype(const char* v); +void icalproperty_set_xlicmimecontenttype(icalproperty* prop, const char* v); +const char* icalproperty_get_xlicmimecontenttype(const icalproperty* prop);icalproperty* icalproperty_vanew_xlicmimecontenttype(const char* v, ...); + +/* X-LIC-MIMEENCODING */ +icalproperty* icalproperty_new_xlicmimeencoding(const char* v); +void icalproperty_set_xlicmimeencoding(icalproperty* prop, const char* v); +const char* icalproperty_get_xlicmimeencoding(const icalproperty* prop);icalproperty* icalproperty_vanew_xlicmimeencoding(const char* v, ...); + +/* X-LIC-MIMEFILENAME */ +icalproperty* icalproperty_new_xlicmimefilename(const char* v); +void icalproperty_set_xlicmimefilename(icalproperty* prop, const char* v); +const char* icalproperty_get_xlicmimefilename(const icalproperty* prop);icalproperty* icalproperty_vanew_xlicmimefilename(const char* v, ...); + +/* X-LIC-MIMEOPTINFO */ +icalproperty* icalproperty_new_xlicmimeoptinfo(const char* v); +void icalproperty_set_xlicmimeoptinfo(icalproperty* prop, const char* v); +const char* icalproperty_get_xlicmimeoptinfo(const icalproperty* prop);icalproperty* icalproperty_vanew_xlicmimeoptinfo(const char* v, ...); + + +#endif /*ICALPROPERTY_H*/ diff --git a/mozilla/calendar/libical/src/libical/autogenex/icalderivedvalue.c b/mozilla/calendar/libical/src/libical/autogenex/icalderivedvalue.c new file mode 100644 index 00000000000..4391f969a52 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/autogenex/icalderivedvalue.c @@ -0,0 +1,1007 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalvalue.c + CREATOR: eric 02 May 1999 + + $Id: icalderivedvalue.c,v 1.5 2002/09/01 19:12:31 gray-john Exp $ + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icalvalue.c + + Contributions from: + Graham Davison (g.m.davison@computer.org) + + +======================================================================*/ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "icalerror.h" +#include "icalmemory.h" +#include "icalparser.h" +#include "icalenums.h" + +#include "icalvalueimpl.h" + +#include /* for malloc */ +#include /* for sprintf */ +#include /* For memset, others */ +#include /* For offsetof() macro */ +#include +#include /* for mktime */ +#include /* for atoi and atof */ +#include /* for SHRT_MAX */ + +struct icalvalue_impl* icalvalue_new_impl(icalvalue_kind kind); + +/* This map associates each of the value types with its string + representation */ +struct icalvalue_kind_map { + icalvalue_kind kind; + char name[20]; +}; + +static struct icalvalue_kind_map value_map[28]={ + {ICAL_BOOLEAN_VALUE,"BOOLEAN"}, + {ICAL_UTCOFFSET_VALUE,"UTC-OFFSET"}, + {ICAL_XLICCLASS_VALUE,"X-LIC-CLASS"}, + {ICAL_RECUR_VALUE,"RECUR"}, + {ICAL_METHOD_VALUE,"METHOD"}, + {ICAL_CALADDRESS_VALUE,"CAL-ADDRESS"}, + {ICAL_PERIOD_VALUE,"PERIOD"}, + {ICAL_STATUS_VALUE,"STATUS"}, + {ICAL_BINARY_VALUE,"BINARY"}, + {ICAL_TEXT_VALUE,"TEXT"}, + {ICAL_DURATION_VALUE,"DURATION"}, + {ICAL_DATETIMEPERIOD_VALUE,"DATE-TIME-PERIOD"}, + {ICAL_INTEGER_VALUE,"INTEGER"}, + {ICAL_URI_VALUE,"URI"}, + {ICAL_TRIGGER_VALUE,"TRIGGER"}, + {ICAL_ATTACH_VALUE,"ATTACH"}, + {ICAL_CLASS_VALUE,"CLASS"}, + {ICAL_FLOAT_VALUE,"FLOAT"}, + {ICAL_QUERY_VALUE,"QUERY"}, + {ICAL_STRING_VALUE,"STRING"}, + {ICAL_TRANSP_VALUE,"TRANSP"}, + {ICAL_X_VALUE,"X"}, + {ICAL_DATETIME_VALUE,"DATE-TIME"}, + {ICAL_REQUESTSTATUS_VALUE,"REQUEST-STATUS"}, + {ICAL_GEO_VALUE,"GEO"}, + {ICAL_DATE_VALUE,"DATE"}, + {ICAL_ACTION_VALUE,"ACTION"}, + {ICAL_NO_VALUE,""} +}; + + +icalvalue* icalvalue_new_boolean (int v){ + struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_BOOLEAN_VALUE); + + icalvalue_set_boolean((icalvalue*)impl,v); + return (icalvalue*)impl; +} +void icalvalue_set_boolean(icalvalue* value, int v) { + struct icalvalue_impl* impl; + icalerror_check_arg_rv( (value!=0),"value"); + + icalerror_check_value_type(value, ICAL_BOOLEAN_VALUE); + impl = (struct icalvalue_impl*)value; + + + impl->data.v_int = v; + + icalvalue_reset_kind(impl); +} +int icalvalue_get_boolean(const icalvalue* value) { + + icalerror_check_arg( (value!=0),"value"); + icalerror_check_value_type(value, ICAL_BOOLEAN_VALUE); + return ((struct icalvalue_impl*)value)->data.v_int; +} + + + +icalvalue* icalvalue_new_utcoffset (int v){ + struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_UTCOFFSET_VALUE); + + icalvalue_set_utcoffset((icalvalue*)impl,v); + return (icalvalue*)impl; +} +void icalvalue_set_utcoffset(icalvalue* value, int v) { + struct icalvalue_impl* impl; + icalerror_check_arg_rv( (value!=0),"value"); + + icalerror_check_value_type(value, ICAL_UTCOFFSET_VALUE); + impl = (struct icalvalue_impl*)value; + + + impl->data.v_int = v; + + icalvalue_reset_kind(impl); +} +int icalvalue_get_utcoffset(const icalvalue* value) { + + icalerror_check_arg( (value!=0),"value"); + icalerror_check_value_type(value, ICAL_UTCOFFSET_VALUE); + return ((struct icalvalue_impl*)value)->data.v_int; +} + + + +icalvalue* icalvalue_new_xlicclass (enum icalproperty_xlicclass v){ + struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_XLICCLASS_VALUE); + + icalvalue_set_xlicclass((icalvalue*)impl,v); + return (icalvalue*)impl; +} +void icalvalue_set_xlicclass(icalvalue* value, enum icalproperty_xlicclass v) { + struct icalvalue_impl* impl; + icalerror_check_arg_rv( (value!=0),"value"); + + icalerror_check_value_type(value, ICAL_XLICCLASS_VALUE); + impl = (struct icalvalue_impl*)value; + + + impl->data.v_enum = v; + + icalvalue_reset_kind(impl); +} +enum icalproperty_xlicclass icalvalue_get_xlicclass(const icalvalue* value) { + + icalerror_check_arg( (value!=0),"value"); + icalerror_check_value_type(value, ICAL_XLICCLASS_VALUE); + return ((struct icalvalue_impl*)value)->data.v_enum; +} + + + +icalvalue* icalvalue_new_method (enum icalproperty_method v){ + struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_METHOD_VALUE); + + icalvalue_set_method((icalvalue*)impl,v); + return (icalvalue*)impl; +} +void icalvalue_set_method(icalvalue* value, enum icalproperty_method v) { + struct icalvalue_impl* impl; + icalerror_check_arg_rv( (value!=0),"value"); + + icalerror_check_value_type(value, ICAL_METHOD_VALUE); + impl = (struct icalvalue_impl*)value; + + + impl->data.v_enum = v; + + icalvalue_reset_kind(impl); +} +enum icalproperty_method icalvalue_get_method(const icalvalue* value) { + + icalerror_check_arg( (value!=0),"value"); + icalerror_check_value_type(value, ICAL_METHOD_VALUE); + return ((struct icalvalue_impl*)value)->data.v_enum; +} + + + +icalvalue* icalvalue_new_caladdress (const char* v){ + struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_CALADDRESS_VALUE); + icalerror_check_arg_rz( (v!=0),"v"); + + icalvalue_set_caladdress((icalvalue*)impl,v); + return (icalvalue*)impl; +} +void icalvalue_set_caladdress(icalvalue* value, const char* v) { + struct icalvalue_impl* impl; + icalerror_check_arg_rv( (value!=0),"value"); + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_value_type(value, ICAL_CALADDRESS_VALUE); + impl = (struct icalvalue_impl*)value; + if(impl->data.v_string!=0) {free((void*)impl->data.v_string);} + + + impl->data.v_string = icalmemory_strdup(v); + + if (impl->data.v_string == 0){ + errno = ENOMEM; + } + + + icalvalue_reset_kind(impl); +} +const char* icalvalue_get_caladdress(const icalvalue* value) { + + icalerror_check_arg( (value!=0),"value"); + icalerror_check_value_type(value, ICAL_CALADDRESS_VALUE); + return ((struct icalvalue_impl*)value)->data.v_string; +} + + + +icalvalue* icalvalue_new_period (struct icalperiodtype v){ + struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_PERIOD_VALUE); + + icalvalue_set_period((icalvalue*)impl,v); + return (icalvalue*)impl; +} +void icalvalue_set_period(icalvalue* value, struct icalperiodtype v) { + struct icalvalue_impl* impl; + icalerror_check_arg_rv( (value!=0),"value"); + + icalerror_check_value_type(value, ICAL_PERIOD_VALUE); + impl = (struct icalvalue_impl*)value; + + + impl->data.v_period = v; + + icalvalue_reset_kind(impl); +} +struct icalperiodtype icalvalue_get_period(const icalvalue* value) { + + icalerror_check_arg( (value!=0),"value"); + icalerror_check_value_type(value, ICAL_PERIOD_VALUE); + return ((struct icalvalue_impl*)value)->data.v_period; +} + + + +icalvalue* icalvalue_new_status (enum icalproperty_status v){ + struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_STATUS_VALUE); + + icalvalue_set_status((icalvalue*)impl,v); + return (icalvalue*)impl; +} +void icalvalue_set_status(icalvalue* value, enum icalproperty_status v) { + struct icalvalue_impl* impl; + icalerror_check_arg_rv( (value!=0),"value"); + + icalerror_check_value_type(value, ICAL_STATUS_VALUE); + impl = (struct icalvalue_impl*)value; + + + impl->data.v_enum = v; + + icalvalue_reset_kind(impl); +} +enum icalproperty_status icalvalue_get_status(const icalvalue* value) { + + icalerror_check_arg( (value!=0),"value"); + icalerror_check_value_type(value, ICAL_STATUS_VALUE); + return ((struct icalvalue_impl*)value)->data.v_enum; +} + + + +icalvalue* icalvalue_new_binary (const char* v){ + struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_BINARY_VALUE); + icalerror_check_arg_rz( (v!=0),"v"); + + icalvalue_set_binary((icalvalue*)impl,v); + return (icalvalue*)impl; +} +void icalvalue_set_binary(icalvalue* value, const char* v) { + struct icalvalue_impl* impl; + icalerror_check_arg_rv( (value!=0),"value"); + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_value_type(value, ICAL_BINARY_VALUE); + impl = (struct icalvalue_impl*)value; + if(impl->data.v_string!=0) {free((void*)impl->data.v_string);} + + + impl->data.v_string = icalmemory_strdup(v); + + if (impl->data.v_string == 0){ + errno = ENOMEM; + } + + + icalvalue_reset_kind(impl); +} +const char* icalvalue_get_binary(const icalvalue* value) { + + icalerror_check_arg( (value!=0),"value"); + icalerror_check_value_type(value, ICAL_BINARY_VALUE); + return ((struct icalvalue_impl*)value)->data.v_string; +} + + + +icalvalue* icalvalue_new_text (const char* v){ + struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_TEXT_VALUE); + icalerror_check_arg_rz( (v!=0),"v"); + + icalvalue_set_text((icalvalue*)impl,v); + return (icalvalue*)impl; +} +void icalvalue_set_text(icalvalue* value, const char* v) { + struct icalvalue_impl* impl; + icalerror_check_arg_rv( (value!=0),"value"); + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_value_type(value, ICAL_TEXT_VALUE); + impl = (struct icalvalue_impl*)value; + if(impl->data.v_string!=0) {free((void*)impl->data.v_string);} + + + impl->data.v_string = icalmemory_strdup(v); + + if (impl->data.v_string == 0){ + errno = ENOMEM; + } + + + icalvalue_reset_kind(impl); +} +const char* icalvalue_get_text(const icalvalue* value) { + + icalerror_check_arg( (value!=0),"value"); + icalerror_check_value_type(value, ICAL_TEXT_VALUE); + return ((struct icalvalue_impl*)value)->data.v_string; +} + + + +icalvalue* icalvalue_new_duration (struct icaldurationtype v){ + struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_DURATION_VALUE); + + icalvalue_set_duration((icalvalue*)impl,v); + return (icalvalue*)impl; +} +void icalvalue_set_duration(icalvalue* value, struct icaldurationtype v) { + struct icalvalue_impl* impl; + icalerror_check_arg_rv( (value!=0),"value"); + + icalerror_check_value_type(value, ICAL_DURATION_VALUE); + impl = (struct icalvalue_impl*)value; + + + impl->data.v_duration = v; + + icalvalue_reset_kind(impl); +} +struct icaldurationtype icalvalue_get_duration(const icalvalue* value) { + + icalerror_check_arg( (value!=0),"value"); + icalerror_check_value_type(value, ICAL_DURATION_VALUE); + return ((struct icalvalue_impl*)value)->data.v_duration; +} + + + +icalvalue* icalvalue_new_integer (int v){ + struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_INTEGER_VALUE); + + icalvalue_set_integer((icalvalue*)impl,v); + return (icalvalue*)impl; +} +void icalvalue_set_integer(icalvalue* value, int v) { + struct icalvalue_impl* impl; + icalerror_check_arg_rv( (value!=0),"value"); + + icalerror_check_value_type(value, ICAL_INTEGER_VALUE); + impl = (struct icalvalue_impl*)value; + + + impl->data.v_int = v; + + icalvalue_reset_kind(impl); +} +int icalvalue_get_integer(const icalvalue* value) { + + icalerror_check_arg( (value!=0),"value"); + icalerror_check_value_type(value, ICAL_INTEGER_VALUE); + return ((struct icalvalue_impl*)value)->data.v_int; +} + + + +icalvalue* icalvalue_new_uri (const char* v){ + struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_URI_VALUE); + icalerror_check_arg_rz( (v!=0),"v"); + + icalvalue_set_uri((icalvalue*)impl,v); + return (icalvalue*)impl; +} +void icalvalue_set_uri(icalvalue* value, const char* v) { + struct icalvalue_impl* impl; + icalerror_check_arg_rv( (value!=0),"value"); + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_value_type(value, ICAL_URI_VALUE); + impl = (struct icalvalue_impl*)value; + if(impl->data.v_string!=0) {free((void*)impl->data.v_string);} + + + impl->data.v_string = icalmemory_strdup(v); + + if (impl->data.v_string == 0){ + errno = ENOMEM; + } + + + icalvalue_reset_kind(impl); +} +const char* icalvalue_get_uri(const icalvalue* value) { + + icalerror_check_arg( (value!=0),"value"); + icalerror_check_value_type(value, ICAL_URI_VALUE); + return ((struct icalvalue_impl*)value)->data.v_string; +} + + + +icalvalue* icalvalue_new_class (enum icalproperty_class v){ + struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_CLASS_VALUE); + + icalvalue_set_class((icalvalue*)impl,v); + return (icalvalue*)impl; +} +void icalvalue_set_class(icalvalue* value, enum icalproperty_class v) { + struct icalvalue_impl* impl; + icalerror_check_arg_rv( (value!=0),"value"); + + icalerror_check_value_type(value, ICAL_CLASS_VALUE); + impl = (struct icalvalue_impl*)value; + + + impl->data.v_enum = v; + + icalvalue_reset_kind(impl); +} +enum icalproperty_class icalvalue_get_class(const icalvalue* value) { + + icalerror_check_arg( (value!=0),"value"); + icalerror_check_value_type(value, ICAL_CLASS_VALUE); + return ((struct icalvalue_impl*)value)->data.v_enum; +} + + + +icalvalue* icalvalue_new_float (float v){ + struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_FLOAT_VALUE); + + icalvalue_set_float((icalvalue*)impl,v); + return (icalvalue*)impl; +} +void icalvalue_set_float(icalvalue* value, float v) { + struct icalvalue_impl* impl; + icalerror_check_arg_rv( (value!=0),"value"); + + icalerror_check_value_type(value, ICAL_FLOAT_VALUE); + impl = (struct icalvalue_impl*)value; + + + impl->data.v_float = v; + + icalvalue_reset_kind(impl); +} +float icalvalue_get_float(const icalvalue* value) { + + icalerror_check_arg( (value!=0),"value"); + icalerror_check_value_type(value, ICAL_FLOAT_VALUE); + return ((struct icalvalue_impl*)value)->data.v_float; +} + + + +icalvalue* icalvalue_new_query (const char* v){ + struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_QUERY_VALUE); + icalerror_check_arg_rz( (v!=0),"v"); + + icalvalue_set_query((icalvalue*)impl,v); + return (icalvalue*)impl; +} +void icalvalue_set_query(icalvalue* value, const char* v) { + struct icalvalue_impl* impl; + icalerror_check_arg_rv( (value!=0),"value"); + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_value_type(value, ICAL_QUERY_VALUE); + impl = (struct icalvalue_impl*)value; + if(impl->data.v_string!=0) {free((void*)impl->data.v_string);} + + + impl->data.v_string = icalmemory_strdup(v); + + if (impl->data.v_string == 0){ + errno = ENOMEM; + } + + + icalvalue_reset_kind(impl); +} +const char* icalvalue_get_query(const icalvalue* value) { + + icalerror_check_arg( (value!=0),"value"); + icalerror_check_value_type(value, ICAL_QUERY_VALUE); + return ((struct icalvalue_impl*)value)->data.v_string; +} + + + +icalvalue* icalvalue_new_string (const char* v){ + struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_STRING_VALUE); + icalerror_check_arg_rz( (v!=0),"v"); + + icalvalue_set_string((icalvalue*)impl,v); + return (icalvalue*)impl; +} +void icalvalue_set_string(icalvalue* value, const char* v) { + struct icalvalue_impl* impl; + icalerror_check_arg_rv( (value!=0),"value"); + icalerror_check_arg_rv( (v!=0),"v"); + + icalerror_check_value_type(value, ICAL_STRING_VALUE); + impl = (struct icalvalue_impl*)value; + if(impl->data.v_string!=0) {free((void*)impl->data.v_string);} + + + impl->data.v_string = icalmemory_strdup(v); + + if (impl->data.v_string == 0){ + errno = ENOMEM; + } + + + icalvalue_reset_kind(impl); +} +const char* icalvalue_get_string(const icalvalue* value) { + + icalerror_check_arg( (value!=0),"value"); + icalerror_check_value_type(value, ICAL_STRING_VALUE); + return ((struct icalvalue_impl*)value)->data.v_string; +} + + + +icalvalue* icalvalue_new_transp (enum icalproperty_transp v){ + struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_TRANSP_VALUE); + + icalvalue_set_transp((icalvalue*)impl,v); + return (icalvalue*)impl; +} +void icalvalue_set_transp(icalvalue* value, enum icalproperty_transp v) { + struct icalvalue_impl* impl; + icalerror_check_arg_rv( (value!=0),"value"); + + icalerror_check_value_type(value, ICAL_TRANSP_VALUE); + impl = (struct icalvalue_impl*)value; + + + impl->data.v_enum = v; + + icalvalue_reset_kind(impl); +} +enum icalproperty_transp icalvalue_get_transp(const icalvalue* value) { + + icalerror_check_arg( (value!=0),"value"); + icalerror_check_value_type(value, ICAL_TRANSP_VALUE); + return ((struct icalvalue_impl*)value)->data.v_enum; +} + + + +icalvalue* icalvalue_new_datetime (struct icaltimetype v){ + struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_DATETIME_VALUE); + + icalvalue_set_datetime((icalvalue*)impl,v); + return (icalvalue*)impl; +} +void icalvalue_set_datetime(icalvalue* value, struct icaltimetype v) { + struct icalvalue_impl* impl; + icalerror_check_arg_rv( (value!=0),"value"); + + icalerror_check_value_type(value, ICAL_DATETIME_VALUE); + impl = (struct icalvalue_impl*)value; + + + impl->data.v_time = v; + + icalvalue_reset_kind(impl); +} +struct icaltimetype icalvalue_get_datetime(const icalvalue* value) { + + icalerror_check_arg( (value!=0),"value"); + icalerror_check_value_type(value, ICAL_DATETIME_VALUE); + return ((struct icalvalue_impl*)value)->data.v_time; +} + + + +icalvalue* icalvalue_new_requeststatus (struct icalreqstattype v){ + struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_REQUESTSTATUS_VALUE); + + icalvalue_set_requeststatus((icalvalue*)impl,v); + return (icalvalue*)impl; +} +void icalvalue_set_requeststatus(icalvalue* value, struct icalreqstattype v) { + struct icalvalue_impl* impl; + icalerror_check_arg_rv( (value!=0),"value"); + + icalerror_check_value_type(value, ICAL_REQUESTSTATUS_VALUE); + impl = (struct icalvalue_impl*)value; + + + impl->data.v_requeststatus = v; + + icalvalue_reset_kind(impl); +} +struct icalreqstattype icalvalue_get_requeststatus(const icalvalue* value) { + + icalerror_check_arg( (value!=0),"value"); + icalerror_check_value_type(value, ICAL_REQUESTSTATUS_VALUE); + return ((struct icalvalue_impl*)value)->data.v_requeststatus; +} + + + +icalvalue* icalvalue_new_geo (struct icalgeotype v){ + struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_GEO_VALUE); + + icalvalue_set_geo((icalvalue*)impl,v); + return (icalvalue*)impl; +} +void icalvalue_set_geo(icalvalue* value, struct icalgeotype v) { + struct icalvalue_impl* impl; + icalerror_check_arg_rv( (value!=0),"value"); + + icalerror_check_value_type(value, ICAL_GEO_VALUE); + impl = (struct icalvalue_impl*)value; + + + impl->data.v_geo = v; + + icalvalue_reset_kind(impl); +} +struct icalgeotype icalvalue_get_geo(const icalvalue* value) { + + icalerror_check_arg( (value!=0),"value"); + icalerror_check_value_type(value, ICAL_GEO_VALUE); + return ((struct icalvalue_impl*)value)->data.v_geo; +} + + + +icalvalue* icalvalue_new_date (struct icaltimetype v){ + struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_DATE_VALUE); + + icalvalue_set_date((icalvalue*)impl,v); + return (icalvalue*)impl; +} +void icalvalue_set_date(icalvalue* value, struct icaltimetype v) { + struct icalvalue_impl* impl; + icalerror_check_arg_rv( (value!=0),"value"); + + icalerror_check_value_type(value, ICAL_DATE_VALUE); + impl = (struct icalvalue_impl*)value; + + + impl->data.v_time = v; + + icalvalue_reset_kind(impl); +} +struct icaltimetype icalvalue_get_date(const icalvalue* value) { + + icalerror_check_arg( (value!=0),"value"); + icalerror_check_value_type(value, ICAL_DATE_VALUE); + return ((struct icalvalue_impl*)value)->data.v_time; +} + + + +icalvalue* icalvalue_new_action (enum icalproperty_action v){ + struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_ACTION_VALUE); + + icalvalue_set_action((icalvalue*)impl,v); + return (icalvalue*)impl; +} +void icalvalue_set_action(icalvalue* value, enum icalproperty_action v) { + struct icalvalue_impl* impl; + icalerror_check_arg_rv( (value!=0),"value"); + + icalerror_check_value_type(value, ICAL_ACTION_VALUE); + impl = (struct icalvalue_impl*)value; + + + impl->data.v_enum = v; + + icalvalue_reset_kind(impl); +} +enum icalproperty_action icalvalue_get_action(const icalvalue* value) { + + icalerror_check_arg( (value!=0),"value"); + icalerror_check_value_type(value, ICAL_ACTION_VALUE); + return ((struct icalvalue_impl*)value)->data.v_enum; +} + + +int icalvalue_kind_is_valid(const icalvalue_kind kind) +{ + int i = 0; + do { + if (value_map[i].kind == kind) + return 1; + } while (value_map[i++].kind != ICAL_NO_VALUE); + + return 0; +} + +const char* icalvalue_kind_to_string(const icalvalue_kind kind) +{ + int i; + + for (i=0; value_map[i].kind != ICAL_NO_VALUE; i++) { + if (value_map[i].kind == kind) { + return value_map[i].name; + } + } + + return 0; +} + +icalvalue_kind icalvalue_string_to_kind(const char* str) +{ + int i; + + for (i=0; value_map[i].kind != ICAL_NO_VALUE; i++) { + if (strcmp(value_map[i].name,str) == 0) { + return value_map[i].kind; + } + } + + return value_map[i].kind; + +} + +icalvalue* icalvalue_new_x (const char* v){ + struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_X_VALUE); + icalerror_check_arg_rz( (v!=0),"v"); + + icalvalue_set_x((icalvalue*)impl,v); + return (icalvalue*)impl; +} +void icalvalue_set_x(icalvalue* impl, const char* v) { + icalerror_check_arg_rv( (impl!=0),"value"); + icalerror_check_arg_rv( (v!=0),"v"); + + if(impl->x_value!=0) {free((void*)impl->x_value);} + + impl->x_value = icalmemory_strdup(v); + + if (impl->x_value == 0){ + errno = ENOMEM; + } + + } +const char* icalvalue_get_x(const icalvalue* value) { + + icalerror_check_arg( (value!=0),"value"); + icalerror_check_value_type(value, ICAL_X_VALUE); + return value->x_value; +} + +/* Recur is a special case, so it is not auto generated. */ +icalvalue* +icalvalue_new_recur (struct icalrecurrencetype v) +{ + struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_RECUR_VALUE); + + icalvalue_set_recur((icalvalue*)impl,v); + + return (icalvalue*)impl; +} + +void +icalvalue_set_recur(icalvalue* impl, struct icalrecurrencetype v) +{ + icalerror_check_arg_rv( (impl!=0),"value"); + icalerror_check_value_type(value, ICAL_RECUR_VALUE); + + if (impl->data.v_recur != 0){ + free(impl->data.v_recur); + impl->data.v_recur = 0; + } + + impl->data.v_recur = malloc(sizeof(struct icalrecurrencetype)); + + if (impl->data.v_recur == 0){ + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + return; + } else { + memcpy(impl->data.v_recur, &v, sizeof(struct icalrecurrencetype)); + } + +} + +struct icalrecurrencetype +icalvalue_get_recur(const icalvalue* value) +{ + icalerror_check_arg( (value!=0),"value"); + icalerror_check_value_type(value, ICAL_RECUR_VALUE); + + return *(value->data.v_recur); +} + + + + +icalvalue* +icalvalue_new_trigger (struct icaltriggertype v) +{ + struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_TRIGGER_VALUE); + + icalvalue_set_trigger((icalvalue*)impl,v); + + return (icalvalue*)impl; +} + +void +icalvalue_set_trigger(icalvalue* value, struct icaltriggertype v) +{ + icalerror_check_arg_rv( (value!=0),"value"); + + if(!icaltime_is_null_time(v.time)){ + icalvalue_set_datetime(value,v.time); + value->kind = ICAL_DATETIME_VALUE; + } else { + icalvalue_set_duration(value,v.duration); + value->kind = ICAL_DURATION_VALUE; + } +} + +struct icaltriggertype +icalvalue_get_trigger(const icalvalue* impl) +{ + struct icaltriggertype tr; + + icalerror_check_arg( (impl!=0),"value"); + icalerror_check_arg( (impl!=0),"value"); + + if(impl->kind == ICAL_DATETIME_VALUE){ + tr.duration = icaldurationtype_from_int(0); + tr.time = impl->data.v_time; + } else if(impl->kind == ICAL_DURATION_VALUE){ + tr.time = icaltime_null_time(); + tr.duration = impl->data.v_duration; + } else { + tr.duration = icaldurationtype_from_int(0); + tr.time = icaltime_null_time(); + icalerror_set_errno(ICAL_BADARG_ERROR); + } + + return tr; +} + +/* DATE-TIME-PERIOD is a special case, and is not auto generated */ + +icalvalue* +icalvalue_new_datetimeperiod (struct icaldatetimeperiodtype v) +{ + struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_DATETIMEPERIOD_VALUE); + + icalvalue_set_datetimeperiod(impl,v); + + return (icalvalue*)impl; +} + +void +icalvalue_set_datetimeperiod(icalvalue* impl, struct icaldatetimeperiodtype v) +{ + icalerror_check_arg_rv( (impl!=0),"value"); + + icalerror_check_value_type(value, ICAL_DATETIMEPERIOD_VALUE); + + if(!icaltime_is_null_time(v.time)){ + if(!icaltime_is_valid_time(v.time)){ + icalerror_set_errno(ICAL_BADARG_ERROR); + return; + } + impl->kind = ICAL_DATETIME_VALUE; + icalvalue_set_datetime(impl,v.time); + } else if (!icalperiodtype_is_null_period(v.period)) { + if(!icalperiodtype_is_valid_period(v.period)){ + icalerror_set_errno(ICAL_BADARG_ERROR); + return; + } + impl->kind = ICAL_PERIOD_VALUE; + icalvalue_set_period(impl,v.period); + } else { + icalerror_set_errno(ICAL_BADARG_ERROR); + } +} + +struct icaldatetimeperiodtype +icalvalue_get_datetimeperiod(const icalvalue* impl) +{ + struct icaldatetimeperiodtype dtp; + + icalerror_check_arg( (impl!=0),"value"); + icalerror_check_value_type(value, ICAL_DATETIMEPERIOD_VALUE); + + if(impl->kind == ICAL_DATETIME_VALUE){ + dtp.period = icalperiodtype_null_period(); + dtp.time = impl->data.v_time; + } else if(impl->kind == ICAL_PERIOD_VALUE) { + dtp.period = impl->data.v_period; + dtp.time = icaltime_null_time(); + } else { + dtp.period = icalperiodtype_null_period(); + dtp.time = icaltime_null_time(); + icalerror_set_errno(ICAL_BADARG_ERROR); + } + + return dtp; +} + + + +icalvalue * +icalvalue_new_attach (icalattach *attach) +{ + struct icalvalue_impl *impl; + + icalerror_check_arg_rz ((attach != NULL), "attach"); + + impl = icalvalue_new_impl (ICAL_ATTACH_VALUE); + if (!impl) { + errno = ENOMEM; + return NULL; + } + + icalvalue_set_attach ((icalvalue *) impl, attach); + return (icalvalue *) impl; +} + +void +icalvalue_set_attach (icalvalue *value, icalattach *attach) +{ + struct icalvalue_impl *impl; + + icalerror_check_arg_rv ((value != NULL), "value"); + icalerror_check_value_type (value, ICAL_ATTACH_VALUE); + icalerror_check_arg_rv ((attach != NULL), "attach"); + + impl = (struct icalvalue_impl *) value; + + icalattach_ref (attach); + + if (impl->data.v_attach) + icalattach_unref (impl->data.v_attach); + + impl->data.v_attach = attach; +} + +icalattach * +icalvalue_get_attach (const icalvalue *value) +{ + icalerror_check_arg_rz ((value != NULL), "value"); + icalerror_check_value_type (value, ICAL_ATTACH_VALUE); + + return value->data.v_attach; +} + + + + + + + +/* The remaining interfaces are 'new', 'set' and 'get' for each of the value + types */ + + +/* Everything below this line is machine generated. Do not edit. */ diff --git a/mozilla/calendar/libical/src/libical/autogenex/icalderivedvalue.h b/mozilla/calendar/libical/src/libical/autogenex/icalderivedvalue.h new file mode 100644 index 00000000000..e0541c08420 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/autogenex/icalderivedvalue.h @@ -0,0 +1,324 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalvalue.h + CREATOR: eric 20 March 1999 + + + $Id: icalderivedvalue.h,v 1.5 2002/09/01 19:12:31 gray-john Exp $ + $Locker: $ + + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icalvalue.h + + ======================================================================*/ + +#ifndef ICALDERIVEDVALUE_H +#define ICALDERIVEDVALUE_H + +#include "icaltypes.h" +#include "icalrecur.h" +#include "icaltime.h" +#include "icalduration.h" +#include "icalperiod.h" +#include "icalattach.h" + +typedef struct icalvalue_impl icalvalue; + + + +void icalvalue_set_x(icalvalue* value, const char* v); +icalvalue* icalvalue_new_x(const char* v); +const char* icalvalue_get_x(const icalvalue* value); + +icalvalue* icalvalue_new_recur (struct icalrecurrencetype v); +void icalvalue_set_recur(icalvalue* value, struct icalrecurrencetype v); +struct icalrecurrencetype icalvalue_get_recur(const icalvalue* value); + +icalvalue* icalvalue_new_trigger (struct icaltriggertype v); +void icalvalue_set_trigger(icalvalue* value, struct icaltriggertype v); +struct icaltriggertype icalvalue_get_trigger(const icalvalue* value); + +icalvalue* icalvalue_new_datetimeperiod (struct icaldatetimeperiodtype v); +void icalvalue_set_datetimeperiod(icalvalue* value, struct icaldatetimeperiodtype v); +struct icaldatetimeperiodtype icalvalue_get_datetimeperiod(const icalvalue* value); + +icalvalue *icalvalue_new_attach (icalattach *attach); +void icalvalue_set_attach (icalvalue *value, icalattach *attach); +icalattach *icalvalue_get_attach (const icalvalue *value); + +void icalvalue_reset_kind(icalvalue* value); + +typedef enum icalvalue_kind { + ICAL_ANY_VALUE=5000, + ICAL_BOOLEAN_VALUE=5001, + ICAL_UTCOFFSET_VALUE=5002, + ICAL_XLICCLASS_VALUE=5003, + ICAL_RECUR_VALUE=5004, + ICAL_METHOD_VALUE=5005, + ICAL_CALADDRESS_VALUE=5006, + ICAL_PERIOD_VALUE=5007, + ICAL_STATUS_VALUE=5008, + ICAL_BINARY_VALUE=5009, + ICAL_TEXT_VALUE=5010, + ICAL_DURATION_VALUE=5011, + ICAL_DATETIMEPERIOD_VALUE=5012, + ICAL_INTEGER_VALUE=5013, + ICAL_URI_VALUE=5014, + ICAL_TRIGGER_VALUE=5015, + ICAL_ATTACH_VALUE=5016, + ICAL_CLASS_VALUE=5017, + ICAL_FLOAT_VALUE=5018, + ICAL_QUERY_VALUE=5019, + ICAL_STRING_VALUE=5020, + ICAL_TRANSP_VALUE=5021, + ICAL_X_VALUE=5022, + ICAL_DATETIME_VALUE=5023, + ICAL_REQUESTSTATUS_VALUE=5024, + ICAL_GEO_VALUE=5025, + ICAL_DATE_VALUE=5026, + ICAL_ACTION_VALUE=5027, + ICAL_NO_VALUE=5028 +} icalvalue_kind ; + +#define ICALPROPERTY_FIRST_ENUM 10000 + +typedef enum icalproperty_action { + ICAL_ACTION_X = 10000, + ICAL_ACTION_AUDIO = 10001, + ICAL_ACTION_DISPLAY = 10002, + ICAL_ACTION_EMAIL = 10003, + ICAL_ACTION_PROCEDURE = 10004, + ICAL_ACTION_NONE = 10005 +} icalproperty_action; + +typedef enum icalproperty_class { + ICAL_CLASS_X = 10006, + ICAL_CLASS_PUBLIC = 10007, + ICAL_CLASS_PRIVATE = 10008, + ICAL_CLASS_CONFIDENTIAL = 10009, + ICAL_CLASS_NONE = 10010 +} icalproperty_class; + +typedef enum icalproperty_method { + ICAL_METHOD_X = 10011, + ICAL_METHOD_PUBLISH = 10012, + ICAL_METHOD_REQUEST = 10013, + ICAL_METHOD_REPLY = 10014, + ICAL_METHOD_ADD = 10015, + ICAL_METHOD_CANCEL = 10016, + ICAL_METHOD_REFRESH = 10017, + ICAL_METHOD_COUNTER = 10018, + ICAL_METHOD_DECLINECOUNTER = 10019, + ICAL_METHOD_CREATE = 10020, + ICAL_METHOD_READ = 10021, + ICAL_METHOD_RESPONSE = 10022, + ICAL_METHOD_MOVE = 10023, + ICAL_METHOD_MODIFY = 10024, + ICAL_METHOD_GENERATEUID = 10025, + ICAL_METHOD_DELETE = 10026, + ICAL_METHOD_NONE = 10027 +} icalproperty_method; + +typedef enum icalproperty_status { + ICAL_STATUS_X = 10028, + ICAL_STATUS_TENTATIVE = 10029, + ICAL_STATUS_CONFIRMED = 10030, + ICAL_STATUS_COMPLETED = 10031, + ICAL_STATUS_NEEDSACTION = 10032, + ICAL_STATUS_CANCELLED = 10033, + ICAL_STATUS_INPROCESS = 10034, + ICAL_STATUS_DRAFT = 10035, + ICAL_STATUS_FINAL = 10036, + ICAL_STATUS_NONE = 10037 +} icalproperty_status; + +typedef enum icalproperty_transp { + ICAL_TRANSP_X = 10038, + ICAL_TRANSP_OPAQUE = 10039, + ICAL_TRANSP_OPAQUENOCONFLICT = 10040, + ICAL_TRANSP_TRANSPARENT = 10041, + ICAL_TRANSP_TRANSPARENTNOCONFLICT = 10042, + ICAL_TRANSP_NONE = 10043 +} icalproperty_transp; + +typedef enum icalproperty_xlicclass { + ICAL_XLICCLASS_X = 10044, + ICAL_XLICCLASS_PUBLISHNEW = 10045, + ICAL_XLICCLASS_PUBLISHUPDATE = 10046, + ICAL_XLICCLASS_PUBLISHFREEBUSY = 10047, + ICAL_XLICCLASS_REQUESTNEW = 10048, + ICAL_XLICCLASS_REQUESTUPDATE = 10049, + ICAL_XLICCLASS_REQUESTRESCHEDULE = 10050, + ICAL_XLICCLASS_REQUESTDELEGATE = 10051, + ICAL_XLICCLASS_REQUESTNEWORGANIZER = 10052, + ICAL_XLICCLASS_REQUESTFORWARD = 10053, + ICAL_XLICCLASS_REQUESTSTATUS = 10054, + ICAL_XLICCLASS_REQUESTFREEBUSY = 10055, + ICAL_XLICCLASS_REPLYACCEPT = 10056, + ICAL_XLICCLASS_REPLYDECLINE = 10057, + ICAL_XLICCLASS_REPLYDELEGATE = 10058, + ICAL_XLICCLASS_REPLYCRASHERACCEPT = 10059, + ICAL_XLICCLASS_REPLYCRASHERDECLINE = 10060, + ICAL_XLICCLASS_ADDINSTANCE = 10061, + ICAL_XLICCLASS_CANCELEVENT = 10062, + ICAL_XLICCLASS_CANCELINSTANCE = 10063, + ICAL_XLICCLASS_CANCELALL = 10064, + ICAL_XLICCLASS_REFRESH = 10065, + ICAL_XLICCLASS_COUNTER = 10066, + ICAL_XLICCLASS_DECLINECOUNTER = 10067, + ICAL_XLICCLASS_MALFORMED = 10068, + ICAL_XLICCLASS_OBSOLETE = 10069, + ICAL_XLICCLASS_MISSEQUENCED = 10070, + ICAL_XLICCLASS_UNKNOWN = 10071, + ICAL_XLICCLASS_NONE = 10072 +} icalproperty_xlicclass; + +#define ICALPROPERTY_LAST_ENUM 10073 + + + /* BOOLEAN */ +icalvalue* icalvalue_new_boolean(int v); +int icalvalue_get_boolean(const icalvalue* value); +void icalvalue_set_boolean(icalvalue* value, int v); + + + /* UTC-OFFSET */ +icalvalue* icalvalue_new_utcoffset(int v); +int icalvalue_get_utcoffset(const icalvalue* value); +void icalvalue_set_utcoffset(icalvalue* value, int v); + + + /* X-LIC-CLASS */ +icalvalue* icalvalue_new_xlicclass(enum icalproperty_xlicclass v); +enum icalproperty_xlicclass icalvalue_get_xlicclass(const icalvalue* value); +void icalvalue_set_xlicclass(icalvalue* value, enum icalproperty_xlicclass v); + + + /* METHOD */ +icalvalue* icalvalue_new_method(enum icalproperty_method v); +enum icalproperty_method icalvalue_get_method(const icalvalue* value); +void icalvalue_set_method(icalvalue* value, enum icalproperty_method v); + + + /* CAL-ADDRESS */ +icalvalue* icalvalue_new_caladdress(const char* v); +const char* icalvalue_get_caladdress(const icalvalue* value); +void icalvalue_set_caladdress(icalvalue* value, const char* v); + + + /* PERIOD */ +icalvalue* icalvalue_new_period(struct icalperiodtype v); +struct icalperiodtype icalvalue_get_period(const icalvalue* value); +void icalvalue_set_period(icalvalue* value, struct icalperiodtype v); + + + /* STATUS */ +icalvalue* icalvalue_new_status(enum icalproperty_status v); +enum icalproperty_status icalvalue_get_status(const icalvalue* value); +void icalvalue_set_status(icalvalue* value, enum icalproperty_status v); + + + /* BINARY */ +icalvalue* icalvalue_new_binary(const char* v); +const char* icalvalue_get_binary(const icalvalue* value); +void icalvalue_set_binary(icalvalue* value, const char* v); + + + /* TEXT */ +icalvalue* icalvalue_new_text(const char* v); +const char* icalvalue_get_text(const icalvalue* value); +void icalvalue_set_text(icalvalue* value, const char* v); + + + /* DURATION */ +icalvalue* icalvalue_new_duration(struct icaldurationtype v); +struct icaldurationtype icalvalue_get_duration(const icalvalue* value); +void icalvalue_set_duration(icalvalue* value, struct icaldurationtype v); + + + /* INTEGER */ +icalvalue* icalvalue_new_integer(int v); +int icalvalue_get_integer(const icalvalue* value); +void icalvalue_set_integer(icalvalue* value, int v); + + + /* URI */ +icalvalue* icalvalue_new_uri(const char* v); +const char* icalvalue_get_uri(const icalvalue* value); +void icalvalue_set_uri(icalvalue* value, const char* v); + + + /* CLASS */ +icalvalue* icalvalue_new_class(enum icalproperty_class v); +enum icalproperty_class icalvalue_get_class(const icalvalue* value); +void icalvalue_set_class(icalvalue* value, enum icalproperty_class v); + + + /* FLOAT */ +icalvalue* icalvalue_new_float(float v); +float icalvalue_get_float(const icalvalue* value); +void icalvalue_set_float(icalvalue* value, float v); + + + /* QUERY */ +icalvalue* icalvalue_new_query(const char* v); +const char* icalvalue_get_query(const icalvalue* value); +void icalvalue_set_query(icalvalue* value, const char* v); + + + /* STRING */ +icalvalue* icalvalue_new_string(const char* v); +const char* icalvalue_get_string(const icalvalue* value); +void icalvalue_set_string(icalvalue* value, const char* v); + + + /* TRANSP */ +icalvalue* icalvalue_new_transp(enum icalproperty_transp v); +enum icalproperty_transp icalvalue_get_transp(const icalvalue* value); +void icalvalue_set_transp(icalvalue* value, enum icalproperty_transp v); + + + /* DATE-TIME */ +icalvalue* icalvalue_new_datetime(struct icaltimetype v); +struct icaltimetype icalvalue_get_datetime(const icalvalue* value); +void icalvalue_set_datetime(icalvalue* value, struct icaltimetype v); + + + /* REQUEST-STATUS */ +icalvalue* icalvalue_new_requeststatus(struct icalreqstattype v); +struct icalreqstattype icalvalue_get_requeststatus(const icalvalue* value); +void icalvalue_set_requeststatus(icalvalue* value, struct icalreqstattype v); + + + /* GEO */ +icalvalue* icalvalue_new_geo(struct icalgeotype v); +struct icalgeotype icalvalue_get_geo(const icalvalue* value); +void icalvalue_set_geo(icalvalue* value, struct icalgeotype v); + + + /* DATE */ +icalvalue* icalvalue_new_date(struct icaltimetype v); +struct icaltimetype icalvalue_get_date(const icalvalue* value); +void icalvalue_set_date(icalvalue* value, struct icaltimetype v); + + + /* ACTION */ +icalvalue* icalvalue_new_action(enum icalproperty_action v); +enum icalproperty_action icalvalue_get_action(const icalvalue* value); +void icalvalue_set_action(icalvalue* value, enum icalproperty_action v); + +#endif /*ICALVALUE_H*/ diff --git a/mozilla/calendar/libical/src/libical/autogenex/icalrestriction.c b/mozilla/calendar/libical/src/libical/autogenex/icalrestriction.c new file mode 100644 index 00000000000..3d2bd1503e0 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/autogenex/icalrestriction.c @@ -0,0 +1,1861 @@ +/* -*- Mode: C -*- */ +/* ====================================================================== + File: icalrestriction.c + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + ======================================================================*/ +/*#line 7 "icalrestriction.c.in"*/ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "icalrestriction.h" +#include "icalenums.h" +#include "icalerror.h" + +#include +#include /* For snprintf */ + +#define TMP_BUF_SIZE 1024 + +#ifdef WIN32 +#define snprintf _snprintf +#define strcasecmp stricmp +#endif + + +/* Define the structs for the restrictions. these data are filled out +in machine generated code below */ + +struct icalrestriction_property_record; + +typedef char* (*restriction_func)(struct icalrestriction_property_record* rec,icalcomponent* comp,icalproperty* prop); + + +typedef struct icalrestriction_property_record { + icalproperty_method method; + icalcomponent_kind component; + icalproperty_kind property; + icalrestriction_kind restriction; + restriction_func function; +} icalrestriction_property_record; + + +typedef struct icalrestriction_component_record { + icalproperty_method method; + icalcomponent_kind component; + icalcomponent_kind subcomponent; + icalrestriction_kind restriction; + restriction_func function; +} icalrestriction_component_record; + +icalrestriction_property_record* +icalrestriction_get_property_restriction(icalproperty_method method, + icalcomponent_kind component, + icalproperty_kind property); +icalrestriction_component_record* +icalrestriction_get_component_restriction(icalproperty_method method, + icalcomponent_kind component, + icalcomponent_kind subcomponent); + +icalrestriction_component_record icalrestriction_component_records[]; +icalrestriction_property_record icalrestriction_property_records[]; + +icalrestriction_property_record null_prop_record = {ICAL_METHOD_NONE,ICAL_NO_COMPONENT,ICAL_NO_PROPERTY,ICAL_RESTRICTION_UNKNOWN,0}; +icalrestriction_component_record null_comp_record = {ICAL_METHOD_NONE,ICAL_NO_COMPONENT,ICAL_NO_COMPONENT,ICAL_RESTRICTION_UNKNOWN,0}; + + +/** The each row gives the result of comparing a restriction against a + count. The columns in each row represent 0,1,2+. '-1' indicates + 'invalid, 'don't care' or 'needs more analysis' So, for + ICAL_RESTRICTION_ONE, if there is 1 of a property with that + restriction, it passes, but if there are 0 or 2+, it fails. */ + +char compare_map[ICAL_RESTRICTION_UNKNOWN+1][3] = { + { 1, 1, 1},/*ICAL_RESTRICTION_NONE*/ + { 1, 0, 0},/*ICAL_RESTRICTION_ZERO*/ + { 0, 1, 0},/*ICAL_RESTRICTION_ONE*/ + { 1, 1, 1},/*ICAL_RESTRICTION_ZEROPLUS*/ + { 0, 1, 1},/*ICAL_RESTRICTION_ONEPLUS*/ + { 1, 1, 0},/*ICAL_RESTRICTION_ZEROORONE*/ + { 1, 1, 0},/*ICAL_RESTRICTION_ONEEXCLUSIVE*/ + { 1, 1, 0},/*ICAL_RESTRICTION_ONEMUTUAL*/ + { 1, 1, 1} /*ICAL_RESTRICTION_UNKNOWN*/ +}; + +char restr_string_map[ICAL_RESTRICTION_UNKNOWN+1][60] = { + "unknown number",/*ICAL_RESTRICTION_NONE*/ + "0",/*ICAL_RESTRICTION_ZERO*/ + "1",/*ICAL_RESTRICTION_ONE*/ + "zero or more",/*ICAL_RESTRICTION_ZEROPLUS*/ + "one or more" ,/*ICAL_RESTRICTION_ONEPLUS*/ + "zero or one",/*ICAL_RESTRICTION_ZEROORONE*/ + "zero or one, exclusive with another property",/*ICAL_RESTRICTION_ONEEXCLUSIVE*/ + "zero or one, mutual with another property",/*ICAL_RESTRICTION_ONEMUTUAL*/ + "unknown number" /*ICAL_RESTRICTION_UNKNOWN*/ +}; + + +int +icalrestriction_compare(icalrestriction_kind restr, int count){ + + if ( restr < ICAL_RESTRICTION_NONE || restr > ICAL_RESTRICTION_UNKNOWN + || count < 0){ + return -1; + } + + if (count > 2) { + count = 2; + } + + return compare_map[restr][count]; + +} + +/* Special case routines */ + +char* icalrestriction_may_be_draft_final_canceled( + icalrestriction_property_record *rec, + icalcomponent* comp, + icalproperty* prop) +{ + + icalproperty_status stat = icalproperty_get_status(prop); + + if( !( stat == ICAL_STATUS_DRAFT || + stat == ICAL_STATUS_FINAL || + stat == ICAL_STATUS_CANCELLED )){ + + return "Failed iTIP restrictions for STATUS property. Value must be one of DRAFT, FINAL, or CANCELED"; + + } + + return 0; +} + +char* icalrestriction_may_be_comp_need_process( + icalrestriction_property_record *rec, + icalcomponent* comp, + icalproperty* prop) +{ + icalproperty_status stat = icalproperty_get_status(prop); + + if( !( stat == ICAL_STATUS_COMPLETED || + stat == ICAL_STATUS_NEEDSACTION || + stat == ICAL_STATUS_INPROCESS )){ + + return "Failed iTIP restrictions for STATUS property. Value must be one of COMPLETED, NEEDS-ACTION or IN-PROCESS"; + + } + + return 0; +} +char* icalrestriction_may_be_tent_conf(icalrestriction_property_record *rec, + icalcomponent* comp, + icalproperty* prop){ + icalproperty_status stat = icalproperty_get_status(prop); + + if( !( stat == ICAL_STATUS_TENTATIVE || + stat == ICAL_STATUS_CONFIRMED )){ + + return "Failed iTIP restrictions for STATUS property. Value must be one of TENTATIVE or CONFIRMED"; + + } + + return 0; +} +char* icalrestriction_may_be_tent_conf_cancel( + icalrestriction_property_record *rec, + icalcomponent* comp, + icalproperty* prop) +{ + icalproperty_status stat = icalproperty_get_status(prop); + + if( !( stat == ICAL_STATUS_TENTATIVE || + stat == ICAL_STATUS_CONFIRMED || + stat == ICAL_STATUS_CANCELLED )){ + + return "Failed iTIP restrictions for STATUS property. Value must be one of TENTATIVE, CONFIRMED or CANCELED"; + + } + + return 0; +} + +char* icalrestriction_must_be_cancel_if_present( + icalrestriction_property_record *rec, + icalcomponent* comp, + icalproperty* prop) +{ + /* This routine will not be called if prop == 0 */ + icalproperty_status stat = icalproperty_get_status(prop); + + if( stat != ICAL_STATUS_CANCELLED) + { + return "Failed iTIP restrictions for STATUS property. Value must be CANCELLED"; + + } + + + return 0; +} + +char* icalrestriction_must_be_canceled_no_attendee( + icalrestriction_property_record *rec, + icalcomponent* comp, + icalproperty* prop) +{ + + /* Hack. see rfc2446, 3.2.5 CANCEL for porperty STATUS. I don't + understand the note */ + + return 0; +} +char* icalrestriction_must_be_recurring(icalrestriction_property_record *rec, + icalcomponent* comp, + icalproperty* prop){ + /* Hack */ + return 0; +} +char* icalrestriction_must_have_duration(icalrestriction_property_record *rec, + icalcomponent* comp, + icalproperty* prop){ + + if( !icalcomponent_get_first_property(comp,ICAL_DURATION_PROPERTY)){ + + return "Failed iTIP restrictions. This component must have a DURATION property"; + + } + + return 0; +} +char* icalrestriction_must_have_repeat(icalrestriction_property_record *rec, + icalcomponent* comp, + icalproperty* prop){ + if( !icalcomponent_get_first_property(comp,ICAL_REPEAT_PROPERTY)){ + + return "Failed iTIP restrictions. This component must have a REPEAT property"; + + } + + return 0; +} +char* icalrestriction_must_if_tz_ref(icalrestriction_property_record *rec, + icalcomponent* comp, + icalproperty* prop){ + + /* Hack */ + return 0; +} +char* icalrestriction_no_dtend(icalrestriction_property_record *rec, + icalcomponent* comp, + icalproperty* prop){ + + if( icalcomponent_get_first_property(comp,ICAL_DTEND_PROPERTY)){ + + return "Failed iTIP restrictions. The component must not have both DURATION and DTEND"; + + } + + return 0; +} +char* icalrestriction_no_duration(icalrestriction_property_record *rec, + icalcomponent* comp, + icalproperty* prop){ + + /* _no_dtend takes care of this one */ + return 0; +} +char* icalrestriction_must_be_email( + icalrestriction_property_record *rec, + icalcomponent* comp, + icalproperty* prop) +{ + icalproperty_status stat = icalproperty_get_action(prop); + + if( !( stat == ICAL_ACTION_EMAIL)){ + + return "Failed iTIP restrictions for ACTION property. Value must be EMAIL."; + + } + + return 0; +} + +int icalrestriction_check_component(icalproperty_method method, + icalcomponent* comp) +{ + icalproperty_kind kind; + icalcomponent_kind comp_kind; + icalrestriction_kind restr; + icalrestriction_property_record *prop_record; + char* funcr = 0; + icalproperty *prop; + + int count; + int compare; + int valid = 1; + + comp_kind = icalcomponent_isa(comp); + + /* Check all of the properties in this component */ + + for(kind = ICAL_ANY_PROPERTY+1; kind != ICAL_NO_PROPERTY; kind++){ + count = icalcomponent_count_properties(comp, kind); + + prop_record = icalrestriction_get_property_restriction(method, + comp_kind, + kind); + + restr = prop_record->restriction; + + if(restr == ICAL_RESTRICTION_ONEEXCLUSIVE || + restr == ICAL_RESTRICTION_ONEMUTUAL) { + + /* First treat is as a 0/1 restriction */ + restr = ICAL_RESTRICTION_ZEROORONE; + compare = icalrestriction_compare(restr,count); + + } else { + + compare = icalrestriction_compare(restr,count); + } + + assert(compare != -1); + + if (compare == 0){ + char temp[TMP_BUF_SIZE]; + + snprintf(temp, TMP_BUF_SIZE,"Failed iTIP restrictions for %s property. Expected %s instances of the property and got %d", + icalenum_property_kind_to_string(kind), + restr_string_map[restr], count); + + icalcomponent_add_property + (comp, + icalproperty_vanew_xlicerror( + temp, + icalparameter_new_xlicerrortype(ICAL_XLICERRORTYPE_INVALIDITIP), + 0)); + } + + + prop = icalcomponent_get_first_property(comp, kind); + + if (prop != 0 && prop_record->function !=0 ){ + funcr = prop_record->function(prop_record,comp,prop); + } + + if(funcr !=0){ + icalcomponent_add_property + (comp, + icalproperty_vanew_xlicerror( + funcr, + icalparameter_new_xlicerrortype( + ICAL_XLICERRORTYPE_INVALIDITIP), + 0)); + + compare = 0; + } + + valid = valid && compare; + } + + + + return valid; + + +} + +int icalrestriction_check(icalcomponent* outer_comp) +{ + icalcomponent_kind comp_kind; + icalproperty_method method; + icalcomponent* inner_comp; + icalproperty *method_prop; + int valid; + + icalerror_check_arg_rz( (outer_comp!=0), "outer comp"); + + + /* Get the Method value from the outer component */ + + comp_kind = icalcomponent_isa(outer_comp); + + if (comp_kind != ICAL_VCALENDAR_COMPONENT){ + icalerror_set_errno(ICAL_BADARG_ERROR); + return 0; + } + + method_prop = icalcomponent_get_first_property(outer_comp, + ICAL_METHOD_PROPERTY); + + if (method_prop == 0){ + method = ICAL_METHOD_NONE; + } else { + method = icalproperty_get_method(method_prop); + } + + + /* Check the VCALENDAR wrapper */ + valid = icalrestriction_check_component(ICAL_METHOD_NONE,outer_comp); + + + /* Now check the inner components */ + + for(inner_comp= icalcomponent_get_first_component(outer_comp, + ICAL_ANY_COMPONENT); + inner_comp != 0; + inner_comp= icalcomponent_get_next_component(outer_comp, + ICAL_ANY_COMPONENT)){ + + valid = valid && icalrestriction_check_component(method,inner_comp); + + } + + + return valid; + +} + +icalrestriction_property_record* +icalrestriction_get_property_restriction(icalproperty_method method, + icalcomponent_kind component, + icalproperty_kind property) +{ + int i; + + for(i = 0; + icalrestriction_property_records[i].restriction != ICAL_RESTRICTION_NONE; + i++){ + + if (method == icalrestriction_property_records[i].method && + component == icalrestriction_property_records[i].component && + property == icalrestriction_property_records[i].property ){ + return &icalrestriction_property_records[i]; + } + } + + return &null_prop_record; +} + + +icalrestriction_component_record* +icalrestriction_get_component_restriction(icalproperty_method method, + icalcomponent_kind component, + icalcomponent_kind subcomponent) +{ + + int i; + + for(i = 0; + icalrestriction_component_records[i].restriction != ICAL_RESTRICTION_NONE; + i++){ + + if (method == icalrestriction_component_records[i].method && + component == icalrestriction_component_records[i].component && + subcomponent == icalrestriction_component_records[i].subcomponent ){ + return &icalrestriction_component_records[i]; + } + } + + return &null_comp_record; +} + +/* Everything below this line is machine generated. Do not edit. */ +icalrestriction_property_record icalrestriction_property_records[] = { + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,icalrestriction_must_be_recurring}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS ,0}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ONEEXCLUSIVE,icalrestriction_no_duration}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ONEEXCLUSIVE,icalrestriction_no_dtend}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,icalrestriction_may_be_tent_conf_cancel}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_RELCALID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ONEPLUS,0}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS ,0}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ONEEXCLUSIVE,icalrestriction_no_duration}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ONEEXCLUSIVE,icalrestriction_no_dtend}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,icalrestriction_must_be_recurring}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,icalrestriction_may_be_tent_conf}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_RELCALID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,icalrestriction_must_be_recurring}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS ,0}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ONEEXCLUSIVE,icalrestriction_no_duration}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ONEEXCLUSIVE,icalrestriction_no_dtend}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_RELCALID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS ,0}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ONEEXCLUSIVE,icalrestriction_no_duration}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ONEEXCLUSIVE,icalrestriction_no_dtend}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,icalrestriction_may_be_tent_conf}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZERO,icalrestriction_must_be_recurring}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_RELCALID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS ,0}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ONEEXCLUSIVE ,icalrestriction_no_duration}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ONEEXCLUSIVE,icalrestriction_no_dtend}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,icalrestriction_must_be_recurring}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,icalrestriction_must_be_canceled_no_attendee}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_RELCALID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,icalrestriction_must_be_recurring}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_RELCALID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS ,0}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ONEEXCLUSIVE,icalrestriction_no_duration}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ONEEXCLUSIVE,icalrestriction_no_dtend}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,icalrestriction_must_be_recurring}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,icalrestriction_may_be_tent_conf_cancel}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_RELCALID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,icalrestriction_must_be_recurring}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_RELCALID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_FREEBUSY_PROPERTY,ICAL_RESTRICTION_ONEPLUS,0}, + {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ONEPLUS,0}, + {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_FREEBUSY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_FREEBUSY_PROPERTY,ICAL_RESTRICTION_ONEPLUS,0}, + {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS ,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,icalrestriction_must_be_recurring}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_RELCALID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ONEPLUS,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS ,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,icalrestriction_must_be_recurring}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,icalrestriction_may_be_comp_need_process}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_RELCALID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ONEPLUS,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ONEPLUS,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS ,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,icalrestriction_must_be_recurring}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_RELCALID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,icalrestriction_may_be_comp_need_process}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZERO,icalrestriction_must_be_recurring}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_RELCALID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS ,0}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,icalrestriction_must_be_recurring}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,icalrestriction_must_be_canceled_no_attendee}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_RELCALID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,icalrestriction_must_be_recurring}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_RELCALID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ONEPLUS,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS ,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,icalrestriction_must_be_recurring}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,icalrestriction_may_be_comp_need_process}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_RELCALID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ONEPLUS,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS ,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,icalrestriction_must_be_recurring}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_RELCALID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS ,0}, + {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,icalrestriction_must_be_recurring}, + {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,icalrestriction_may_be_draft_final_canceled}, + {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS ,0}, + {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS ,0}, + {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,icalrestriction_must_be_recurring}, + {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,icalrestriction_must_be_cancel_if_present}, + {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_PUBLISH,ICAL_VAGENDA_COMPONENT,ICAL_CALMASTER_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VAGENDA_COMPONENT,ICAL_OWNER_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VAGENDA_COMPONENT,ICAL_RELCALID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_PUBLISH,ICAL_VAGENDA_COMPONENT,ICAL_TZID_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VAGENDA_COMPONENT,ICAL_CALMASTER_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VAGENDA_COMPONENT,ICAL_OWNER_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VAGENDA_COMPONENT,ICAL_RELCALID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REQUEST,ICAL_VAGENDA_COMPONENT,ICAL_TZID_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REPLY,ICAL_VAGENDA_COMPONENT,ICAL_CALMASTER_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REPLY,ICAL_VAGENDA_COMPONENT,ICAL_OWNER_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VAGENDA_COMPONENT,ICAL_RELCALID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VAGENDA_COMPONENT,ICAL_TZID_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_ADD,ICAL_VAGENDA_COMPONENT,ICAL_CALMASTER_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_ADD,ICAL_VAGENDA_COMPONENT,ICAL_OWNER_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VAGENDA_COMPONENT,ICAL_RELCALID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VAGENDA_COMPONENT,ICAL_TZID_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VAGENDA_COMPONENT,ICAL_CALMASTER_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VAGENDA_COMPONENT,ICAL_OWNER_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VAGENDA_COMPONENT,ICAL_RELCALID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VAGENDA_COMPONENT,ICAL_TZID_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REFRESH,ICAL_VAGENDA_COMPONENT,ICAL_CALMASTER_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_REFRESH,ICAL_VAGENDA_COMPONENT,ICAL_OWNER_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REFRESH,ICAL_VAGENDA_COMPONENT,ICAL_RELCALID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REFRESH,ICAL_VAGENDA_COMPONENT,ICAL_TZID_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VAGENDA_COMPONENT,ICAL_CALMASTER_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VAGENDA_COMPONENT,ICAL_OWNER_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VAGENDA_COMPONENT,ICAL_RELCALID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VAGENDA_COMPONENT,ICAL_TZID_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VAGENDA_COMPONENT,ICAL_CALMASTER_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VAGENDA_COMPONENT,ICAL_OWNER_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VAGENDA_COMPONENT,ICAL_RELCALID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VAGENDA_COMPONENT,ICAL_TZID_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_NONE,ICAL_VAGENDA_COMPONENT,ICAL_ALLOWCONFLICT_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_NONE,ICAL_VAGENDA_COMPONENT,ICAL_CALMASTER_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_NONE,ICAL_VAGENDA_COMPONENT,ICAL_OWNER_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VAGENDA_COMPONENT,ICAL_RELCALID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VAGENDA_COMPONENT,ICAL_TZID_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_NONE,ICAL_VAGENDA_COMPONENT,ICAL_DEFAULTCHARSET_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_NONE,ICAL_VAGENDA_COMPONENT,ICAL_DEFAULTLOCALE_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_NONE,ICAL_VAGENDA_COMPONENT,ICAL_DEFAULTTZID_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_ACTION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_RELCALID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_CALSCALE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_COMPLETED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_FREEBUSY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_METHOD_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_PRODID_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_REPEAT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_TRIGGER_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_TZID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_TZNAME_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_TZOFFSETFROM_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_TZOFFSETTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_TZURL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_VERSION_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_NONE,ICAL_VCALENDAR_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_ACTION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_CALSCALE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_COMPLETED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ONEEXCLUSIVE,icalrestriction_no_duration}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ONEEXCLUSIVE,icalrestriction_no_dtend}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_FREEBUSY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_METHOD_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_PRODID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,icalrestriction_must_be_recurring}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_REPEAT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_TRIGGER_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_TZID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_TZNAME_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_TZOFFSETFROM_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_TZOFFSETTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_TZURL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_VERSION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VEVENT_COMPONENT,ICAL_RELCALID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_ACTION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_CALSCALE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_COMPLETED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ONEEXCLUSIVE,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ONEEXCLUSIVE,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_FREEBUSY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_METHOD_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_PRODID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,icalrestriction_must_be_recurring}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_REPEAT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_TRIGGER_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_TZID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_TZNAME_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_TZOFFSETFROM_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_TZOFFSETTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_TZURL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_VERSION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VTODO_COMPONENT,ICAL_RELCALID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_ACTION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_CALSCALE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_COMPLETED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ONEEXCLUSIVE,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ONEEXCLUSIVE,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_FREEBUSY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_METHOD_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_PRODID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,icalrestriction_must_be_recurring}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_REPEAT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_TRIGGER_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_TZID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_TZNAME_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_TZOFFSETFROM_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_TZOFFSETTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_TZURL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_VERSION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VJOURNAL_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_ACTION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_CALSCALE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_COMPLETED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_FREEBUSY_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_METHOD_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_PRODID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_REPEAT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_TRIGGER_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_TZID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_TZNAME_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_TZOFFSETFROM_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_TZOFFSETTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_TZURL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_VERSION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VFREEBUSY_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_ACTION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_CALSCALE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_COMPLETED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_FREEBUSY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_METHOD_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_PRODID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_REPEAT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_TRIGGER_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_TZID_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_TZNAME_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_TZOFFSETFROM_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_TZOFFSETTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_TZURL_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_VERSION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_ACTION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_CALSCALE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_COMPLETED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_FREEBUSY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_METHOD_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_PRODID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_REPEAT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_TRIGGER_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_TZID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_TZNAME_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_TZOFFSETFROM_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_TZOFFSETTO_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_TZURL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_VERSION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XSTANDARD_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_ACTION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_CALSCALE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_COMPLETED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_FREEBUSY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_METHOD_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_PRODID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_REPEAT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_TRIGGER_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_TZID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_TZNAME_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_TZOFFSETFROM_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_TZOFFSETTO_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_TZURL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_VERSION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDAYLIGHT_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_ACTION_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_CALSCALE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_COMPLETED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ONEMUTUAL,icalrestriction_must_have_repeat}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_REPEAT_PROPERTY,ICAL_RESTRICTION_ONEMUTUAL,icalrestriction_must_have_duration}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_FREEBUSY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_METHOD_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_PRODID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_TRIGGER_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_TZID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_TZNAME_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_TZOFFSETFROM_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_TZOFFSETTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_TZURL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_VERSION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XAUDIOALARM_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_ACTION_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_CALSCALE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_COMPLETED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ONEMUTUAL,icalrestriction_must_have_repeat}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_REPEAT_PROPERTY,ICAL_RESTRICTION_ONEMUTUAL,icalrestriction_must_have_duration}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_FREEBUSY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_METHOD_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_PRODID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_TRIGGER_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_TZID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_TZNAME_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_TZOFFSETFROM_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_TZOFFSETTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_TZURL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_VERSION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XDISPLAYALARM_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_ACTION_PROPERTY,ICAL_RESTRICTION_ONE,icalrestriction_must_be_email}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ONEPLUS,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_CALSCALE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_COMPLETED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ONEMUTUAL,icalrestriction_must_have_repeat}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_REPEAT_PROPERTY,ICAL_RESTRICTION_ONEMUTUAL,icalrestriction_must_have_duration}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_FREEBUSY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_METHOD_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_PRODID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_TRIGGER_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_TZID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_TZNAME_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_TZOFFSETFROM_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_TZOFFSETTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_TZURL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_VERSION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XEMAILALARM_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_ACTION_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_ATTACH_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_ATTENDEE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_CALSCALE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_CATEGORIES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_CLASS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_COMMENT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_COMPLETED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_CONTACT_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_CREATED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_DESCRIPTION_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_DTEND_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_DTSTAMP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_DTSTART_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_DUE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_DURATION_PROPERTY,ICAL_RESTRICTION_ONEMUTUAL,icalrestriction_must_have_repeat}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_REPEAT_PROPERTY,ICAL_RESTRICTION_ONEMUTUAL,icalrestriction_must_have_duration}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_EXDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_EXRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_FREEBUSY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_GEO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_LASTMODIFIED_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_LOCATION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_METHOD_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_ORGANIZER_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_PERCENTCOMPLETE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_PRIORITY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_PRODID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_RDATE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_RECURRENCEID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_RELATEDTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_REQUESTSTATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_RESOURCES_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_RRULE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_SEQUENCE_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_STATUS_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_SUMMARY_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_TRANSP_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_TRIGGER_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_TZID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_TZNAME_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_TZOFFSETFROM_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_TZOFFSETTO_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_TZURL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_UID_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_URL_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_VERSION_PROPERTY,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_XPROCEDUREALARM_COMPONENT,ICAL_X_PROPERTY,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VQUERY_COMPONENT,ICAL_QUERY_PROPERTY,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_NONE,ICAL_VQUERY_COMPONENT,ICAL_QUERYNAME_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_NONE,ICAL_VQUERY_COMPONENT,ICAL_EXPAND_PROPERTY,ICAL_RESTRICTION_ONE,0}, + {ICAL_METHOD_NONE,ICAL_NO_COMPONENT,ICAL_NO_PROPERTY,ICAL_RESTRICTION_NONE} +}; +icalrestriction_component_record icalrestriction_component_records[] = { + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_VJOURNAL_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_VTODO_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,icalrestriction_must_if_tz_ref}, + {ICAL_METHOD_PUBLISH,ICAL_VEVENT_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,icalrestriction_must_if_tz_ref}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_VJOURNAL_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REQUEST,ICAL_VEVENT_COMPONENT,ICAL_VTODO_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZEROORONE,icalrestriction_must_if_tz_ref}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_VJOURNAL_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REPLY,ICAL_VEVENT_COMPONENT,ICAL_VTODO_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,icalrestriction_must_if_tz_ref}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_VTODO_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_ADD,ICAL_VEVENT_COMPONENT,ICAL_VJOURNAL_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,icalrestriction_must_if_tz_ref}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_VTODO_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_VJOURNAL_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_CANCEL,ICAL_VEVENT_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_VTODO_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_VJOURNAL_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZERO,icalrestriction_must_if_tz_ref}, + {ICAL_METHOD_REFRESH,ICAL_VEVENT_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,icalrestriction_must_if_tz_ref}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_VTODO_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_VJOURNAL_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_COUNTER,ICAL_VEVENT_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_VTODO_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_VJOURNAL_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZERO,icalrestriction_must_if_tz_ref}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VEVENT_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_VEVENT_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_VTODO_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_VJOURNAL_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZERO,icalrestriction_must_if_tz_ref}, + {ICAL_METHOD_PUBLISH,ICAL_VFREEBUSY_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_VEVENT_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_VTODO_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_VJOURNAL_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REQUEST,ICAL_VFREEBUSY_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_VEVENT_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_VTODO_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_VJOURNAL_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REPLY,ICAL_VFREEBUSY_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_VEVENT_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_PUBLISH,ICAL_VTODO_COMPONENT,ICAL_VJOURNAL_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_VEVENT_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REQUEST,ICAL_VTODO_COMPONENT,ICAL_VJOURNAL_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_VEVENT_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REPLY,ICAL_VTODO_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_VEVENT_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_VJOURNAL_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_ADD,ICAL_VTODO_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_VEVENT_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_CANCEL,ICAL_VTODO_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_VEVENT_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_REFRESH,ICAL_VTODO_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_VEVENT_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_COUNTER,ICAL_VTODO_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_VEVENT_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_DECLINECOUNTER,ICAL_VTODO_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_VEVENT_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_PUBLISH,ICAL_VJOURNAL_COMPONENT,ICAL_VTODO_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZEROORONE,0}, + {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_VEVENT_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_ADD,ICAL_VJOURNAL_COMPONENT,ICAL_VTODO_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_VTIMEZONE_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_X_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_VALARM_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_VEVENT_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_VFREEBUSY_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_CANCEL,ICAL_VJOURNAL_COMPONENT,ICAL_VTODO_COMPONENT,ICAL_RESTRICTION_ZERO,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_XSTANDARD_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_VTIMEZONE_COMPONENT,ICAL_XDAYLIGHT_COMPONENT,ICAL_RESTRICTION_ZEROPLUS,0}, + {ICAL_METHOD_NONE,ICAL_NO_COMPONENT,ICAL_NO_COMPONENT,ICAL_RESTRICTION_NONE} +}; diff --git a/mozilla/calendar/libical/src/libical/autogenex/icalversion.h b/mozilla/calendar/libical/src/libical/autogenex/icalversion.h new file mode 100644 index 00000000000..c4b1d15ef16 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/autogenex/icalversion.h @@ -0,0 +1,7 @@ +#ifndef ICAL_VERSION_H +#define ICAL_VERSION_H + +#define ICAL_PACKAGE "libical" +#define ICAL_VERSION "0.24" + +#endif diff --git a/mozilla/calendar/libical/src/libical/caldate.c b/mozilla/calendar/libical/src/libical/caldate.c new file mode 100644 index 00000000000..f5554f66f80 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/caldate.c @@ -0,0 +1,176 @@ +/* + * Copyright (c) 1986-2000, Hiram Clawson + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * Redistributions of source code must retain the above + * copyright notice, this list of conditions and the + * following disclaimer. + * + * Redistributions in binary form must reproduce the + * above copyright notice, this list of conditions and + * the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * Neither name of The Museum of Hiram nor the names of + * its contributors may be used to endorse or promote products + * derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "astime.h" /* time structures */ + +/** + * caldat computes the day of the week, the day of the year + * the gregorian (or julian) calendar date and the universal + * time from the julian decimal date. + * for astronomical purposes, The Gregorian calendar reform occurred + * on 15 Oct. 1582. This is 05 Oct 1582 by the julian calendar. + + * Input: a ut_instant structure pointer, where the j_date element + * has been set. ( = 0 for 01 Jan 4713 B.C. 12 HR UT ) + * + * output: will set all the other elements of the structure. + * As a convienence, the function will also return the year. + * + * Reference: Astronomial formulae for calculators, meeus, p 23 + * from fortran program by F. Espenak - April 1982 Page 277, + * 50 Year canon of solar eclipses: 1986-2035 + * + */ + +long caldat( date ) +struct ut_instant * date; +{ + double frac; + long jd; + long ka; + long kb; + long kc; + long kd; + long ke; + long ialp; + + jd = (long) (date->j_date + 0.5); /* integer julian date */ + frac = date->j_date + 0.5 - (double) jd + 1.0e-10; /* day fraction */ + ka = (long) jd; + if ( jd >= 2299161L ) + { + ialp = ( (double) jd - 1867216.25 ) / ( 36524.25 ); + ka = jd + 1L + ialp - ( ialp >> 2 ); + } + kb = ka + 1524L; + kc = ( (double) kb - 122.1 ) / 365.25; + kd = (double) kc * 365.25; + ke = (double) ( kb - kd ) / 30.6001; + date->day = kb - kd - ((long) ( (double) ke * 30.6001 )); + if ( ke > 13L ) + date->month = ke - 13L; + else + date->month = ke - 1L; + if ( (date->month == 2) && (date->day > 28) ) + date->day = 29; + if ( (date->month == 2) && (date->day == 29) && (ke == 3L) ) + date->year = kc - 4716L; + else if ( date->month > 2 ) + date->year = kc - 4716L; + else + date->year = kc - 4715L; + date->i_hour = date->d_hour = frac * 24.0; /* hour */ + date->i_minute = date->d_minute = + ( date->d_hour - (double) date->i_hour ) * 60.0; /* minute */ + date->i_second = date->d_second = + ( date->d_minute - (double) date->i_minute ) * 60.0;/* second */ + date->weekday = (jd + 1L) % 7L; /* day of week */ + if ( date->year == ((date->year >> 2) << 2) ) + date->day_of_year = + ( ( 275 * date->month ) / 9) + - ((date->month + 9) / 12) + + date->day - 30; + else + date->day_of_year = + ( ( 275 * date->month ) / 9) + - (((date->month + 9) / 12) << 1) + + date->day - 30; + return( date->year ); +} + +/** + * juldat computes the julian decimal date (j_date) from + * the gregorian (or Julian) calendar date. + * for astronomical purposes, The Gregorian calendar reform occurred + * on 15 Oct. 1582. This is 05 Oct 1582 by the julian calendar. + * Input: a ut_instant structure pointer where Day, Month, Year and + * i_hour, i_minute, d_second have been set for the date + * in question. + * + * Output: the j_date and weekday elements of the structure will be set. + * Also, the return value of the function will be the j_date too. + * + * Reference: Astronomial formulae for calculators, meeus, p 23 + * from fortran program by F. Espenak - April 1982 Page 276, + * 50 Year canon of solar eclipses: 1986-2035 + */ + +double juldat( date ) +struct ut_instant * date; +{ + double frac, gyr; + long iy0, im0; + long ia, ib; + long jd; + + /* decimal day fraction */ + frac = (( double)date->i_hour/ 24.0) + + ((double) date->i_minute / 1440.0) + + (date->d_second / 86400.0); + /* convert date to format YYYY.MMDDdd */ + gyr = (double) date->year + + (0.01 * (double) date->month) + + (0.0001 * (double) date->day) + + (0.0001 * frac) + 1.0e-9; + /* conversion factors */ + if ( date->month <= 2 ) + { + iy0 = date->year - 1L; + im0 = date->month + 12; + } + else + { + iy0 = date->year; + im0 = date->month; + } + ia = iy0 / 100L; + ib = 2L - ia + (ia >> 2); + /* calculate julian date */ + if ( date->year < 0L ) + jd = (long) ((365.25 * (double) iy0) - 0.75) + + (long) (30.6001 * (im0 + 1L) ) + + (long) date->day + 1720994L; + else + jd = (long) (365.25 * (double) iy0) + + (long) (30.6001 * (double) (im0 + 1L)) + + (long) date->day + 1720994L; + if ( gyr >= 1582.1015 ) /* on or after 15 October 1582 */ + jd += ib; + date->j_date = (double) jd + frac + 0.5; + jd = (long) (date->j_date + 0.5); + date->weekday = (jd + 1L) % 7L; + return( date->j_date ); +} /* end of double juldat( date ) */ diff --git a/mozilla/calendar/libical/src/libical/icalarray.c b/mozilla/calendar/libical/src/libical/icalarray.c new file mode 100644 index 00000000000..c3f03de1d54 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icalarray.c @@ -0,0 +1,163 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- + ====================================================================== + FILE: icalarray.c + CREATOR: Damon Chaplin 07 March 2001 + + $Id: icalarray.c,v 1.5 2002/06/28 09:30:15 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 2001, Ximian, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + + ======================================================================*/ + +/** @file icalarray.c + * + * @brief An array of arbitrarily-sized elements which grows + * dynamically as elements are added. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include + +#include "icalarray.h" +#include "icalerror.h" + + +static void icalarray_expand (icalarray *array, + int space_needed); + +/** @brief Constructor + */ + +icalarray* +icalarray_new (int element_size, + int increment_size) +{ + icalarray *array; + + array = (icalarray*) malloc (sizeof (icalarray)); + if (!array) { + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + return NULL; + } + + array->element_size = element_size; + array->increment_size = increment_size; + array->num_elements = 0; + array->space_allocated = 0; + array->data = NULL; + + return array; +} + +/** @brief Destructor + */ + +void +icalarray_free (icalarray *array) +{ + if (array->data) + free (array->data); + free (array); +} + + +void +icalarray_append (icalarray *array, + void *element) +{ + if (array->num_elements >= array->space_allocated) + icalarray_expand (array, 1); + + memcpy ((char *)(array->data) + ( array->num_elements * array->element_size ), element, + array->element_size); + array->num_elements++; +} + + +void* +icalarray_element_at (icalarray *array, + int position) +{ + assert (position >= 0); + assert (position < array->num_elements); + + return (char *)(array->data) + (position * array->element_size); +} + + +void +icalarray_remove_element_at (icalarray *array, + int position) +{ + void *dest; + int elements_to_move; + + assert (position >= 0); + assert (position < array->num_elements); + + dest = (char *)array->data + (position * array->element_size); + elements_to_move = array->num_elements - position - 1; + + if (elements_to_move > 0) + memmove (dest, (char *)dest + array->element_size, + elements_to_move * array->element_size); + + array->num_elements--; +} + + +void +icalarray_sort (icalarray *array, + int (*compare) (const void *, + const void *)) +{ + qsort (array->data, array->num_elements, array->element_size, compare); +} + + +static void +icalarray_expand (icalarray *array, + int space_needed) +{ + int new_space_allocated; + void *new_data; + + new_space_allocated = array->space_allocated + array->increment_size; + + if (space_needed > array->increment_size) + new_space_allocated += space_needed; + + /* + new_data = realloc (array->data, + new_space_allocated * array->element_size); + */ + new_data = malloc(new_space_allocated * array->element_size); + memcpy(new_data,array->data,array->element_size*array->space_allocated); + free(array->data); + + if (new_data) { + array->data = new_data; + array->space_allocated = new_space_allocated; + } else { + icalerror_set_errno(ICAL_ALLOCATION_ERROR); + } +} + + diff --git a/mozilla/calendar/libical/src/libical/icalarray.h b/mozilla/calendar/libical/src/libical/icalarray.h new file mode 100644 index 00000000000..4389dca4976 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icalarray.h @@ -0,0 +1,63 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ +/*====================================================================== + FILE: icalarray.h + CREATOR: Damon Chaplin 07 March 2001 + + + $Id: icalarray.h,v 1.3 2002/10/09 19:50:46 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 2001, Ximian, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + +======================================================================*/ + + +#ifndef ICALARRAY_H +#define ICALARRAY_H + +/** @file icalarray.h + * + * @brief An array of arbitrarily-sized elements which grows + * dynamically as elements are added. + */ + +typedef struct _icalarray icalarray; +struct _icalarray { + unsigned int element_size; + unsigned int increment_size; + unsigned int num_elements; + unsigned int space_allocated; + void *data; +}; + + + +icalarray *icalarray_new (int element_size, + int increment_size); +void icalarray_free (icalarray *array); + +void icalarray_append (icalarray *array, + void *element); +void icalarray_remove_element_at (icalarray *array, + int position); + +void *icalarray_element_at (icalarray *array, + int position); + +void icalarray_sort (icalarray *array, + int (*compare) (const void *, const void *)); + + +#endif /* ICALARRAY_H */ diff --git a/mozilla/calendar/libical/src/libical/icalattach.c b/mozilla/calendar/libical/src/libical/icalattach.c new file mode 100644 index 00000000000..6ef426a3d70 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icalattach.c @@ -0,0 +1,139 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: icalattach.c + CREATOR: acampi 28 May 02 + + $Id: icalattach.c,v 1.2 2002/10/09 19:54:59 acampi Exp $ + $Locker: $ + + + (C) COPYRIGHT 2000, Andrea Campi + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icaltypes.c + + ======================================================================*/ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "icaltypes.h" +#include "icalerror.h" +#include "icalmemory.h" +#include "icalattachimpl.h" +#include /* for malloc and abs() */ +#include /* for errno */ +#include /* for icalmemory_strdup */ +#include + +icalattach * +icalattach_new_from_url (const char *url) +{ + icalattach *attach; + char *url_copy; + + icalerror_check_arg_rz ((url != NULL), "url"); + + if ((attach = malloc (sizeof (icalattach))) == NULL) { + errno = ENOMEM; + return NULL; + } + + if ((url_copy = strdup (url)) == NULL) { + free (attach); + errno = ENOMEM; + return NULL; + } + + attach->refcount = 1; + attach->is_url = 1; + attach->u.url.url = url_copy; + + return attach; +} + +icalattach * +icalattach_new_from_data (unsigned char *data, icalattach_free_fn_t free_fn, + void *free_fn_data) +{ + icalattach *attach; + + icalerror_check_arg_rz ((data != NULL), "data"); + + if ((attach = malloc (sizeof (icalattach))) == NULL) { + errno = ENOMEM; + return NULL; + } + + attach->refcount = 1; + attach->is_url = 0; + attach->u.data.data = data; + attach->u.data.free_fn = free_fn; + attach->u.data.free_fn_data = free_fn_data; + + return attach; +} + +void +icalattach_ref (icalattach *attach) +{ + icalerror_check_arg_rv ((attach != NULL), "attach"); + icalerror_check_arg_rv ((attach->refcount > 0), "attach->refcount > 0"); + + attach->refcount++; +} + +void +icalattach_unref (icalattach *attach) +{ + icalerror_check_arg_rv ((attach != NULL), "attach"); + icalerror_check_arg_rv ((attach->refcount > 0), "attach->refcount > 0"); + + attach->refcount--; + + if (attach->refcount != 0) + return; + + if (attach->is_url) + free (attach->u.url.url); + else if (attach->u.data.free_fn) + (* attach->u.data.free_fn) (attach->u.data.data, attach->u.data.free_fn_data); + + free (attach); +} + +int +icalattach_get_is_url (icalattach *attach) +{ + icalerror_check_arg_rz ((attach != NULL), "attach"); + + return attach->is_url ? 1 : 0; +} + +const char * +icalattach_get_url (icalattach *attach) +{ + icalerror_check_arg_rz ((attach != NULL), "attach"); + icalerror_check_arg_rz ((attach->is_url), "attach->is_url"); + + return attach->u.url.url; +} + +unsigned char * +icalattach_get_data (icalattach *attach) +{ + icalerror_check_arg_rz ((attach != NULL), "attach"); + icalerror_check_arg_rz ((!attach->is_url), "!attach->is_url"); + + return attach->u.data.data; +} diff --git a/mozilla/calendar/libical/src/libical/icalattach.h b/mozilla/calendar/libical/src/libical/icalattach.h new file mode 100644 index 00000000000..ba4488dd2d6 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icalattach.h @@ -0,0 +1,60 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalattach.h + CREATOR: acampi 28 May 02 + + + (C) COPYRIGHT 2002, Andrea Campi + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icalattach.h + +======================================================================*/ + +#ifndef ICALATTACH_H +#define ICALATTACH_H + + +typedef struct icalattach_impl icalattach; + +typedef void (* icalattach_free_fn_t) (unsigned char *data, void *user_data); + +icalattach *icalattach_new_from_url (const char *url); +icalattach *icalattach_new_from_data (unsigned char *data, + icalattach_free_fn_t free_fn, void *free_fn_data); + +void icalattach_ref (icalattach *attach); +void icalattach_unref (icalattach *attach); + +int icalattach_get_is_url (icalattach *attach); +const char *icalattach_get_url (icalattach *attach); +unsigned char *icalattach_get_data (icalattach *attach); + +struct icalattachtype* icalattachtype_new(void); +void icalattachtype_add_reference(struct icalattachtype* v); +void icalattachtype_free(struct icalattachtype* v); + +void icalattachtype_set_url(struct icalattachtype* v, char* url); +char* icalattachtype_get_url(struct icalattachtype* v); + +void icalattachtype_set_base64(struct icalattachtype* v, char* base64, + int owns); +char* icalattachtype_get_base64(struct icalattachtype* v); + +void icalattachtype_set_binary(struct icalattachtype* v, char* binary, + int owns); +void* icalattachtype_get_binary(struct icalattachtype* v); + + + +#endif /* !ICALATTACH_H */ diff --git a/mozilla/calendar/libical/src/libical/icalattachimpl.h b/mozilla/calendar/libical/src/libical/icalattachimpl.h new file mode 100644 index 00000000000..b31d97098d1 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icalattachimpl.h @@ -0,0 +1,59 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalattachimpl.h + CREATOR: acampi 28 May 02 + + $Id: icalattachimpl.h,v 1.1 2002/05/28 14:08:00 acampi Exp $ + + + (C) COPYRIGHT 2000, Andrea Campi + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icalattachimpl.h + + +======================================================================*/ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#ifndef ICALATTACHIMPL_H +#define ICALATTACHIMPL_H + +#include "icalattach.h" + +/* Private structure for ATTACH values */ +struct icalattach_impl { + /* Reference count */ + int refcount; + + union { + /* URL attachment data */ + struct { + char *url; + } url; + + /* Inline data */ + struct { + unsigned char *data; + icalattach_free_fn_t free_fn; + void *free_fn_data; + } data; + } u; + + /* TRUE if URL, FALSE if inline data */ + unsigned int is_url : 1; +}; + +#endif diff --git a/mozilla/calendar/libical/src/libical/icalcomponent.c b/mozilla/calendar/libical/src/libical/icalcomponent.c new file mode 100644 index 00000000000..ede8c09c575 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icalcomponent.c @@ -0,0 +1,2652 @@ +/*====================================================================== + FILE: icalcomponent.c + CREATOR: eric 28 April 1999 + + $Id: icalcomponent.c,v 1.57 2004/09/10 07:43:51 acampi Exp $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icalcomponent.c + +======================================================================*/ + + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "icalcomponent.h" +#include "pvl.h" /* "Pointer-to-void list" */ +#include "icalerror.h" +#include "icalmemory.h" +#include "icalenums.h" +#include "icaltime.h" +#include "icalarray.h" +#include "icaltimezone.h" +#include "icalduration.h" +#include "icalperiod.h" +#include "icalparser.h" +#include "icalrestriction.h" + +#include /* for malloc */ +#include /* for va_list, etc */ +#include +#include +#include /* for fprintf */ +#include /* for strdup */ +#include /* for INT_MAX */ + +struct icalcomponent_impl +{ + char id[5]; + icalcomponent_kind kind; + char* x_name; + pvl_list properties; + pvl_elem property_iterator; + pvl_list components; + pvl_elem component_iterator; + icalcomponent* parent; + + /** An array of icaltimezone structs. We use this so we can do fast + lookup of timezones using binary searches. timezones_sorted is + set to 0 whenever we add a timezone, so we remember to sort the + array before doing a binary search. */ + icalarray* timezones; + int timezones_sorted; +}; + +/* icalproperty functions that only components get to use */ +void icalproperty_set_parent(icalproperty* property, + icalcomponent* component); +icalcomponent* icalproperty_get_parent(icalproperty* property); +void icalcomponent_add_children(icalcomponent *impl,va_list args); +static icalcomponent* icalcomponent_new_impl (icalcomponent_kind kind); + +static void icalcomponent_merge_vtimezone (icalcomponent *comp, + icalcomponent *vtimezone, + icalarray *tzids_to_rename); +static void icalcomponent_handle_conflicting_vtimezones (icalcomponent *comp, + icalcomponent *vtimezone, + icalproperty *tzid_prop, + const char *tzid, + icalarray *tzids_to_rename); +static unsigned int icalcomponent_get_tzid_prefix_len (const char *tzid); +static void icalcomponent_rename_tzids(icalcomponent* comp, + icalarray* rename_table); +static void icalcomponent_rename_tzids_callback(icalparameter *param, + void *data); +static int icalcomponent_compare_vtimezones (icalcomponent *vtimezone1, + icalcomponent *vtimezone2); +static int icalcomponent_compare_timezone_fn (const void *elem1, + const void *elem2); + + +void icalcomponent_add_children(icalcomponent *impl, va_list args) +{ + void* vp; + + while((vp = va_arg(args, void*)) != 0) { + + assert (icalcomponent_isa_component(vp) != 0 || + icalproperty_isa_property(vp) != 0 ) ; + + if (icalcomponent_isa_component(vp) != 0 ){ + icalcomponent_add_component(impl, (icalcomponent*)vp); + + } else if (icalproperty_isa_property(vp) != 0 ){ + icalcomponent_add_property(impl, (icalproperty*)vp); + } + } +} + +static icalcomponent* +icalcomponent_new_impl (icalcomponent_kind kind) +{ + icalcomponent* comp; + + if (!icalcomponent_kind_is_valid(kind)) + return NULL; + + if ( ( comp = (icalcomponent*) malloc(sizeof(icalcomponent))) == 0) { + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + return 0; + } + + strcpy(comp->id,"comp"); + + comp->kind = kind; + comp->properties = pvl_newlist(); + comp->property_iterator = 0; + comp->components = pvl_newlist(); + comp->component_iterator = 0; + comp->x_name = 0; + comp->parent = 0; + comp->timezones = NULL; + comp->timezones_sorted = 1; + + return comp; +} + +/** @brief Constructor + */ +icalcomponent* +icalcomponent_new (icalcomponent_kind kind) +{ + return icalcomponent_new_impl(kind); +} + +/** @brief Constructor + */ +icalcomponent* +icalcomponent_vanew (icalcomponent_kind kind, ...) +{ + va_list args; + + icalcomponent *impl = icalcomponent_new_impl(kind); + + if (impl == 0){ + return 0; + } + + va_start(args,kind); + icalcomponent_add_children(impl, args); + va_end(args); + + return impl; +} + +/** @brief Constructor + */ +icalcomponent* icalcomponent_new_from_string(char* str) +{ + return icalparser_parse_string(str); +} + +/** @brief Constructor + */ +icalcomponent* icalcomponent_new_clone(icalcomponent* old) +{ + icalcomponent *new; + icalproperty *p; + icalcomponent *c; + pvl_elem itr; + + icalerror_check_arg_rz( (old!=0), "component"); + + new = icalcomponent_new_impl(old->kind); + + if (new == 0){ + return 0; + } + + + for( itr = pvl_head(old->properties); + itr != 0; + itr = pvl_next(itr)) + { + p = (icalproperty*)pvl_data(itr); + icalcomponent_add_property(new,icalproperty_new_clone(p)); + } + + + for( itr = pvl_head(old->components); + itr != 0; + itr = pvl_next(itr)) + { + c = (icalcomponent*)pvl_data(itr); + icalcomponent_add_component(new,icalcomponent_new_clone(c)); + } + + return new; + +} + +/*** @brief Destructor + */ +void +icalcomponent_free (icalcomponent* c) +{ + icalproperty* prop; + icalcomponent* comp; + + icalerror_check_arg_rv( (c!=0), "component"); + +#ifdef ICAL_FREE_ON_LIST_IS_ERROR + icalerror_assert( (c->parent ==0),"Tried to free a component that is still attached to a parent component"); +#else + if(c->parent != 0){ + return; + } +#endif + + if(c != 0 ){ + + if ( c->properties != 0 ) + { + while( (prop=pvl_pop(c->properties)) != 0){ + assert(prop != 0); + icalproperty_set_parent(prop,0); + icalproperty_free(prop); + } + pvl_free(c->properties); + } + + + while( (comp=pvl_data(pvl_head(c->components))) != 0){ + assert(comp!=0); + icalcomponent_remove_component(c,comp); + icalcomponent_free(comp); + } + + pvl_free(c->components); + + if (c->x_name != 0) { + free(c->x_name); + } + + if (c->timezones) + icaltimezone_array_free (c->timezones); + + c->kind = ICAL_NO_COMPONENT; + c->properties = 0; + c->property_iterator = 0; + c->components = 0; + c->component_iterator = 0; + c->x_name = 0; + c->id[0] = 'X'; + c->timezones = NULL; + + free(c); + } +} + +char* +icalcomponent_as_ical_string (icalcomponent* impl) +{ + char* buf, *out_buf; + const char* tmp_buf; + size_t buf_size = 1024; + char* buf_ptr = 0; + pvl_elem itr; + +#ifdef ICAL_UNIX_NEWLINE + char newline[] = "\n"; +#else + char newline[] = "\r\n"; +#endif + + icalcomponent *c; + icalproperty *p; + icalcomponent_kind kind = icalcomponent_isa(impl); + + const char* kind_string; + + buf = icalmemory_new_buffer(buf_size); + buf_ptr = buf; + + icalerror_check_arg_rz( (impl!=0), "component"); + icalerror_check_arg_rz( (kind!=ICAL_NO_COMPONENT), "component kind is ICAL_NO_COMPONENT"); + + kind_string = icalcomponent_kind_to_string(kind); + + icalerror_check_arg_rz( (kind_string!=0),"Unknown kind of component"); + + icalmemory_append_string(&buf, &buf_ptr, &buf_size, "BEGIN:"); + icalmemory_append_string(&buf, &buf_ptr, &buf_size, kind_string); + icalmemory_append_string(&buf, &buf_ptr, &buf_size, newline); + + + + for( itr = pvl_head(impl->properties); + itr != 0; + itr = pvl_next(itr)) + { + p = (icalproperty*)pvl_data(itr); + + icalerror_assert((p!=0),"Got a null property"); + tmp_buf = icalproperty_as_ical_string(p); + + icalmemory_append_string(&buf, &buf_ptr, &buf_size, tmp_buf); + } + + + for( itr = pvl_head(impl->components); + itr != 0; + itr = pvl_next(itr)) + { + c = (icalcomponent*)pvl_data(itr); + + tmp_buf = icalcomponent_as_ical_string(c); + + icalmemory_append_string(&buf, &buf_ptr, &buf_size, tmp_buf); + + } + + icalmemory_append_string(&buf, &buf_ptr, &buf_size, "END:"); + icalmemory_append_string(&buf, &buf_ptr, &buf_size, + icalcomponent_kind_to_string(kind)); + icalmemory_append_string(&buf, &buf_ptr, &buf_size, newline); + + out_buf = icalmemory_tmp_copy(buf); + free(buf); + + return out_buf; +} + + +int +icalcomponent_is_valid (icalcomponent* component) +{ + if ( (strcmp(component->id,"comp") == 0) && + component->kind != ICAL_NO_COMPONENT){ + return 1; + } else { + return 0; + } + +} + + +icalcomponent_kind +icalcomponent_isa (const icalcomponent* component) +{ + icalerror_check_arg_rx( (component!=0), "component", ICAL_NO_COMPONENT); + + if(component != 0) + { + return component->kind; + } + + return ICAL_NO_COMPONENT; +} + + +int +icalcomponent_isa_component (void* component) +{ + icalcomponent *impl = component; + + icalerror_check_arg_rz( (component!=0), "component"); + + if (strcmp(impl->id,"comp") == 0) { + return 1; + } else { + return 0; + } + +} + +void +icalcomponent_add_property (icalcomponent* component, icalproperty* property) +{ + icalerror_check_arg_rv( (component!=0), "component"); + icalerror_check_arg_rv( (property!=0), "property"); + + icalerror_assert( (!icalproperty_get_parent(property)),"The property has already been added to a component. Remove the property with icalcomponent_remove_property before calling icalcomponent_add_property"); + + icalproperty_set_parent(property,component); + + pvl_push(component->properties,property); +} + + +void +icalcomponent_remove_property (icalcomponent* component, icalproperty* property) +{ + pvl_elem itr, next_itr; + + icalerror_check_arg_rv( (component!=0), "component"); + icalerror_check_arg_rv( (property!=0), "property"); + + icalerror_assert( (icalproperty_get_parent(property)),"The property is not a member of a component"); + + + for( itr = pvl_head(component->properties); + itr != 0; + itr = next_itr) + { + next_itr = pvl_next(itr); + + if( pvl_data(itr) == (void*)property ){ + + if (component->property_iterator == itr){ + component->property_iterator = pvl_next(itr); + } + + pvl_remove( component->properties, itr); + icalproperty_set_parent(property,0); + } + } +} + +int +icalcomponent_count_properties (icalcomponent* component, + icalproperty_kind kind) +{ + int count=0; + pvl_elem itr; + + icalerror_check_arg_rz( (component!=0), "component"); + + for( itr = pvl_head(component->properties); + itr != 0; + itr = pvl_next(itr)) + { + if(kind == icalproperty_isa((icalproperty*)pvl_data(itr)) || + kind == ICAL_ANY_PROPERTY){ + count++; + } + } + + + return count; + +} + +icalproperty* icalcomponent_get_current_property (icalcomponent* component) +{ + icalerror_check_arg_rz( (component!=0),"component"); + + if ((component->property_iterator==0)){ + return 0; + } + + return (icalproperty*) pvl_data(component->property_iterator); +} + +icalproperty* +icalcomponent_get_first_property (icalcomponent* c, icalproperty_kind kind) +{ + icalerror_check_arg_rz( (c!=0),"component"); + + for( c->property_iterator = pvl_head(c->properties); + c->property_iterator != 0; + c->property_iterator = pvl_next(c->property_iterator)) { + + icalproperty *p = (icalproperty*) pvl_data(c->property_iterator); + + if (icalproperty_isa(p) == kind || kind == ICAL_ANY_PROPERTY) { + + return p; + } + } + return 0; +} + +icalproperty* +icalcomponent_get_next_property (icalcomponent* c, icalproperty_kind kind) +{ + icalerror_check_arg_rz( (c!=0),"component"); + + if (c->property_iterator == 0){ + return 0; + } + + for( c->property_iterator = pvl_next(c->property_iterator); + c->property_iterator != 0; + c->property_iterator = pvl_next(c->property_iterator)) { + + icalproperty *p = (icalproperty*) pvl_data(c->property_iterator); + + if (icalproperty_isa(p) == kind || kind == ICAL_ANY_PROPERTY) { + + return p; + } + } + + return 0; +} + +icalproperty* +icalcomponent_get_first_x_property (icalcomponent* c, const char *name) +{ + icalerror_check_arg_rz( (c!=0),"component"); + + for( c->property_iterator = pvl_head(c->properties); + c->property_iterator != 0; + c->property_iterator = pvl_next(c->property_iterator)) { + + icalproperty *p = (icalproperty*) pvl_data(c->property_iterator); + + if (icalproperty_isa(p) == ICAL_X_PROPERTY && + !strcmp(icalproperty_get_x_name(p), name)) { + + return p; + } + } + return 0; +} + +icalproperty* +icalcomponent_get_next_x_property (icalcomponent* c, const char *name) +{ + icalerror_check_arg_rz( (c!=0),"component"); + + if (c->property_iterator == 0){ + return 0; + } + + for( c->property_iterator = pvl_next(c->property_iterator); + c->property_iterator != 0; + c->property_iterator = pvl_next(c->property_iterator)) { + + icalproperty *p = (icalproperty*) pvl_data(c->property_iterator); + + if (icalproperty_isa(p) == ICAL_X_PROPERTY && + !strcmp(icalproperty_get_x_name(p), name)) { + + return p; + } + } + + return 0; +} + + +icalproperty** +icalcomponent_get_properties (icalcomponent* component, icalproperty_kind kind); + + +void +icalcomponent_add_component (icalcomponent* parent, icalcomponent* child) +{ + icalerror_check_arg_rv( (parent!=0), "parent"); + icalerror_check_arg_rv( (child!=0), "child"); + + if (child->parent !=0) { + icalerror_set_errno(ICAL_USAGE_ERROR); + } + + child->parent = parent; + + pvl_push(parent->components,child); + + /* If the new component is a VTIMEZONE, add it to our array. */ + if (child->kind == ICAL_VTIMEZONE_COMPONENT) { + /* FIXME: Currently we are also creating this array when loading in + a builtin VTIMEZONE, when we don't need it. */ + if (!parent->timezones) + parent->timezones = icaltimezone_array_new (); + + icaltimezone_array_append_from_vtimezone (parent->timezones, child); + + /* Flag that we need to sort it before doing any binary searches. */ + parent->timezones_sorted = 0; + } +} + + +void +icalcomponent_remove_component (icalcomponent* parent, icalcomponent* child) +{ + pvl_elem itr, next_itr; + + icalerror_check_arg_rv( (parent!=0), "parent"); + icalerror_check_arg_rv( (child!=0), "child"); + + /* If the component is a VTIMEZONE, remove it from our array as well. */ + if (child->kind == ICAL_VTIMEZONE_COMPONENT) { + icaltimezone *zone; + int i, num_elements; + + num_elements = parent->timezones ? parent->timezones->num_elements : 0; + for (i = 0; i < num_elements; i++) { + zone = icalarray_element_at (parent->timezones, i); + if (icaltimezone_get_component (zone) == child) { + icaltimezone_free (zone, 0); + icalarray_remove_element_at (parent->timezones, i); + break; + } + } + } + + for( itr = pvl_head(parent->components); + itr != 0; + itr = next_itr) + { + next_itr = pvl_next(itr); + + if( pvl_data(itr) == (void*)child ){ + + if (parent->component_iterator == itr){ + /* Don't let the current iterator become invalid */ + + /* HACK. The semantics for this are troubling. */ + parent->component_iterator = + pvl_next(parent->component_iterator); + + } + pvl_remove( parent->components, itr); + child->parent = 0; + break; + } + } +} + + +int +icalcomponent_count_components (icalcomponent* component, + icalcomponent_kind kind) +{ + int count=0; + pvl_elem itr; + + icalerror_check_arg_rz( (component!=0), "component"); + + for( itr = pvl_head(component->components); + itr != 0; + itr = pvl_next(itr)) + { + if(kind == icalcomponent_isa((icalcomponent*)pvl_data(itr)) || + kind == ICAL_ANY_COMPONENT){ + count++; + } + } + + return count; +} + +icalcomponent* +icalcomponent_get_current_component(icalcomponent* component) +{ + icalerror_check_arg_rz( (component!=0),"component"); + + if (component->component_iterator == 0){ + return 0; + } + + return (icalcomponent*) pvl_data(component->component_iterator); +} + +icalcomponent* +icalcomponent_get_first_component (icalcomponent* c, + icalcomponent_kind kind) +{ + icalerror_check_arg_rz( (c!=0),"component"); + + for( c->component_iterator = pvl_head(c->components); + c->component_iterator != 0; + c->component_iterator = pvl_next(c->component_iterator)) { + + icalcomponent *p = (icalcomponent*) pvl_data(c->component_iterator); + + if (icalcomponent_isa(p) == kind || kind == ICAL_ANY_COMPONENT) { + + return p; + } + } + + return 0; +} + + +icalcomponent* +icalcomponent_get_next_component (icalcomponent* c, icalcomponent_kind kind) +{ + icalerror_check_arg_rz( (c!=0),"component"); + + if (c->component_iterator == 0){ + return 0; + } + + for( c->component_iterator = pvl_next(c->component_iterator); + c->component_iterator != 0; + c->component_iterator = pvl_next(c->component_iterator)) { + + icalcomponent *p = (icalcomponent*) pvl_data(c->component_iterator); + + if (icalcomponent_isa(p) == kind || kind == ICAL_ANY_COMPONENT) { + + return p; + } + } + + return 0; +} + +icalcomponent* icalcomponent_get_first_real_component(icalcomponent *c) +{ + icalcomponent *comp; + + for(comp = icalcomponent_get_first_component(c,ICAL_ANY_COMPONENT); + comp != 0; + comp = icalcomponent_get_next_component(c,ICAL_ANY_COMPONENT)){ + + icalcomponent_kind kind = icalcomponent_isa(comp); + + if(kind == ICAL_VEVENT_COMPONENT || + kind == ICAL_VTODO_COMPONENT || + kind == ICAL_VJOURNAL_COMPONENT || + kind == ICAL_VFREEBUSY_COMPONENT || + kind == ICAL_VQUERY_COMPONENT || + kind == ICAL_VREPLY_COMPONENT || + kind == ICAL_VAGENDA_COMPONENT){ + return comp; + } + } + return 0; +} + + +/** @brief Get the timespan covered by this component, in UTC + * (deprecated) + * + * see icalcomponent_foreach_recurrence() for a better way to + * extract spans from an component. + * + * This method can be called on either a VCALENDAR or any real + * component. If the VCALENDAR contains no real component, but + * contains a VTIMEZONE, we return that span instead. + * This might not be a desirable behavior; we keep it for now + * for backward compatibility, but it might be deprecated at a + * future time. + * + * FIXME this API needs to be clarified. DTEND is defined as the + * first available time after the end of this event, so the span + * should actually end 1 second before DTEND. + */ + +icaltime_span icalcomponent_get_span(icalcomponent* comp) +{ + icalcomponent *inner; + icalcomponent_kind kind; + icaltime_span span; + struct icaltimetype start, end; + + span.start = 0; + span.end = 0; + span.is_busy= 1; + + /* initial Error checking */ + if (comp == NULL) { + return span; + } + + /* FIXME this might go away */ + kind = icalcomponent_isa(comp); + if(kind == ICAL_VCALENDAR_COMPONENT){ + inner = icalcomponent_get_first_real_component(comp); + + /* Maybe there is a VTIMEZONE in there */ + if (inner == 0){ + inner = icalcomponent_get_first_component(comp, + ICAL_VTIMEZONE_COMPONENT); + } + + } else { + inner = comp; + } + + if (inner == 0){ + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + /*icalerror_warn("icalcomponent_get_span: no component specified, or empty VCALENDAR component");*/ + return span; + } + + kind = icalcomponent_isa(inner); + + if( !( kind == ICAL_VEVENT_COMPONENT || + kind == ICAL_VJOURNAL_COMPONENT || + kind == ICAL_VTODO_COMPONENT || + kind == ICAL_VFREEBUSY_COMPONENT )) { + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + /*icalerror_warn("icalcomponent_get_span: no component specified, or empty VCALENDAR component");*/ + return span; + + } + + /* Get to work. starting with DTSTART */ + start = icalcomponent_get_dtstart(comp); + if (icaltime_is_null_time(start)) { + return span; + } + span.start = icaltime_as_timet_with_zone(start, + icaltimezone_get_utc_timezone()); + + /* The end time could be specified as either a DTEND or a DURATION */ + /* icalcomponent_get_dtend takes care of these cases. */ + end = icalcomponent_get_dtend(comp); + if (icaltime_is_null_time(end)) { + if (!icaltime_is_date(start)) { + /* If dtstart is a DATE-TIME and there is no DTEND nor DURATION + it takes no time */ + span.start = 0; + return span; + } else { + end = start; + } + } + + span.end = icaltime_as_timet_with_zone(end, + icaltimezone_get_utc_timezone()); + if (icaltime_is_date(start)) { + /* Until the end of the day*/ + span.end += 60*60*24 - 1; + } + + return span; + +} + +/** + * Decide if this recurrance is acceptable + * + * @param comp A valid icalcomponent. + * @param dtstart The base dtstart value for this component. + * @param recurtime The time to test against. + * + * @return true if the recurrence value is excluded, false otherwise. + * + * This function decides if a specific recurrence value is + * excluded by EXRULE or EXDATE properties. + * + * It's not the most efficient code. You might get better performance + * if you assume that recurtime is always increasing for each + * call. Then you could: + * + * - sort the EXDATE values + * - save the state of each EXRULE iterator for the next call. + * + * In this case though you don't need to worry how you call this + * function. It will always return the correct result. + */ + +int icalproperty_recurrence_is_excluded(icalcomponent *comp, + struct icaltimetype *dtstart, + struct icaltimetype *recurtime) { + icalproperty *exdate, *exrule; + + if (comp == NULL || + dtstart == NULL || + recurtime == NULL || + icaltime_is_null_time(*recurtime)) + /* BAD DATA */ + return 1; + + /** first test against the exdate values **/ + for (exdate = icalcomponent_get_first_property(comp,ICAL_EXDATE_PROPERTY); + exdate != NULL; + exdate = icalcomponent_get_next_property(comp,ICAL_EXDATE_PROPERTY)) { + + struct icaltimetype exdatetime = icalproperty_get_exdate(exdate); + + if (icaltime_compare(*recurtime, exdatetime) == 0) { + /** MATCHED **/ + return 1; + } + } + + /** Now test against the EXRULEs **/ + for (exrule = icalcomponent_get_first_property(comp,ICAL_EXRULE_PROPERTY); + exdate != NULL; + exdate = icalcomponent_get_next_property(comp,ICAL_EXRULE_PROPERTY)) { + + struct icalrecurrencetype recur = icalproperty_get_exrule(exrule); + icalrecur_iterator *exrule_itr = icalrecur_iterator_new(recur, *dtstart); + struct icaltimetype exrule_time; + + while (1) { + int result; + exrule_time = icalrecur_iterator_next(exrule_itr); + + if (icaltime_is_null_time(exrule_time)) + break; + + result = icaltime_compare(*recurtime, exrule_time); + if (result == 0) { + icalrecur_iterator_free(exrule_itr); + return 1; /** MATCH **/ + } + if (result == 1) + break; /** exrule_time > recurtime **/ + } + + icalrecur_iterator_free(exrule_itr); + } + + return 0; /** no matches **/ +} + +/** + * @brief Return the busy status based on the TRANSP property. + * + * @param comp A valid icalcomponent. + * + * @return 1 if the event is a busy item, 0 if it is not. + */ + +static int icalcomponent_is_busy(icalcomponent *comp) { + icalproperty *transp; + enum icalproperty_status status; + int ret = 1; + + /** @todo check access control here, converting busy->free if the + permissions do not allow access... */ + + /* Is this a busy time? Check the TRANSP property */ + transp = icalcomponent_get_first_property(comp, ICAL_TRANSP_PROPERTY); + + if (transp) { + icalvalue *transp_val = icalproperty_get_value(transp); + + switch (icalvalue_get_transp(transp_val)) { + case ICAL_TRANSP_OPAQUE: + case ICAL_TRANSP_OPAQUENOCONFLICT: + case ICAL_TRANSP_NONE: + ret = 1; + break; + case ICAL_TRANSP_TRANSPARENT: + case ICAL_TRANSP_TRANSPARENTNOCONFLICT: + ret = 0; + break; + default: + ret = 0; + break; + } + } + status = icalcomponent_get_status(comp); + if (ret && status) { + switch (status) { + case ICAL_STATUS_CANCELLED: + case ICAL_STATUS_TENTATIVE: + ret = 0; + break; + default: + break; + } + } + return(ret); +} + + + + +/** + * @brief cycle through all recurrances of an event + * + * @param comp A valid VEVENT component + * @param start Ignore timespans before this + * @param end Ignore timespans after this + * @param callback Function called for each timespan within the range + * @param callback_data Pointer passed back to the callback function + * + * This function will call the specified callback function for once + * for the base value of DTSTART, and foreach recurring date/time + * value. + * + * It will filter out events that are specified as an EXDATE or an EXRULE. + * + * @todo We do not filter out duplicate RRULES/RDATES + * @todo We do not handle RDATEs with explicit periods + */ + +void icalcomponent_foreach_recurrence(icalcomponent* comp, + struct icaltimetype start, + struct icaltimetype end, + void (*callback)(icalcomponent *comp, + struct icaltime_span *span, + void *data), + void *callback_data) +{ + struct icaltimetype dtstart, dtend; + icaltime_span recurspan, basespan, limit_span; + time_t limit_start, limit_end; + int dtduration; + icalproperty *rrule, *rdate; + struct icaldurationtype dur; + pvl_elem property_iterator; /* for saving the iterator */ + + if (comp == NULL || callback == NULL) + return; + + dtstart = icalcomponent_get_dtstart(comp); + + if (icaltime_is_null_time(dtstart)) + return; + + + /* The end time could be specified as either a DTEND or a DURATION */ + /* icalcomponent_get_dtend takes care of these cases. */ + dtend = icalcomponent_get_dtend(comp); + + /* Now set up the base span for this item, corresponding to the + base DTSTART and DTEND */ + basespan = icaltime_span_new(dtstart, dtend, 1); + + basespan.is_busy = icalcomponent_is_busy(comp); + + + /** Calculate the ceiling and floor values.. **/ + limit_start = icaltime_as_timet_with_zone(start, icaltimezone_get_utc_timezone()); + if (!icaltime_is_null_time(end)) + limit_end = icaltime_as_timet_with_zone(end, icaltimezone_get_utc_timezone()); + else + limit_end = INT_MAX; /* max 32 bit time_t */ + + limit_span.start = limit_start; + limit_span.end = limit_end; + + + /* Do the callback for the initial DTSTART entry */ + + if (!icalproperty_recurrence_is_excluded(comp, &dtstart, &dtstart)) { + /** call callback action **/ + if (icaltime_span_overlaps(&basespan, &limit_span)) + (*callback) (comp, &basespan, callback_data); + } + + recurspan = basespan; + dtduration = basespan.end - basespan.start; + + /* Now cycle through the rrule entries */ + for (rrule = icalcomponent_get_first_property(comp,ICAL_RRULE_PROPERTY); + rrule != NULL; + rrule = icalcomponent_get_next_property(comp,ICAL_RRULE_PROPERTY)) { + + struct icalrecurrencetype recur = icalproperty_get_rrule(rrule); + icalrecur_iterator *rrule_itr = icalrecur_iterator_new(recur, dtstart); + struct icaltimetype rrule_time; + + while (1) { + rrule_time = icalrecur_iterator_next(rrule_itr); + + if (icaltime_is_null_time(rrule_time)) + break; + + if (!icaltime_compare(rrule_time, dtstart)) + continue; + + dur = icaltime_subtract(rrule_time, dtstart); + + recurspan.start = basespan.start + icaldurationtype_as_int(dur); + recurspan.end = recurspan.start + dtduration; + + /** save the iterator ICK! **/ + property_iterator = comp->property_iterator; + + if (!icalproperty_recurrence_is_excluded(comp, &dtstart, &rrule_time)) { + /** call callback action **/ + if (icaltime_span_overlaps(&recurspan, &limit_span)) + (*callback) (comp, &recurspan, callback_data); + } + comp->property_iterator = property_iterator; + } /* end of iteration over a specific RRULE */ + + icalrecur_iterator_free(rrule_itr); + } /* end of RRULE loop */ + + + /** Now process RDATE entries **/ + for (rdate = icalcomponent_get_first_property(comp,ICAL_RDATE_PROPERTY); + rdate != NULL; + rdate = icalcomponent_get_next_property(comp,ICAL_RDATE_PROPERTY)) { + + struct icaldatetimeperiodtype rdate_period = icalproperty_get_rdate(rdate); + + /** RDATES can specify raw datetimes, periods, or dates. + we only support raw datetimes for now.. + + @todo Add support for other types **/ + + if (icaltime_is_null_time(rdate_period.time)) + continue; + + dur = icaltime_subtract(rdate_period.time, dtstart); + + recurspan.start = basespan.start + icaldurationtype_as_int(dur); + recurspan.end = recurspan.start + dtduration; + + /** save the iterator ICK! **/ + property_iterator = comp->property_iterator; + + if (!icalproperty_recurrence_is_excluded(comp, &dtstart, &rdate_period.time)) { + /** call callback action **/ + (*callback) (comp, &recurspan, callback_data); + } + comp->property_iterator = property_iterator; + } +} + + + +int icalcomponent_check_restrictions(icalcomponent* comp){ + icalerror_check_arg_rz(comp!=0,"comp"); + return icalrestriction_check(comp); +} + +/** @brief returns the number of errors encountered parsing the data + * + * This function counts the number times the X-LIC-ERROR occurs + * in the data structure. + */ + +int icalcomponent_count_errors(icalcomponent* component) +{ + int errors = 0; + icalproperty *p; + icalcomponent *c; + pvl_elem itr; + + for( itr = pvl_head(component->properties); + itr != 0; + itr = pvl_next(itr)) + { + p = (icalproperty*)pvl_data(itr); + + if(icalproperty_isa(p) == ICAL_XLICERROR_PROPERTY) + { + errors++; + } + } + + + for( itr = pvl_head(component->components); + itr != 0; + itr = pvl_next(itr)) + { + c = (icalcomponent*)pvl_data(itr); + + errors += icalcomponent_count_errors(c); + + } + + return errors; +} + + +void icalcomponent_strip_errors(icalcomponent* component) +{ + icalproperty *p; + icalcomponent *c; + pvl_elem itr, next_itr; + + for( itr = pvl_head(component->properties); + itr != 0; + itr = next_itr) + { + p = (icalproperty*)pvl_data(itr); + next_itr = pvl_next(itr); + + if(icalproperty_isa(p) == ICAL_XLICERROR_PROPERTY) + { + icalcomponent_remove_property(component,p); + } + } + + for( itr = pvl_head(component->components); + itr != 0; + itr = pvl_next(itr)) + { + c = (icalcomponent*)pvl_data(itr); + icalcomponent_strip_errors(c); + } +} + +/* Hack. This will change the state of the iterators */ +void icalcomponent_convert_errors(icalcomponent* component) +{ + icalproperty *p, *next_p; + icalcomponent *c; + + for(p = icalcomponent_get_first_property(component,ICAL_ANY_PROPERTY); + p != 0; + p = next_p){ + + next_p = icalcomponent_get_next_property(component,ICAL_ANY_PROPERTY); + + if(icalproperty_isa(p) == ICAL_XLICERROR_PROPERTY) + { + struct icalreqstattype rst; + icalparameter *param = icalproperty_get_first_parameter + (p,ICAL_XLICERRORTYPE_PARAMETER); + + rst.code = ICAL_UNKNOWN_STATUS; + rst.desc = 0; + + switch(icalparameter_get_xlicerrortype(param)){ + + case ICAL_XLICERRORTYPE_PARAMETERNAMEPARSEERROR: { + rst.code = ICAL_3_2_INVPARAM_STATUS; + break; + } + case ICAL_XLICERRORTYPE_PARAMETERVALUEPARSEERROR: { + rst.code = ICAL_3_3_INVPARAMVAL_STATUS; + break; + } + case ICAL_XLICERRORTYPE_PROPERTYPARSEERROR: { + rst.code = ICAL_3_0_INVPROPNAME_STATUS; + break; + } + case ICAL_XLICERRORTYPE_VALUEPARSEERROR: { + rst.code = ICAL_3_1_INVPROPVAL_STATUS; + break; + } + case ICAL_XLICERRORTYPE_COMPONENTPARSEERROR: { + rst.code = ICAL_3_4_INVCOMP_STATUS; + break; + } + + default: { + break; + } + } + if (rst.code != ICAL_UNKNOWN_STATUS){ + + rst.debug = icalproperty_get_xlicerror(p); + icalcomponent_add_property(component, + icalproperty_new_requeststatus(rst)); + + icalcomponent_remove_property(component,p); + } + } + } + + for(c = icalcomponent_get_first_component(component,ICAL_ANY_COMPONENT); + c != 0; + c = icalcomponent_get_next_component(component,ICAL_ANY_COMPONENT)){ + + icalcomponent_convert_errors(c); + } +} + + +icalcomponent* icalcomponent_get_parent(icalcomponent* component) +{ + return component->parent; +} + +void icalcomponent_set_parent(icalcomponent* component, icalcomponent* parent) +{ + component->parent = parent; +} + +icalcompiter icalcompiter_null = {ICAL_NO_COMPONENT,0}; + + +struct icalcomponent_kind_map { + icalcomponent_kind kind; + char name[20]; +}; + + + +static struct icalcomponent_kind_map component_map[] = +{ + { ICAL_VEVENT_COMPONENT, "VEVENT" }, + { ICAL_VTODO_COMPONENT, "VTODO" }, + { ICAL_VJOURNAL_COMPONENT, "VJOURNAL" }, + { ICAL_VCALENDAR_COMPONENT, "VCALENDAR" }, + { ICAL_VAGENDA_COMPONENT, "VAGENDA" }, + { ICAL_VFREEBUSY_COMPONENT, "VFREEBUSY" }, + { ICAL_VTIMEZONE_COMPONENT, "VTIMEZONE" }, + { ICAL_VALARM_COMPONENT, "VALARM" }, + { ICAL_XSTANDARD_COMPONENT, "STANDARD" }, /*These are part of RFC2445 */ + { ICAL_XDAYLIGHT_COMPONENT, "DAYLIGHT" }, /*but are not really components*/ + { ICAL_X_COMPONENT, "X" }, + { ICAL_VSCHEDULE_COMPONENT, "SCHEDULE" }, + + /* CAP components */ + { ICAL_VCAR_COMPONENT, "VCAR" }, + { ICAL_VCOMMAND_COMPONENT, "VCOMMAND" }, + { ICAL_VQUERY_COMPONENT, "VQUERY" }, + { ICAL_VREPLY_COMPONENT, "VREPLY" }, + + /* libical private components */ + { ICAL_XLICINVALID_COMPONENT, "X-LIC-UNKNOWN" }, + { ICAL_XLICMIMEPART_COMPONENT, "X-LIC-MIME-PART" }, + { ICAL_ANY_COMPONENT, "ANY" }, + { ICAL_XROOT_COMPONENT, "XROOT" }, + + /* End of list */ + { ICAL_NO_COMPONENT, "" }, +}; + + +int icalcomponent_kind_is_valid(const icalcomponent_kind kind) +{ + int i = 0; + do { + if (component_map[i].kind == kind) + return 1; + } while (component_map[i++].kind != ICAL_NO_COMPONENT); + + return 0; +} + +const char* icalcomponent_kind_to_string(icalcomponent_kind kind) +{ + int i; + + for (i=0; component_map[i].kind != ICAL_NO_COMPONENT; i++) { + if (component_map[i].kind == kind) { + return component_map[i].name; + } + } + + return 0; + +} + +icalcomponent_kind icalcomponent_string_to_kind(const char* string) +{ + int i; + + if (string ==0 ) { + return ICAL_NO_COMPONENT; + } + + for (i=0; component_map[i].kind != ICAL_NO_COMPONENT; i++) { + if (strcmp(component_map[i].name, string) == 0) { + return component_map[i].kind; + } + } + + return ICAL_NO_COMPONENT; +} + + + +icalcompiter +icalcomponent_begin_component(icalcomponent* component,icalcomponent_kind kind) +{ + icalcompiter itr; + pvl_elem i; + + itr.kind = kind; + itr.iter = NULL; + + icalerror_check_arg_re(component!=0,"component",icalcompiter_null); + + for( i = pvl_head(component->components); i != 0; i = pvl_next(i)) { + + icalcomponent *c = (icalcomponent*) pvl_data(i); + + if (icalcomponent_isa(c) == kind || kind == ICAL_ANY_COMPONENT) { + + itr.iter = i; + + return itr; + } + } + + return icalcompiter_null; +} + +icalcompiter +icalcomponent_end_component(icalcomponent* component,icalcomponent_kind kind) +{ + icalcompiter itr; + pvl_elem i; + + itr.kind = kind; + + icalerror_check_arg_re(component!=0,"component",icalcompiter_null); + + for( i = pvl_tail(component->components); i != 0; i = pvl_prior(i)) { + + icalcomponent *c = (icalcomponent*) pvl_data(i); + + if (icalcomponent_isa(c) == kind || kind == ICAL_ANY_COMPONENT) { + + itr.iter = pvl_next(i); + + return itr; + } + } + + return icalcompiter_null;; +} + + +icalcomponent* icalcompiter_next(icalcompiter* i) +{ + if (i->iter == 0){ + return 0; + } + + icalerror_check_arg_rz( (i!=0),"i"); + + for( i->iter = pvl_next(i->iter); + i->iter != 0; + i->iter = pvl_next(i->iter)) { + + icalcomponent *c = (icalcomponent*) pvl_data(i->iter); + + if (icalcomponent_isa(c) == i->kind + || i->kind == ICAL_ANY_COMPONENT) { + + return icalcompiter_deref(i);; + } + } + + return 0; + +} + +icalcomponent* icalcompiter_prior(icalcompiter* i) +{ + if (i->iter == 0){ + return 0; + } + + for( i->iter = pvl_prior(i->iter); + i->iter != 0; + i->iter = pvl_prior(i->iter)) { + + icalcomponent *c = (icalcomponent*) pvl_data(i->iter); + + if (icalcomponent_isa(c) == i->kind + || i->kind == ICAL_ANY_COMPONENT) { + + return icalcompiter_deref(i);; + } + } + + return 0; + +} +icalcomponent* icalcompiter_deref(icalcompiter* i) +{ + if(i->iter ==0){ + return 0; + } + + return pvl_data(i->iter); +} + +icalcomponent* icalcomponent_get_inner(icalcomponent* comp) +{ + if (icalcomponent_isa(comp) == ICAL_VCALENDAR_COMPONENT){ + return icalcomponent_get_first_real_component(comp); + } else { + return comp; + } +} + +/** @brief sets the METHOD property to the given method + */ + +void icalcomponent_set_method(icalcomponent* comp, icalproperty_method method) +{ + icalproperty *prop + = icalcomponent_get_first_property(comp, ICAL_METHOD_PROPERTY); + + + if (prop == 0){ + prop = icalproperty_new_method(method); + icalcomponent_add_property(comp, prop); + } + + icalproperty_set_method(prop,method); + +} + +/** @brief returns the METHOD property + */ + +icalproperty_method icalcomponent_get_method(icalcomponent* comp) +{ + icalproperty *prop + = icalcomponent_get_first_property(comp,ICAL_METHOD_PROPERTY); + + if (prop == 0){ + return ICAL_METHOD_NONE; + } + + return icalproperty_get_method(prop); +} + +#define ICALSETUPSET(p_kind) \ + icalcomponent *inner; \ + icalproperty *prop; \ + icalerror_check_arg_rv(comp!=0,"comp");\ + inner = icalcomponent_get_inner(comp); \ + if(inner == 0){\ + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR);\ + return;\ + }\ + prop = icalcomponent_get_first_property(inner, p_kind); + + +/** @brief Set DTSTART property to given icaltime + * + * This method respects the icaltime type (DATE vs DATE-TIME) and + * timezone (or lack thereof). + */ +void icalcomponent_set_dtstart(icalcomponent* comp, struct icaltimetype v) +{ + char *tzid; + ICALSETUPSET(ICAL_DTSTART_PROPERTY); + + if (prop == 0){ + prop = icalproperty_new_dtstart(v); + icalcomponent_add_property(inner, prop); + } else { + icalproperty_remove_parameter_by_kind(prop, ICAL_TZID_PARAMETER); + } + + icalproperty_set_dtstart(prop,v); + + if ((tzid = icaltime_get_tzid(v)) != NULL && !icaltime_is_utc(v)) { + icalproperty_add_parameter(prop, icalparameter_new_tzid(tzid)); + } +} + +/** @brief Get a DATE or DATE-TIME property as an icaltime + * + * If the property is a DATE-TIME with a timezone parameter and a + * corresponding VTIMEZONE is present in the component, the + * returned component will already be in the correct timezone; + * otherwise the caller is responsible for converting it. + * + * FIXME this is useless until we can flag the failure + */ +static struct icaltimetype +icalcomponent_get_datetime(icalcomponent *comp, icalproperty *prop) { + + icalcomponent *c; + icalparameter *param; + struct icaltimetype ret; + + ret = icalvalue_get_datetime(icalproperty_get_value(prop)); + + if ((param = icalproperty_get_first_parameter(prop, ICAL_TZID_PARAMETER)) + != NULL) { + const char *tzid = icalparameter_get_tzid(param); + icaltimezone *tz = NULL; + + for (c = comp; c != NULL; c = icalcomponent_get_parent(c)) { + tz = icalcomponent_get_timezone(c, tzid); + if (tz != NULL) + break; + } + + if (tz == NULL) + tz = icaltimezone_get_builtin_timezone(tzid); + + if (tz != NULL) + ret = icaltime_set_timezone(&ret, tz); + } + + return ret; +} + +/** @brief Get DTSTART property as an icaltime + * + * If DTSTART is a DATE-TIME with a timezone parameter and a + * corresponding VTIMEZONE is present in the component, the + * returned component will already be in the correct timezone; + * otherwise the caller is responsible for converting it. + * + * FIXME this is useless until we can flag the failure + */ +struct icaltimetype icalcomponent_get_dtstart(icalcomponent* comp) +{ + icalcomponent *inner = icalcomponent_get_inner(comp); + icalproperty *prop; + + prop = icalcomponent_get_first_property(inner,ICAL_DTSTART_PROPERTY); + if (prop == 0){ + return icaltime_null_time(); + } + + return icalcomponent_get_datetime(comp, prop); +} + +/** @brief Get DTEND property as an icaltime + * + * If a DTEND property is not present but a DURATION is, we use + * that to determine the proper end. + * + * If DTSTART is a DATE-TIME with a timezone parameter and a + * corresponding VTIMEZONE is present in the component, the + * returned component will already be in the correct timezone; + * otherwise the caller is responsible for converting it. + * + * FIXME this is useless until we can flag the failure + */ +struct icaltimetype icalcomponent_get_dtend(icalcomponent* comp) +{ + icalcomponent *inner = icalcomponent_get_inner(comp); + icalproperty *end_prop + = icalcomponent_get_first_property(inner,ICAL_DTEND_PROPERTY); + icalproperty *dur_prop + = icalcomponent_get_first_property(inner, ICAL_DURATION_PROPERTY); + struct icaltimetype ret = icaltime_null_time(); + + if ( end_prop != 0) { + ret = icalcomponent_get_datetime(comp, end_prop); + } else if ( dur_prop != 0) { + + struct icaltimetype start = + icalcomponent_get_dtstart(inner); + struct icaldurationtype duration = + icalproperty_get_duration(dur_prop); + + struct icaltimetype end = icaltime_add(start,duration); + + ret = end; + } + + return ret; +} + +/** @brief Set DTEND property to given icaltime + * + * This method respects the icaltime type (DATE vs DATE-TIME) and + * timezone (or lack thereof). + * + * This also checks that a DURATION property isn't already there, + * and returns an error if it is. It's the caller's responsibility + * to remove it. + */ +void icalcomponent_set_dtend(icalcomponent* comp, struct icaltimetype v) +{ + char *tzid; + ICALSETUPSET(ICAL_DTEND_PROPERTY); + + if (icalcomponent_get_first_property(inner,ICAL_DURATION_PROPERTY) + != NULL) { + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + return; + } + + if (prop == 0) { + prop = icalproperty_new_dtend(v); + icalcomponent_add_property(inner, prop); + } else { + icalproperty_remove_parameter_by_kind(prop, ICAL_TZID_PARAMETER); + } + + icalproperty_set_dtend(prop,v); + + if ((tzid = icaltime_get_tzid(v)) != NULL && !icaltime_is_utc(v)) { + icalproperty_add_parameter(prop, icalparameter_new_tzid(tzid)); + } +} + +/** @brief Set DURATION property to given icalduration + * + * This method respects the icaltime type (DATE vs DATE-TIME) and + * timezone (or lack thereof). + * + * This also checks that a DTEND property isn't already there, + * and returns an error if it is. It's the caller's responsibility + * to remove it. + */ +void icalcomponent_set_duration(icalcomponent* comp, + struct icaldurationtype v) +{ + ICALSETUPSET(ICAL_DURATION_PROPERTY); + + if (icalcomponent_get_first_property(inner,ICAL_DTEND_PROPERTY) != NULL) { + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + return; + } + + if (prop == 0) { + prop = icalproperty_new_duration(v); + icalcomponent_add_property(inner, prop); + } else { + icalproperty_set_duration(prop,v); + } +} + +/** @brief Get DURATION property as an icalduration + * + * If a DURATION property is not present but a DTEND is, we use + * that to determine the proper end. + */ +struct icaldurationtype icalcomponent_get_duration(icalcomponent* comp) +{ + icalcomponent *inner = icalcomponent_get_inner(comp); + + icalproperty *end_prop + = icalcomponent_get_first_property(inner,ICAL_DTEND_PROPERTY); + + icalproperty *dur_prop + = icalcomponent_get_first_property(inner,ICAL_DURATION_PROPERTY); + + struct icaldurationtype ret = icaldurationtype_null_duration(); + + if ( dur_prop != 0 && end_prop == 0) { + ret = icalproperty_get_duration(dur_prop); + + } else if ( end_prop != 0 && dur_prop == 0) { + /** + * FIXME + * We assume DTSTART and DTEND are not in different time zones. + * Does the standard actually guarantee this? + */ + struct icaltimetype start = + icalcomponent_get_dtstart(inner); + struct icaltimetype end = + icalcomponent_get_dtend(inner); + + ret = icaltime_subtract(end, start); + } else { + /* Error, both duration and dtend have been specified */ + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + } + return ret; +} + +void icalcomponent_set_dtstamp(icalcomponent* comp, struct icaltimetype v) +{ + + ICALSETUPSET(ICAL_DTSTAMP_PROPERTY); + + if (prop == 0){ + prop = icalproperty_new_dtstamp(v); + icalcomponent_add_property(inner, prop); + } + + icalproperty_set_dtstamp(prop,v); + +} + + +struct icaltimetype icalcomponent_get_dtstamp(icalcomponent* comp) +{ + icalcomponent *inner = icalcomponent_get_inner(comp); + icalproperty *prop + = icalcomponent_get_first_property(inner,ICAL_DTSTAMP_PROPERTY); + + if (prop == 0){ + return icaltime_null_time(); + } + + return icalproperty_get_dtstamp(prop); +} + + +void icalcomponent_set_summary(icalcomponent* comp, const char* v) +{ + ICALSETUPSET(ICAL_SUMMARY_PROPERTY) + + if (prop == 0){ + prop = icalproperty_new_summary(v); + icalcomponent_add_property(inner, prop); + } + + icalproperty_set_summary(prop,v); +} + + +const char* icalcomponent_get_summary(icalcomponent* comp) +{ + icalcomponent *inner; + icalproperty *prop; + icalerror_check_arg_rz(comp!=0,"comp"); + + inner = icalcomponent_get_inner(comp); + + if(inner == 0){ + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + return 0; + } + + prop= icalcomponent_get_first_property(inner,ICAL_SUMMARY_PROPERTY); + + if (prop == 0){ + return 0; + } + + return icalproperty_get_summary(prop); + +} + +void icalcomponent_set_comment(icalcomponent* comp, const char* v) +{ + ICALSETUPSET(ICAL_COMMENT_PROPERTY); + + if (prop == 0){ + prop = icalproperty_new_comment(v); + icalcomponent_add_property(inner, prop); + } + + icalproperty_set_summary(prop,v); + +} +const char* icalcomponent_get_comment(icalcomponent* comp){ + icalcomponent *inner; + icalproperty *prop; + icalerror_check_arg_rz(comp!=0,"comp"); + + inner = icalcomponent_get_inner(comp); + + if(inner == 0){ + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + return 0; + } + + prop= icalcomponent_get_first_property(inner,ICAL_COMMENT_PROPERTY); + + if (prop == 0){ + return 0; + } + + return icalproperty_get_comment(prop); +} + +void icalcomponent_set_uid(icalcomponent* comp, const char* v) +{ + ICALSETUPSET(ICAL_UID_PROPERTY); + + if (prop == 0){ + prop = icalproperty_new_uid(v); + icalcomponent_add_property(inner, prop); + } + + icalproperty_set_summary(prop,v); + +} +const char* icalcomponent_get_uid(icalcomponent* comp){ + icalcomponent *inner; + icalproperty *prop; + icalerror_check_arg_rz(comp!=0,"comp"); + + inner = icalcomponent_get_inner(comp); + + if(inner == 0){ + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + return 0; + } + + prop= icalcomponent_get_first_property(inner,ICAL_UID_PROPERTY); + + if (prop == 0){ + return 0; + } + + return icalproperty_get_uid(prop); +} + +void icalcomponent_set_recurrenceid(icalcomponent* comp, struct icaltimetype v) +{ + ICALSETUPSET(ICAL_RECURRENCEID_PROPERTY); + + if (prop == 0){ + prop = icalproperty_new_recurrenceid(v); + icalcomponent_add_property(inner, prop); + } + + icalproperty_set_recurrenceid(prop,v); +} +struct icaltimetype icalcomponent_get_recurrenceid(icalcomponent* comp) +{ + icalcomponent *inner; + icalproperty *prop; + if (comp == 0) { + icalerror_set_errno(ICAL_BADARG_ERROR); + return icaltime_null_time(); + } + + inner = icalcomponent_get_inner(comp); + + if(inner == 0){ + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + return icaltime_null_time(); + } + + prop= icalcomponent_get_first_property(inner, ICAL_RECURRENCEID_PROPERTY); + + if (prop == 0){ + return icaltime_null_time(); + } + + return icalproperty_get_recurrenceid(prop); +} + +void icalcomponent_set_description(icalcomponent* comp, const char* v) +{ + ICALSETUPSET(ICAL_DESCRIPTION_PROPERTY); + + if (prop == 0){ + prop = icalproperty_new_description(v); + icalcomponent_add_property(inner, prop); + } + + icalproperty_set_description(prop,v); +} +const char* icalcomponent_get_description(icalcomponent* comp) +{ + icalcomponent *inner; + icalproperty *prop; + icalerror_check_arg_rz(comp!=0,"comp"); + + inner = icalcomponent_get_inner(comp); + + if(inner == 0){ + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + return 0; + } + + prop= icalcomponent_get_first_property(inner,ICAL_DESCRIPTION_PROPERTY); + + if (prop == 0){ + return 0; + } + + return icalproperty_get_description(prop); +} + +void icalcomponent_set_location(icalcomponent* comp, const char* v) +{ + ICALSETUPSET(ICAL_LOCATION_PROPERTY) + + if (prop == 0){ + prop = icalproperty_new_location(v); + icalcomponent_add_property(inner, prop); + } + + icalproperty_set_location(prop,v); +} +const char* icalcomponent_get_location(icalcomponent* comp) +{ + icalcomponent *inner; + icalproperty *prop; + icalerror_check_arg_rz(comp!=0,"comp"); + + inner = icalcomponent_get_inner(comp); + + if(inner == 0){ + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + return 0; + } + + prop= icalcomponent_get_first_property(inner,ICAL_LOCATION_PROPERTY); + + if (prop == 0){ + return 0; + } + + return icalproperty_get_location(prop); +} + +void icalcomponent_set_sequence(icalcomponent* comp, int v) +{ + ICALSETUPSET(ICAL_SEQUENCE_PROPERTY); + + if (prop == 0){ + prop = icalproperty_new_sequence(v); + icalcomponent_add_property(inner, prop); + } + + icalproperty_set_sequence(prop,v); + +} +int icalcomponent_get_sequence(icalcomponent* comp){ + icalcomponent *inner; + icalproperty *prop; + icalerror_check_arg_rz(comp!=0,"comp"); + + inner = icalcomponent_get_inner(comp); + + if(inner == 0){ + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + return 0; + } + + prop= icalcomponent_get_first_property(inner,ICAL_SEQUENCE_PROPERTY); + + if (prop == 0){ + return 0; + } + + return icalproperty_get_sequence(prop); +} + + +void icalcomponent_set_status(icalcomponent* comp, enum icalproperty_status v) +{ + ICALSETUPSET(ICAL_STATUS_PROPERTY); + + if (prop == 0){ + prop = icalproperty_new_status(v); + icalcomponent_add_property(inner, prop); + } + + icalproperty_set_status(prop,v); + +} +enum icalproperty_status icalcomponent_get_status(icalcomponent* comp){ + icalcomponent *inner; + icalproperty *prop; + icalerror_check_arg_rz(comp!=0,"comp"); + + inner = icalcomponent_get_inner(comp); + + if(inner == 0){ + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + return 0; + } + + prop= icalcomponent_get_first_property(inner,ICAL_STATUS_PROPERTY); + + if (prop == 0){ + return 0; + } + + return icalproperty_get_status(prop); +} + +icalcomponent* icalcomponent_new_vcalendar() +{ + return icalcomponent_new(ICAL_VCALENDAR_COMPONENT); +} +icalcomponent* icalcomponent_new_vevent() +{ + return icalcomponent_new(ICAL_VEVENT_COMPONENT); +} +icalcomponent* icalcomponent_new_vtodo() +{ + return icalcomponent_new(ICAL_VTODO_COMPONENT); +} +icalcomponent* icalcomponent_new_vjournal() +{ + return icalcomponent_new(ICAL_VJOURNAL_COMPONENT); +} +icalcomponent* icalcomponent_new_valarm() +{ + return icalcomponent_new(ICAL_VALARM_COMPONENT); +} +icalcomponent* icalcomponent_new_vfreebusy() +{ + return icalcomponent_new(ICAL_VFREEBUSY_COMPONENT); +} +icalcomponent* icalcomponent_new_vtimezone() +{ + return icalcomponent_new(ICAL_VTIMEZONE_COMPONENT); +} +icalcomponent* icalcomponent_new_xstandard() +{ + return icalcomponent_new(ICAL_XSTANDARD_COMPONENT); +} +icalcomponent* icalcomponent_new_xdaylight() +{ + return icalcomponent_new(ICAL_XDAYLIGHT_COMPONENT); +} +icalcomponent* icalcomponent_new_vagenda() +{ + return icalcomponent_new(ICAL_VAGENDA_COMPONENT); +} +icalcomponent* icalcomponent_new_vquery() +{ + return icalcomponent_new(ICAL_VQUERY_COMPONENT); +} +icalcomponent* icalcomponent_new_vreply() +{ + return icalcomponent_new(ICAL_VREPLY_COMPONENT); +} + +/* + * Timezone stuff. + */ + + +/** + * This takes 2 VCALENDAR components and merges the second one into the first, + * resolving any problems with conflicting TZIDs. comp_to_merge will no + * longer exist after calling this function. + */ +void icalcomponent_merge_component(icalcomponent* comp, + icalcomponent* comp_to_merge) +{ + icalcomponent *subcomp, *next_subcomp; + icalarray *tzids_to_rename; + int i; + + /* Check that both components are VCALENDAR components. */ + assert (icalcomponent_isa(comp) == ICAL_VCALENDAR_COMPONENT); + assert (icalcomponent_isa(comp_to_merge) == ICAL_VCALENDAR_COMPONENT); + + /* Step through each subcomponent of comp_to_merge, looking for VTIMEZONEs. + For each VTIMEZONE found, check if we need to add it to comp and if we + need to rename it and all TZID references to it. */ + tzids_to_rename = icalarray_new (sizeof (char*), 16); + subcomp = icalcomponent_get_first_component (comp_to_merge, + ICAL_VTIMEZONE_COMPONENT); + while (subcomp) { + next_subcomp = icalcomponent_get_next_component (comp_to_merge, + ICAL_VTIMEZONE_COMPONENT); + /* This will add the VTIMEZONE to comp, if necessary, and also update + the array of TZIDs we need to rename. */ + icalcomponent_merge_vtimezone (comp, subcomp, tzids_to_rename); + /* FIXME: Handle possible NEWFAILED error. */ + + subcomp = next_subcomp; + } + + /* If we need to do any renaming of TZIDs, do it now. */ + if (tzids_to_rename->num_elements != 0) { + icalcomponent_rename_tzids (comp_to_merge, tzids_to_rename); + + /* Now free the tzids_to_rename array. */ + for (i = 0; i < tzids_to_rename->num_elements; i++) { + free (icalarray_element_at (tzids_to_rename, i)); + } + icalarray_free (tzids_to_rename); + } + + /* Now move all the components from comp_to_merge to comp, excluding + VTIMEZONE components. */ + subcomp = icalcomponent_get_first_component (comp_to_merge, + ICAL_ANY_COMPONENT); + while (subcomp) { + next_subcomp = icalcomponent_get_next_component (comp_to_merge, + ICAL_ANY_COMPONENT); + if (icalcomponent_isa(subcomp) != ICAL_VTIMEZONE_COMPONENT) { + icalcomponent_remove_component (comp_to_merge, subcomp); + icalcomponent_add_component (comp, subcomp); + } + subcomp = next_subcomp; + } + + /* Free comp_to_merge. We have moved most of the subcomponents over to + comp now. */ + icalcomponent_free (comp_to_merge); +} + + +static void icalcomponent_merge_vtimezone (icalcomponent *comp, + icalcomponent *vtimezone, + icalarray *tzids_to_rename) +{ + icalproperty *tzid_prop; + const char *tzid; + char *tzid_copy; + icaltimezone *existing_vtimezone; + + /* Get the TZID of the VTIMEZONE. */ + tzid_prop = icalcomponent_get_first_property (vtimezone, ICAL_TZID_PROPERTY); + if (!tzid_prop) + return; + + tzid = icalproperty_get_tzid (tzid_prop); + if (!tzid) + return; + + /* See if there is already a VTIMEZONE in comp with the same TZID. */ + existing_vtimezone = icalcomponent_get_timezone (comp, tzid); + + /* If there is no existing VTIMEZONE with the same TZID, we can just move + the VTIMEZONE to comp and return. */ + if (!existing_vtimezone) { + icalcomponent_remove_component (icalcomponent_get_parent (vtimezone), + vtimezone); + icalcomponent_add_component (comp, vtimezone); + return; + } + + /* If the TZID has a '/' prefix, then we don't have to worry about the + clashing TZIDs, as they are supposed to be exactly the same VTIMEZONE. */ + if (tzid[0] == '/') + return; + + /* Now we have two VTIMEZONEs with the same TZID (which isn't a globally + unique one), so we compare the VTIMEZONE components to see if they are + the same. If they are, we don't need to do anything. We make a copy of + the tzid, since the parameter may get modified in these calls. */ + tzid_copy = strdup (tzid); + if (!tzid_copy) { + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + return; + } + + if (!icalcomponent_compare_vtimezones (comp, vtimezone)) { + /* FIXME: Handle possible NEWFAILED error. */ + + /* Now we have two different VTIMEZONEs with the same TZID. */ + icalcomponent_handle_conflicting_vtimezones (comp, vtimezone, tzid_prop, + tzid_copy, tzids_to_rename); + } + free (tzid_copy); +} + + +static void +icalcomponent_handle_conflicting_vtimezones (icalcomponent *comp, + icalcomponent *vtimezone, + icalproperty *tzid_prop, + const char *tzid, + icalarray *tzids_to_rename) +{ + int i, suffix, max_suffix = 0, num_elements; + unsigned int tzid_len; + char *tzid_copy, *new_tzid, suffix_buf[32]; + + /* Find the length of the TZID without any trailing digits. */ + tzid_len = icalcomponent_get_tzid_prefix_len (tzid); + + /* Step through each of the VTIMEZONEs in comp. We may already have the + clashing VTIMEZONE in the calendar, but it may have been renamed + (i.e. a unique number added on the end of the TZID, e.g. 'London2'). + So we compare the new VTIMEZONE with any VTIMEZONEs that have the + same prefix (e.g. 'London'). If it matches any of those, we have to + rename the TZIDs to that TZID, else we rename to a new TZID, using + the biggest numeric suffix found + 1. */ + num_elements = comp->timezones ? comp->timezones->num_elements : 0; + for (i = 0; i < num_elements; i++) { + icaltimezone *zone; + char *existing_tzid, *existing_tzid_copy; + unsigned int existing_tzid_len; + + zone = icalarray_element_at (comp->timezones, i); + existing_tzid = icaltimezone_get_tzid (zone); + + /* Find the length of the TZID without any trailing digits. */ + existing_tzid_len = icalcomponent_get_tzid_prefix_len (existing_tzid); + + /* Check if we have the same prefix. */ + if (tzid_len == existing_tzid_len + && !strncmp (tzid, existing_tzid, tzid_len)) { + /* Compare the VTIMEZONEs. */ + if (icalcomponent_compare_vtimezones (icaltimezone_get_component (zone), + vtimezone)) { + /* The VTIMEZONEs match, so we can use the existing VTIMEZONE. But + we have to rename TZIDs to this TZID. */ + tzid_copy = strdup (tzid); + existing_tzid_copy = strdup (existing_tzid); + if (!tzid_copy || !existing_tzid_copy) { + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + } else { + icalarray_append (tzids_to_rename, tzid_copy); + icalarray_append (tzids_to_rename, existing_tzid_copy); + } + return; + } else { + /* FIXME: Handle possible NEWFAILED error. */ + + /* Convert the suffix to an integer and remember the maximum numeric + suffix found. */ + suffix = atoi (existing_tzid + existing_tzid_len); + if (max_suffix < suffix) + max_suffix = suffix; + } + } + } + + /* We didn't find a VTIMEZONE that matched, so we have to rename the TZID, + using the maximum numerical suffix found + 1. */ + tzid_copy = strdup (tzid); + sprintf (suffix_buf, "%i", max_suffix + 1); + new_tzid = malloc (tzid_len + strlen (suffix_buf) + 1); + if (!new_tzid || !tzid_copy) { + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + return; + } + + strncpy (new_tzid, tzid, tzid_len); + strcpy (new_tzid + tzid_len, suffix_buf); + icalarray_append (tzids_to_rename, tzid_copy); + icalarray_append (tzids_to_rename, new_tzid); +} + + +/* Returns the length of the TZID, without any trailing digits. */ +static unsigned int icalcomponent_get_tzid_prefix_len (const char *tzid) +{ + int len; + const char *p; + + len = strlen (tzid); + p = tzid + len - 1; + while (len > 0 && *p >= '0' && *p <= '9') { + p--; + len--; + } + + return len; +} + + +/** + * Renames all references to the given TZIDs to a new name. rename_table + * contains pairs of strings - a current TZID, and the new TZID to rename it + * to. + */ +static void icalcomponent_rename_tzids(icalcomponent* comp, + icalarray* rename_table) +{ + icalcomponent_foreach_tzid (comp, icalcomponent_rename_tzids_callback, + rename_table); +} + + +static void icalcomponent_rename_tzids_callback(icalparameter *param, void *data) +{ + icalarray *rename_table = data; + const char *tzid; + int i; + + tzid = icalparameter_get_tzid (param); + if (!tzid) + return; + + /* Step through the rename table to see if the current TZID matches + any of the ones we want to rename. */ + for (i = 0; i < rename_table->num_elements - 1; i += 2) { + if (!strcmp (tzid, icalarray_element_at (rename_table, i))) { + icalparameter_set_tzid (param, icalarray_element_at (rename_table, i + 1)); + break; + } + } +} + + +/** + * Calls the given function for each TZID parameter found in the component. + */ +void icalcomponent_foreach_tzid(icalcomponent* comp, + void (*callback)(icalparameter *param, void *data), + void *callback_data) +{ + icalproperty *prop; + icalproperty_kind kind; + icalparameter *param; + icalcomponent *subcomp; + + /* First look for any TZID parameters used in this component itself. */ + prop = icalcomponent_get_first_property (comp, ICAL_ANY_PROPERTY); + while (prop) { + kind = icalproperty_isa (prop); + + /* These are the only properties that can have a TZID. Note that + COMPLETED, CREATED, DTSTAMP & LASTMODIFIED must be in UTC. */ + if (kind == ICAL_DTSTART_PROPERTY || kind == ICAL_DTEND_PROPERTY + || kind == ICAL_DUE_PROPERTY || kind == ICAL_EXDATE_PROPERTY + || kind == ICAL_RDATE_PROPERTY) { + param = icalproperty_get_first_parameter (prop, ICAL_TZID_PARAMETER); + if (param) + (*callback) (param, callback_data); + } + + prop = icalcomponent_get_next_property (comp, ICAL_ANY_PROPERTY); + } + + /* Now recursively check child components. */ + subcomp = icalcomponent_get_first_component (comp, ICAL_ANY_COMPONENT); + while (subcomp) { + icalcomponent_foreach_tzid (subcomp, callback, callback_data); + subcomp = icalcomponent_get_next_component (comp, ICAL_ANY_COMPONENT); + } +} + + + +/** + * Returns the icaltimezone from the component corresponding to the given + * TZID, or NULL if the component does not have a corresponding VTIMEZONE. + */ +icaltimezone* icalcomponent_get_timezone(icalcomponent* comp, const char *tzid) +{ + icaltimezone *zone; + int lower, upper, middle, cmp; + char *zone_tzid; + + if (!comp->timezones) + return NULL; + + /* Sort the array if necessary (by the TZID string). */ + if (!comp->timezones_sorted) { + icalarray_sort (comp->timezones, icalcomponent_compare_timezone_fn); + comp->timezones_sorted = 1; + } + + /* Do a simple binary search. */ + lower = middle = 0; + upper = comp->timezones->num_elements; + + while (lower < upper) { + middle = (lower + upper) >> 1; + zone = icalarray_element_at (comp->timezones, middle); + zone_tzid = icaltimezone_get_tzid (zone); + cmp = strcmp (tzid, zone_tzid); + if (cmp == 0) + return zone; + else if (cmp < 0) + upper = middle; + else + lower = middle + 1; + } + + return NULL; +} + + +/** + * A function to compare 2 icaltimezone elements, used for qsort(). + */ +static int icalcomponent_compare_timezone_fn (const void *elem1, + const void *elem2) +{ + icaltimezone *zone1, *zone2; + const char *zone1_tzid, *zone2_tzid; + + zone1 = (icaltimezone*) elem1; + zone2 = (icaltimezone*) elem2; + + zone1_tzid = icaltimezone_get_tzid (zone1); + zone2_tzid = icaltimezone_get_tzid (zone2); + + return strcmp (zone1_tzid, zone2_tzid); +} + + +/** + * Compares 2 VTIMEZONE components to see if they match, ignoring their TZIDs. + * It returns 1 if they match, 0 if they don't, or -1 on error. + */ +static int icalcomponent_compare_vtimezones (icalcomponent *vtimezone1, + icalcomponent *vtimezone2) +{ + icalproperty *prop1, *prop2; + const char *tzid1, *tzid2; + char *tzid2_copy, *string1, *string2; + int cmp; + + /* Get the TZID property of the first VTIMEZONE. */ + prop1 = icalcomponent_get_first_property (vtimezone1, ICAL_TZID_PROPERTY); + if (!prop1) + return -1; + + tzid1 = icalproperty_get_tzid (prop1); + if (!tzid1) + return -1; + + /* Get the TZID property of the second VTIMEZONE. */ + prop2 = icalcomponent_get_first_property (vtimezone2, ICAL_TZID_PROPERTY); + if (!prop2) + return -1; + + tzid2 = icalproperty_get_tzid (prop2); + if (!tzid2) + return -1; + + /* Copy the second TZID, and set the property to the same as the first + TZID, since we don't care if these match of not. */ + tzid2_copy = strdup (tzid2); + if (!tzid2_copy) { + icalerror_set_errno (ICAL_NEWFAILED_ERROR); + return 0; + } + + icalproperty_set_tzid (prop2, tzid1); + + /* Now convert both VTIMEZONEs to strings and compare them. */ + string1 = icalcomponent_as_ical_string (vtimezone1); + if (!string1) { + free (tzid2_copy); + return -1; + } + + string2 = icalcomponent_as_ical_string (vtimezone2); + if (!string2) { + free (string1); + free (tzid2_copy); + return -1; + } + + cmp = strcmp (string1, string2); + + free (string1); + free (string2); + + /* Now reset the second TZID. */ + icalproperty_set_tzid (prop2, tzid2_copy); + free (tzid2_copy); + + return (cmp == 0) ? 1 : 0; +} + + + + + + +/** + * @brief set the RELCALID property of a component. + * + * @param comp Valid calendar component. + * @param v Relcalid URL value + */ + +void icalcomponent_set_relcalid(icalcomponent* comp, const char* v) +{ + ICALSETUPSET(ICAL_RELCALID_PROPERTY); + + if (prop == 0){ + prop = icalproperty_new_relcalid(v); + icalcomponent_add_property(inner, prop); + } + + icalproperty_set_relcalid(prop,v); + +} + + +/** + * @brief get the RELCALID property of a component. + * + * @param comp Valid calendar component. + */ + +const char* icalcomponent_get_relcalid(icalcomponent* comp){ + icalcomponent *inner; + icalproperty *prop; + icalerror_check_arg_rz(comp!=0,"comp"); + + inner = icalcomponent_get_inner(comp); + + if(inner == 0){ + return 0; + } + + prop= icalcomponent_get_first_property(inner,ICAL_RELCALID_PROPERTY); + + if (prop == 0){ + return 0; + } + + return icalproperty_get_relcalid(prop); +} + + +/** @brief Return the time a TODO task is DUE. + * + * @param comp Valid calendar component. + * + * Uses the DUE: property if it exists, otherwise we calculate the DUE + * value by adding the task's duration to the DTSTART time + */ + +struct icaltimetype icalcomponent_get_due(icalcomponent* comp) +{ + icalcomponent *inner = icalcomponent_get_inner(comp); + + icalproperty *due_prop + = icalcomponent_get_first_property(inner,ICAL_DUE_PROPERTY); + + icalproperty *dur_prop + = icalcomponent_get_first_property(inner, ICAL_DURATION_PROPERTY); + + if( due_prop == 0 && dur_prop == 0){ + return icaltime_null_time(); + } else if ( due_prop != 0) { + return icalproperty_get_due(due_prop); + } else if ( dur_prop != 0) { + + struct icaltimetype start = + icalcomponent_get_dtstart(inner); + struct icaldurationtype duration = + icalproperty_get_duration(dur_prop); + + struct icaltimetype due = icaltime_add(start,duration); + + return due; + + } else { + /* Error, both duration and due have been specified */ + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + return icaltime_null_time(); + + } + +} + +/** @brief Set the due date of a VTODO task. + * + * @param comp Valid VTODO component. + * @param v Valid due date time. + * + * - If no duration or due properties then set the DUE property. + * - If a DUE property is already set, then reset it to the value v. + * - If a DURATION property is already set, then calculate the new + * duration based on the supplied value of v. + */ + +void icalcomponent_set_due(icalcomponent* comp, struct icaltimetype v) +{ + icalcomponent *inner = icalcomponent_get_inner(comp); + + icalproperty *due_prop + = icalcomponent_get_first_property(inner,ICAL_DUE_PROPERTY); + + icalproperty *dur_prop + = icalcomponent_get_first_property(inner,ICAL_DURATION_PROPERTY); + + + if( due_prop == 0 && dur_prop == 0){ + due_prop = icalproperty_new_due(v); + icalcomponent_add_property(inner,due_prop); + } else if ( due_prop != 0) { + icalproperty_set_due(due_prop,v); + } else if ( dur_prop != 0) { + struct icaltimetype start = + icalcomponent_get_dtstart(inner); + + struct icaltimetype due = + icalcomponent_get_due(inner); + + struct icaldurationtype dur + = icaltime_subtract(due,start); + + icalproperty_set_duration(dur_prop,dur); + + } else { + /* Error, both duration and due have been specified */ + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + } +} diff --git a/mozilla/calendar/libical/src/libical/icalcomponent.h b/mozilla/calendar/libical/src/libical/icalcomponent.h new file mode 100644 index 00000000000..94cdb8cdfa8 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icalcomponent.h @@ -0,0 +1,287 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalcomponent.h + CREATOR: eric 20 March 1999 + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icalcomponent.h + +======================================================================*/ + +#ifndef ICALCOMPONENT_H +#define ICALCOMPONENT_H + +#include "icalproperty.h" +#include "icalvalue.h" +#include "icalenums.h" /* defines icalcomponent_kind */ +#include "pvl.h" + +typedef struct icalcomponent_impl icalcomponent; + +#ifndef ICALTIMEZONE_DEFINED +#define ICALTIMEZONE_DEFINED +/** @brief An opaque struct representing a timezone. + * We declare this here to avoid a circular dependancy. + */ +typedef struct _icaltimezone icaltimezone; +#endif + + +/* This is exposed so that callers will not have to allocate and + deallocate iterators. Pretend that you can't see it. */ +typedef struct icalcompiter +{ + icalcomponent_kind kind; + pvl_elem iter; + +} icalcompiter; + +icalcomponent* icalcomponent_new(icalcomponent_kind kind); +icalcomponent* icalcomponent_new_clone(icalcomponent* component); +icalcomponent* icalcomponent_new_from_string(char* str); +icalcomponent* icalcomponent_vanew(icalcomponent_kind kind, ...); +void icalcomponent_free(icalcomponent* component); + +char* icalcomponent_as_ical_string(icalcomponent* component); + +int icalcomponent_is_valid(icalcomponent* component); + +icalcomponent_kind icalcomponent_isa(const icalcomponent* component); + +int icalcomponent_isa_component (void* component); + +/* + * Working with properties + */ + +void icalcomponent_add_property(icalcomponent* component, + icalproperty* property); + +void icalcomponent_remove_property(icalcomponent* component, + icalproperty* property); + +int icalcomponent_count_properties(icalcomponent* component, + icalproperty_kind kind); + +/* Iterate through the properties */ +icalproperty* icalcomponent_get_current_property(icalcomponent* component); + +icalproperty* icalcomponent_get_first_property(icalcomponent* component, + icalproperty_kind kind); +icalproperty* icalcomponent_get_next_property(icalcomponent* component, + icalproperty_kind kind); + +icalproperty* icalcomponent_get_first_x_property(icalcomponent* component, + const char *name); +icalproperty* icalcomponent_get_next_x_property(icalcomponent* component, + const char *name); + + +/* + * Working with components + */ + + +/* Return the first VEVENT, VTODO or VJOURNAL sub-component of cop, or + comp if it is one of those types */ + +icalcomponent* icalcomponent_get_inner(icalcomponent* comp); + + +void icalcomponent_add_component(icalcomponent* parent, + icalcomponent* child); + +void icalcomponent_remove_component(icalcomponent* parent, + icalcomponent* child); + +int icalcomponent_count_components(icalcomponent* component, + icalcomponent_kind kind); + +/** + This takes 2 VCALENDAR components and merges the second one into the first, + resolving any problems with conflicting TZIDs. comp_to_merge will no + longer exist after calling this function. */ +void icalcomponent_merge_component(icalcomponent* comp, + icalcomponent* comp_to_merge); + + +/* Iteration Routines. There are two forms of iterators, internal and +external. The internal ones came first, and are almost completely +sufficient, but they fail badly when you want to construct a loop that +removes components from the container.*/ + + +/* Iterate through components */ +icalcomponent* icalcomponent_get_current_component (icalcomponent* component); + +icalcomponent* icalcomponent_get_first_component(icalcomponent* component, + icalcomponent_kind kind); +icalcomponent* icalcomponent_get_next_component(icalcomponent* component, + icalcomponent_kind kind); + +/* Using external iterators */ +icalcompiter icalcomponent_begin_component(icalcomponent* component, + icalcomponent_kind kind); +icalcompiter icalcomponent_end_component(icalcomponent* component, + icalcomponent_kind kind); +icalcomponent* icalcompiter_next(icalcompiter* i); +icalcomponent* icalcompiter_prior(icalcompiter* i); +icalcomponent* icalcompiter_deref(icalcompiter* i); + + +/* Working with embedded error properties */ + + +/* Check the component against itip rules and insert error properties*/ +/* Working with embedded error properties */ +int icalcomponent_check_restrictions(icalcomponent* comp); + +/** Count embedded errors. */ +int icalcomponent_count_errors(icalcomponent* component); + +/** Remove all X-LIC-ERROR properties*/ +void icalcomponent_strip_errors(icalcomponent* component); + +/** Convert some X-LIC-ERROR properties into RETURN-STATUS properties*/ +void icalcomponent_convert_errors(icalcomponent* component); + +/* Internal operations. They are private, and you should not be using them. */ +icalcomponent* icalcomponent_get_parent(icalcomponent* component); +void icalcomponent_set_parent(icalcomponent* component, + icalcomponent* parent); + +/* Kind conversion routines */ + +int icalcomponent_kind_is_valid(const icalcomponent_kind kind); + +icalcomponent_kind icalcomponent_string_to_kind(const char* string); + +const char* icalcomponent_kind_to_string(icalcomponent_kind kind); + + +/************* Derived class methods. **************************** + +If the code was in an OO language, the remaining routines would be +members of classes derived from icalcomponent. Don't call them on the +wrong component subtypes. */ + +/** For VCOMPONENT: Return a reference to the first VEVENT, VTODO or + VJOURNAL */ +icalcomponent* icalcomponent_get_first_real_component(icalcomponent *c); + +/** For VEVENT, VTODO, VJOURNAL and VTIMEZONE: report the start and end + times of an event in UTC */ +struct icaltime_span icalcomponent_get_span(icalcomponent* comp); + +/******************** Convienience routines **********************/ + +void icalcomponent_set_dtstart(icalcomponent* comp, struct icaltimetype v); +struct icaltimetype icalcomponent_get_dtstart(icalcomponent* comp); + +/* For the icalcomponent routines only, dtend and duration are tied + together. If you call the set routine for one and the other exists, + the routine will calculate the change to the other. That is, if + there is a DTEND and you call set_duration, the routine will modify + DTEND to be the sum of DTSTART and the duration. If you call a get + routine for one and the other exists, the routine will calculate + the return value. If you call a set routine and neither exists, the + routine will create the apcompriate comperty */ + + +struct icaltimetype icalcomponent_get_dtend(icalcomponent* comp); +void icalcomponent_set_dtend(icalcomponent* comp, struct icaltimetype v); + +struct icaltimetype icalcomponent_get_due(icalcomponent* comp); +void icalcomponent_set_due(icalcomponent* comp, struct icaltimetype v); + +void icalcomponent_set_duration(icalcomponent* comp, + struct icaldurationtype v); +struct icaldurationtype icalcomponent_get_duration(icalcomponent* comp); + +void icalcomponent_set_method(icalcomponent* comp, icalproperty_method method); +icalproperty_method icalcomponent_get_method(icalcomponent* comp); + +struct icaltimetype icalcomponent_get_dtstamp(icalcomponent* comp); +void icalcomponent_set_dtstamp(icalcomponent* comp, struct icaltimetype v); + +void icalcomponent_set_summary(icalcomponent* comp, const char* v); +const char* icalcomponent_get_summary(icalcomponent* comp); + +void icalcomponent_set_comment(icalcomponent* comp, const char* v); +const char* icalcomponent_get_comment(icalcomponent* comp); + +void icalcomponent_set_uid(icalcomponent* comp, const char* v); +const char* icalcomponent_get_uid(icalcomponent* comp); + +void icalcomponent_set_relcalid(icalcomponent* comp, const char* v); +const char* icalcomponent_get_relcalid(icalcomponent* comp); + +void icalcomponent_set_recurrenceid(icalcomponent* comp, + struct icaltimetype v); +struct icaltimetype icalcomponent_get_recurrenceid(icalcomponent* comp); + +void icalcomponent_set_description(icalcomponent* comp, const char* v); +const char* icalcomponent_get_description(icalcomponent* comp); + +void icalcomponent_set_location(icalcomponent* comp, const char* v); +const char* icalcomponent_get_location(icalcomponent* comp); + +void icalcomponent_set_sequence(icalcomponent* comp, int v); +int icalcomponent_get_sequence(icalcomponent* comp); + +void icalcomponent_set_status(icalcomponent* comp, enum icalproperty_status v); +enum icalproperty_status icalcomponent_get_status(icalcomponent* comp); + + +/** Calls the given function for each TZID parameter found in the + component, and any subcomponents. */ +void icalcomponent_foreach_tzid(icalcomponent* comp, + void (*callback)(icalparameter *param, void *data), + void *callback_data); + +/** Returns the icaltimezone in the component corresponding to the + TZID, or NULL if it can't be found. */ +icaltimezone* icalcomponent_get_timezone(icalcomponent* comp, + const char *tzid); + +int icalproperty_recurrence_is_excluded(icalcomponent *comp, + struct icaltimetype *dtstart, + struct icaltimetype *recurtime); + +void icalcomponent_foreach_recurrence(icalcomponent* comp, + struct icaltimetype start, + struct icaltimetype end, + void (*callback)(icalcomponent *comp, + struct icaltime_span *span, + void *data), + void *callback_data); + + +/*************** Type Specific routines ***************/ + +icalcomponent* icalcomponent_new_vcalendar(); +icalcomponent* icalcomponent_new_vevent(); +icalcomponent* icalcomponent_new_vtodo(); +icalcomponent* icalcomponent_new_vjournal(); +icalcomponent* icalcomponent_new_valarm(); +icalcomponent* icalcomponent_new_vfreebusy(); +icalcomponent* icalcomponent_new_vtimezone(); +icalcomponent* icalcomponent_new_xstandard(); +icalcomponent* icalcomponent_new_xdaylight(); +icalcomponent* icalcomponent_new_vagenda(); +icalcomponent* icalcomponent_new_vquery(); + +#endif /* !ICALCOMPONENT_H */ diff --git a/mozilla/calendar/libical/src/libical/icalderivedparameter.c.in b/mozilla/calendar/libical/src/libical/icalderivedparameter.c.in new file mode 100644 index 00000000000..4eda7fcdb81 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icalderivedparameter.c.in @@ -0,0 +1,205 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: icalderivedparameters.{c,h} + CREATOR: eric 09 May 1999 + + $Id: icalderivedparameter.c.in,v 1.7 2004/05/10 22:05:23 acampi Exp $ + $Locker: $ + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icalderivedparameters.{c,h} + + Contributions from: + Graham Davison (g.m.davison@computer.org) + + ======================================================================*/ +/*#line 29 "icalparameter.c.in"*/ +#ifdef HAVE_CONFIG_H +#include +#endif + + +#include "icalparameter.h" +#include "icalparameterimpl.h" + +#include "icalproperty.h" +#include "icalerror.h" +#include "icalmemory.h" + +#include /* for malloc() */ +#include +#include /* for memset() */ + +icalvalue_kind icalparameter_value_to_value_kind(icalparameter_value value); + +struct icalparameter_impl* icalparameter_new_impl(icalparameter_kind kind); + +/* This map associates each of the parameters with the string + representation of the parameter's name */ +struct icalparameter_kind_map { + icalparameter_kind kind; + char *name; + +}; + +/* This map associates the enumerations for the VALUE parameter with + the kinds of VALUEs. */ + +struct icalparameter_value_kind_map { + icalparameter_value value; + icalvalue_kind kind; +}; + +/* This map associates the parameter enumerations with a specific parameter and the string representation of the enumeration */ + +struct icalparameter_map { + icalparameter_kind kind; + int enumeration; + const char* str; +}; + + + + + +const char* icalparameter_kind_to_string(icalparameter_kind kind) +{ + int i; + + for (i=0; parameter_map[i].kind != ICAL_NO_PARAMETER; i++) { + if (parameter_map[i].kind == kind) { + return parameter_map[i].name; + } + } + + return 0; + +} + +icalparameter_kind icalparameter_string_to_kind(const char* string) +{ + int i; + + if (string ==0 ) { + return ICAL_NO_PARAMETER; + } + + for (i=0; parameter_map[i].kind != ICAL_NO_PARAMETER; i++) { + + if (strcmp(parameter_map[i].name, string) == 0) { + return parameter_map[i].kind; + } + } + + if(strncmp(string,"X-",2)==0){ + return ICAL_X_PARAMETER; + } + + return ICAL_NO_PARAMETER; +} + + +icalvalue_kind icalparameter_value_to_value_kind(icalparameter_value value) +{ + int i; + + for (i=0; value_kind_map[i].kind != ICAL_NO_VALUE; i++) { + + if (value_kind_map[i].value == value) { + return value_kind_map[i].kind; + } + } + + return ICAL_NO_VALUE; +} + + +const char* icalparameter_enum_to_string(int e) +{ + int i; + + icalerror_check_arg_rz(e >= ICALPARAMETER_FIRST_ENUM,"e"); + icalerror_check_arg_rz(e <= ICALPARAMETER_LAST_ENUM,"e"); + + for (i=0; icalparameter_map[i].kind != ICAL_NO_PARAMETER; i++){ + if(e == icalparameter_map[i].enumeration){ + return icalparameter_map[i].str; + } + } + + return 0; +} + +int icalparameter_string_to_enum(const char* str) +{ + int i; + + icalerror_check_arg_rz(str != 0,"str"); + + for (i=0; icalparameter_map[i].kind != ICAL_NO_PARAMETER; i++){ + if(strcmp(str,icalparameter_map[i].str) == 0) { + return icalparameter_map[i].enumeration; + } + } + + return 0; +} + +icalparameter* icalparameter_new_from_value_string(icalparameter_kind kind,const char* val) +{ + + struct icalparameter_impl* param=0; + int found_kind = 0; + int i; + + icalerror_check_arg_rz((val!=0),"val"); + + /* Search through the parameter map to find a matching kind */ + + param = icalparameter_new_impl(kind); + + for (i=0; icalparameter_map[i].kind != ICAL_NO_PARAMETER; i++){ + if(kind == icalparameter_map[i].kind) { + found_kind = 1; + if(strcmp(val,icalparameter_map[i].str) == 0) { + + param->data = (int)icalparameter_map[i].enumeration; + return param; + } + } + } + + if(found_kind == 1){ + /* The kind was in the parameter map, but the string did not + match, so assume that it is an alternate value, like an + X-value.*/ + + icalparameter_set_xvalue(param, val); + + } else { + + /* If the kind was not found, then it must be a string type */ + + ((struct icalparameter_impl*)param)->string = icalmemory_strdup(val); + + } + + return param; +} + + + + diff --git a/mozilla/calendar/libical/src/libical/icalderivedparameter.h.in b/mozilla/calendar/libical/src/libical/icalderivedparameter.h.in new file mode 100644 index 00000000000..299a22cfa44 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icalderivedparameter.h.in @@ -0,0 +1,38 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalparam.h + CREATOR: eric 20 March 1999 + + + $Id: icalderivedparameter.h.in,v 1.3 2002/05/27 20:55:36 ebusboom Exp $ + $Locker: $ + + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icalparam.h + + ======================================================================*/ + +#ifndef ICALDERIVEDPARAMETER_H +#define ICALDERIVEDPARAMETER_H + + +typedef struct icalparameter_impl icalparameter; + +const char* icalparameter_enum_to_string(int e); +int icalparameter_string_to_enum(const char* str); + + diff --git a/mozilla/calendar/libical/src/libical/icalderivedproperty.c.in b/mozilla/calendar/libical/src/libical/icalderivedproperty.c.in new file mode 100644 index 00000000000..fe8fbb51721 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icalderivedproperty.c.in @@ -0,0 +1,285 @@ +/* -*- Mode: C -*- */ + +/*====================================================================== + FILE: icalderivedproperty.c + CREATOR: eric 15 Feb 2001 + + $Id: icalderivedproperty.c.in,v 1.13 2002/10/10 00:05:37 acampi Exp $ + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icalproperty.c + +======================================================================*/ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "icalproperty.h" +#include "icalcomponent.h" +#include "pvl.h" +#include "icalenums.h" +#include "icalerror.h" +#include "icalmemory.h" +#include "icalparser.h" + +#include /* For icalmemory_strdup, rindex */ +#include +#include +#include +#include /* for printf */ +#include /* for va_list, va_start, etc. */ + +struct icalproperty_impl* +icalproperty_new_impl (icalproperty_kind kind); +void icalproperty_add_parameters(struct icalproperty_impl *prop,va_list args); + +/* This map associates the property kinds with the string + representation of the property name and the kind of VALUE that the + property uses as a default */ + +struct icalproperty_map { + icalproperty_kind kind; + const char *name; + icalvalue_kind value; + +}; + +/* This map associates the property enumerations with the king of + property that they are used in and the string representation of the + enumeration */ + +struct icalproperty_enum_map { + icalproperty_kind prop; + int prop_enum; + const char* str; +}; + + + + +int icalproperty_kind_is_valid(const icalproperty_kind kind) +{ + int i = 0; + do { + if (property_map[i].kind == kind) + return 1; + } while (property_map[i++].kind != ICAL_NO_PROPERTY); + + return 0; +} + +const char* icalproperty_kind_to_string(icalproperty_kind kind) +{ + int i; + + for (i=0; property_map[i].kind != ICAL_NO_PROPERTY; i++) { + if (property_map[i].kind == kind) { + return property_map[i].name; + } + } + + return 0; + +} + + +icalproperty_kind icalproperty_string_to_kind(const char* string) +{ + int i; + + if (string ==0 ) { + return ICAL_NO_PROPERTY; + } + + + for (i=0; property_map[i].kind != ICAL_NO_PROPERTY; i++) { + if (strcmp(property_map[i].name, string) == 0) { + return property_map[i].kind; + } + } + + if(strncmp(string,"X-",2)==0){ + return ICAL_X_PROPERTY; + } + + + return ICAL_NO_PROPERTY; +} + + +icalproperty_kind icalproperty_value_kind_to_kind(icalvalue_kind kind) +{ + int i; + + for (i=0; property_map[i].kind != ICAL_NO_PROPERTY; i++) { + if ( property_map[i].value == kind ) { + return property_map[i].kind; + } + } + + return ICAL_NO_PROPERTY; +} + + + +icalvalue_kind icalproperty_kind_to_value_kind(icalproperty_kind kind) +{ + int i; + + for (i=0; property_map[i].kind != ICAL_NO_PROPERTY; i++) { + if ( property_map[i].kind == kind ) { + return property_map[i].value; + } + } + + return ICAL_NO_VALUE; +} + + +const char* icalproperty_enum_to_string(int e) +{ + icalerror_check_arg_rz(e >= ICALPROPERTY_FIRST_ENUM,"e"); + icalerror_check_arg_rz(e <= ICALPROPERTY_LAST_ENUM,"e"); + + return enum_map[e-ICALPROPERTY_FIRST_ENUM].str; +} + +int icalproperty_kind_and_string_to_enum(const int kind, const char* str) +{ + icalproperty_kind pkind; + int i; + + icalerror_check_arg_rz(str!=0,"str") + + if ((pkind = icalproperty_value_kind_to_kind(kind)) == ICAL_NO_VALUE) + return 0; + + while(*str == ' '){ + str++; + } + + for (i=ICALPROPERTY_FIRST_ENUM; i != ICALPROPERTY_LAST_ENUM; i++) { + if (enum_map[i-ICALPROPERTY_FIRST_ENUM].prop == pkind) + break; + } + if (i == ICALPROPERTY_LAST_ENUM) + return 0; + + for (; i != ICALPROPERTY_LAST_ENUM; i++) { + if ( strcmp(enum_map[i-ICALPROPERTY_FIRST_ENUM].str, str) == 0) { + return enum_map[i-ICALPROPERTY_FIRST_ENUM].prop_enum; + } + } + + return 0; +} + +/** @deprecated please use icalproperty_kind_and_string_to_enum instead */ +int icalproperty_string_to_enum(const char* str) +{ + int i; + + icalerror_check_arg_rz(str!=0,"str") + + while(*str == ' '){ + str++; + } + + for (i=ICALPROPERTY_FIRST_ENUM; i != ICALPROPERTY_LAST_ENUM; i++) { + if ( strcmp(enum_map[i-ICALPROPERTY_FIRST_ENUM].str, str) == 0) { + return enum_map[i-ICALPROPERTY_FIRST_ENUM].prop_enum; + } + } + + return 0; +} + +int icalproperty_enum_belongs_to_property(icalproperty_kind kind, int e) +{ + int i; + + + for (i=ICALPROPERTY_FIRST_ENUM; i != ICALPROPERTY_LAST_ENUM; i++) { + if(enum_map[i-ICALPROPERTY_FIRST_ENUM].prop_enum == e && + enum_map[i-ICALPROPERTY_FIRST_ENUM].prop == kind ){ + return 1; + } + } + + return 0; +} + + +const char* icalproperty_method_to_string(icalproperty_method method) +{ + icalerror_check_arg_rz(method >= ICAL_METHOD_X,"method"); + icalerror_check_arg_rz(method <= ICAL_METHOD_NONE,"method"); + + return enum_map[method-ICALPROPERTY_FIRST_ENUM].str; +} + +icalproperty_method icalproperty_string_to_method(const char* str) +{ + int i; + + icalerror_check_arg_rx(str!=0,"str",ICAL_METHOD_NONE) + + while(*str == ' '){ + str++; + } + + for (i=ICAL_METHOD_X-ICALPROPERTY_FIRST_ENUM; + i != ICAL_METHOD_NONE-ICALPROPERTY_FIRST_ENUM; + i++) { + if ( strcmp(enum_map[i].str, str) == 0) { + return (icalproperty_method)enum_map[i].prop_enum; + } + } + + return ICAL_METHOD_NONE; +} + + +const char* icalenum_status_to_string(icalproperty_status status) +{ + icalerror_check_arg_rz(status >= ICAL_STATUS_X,"status"); + icalerror_check_arg_rz(status <= ICAL_STATUS_NONE,"status"); + + return enum_map[status-ICALPROPERTY_FIRST_ENUM].str; +} + +icalproperty_status icalenum_string_to_status(const char* str) +{ + int i; + + icalerror_check_arg_rx(str!=0,"str",ICAL_STATUS_NONE) + + while(*str == ' '){ + str++; + } + + for (i=ICAL_STATUS_X-ICALPROPERTY_FIRST_ENUM; + i != ICAL_STATUS_NONE-ICALPROPERTY_FIRST_ENUM; + i++) { + if ( strcmp(enum_map[i].str, str) == 0) { + return (icalproperty_status)enum_map[i].prop_enum; + } + } + + return ICAL_STATUS_NONE; + +} diff --git a/mozilla/calendar/libical/src/libical/icalderivedproperty.h.in b/mozilla/calendar/libical/src/libical/icalderivedproperty.h.in new file mode 100644 index 00000000000..3ee73b96c35 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icalderivedproperty.h.in @@ -0,0 +1,22 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: icalderivedproperties.{c,h} + CREATOR: eric 09 May 1999 + + $Id: icalderivedproperty.h.in,v 1.6 2002/05/27 20:55:36 ebusboom Exp $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + ======================================================================*/ + + +#ifndef ICALDERIVEDPROPERTY_H +#define ICALDERIVEDPROPERTY_H + +#include +#include "icalparameter.h" +#include "icalderivedvalue.h" +#include "icalrecur.h" + +typedef struct icalproperty_impl icalproperty; + + diff --git a/mozilla/calendar/libical/src/libical/icalderivedvalue.c.in b/mozilla/calendar/libical/src/libical/icalderivedvalue.c.in new file mode 100644 index 00000000000..0d2178041fc --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icalderivedvalue.c.in @@ -0,0 +1,337 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalvalue.c + CREATOR: eric 02 May 1999 + + $Id: icalderivedvalue.c.in,v 1.11 2002/06/27 00:22:09 acampi Exp $ + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icalvalue.c + + Contributions from: + Graham Davison (g.m.davison@computer.org) + + +======================================================================*/ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "icalerror.h" +#include "icalmemory.h" +#include "icalparser.h" +#include "icalenums.h" + +#include "icalvalueimpl.h" + +#include /* for malloc */ +#include /* for sprintf */ +#include /* For memset, others */ +#include /* For offsetof() macro */ +#include +#include /* for mktime */ +#include /* for atoi and atof */ +#include /* for SHRT_MAX */ + +struct icalvalue_impl* icalvalue_new_impl(icalvalue_kind kind); + +/* This map associates each of the value types with its string + representation */ +struct icalvalue_kind_map { + icalvalue_kind kind; + char name[20]; +}; + + + + +int icalvalue_kind_is_valid(const icalvalue_kind kind) +{ + int i = 0; + do { + if (value_map[i].kind == kind) + return 1; + } while (value_map[i++].kind != ICAL_NO_VALUE); + + return 0; +} + +const char* icalvalue_kind_to_string(const icalvalue_kind kind) +{ + int i; + + for (i=0; value_map[i].kind != ICAL_NO_VALUE; i++) { + if (value_map[i].kind == kind) { + return value_map[i].name; + } + } + + return 0; +} + +icalvalue_kind icalvalue_string_to_kind(const char* str) +{ + int i; + + for (i=0; value_map[i].kind != ICAL_NO_VALUE; i++) { + if (strcmp(value_map[i].name,str) == 0) { + return value_map[i].kind; + } + } + + return value_map[i].kind; + +} + +icalvalue* icalvalue_new_x (const char* v){ + struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_X_VALUE); + icalerror_check_arg_rz( (v!=0),"v"); + + icalvalue_set_x((icalvalue*)impl,v); + return (icalvalue*)impl; +} +void icalvalue_set_x(icalvalue* impl, const char* v) { + icalerror_check_arg_rv( (impl!=0),"value"); + icalerror_check_arg_rv( (v!=0),"v"); + + if(impl->x_value!=0) {free((void*)impl->x_value);} + + impl->x_value = icalmemory_strdup(v); + + if (impl->x_value == 0){ + errno = ENOMEM; + } + + } +const char* icalvalue_get_x(const icalvalue* value) { + + icalerror_check_arg( (value!=0),"value"); + icalerror_check_value_type(value, ICAL_X_VALUE); + return value->x_value; +} + +/* Recur is a special case, so it is not auto generated. */ +icalvalue* +icalvalue_new_recur (struct icalrecurrencetype v) +{ + struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_RECUR_VALUE); + + icalvalue_set_recur((icalvalue*)impl,v); + + return (icalvalue*)impl; +} + +void +icalvalue_set_recur(icalvalue* impl, struct icalrecurrencetype v) +{ + icalerror_check_arg_rv( (impl!=0),"value"); + icalerror_check_value_type(value, ICAL_RECUR_VALUE); + + if (impl->data.v_recur != 0){ + free(impl->data.v_recur); + impl->data.v_recur = 0; + } + + impl->data.v_recur = malloc(sizeof(struct icalrecurrencetype)); + + if (impl->data.v_recur == 0){ + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + return; + } else { + memcpy(impl->data.v_recur, &v, sizeof(struct icalrecurrencetype)); + } + +} + +struct icalrecurrencetype +icalvalue_get_recur(const icalvalue* value) +{ + icalerror_check_arg( (value!=0),"value"); + icalerror_check_value_type(value, ICAL_RECUR_VALUE); + + return *(value->data.v_recur); +} + + + + +icalvalue* +icalvalue_new_trigger (struct icaltriggertype v) +{ + struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_TRIGGER_VALUE); + + icalvalue_set_trigger((icalvalue*)impl,v); + + return (icalvalue*)impl; +} + +void +icalvalue_set_trigger(icalvalue* value, struct icaltriggertype v) +{ + icalerror_check_arg_rv( (value!=0),"value"); + + if(!icaltime_is_null_time(v.time)){ + icalvalue_set_datetime(value,v.time); + value->kind = ICAL_DATETIME_VALUE; + } else { + icalvalue_set_duration(value,v.duration); + value->kind = ICAL_DURATION_VALUE; + } +} + +struct icaltriggertype +icalvalue_get_trigger(const icalvalue* impl) +{ + struct icaltriggertype tr; + + icalerror_check_arg( (impl!=0),"value"); + icalerror_check_arg( (impl!=0),"value"); + + if(impl->kind == ICAL_DATETIME_VALUE){ + tr.duration = icaldurationtype_from_int(0); + tr.time = impl->data.v_time; + } else if(impl->kind == ICAL_DURATION_VALUE){ + tr.time = icaltime_null_time(); + tr.duration = impl->data.v_duration; + } else { + tr.duration = icaldurationtype_from_int(0); + tr.time = icaltime_null_time(); + icalerror_set_errno(ICAL_BADARG_ERROR); + } + + return tr; +} + +/* DATE-TIME-PERIOD is a special case, and is not auto generated */ + +icalvalue* +icalvalue_new_datetimeperiod (struct icaldatetimeperiodtype v) +{ + struct icalvalue_impl* impl = icalvalue_new_impl(ICAL_DATETIMEPERIOD_VALUE); + + icalvalue_set_datetimeperiod(impl,v); + + return (icalvalue*)impl; +} + +void +icalvalue_set_datetimeperiod(icalvalue* impl, struct icaldatetimeperiodtype v) +{ + icalerror_check_arg_rv( (impl!=0),"value"); + + icalerror_check_value_type(value, ICAL_DATETIMEPERIOD_VALUE); + + if(!icaltime_is_null_time(v.time)){ + if(!icaltime_is_valid_time(v.time)){ + icalerror_set_errno(ICAL_BADARG_ERROR); + return; + } + impl->kind = ICAL_DATETIME_VALUE; + icalvalue_set_datetime(impl,v.time); + } else if (!icalperiodtype_is_null_period(v.period)) { + if(!icalperiodtype_is_valid_period(v.period)){ + icalerror_set_errno(ICAL_BADARG_ERROR); + return; + } + impl->kind = ICAL_PERIOD_VALUE; + icalvalue_set_period(impl,v.period); + } else { + icalerror_set_errno(ICAL_BADARG_ERROR); + } +} + +struct icaldatetimeperiodtype +icalvalue_get_datetimeperiod(const icalvalue* impl) +{ + struct icaldatetimeperiodtype dtp; + + icalerror_check_arg( (impl!=0),"value"); + icalerror_check_value_type(value, ICAL_DATETIMEPERIOD_VALUE); + + if(impl->kind == ICAL_DATETIME_VALUE){ + dtp.period = icalperiodtype_null_period(); + dtp.time = impl->data.v_time; + } else if(impl->kind == ICAL_PERIOD_VALUE) { + dtp.period = impl->data.v_period; + dtp.time = icaltime_null_time(); + } else { + dtp.period = icalperiodtype_null_period(); + dtp.time = icaltime_null_time(); + icalerror_set_errno(ICAL_BADARG_ERROR); + } + + return dtp; +} + + + +icalvalue * +icalvalue_new_attach (icalattach *attach) +{ + struct icalvalue_impl *impl; + + icalerror_check_arg_rz ((attach != NULL), "attach"); + + impl = icalvalue_new_impl (ICAL_ATTACH_VALUE); + if (!impl) { + errno = ENOMEM; + return NULL; + } + + icalvalue_set_attach ((icalvalue *) impl, attach); + return (icalvalue *) impl; +} + +void +icalvalue_set_attach (icalvalue *value, icalattach *attach) +{ + struct icalvalue_impl *impl; + + icalerror_check_arg_rv ((value != NULL), "value"); + icalerror_check_value_type (value, ICAL_ATTACH_VALUE); + icalerror_check_arg_rv ((attach != NULL), "attach"); + + impl = (struct icalvalue_impl *) value; + + icalattach_ref (attach); + + if (impl->data.v_attach) + icalattach_unref (impl->data.v_attach); + + impl->data.v_attach = attach; +} + +icalattach * +icalvalue_get_attach (const icalvalue *value) +{ + icalerror_check_arg_rz ((value != NULL), "value"); + icalerror_check_value_type (value, ICAL_ATTACH_VALUE); + + return value->data.v_attach; +} + + + + + + + +/* The remaining interfaces are 'new', 'set' and 'get' for each of the value + types */ + + +/* Everything below this line is machine generated. Do not edit. */ diff --git a/mozilla/calendar/libical/src/libical/icalderivedvalue.h.in b/mozilla/calendar/libical/src/libical/icalderivedvalue.h.in new file mode 100644 index 00000000000..eef000f3e67 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icalderivedvalue.h.in @@ -0,0 +1,65 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalvalue.h + CREATOR: eric 20 March 1999 + + + $Id: icalderivedvalue.h.in,v 1.9 2002/06/04 14:07:09 acampi Exp $ + $Locker: $ + + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icalvalue.h + + ======================================================================*/ + +#ifndef ICALDERIVEDVALUE_H +#define ICALDERIVEDVALUE_H + +#include "icaltypes.h" +#include "icalrecur.h" +#include "icaltime.h" +#include "icalduration.h" +#include "icalperiod.h" +#include "icalattach.h" + +typedef struct icalvalue_impl icalvalue; + + + +void icalvalue_set_x(icalvalue* value, const char* v); +icalvalue* icalvalue_new_x(const char* v); +const char* icalvalue_get_x(const icalvalue* value); + +icalvalue* icalvalue_new_recur (struct icalrecurrencetype v); +void icalvalue_set_recur(icalvalue* value, struct icalrecurrencetype v); +struct icalrecurrencetype icalvalue_get_recur(const icalvalue* value); + +icalvalue* icalvalue_new_trigger (struct icaltriggertype v); +void icalvalue_set_trigger(icalvalue* value, struct icaltriggertype v); +struct icaltriggertype icalvalue_get_trigger(const icalvalue* value); + +icalvalue* icalvalue_new_datetimeperiod (struct icaldatetimeperiodtype v); +void icalvalue_set_datetimeperiod(icalvalue* value, struct icaldatetimeperiodtype v); +struct icaldatetimeperiodtype icalvalue_get_datetimeperiod(const icalvalue* value); + +icalvalue *icalvalue_new_attach (icalattach *attach); +void icalvalue_set_attach (icalvalue *value, icalattach *attach); +icalattach *icalvalue_get_attach (const icalvalue *value); + +void icalvalue_reset_kind(icalvalue* value); + + diff --git a/mozilla/calendar/libical/src/libical/icalduration.c b/mozilla/calendar/libical/src/libical/icalduration.c new file mode 100644 index 00000000000..c8bcd90f058 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icalduration.c @@ -0,0 +1,332 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: icaltime.c + CREATOR: eric 02 June 2000 + + $Id: icalduration.c,v 1.16 2002/10/30 21:22:03 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The Original Code is eric. The Initial Developer of the Original + Code is Eric Busboom + + + ======================================================================*/ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "icalduration.h" + +#include +#include +#include +#include + +#include "icalerror.h" +#include "icalmemory.h" +#include "icalvalue.h" + + + + +/* From Seth Alves, */ +struct icaldurationtype icaldurationtype_from_int(int t) +{ + struct icaldurationtype dur; + int used = 0; + + dur = icaldurationtype_null_duration(); + + if(t < 0){ + dur.is_neg = 1; + t = -t; + } + + if (t % (60 * 60 * 24 * 7) == 0) { + dur.weeks = t / (60 * 60 * 24 * 7); + } else { + used += dur.weeks * (60 * 60 * 24 * 7); + dur.days = (t - used) / (60 * 60 * 24); + used += dur.days * (60 * 60 * 24); + dur.hours = (t - used) / (60 * 60); + used += dur.hours * (60 * 60); + dur.minutes = (t - used) / (60); + used += dur.minutes * (60); + dur.seconds = (t - used); + } + + return dur; +} + +struct icaldurationtype icaldurationtype_from_string(const char* str) +{ + + int i; + int begin_flag = 0; + int time_flag = 0; + int date_flag = 0; + int week_flag = 0; + int digits=-1; + int scan_size = -1; + int size = strlen(str); + char p; + struct icaldurationtype d; + + memset(&d, 0, sizeof(struct icaldurationtype)); + + for(i=0;i != size;i++){ + p = str[i]; + + switch(p) + { + case '-': { + if(i != 0 || begin_flag == 1) goto error; + + d.is_neg = 1; + break; + } + + case 'P': { + if (i != 0 && i !=1 ) goto error; + begin_flag = 1; + break; + } + + case 'T': { + time_flag = 1; + break; + } + + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + + /* HACK. Skip any more digits if the l;ast one + read has not been assigned */ + if(digits != -1){ + break; + } + + if (begin_flag == 0) goto error; + /* Get all of the digits, not one at a time */ + scan_size = sscanf(&str[i],"%d",&digits); + if(scan_size == 0) goto error; + break; + } + + case 'H': { + if (time_flag == 0||week_flag == 1||d.hours !=0||digits ==-1) + goto error; + d.hours = digits; digits = -1; + break; + } + case 'M': { + if (time_flag == 0||week_flag==1||d.minutes != 0||digits ==-1) + goto error; + d.minutes = digits; digits = -1; + break; + } + case 'S': { + if (time_flag == 0||week_flag==1||d.seconds!=0||digits ==-1) + goto error; + d.seconds = digits; digits = -1; + break; + } + case 'W': { + if (time_flag==1||date_flag==1||d.weeks!=0||digits ==-1) + goto error; + week_flag = 1; + d.weeks = digits; digits = -1; + break; + } + case 'D': { + if (time_flag==1||week_flag==1||d.days!=0||digits ==-1) + goto error; + date_flag = 1; + d.days = digits; digits = -1; + break; + } + default: { + goto error; + } + + } + } + + return d; + + + error: + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + return icaldurationtype_bad_duration(); +} + +#define TMP_BUF_SIZE 1024 +static +void append_duration_segment(char** buf, char** buf_ptr, size_t* buf_size, + char* sep, unsigned int value) { + + char temp[TMP_BUF_SIZE]; + + sprintf(temp,"%d",value); + + icalmemory_append_string(buf, buf_ptr, buf_size, temp); + icalmemory_append_string(buf, buf_ptr, buf_size, sep); + +} + +char* icaldurationtype_as_ical_string(struct icaldurationtype d) +{ + + char *buf, *output_line; + size_t buf_size = 256; + char* buf_ptr = 0; + int seconds; + + buf = (char*)icalmemory_new_buffer(buf_size); + buf_ptr = buf; + + + seconds = icaldurationtype_as_int(d); + + if(seconds !=0){ + + if(d.is_neg == 1){ + icalmemory_append_char(&buf, &buf_ptr, &buf_size, '-'); + } + + icalmemory_append_char(&buf, &buf_ptr, &buf_size, 'P'); + + if (d.weeks != 0 ) { + append_duration_segment(&buf, &buf_ptr, &buf_size, "W", d.weeks); + } + + if (d.days != 0 ) { + append_duration_segment(&buf, &buf_ptr, &buf_size, "D", d.days); + } + + if (d.hours != 0 || d.minutes != 0 || d.seconds != 0) { + + icalmemory_append_string(&buf, &buf_ptr, &buf_size, "T"); + + if (d.hours != 0 ) { + append_duration_segment(&buf, &buf_ptr, &buf_size, "H", d.hours); + } + if (d.minutes != 0 ) { + append_duration_segment(&buf, &buf_ptr, &buf_size, "M", + d.minutes); + } + if (d.seconds != 0 ) { + append_duration_segment(&buf, &buf_ptr, &buf_size, "S", + d.seconds); + } + + } + } else { + icalmemory_append_string(&buf, &buf_ptr, &buf_size, "PT0S"); + } + + output_line = icalmemory_tmp_copy(buf); + icalmemory_free_buffer(buf); + + return output_line; + +} + + +/* From Russel Steinthal */ +int icaldurationtype_as_int(struct icaldurationtype dur) +{ + return (int)( (dur.seconds + + (60 * dur.minutes) + + (60 * 60 * dur.hours) + + (60 * 60 * 24 * dur.days) + + (60 * 60 * 24 * 7 * dur.weeks)) + * (dur.is_neg==1? -1 : 1) ) ; +} + +struct icaldurationtype icaldurationtype_null_duration(void) +{ + struct icaldurationtype d; + + memset(&d,0,sizeof(struct icaldurationtype)); + + return d; +} + +int icaldurationtype_is_null_duration(struct icaldurationtype d) +{ + if(icaldurationtype_as_int(d) == 0){ + return 1; + } else { + return 0; + } +} + +/* in icalvalue_new_from_string_with_error, we should not call + icaldurationtype_is_null_duration() to see if there is an error + condition. Null duration is perfectly valid for an alarm. + We cannot depend on the caller to check icalerrno either, + following the philosophy of unix errno. we set the is_neg + to -1 to indicate that this is a bad duration. +*/ +struct icaldurationtype icaldurationtype_bad_duration() +{ + struct icaldurationtype d; + memset(&d,0,sizeof(struct icaldurationtype)); + d.is_neg = -1; + return d; +} + +int icaldurationtype_is_bad_duration(struct icaldurationtype d) +{ + return (d.is_neg == -1); +} + + +struct icaltimetype icaltime_add(struct icaltimetype t, + struct icaldurationtype d) +{ + int dt = icaldurationtype_as_int(d); + + t.second += dt; + + t = icaltime_normalize(t); + + return t; +} + +struct icaldurationtype icaltime_subtract(struct icaltimetype t1, + struct icaltimetype t2) +{ + + time_t t1t = icaltime_as_timet(t1); + time_t t2t = icaltime_as_timet(t2); + + return icaldurationtype_from_int((int)(t1t-t2t)); + + +} + diff --git a/mozilla/calendar/libical/src/libical/icalduration.h b/mozilla/calendar/libical/src/libical/icalduration.h new file mode 100644 index 00000000000..59bd75c39ae --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icalduration.h @@ -0,0 +1,62 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalduration.h + CREATOR: eric 26 Jan 2001 + + + $Id: icalduration.h,v 1.3 2002/09/26 22:04:56 lindner Exp $ + $Locker: $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The Original Code is eric. The Initial Developer of the Original + Code is Eric Busboom + + +======================================================================*/ + +#ifndef ICALDURATION_H +#define ICALDURATION_H + +#include "icaltime.h" + +struct icaldurationtype +{ + int is_neg; + unsigned int days; + unsigned int weeks; + unsigned int hours; + unsigned int minutes; + unsigned int seconds; +}; + +struct icaldurationtype icaldurationtype_from_int(int t); +struct icaldurationtype icaldurationtype_from_string(const char*); +int icaldurationtype_as_int(struct icaldurationtype duration); +char* icaldurationtype_as_ical_string(struct icaldurationtype d); +struct icaldurationtype icaldurationtype_null_duration(void); +struct icaldurationtype icaldurationtype_bad_duration(void); +int icaldurationtype_is_null_duration(struct icaldurationtype d); +int icaldurationtype_is_bad_duration(struct icaldurationtype d); + +struct icaltimetype icaltime_add(struct icaltimetype t, + struct icaldurationtype d); + +struct icaldurationtype icaltime_subtract(struct icaltimetype t1, + struct icaltimetype t2); + +#endif /* !ICALDURATION_H */ + + + diff --git a/mozilla/calendar/libical/src/libical/icalenums.c b/mozilla/calendar/libical/src/libical/icalenums.c new file mode 100644 index 00000000000..d3e4fc8426e --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icalenums.c @@ -0,0 +1,166 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalenum.c + CREATOR: eric 29 April 1999 + + $Id: icalenums.c,v 1.13 2002/06/11 12:22:25 acampi Exp $ + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icalenum.c + + ======================================================================*/ + + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "icalenums.h" + +#include /* For fprintf */ +#include /* For stderr */ +#include /* For strncmp */ +#include +#include "icalmemory.h" + +/*** @brief Allowed request status values + */ +static struct { + enum icalrequeststatus kind; + int major; + int minor; + const char* str; +} request_status_map[] = { + {ICAL_2_0_SUCCESS_STATUS, 2,0,"Success."}, + {ICAL_2_1_FALLBACK_STATUS, 2,1,"Success but fallback taken on one or more property values."}, + {ICAL_2_2_IGPROP_STATUS, 2,2,"Success, invalid property ignored."}, + {ICAL_2_3_IGPARAM_STATUS, 2,3,"Success, invalid property parameter ignored."}, + {ICAL_2_4_IGXPROP_STATUS, 2,4,"Success, unknown non-standard property ignored."}, + {ICAL_2_5_IGXPARAM_STATUS, 2,5,"Success, unknown non standard property value ignored."}, + {ICAL_2_6_IGCOMP_STATUS, 2,6,"Success, invalid calendar component ignored."}, + {ICAL_2_7_FORWARD_STATUS, 2,7,"Success, request forwarded to Calendar User."}, + {ICAL_2_8_ONEEVENT_STATUS, 2,8,"Success, repeating event ignored. Scheduled as a single component."}, + {ICAL_2_9_TRUNC_STATUS, 2,9,"Success, truncated end date time to date boundary."}, + {ICAL_2_10_ONETODO_STATUS, 2,10,"Success, repeating VTODO ignored. Scheduled as a single VTODO."}, + {ICAL_2_11_TRUNCRRULE_STATUS, 2,11,"Success, unbounded RRULE clipped at some finite number of instances "}, + {ICAL_3_0_INVPROPNAME_STATUS, 3,0,"Invalid property name."}, + {ICAL_3_1_INVPROPVAL_STATUS, 3,1,"Invalid property value."}, + {ICAL_3_2_INVPARAM_STATUS, 3,2,"Invalid property parameter."}, + {ICAL_3_3_INVPARAMVAL_STATUS, 3,3,"Invalid property parameter value."}, + {ICAL_3_4_INVCOMP_STATUS, 3,4,"Invalid calendar component."}, + {ICAL_3_5_INVTIME_STATUS, 3,5,"Invalid date or time."}, + {ICAL_3_6_INVRULE_STATUS, 3,6,"Invalid rule."}, + {ICAL_3_7_INVCU_STATUS, 3,7,"Invalid Calendar User."}, + {ICAL_3_8_NOAUTH_STATUS, 3,8,"No authority."}, + {ICAL_3_9_BADVERSION_STATUS, 3,9,"Unsupported version."}, + {ICAL_3_10_TOOBIG_STATUS, 3,10,"Request entity too large."}, + {ICAL_3_11_MISSREQCOMP_STATUS, 3,11,"Required component or property missing."}, + {ICAL_3_12_UNKCOMP_STATUS, 3,12,"Unknown component or property found."}, + {ICAL_3_13_BADCOMP_STATUS, 3,13,"Unsupported component or property found"}, + {ICAL_3_14_NOCAP_STATUS, 3,14,"Unsupported capability."}, + {ICAL_3_15_INVCOMMAND, 3,15,"Invalid command."}, + {ICAL_4_0_BUSY_STATUS, 4,0,"Event conflict. Date/time is busy."}, + {ICAL_4_1_STORE_ACCESS_DENIED, 4,1,"Store Access Denied."}, + {ICAL_4_2_STORE_FAILED, 4,2,"Store Failed."}, + {ICAL_4_3_STORE_NOT_FOUND, 4,3,"Store not found."}, + {ICAL_5_0_MAYBE_STATUS, 5,0,"Request MAY supported."}, + {ICAL_5_1_UNAVAIL_STATUS, 5,1,"Service unavailable."}, + {ICAL_5_2_NOSERVICE_STATUS, 5,2,"Invalid calendar service."}, + {ICAL_5_3_NOSCHED_STATUS, 5,3,"No scheduling support for user."}, + {ICAL_6_1_CONTAINER_NOT_FOUND, 6,1,"Container not found."}, + {ICAL_9_0_UNRECOGNIZED_COMMAND, 9,0,"An unrecognized command was received."}, + {ICAL_UNKNOWN_STATUS, 0,0,"Error: Unknown request status"} +}; + + +/*** @brief Return the descriptive text for a request status + */ +const char* icalenum_reqstat_desc(icalrequeststatus stat) +{ + int i; + + for (i=0; request_status_map[i].kind != ICAL_UNKNOWN_STATUS; i++) { + if ( request_status_map[i].kind == stat) { + return request_status_map[i].str; + } + } + + return 0; +} + +/*** @brief Return the code for a request status + */ +char* icalenum_reqstat_code(icalrequeststatus stat) +{ + int i, major, minor; + char tmpbuf[36]; + + for (i=0; request_status_map[i].kind != ICAL_UNKNOWN_STATUS; i++) { + if ( request_status_map[i].kind == stat) { + major = request_status_map[i].major; + minor = request_status_map[i].minor; + sprintf(tmpbuf, "%i.%i", major, minor); + return icalmemory_tmp_copy(tmpbuf); + } + } + return NULL; +} + +/*** @brief Return the major number for a request status + */ +short icalenum_reqstat_major(icalrequeststatus stat) +{ + int i; + + for (i=0; request_status_map[i].kind != ICAL_UNKNOWN_STATUS; i++) { + if ( request_status_map[i].kind == stat) { + return request_status_map[i].major; + } + } + return -1; +} + +/*** @brief Return the minor number for a request status + */ +short icalenum_reqstat_minor(icalrequeststatus stat) +{ + int i; + + for (i=0; request_status_map[i].kind != ICAL_UNKNOWN_STATUS; i++) { + if ( request_status_map[i].kind == stat) { + return request_status_map[i].minor; + } + } + return -1; +} + + +/*** @brief Return a request status for major/minor status numbers + */ +icalrequeststatus icalenum_num_to_reqstat(short major, short minor) +{ + int i; + + for (i=0; request_status_map[i].kind != ICAL_UNKNOWN_STATUS; i++) { + if ( request_status_map[i].major == major && request_status_map[i].minor == minor) { + return request_status_map[i].kind; + } + } + return 0; +} + + + diff --git a/mozilla/calendar/libical/src/libical/icalenums.h b/mozilla/calendar/libical/src/libical/icalenums.h new file mode 100644 index 00000000000..dde5e5afb61 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icalenums.h @@ -0,0 +1,166 @@ + +/* -*- Mode: C -*-*/ +/*====================================================================== + FILE: icalenums.h + + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icalenums.h + + Contributions from: + Graham Davison (g.m.davison@computer.org) + +======================================================================*/ + +#ifndef ICALENUMS_H +#define ICALENUMS_H + + + +/*********************************************************************** + * Component enumerations +**********************************************************************/ + +typedef enum icalcomponent_kind { + ICAL_NO_COMPONENT, + ICAL_ANY_COMPONENT, /* Used to select all components*/ + ICAL_XROOT_COMPONENT, + ICAL_XATTACH_COMPONENT, /* MIME attached data, returned by parser. */ + ICAL_VEVENT_COMPONENT, + ICAL_VTODO_COMPONENT, + ICAL_VJOURNAL_COMPONENT, + ICAL_VCALENDAR_COMPONENT, + ICAL_VAGENDA_COMPONENT, + ICAL_VFREEBUSY_COMPONENT, + ICAL_VALARM_COMPONENT, + ICAL_XAUDIOALARM_COMPONENT, + ICAL_XDISPLAYALARM_COMPONENT, + ICAL_XEMAILALARM_COMPONENT, + ICAL_XPROCEDUREALARM_COMPONENT, + ICAL_VTIMEZONE_COMPONENT, + ICAL_XSTANDARD_COMPONENT, + ICAL_XDAYLIGHT_COMPONENT, + ICAL_X_COMPONENT, + ICAL_VSCHEDULE_COMPONENT, + ICAL_VQUERY_COMPONENT, + ICAL_VREPLY_COMPONENT, + ICAL_VCAR_COMPONENT, + ICAL_VCOMMAND_COMPONENT, + ICAL_XLICINVALID_COMPONENT, + ICAL_XLICMIMEPART_COMPONENT /* a non-stardard component that mirrors + structure of MIME data */ + +} icalcomponent_kind; + + + +/*********************************************************************** + * Request Status codes + **********************************************************************/ + +typedef enum icalrequeststatus { + ICAL_UNKNOWN_STATUS, + ICAL_2_0_SUCCESS_STATUS, + ICAL_2_1_FALLBACK_STATUS, + ICAL_2_2_IGPROP_STATUS, + ICAL_2_3_IGPARAM_STATUS, + ICAL_2_4_IGXPROP_STATUS, + ICAL_2_5_IGXPARAM_STATUS, + ICAL_2_6_IGCOMP_STATUS, + ICAL_2_7_FORWARD_STATUS, + ICAL_2_8_ONEEVENT_STATUS, + ICAL_2_9_TRUNC_STATUS, + ICAL_2_10_ONETODO_STATUS, + ICAL_2_11_TRUNCRRULE_STATUS, + ICAL_3_0_INVPROPNAME_STATUS, + ICAL_3_1_INVPROPVAL_STATUS, + ICAL_3_2_INVPARAM_STATUS, + ICAL_3_3_INVPARAMVAL_STATUS, + ICAL_3_4_INVCOMP_STATUS, + ICAL_3_5_INVTIME_STATUS, + ICAL_3_6_INVRULE_STATUS, + ICAL_3_7_INVCU_STATUS, + ICAL_3_8_NOAUTH_STATUS, + ICAL_3_9_BADVERSION_STATUS, + ICAL_3_10_TOOBIG_STATUS, + ICAL_3_11_MISSREQCOMP_STATUS, + ICAL_3_12_UNKCOMP_STATUS, + ICAL_3_13_BADCOMP_STATUS, + ICAL_3_14_NOCAP_STATUS, + ICAL_3_15_INVCOMMAND, + ICAL_4_0_BUSY_STATUS, + ICAL_4_1_STORE_ACCESS_DENIED, + ICAL_4_2_STORE_FAILED, + ICAL_4_3_STORE_NOT_FOUND, + ICAL_5_0_MAYBE_STATUS, + ICAL_5_1_UNAVAIL_STATUS, + ICAL_5_2_NOSERVICE_STATUS, + ICAL_5_3_NOSCHED_STATUS, + ICAL_6_1_CONTAINER_NOT_FOUND, + ICAL_9_0_UNRECOGNIZED_COMMAND +} icalrequeststatus; + + +const char* icalenum_reqstat_desc(icalrequeststatus stat); +short icalenum_reqstat_major(icalrequeststatus stat); +short icalenum_reqstat_minor(icalrequeststatus stat); +icalrequeststatus icalenum_num_to_reqstat(short major, short minor); +char* icalenum_reqstat_code(icalrequeststatus stat); + +/*********************************************************************** + * Conversion functions +**********************************************************************/ + + +/* Thse routines used to be in icalenums.c, but were moved into the + icalproperty, icalparameter, icalvalue, or icalcomponent modules. */ + +/* const char* icalproperty_kind_to_string(icalproperty_kind kind);*/ +#define icalenum_property_kind_to_string(x) icalproperty_kind_to_string(x) + +/*icalproperty_kind icalproperty_string_to_kind(const char* string)*/ +#define icalenum_string_to_property_kind(x) icalproperty_string_to_kind(x) + +/*icalvalue_kind icalproperty_kind_to_value_kind(icalproperty_kind kind);*/ +#define icalenum_property_kind_to_value_kind(x) icalproperty_kind_to_value_kind(x) + +/*const char* icalenum_method_to_string(icalproperty_method);*/ +#define icalenum_method_to_string(x) icalproperty_method_to_string(x) + +/*icalproperty_method icalenum_string_to_method(const char* string);*/ +#define icalenum_string_to_method(x) icalproperty_string_to_method(x) + +/*const char* icalenum_status_to_string(icalproperty_status);*/ +#define icalenum_status_to_string(x) icalproperty_status_to_string(x) + +/*icalproperty_status icalenum_string_to_status(const char* string);*/ +#define icalenum_string_to_status(x) icalproperty_string_to_status(x) + +/*icalvalue_kind icalenum_string_to_value_kind(const char* str);*/ +#define icalenum_string_to_value_kind(x) icalvalue_string_to_kind(x) + +/*const char* icalenum_value_kind_to_string(icalvalue_kind kind);*/ +#define icalenum_value_kind_to_string(x) icalvalue_kind_to_string(x) + +/*const char* icalenum_component_kind_to_string(icalcomponent_kind kind);*/ +#define icalenum_component_kind_to_string(x) icalcomponent_kind_to_string(x) + +/*icalcomponent_kind icalenum_string_to_component_kind(const char* string);*/ +#define icalenum_string_to_component_kind(x) icalcomponent_string_to_kind(x) + + +#endif /* !ICALENUMS_H */ + diff --git a/mozilla/calendar/libical/src/libical/icalerror.c b/mozilla/calendar/libical/src/libical/icalerror.c new file mode 100644 index 00000000000..e80a3eb63df --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icalerror.c @@ -0,0 +1,251 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: icalerror.c + CREATOR: eric 16 May 1999 + + $Id: icalerror.c,v 1.17 2002/10/09 20:48:08 acampi Exp $ + $Locker: $ + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icalerror.c + + ======================================================================*/ + + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include /* for malloc() */ +#include /* for strcmp */ +#include "icalerror.h" + +#ifdef HAVE_PTHREAD +#include + +static pthread_key_t icalerrno_key; +static pthread_once_t icalerrno_key_once = PTHREAD_ONCE_INIT; + +static void icalerrno_destroy(void* buf) { + free(buf); + pthread_setspecific(icalerrno_key, NULL); +} + +static void icalerrno_key_alloc(void) { + pthread_key_create(&icalerrno_key, icalerrno_destroy); +} + +icalerrorenum *icalerrno_return(void) { + icalerrorenum *_errno; + + pthread_once(&icalerrno_key_once, icalerrno_key_alloc); + + _errno = (icalerrorenum*) pthread_getspecific(icalerrno_key); + + if (!_errno) { + _errno = malloc(sizeof(icalerrorenum)); + *_errno = ICAL_NO_ERROR; + pthread_setspecific(icalerrno_key, _errno); + } + return _errno; +} + +#else + +static icalerrorenum icalerrno_storage = ICAL_NO_ERROR; + +icalerrorenum *icalerrno_return(void) { + return &icalerrno_storage; +} + +#endif + + +static int foo; + +void icalerror_stop_here(void) +{ + foo++; /* Keep optimizers from removing routine */ +} + +void icalerror_crash_here(void) +{ + int *p=0; + *p = 1; + + assert( *p); +} + +#ifdef ICAL_SETERROR_ISFUNC +void icalerror_set_errno(icalerrorenum x) +{ + icalerrno = x; + if(icalerror_get_error_state(x)==ICAL_ERROR_FATAL || + (icalerror_get_error_state(x)==ICAL_ERROR_DEFAULT && + icalerror_errors_are_fatal == 1 )){ + icalerror_warn(icalerror_strerror(x)); + assert(0); + } + +} +#endif + +void icalerror_clear_errno() { + + icalerrno = ICAL_NO_ERROR; +} + +#ifdef ICAL_ERRORS_ARE_FATAL +int icalerror_errors_are_fatal = 1; +#else +int icalerror_errors_are_fatal = 0; +#endif + +struct icalerror_state { + icalerrorenum error; + icalerrorstate state; +}; + +static struct icalerror_state error_state_map[] = +{ + { ICAL_BADARG_ERROR,ICAL_ERROR_DEFAULT}, + { ICAL_NEWFAILED_ERROR,ICAL_ERROR_DEFAULT}, + { ICAL_ALLOCATION_ERROR,ICAL_ERROR_DEFAULT}, + { ICAL_MALFORMEDDATA_ERROR,ICAL_ERROR_DEFAULT}, + { ICAL_PARSE_ERROR,ICAL_ERROR_DEFAULT}, + { ICAL_INTERNAL_ERROR,ICAL_ERROR_DEFAULT}, + { ICAL_FILE_ERROR,ICAL_ERROR_DEFAULT}, + { ICAL_USAGE_ERROR,ICAL_ERROR_DEFAULT}, + { ICAL_UNIMPLEMENTED_ERROR,ICAL_ERROR_DEFAULT}, + { ICAL_UNKNOWN_ERROR,ICAL_ERROR_DEFAULT}, + { ICAL_NO_ERROR,ICAL_ERROR_DEFAULT} + +}; + +struct icalerror_string_map { + const char* str; + icalerrorenum error; + char name[160]; +}; + +static struct icalerror_string_map string_map[] = +{ + {"BADARG",ICAL_BADARG_ERROR,"BADARG: Bad argument to function"}, + { "NEWFAILED",ICAL_NEWFAILED_ERROR,"NEWFAILED: Failed to create a new object via a *_new() routine"}, + { "ALLOCATION",ICAL_ALLOCATION_ERROR,"ALLOCATION: Failed to allocate new memory"}, + {"MALFORMEDDATA",ICAL_MALFORMEDDATA_ERROR,"MALFORMEDDATA: An input string was not correctly formed or a component has missing or extra properties"}, + { "PARSE",ICAL_PARSE_ERROR,"PARSE: Failed to parse a part of an iCal component"}, + {"INTERNAL",ICAL_INTERNAL_ERROR,"INTERNAL: Random internal error. This indicates an error in the library code, not an error in use"}, + { "FILE",ICAL_FILE_ERROR,"FILE: An operation on a file failed. Check errno for more detail."}, + { "USAGE",ICAL_USAGE_ERROR,"USAGE: Failed to propertyl sequence calls to a set of interfaces"}, + { "UNIMPLEMENTED",ICAL_UNIMPLEMENTED_ERROR,"UNIMPLEMENTED: This feature has not been implemented"}, + { "NO",ICAL_NO_ERROR,"NO: No error"}, + {"UNKNOWN",ICAL_UNKNOWN_ERROR,"UNKNOWN: Unknown error type -- icalerror_strerror() was probably given bad input"} +}; + + +icalerrorenum icalerror_error_from_string(const char* str){ + + icalerrorenum e; + int i = 0; + + for( i = 0; string_map[i].error != ICAL_NO_ERROR; i++){ + if (strcmp(string_map[i].str,str) == 0){ + e = string_map[i].error; + } + } + + return e; +} + +icalerrorstate icalerror_supress(const char* error){ + + icalerrorenum e = icalerror_error_from_string(error); + icalerrorstate es; + + if (e == ICAL_NO_ERROR){ + return ICAL_ERROR_UNKNOWN; + } + + + es = icalerror_get_error_state(e); + icalerror_set_error_state(e,ICAL_ERROR_NONFATAL); + + return es; +} + +char* icalerror_perror() +{ + return icalerror_strerror(icalerrno); +} + +void icalerror_restore(const char* error, icalerrorstate es){ + + + icalerrorenum e = icalerror_error_from_string(error); + + if (e != ICAL_NO_ERROR){ + icalerror_set_error_state(e,es); + } + +} + + + +void icalerror_set_error_state( icalerrorenum error, + icalerrorstate state) +{ + int i; + + for(i = 0; error_state_map[i].error!= ICAL_NO_ERROR;i++){ + if(error_state_map[i].error == error){ + error_state_map[i].state = state; + } + } +} + +icalerrorstate icalerror_get_error_state( icalerrorenum error) +{ + int i; + + for(i = 0; error_state_map[i].error!= ICAL_NO_ERROR;i++){ + if(error_state_map[i].error == error){ + return error_state_map[i].state; + } + } + + return ICAL_ERROR_UNKNOWN; +} + + + + +char* icalerror_strerror(icalerrorenum e) { + + int i; + + for (i=0; string_map[i].error != ICAL_UNKNOWN_ERROR; i++) { + if (string_map[i].error == e) { + return string_map[i].name; + } + } + + return string_map[i].name; /* Return string for ICAL_UNKNOWN_ERROR*/ + +} + + + diff --git a/mozilla/calendar/libical/src/libical/icalerror.h b/mozilla/calendar/libical/src/libical/icalerror.h new file mode 100644 index 00000000000..18ecc3b66a4 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icalerror.h @@ -0,0 +1,160 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalerror.h + CREATOR: eric 09 May 1999 + + $Id: icalerror.h,v 1.14 2002/07/21 14:58:17 lindner Exp $ + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icalerror.h + +======================================================================*/ + + +#ifndef ICALERROR_H +#define ICALERROR_H + +#include +#include /* For icalerror_warn() */ + + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#define ICAL_SETERROR_ISFUNC + + +/** This routine is called before any error is triggered. It is called + by icalerror_set_errno, so it does not appear in all of the macros + below */ +void icalerror_stop_here(void); + +void icalerror_crash_here(void); + +typedef enum icalerrorenum { + ICAL_NO_ERROR, /* icalerrno may not be initialized - put it first so and pray that the compiler initialize things to zero */ + ICAL_BADARG_ERROR, + ICAL_NEWFAILED_ERROR, + ICAL_ALLOCATION_ERROR, + ICAL_MALFORMEDDATA_ERROR, + ICAL_PARSE_ERROR, + ICAL_INTERNAL_ERROR, /* Like assert --internal consist. prob */ + ICAL_FILE_ERROR, + ICAL_USAGE_ERROR, + ICAL_UNIMPLEMENTED_ERROR, + ICAL_UNKNOWN_ERROR /* Used for problems in input to icalerror_strerror()*/ + +} icalerrorenum; + +icalerrorenum * icalerrno_return(void); +#define icalerrno (*(icalerrno_return())) + +/** If true, libicl aborts after a call to icalerror_set_error + * + * @warning NOT THREAD SAFE -- recommended that you do not change + * this in a multithreaded program. + */ +extern int icalerror_errors_are_fatal; + +/* Warning messages */ + +#ifdef __GNUC__ca +#define icalerror_warn(message) {fprintf(stderr,"%s(), %s:%d: %s\n",__FUNCTION__,__FILE__,__LINE__,message);} +#else /* __GNU_C__ */ +#define icalerror_warn(message) {fprintf(stderr,"%s:%d: %s\n",__FILE__,__LINE__,message);} +#endif /* __GNU_C__ */ + + +void icalerror_clear_errno(void); +void _icalerror_set_errno(icalerrorenum); + +/* Make an individual error fatal or non-fatal. */ +typedef enum icalerrorstate { + ICAL_ERROR_FATAL, /* Not fata */ + ICAL_ERROR_NONFATAL, /* Fatal */ + ICAL_ERROR_DEFAULT, /* Use the value of icalerror_errors_are_fatal*/ + ICAL_ERROR_UNKNOWN /* Asked state for an unknown error type */ +} icalerrorstate ; + +char* icalerror_strerror(icalerrorenum e); +char* icalerror_perror(); +void icalerror_set_error_state( icalerrorenum error, icalerrorstate); +icalerrorstate icalerror_get_error_state( icalerrorenum error); + +#ifndef ICAL_SETERROR_ISFUNC +#define icalerror_set_errno(x) \ +icalerrno = x; \ +if(icalerror_get_error_state(x)==ICAL_ERROR_FATAL || \ + (icalerror_get_error_state(x)==ICAL_ERROR_DEFAULT && \ + icalerror_errors_are_fatal == 1 )){ \ + icalerror_warn(icalerror_strerror(x)); \ + assert(0); \ +} +#else +void icalerror_set_errno(icalerrorenum x); +#endif + +#ifdef ICAL_ERRORS_ARE_FATAL +#undef NDEBUG +#endif + +#define icalerror_check_value_type(value,type); +#define icalerror_check_property_type(value,type); +#define icalerror_check_parameter_type(value,type); +#define icalerror_check_component_type(value,type); + +/* Assert with a message */ +#ifdef ICAL_ERRORS_ARE_FATAL + +#ifdef __GNUC__ +#define icalerror_assert(test,message) if(!(test)){fprintf(stderr,"%s(), %s:%d: %s\n",__FUNCTION__,__FILE__,__LINE__,message);icalerror_stop_here(); abort();} +#else /*__GNUC__*/ +#define icalerror_assert(test,message) if(!(test)){fprintf(stderr,"%s:%d: %s\n",__FILE__,__LINE__,message);icalerror_stop_here(); abort();} +#endif /*__GNUC__*/ + +#else /* ICAL_ERRORS_ARE_FATAL */ +#define icalerror_assert(test,message) +#endif /* ICAL_ERRORS_ARE_FATAL */ + +/* Check & abort if check fails */ +#define icalerror_check_arg(test,arg) if(!(test)) { icalerror_set_errno(ICAL_BADARG_ERROR); } + +/* Check & return void if check fails*/ +#define icalerror_check_arg_rv(test,arg) if(!(test)) {icalerror_set_errno(ICAL_BADARG_ERROR); return; } + +/* Check & return 0 if check fails*/ +#define icalerror_check_arg_rz(test,arg) if(!(test)) { icalerror_set_errno(ICAL_BADARG_ERROR); return 0;} + +/* Check & return an error if check fails*/ +#define icalerror_check_arg_re(test,arg,error) if(!(test)) { icalerror_stop_here(); assert(0); return error;} + +/* Check & return something*/ +#define icalerror_check_arg_rx(test,arg,x) if(!(test)) { icalerror_set_errno(ICAL_BADARG_ERROR); return x;} + + + +/* String interfaces to set an error to NONFATAL and restore it to its + original value */ + +icalerrorstate icalerror_supress(const char* error); +void icalerror_restore(const char* error, icalerrorstate es); + + +#endif /* !ICALERROR_H */ + + + diff --git a/mozilla/calendar/libical/src/libical/icallangbind.c b/mozilla/calendar/libical/src/libical/icallangbind.c new file mode 100644 index 00000000000..edfb1bae69d --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icallangbind.c @@ -0,0 +1,312 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: icallangbind.c + CREATOR: eric 15 dec 2000 + + DESCRIPTION: + + $Id: icallangbind.c,v 1.22 2002/10/24 13:44:30 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 1999 Eric Busboom + http://www.softwarestudio.org + + This package is free software and is provided "as is" without + express or implied warranty. It may be used, redistributed and/or + modified under the same terms as perl itself. ( Either the Artistic + License or the GPL. ) + + ======================================================================*/ + +#include "icalcomponent.h" +#include "icalproperty.h" +#include "icalerror.h" +#include "icalmemory.h" +#include "icalvalue.h" +#include +#include + +#ifdef WIN32 +#define snprintf _snprintf +#define strcasecmp stricmp +#endif + +int* icallangbind_new_array(int size){ + int* p = (int*)malloc(size*sizeof(int)); + return p; /* Caller handles failures */ +} + +void icallangbind_free_array(int* array){ + free(array); +} + +int icallangbind_access_array(int* array, int index) { + return array[index]; +} + +/** Iterators to fetch parameters given property */ + +icalparameter* icallangbind_get_first_parameter(icalproperty *prop) + +{ + icalparameter_kind kind = ICAL_ANY_PARAMETER; + + return icalproperty_get_first_parameter(prop,kind); +} + +icalparameter* icallangbind_get_next_parameter(icalproperty *prop) +{ + icalparameter_kind kind = ICAL_ANY_PARAMETER; + + return icalproperty_get_next_parameter(prop,kind); +} + + +/** Like icalcomponent_get_first_component(), but takes a string for the + kind and can iterate over X properties as if each X name was a + seperate kind */ + +icalproperty* icallangbind_get_first_property(icalcomponent *c, + const char* prop) +{ + icalproperty_kind kind = icalproperty_string_to_kind(prop); + icalproperty *p; + + if (kind == ICAL_NO_PROPERTY){ + return 0; + } + + if(kind == ICAL_X_PROPERTY){ + for(p = icalcomponent_get_first_property(c,kind); + p !=0; + p = icalcomponent_get_next_property(c,kind)){ + + if(strcmp(icalproperty_get_x_name(p),prop) == 0){ + return p; + } + } + } else { + p=icalcomponent_get_first_property(c,kind); + + return p; + } + + return 0; + +} + +icalproperty* icallangbind_get_next_property(icalcomponent *c, + const char* prop) +{ + icalproperty_kind kind = icalenum_string_to_property_kind(prop); + icalproperty *p; + + if (kind == ICAL_NO_PROPERTY){ + return 0; + } + + if(kind == ICAL_X_PROPERTY){ + for(p = icalcomponent_get_next_property(c,kind); + p !=0; + p = icalcomponent_get_next_property(c,kind)){ + + if(strcmp(icalproperty_get_x_name(p),prop) == 0){ + return p; + } + } + } else { + p=icalcomponent_get_next_property(c,kind); + + return p; + } + + return 0; + +} + + +icalcomponent* icallangbind_get_first_component(icalcomponent *c, + const char* comp) +{ + icalcomponent_kind kind = icalenum_string_to_component_kind(comp); + + if (kind == ICAL_NO_COMPONENT){ + return 0; + } + return icalcomponent_get_first_component(c,kind); +} + +icalcomponent* icallangbind_get_next_component(icalcomponent *c, + const char* comp) +{ + icalcomponent_kind kind = icalenum_string_to_component_kind(comp); + + if (kind == ICAL_NO_COMPONENT){ + return 0; + } + return icalcomponent_get_next_component(c,kind); +} + + +#define APPENDS(x) icalmemory_append_string(&buf, &buf_ptr, &buf_size, x); + +#define APPENDC(x) icalmemory_append_char(&buf, &buf_ptr, &buf_size, x); + + +const char* icallangbind_property_eval_string(icalproperty* prop, char* sep) +{ + char tmp[25]; + size_t buf_size = 1024; + char* buf = icalmemory_new_buffer(buf_size); + char* buf_ptr = buf; + icalparameter *param; + + icalvalue* value; + + if( prop == 0){ + return 0; + } + + APPENDS("{ "); + + value = icalproperty_get_value(prop); + + APPENDS(" 'name' "); + APPENDS(sep); + APPENDC('\''); + APPENDS(icalproperty_kind_to_string(icalproperty_isa(prop))); + APPENDC('\''); + + if(value){ + APPENDS(", 'value_type' "); + APPENDS(sep); + APPENDC('\''); + APPENDS(icalvalue_kind_to_string(icalvalue_isa(value))); + APPENDC('\''); + } + + APPENDS(", 'pid' "); + APPENDS(sep); + APPENDC('\''); + snprintf(tmp,25,"%p",prop); + APPENDS(tmp); + APPENDC('\''); + + + if(value){ + switch (icalvalue_isa(value)){ + + case ICAL_ATTACH_VALUE: + case ICAL_BINARY_VALUE: + case ICAL_NO_VALUE: { + icalerror_set_errno(ICAL_INTERNAL_ERROR); + break; + } + + default: + { + const char* str = icalvalue_as_ical_string(value); + char* copy = (char*) malloc(strlen(str)+1); + + const char *i; + char *j; + + if(copy ==0){ + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + break; + } + /* Remove any newlines */ + + for(j=copy, i = str; *i != 0; j++,i++){ + if(*i=='\n'){ + i++; + } + *j = *i; + } + + *j = 0; + + APPENDS(", 'value'"); + APPENDS(sep); + APPENDC('\''); + APPENDS(copy); + APPENDC('\''); + + free(copy); + break; + + } + } + } + + /* Add Parameters */ + + for(param = icalproperty_get_first_parameter(prop,ICAL_ANY_PARAMETER); + param != 0; + param = icalproperty_get_next_parameter(prop,ICAL_ANY_PARAMETER)){ + + const char* str = icalparameter_as_ical_string(param); + char *copy = icalmemory_tmp_copy(str); + char *v; + + if(copy == 0){ + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + continue; + } + + v = strchr(copy,'='); + + + if(v == 0){ + continue; + } + + *v = 0; + + v++; + + APPENDS(", "); + APPENDC('\''); + APPENDS(copy); + APPENDC('\''); + APPENDS(sep); + APPENDC('\''); + APPENDS(v); + APPENDC('\''); + + } + + + APPENDC('}'); + + icalmemory_add_tmp_buffer(buf); + return buf; + +} + +#include "fcntl.h" +int icallangbind_string_to_open_flag(const char* str) +{ + if (strcmp(str,"r") == 0) {return O_RDONLY;} + else if (strcmp(str,"r+") == 0) {return O_RDWR;} + else if (strcmp(str,"w") == 0) {return O_WRONLY;} + else if (strcmp(str,"w+") == 0) {return O_RDWR|O_CREAT;} + else if (strcmp(str,"a") == 0) {return O_WRONLY|O_APPEND;} + else return -1; +} + + +const char* icallangbind_quote_as_ical(const char* str) +{ + size_t buf_size = 2 * strlen(str); + + /* assume every char could be quoted */ + char* buf = icalmemory_new_buffer(buf_size); + int result; + + result = icalvalue_encode_ical_string(str, buf, buf_size); + + icalmemory_add_tmp_buffer(buf); + + return buf; +} diff --git a/mozilla/calendar/libical/src/libical/icallangbind.h b/mozilla/calendar/libical/src/libical/icallangbind.h new file mode 100644 index 00000000000..408117e93fc --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icallangbind.h @@ -0,0 +1,54 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: icallangbind.h + CREATOR: eric 25 jan 2001 + + DESCRIPTION: + + $Id: icallangbind.h,v 1.6 2002/10/24 13:44:30 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 1999 Eric Busboom + http://www.softwarestudio.org + + This package is free software and is provided "as is" without + express or implied warranty. It may be used, redistributed and/or + modified under the same terms as perl itself. ( Either the Artistic + License or the GPL. ) + + ======================================================================*/ + +#ifndef __ICALLANGBIND_H__ +#define __ICALLANGBIND_H__ + +int* icallangbind_new_array(int size); +void icallangbind_free_array(int* array); +int icallangbind_access_array(int* array, int index); +icalproperty* icallangbind_get_property(icalcomponent *c, int n, const char* prop); +const char* icallangbind_get_property_val(icalproperty* p); +const char* icallangbind_get_parameter(icalproperty *p, const char* parameter); +icalcomponent* icallangbind_get_component(icalcomponent *c, const char* comp); + +icalproperty* icallangbind_get_first_property(icalcomponent *c, + const char* prop); + +icalproperty* icallangbind_get_next_property(icalcomponent *c, + const char* prop); + +icalcomponent* icallangbind_get_first_component(icalcomponent *c, + const char* comp); + +icalcomponent* icallangbind_get_next_component(icalcomponent *c, + const char* comp); + +icalparameter* icallangbind_get_first_parameter(icalproperty *prop); + +icalparameter* icallangbind_get_next_parameter(icalproperty *prop); + +const char* icallangbind_property_eval_string(icalproperty* prop, char* sep); + + +int icallangbind_string_to_open_flag(const char* str); + +const char* icallangbind_quote_as_ical(const char* str); +#endif /*__ICALLANGBIND_H__*/ diff --git a/mozilla/calendar/libical/src/libical/icalmemory.c b/mozilla/calendar/libical/src/libical/icalmemory.c new file mode 100644 index 00000000000..6088ed825e1 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icalmemory.c @@ -0,0 +1,367 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: icalmemory.c + CREATOR: eric 30 June 1999 + + $Id: icalmemory.c,v 1.10 2002/08/09 14:28:56 lindner Exp $ + $Locker: $ + + The contents of this file are subject to the Mozilla Public License + Version 1.0 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and + limitations under the License. + + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The Original Code is icalmemory.h + + ======================================================================*/ + +/** + * @file icalmemory.c + * @brief Common memory management routines. + * + * libical often passes strings back to the caller. To make these + * interfaces simple, I did not want the caller to have to pass in a + * memory buffer, but having libical pass out newly allocated memory + * makes it difficult to de-allocate the memory. + * + * The ring buffer in this scheme makes it possible for libical to pass + * out references to memory which the caller does not own, and be able + * to de-allocate the memory later. The ring allows libical to have + * several buffers active simultaneously, which is handy when creating + * string representations of components. + */ + +#define ICALMEMORY_C + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifdef DMALLOC +#include "dmalloc.h" +#endif + +#include "icalmemory.h" +#include "icalerror.h" + +#include /* for printf (debugging) */ +#include /* for malloc, realloc */ +#include /* for memset(), strdup */ + +#ifdef WIN32 +#include +#endif + +#define BUFFER_RING_SIZE 2500 +#define MIN_BUFFER_SIZE 200 + + +/* HACK. Not threadsafe */ + +typedef struct { + int pos; + void *ring[BUFFER_RING_SIZE]; +} buffer_ring; + +void icalmemory_free_tmp_buffer (void* buf); +void icalmemory_free_ring_byval(buffer_ring *br); + +static buffer_ring* global_buffer_ring = 0; + +#ifdef HAVE_PTHREAD +#include + +static pthread_key_t ring_key; +static pthread_once_t ring_key_once = PTHREAD_ONCE_INIT; + +static void ring_destroy(void * buf) { + if (buf) icalmemory_free_ring_byval((buffer_ring *) buf); + pthread_setspecific(ring_key, NULL); +} + +static void ring_key_alloc(void) { + pthread_key_create(&ring_key, ring_destroy); +} +#endif + + +static buffer_ring * buffer_ring_new(void) { + buffer_ring *br; + int i; + + br = (buffer_ring *)malloc(sizeof(buffer_ring)); + + for(i=0; iring[i] = 0; + } + br->pos = 0; + return(br); +} + + +#ifdef HAVE_PTHREAD +static buffer_ring* get_buffer_ring_pthread(void) { + buffer_ring *br; + + pthread_once(&ring_key_once, ring_key_alloc); + + br = pthread_getspecific(ring_key); + + if (!br) { + br = buffer_ring_new(); + pthread_setspecific(ring_key, br); + } + return(br); +} +#endif + +/* get buffer ring via a single global for a non-threaded program */ +static buffer_ring* get_buffer_ring_global(void) { + if (global_buffer_ring == 0) { + global_buffer_ring = buffer_ring_new(); + } + return(global_buffer_ring); +} + +static buffer_ring *get_buffer_ring(void) { +#ifdef HAVE_PTHREAD + return(get_buffer_ring_pthread()); +#else + return get_buffer_ring_global(); +#endif +} + + +/** Add an existing buffer to the buffer ring */ +void icalmemory_add_tmp_buffer(void* buf) +{ + buffer_ring *br = get_buffer_ring(); + + + /* Wrap around the ring */ + if(++(br->pos) == BUFFER_RING_SIZE){ + br->pos = 0; + } + + /* Free buffers as their slots are overwritten */ + if ( br->ring[br->pos] != 0){ + free( br->ring[br->pos]); + } + + /* Assign the buffer to a slot */ + br->ring[br->pos] = buf; +} + + +/** + * Create a new temporary buffer on the ring. Libical owns these and + * will deallocate them. + */ + +void* +icalmemory_tmp_buffer (size_t size) +{ + char *buf; + + if (size < MIN_BUFFER_SIZE){ + size = MIN_BUFFER_SIZE; + } + + buf = (void*)malloc(size); + + if( buf == 0){ + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + return 0; + } + + memset(buf,0,size); + + icalmemory_add_tmp_buffer(buf); + + return buf; +} + +/** get rid of this buffer ring */ +void icalmemory_free_ring_byval(buffer_ring *br) { + int i; + for(i=0; iring[i] != 0){ + free( br->ring[i]); + } + } + free(br); +} + +void icalmemory_free_ring() +{ + buffer_ring *br; + br = get_buffer_ring(); + + icalmemory_free_ring_byval(br); +} + + + +/** Like strdup, but the buffer is on the ring. */ +char* +icalmemory_tmp_copy(const char* str) +{ + char* b = icalmemory_tmp_buffer(strlen(str)+1); + + strcpy(b,str); + + return b; +} + + +char* icalmemory_strdup(const char *s) +{ + return strdup(s); +} + +void +icalmemory_free_tmp_buffer (void* buf) +{ + if(buf == 0) + { + return; + } + + free(buf); +} + + +/* + * These buffer routines create memory the old fashioned way -- so the + * caller will have to deallocate the new memory + */ + +void* icalmemory_new_buffer(size_t size) +{ + void *b = malloc(size); + + if( b == 0){ + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + return 0; + } + + memset(b,0,size); + + return b; +} + +void* icalmemory_resize_buffer(void* buf, size_t size) +{ + void *b = realloc(buf, size); + + if( b == 0){ + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + return 0; + } + + return b; +} + +void icalmemory_free_buffer(void* buf) +{ + free(buf); +} + +void +icalmemory_append_string(char** buf, char** pos, size_t* buf_size, + const char* string) +{ + char *new_buf; + char *new_pos; + + size_t data_length, final_length, string_length; + +#ifndef ICAL_NO_INTERNAL_DEBUG + icalerror_check_arg_rv( (buf!=0),"buf"); + icalerror_check_arg_rv( (*buf!=0),"*buf"); + icalerror_check_arg_rv( (pos!=0),"pos"); + icalerror_check_arg_rv( (*pos!=0),"*pos"); + icalerror_check_arg_rv( (buf_size!=0),"buf_size"); + icalerror_check_arg_rv( (*buf_size!=0),"*buf_size"); + icalerror_check_arg_rv( (string!=0),"string"); +#endif + + string_length = strlen(string); + data_length = (size_t)*pos - (size_t)*buf; + final_length = data_length + string_length; + + if ( final_length >= (size_t) *buf_size) { + + + *buf_size = (*buf_size) * 2 + final_length; + + new_buf = realloc(*buf,*buf_size); + + new_pos = (void*)((size_t)new_buf + data_length); + + *pos = new_pos; + *buf = new_buf; + } + + strcpy(*pos, string); + + *pos += string_length; +} + + +void +icalmemory_append_char(char** buf, char** pos, size_t* buf_size, + char ch) +{ + char *new_buf; + char *new_pos; + + size_t data_length, final_length; + +#ifndef ICAL_NO_INTERNAL_DEBUG + icalerror_check_arg_rv( (buf!=0),"buf"); + icalerror_check_arg_rv( (*buf!=0),"*buf"); + icalerror_check_arg_rv( (pos!=0),"pos"); + icalerror_check_arg_rv( (*pos!=0),"*pos"); + icalerror_check_arg_rv( (buf_size!=0),"buf_size"); + icalerror_check_arg_rv( (*buf_size!=0),"*buf_size"); +#endif + + data_length = (size_t)*pos - (size_t)*buf; + + final_length = data_length + 2; + + if ( final_length > (size_t) *buf_size ) { + + + *buf_size = (*buf_size) * 2 + final_length +1; + + new_buf = realloc(*buf,*buf_size); + + new_pos = (void*)((size_t)new_buf + data_length); + + *pos = new_pos; + *buf = new_buf; + } + + **pos = ch; + *pos += 1; + **pos = 0; +} diff --git a/mozilla/calendar/libical/src/libical/icalmemory.h b/mozilla/calendar/libical/src/libical/icalmemory.h new file mode 100644 index 00000000000..7954983d665 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icalmemory.h @@ -0,0 +1,84 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalmemory.h + CREATOR: eric 30 June 1999 + + + $Id: icalmemory.h,v 1.4 2002/06/11 12:15:11 acampi Exp $ + $Locker: $ + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The Initial Developer of the Original Code is Eric Busboom + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org +======================================================================*/ + +#ifndef ICALMEMORY_H +#define ICALMEMORY_H + +#ifndef WIN32 +#include /* for size_t */ +#else +#include +#endif + +/* Tmp buffers are managed by ical. References can be returned to the + caller, although the caller will not own the memory. */ + +void* icalmemory_tmp_buffer(size_t size); +char* icalmemory_tmp_copy(const char* str); + +/** Add an externally allocated buffer to the ring. */ +void icalmemory_add_tmp_buffer(void*); + + +/** Free all memory used in the ring */ +void icalmemory_free_ring(void); + +/* Non-tmp buffers must be freed. These are mostly wrappers around + * malloc, etc, but are used so the caller can change the memory + * allocators in a future version of the library */ + +void* icalmemory_new_buffer(size_t size); +void* icalmemory_resize_buffer(void* buf, size_t size); +void icalmemory_free_buffer(void* buf); + +/** + icalmemory_append_string will copy the string 'string' to the + buffer 'buf' starting at position 'pos', reallocing 'buf' if it is + too small. 'buf_size' is the size of 'buf' and will be changed if + 'buf' is reallocated. 'pos' will point to the last byte of the new + string in 'buf', usually a '\0' */ + +/* THESE ROUTINES CAN NOT BE USED ON TMP BUFFERS. Only use them on + normally allocated memory, or on buffers created from + icalmemory_new_buffer, never with buffers created by + icalmemory_tmp_buffer. If icalmemory_append_string has to resize a + buffer on the ring, the ring will loose track of it an you will + have memory problems. */ + +void icalmemory_append_string(char** buf, char** pos, size_t* buf_size, + const char* string); + +/** icalmemory_append_char is similar, but is appends a character instead of a string */ +void icalmemory_append_char(char** buf, char** pos, size_t* buf_size, + char ch); + +/** A wrapper around strdup. Partly to trap calls to strdup, partly + because in -ansi, gcc on Red Hat claims that strdup is undeclared */ +char* icalmemory_strdup(const char *s); + +#endif /* !ICALMEMORY_H */ + + + diff --git a/mozilla/calendar/libical/src/libical/icalmime.c b/mozilla/calendar/libical/src/libical/icalmime.c new file mode 100644 index 00000000000..672ae77870b --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icalmime.c @@ -0,0 +1,394 @@ +/* -*- Mode: C -*-*/ +/*====================================================================== + FILE: icalmime.c + CREATOR: eric 26 July 2000 + + + $Id: icalmime.c,v 1.7 2003/05/09 14:30:06 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The Original Code is eric. The Initial Developer of the Original + Code is Eric Busboom + + +======================================================================*/ + +#include "icalmime.h" +#include "icalerror.h" +#include "icalmemory.h" +#include "sspm.h" +#include "stdlib.h" +#include /* For strdup */ +#include /* for snprintf*/ + +#ifdef DMALLOC +#include "dmalloc.h" +#endif + +#ifdef WIN32 +#define snprintf _snprintf +#define strcasecmp stricmp +#endif + +/* These *_part routines are called by the MIME parser via the + local_action_map */ + +struct text_part +{ + char* buf; + char* buf_pos; + size_t buf_size; +}; + +void* icalmime_text_new_part() +{ + +#define BUF_SIZE 2048 + + struct text_part* impl; + + if ( ( impl = (struct text_part*) + malloc(sizeof(struct text_part))) == 0) { + return 0; + } + + impl->buf = icalmemory_new_buffer(BUF_SIZE); + impl->buf_pos = impl->buf; + impl->buf_size = BUF_SIZE; + + return impl; +} +void icalmime_text_add_line(void *part, + struct sspm_header *header, + char* line, size_t size) +{ + struct text_part* impl = (struct text_part*) part; + + icalmemory_append_string(&(impl->buf),&(impl->buf_pos), + &(impl->buf_size),line); + +} + +void* icalmime_textcalendar_end_part(void* part) +{ + + struct text_part* impl = (struct text_part*) part; + icalcomponent *c = icalparser_parse_string(impl->buf); + + icalmemory_free_buffer(impl->buf); + free(impl); + + return c; + +} + +void* icalmime_text_end_part(void* part) +{ + struct text_part* impl = ( struct text_part*) part; + + icalmemory_add_tmp_buffer(impl->buf); + free(impl); + + return impl->buf; +} + +void icalmime_text_free_part(void *part) +{ + part = part; +} + + +/* Ignore Attachments for now */ + +void* icalmime_attachment_new_part() +{ + return 0; +} +void icalmime_attachment_add_line(void *part, struct sspm_header *header, + char* line, size_t size) +{ + part = part; + header = header; + line = line; + size = size; +} + +void* icalmime_attachment_end_part(void* part) +{ + return 0; +} + +void icalmime_attachment_free_part(void *part) +{ +} + + + + +struct sspm_action_map icalmime_local_action_map[] = +{ + {SSPM_TEXT_MAJOR_TYPE,SSPM_CALENDAR_MINOR_TYPE,icalmime_text_new_part,icalmime_text_add_line,icalmime_textcalendar_end_part,icalmime_text_free_part}, + {SSPM_TEXT_MAJOR_TYPE,SSPM_ANY_MINOR_TYPE,icalmime_text_new_part,icalmime_text_add_line,icalmime_text_end_part,icalmime_text_free_part}, + {SSPM_TEXT_MAJOR_TYPE,SSPM_PLAIN_MINOR_TYPE,icalmime_text_new_part,icalmime_text_add_line,icalmime_text_end_part,icalmime_text_free_part}, + {SSPM_APPLICATION_MAJOR_TYPE,SSPM_CALENDAR_MINOR_TYPE,icalmime_attachment_new_part,icalmime_attachment_add_line,icalmime_attachment_end_part,icalmime_attachment_free_part}, + {SSPM_IMAGE_MAJOR_TYPE,SSPM_CALENDAR_MINOR_TYPE,icalmime_attachment_new_part,icalmime_attachment_add_line,icalmime_attachment_end_part,icalmime_attachment_free_part}, + {SSPM_AUDIO_MAJOR_TYPE,SSPM_CALENDAR_MINOR_TYPE,icalmime_attachment_new_part,icalmime_attachment_add_line,icalmime_attachment_end_part,icalmime_attachment_free_part}, + {SSPM_IMAGE_MAJOR_TYPE,SSPM_CALENDAR_MINOR_TYPE,icalmime_attachment_new_part,icalmime_attachment_add_line,icalmime_attachment_end_part,icalmime_attachment_free_part}, + {SSPM_UNKNOWN_MAJOR_TYPE,SSPM_UNKNOWN_MINOR_TYPE,0,0,0,0} +}; + +#define NUM_PARTS 100 /* HACK. Hard Limit */ + + + +struct sspm_part* icalmime_make_part(icalcomponent* comp) +{ + comp = comp; + return 0; +} + +char* icalmime_as_mime_string(char* icalcomponent); + +icalcomponent* icalmime_parse(char* (*get_string)(char *s, size_t size, + void *d), + void *data) +{ + struct sspm_part *parts; + int i, last_level=0; + icalcomponent *root=0, *parent=0, *comp=0, *last = 0; + + if ( (parts = (struct sspm_part *) + malloc(NUM_PARTS*sizeof(struct sspm_part)))==0) { + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + return 0; + } + + memset(parts,0,sizeof(parts)); + + sspm_parse_mime(parts, + NUM_PARTS, /* Max parts */ + icalmime_local_action_map, /* Actions */ + get_string, + data, /* data for get_string*/ + 0 /* First header */); + + + + for(i = 0; i last_level){ + + parent = last; + icalcomponent_add_component(parent,comp); + + last_level = parts[i].level; + + } else if (parts[i].level < last_level){ + + parent = icalcomponent_get_parent(parent); + icalcomponent_add_component(parent,comp); + + last_level = parts[i].level; + } else { + assert(0); + } + + last = comp; + last_level = parts[i].level; + assert(parts[i].data == 0); + } + + sspm_free_parts(parts,NUM_PARTS); + free(parts); + + return root; +} + + + +int icalmime_test(char* (*get_string)(char *s, size_t size, void *d), + void *data) +{ + char *out; + struct sspm_part *parts; + int i; + + if ( (parts = (struct sspm_part *) + malloc(NUM_PARTS*sizeof(struct sspm_part)))==0) { + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + return 0; + } + + memset(parts,0,sizeof(parts)); + + sspm_parse_mime(parts, + NUM_PARTS, /* Max parts */ + icalmime_local_action_map, /* Actions */ + get_string, + data, /* data for get_string*/ + 0 /* First header */); + + for(i = 0; i /* For strncpy & size_t */ +#include /* For FILE and fgets and sprintf */ +#include /* for free */ + +#include "icalmemory.h" +#include "icalparser.h" + +#ifdef WIN32 +#define snprintf _snprintf +#define strcasecmp stricmp +#endif + +char* icalparser_get_next_char(char c, char *str, int qm); +char* icalparser_get_next_parameter(char* line,char** end); +char* icalparser_get_next_value(char* line, char **end, icalvalue_kind kind); +char* icalparser_get_prop_name(char* line, char** end); +char* icalparser_get_param_name_and_value(char* line, char **value); + +#define TMP_BUF_SIZE 80 + +struct icalparser_impl +{ + int buffer_full; /* flag indicates that temp is smaller that + data being read into it*/ + int continuation_line; /* last line read was a continuation line */ + size_t tmp_buf_size; + char temp[TMP_BUF_SIZE]; + icalcomponent *root_component; + int version; + int level; + int lineno; + icalparser_state state; + pvl_list components; + + void *line_gen_data; + +}; + + +icalparser* icalparser_new(void) +{ + struct icalparser_impl* impl = 0; + if ( ( impl = (struct icalparser_impl*) + malloc(sizeof(struct icalparser_impl))) == 0) { + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + return 0; + } + + impl->buffer_full = 0; + impl->continuation_line = 0; + impl->tmp_buf_size = sizeof(impl->temp); + memset(impl->temp, 0, sizeof(impl->temp)); + impl->root_component = 0; + impl->version = 0; + impl->level = 0; + impl->lineno = 0; + impl->state = ICALPARSER_SUCCESS; + impl->components = pvl_newlist(); + impl->line_gen_data = 0; + + return (icalparser*)impl; +} + + +void icalparser_free(icalparser* parser) +{ + icalcomponent *c; + + if (parser->root_component != 0){ + icalcomponent_free(parser->root_component); + } + + while( (c=pvl_pop(parser->components)) != 0){ + icalcomponent_free(c); + } + + pvl_free(parser->components); + + free(parser); +} + +void icalparser_set_gen_data(icalparser* parser, void* data) +{ + parser->line_gen_data = data; +} + + +icalvalue* icalvalue_new_From_string_with_error(icalvalue_kind kind, + char* str, + icalproperty **error); + + + +char* icalparser_get_next_char(char c, char *str, int qm) +{ + int quote_mode = 0; + char* p; + + for(p=str; *p!=0; p++){ + if (qm == 1) { + if ( quote_mode == 0 && *p=='"' && *(p-1) != '\\' ){ + quote_mode =1; + continue; + } + + if ( quote_mode == 1 && *p=='"' && *(p-1) != '\\' ){ + quote_mode =0; + continue; + } + } + + if (quote_mode == 0 && *p== c && *(p-1) != '\\' ){ + return p; + } + + } + + return 0; +} + + +/** make a new tmp buffer out of a substring */ +static char* make_segment(char* start, char* end) +{ + char *buf; + size_t size = (size_t)end - (size_t)start; + + buf = icalmemory_new_buffer(size+1); + + + strncpy(buf,start,size); + *(buf+size) = 0; + + return buf; +} + + +char* icalparser_get_prop_name(char* line, char** end) +{ + char* p; + char* v; + char *str; + + p = icalparser_get_next_char(';',line,1); + v = icalparser_get_next_char(':',line,1); + if (p== 0 && v == 0) { + return 0; + } + + /* There is no ';' or, it is after the ';' that marks the beginning of + the value */ + if (v!=0 && ( p == 0 || p > v)){ + str = make_segment(line,v); + *end = v+1; + } else { + str = make_segment(line,p); + *end = p+1; + } + + return str; +} + + +char* icalparser_get_param_name_and_value(char* line, char **value) +{ + char* next; + char *str; + char **end = value; + + *value = NULL; + next = icalparser_get_next_char('=',line,1); + + if (next == 0) { + return 0; + } + + str = make_segment(line,next); + *end = next+1; + if (**end == '"') { + *end = *end+1; + next = icalparser_get_next_char('"',*end,0); + if (next == 0) { + return 0; + } + + *end = make_segment(*end,next); + } + else + *end = make_segment(*end, *end + strlen(*end)); + + return str; +} + + +char* icalparser_get_next_paramvalue(char* line, char **end) +{ + char* next; + char *str; + + next = icalparser_get_next_char(',',line,1); + + if (next == 0){ + next = (char*)(size_t)line+(size_t)strlen(line);\ + } + + if (next == line){ + return 0; + } else { + str = make_segment(line,next); + *end = next+1; + return str; + } +} + + +/** + A property may have multiple values, if the values are seperated by + commas in the content line. This routine will look for the next + comma after line and will set the next place to start searching in + end. */ + +char* icalparser_get_next_value(char* line, char **end, icalvalue_kind kind) +{ + + char* next; + char *p; + char *str; + size_t length = strlen(line); + + p = line; + while(1){ + + next = icalparser_get_next_char(',',p,1); + + /* Unforunately, RFC2445 says that for the RECUR value, COMMA + can both seperate digits in a list, and it can seperate + multiple recurrence specifications. This is not a friendly + part of the spec. This weirdness tries to + distinguish the two uses. it is probably a HACK*/ + + if( kind == ICAL_RECUR_VALUE ) { + if ( next != 0 && + (*end+length) > next+5 && + strncmp(next,"FREQ",4) == 0 + ) { + /* The COMMA was followed by 'FREQ', is it a real seperator*/ + /* Fall through */ + } else if (next != 0){ + /* Not real, get the next COMMA */ + p = next+1; + next = 0; + continue; + } + } + /* ignore all , for query value. select dtstart, dtend etc ... */ + else if( kind == ICAL_QUERY_VALUE) { + if ( next != 0) { + p = next+1; + continue; + } + else + break; + } + + /* If the comma is preceeded by a '\', then it is a literal and + not a value seperator*/ + + if ( (next!=0 && *(next-1) == '\\') || + (next!=0 && *(next-3) == '\\') + ) + /*second clause for '/' is on prev line. HACK may be out of bounds */ + { + p = next+1; + } else { + break; + } + + } + + if (next == 0){ + next = (char*)(size_t)line+length; + *end = next; + } else { + *end = next+1; + } + + if (next == line){ + return 0; + } + + + str = make_segment(line,next); + return str; + +} + +char* icalparser_get_next_parameter(char* line,char** end) +{ + char *next; + char *v; + char *str; + + v = icalparser_get_next_char(':',line,1); + next = icalparser_get_next_char(';', line,1); + + /* There is no ';' or, it is after the ':' that marks the beginning of + the value */ + + if (next == 0 || next > v) { + next = icalparser_get_next_char(':', line,1); + } + + if (next != 0) { + str = make_segment(line,next); + *end = next+1; + return str; + } else { + *end = line; + return 0; + } +} + + +/** + * Get a single property line, from the property name through the + * final new line, and include any continuation lines + */ +char* icalparser_get_line(icalparser *parser, + char* (*line_gen_func)(char *s, size_t size, void *d)) +{ + char *line; + char *line_p; + size_t buf_size = parser->tmp_buf_size; + + line_p = line = icalmemory_new_buffer(buf_size); + line[0] = '\0'; + + /* Read lines by calling line_gen_func and putting the data into + parser->temp. If the line is a continuation line ( begins with a + space after a newline ) then append the data onto line and read + again. Otherwise, exit the loop. */ + + while(1) { + + /* The first part of the loop deals with the temp buffer, + which was read on he last pass through the loop. The + routine is split like this because it has to read lone line + ahead to determine if a line is a continuation line. */ + + + /* The tmp buffer is not clear, so transfer the data in it to the + output. This may be left over from a previous call */ + if (parser->temp[0] != '\0' ) { + + /* If the last position in the temp buffer is occupied, + mark the buffer as full. The means we will do another + read later, because the line is not finished */ + if (parser->temp[parser->tmp_buf_size-1] == 0 && + parser->temp[parser->tmp_buf_size-2] != '\n'&& + parser->temp[parser->tmp_buf_size-2] != 0 ){ + parser->buffer_full = 1; + } else { + parser->buffer_full = 0; + } + + /* Copy the temp to the output and clear the temp buffer. */ + if(parser->continuation_line==1){ + /* back up the pointer to erase the continuation characters */ + parser->continuation_line = 0; + line_p--; + + if ( *(line_p-1) == '\r'){ + line_p--; + } + + /* copy one space up to eliminate the leading space*/ + icalmemory_append_string(&line,&line_p,&buf_size, + parser->temp+1); + + } else { + icalmemory_append_string(&line,&line_p,&buf_size,parser->temp); + } + + parser->temp[0] = '\0' ; + } + + parser->temp[parser->tmp_buf_size-1] = 1; /* Mark end of buffer */ + + /****** Here is where the routine gets string data ******************/ + if ((*line_gen_func)(parser->temp,parser->tmp_buf_size,parser->line_gen_data) + ==0){/* Get more data */ + + /* If the first position is clear, it means we didn't get + any more data from the last call to line_ge_func*/ + if (parser->temp[0] == '\0'){ + + if(line[0] != '\0'){ + /* There is data in the output, so fall trhough and process it*/ + break; + } else { + /* No data in output; return and signal that there + is no more input*/ + free(line); + return 0; + } + } + } + + + /* If the output line ends in a '\n' and the temp buffer + begins with a ' ', then the buffer holds a continuation + line, so keep reading. */ + + if ( line_p > line+1 && *(line_p-1) == '\n' + && (parser->temp[0] == ' ' || parser->temp[0] == '\t') ) { + + parser->continuation_line = 1; + + } else if ( parser->buffer_full == 1 ) { + + /* The buffer was filled on the last read, so read again */ + + } else { + + /* Looks like the end of this content line, so break */ + break; + } + + + } + + /* Erase the final newline and/or carriage return*/ + if ( line_p > line+1 && *(line_p-1) == '\n') { + *(line_p-1) = '\0'; + if ( *(line_p-2) == '\r'){ + *(line_p-2) = '\0'; + } + + } else { + *(line_p) = '\0'; + } + + return line; + +} + +static void insert_error(icalcomponent* comp, char* text, + char* message, icalparameter_xlicerrortype type) +{ + char temp[1024]; + + if (text == 0){ + snprintf(temp,1024,"%s:",message); + } else { + snprintf(temp,1024,"%s: %s",message,text); + } + + icalcomponent_add_property + (comp, + icalproperty_vanew_xlicerror( + temp, + icalparameter_new_xlicerrortype(type), + 0)); +} + + +static int line_is_blank(char* line){ + int i=0; + + for(i=0; *(line+i)!=0; i++){ + char c = *(line+i); + + if(c != ' ' && c != '\n' && c != '\t'){ + return 0; + } + } + + return 1; +} + +icalcomponent* icalparser_parse(icalparser *parser, + char* (*line_gen_func)(char *s, size_t size, + void* d)) +{ + + char* line; + icalcomponent *c=0; + icalcomponent *root=0; + icalerrorstate es = icalerror_get_error_state(ICAL_MALFORMEDDATA_ERROR); + int cont; + + icalerror_check_arg_rz((parser !=0),"parser"); + + icalerror_set_error_state(ICAL_MALFORMEDDATA_ERROR,ICAL_ERROR_NONFATAL); + + do{ + line = icalparser_get_line(parser, line_gen_func); + + if ((c = icalparser_add_line(parser,line)) != 0){ + + if(icalcomponent_get_parent(c) !=0){ + /* This is bad news... assert? */ + } + + assert(parser->root_component == 0); + assert(pvl_count(parser->components) ==0); + + if (root == 0){ + /* Just one component */ + root = c; + } else if(icalcomponent_isa(root) != ICAL_XROOT_COMPONENT) { + /*Got a second component, so move the two components under + an XROOT container */ + icalcomponent *tempc = icalcomponent_new(ICAL_XROOT_COMPONENT); + icalcomponent_add_component(tempc, root); + icalcomponent_add_component(tempc, c); + root = tempc; + } else if(icalcomponent_isa(root) == ICAL_XROOT_COMPONENT) { + /* Already have an XROOT container, so add the component + to it*/ + icalcomponent_add_component(root, c); + + } else { + /* Badness */ + assert(0); + } + + c = 0; + + } + cont = 0; + if(line != 0){ + icalmemory_free_buffer(line); + cont = 1; + } + } while ( cont ); + + icalerror_set_error_state(ICAL_MALFORMEDDATA_ERROR,es); + + return root; + +} + + +icalcomponent* icalparser_add_line(icalparser* parser, + char* line) +{ + char *str; + char *end; + int vcount = 0; + icalproperty *prop; + icalproperty_kind prop_kind; + icalvalue *value; + icalvalue_kind value_kind = ICAL_NO_VALUE; + + + icalerror_check_arg_rz((parser != 0),"parser"); + + + if (line == 0) + { + parser->state = ICALPARSER_ERROR; + return 0; + } + + if(line_is_blank(line) == 1){ + return 0; + } + + /* Begin by getting the property name at the start of the line. The + property name may end up being "BEGIN" or "END" in which case it + is not really a property, but the marker for the start or end of + a component */ + + end = 0; + str = icalparser_get_prop_name(line, &end); + + if (str == 0 || strlen(str) == 0 ){ + /* Could not get a property name */ + icalcomponent *tail = pvl_data(pvl_tail(parser->components)); + + if (tail){ + insert_error(tail,line, + "Got a data line, but could not find a property name or component begin tag", + ICAL_XLICERRORTYPE_COMPONENTPARSEERROR); + } + tail = 0; + parser->state = ICALPARSER_ERROR; + return 0; + } + + /********************************************************************** + * Handle begin and end of components + **********************************************************************/ + /* If the property name is BEGIN or END, we are actually + starting or ending a new component */ + + + if(strcmp(str,"BEGIN") == 0){ + icalcomponent *c; + icalcomponent_kind comp_kind; + + icalmemory_free_buffer(str); + parser->level++; + str = icalparser_get_next_value(end,&end, value_kind); + + + comp_kind = icalenum_string_to_component_kind(str); + + + if (comp_kind == ICAL_NO_COMPONENT){ + + + c = icalcomponent_new(ICAL_XLICINVALID_COMPONENT); + insert_error(c,str,"Parse error in component name", + ICAL_XLICERRORTYPE_COMPONENTPARSEERROR); + } + + c = icalcomponent_new(comp_kind); + + if (c == 0){ + c = icalcomponent_new(ICAL_XLICINVALID_COMPONENT); + insert_error(c,str,"Parse error in component name", + ICAL_XLICERRORTYPE_COMPONENTPARSEERROR); + } + + pvl_push(parser->components,c); + + parser->state = ICALPARSER_BEGIN_COMP; + if (str) + icalmemory_free_buffer(str); + return 0; + + } else if (strcmp(str,"END") == 0 ) { + icalcomponent* tail; + + icalmemory_free_buffer(str); + parser->level--; + str = icalparser_get_next_value(end,&end, value_kind); + if (str) + icalmemory_free_buffer(str); + + /* Pop last component off of list and add it to the second-to-last*/ + parser->root_component = pvl_pop(parser->components); + + tail = pvl_data(pvl_tail(parser->components)); + + if(tail != 0){ + icalcomponent_add_component(tail,parser->root_component); + } + + tail = 0; + + /* Return the component if we are back to the 0th level */ + if (parser->level == 0){ + icalcomponent *rtrn; + + if(pvl_count(parser->components) != 0){ + /* There are still components on the stack -- this means + that one of them did not have a proper "END" */ + pvl_push(parser->components,parser->root_component); + icalparser_clean(parser); /* may reset parser->root_component*/ + } + + assert(pvl_count(parser->components) == 0); + + parser->state = ICALPARSER_SUCCESS; + rtrn = parser->root_component; + parser->root_component = 0; + return rtrn; + + } else { + parser->state = ICALPARSER_END_COMP; + return 0; + } + } + + + /* There is no point in continuing if we have not seen a + component yet */ + + if(pvl_data(pvl_tail(parser->components)) == 0){ + parser->state = ICALPARSER_ERROR; + icalmemory_free_buffer(str); + return 0; + } + + + /********************************************************************** + * Handle property names + **********************************************************************/ + + /* At this point, the property name really is a property name, + (Not a component name) so make a new property and add it to + the component */ + + + prop_kind = icalproperty_string_to_kind(str); + + prop = icalproperty_new(prop_kind); + + if (prop != 0){ + icalcomponent *tail = pvl_data(pvl_tail(parser->components)); + + if(prop_kind==ICAL_X_PROPERTY){ + icalproperty_set_x_name(prop,str); + } + icalmemory_free_buffer(str); + + icalcomponent_add_property(tail, prop); + + /* Set the value kind for the default for this type of + property. This may be re-set by a VALUE parameter */ + value_kind = icalproperty_kind_to_value_kind(icalproperty_isa(prop)); + + } else { + icalcomponent* tail = pvl_data(pvl_tail(parser->components)); + + insert_error(tail,str,"Parse error in property name", + ICAL_XLICERRORTYPE_PROPERTYPARSEERROR); + + tail = 0; + parser->state = ICALPARSER_ERROR; + icalmemory_free_buffer(str); + return 0; + } + + /********************************************************************** + * Handle parameter values + **********************************************************************/ + + /* Now, add any parameters to the last property */ + + while(1) { + + if (*(end-1) == ':'){ + /* if the last seperator was a ":" and the value is a + URL, icalparser_get_next_parameter will find the + ':' in the URL, so better break now. */ + break; + } + + str = icalparser_get_next_parameter(end,&end); + + if (str != 0){ + char* name; + char* pvalue; + + icalparameter *param = 0; + icalparameter_kind kind; + icalcomponent *tail = pvl_data(pvl_tail(parser->components)); + + name = icalparser_get_param_name_and_value(str,&pvalue); + + if (name == 0){ + /* 'tail' defined above */ + insert_error(tail, str, "Cant parse parameter name", + ICAL_XLICERRORTYPE_PARAMETERNAMEPARSEERROR); + tail = 0; + icalmemory_free_buffer(str); + if (pvalue) + icalmemory_free_buffer(pvalue); + break; + } + + kind = icalparameter_string_to_kind(name); + + if(kind == ICAL_X_PARAMETER){ + param = icalparameter_new(ICAL_X_PARAMETER); + + if(param != 0){ + icalparameter_set_xname(param,name); + icalparameter_set_xvalue(param,pvalue); + } + + + } else if (kind != ICAL_NO_PARAMETER){ + param = icalparameter_new_from_value_string(kind,pvalue); + } else { + /* Error. Failed to parse the parameter*/ + /* 'tail' defined above */ + insert_error(tail, str, "Cant parse parameter name", + ICAL_XLICERRORTYPE_PARAMETERNAMEPARSEERROR); + tail = 0; + parser->state = ICALPARSER_ERROR; + icalmemory_free_buffer(str); + icalmemory_free_buffer(name); + if (pvalue) + icalmemory_free_buffer(pvalue); + return 0; + } + icalmemory_free_buffer(name); + if (pvalue) + icalmemory_free_buffer(pvalue); + + + if (param == 0){ + /* 'tail' defined above */ + insert_error(tail,str,"Cant parse parameter value", + ICAL_XLICERRORTYPE_PARAMETERVALUEPARSEERROR); + + tail = 0; + parser->state = ICALPARSER_ERROR; + icalmemory_free_buffer(str); + continue; + } + + /* If it is a VALUE parameter, set the kind of value*/ + if (icalparameter_isa(param)==ICAL_VALUE_PARAMETER){ + + value_kind = (icalvalue_kind) + icalparameter_value_to_value_kind( + icalparameter_get_value(param) + ); + + if (value_kind == ICAL_NO_VALUE){ + + /* Ooops, could not parse the value of the + parameter ( it was not one of the defined + values ), so reset the value_kind */ + + insert_error( + tail, str, + "Got a VALUE parameter with an unknown type", + ICAL_XLICERRORTYPE_PARAMETERVALUEPARSEERROR); + icalparameter_free(param); + + value_kind = + icalproperty_kind_to_value_kind( + icalproperty_isa(prop)); + + icalparameter_free(param); + tail = 0; + parser->state = ICALPARSER_ERROR; + icalmemory_free_buffer(str); + return 0; + } + } + + /* Everything is OK, so add the parameter */ + icalproperty_add_parameter(prop,param); + tail = 0; + icalmemory_free_buffer(str); + + } else { /* if ( str != 0) */ + /* If we did not get a param string, go on to looking + for a value */ + break; + } /* if ( str != 0) */ + + } /* while(1) */ + + /********************************************************************** + * Handle values + **********************************************************************/ + + /* Look for values. If there are ',' characters in the values, + then there are multiple values, so clone the current + parameter and add one part of the value to each clone */ + + vcount=0; + while(1) { + str = icalparser_get_next_value(end,&end, value_kind); + + if (str != 0){ + + if (vcount > 0){ + /* Actually, only clone after the second value */ + icalproperty* clone = icalproperty_new_clone(prop); + icalcomponent* tail = pvl_data(pvl_tail(parser->components)); + + icalcomponent_add_property(tail, clone); + prop = clone; + tail = 0; + } + + value = icalvalue_new_from_string(value_kind, str); + + /* Don't add properties without value */ + if (value == 0){ + char temp[200]; /* HACK */ + + icalproperty_kind prop_kind = icalproperty_isa(prop); + icalcomponent* tail = pvl_data(pvl_tail(parser->components)); + + sprintf(temp,"Cant parse as %s value in %s property. Removing entire property", + icalvalue_kind_to_string(value_kind), + icalproperty_kind_to_string(prop_kind)); + + insert_error(tail, str, temp, + ICAL_XLICERRORTYPE_VALUEPARSEERROR); + + /* Remove the troublesome property */ + icalcomponent_remove_property(tail,prop); + icalproperty_free(prop); + prop = 0; + tail = 0; + parser->state = ICALPARSER_ERROR; + icalmemory_free_buffer(str); + return 0; + + } else { + vcount++; + icalproperty_set_value(prop, value); + icalmemory_free_buffer(str); + } + + + } else { + if (vcount == 0){ + char temp[200]; /* HACK */ + + icalproperty_kind prop_kind = icalproperty_isa(prop); + icalcomponent *tail = pvl_data(pvl_tail(parser->components)); + + sprintf(temp,"No value for %s property. Removing entire property", + icalproperty_kind_to_string(prop_kind)); + + insert_error(tail, str, temp, + ICAL_XLICERRORTYPE_VALUEPARSEERROR); + + /* Remove the troublesome property */ + icalcomponent_remove_property(tail,prop); + icalproperty_free(prop); + prop = 0; + tail = 0; + parser->state = ICALPARSER_ERROR; + return 0; + } else { + + break; + } + } + } + + /**************************************************************** + * End of component parsing. + *****************************************************************/ + + if (pvl_data(pvl_tail(parser->components)) == 0 && + parser->level == 0){ + /* HACK. Does this clause ever get executed? */ + parser->state = ICALPARSER_SUCCESS; + assert(0); + return parser->root_component; + } else { + parser->state = ICALPARSER_IN_PROGRESS; + return 0; + } + +} + +icalparser_state icalparser_get_state(icalparser* parser) +{ + return parser->state; + +} + +icalcomponent* icalparser_clean(icalparser* parser) +{ + icalcomponent *tail; + + icalerror_check_arg_rz((parser != 0 ),"parser"); + + /* We won't get a clean exit if some components did not have an + "END" tag. Clear off any component that may be left in the list */ + + while((tail=pvl_data(pvl_tail(parser->components))) != 0){ + + insert_error(tail," ", + "Missing END tag for this component. Closing component at end of input.", + ICAL_XLICERRORTYPE_COMPONENTPARSEERROR); + + + parser->root_component = pvl_pop(parser->components); + tail=pvl_data(pvl_tail(parser->components)); + + if(tail != 0){ + if(icalcomponent_get_parent(parser->root_component)!=0){ + icalerror_warn("icalparser_clean is trying to attach a component for the second time"); + } else { + icalcomponent_add_component(tail,parser->root_component); + } + } + + } + + return parser->root_component; + +} + +struct slg_data { + const char* pos; + const char* str; +}; + + +char* icalparser_string_line_generator(char *out, size_t buf_size, void *d) +{ + char *n; + size_t size; + struct slg_data* data = (struct slg_data*)d; + + if(data->pos==0){ + data->pos=data->str; + } + + /* If the pointer is at the end of the string, we are done */ + if (*(data->pos)==0){ + return 0; + } + + n = strchr(data->pos,'\n'); + + if (n == 0){ + size = strlen(data->pos); + } else { + n++; /* include newline in output */ + size = (n-data->pos); + } + + if (size > buf_size-1){ + size = buf_size-1; + } + + + strncpy(out,data->pos,size); + + *(out+size) = '\0'; + + data->pos += size; + + return out; +} + +icalcomponent* icalparser_parse_string(const char* str) +{ + icalcomponent *c; + struct slg_data d; + icalparser *p; + + icalerrorstate es = icalerror_get_error_state(ICAL_MALFORMEDDATA_ERROR); + + d.pos = 0; + d.str = str; + + p = icalparser_new(); + icalparser_set_gen_data(p,&d); + + icalerror_set_error_state(ICAL_MALFORMEDDATA_ERROR,ICAL_ERROR_NONFATAL); + + c = icalparser_parse(p,icalparser_string_line_generator); + + icalerror_set_error_state(ICAL_MALFORMEDDATA_ERROR,es); + + icalparser_free(p); + + return c; + +} diff --git a/mozilla/calendar/libical/src/libical/icalparser.h b/mozilla/calendar/libical/src/libical/icalparser.h new file mode 100644 index 00000000000..ee5fee74851 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icalparser.h @@ -0,0 +1,96 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalparser.h + CREATOR: eric 20 April 1999 + + $Id: icalparser.h,v 1.7 2002/06/28 08:55:23 acampi Exp $ + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icalparser.h + +======================================================================*/ + + +#ifndef ICALPARSER_H +#define ICALPARSER_H + +#include "icalenums.h" +#include "icaltypes.h" +#include"icalcomponent.h" + +#include /* For FILE* */ + +typedef struct icalparser_impl icalparser; + + +/** + * @file icalparser.h + * @brief Line-oriented parsing. + * + * Create a new parser via icalparse_new_parser, then add lines one at + * a time with icalparse_add_line(). icalparser_add_line() will return + * non-zero when it has finished with a component. + */ + +typedef enum icalparser_state { + ICALPARSER_ERROR, + ICALPARSER_SUCCESS, + ICALPARSER_BEGIN_COMP, + ICALPARSER_END_COMP, + ICALPARSER_IN_PROGRESS +} icalparser_state; + +icalparser* icalparser_new(void); +icalcomponent* icalparser_add_line(icalparser* parser, char* str ); +icalcomponent* icalparser_clean(icalparser* parser); +icalparser_state icalparser_get_state(icalparser* parser); +void icalparser_free(icalparser* parser); + + +/** + * Message oriented parsing. icalparser_parse takes a string that + * holds the text ( in RFC 2445 format ) and returns a pointer to an + * icalcomponent. The caller owns the memory. line_gen_func is a + * pointer to a function that returns one content line per invocation + */ + +icalcomponent* icalparser_parse(icalparser *parser, + char* (*line_gen_func)(char *s, size_t size, void *d)); + +/** + Set the data that icalparser_parse will give to the line_gen_func + as the parameter 'd' + */ +void icalparser_set_gen_data(icalparser* parser, void* data); + + +icalcomponent* icalparser_parse_string(const char* str); + + +/*********************************************************************** + * Parser support functions + ***********************************************************************/ + +/** Use the flex/bison parser to turn a string into a value type */ +icalvalue* icalparser_parse_value(icalvalue_kind kind, + const char* str, icalcomponent** errors); + +/** Given a line generator function, return a single iCal content line.*/ +char* icalparser_get_line(icalparser* parser, char* (*line_gen_func)(char *s, size_t size, void *d)); + +char* icalparser_string_line_generator(char *out, size_t buf_size, void *d); + +#endif /* !ICALPARSE_H */ diff --git a/mozilla/calendar/libical/src/libical/icalperiod.c b/mozilla/calendar/libical/src/libical/icalperiod.c new file mode 100644 index 00000000000..ecf014348a1 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icalperiod.c @@ -0,0 +1,170 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: icalperiod.c + CREATOR: eric 02 June 2000 + + $Id: icalperiod.c,v 1.11 2002/10/30 21:22:03 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The Original Code is eric. The Initial Developer of the Original + Code is Eric Busboom + + + ======================================================================*/ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "icalperiod.h" + +#include +#include +#include +#include + +#include "icalerror.h" +#include "icalmemory.h" + + + + +struct icalperiodtype icalperiodtype_from_string (const char* str) +{ + + struct icalperiodtype p, null_p; + char *s = icalmemory_strdup(str); + char *start, *end = s; + icalerrorstate es; + + /* Errors are normally generated in the following code, so save + the error state for resoration later */ + + icalerrorenum e = icalerrno; + + p.start = p.end = icaltime_null_time(); + p.duration = icaldurationtype_from_int(0); + + null_p = p; + + if(s == 0) goto error; + + start = s; + end = strchr(s, '/'); + + if(end == 0) goto error; + + *end = 0; + end++; + + p.start = icaltime_from_string(start); + + if (icaltime_is_null_time(p.start)) goto error; + + es = icalerror_get_error_state(ICAL_MALFORMEDDATA_ERROR); + icalerror_set_error_state(ICAL_MALFORMEDDATA_ERROR,ICAL_ERROR_NONFATAL); + + p.end = icaltime_from_string(end); + + icalerror_set_error_state(ICAL_MALFORMEDDATA_ERROR,es); + + + if (icaltime_is_null_time(p.end)){ + + p.duration = icaldurationtype_from_string(end); + + if(icaldurationtype_as_int(p.duration) == 0) goto error; + } + + icalerrno = e; + + icalmemory_free_buffer(s); + + return p; + + error: + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + + if (s) + icalmemory_free_buffer (s); + return null_p; +} + + +const char* icalperiodtype_as_ical_string(struct icalperiodtype p) +{ + + const char* start; + const char* end; + + char *buf; + size_t buf_size = 40; + char* buf_ptr = 0; + + buf = (char*)icalmemory_new_buffer(buf_size); + buf_ptr = buf; + + + start = icaltime_as_ical_string(p.start); + + icalmemory_append_string(&buf, &buf_ptr, &buf_size, start); + + if(!icaltime_is_null_time(p.end)){ + end = icaltime_as_ical_string(p.end); + } else { + end = icaldurationtype_as_ical_string(p.duration); + } + + icalmemory_append_char(&buf, &buf_ptr, &buf_size, '/'); + + icalmemory_append_string(&buf, &buf_ptr, &buf_size, end); + + icalmemory_add_tmp_buffer(buf); + + return buf; +} + + + +struct icalperiodtype icalperiodtype_null_period(void) { + struct icalperiodtype p; + p.start = icaltime_null_time(); + p.end = icaltime_null_time(); + p.duration = icaldurationtype_null_duration(); + + return p; +} +int icalperiodtype_is_null_period(struct icalperiodtype p){ + + if(icaltime_is_null_time(p.start) && + icaltime_is_null_time(p.end) && + icaldurationtype_is_null_duration(p.duration)){ + return 1; + } else { + return 0; + } +} + +int icalperiodtype_is_valid_period(struct icalperiodtype p){ + if(icaltime_is_valid_time(p.start) && + (icaltime_is_valid_time(p.end) || icaltime_is_null_time(p.end)) ) + { + return 1; + } + + return 0; +} + diff --git a/mozilla/calendar/libical/src/libical/icalperiod.h b/mozilla/calendar/libical/src/libical/icalperiod.h new file mode 100644 index 00000000000..fc1e3382e42 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icalperiod.h @@ -0,0 +1,55 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalperiod.h + CREATOR: eric 26 Jan 2001 + + + $Id: icalperiod.h,v 1.4 2002/06/28 11:11:24 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The Original Code is eric. The Initial Developer of the Original + Code is Eric Busboom + + +======================================================================*/ + +#ifndef ICALPERIOD_H +#define ICALPERIOD_H + +#include "icaltime.h" +#include "icalduration.h" + +struct icalperiodtype +{ + struct icaltimetype start; + struct icaltimetype end; + struct icaldurationtype duration; +}; + +struct icalperiodtype icalperiodtype_from_string (const char* str); + +const char* icalperiodtype_as_ical_string(struct icalperiodtype p); + +struct icalperiodtype icalperiodtype_null_period(void); + +int icalperiodtype_is_null_period(struct icalperiodtype p); + +int icalperiodtype_is_valid_period(struct icalperiodtype p); + +#endif /* !ICALTIME_H */ + + + diff --git a/mozilla/calendar/libical/src/libical/icalproperty_cxx.cpp b/mozilla/calendar/libical/src/libical/icalproperty_cxx.cpp new file mode 100644 index 00000000000..1d5cdc30338 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icalproperty_cxx.cpp @@ -0,0 +1,704 @@ +/* -*- Mode: C++ -*- */ + +/** + * @file icalproperty_cxx.cpp + * @author fnguyen (12/10/01) + * @brief Implementation of C++ Wrapper for icalproperty.c + * + * (C) COPYRIGHT 2001, Critical Path + */ + + +#ifndef ICALPROPERTY_CXX_H +#include "icalproperty_cxx.h" +#endif + +#ifndef ICALPARAMETER_CXX_H +#include "icalparameter_cxx.h" +#endif + +#ifndef ICALVALUE_CXX_H +#include "icalvalue_cxx.h" +#endif + +ICalProperty::ICalProperty() : imp(icalproperty_new(ICAL_ANY_PROPERTY)){ +} + +ICalProperty::ICalProperty(const ICalProperty& v) throw(icalerrorenum){ + imp = icalproperty_new_clone(v.imp); + if (!imp) throw icalerrno; +} + +ICalProperty& ICalProperty::operator=(const ICalProperty& v) throw(icalerrorenum) { + if (this == &v) return *this; + + if (imp != NULL) + { + icalproperty_free(imp); + imp = icalproperty_new_clone(v.imp); + if (!imp) throw icalerrno; + } + + return *this; +} +ICalProperty::~ICalProperty(){ + if (imp != NULL) icalproperty_free(imp); +} + +ICalProperty::ICalProperty(icalproperty* v) : imp(v) { +} + +ICalProperty::ICalProperty(string str){ + imp = icalproperty_new_from_string(str); +} + +ICalProperty::ICalProperty(icalproperty_kind kind){ + imp = icalproperty_new(kind); +} + +string ICalProperty::as_ical_string(){ + return (string)icalproperty_as_ical_string(imp); +} +icalproperty_kind ICalProperty::isa(){ + return icalproperty_isa(imp); +} +int ICalProperty::isa_property(void* property){ + return icalproperty_isa_property(property); +} + +int ICalProperty::operator==(ICalProperty& rhs){ + icalparameter_xliccomparetype result; + ICalValue* thisPropValue = this->get_value(); + ICalValue* rhsPropValue = rhs.get_value(); + result = icalvalue_compare((icalvalue*)*thisPropValue, (icalvalue*)*rhsPropValue); + return (result == ICAL_XLICCOMPARETYPE_EQUAL); +} + +void ICalProperty::add_parameter(ICalParameter& parameter){ + icalproperty_add_parameter(imp, parameter); +} +void ICalProperty::set_parameter(ICalParameter ¶meter){ + icalproperty_set_parameter(imp, parameter); +} +void ICalProperty::set_parameter_from_string(string name, string val){ + icalproperty_set_parameter_from_string(imp, name, val); +} +string ICalProperty::get_parameter_as_string(string name){ + return (string)icalproperty_get_parameter_as_string(imp, name); +} +void ICalProperty::remove_parameter(icalparameter_kind kind){ + icalproperty_remove_parameter(imp, kind); +} +int ICalProperty::count_parameters(){ + return icalproperty_count_parameters(imp); +} + +/** Iterate through the parameters */ +ICalParameter* ICalProperty::get_first_parameter(icalparameter_kind kind){ + icalparameter* p = icalproperty_get_first_parameter(imp, kind); + return (p != NULL)? new ICalParameter(p): NULL; +} +ICalParameter* ICalProperty::get_next_parameter(icalparameter_kind kind){ + icalparameter* p = icalproperty_get_next_parameter(imp, kind); + return (p != NULL)? new ICalParameter(p): NULL; +} + +/** Access the value of the property */ +void ICalProperty::set_value(const ICalValue& val){ + icalproperty_set_value(imp, (ICalValue&)val); +} +void ICalProperty::set_value_from_string(string val, string kind){ + icalproperty_set_value_from_string(imp, val, kind); +} + +ICalValue* ICalProperty::get_value(){ + return new ICalValue(icalproperty_get_value(imp)); +} +string ICalProperty::get_value_as_string(){ + return (string)icalproperty_get_value_as_string(imp); +} + +/** Return the name of the property -- the type name converted to a + * string, or the value of get_x_name if the type is X property + */ +string ICalProperty::get_name(){ + return (string)icalproperty_get_property_name(imp); +} + +/* Deal with X properties */ +void ICalProperty::set_x_name(ICalProperty &prop, string name){ + icalproperty_set_x_name(prop, name); +} +string ICalProperty::get_x_name(ICalProperty &prop){ + return (string)icalproperty_get_x_name(prop); +} + +icalvalue_kind ICalProperty::icalparameter_value_to_value_kind(icalparameter_value val){ + return icalparameter_value_to_value_kind(val); +} + +/* Convert kinds to string and get default value type */ +icalvalue_kind ICalProperty::kind_to_value_kind(icalproperty_kind kind){ + return icalproperty_kind_to_value_kind(kind); +} +icalproperty_kind ICalProperty::value_kind_to_kind(icalvalue_kind kind){ + return icalproperty_value_kind_to_kind(kind); +} +string ICalProperty::kind_to_string(icalproperty_kind kind){ + return (string)icalproperty_kind_to_string(kind); +} +icalproperty_kind ICalProperty::string_to_kind(string str){ + return icalproperty_string_to_kind(str); +} + +string ICalProperty::method_to_string(icalproperty_method method){ + return (string)icalproperty_method_to_string(method); +} +icalproperty_method ICalProperty::string_to_method(string str){ + return icalproperty_string_to_method(str); +} + +string ICalProperty::enum_to_string(int e){ + return (string)icalproperty_enum_to_string(e); +} +int ICalProperty::string_to_enum(string str){ + return icalproperty_string_to_enum(str); +} + +string ICalProperty::status_to_string(icalproperty_status s){ + return (string)icalproperty_status_to_string(s); +} +icalproperty_status ICalProperty::string_to_status(string str){ + return icalproperty_string_to_status(str); +} + +int ICalProperty::enum_belongs_to_property(icalproperty_kind kind, int e){ + return icalproperty_enum_belongs_to_property(kind, e); +} + +/* ACTION */ +void ICalProperty::set_action(enum icalproperty_action val){ + icalproperty_set_action(imp, val); +} +enum icalproperty_action ICalProperty::get_action(){ + return icalproperty_get_action(imp); +} + +/* ATTACH */ +void ICalProperty::set_attach(icalattach *val){ + icalproperty_set_attach(imp, val); +} +icalattach * ICalProperty::get_attach(){ + return icalproperty_get_attach(imp); +} + +/* ATTENDEE */ +void ICalProperty::set_attendee(string val){ + icalproperty_set_attendee(imp, val); +} +string ICalProperty::get_attendee(){ + return (string)icalproperty_get_attendee(imp); +} + +/* CALSCALE */ +void ICalProperty::set_calscale(string val){ + icalproperty_set_calscale(imp, val); +} +string ICalProperty::get_calscale(){ + return (string)icalproperty_get_calscale(imp); +} + +/* CATEGORIES */ +void ICalProperty::set_categories(string val){ + icalproperty_set_categories(imp, val); +} +string ICalProperty::get_categories(){ + return (string)icalproperty_get_categories(imp); +} + +/* CLASS */ +void ICalProperty::set_class(enum icalproperty_class val){ + icalproperty_set_class(imp, val); +} +enum icalproperty_class ICalProperty::get_class(){ + return (enum icalproperty_class)icalproperty_get_class(imp); +} + +/* COMMENT */ +void ICalProperty::set_comment(string val){ + icalproperty_set_comment(imp, val); +} +string ICalProperty::get_comment(){ + return (string)icalproperty_get_comment(imp); +} + +/* COMPLETED */ +void ICalProperty::set_completed(struct icaltimetype val){ + icalproperty_set_completed(imp, val); +} +struct icaltimetype ICalProperty::get_completed(){ + return icalproperty_get_completed(imp); +} + +/* CONTACT */ +void ICalProperty::set_contact(string val){ + icalproperty_set_contact(imp, val); +} +string ICalProperty::get_contact(){ + return (string)icalproperty_get_contact(imp); +} + +/* CREATED */ +void ICalProperty::set_created(struct icaltimetype val){ + icalproperty_set_created(imp, val); +} +struct icaltimetype ICalProperty::get_created(){ + return icalproperty_get_created(imp); +} + +/* DESCRIPTION */ +void ICalProperty::set_description(string val){ + icalproperty_set_description(imp, val); +} +string ICalProperty::get_description(){ + return (string)icalproperty_get_description(imp); +} + +/* DTEND */ +void ICalProperty::set_dtend(struct icaltimetype val){ + icalproperty_set_dtend(imp, val); +} +struct icaltimetype ICalProperty::get_dtend(){ + return icalproperty_get_dtend(imp); +} + +/* DTSTAMP */ +void ICalProperty::set_dtstamp(struct icaltimetype val){ + icalproperty_set_dtstamp(imp, val); +} +struct icaltimetype ICalProperty::get_dtstamp(){ + return icalproperty_get_dtstamp(imp); +} + +/* DTSTART */ +void ICalProperty::set_dtstart(struct icaltimetype val){ + icalproperty_set_dtstart(imp, val); +} +struct icaltimetype ICalProperty::get_dtstart(){ + return icalproperty_get_dtstart(imp); +} + +/* DUE */ +void ICalProperty::set_due(struct icaltimetype val){ + icalproperty_set_due(imp, val); +} +struct icaltimetype ICalProperty::get_due(){ + return icalproperty_get_due(imp); +} + +/* DURATION */ +void ICalProperty::set_duration(struct icaldurationtype val){ + icalproperty_set_duration(imp, val); +} +struct icaldurationtype ICalProperty::get_duration(){ + return icalproperty_get_duration(imp); +} + +/* EXDATE */ +void ICalProperty::set_exdate(struct icaltimetype val){ + icalproperty_set_exdate(imp, val); +} +struct icaltimetype ICalProperty::get_exdate(){ + return icalproperty_get_exdate(imp); +} + +/* EXPAND */ +void ICalProperty::set_expand(int val){ + icalproperty_set_expand(imp, val); +} +int ICalProperty::get_expand(){ + return icalproperty_get_expand(imp); +} + +/* EXRULE */ +void ICalProperty::set_exrule(struct icalrecurrencetype val){ + icalproperty_set_exrule(imp, val); +} +struct icalrecurrencetype ICalProperty::get_exrule(){ + return icalproperty_get_exrule(imp); +} + +/* FREEBUSY */ +void ICalProperty::set_freebusy(struct icalperiodtype val){ + icalproperty_set_freebusy(imp, val); +} +struct icalperiodtype ICalProperty::get_freebusy(){ + return icalproperty_get_freebusy(imp); +} + +/* GEO */ +void ICalProperty::set_geo(struct icalgeotype val){ + icalproperty_set_geo(imp, val); +} +struct icalgeotype ICalProperty::get_geo(){ + return icalproperty_get_geo(imp); +} + +/* LAST-MODIFIED */ +void ICalProperty::set_lastmodified(struct icaltimetype val){ + icalproperty_set_lastmodified(imp, val); +} +struct icaltimetype ICalProperty::get_lastmodified(){ + return icalproperty_get_lastmodified(imp); +} + +/* LOCATION */ +void ICalProperty::set_location(string val){ + icalproperty_set_location(imp, val); +} +string ICalProperty::get_location(){ + return (string)icalproperty_get_location(imp); +} + +/* MAXRESULTS */ +void ICalProperty::set_maxresults(int val){ + icalproperty_set_maxresults(imp, val); +} +int ICalProperty::get_maxresults(){ + return icalproperty_get_maxresults(imp); +} + +/* MAXRESULTSSIZE */ +void ICalProperty::set_maxresultsize(int val){ + icalproperty_set_maxresultssize(imp, val); +} +int ICalProperty::get_maxresultsize(){ + return icalproperty_get_maxresultssize(imp); +} + +/* METHOD */ +void ICalProperty::set_method(enum icalproperty_method val){ + icalproperty_set_method(imp, val); +} +enum icalproperty_method ICalProperty::get_method(){ + return icalproperty_get_method(imp); +} + +/* ORGANIZER */ +void ICalProperty::set_organizer(string val){ + icalproperty_set_organizer(imp, val); +} +string ICalProperty::get_organizer(){ + return (string)icalproperty_get_organizer(imp); +} + +/* OWNER */ +void ICalProperty::set_owner(string val){ + icalproperty_set_owner(imp, val); +} +string ICalProperty::get_owner(){ + return (string)icalproperty_get_owner(imp); +} + +/* PERCENT-COMPLETE */ +void ICalProperty::set_percentcomplete(int val){ + icalproperty_set_percentcomplete(imp, val); +} +int ICalProperty::get_percentcomplete(){ + return icalproperty_get_percentcomplete(imp); +} + +/* PRIORITY */ +void ICalProperty::set_priority(int val){ + icalproperty_set_priority(imp, val); +} +int ICalProperty::get_priority(){ + return icalproperty_get_priority(imp); +} + +/* PRODID */ +void ICalProperty::set_prodid(string val){ + icalproperty_set_prodid(imp, val); +} +string ICalProperty::get_prodid(){ + return (string)icalproperty_get_prodid(imp); +} + +/* QUERY */ +void ICalProperty::set_query(string val){ + icalproperty_set_query(imp, val); +} +string ICalProperty::get_query(){ + return (string)icalproperty_get_query(imp); +} + +/* QUERYNAME */ +void ICalProperty::set_queryname(string val){ + icalproperty_set_queryname(imp, val); +} +string ICalProperty::get_queryname(){ + return (string)icalproperty_get_queryname(imp); +} + +/* RDATE */ +void ICalProperty::set_rdate(struct icaldatetimeperiodtype val){ + icalproperty_set_rdate(imp, val); +} +struct icaldatetimeperiodtype ICalProperty::get_rdate(){ + return icalproperty_get_rdate(imp); +} + +/* RECURRENCE-ID */ +void ICalProperty::set_recurrenceid(struct icaltimetype val){ + icalproperty_set_recurrenceid(imp, val); +} +struct icaltimetype ICalProperty::get_recurrenceid(){ + return icalproperty_get_recurrenceid(imp); +} + +/* RELATED-TO */ +void ICalProperty::set_relatedto(string val){ + icalproperty_set_relatedto(imp, val); +} +string ICalProperty::get_relatedto(){ + return (string)icalproperty_get_relatedto(imp); +} + +/* RELCALID */ +void ICalProperty::set_relcalid(string val){ + icalproperty_set_relcalid(imp, val); +} +string ICalProperty::get_relcalid(){ + return (string)icalproperty_get_relcalid(imp); +} + +/* REPEAT */ +void ICalProperty::set_repeat(int val){ + icalproperty_set_repeat(imp, val); +} +int ICalProperty::get_repeat(){ + return icalproperty_get_repeat(imp); +} + +/* REQUEST-STATUS */ +void ICalProperty::set_requeststatus(string val){ + icalreqstattype v; + + v = icalreqstattype_from_string((char*)val); + + icalproperty_set_requeststatus(imp, v); +} + +string ICalProperty::get_requeststatus(){ + icalreqstattype v; + v = icalproperty_get_requeststatus(imp); + return (string)(icalreqstattype_as_string(v)); +} + +/* RESOURCES */ +void ICalProperty::set_resources(string val){ + icalproperty_set_resources(imp, val); +} +string ICalProperty::get_resources(){ + return (string)icalproperty_get_resources(imp); +} + +/* RRULE */ +void ICalProperty::set_rrule(struct icalrecurrencetype val){ + icalproperty_set_rrule(imp, val); +} +struct icalrecurrencetype ICalProperty::get_rrule(){ + return icalproperty_get_rrule(imp); +} + +/* SCOPE */ +void ICalProperty::set_scope(string val){ + icalproperty_set_scope(imp, val); +} +string ICalProperty::get_scope(){ + return (string)icalproperty_get_scope(imp); +} + +/* SEQUENCE */ +void ICalProperty::set_sequence(int val){ + icalproperty_set_sequence(imp, val); +} +int ICalProperty::get_sequence(){ + return icalproperty_get_sequence(imp); +} + +/* STATUS */ +void ICalProperty::set_status(enum icalproperty_status val){ + icalproperty_set_status(imp, val); +} +enum icalproperty_status ICalProperty::get_status(){ + return icalproperty_get_status(imp); +} + +/* SUMMARY */ +void ICalProperty::set_summary(string val){ + icalproperty_set_summary(imp, val); +} +string ICalProperty::get_summary(){ + return (string)icalproperty_get_summary(imp); +} + +/* TARGET */ +void ICalProperty::set_target(string val){ + icalproperty_set_target(imp, val); +} +string ICalProperty::get_target(){ + return (string)icalproperty_get_target(imp); +} + +/* TRANSP */ +void ICalProperty::set_transp(enum icalproperty_transp val){ + icalproperty_set_transp(imp, val); +} +enum icalproperty_transp ICalProperty::get_transp(){ + return icalproperty_get_transp(imp); +} + +/* TRIGGER */ +void ICalProperty::set_trigger(struct icaltriggertype val){ + icalproperty_set_trigger(imp, val); +} +struct icaltriggertype ICalProperty::get_trigger(){ + return icalproperty_get_trigger(imp); +} + +/* TZID */ +void ICalProperty::set_tzid(string val){ + icalproperty_set_tzid(imp, val); +} +string ICalProperty::get_tzid(){ + return (string)icalproperty_get_tzid(imp); +} + +/* TZNAME */ +void ICalProperty::set_tzname(string val){ + icalproperty_set_tzname(imp, val); +} +string ICalProperty::get_tzname(){ + return (string)icalproperty_get_tzname(imp); +} + +/* TZOFFSETFROM */ +void ICalProperty::set_tzoffsetfrom(int val){ + icalproperty_set_tzoffsetfrom(imp, val); +} +int ICalProperty::get_tzoffsetfrom(){ + return icalproperty_get_tzoffsetfrom(imp); +} + +/* TZOFFSETTO */ +void ICalProperty::set_tzoffsetto(int val){ + icalproperty_set_tzoffsetto(imp, val); +} +int ICalProperty::get_tzoffsetto(){ + return icalproperty_get_tzoffsetto(imp); +} + +/* TZURL */ +void ICalProperty::set_tzurl(string val){ + icalproperty_set_tzurl(imp, val); +} +string ICalProperty::get_tzurl(){ + return (string)icalproperty_get_tzurl(imp); +} + +/* UID */ +void ICalProperty::set_uid(string val){ + icalproperty_set_uid(imp, val); +} +string ICalProperty::get_uid(){ + return (string)icalproperty_get_uid(imp); +} + +/* URL */ +void ICalProperty::set_url(string val){ + icalproperty_set_url(imp, val); +} +string ICalProperty::get_url(){ + return (string)icalproperty_get_url(imp); +} + +/* VERSION */ +void ICalProperty::set_version(string val){ + icalproperty_set_version(imp, val); +} +string ICalProperty::get_version(){ + return (string)icalproperty_get_version(imp); +} + +/* X */ +void ICalProperty::set_x(string val){ + icalproperty_set_x(imp, val); +} +string ICalProperty::get_x(){ + return (string)icalproperty_get_x(imp); +} + +/* X-LIC-CLUSTERCOUNT */ +void ICalProperty::set_xlicclustercount(string val){ + icalproperty_set_xlicclustercount(imp, val); +} +string ICalProperty::get_xlicclustercount(){ + return (string)icalproperty_get_xlicclustercount(imp); +} + +/* X-LIC-ERROR */ +void ICalProperty::set_xlicerror(string val){ + icalproperty_set_xlicerror(imp, val); +} +string ICalProperty::get_xlicerror(){ + return (string)icalproperty_get_xlicerror(imp); +} + +/* X-LIC-MIMECHARSET */ +void ICalProperty::set_xlicmimecharset(string val){ + icalproperty_set_xlicmimecharset(imp, val); +} +string ICalProperty::get_xlicmimecharset(){ + return (string)icalproperty_get_xlicmimecharset(imp); +} + +/* X-LIC-MIMECID */ +void ICalProperty::set_xlicmimecid(string val){ + icalproperty_set_xlicmimecid(imp, val); +} +string ICalProperty::get_xlicmimecid(){ + return (string)icalproperty_get_xlicmimecid(imp); +} + +/* X-LIC-MIMECONTENTTYPE */ +void ICalProperty::set_xlicmimecontenttype(string val){ + icalproperty_set_xlicmimecontenttype(imp, val); +} +string ICalProperty::get_xlicmimecontenttype(){ + return (string)icalproperty_get_xlicmimecontenttype(imp); +} + +/* X-LIC-MIMEENCODING */ +void ICalProperty::set_xlicmimeencoding(string val){ + icalproperty_set_xlicmimeencoding(imp, val); +} +string ICalProperty::get_xlicmimeencoding(){ + return (string)icalproperty_get_xlicmimeencoding(imp); +} + +/* X-LIC-MIMEFILENAME */ +void ICalProperty::set_xlicmimefilename(string val){ + icalproperty_set_xlicmimefilename(imp, val); +} +string ICalProperty::get_xlicmimefilename(){ + return (string)icalproperty_get_xlicmimefilename(imp); +} + +/* X-LIC-MIMEOPTINFO */ +void ICalProperty::set_xlicmimeoptinfo(string val){ + icalproperty_set_xlicmimeoptinfo(imp, val); +} +string ICalProperty::get_xlicmimeoptinfo(){ + return (string)icalproperty_get_xlicmimeoptinfo(imp); +} diff --git a/mozilla/calendar/libical/src/libical/icalproperty_cxx.h b/mozilla/calendar/libical/src/libical/icalproperty_cxx.h new file mode 100644 index 00000000000..27b0fd1a65b --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icalproperty_cxx.h @@ -0,0 +1,365 @@ +/* -*- Mode: C++ -*- */ + +/** + * @file icalproperty_cxx.h + * @author fnguyen (12/10/01) + * @brief Definition of C++ Wrapper for icalproperty.c + * + * (C) COPYRIGHT 2001, Critical Path + */ + +#ifndef ICALPROPERTY_CXX_H +#define ICALPROPERTY_CXX_H + +#include "ical.h" +#include "icptrholder.h" + +typedef char* string; // Will use the string library from STL + +class ICalParameter; +class ICalValue; + +class ICalProperty { +public: + ICalProperty(); + ICalProperty(const ICalProperty&) throw(icalerrorenum); + ICalProperty& operator=(const ICalProperty&) throw(icalerrorenum); + ~ICalProperty(); + + ICalProperty(icalproperty* v); + ICalProperty(string str); + ICalProperty(icalproperty_kind kind); + ICalProperty(icalproperty_kind kind, string str); + + operator icalproperty*() {return imp;} + int operator==(ICalProperty& rhs); + + void detach() { + imp = NULL; + } + +public: + string as_ical_string(); + icalproperty_kind isa(); + int isa_property(void* property); + + void add_parameter(ICalParameter& parameter); + void set_parameter(ICalParameter& parameter); + void set_parameter_from_string(string name, string val); + string get_parameter_as_string(string name); + void remove_parameter(icalparameter_kind kind); + int count_parameters(); + + /** Iterate through the parameters */ + ICalParameter* get_first_parameter(icalparameter_kind kind); + ICalParameter* get_next_parameter(icalparameter_kind kind); + + /** Access the value of the property */ + void set_value(const ICalValue& val); + void set_value_from_string(string val, string kind); + + ICalValue* get_value(); + string get_value_as_string(); + + /** Return the name of the property -- the type name converted + * to a string, or the value of get_x_name if the type is X + * property + */ + string get_name(); + +public: + /* Deal with X properties */ + static void set_x_name(ICalProperty &prop, string name); + static string get_x_name(ICalProperty &prop); + + static icalvalue_kind icalparameter_value_to_value_kind(icalparameter_value val); + + /* Convert kinds to string and get default value type */ + static icalvalue_kind kind_to_value_kind(icalproperty_kind kind); + static icalproperty_kind value_kind_to_kind(icalvalue_kind kind); + static string kind_to_string(icalproperty_kind kind); + static icalproperty_kind string_to_kind(string str); + + static icalproperty_method string_to_method(string str); + static string method_to_string(icalproperty_method method); + + static string enum_to_string(int e); + static int string_to_enum(string str); + + static string status_to_string(icalproperty_status); + static icalproperty_status string_to_status(string str); + + static int enum_belongs_to_property(icalproperty_kind kind, int e); + +public: + /* ACTION */ + void set_action(enum icalproperty_action v); + enum icalproperty_action get_action(); + + /* ATTACH */ + void set_attach(icalattach *v); + icalattach *get_attach(); + + /* ATTENDEE */ + void set_attendee(string val); + string get_attendee(); + + /* CALSCALE */ + void set_calscale(string val); + string get_calscale(); + + /* CATEGORIES */ + void set_categories(string val); + string get_categories(); + + /* CLASS */ + void set_class(enum icalproperty_class val); + enum icalproperty_class get_class(); + + /* COMMENT */ + void set_comment(string val); + string get_comment(); + + /* COMPLETED */ + void set_completed(struct icaltimetype val); + struct icaltimetype get_completed(); + + /* CONTACT */ + void set_contact(string val); + string get_contact(); + + /* CREATED */ + void set_created(struct icaltimetype val); + struct icaltimetype get_created(); + + /* DESCRIPTION */ + void set_description(string val); + string get_description(); + + /* DTEND */ + void set_dtend(struct icaltimetype val); + struct icaltimetype get_dtend(); + + /* DTSTAMP */ + void set_dtstamp(struct icaltimetype val); + struct icaltimetype get_dtstamp(); + + /* DTSTART */ + void set_dtstart(struct icaltimetype val); + struct icaltimetype get_dtstart(); + + /* DUE */ + void set_due(struct icaltimetype val); + struct icaltimetype get_due(); + + /* DURATION */ + void set_duration(struct icaldurationtype val); + struct icaldurationtype get_duration(); + + /* EXDATE */ + void set_exdate(struct icaltimetype val); + struct icaltimetype get_exdate(); + + /* EXPAND */ + void set_expand(int val); + int get_expand(); + + /* EXRULE */ + void set_exrule(struct icalrecurrencetype val); + struct icalrecurrencetype get_exrule(); + + /* FREEBUSY */ + void set_freebusy(struct icalperiodtype val); + struct icalperiodtype get_freebusy(); + + /* GEO */ + void set_geo(struct icalgeotype val); + struct icalgeotype get_geo(); + + /* GRANT */ + void set_grant(string val); + string get_grant(); + + /* LAST-MODIFIED */ + void set_lastmodified(struct icaltimetype val); + struct icaltimetype get_lastmodified(); + + /* LOCATION */ + void set_location(string val); + string get_location(); + + /* MAXRESULTS */ + void set_maxresults(int val); + int get_maxresults(); + + /* MAXRESULTSSIZE */ + void set_maxresultsize(int val); + int get_maxresultsize(); + + /* METHOD */ + void set_method(enum icalproperty_method val); + enum icalproperty_method get_method(); + + /* OWNER */ + void set_owner(string val); + string get_owner(); + + /* ORGANIZER */ + void set_organizer(string val); + string get_organizer(); + + /* PERCENT-COMPLETE */ + void set_percentcomplete(int val); + int get_percentcomplete(); + + /* PRIORITY */ + void set_priority(int val); + int get_priority(); + + /* PRODID */ + void set_prodid(string val); + string get_prodid(); + + /* QUERY */ + void set_query(string val); + string get_query(); + + /* QUERYNAME */ + void set_queryname(string val); + string get_queryname(); + + /* RDATE */ + void set_rdate(struct icaldatetimeperiodtype val); + struct icaldatetimeperiodtype get_rdate(); + + /* RECURRENCE-ID */ + void set_recurrenceid(struct icaltimetype val); + struct icaltimetype get_recurrenceid(); + + /* RELATED-TO */ + void set_relatedto(string val); + string get_relatedto(); + + /* RELCALID */ + void set_relcalid(string val); + string get_relcalid(); + + /* REPEAT */ + void set_repeat(int val); + int get_repeat(); + + /* REQUEST-STATUS */ + void set_requeststatus(string val); + string get_requeststatus(); + + /* RESOURCES */ + void set_resources(string val); + string get_resources(); + + /* RRULE */ + void set_rrule(struct icalrecurrencetype val); + struct icalrecurrencetype get_rrule(); + + /* SCOPE */ + void set_scope(string val); + string get_scope(); + + /* SEQUENCE */ + void set_sequence(int val); + int get_sequence(); + + /* STATUS */ + void set_status(enum icalproperty_status val); + enum icalproperty_status get_status(); + + /* SUMMARY */ + void set_summary(string val); + string get_summary(); + + /* TARGET */ + void set_target(string val); + string get_target(); + + /* TRANSP */ + void set_transp(enum icalproperty_transp val); + enum icalproperty_transp get_transp(); + + /* TRIGGER */ + void set_trigger(struct icaltriggertype val); + struct icaltriggertype get_trigger(); + + /* TZID */ + void set_tzid(string val); + string get_tzid(); + + /* TZNAME */ + void set_tzname(string val); + string get_tzname(); + + /* TZOFFSETFROM */ + void set_tzoffsetfrom(int val); + int get_tzoffsetfrom(); + + /* TZOFFSETTO */ + void set_tzoffsetto(int val); + int get_tzoffsetto(); + + /* TZURL */ + void set_tzurl(string val); + string get_tzurl(); + + /* UID */ + void set_uid(string val); + string get_uid(); + + /* URL */ + void set_url(string val); + string get_url(); + + /* VERSION */ + void set_version(string val); + string get_version(); + + /* X */ + void set_x(string val); + string get_x(); + + /* X-LIC-CLUSTERCOUNT */ + void set_xlicclustercount(string val); + string get_xlicclustercount(); + + /* X-LIC-ERROR */ + void set_xlicerror(string val); + string get_xlicerror(); + + /* X-LIC-MIMECHARSET */ + void set_xlicmimecharset(string val); + string get_xlicmimecharset(); + + /* X-LIC-MIMECID */ + void set_xlicmimecid(string val); + string get_xlicmimecid(); + + /* X-LIC-MIMECONTENTTYPE */ + void set_xlicmimecontenttype(string val); + string get_xlicmimecontenttype(); + + /* X-LIC-MIMEENCODING */ + void set_xlicmimeencoding(string val); + string get_xlicmimeencoding(); + + /* X-LIC-MIMEFILENAME */ + void set_xlicmimefilename(string val); + string get_xlicmimefilename(); + + /* X-LIC-MIMEOPTINFO */ + void set_xlicmimeoptinfo(string val); + string get_xlicmimeoptinfo(); + +private: + icalproperty* imp; /**< The actual C based icalproperty */ +}; + +typedef ICPointerHolder ICalPropertyTmpPtr; /* see icptrholder.h for comments */ + +#endif /* ICalProperty_H */ diff --git a/mozilla/calendar/libical/src/libical/icalrecur.c b/mozilla/calendar/libical/src/libical/icalrecur.c new file mode 100644 index 00000000000..7129c7d6765 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icalrecur.c @@ -0,0 +1,2458 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: icalrecur.c + CREATOR: eric 16 May 2000 + + $Id: icalrecur.c,v 1.60 2004/05/10 22:47:28 acampi Exp $ + $Locker: $ + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ +*/ + +/** + @file icalrecur.c + @brief Implementation of routines for dealing with recurring time + + How this code works: + + Processing starts when the caller generates a new recurrence + iterator via icalrecur_iterator_new(). This routine copies the + recurrence rule into the iterator and extracts things like start and + end dates. Then, it checks if the rule is legal, using some logic + from RFC2445 and some logic that probably should be in RFC2445. + + Then, icalrecur_iterator_new() re-writes some of the BY* + arrays. This involves ( via a call to setup_defaults() ) : + + 1) For BY rule parts with no data ( ie BYSECOND was not specified ) + copy the corresponding time part from DTSTART into the BY array. ( + So impl->by_ptrs[BY_SECOND] will then have one element if is + originally had none ) This only happens if the BY* rule part data + would expand the number of occurrences in the occurrence set. This + lets the code ignore DTSTART later on and still use it to get the + time parts that were not specified in any other way. + + 2) For the by rule part that are not the same interval as the + frequency -- for HOURLY anything but BYHOUR, for instance -- copy the + first data element from the rule part into the first occurrence. For + example, for "INTERVAL=MONTHLY and BYHOUR=10,30", initialize the + first time to be returned to have an hour of 10. + + Finally, for INTERVAL=YEARLY, the routine expands the rule to get + all of the days specified in the rule. The code will do this for + each new year, and this is the first expansion. This is a special + case for the yearly interval; no other frequency gets expanded this + way. The yearly interval is the most complex, so some special + processing is required. + + After creating a new iterator, the caller will make successive calls + to icalrecur_iterator_next() to get the next time specified by the + rule. The main part of this routine is a switch on the frequency of + the rule. Each different frequency is handled by a different + routine. + + For example, next_hour handles the case of INTERVAL=HOURLY, and it + is called by other routines to get the next hour. First, the routine + tries to get the next minute part of a time with a call to + next_minute(). If next_minute() returns 1, it has reached the end of + its data, usually the last element of the BYMINUTE array. Then, if + there is data in the BYHOUR array, the routine changes the hour to + the next one in the array. If INTERVAL=HOURLY, the routine advances + the hour by the interval. + + If the routine used the last hour in the BYHOUR array, and the + INTERVAL=HOURLY, then the routine calls increment_monthday() to set + the next month day. The increment_* routines may call higher routine + to increment the month or year also. + + The code for INTERVAL=DAILY is handled by next_day(). First, the + routine tries to get the next hour part of a time with a call to + next_hour. If next_hour() returns 1, it has reached the end of its + data, usually the last element of the BYHOUR array. This means that + next_day() should increment the time to the next day. If FREQUENCY==DAILY, + the routine increments the day by the interval; otherwise, it + increments the day by 1. + + Next_day() differs from next_hour because it does not use the BYDAY + array to select an appropriate day. Instead, it returns every day ( + incrementing by 1 if the frequency is not DAILY with INTERVAL!=1) + Any days that are not specified in an non-empty BYDAY array are + filtered out later. + + Generally, the flow of these routine is for a next_* call a next_* + routine of a lower interval ( next_day calls next_hour) and then to + possibly call an increment_* routine of an equal or higher + interval. ( next_day calls increment_monthday() ) + + When the call to the original next_* routine returns, + icalrecur_iterator_next() will check the returned data against other + BYrule parts to determine if is should be excluded by calling + check_contracting_rules. Generally, a contracting rule is any with a + larger time span than the interval. For instance, if + INTERVAL=DAILY, BYMONTH is a contracting rule part. + + Check_contracting_rules() uses icalrecur_check_rulepart() to do its + work. icalrecur_check_rulepart() uses expand_map[] to determine if a rule + is contracting, and if it is, and if the BY rule part has some data, + then the routine checks if the value of a component of the time is + part of the byrule part. For instance, for "INTERVAL=DAILY; + BYMONTH=6,10", icalrecur_check_rulepart() would check that the time value + given to it has a month of either 6 or 10. + + Finally, icalrecur_iterator_next() does a few other checks on the + time value, and if it passes, it returns the time. + + A note about the end_of_data flag. The flag indicates that the + routine is at the end of its data -- the last BY rule if the routine + is using by rules, or the last day of the week/month/year/etc if + not. + + This flag is usually set early in a next_* routine and returned in + the end. The way it is used allows the next_* routine to set the + last time back to the first element in a BYxx rule, and then signal + to the higer level routine to increment the next higher level. For + instance. WITH FREQ=MONTHLY;BYDAY=TU,FR, After next_weekday_by_month + runs though both TU and FR, it sets the week day back to TU and sets + end_of_data to 1x. This signals next_month to increment the month. + + + ======================================================================*/ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifdef HAVE_STDINT_H +#include +#endif + +#ifndef HAVE_INTPTR_T +#ifdef WIN32 +typedef long intptr_t; +#endif +#endif + +#include "icalrecur.h" + +#include "icalerror.h" +#include "icalmemory.h" + +#include /* for malloc */ +#include /* for errno */ +#include /* for strdup and strchr*/ +#include +#include /* For offsetof() macro */ + +#include "pvl.h" + +/** This is the last year we will go up to, since 32-bit time_t values + only go up to the start of 2038. */ +#define MAX_TIME_T_YEAR 2037 + +#define TEMP_MAX 1024 + + +#define BYDAYIDX impl->by_indices[BY_DAY] +#define BYDAYPTR impl->by_ptrs[BY_DAY] + +#define BYMONIDX impl->by_indices[BY_MONTH] +#define BYMONPTR impl->by_ptrs[BY_MONTH] + +#define BYMDIDX impl->by_indices[BY_MONTH_DAY] +#define BYMDPTR impl->by_ptrs[BY_MONTH_DAY] + +#define BYWEEKIDX impl->by_indices[BY_WEEK_NO] +#define BYWEEKPTR impl->by_ptrs[BY_WEEK_NO] + +const char* icalrecur_freq_to_string(icalrecurrencetype_frequency kind); +icalrecurrencetype_frequency icalrecur_string_to_freq(const char* str); + +const char* icalrecur_weekday_to_string(icalrecurrencetype_weekday kind); +icalrecurrencetype_weekday icalrecur_string_to_weekday(const char* str); + + +/*********************** Rule parsing routines ************************/ + +struct icalrecur_parser { + const char* rule; + char* copy; + char* this_clause; + char* next_clause; + + struct icalrecurrencetype rt; +}; + +const char* icalrecur_first_clause(struct icalrecur_parser *parser) +{ + char *idx; + parser->this_clause = parser->copy; + + idx = strchr(parser->this_clause,';'); + + if (idx == 0){ + parser->next_clause = 0; + return 0; + } + + *idx = 0; + idx++; + parser->next_clause = idx; + + return parser->this_clause; + +} + +const char* icalrecur_next_clause(struct icalrecur_parser *parser) +{ + char* idx; + + parser->this_clause = parser->next_clause; + + if(parser->this_clause == 0){ + return 0; + } + + idx = strchr(parser->this_clause,';'); + + if (idx == 0){ + parser->next_clause = 0; + } else { + + *idx = 0; + idx++; + parser->next_clause = idx; + } + + return parser->this_clause; + +} + +void icalrecur_clause_name_and_value(struct icalrecur_parser *parser, + char** name, char** value) +{ + char *idx; + + *name = parser->this_clause; + + idx = strchr(parser->this_clause,'='); + + if (idx == 0){ + *name = 0; + *value = 0; + return; + } + + *idx = 0; + idx++; + *value = idx; +} + +void icalrecur_add_byrules(struct icalrecur_parser *parser, short *array, + int size, char* vals) +{ + char *t, *n; + int i=0; + int sign = 1; + int v; + + n = vals; + + while(n != 0){ + + if(i == size){ + return; + } + + t = n; + + n = strchr(t,','); + + if(n != 0){ + *n = 0; + n++; + } + + /* Get optional sign. HACK. sign is not allowed for all BYxxx + rule parts */ + if( *t == '-'){ + sign = -1; + t++; + } else if (*t == '+'){ + sign = 1; + t++; + } else { + sign = 1; + } + + v = atoi(t) * sign ; + + + array[i++] = (short)v; + array[i] = ICAL_RECURRENCE_ARRAY_MAX; + + } + +} + +/* + * Days in the BYDAY rule are expected by the code to be sorted, and while + * this may be the common case, the RFC doesn't actually mandate it. This + * function sorts the days taking into account the first day of week. + */ +static void +sort_bydayrules(struct icalrecur_parser *parser) +{ + short *array; + int week_start, one, two, i, j; + + array = parser->rt.by_day; + week_start = parser->rt.week_start; + + for (i=0; + i two) { + short tmp = array[j]; + array[j] = array[i]; + array[i] = tmp; + } + } + } +} + +void icalrecur_add_bydayrules(struct icalrecur_parser *parser, const char* vals) +{ + + char *t, *n; + int i=0; + int sign = 1; + int weekno = 0; + icalrecurrencetype_weekday wd; + short *array = parser->rt.by_day; + char* end; + char* vals_copy; + + vals_copy = icalmemory_strdup(vals); + + end = (char*)vals_copy+strlen(vals_copy); + n = vals_copy; + + while(n != 0){ + + + t = n; + + n = strchr(t,','); + + if(n != 0){ + *n = 0; + n++; + } + + /* Get optional sign. */ + if( *t == '-'){ + sign = -1; + t++; + } else if (*t == '+'){ + sign = 1; + t++; + } else { + sign = 1; + } + + /* Get Optional weekno */ + weekno = strtol(t,&t,10); + + /* Outlook/Exchange generate "BYDAY=MO, FR" and "BYDAY=2 TH". + * Cope with that. + */ + if (*t == ' ') + t++; + + wd = icalrecur_string_to_weekday(t); + + array[i++] = (short)(sign* (wd + 8*weekno)); + array[i] = ICAL_RECURRENCE_ARRAY_MAX; + + } + + free(vals_copy); + + sort_bydayrules(parser); +} + + +struct icalrecurrencetype icalrecurrencetype_from_string(const char* str) +{ + struct icalrecur_parser parser; + + memset(&parser,0,sizeof(parser)); + icalrecurrencetype_clear(&parser.rt); + + icalerror_check_arg_re(str!=0,"str",parser.rt); + + + /* Set up the parser struct */ + parser.rule = str; + parser.copy = icalmemory_strdup(parser.rule); + parser.this_clause = parser.copy; + + if(parser.copy == 0){ + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + return parser.rt; + } + + /* Loop through all of the clauses */ + for(icalrecur_first_clause(&parser); + parser.this_clause != 0; + icalrecur_next_clause(&parser)) + { + char *name, *value; + icalrecur_clause_name_and_value(&parser,&name,&value); + + if(name == 0){ + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + icalrecurrencetype_clear(&parser.rt); + free(parser.copy); + return parser.rt; + } + + if (strcmp(name,"FREQ") == 0){ + parser.rt.freq = icalrecur_string_to_freq(value); + } else if (strcmp(name,"COUNT") == 0){ + parser.rt.count = atoi(value); + } else if (strcmp(name,"UNTIL") == 0){ + parser.rt.until = icaltime_from_string(value); + } else if (strcmp(name,"INTERVAL") == 0){ + parser.rt.interval = (short)atoi(value); + } else if (strcmp(name,"WKST") == 0){ + parser.rt.week_start = icalrecur_string_to_weekday(value); + sort_bydayrules(&parser); + } else if (strcmp(name,"BYSECOND") == 0){ + icalrecur_add_byrules(&parser,parser.rt.by_second, + ICAL_BY_SECOND_SIZE,value); + } else if (strcmp(name,"BYMINUTE") == 0){ + icalrecur_add_byrules(&parser,parser.rt.by_minute, + ICAL_BY_MINUTE_SIZE,value); + } else if (strcmp(name,"BYHOUR") == 0){ + icalrecur_add_byrules(&parser,parser.rt.by_hour, + ICAL_BY_HOUR_SIZE,value); + } else if (strcmp(name,"BYDAY") == 0){ + icalrecur_add_bydayrules(&parser,value); + } else if (strcmp(name,"BYMONTHDAY") == 0){ + icalrecur_add_byrules(&parser,parser.rt.by_month_day, + ICAL_BY_MONTHDAY_SIZE,value); + } else if (strcmp(name,"BYYEARDAY") == 0){ + icalrecur_add_byrules(&parser,parser.rt.by_year_day, + ICAL_BY_YEARDAY_SIZE,value); + } else if (strcmp(name,"BYWEEKNO") == 0){ + icalrecur_add_byrules(&parser,parser.rt.by_week_no, + ICAL_BY_WEEKNO_SIZE,value); + } else if (strcmp(name,"BYMONTH") == 0){ + icalrecur_add_byrules(&parser,parser.rt.by_month, + ICAL_BY_MONTH_SIZE,value); + } else if (strcmp(name,"BYSETPOS") == 0){ + icalrecur_add_byrules(&parser,parser.rt.by_set_pos, + ICAL_BY_SETPOS_SIZE,value); + } else { + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + icalrecurrencetype_clear(&parser.rt); + free(parser.copy); + return parser.rt; + } + + } + + free(parser.copy); + + return parser.rt; + +} + +static struct { char* str;size_t offset; int limit; } recurmap[] = +{ + {";BYSECOND=",offsetof(struct icalrecurrencetype,by_second),60}, + {";BYMINUTE=",offsetof(struct icalrecurrencetype,by_minute),60}, + {";BYHOUR=",offsetof(struct icalrecurrencetype,by_hour),24}, + {";BYDAY=",offsetof(struct icalrecurrencetype,by_day),7}, + {";BYMONTHDAY=",offsetof(struct icalrecurrencetype,by_month_day),31}, + {";BYYEARDAY=",offsetof(struct icalrecurrencetype,by_year_day),366}, + {";BYWEEKNO=",offsetof(struct icalrecurrencetype,by_week_no),52}, + {";BYMONTH=",offsetof(struct icalrecurrencetype,by_month),12}, + {";BYSETPOS=",offsetof(struct icalrecurrencetype,by_set_pos),366}, + {0,0,0}, +}; + +/* A private routine in icalvalue.c */ +void print_date_to_string(char* str, struct icaltimetype *data); +void print_datetime_to_string(char* str, struct icaltimetype *data); + +char* icalrecurrencetype_as_string(struct icalrecurrencetype *recur) +{ + char* str; + char *str_p; + size_t buf_sz = 200; + char temp[20]; + int i,j; + + if(recur->freq == ICAL_NO_RECURRENCE){ + return 0; + } + + str = (char*)icalmemory_tmp_buffer(buf_sz); + str_p = str; + + icalmemory_append_string(&str,&str_p,&buf_sz,"FREQ="); + icalmemory_append_string(&str,&str_p,&buf_sz, + icalrecur_freq_to_string(recur->freq)); + + if(recur->until.year != 0){ + + temp[0] = 0; + if (recur->until.is_date) + print_date_to_string(temp,&(recur->until)); + else + print_datetime_to_string(temp,&(recur->until)); + + icalmemory_append_string(&str,&str_p,&buf_sz,";UNTIL="); + icalmemory_append_string(&str,&str_p,&buf_sz, temp); + } + + if(recur->count != 0){ + sprintf(temp,"%d",recur->count); + icalmemory_append_string(&str,&str_p,&buf_sz,";COUNT="); + icalmemory_append_string(&str,&str_p,&buf_sz, temp); + } + + if(recur->interval != 0){ + sprintf(temp,"%d",recur->interval); + icalmemory_append_string(&str,&str_p,&buf_sz,";INTERVAL="); + icalmemory_append_string(&str,&str_p,&buf_sz, temp); + } + + for(j =0; recurmap[j].str != 0; j++){ + short* array = (short*)(recurmap[j].offset+ (size_t)recur); + int limit = recurmap[j].limit; + + /* Skip unused arrays */ + if( array[0] != ICAL_RECURRENCE_ARRAY_MAX ) { + + icalmemory_append_string(&str,&str_p,&buf_sz,recurmap[j].str); + + for(i=0; + i< limit && array[i] != ICAL_RECURRENCE_ARRAY_MAX; + i++){ + if (j == 3) { /* BYDAY */ + const char *daystr = icalrecur_weekday_to_string( + icalrecurrencetype_day_day_of_week(array[i])); + int pos; + + pos = icalrecurrencetype_day_position(array[i]); + + if (pos == 0) + icalmemory_append_string(&str,&str_p,&buf_sz,daystr); + else { + sprintf(temp,"%d%s",pos,daystr); + icalmemory_append_string(&str,&str_p,&buf_sz,temp); + } + + } else { + sprintf(temp,"%d",array[i]); + icalmemory_append_string(&str,&str_p,&buf_sz, temp); + } + + if( (i+1)week_start != ICAL_MONDAY_WEEKDAY) { + sprintf(temp,"%s", icalrecur_weekday_to_string(recur->week_start)); + icalmemory_append_string(&str,&str_p,&buf_sz,";WKST="); + icalmemory_append_string(&str,&str_p,&buf_sz, temp); + } + + return str; +} + + +/************************* occurrence iteration routiens ******************/ + +enum byrule { + NO_CONTRACTION = -1, + BY_SECOND = 0, + BY_MINUTE = 1, + BY_HOUR = 2, + BY_DAY = 3, + BY_MONTH_DAY = 4, + BY_YEAR_DAY = 5, + BY_WEEK_NO = 6, + BY_MONTH = 7, + BY_SET_POS +}; + + + +struct icalrecur_iterator_impl { + + struct icaltimetype dtstart; /* Hack. Make into time_t */ + struct icaltimetype last; /* last time return from _iterator_next*/ + int occurrence_no; /* number of step made on t iterator */ + struct icalrecurrencetype rule; + + short days[366]; + short days_index; + + enum byrule byrule; + short by_indices[9]; + short orig_data[9]; /**< 1 if there was data in the byrule */ + + + short *by_ptrs[9]; /**< Pointers into the by_* array elements of the rule */ + +}; + +static void increment_year(icalrecur_iterator* impl, int inc); + +int icalrecur_iterator_sizeof_byarray(short* byarray) +{ + int array_itr; + + for(array_itr = 0; + byarray[array_itr] != ICAL_RECURRENCE_ARRAY_MAX; + array_itr++){ + } + + return array_itr; +} + +enum expand_table { + UNKNOWN = 0, + CONTRACT = 1, + EXPAND =2, + ILLEGAL=3 +}; + +/** + * The split map indicates, for a particular interval, wether a BY_* + * rule part expands the number of instances in the occcurrence set or + * contracts it. 1=> contract, 2=>expand, and 3 means the pairing is + * not allowed. + */ + +struct expand_split_map_struct +{ + icalrecurrencetype_frequency frequency; + + /* Elements of the 'map' array correspond to the BYxxx rules: + Second,Minute,Hour,Day,Month Day,Year Day,Week No,Month*/ + + short map[8]; +}; + +static struct expand_split_map_struct expand_map[] = +{ + {ICAL_SECONDLY_RECURRENCE,{1,1,1,1,1,1,1,1}}, + {ICAL_MINUTELY_RECURRENCE,{2,1,1,1,1,1,1,1}}, + {ICAL_HOURLY_RECURRENCE, {2,2,1,1,1,1,1,1}}, + {ICAL_DAILY_RECURRENCE, {2,2,2,1,1,1,1,1}}, + {ICAL_WEEKLY_RECURRENCE, {2,2,2,2,3,3,1,1}}, + {ICAL_MONTHLY_RECURRENCE, {2,2,2,2,2,3,3,1}}, + {ICAL_YEARLY_RECURRENCE, {2,2,2,2,2,2,2,2}}, + {ICAL_NO_RECURRENCE, {0,0,0,0,0,0,0,0}} + +}; + + + +/** Check that the rule has only the two given interday byrule parts. */ +static +int icalrecur_two_byrule(icalrecur_iterator* impl, + enum byrule one,enum byrule two) +{ + short test_array[9]; + enum byrule itr; + int passes = 0; + + memset(test_array,0,sizeof(test_array)); + + test_array[one] = 1; + test_array[two] = 1; + + for(itr = BY_DAY; itr != BY_SET_POS; itr++){ + + if( (test_array[itr] == 0 && + impl->by_ptrs[itr][0] != ICAL_RECURRENCE_ARRAY_MAX + ) || + (test_array[itr] == 1 && + impl->by_ptrs[itr][0] == ICAL_RECURRENCE_ARRAY_MAX + ) + ) { + /* test failed */ + passes = 0; + } + } + + return passes; + +} + +/** Check that the rule has only the one given interdat byrule parts. */ +static int icalrecur_one_byrule(icalrecur_iterator* impl,enum byrule one) +{ + int passes = 1; + enum byrule itr; + + for(itr = BY_DAY; itr != BY_SET_POS; itr++){ + + if ((itr==one && impl->by_ptrs[itr][0] == ICAL_RECURRENCE_ARRAY_MAX) || + (itr!=one && impl->by_ptrs[itr][0] != ICAL_RECURRENCE_ARRAY_MAX)) { + passes = 0; + } + } + + return passes; +} + +static int count_byrules(icalrecur_iterator* impl) +{ + int count = 0; + enum byrule itr; + + for(itr = BY_DAY; itr <= BY_SET_POS; itr++){ + if(impl->by_ptrs[itr][0] != ICAL_RECURRENCE_ARRAY_MAX){ + count++; + } + } + + return count; +} + + +static void setup_defaults(icalrecur_iterator* impl, + enum byrule byrule, icalrecurrencetype_frequency req, + int deftime, int *timepart) +{ + + icalrecurrencetype_frequency freq; + freq = impl->rule.freq; + + /* Re-write the BY rule arrays with data from the DTSTART time so + we don't have to explicitly deal with DTSTART */ + + if(impl->by_ptrs[byrule][0] == ICAL_RECURRENCE_ARRAY_MAX && + expand_map[freq].map[byrule] != CONTRACT){ + impl->by_ptrs[byrule][0] = (short)deftime; + } + + /* Initialize the first occurrence */ + if( freq != req && expand_map[freq].map[byrule] != CONTRACT){ + *timepart = impl->by_ptrs[byrule][0]; + } + + +} + +static int has_by_data(icalrecur_iterator* impl, enum byrule byrule){ + + return (impl->orig_data[byrule] == 1); +} + + +static int expand_year_days(icalrecur_iterator* impl, int year); + + +icalrecur_iterator* icalrecur_iterator_new(struct icalrecurrencetype rule, + struct icaltimetype dtstart) +{ + icalrecur_iterator* impl; + icalrecurrencetype_frequency freq; + + if ( ( impl = (icalrecur_iterator*) + malloc(sizeof(icalrecur_iterator))) == 0) { + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + return 0; + } + + memset(impl,0,sizeof(icalrecur_iterator)); + + impl->rule = rule; + impl->last = dtstart; + impl->dtstart = dtstart; + impl->days_index =0; + impl->occurrence_no = 0; + freq = impl->rule.freq; + + /* Set up convienience pointers to make the code simpler. Allows + us to iterate through all of the BY* arrays in the rule. */ + + impl->by_ptrs[BY_MONTH]=impl->rule.by_month; + impl->by_ptrs[BY_WEEK_NO]=impl->rule.by_week_no; + impl->by_ptrs[BY_YEAR_DAY]=impl->rule.by_year_day; + impl->by_ptrs[BY_MONTH_DAY]=impl->rule.by_month_day; + impl->by_ptrs[BY_DAY]=impl->rule.by_day; + impl->by_ptrs[BY_HOUR]=impl->rule.by_hour; + impl->by_ptrs[BY_MINUTE]=impl->rule.by_minute; + impl->by_ptrs[BY_SECOND]=impl->rule.by_second; + impl->by_ptrs[BY_SET_POS]=impl->rule.by_set_pos; + + memset(impl->orig_data,0,9*sizeof(short)); + + /* Note which by rules had data in them when the iterator was + created. We can't use the actuall by_x arrays, because the + empty ones will be given default values later in this + routine. The orig_data array will be used later in has_by_data */ + + impl->orig_data[BY_MONTH] + = (short)(impl->rule.by_month[0]!=ICAL_RECURRENCE_ARRAY_MAX); + impl->orig_data[BY_WEEK_NO] + =(short)(impl->rule.by_week_no[0]!=ICAL_RECURRENCE_ARRAY_MAX); + impl->orig_data[BY_YEAR_DAY] + =(short)(impl->rule.by_year_day[0]!=ICAL_RECURRENCE_ARRAY_MAX); + impl->orig_data[BY_MONTH_DAY] + =(short)(impl->rule.by_month_day[0]!=ICAL_RECURRENCE_ARRAY_MAX); + impl->orig_data[BY_DAY] + = (short)(impl->rule.by_day[0]!=ICAL_RECURRENCE_ARRAY_MAX); + impl->orig_data[BY_HOUR] + = (short)(impl->rule.by_hour[0]!=ICAL_RECURRENCE_ARRAY_MAX); + impl->orig_data[BY_MINUTE] + = (short)(impl->rule.by_minute[0]!=ICAL_RECURRENCE_ARRAY_MAX); + impl->orig_data[BY_SECOND] + = (short)(impl->rule.by_second[0]!=ICAL_RECURRENCE_ARRAY_MAX); + impl->orig_data[BY_SET_POS] + = (short)(impl->rule.by_set_pos[0]!=ICAL_RECURRENCE_ARRAY_MAX); + + + /* Check if the recurrence rule is legal */ + + /* If the BYYEARDAY appears, no other date rule part may appear. */ + + if(icalrecur_two_byrule(impl,BY_YEAR_DAY,BY_MONTH) || + icalrecur_two_byrule(impl,BY_YEAR_DAY,BY_WEEK_NO) || + icalrecur_two_byrule(impl,BY_YEAR_DAY,BY_MONTH_DAY) || + icalrecur_two_byrule(impl,BY_YEAR_DAY,BY_DAY) ){ + + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + + return 0; + } + + /* BYWEEKNO and BYMONTH rule parts may not both appear.*/ + + if(icalrecur_two_byrule(impl,BY_WEEK_NO,BY_MONTH)){ + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + return 0; + } + + /* BYWEEKNO and BYMONTHDAY rule parts may not both appear.*/ + + if(icalrecur_two_byrule(impl,BY_WEEK_NO,BY_MONTH_DAY)){ + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + return 0; + } + + + /*For MONTHLY recurrences (FREQ=MONTHLY) neither BYYEARDAY nor + BYWEEKNO may appear. */ + + if(freq == ICAL_MONTHLY_RECURRENCE && + icalrecur_one_byrule(impl,BY_WEEK_NO)){ + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + return 0; + } + + + /*For WEEKLY recurrences (FREQ=WEEKLY) neither BYMONTHDAY nor + BYYEARDAY may appear. */ + + if(freq == ICAL_WEEKLY_RECURRENCE && + icalrecur_one_byrule(impl,BY_MONTH_DAY )) { + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + return 0; + } + + /* BYYEARDAY may only appear in YEARLY rules */ + if(freq != ICAL_YEARLY_RECURRENCE && + icalrecur_one_byrule(impl,BY_YEAR_DAY )) { + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + return 0; + } + + /* Rewrite some of the rules and set up defaults to make later + processing easier. Primarily, t involves copying an element + from the start time into the corresponding BY_* array when the + BY_* array is empty */ + + + setup_defaults(impl,BY_SECOND,ICAL_SECONDLY_RECURRENCE, + impl->dtstart.second, + &(impl->last.second)); + + setup_defaults(impl,BY_MINUTE,ICAL_MINUTELY_RECURRENCE, + impl->dtstart.minute, + &(impl->last.minute)); + + setup_defaults(impl,BY_HOUR,ICAL_HOURLY_RECURRENCE, + impl->dtstart.hour, + &(impl->last.hour)); + + setup_defaults(impl,BY_MONTH_DAY,ICAL_DAILY_RECURRENCE, + impl->dtstart.day, + &(impl->last.day)); + + setup_defaults(impl,BY_MONTH,ICAL_MONTHLY_RECURRENCE, + impl->dtstart.month, + &(impl->last.month)); + + + if(impl->rule.freq == ICAL_WEEKLY_RECURRENCE ){ + + if(impl->by_ptrs[BY_DAY][0] == ICAL_RECURRENCE_ARRAY_MAX){ + + /* Weekly recurrences with no BY_DAY data should occur on the + same day of the week as the start time . */ + impl->by_ptrs[BY_DAY][0] = (short)icaltime_day_of_week(impl->dtstart); + + } else { + /* If there is BY_DAY data, then we need to move the initial + time to the start of the BY_DAY data. That is if the + start time is on a Wednesday, and the rule has + BYDAY=MO,WE,FR, move the initial time back to + monday. Otherwise, jumping to the next week ( jumping 7 + days ahead ) will skip over some occurrences in the + second week. */ + + /* This depends on impl->by_ptrs[BY_DAY] being correctly sorted by + * day. This should probably be abstracted to make such assumption + * more explicit. */ + short dow = (short)(impl->by_ptrs[BY_DAY][0]-icaltime_day_of_week(impl->last)); + if (dow > impl->rule.week_start-1) dow -= 7; + impl->last.day += dow; + impl->last = icaltime_normalize(impl->last); + } + + + } + + /* For YEARLY rule, begin by setting up the year days array . The + YEARLY rules work by expanding one year at a time. */ + + if(impl->rule.freq == ICAL_YEARLY_RECURRENCE){ + struct icaltimetype next; + + for (;;) { + expand_year_days(impl, impl->last.year); + if (impl->days[0] != ICAL_RECURRENCE_ARRAY_MAX) + break; /* break when no days are expanded */ + increment_year(impl,impl->rule.interval); + } + + /* Copy the first day into last. */ + next = icaltime_from_day_of_year(impl->days[0], impl->last.year); + + impl->last.day = next.day; + impl->last.month = next.month; + } + + + /* If this is a monthly interval with by day data, then we need to + set the last value to the appropriate day of the month */ + + if(impl->rule.freq == ICAL_MONTHLY_RECURRENCE) + if (has_by_data(impl,BY_DAY)) { + + int dow = icalrecurrencetype_day_day_of_week( + impl->by_ptrs[BY_DAY][impl->by_indices[BY_DAY]]); + int pos = icalrecurrencetype_day_position( + impl->by_ptrs[BY_DAY][impl->by_indices[BY_DAY]]); + + int poscount = 0; + int days_in_month = + icaltime_days_in_month(impl->last.month, impl->last.year); + + if(pos >= 0){ + /* Count up from the first day pf the month to find the + pos'th weekday of dow ( like the second monday. ) */ + + for(impl->last.day = 1; + impl->last.day <= days_in_month; + impl->last.day++){ + + if(icaltime_day_of_week(impl->last) == dow){ + if(++poscount == pos || pos == 0){ + break; + } + } + } + } else { + /* Count down from the last day pf the month to find the + pos'th weekday of dow ( like the second to last monday. ) */ + pos = -pos; + for(impl->last.day = days_in_month; + impl->last.day != 0; + impl->last.day--){ + + if(icaltime_day_of_week(impl->last) == dow){ + if(++poscount == pos ){ + break; + } + } + } + } + + + if(impl->last.day > days_in_month || impl->last.day == 0){ + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + return 0; + } + + } else if (has_by_data(impl,BY_MONTH_DAY)) { + impl->last = icaltime_normalize(impl->last); + } + + + + return impl; +} + + +void icalrecur_iterator_free(icalrecur_iterator* i) +{ + icalerror_check_arg_rv((i!=0),"impl"); + + free(i); + +} + +static void increment_year(icalrecur_iterator* impl, int inc) +{ + impl->last.year+=inc; +} + +/** Increment month is different that the other incement_* routines -- + it figures out the interval for itself, and uses BYMONTH data if + available. */ +static void increment_month(icalrecur_iterator* impl) +{ + int years; + + if(has_by_data(impl,BY_MONTH) ){ + /* Ignore the frequency and use the byrule data */ + + impl->by_indices[BY_MONTH]++; + + if (impl->by_ptrs[BY_MONTH][impl->by_indices[BY_MONTH]] + ==ICAL_RECURRENCE_ARRAY_MAX){ + impl->by_indices[BY_MONTH] = 0; + + increment_year(impl,1); + + } + + impl->last.month = + impl->by_ptrs[BY_MONTH][impl->by_indices[BY_MONTH]]; + + } else { + + int inc; + + if(impl->rule.freq == ICAL_MONTHLY_RECURRENCE){ + inc = impl->rule.interval; + } else { + inc = 1; + } + + impl->last.month+=inc; + + /* Months are offset by one */ + impl->last.month--; + + years = impl->last.month / 12; + + impl->last.month = impl->last.month % 12; + + impl->last.month++; + + if (years != 0){ + increment_year(impl,years); + } + } +} + +static void increment_monthday(icalrecur_iterator* impl, int inc) +{ + int i; + + for(i=0; ilast.month, impl->last.year); + + impl->last.day++; + + if (impl->last.day > days_in_month){ + impl->last.day = impl->last.day-days_in_month; + increment_month(impl); + } + } +} + + +static void increment_hour(icalrecur_iterator* impl, int inc) +{ + int days; + + impl->last.hour+=inc; + + days = impl->last.hour / 24; + impl->last.hour = impl->last.hour % 24; + + if (impl->days != 0){ + increment_monthday(impl,days); + } +} + +static void increment_minute(icalrecur_iterator* impl, int inc) +{ + int hours; + + impl->last.minute+=inc; + + hours = impl->last.minute / 60; + impl->last.minute = impl->last.minute % 60; + + if (hours != 0){ + increment_hour(impl,hours); + } + +} + +static void increment_second(icalrecur_iterator* impl, int inc) +{ + int minutes; + + impl->last.second+=inc; + + minutes = impl->last.second / 60; + impl->last.second = impl->last.second % 60; + + if (minutes != 0) + { + increment_minute(impl, minutes); + } +} + +#if 0 +#include "ical.h" +void test_increment() +{ + icalrecur_iterator impl; + + impl.last = icaltime_from_string("20000101T000000Z"); + + printf("Orig: %s\n",icaltime_as_ctime(impl.last)); + + increment_second(&impl,5); + printf("+ 5 sec : %s\n",icaltime_as_ctime(impl.last)); + + increment_second(&impl,355); + printf("+ 355 sec : %s\n",icaltime_as_ctime(impl.last)); + + increment_minute(&impl,5); + printf("+ 5 min : %s\n",icaltime_as_ctime(impl.last)); + + increment_minute(&impl,360); + printf("+ 360 min : %s\n",icaltime_as_ctime(impl.last)); + increment_hour(&impl,5); + printf("+ 5 hours : %s\n",icaltime_as_ctime(impl.last)); + increment_hour(&impl,43); + printf("+ 43 hours : %s\n",icaltime_as_ctime(impl.last)); + increment_monthday(&impl,3); + printf("+ 3 days : %s\n",icaltime_as_ctime(impl.last)); + increment_monthday(&impl,600); + printf("+ 600 days : %s\n",icaltime_as_ctime(impl.last)); + +} + +#endif + +static int next_second(icalrecur_iterator* impl) +{ + + int has_by_second = (impl->by_ptrs[BY_SECOND][0]!=ICAL_RECURRENCE_ARRAY_MAX); + int this_frequency = (impl->rule.freq == ICAL_SECONDLY_RECURRENCE); + + int end_of_data = 0; + + assert(has_by_second || this_frequency); + + if( has_by_second ){ + /* Ignore the frequency and use the byrule data */ + + impl->by_indices[BY_SECOND]++; + + if (impl->by_ptrs[BY_SECOND][impl->by_indices[BY_SECOND]] + ==ICAL_RECURRENCE_ARRAY_MAX){ + impl->by_indices[BY_SECOND] = 0; + + end_of_data = 1; + } + + + impl->last.second = + impl->by_ptrs[BY_SECOND][impl->by_indices[BY_SECOND]]; + + + } else if( !has_by_second && this_frequency ){ + /* Compute the next value from the last time and the frequency interval*/ + increment_second(impl, impl->rule.interval); + + } + + /* If we have gone through all of the seconds on the BY list, then we + need to move to the next minute */ + + if(has_by_second && end_of_data && this_frequency ){ + increment_minute(impl,1); + } + + return end_of_data; + +} + +static int next_minute(icalrecur_iterator* impl) +{ + + int has_by_minute = (impl->by_ptrs[BY_MINUTE][0]!=ICAL_RECURRENCE_ARRAY_MAX); + int this_frequency = (impl->rule.freq == ICAL_MINUTELY_RECURRENCE); + + int end_of_data = 0; + + assert(has_by_minute || this_frequency); + + + if (next_second(impl) == 0){ + return 0; + } + + if( has_by_minute ){ + /* Ignore the frequency and use the byrule data */ + + impl->by_indices[BY_MINUTE]++; + + if (impl->by_ptrs[BY_MINUTE][impl->by_indices[BY_MINUTE]] + ==ICAL_RECURRENCE_ARRAY_MAX){ + + impl->by_indices[BY_MINUTE] = 0; + + end_of_data = 1; + } + + impl->last.minute = + impl->by_ptrs[BY_MINUTE][impl->by_indices[BY_MINUTE]]; + + } else if( !has_by_minute && this_frequency ){ + /* Compute the next value from the last time and the frequency interval*/ + increment_minute(impl,impl->rule.interval); + } + +/* If we have gone through all of the minutes on the BY list, then we + need to move to the next hour */ + + if(has_by_minute && end_of_data && this_frequency ){ + increment_hour(impl,1); + } + + return end_of_data; +} + +static int next_hour(icalrecur_iterator* impl) +{ + + int has_by_hour = (impl->by_ptrs[BY_HOUR][0]!=ICAL_RECURRENCE_ARRAY_MAX); + int this_frequency = (impl->rule.freq == ICAL_HOURLY_RECURRENCE); + + int end_of_data = 0; + + assert(has_by_hour || this_frequency); + + if (next_minute(impl) == 0){ + return 0; + } + + if( has_by_hour ){ + /* Ignore the frequency and use the byrule data */ + + impl->by_indices[BY_HOUR]++; + + if (impl->by_ptrs[BY_HOUR][impl->by_indices[BY_HOUR]] + ==ICAL_RECURRENCE_ARRAY_MAX){ + impl->by_indices[BY_HOUR] = 0; + + end_of_data = 1; + } + + impl->last.hour = + impl->by_ptrs[BY_HOUR][impl->by_indices[BY_HOUR]]; + + } else if( !has_by_hour && this_frequency ){ + /* Compute the next value from the last time and the frequency interval*/ + increment_hour(impl,impl->rule.interval); + + } + + /* If we have gone through all of the hours on the BY list, then we + need to move to the next day */ + + if(has_by_hour && end_of_data && this_frequency ){ + increment_monthday(impl,1); + } + + return end_of_data; + +} + +static int next_day(icalrecur_iterator* impl) +{ + + int has_by_day = (impl->by_ptrs[BY_DAY][0]!=ICAL_RECURRENCE_ARRAY_MAX); + int this_frequency = (impl->rule.freq == ICAL_DAILY_RECURRENCE); + + assert(has_by_day || this_frequency); + + if (next_hour(impl) == 0){ + return 0; + } + + /* Always increment through the interval, since this routine is not + called by any other next_* routine, and the days that are + excluded will be taken care of by restriction filtering */ + + if(this_frequency){ + increment_monthday(impl,impl->rule.interval); + } else { + increment_monthday(impl,1); + } + + + return 0; + +} + + +static int next_yearday(icalrecur_iterator* impl) +{ + + int has_by_yearday = (impl->by_ptrs[BY_YEAR_DAY][0]!=ICAL_RECURRENCE_ARRAY_MAX); + + int end_of_data = 0; + + assert(has_by_yearday ); + + if (next_hour(impl) == 0){ + return 0; + } + + impl->by_indices[BY_YEAR_DAY]++; + + if (impl->by_ptrs[BY_YEAR_DAY][impl->by_indices[BY_YEAR_DAY]] + ==ICAL_RECURRENCE_ARRAY_MAX){ + impl->by_indices[BY_YEAR_DAY] = 0; + + end_of_data = 1; + } + + impl->last.day = + impl->by_ptrs[BY_YEAR_DAY][impl->by_indices[BY_YEAR_DAY]]; + + if(has_by_yearday && end_of_data){ + increment_year(impl,1); + } + + return end_of_data; + +} + + +/* Returns the day of the month for the current month of t that is the + pos'th instance of the day-of-week dow */ + +static int nth_weekday(int dow, int pos, struct icaltimetype t){ + + int days_in_month = icaltime_days_in_month(t.month, t.year); + int end_dow, start_dow; + int wd; + + if(pos >= 0){ + t.day = 1; + start_dow = icaltime_day_of_week(t); + + if (pos != 0) { + pos--; + } + + /* find month day of first occurrence of dow -- such as the + month day of the first monday */ + + wd = dow-start_dow+1; + + if (wd <= 0){ + wd = wd + 7; + } + + wd = wd + pos * 7; + + } else { + t.day = days_in_month; + end_dow = icaltime_day_of_week(t); + + pos++; + + /* find month day of last occurrence of dow -- such as the + month day of the last monday */ + + wd = (end_dow - dow); + + if (wd < 0){ + wd = wd+ 7; + } + + wd = days_in_month - wd; + + wd = wd + pos * 7; + } + + return wd; +} + +static int is_day_in_byday(icalrecur_iterator* impl,struct icaltimetype tt){ + + int idx; + + for(idx = 0; BYDAYPTR[idx] != ICAL_RECURRENCE_ARRAY_MAX; idx++){ + int dow = icalrecurrencetype_day_day_of_week(BYDAYPTR[idx]); + int pos = icalrecurrencetype_day_position(BYDAYPTR[idx]); + int this_dow = icaltime_day_of_week(tt); + + if( (pos == 0 && dow == this_dow ) || /* Just a dow, like "TU" or "FR" */ + (nth_weekday(dow,pos,tt) == tt.day)){ /*pos+wod: "3FR" or -1TU" */ + return 1; + } + } + + return 0; +} + +static int next_month(icalrecur_iterator* impl) +{ + int data_valid = 1; + + int this_frequency = (impl->rule.freq == ICAL_MONTHLY_RECURRENCE); + + assert( has_by_data(impl,BY_MONTH) || this_frequency); + + /* Iterate through the occurrences within a day. If we don't get to + the end of the intra-day data, don't bother going to the next + month */ + + if (next_hour(impl) == 0){ + return data_valid; /* Signal that the data is valid */ + } + + /* Now iterate through the occurrences within a month -- by days, + weeks or weekdays. */ + + /* + * Case 1: + * Rules Like: FREQ=MONTHLY;INTERVAL=1;BYDAY=FR;BYMONTHDAY=13 + */ + + if(has_by_data(impl,BY_DAY) && has_by_data(impl,BY_MONTH_DAY)){ + int day, idx,j; + int days_in_month = icaltime_days_in_month(impl->last.month, + impl->last.year); + /* Iterate through the remaining days in the month and check if + each day is listed in the BY_DAY array and in the BY_MONTHDAY + array. This seems very inneficient, but I think it is the + simplest way to account for both BYDAY=1FR (First friday in + month) and BYDAY=FR ( every friday in month ) */ + + for(day = impl->last.day+1; day <= days_in_month; day++){ + for(idx = 0; BYDAYPTR[idx] != ICAL_RECURRENCE_ARRAY_MAX; idx++){ + for(j = 0; BYMDPTR[j]!=ICAL_RECURRENCE_ARRAY_MAX; j++){ + int dow = + icalrecurrencetype_day_day_of_week(BYDAYPTR[idx]); + int pos = icalrecurrencetype_day_position(BYDAYPTR[idx]); + int mday = BYMDPTR[j]; + int this_dow; + + impl->last.day = day; + this_dow = icaltime_day_of_week(impl->last); + + if( (pos == 0 && dow == this_dow && mday == day) || + (nth_weekday(dow,pos,impl->last) == day && mday==day)){ + goto MDEND; + } + } + } + } + + MDEND: + + if ( day > days_in_month){ + impl->last.day = 1; + increment_month(impl); + data_valid = 0; /* signal that impl->last is invalid */ + } + + + /* + * Case 2: + * Rules Like: FREQ=MONTHLY;INTERVAL=1;BYDAY=FR + */ + + } else if(has_by_data(impl,BY_DAY)){ + /* For this case, the weekdays are relative to the + month. BYDAY=FR -> First Friday in month, etc. */ + + /* This code iterates through the remaining days in the month + and checks if each day is listed in the BY_DAY array. This + seems very inneficient, but I think it is the simplest way to + account for both BYDAY=1FR (First friday in month) and + BYDAY=FR ( every friday in month ) */ + + int day; + int days_in_month = icaltime_days_in_month(impl->last.month, + impl->last.year); + assert( BYDAYPTR[0]!=ICAL_RECURRENCE_ARRAY_MAX); + + for(day = impl->last.day+1; day <= days_in_month; day++){ + impl->last.day = day; + if(is_day_in_byday(impl,impl->last)){ + data_valid = 1; + break; + } + } + + if ( day > days_in_month){ + impl->last.day = 1; + increment_month(impl); + + /* Did moving to the next month put us on a valid date? if + so, note that the new data is valid, if, not, mark it + invalid */ + + if(is_day_in_byday(impl,impl->last)){ + data_valid = 1; + } else { + data_valid = 0; /* signal that impl->last is invalid */ + } + } + + /* + * Case 3 + * Rules Like: FREQ=MONTHLY;COUNT=10;BYMONTHDAY=-3 + */ + + } else if (has_by_data(impl,BY_MONTH_DAY)) { + int day, days_in_month; + + assert( BYMDPTR[0]!=ICAL_RECURRENCE_ARRAY_MAX); + + BYMDIDX++; + + /* Are we at the end of the BYDAY array? */ + if (BYMDPTR[BYMDIDX] ==ICAL_RECURRENCE_ARRAY_MAX){ + + BYMDIDX = 0; /* Reset to 0 */ + increment_month(impl); + } + + days_in_month = icaltime_days_in_month(impl->last.month, + impl->last.year); + + day = BYMDPTR[BYMDIDX]; + + if (day < 0) { + day = icaltime_days_in_month(impl->last.month, impl->last.year) + day + 1; + } + + if ( day > days_in_month){ + impl->last.day = 1; + + /* Did moving to the next month put us on a valid date? if + so, note that the new data is valid, if, not, mark it + invalid */ + + if(is_day_in_byday(impl,impl->last)){ + data_valid = 1; + } else { + data_valid = 0; /* signal that impl->last is invalid */ + } + } + + impl->last.day = day; + + } else { + int days_in_month; + + increment_month(impl); + + days_in_month = icaltime_days_in_month(impl->last.month, + impl->last.year); + if (impl->last.day > days_in_month){ + data_valid = 0; /* signal that impl->last is invalid */ + } + } + + return data_valid; + +} + +static int next_weekday_by_week(icalrecur_iterator* impl) +{ + + int end_of_data = 0; + int start_of_week, dow; + struct icaltimetype next; + + if (next_hour(impl) == 0){ + return 0; + } + + if(!has_by_data(impl,BY_DAY)){ + return 1; + } + + /* If we get here, we need to step to tne next day */ + + for (;;) { + BYDAYIDX++; /* Look at next elem in BYDAY array */ + + /* Are we at the end of the BYDAY array? */ + if (BYDAYPTR[BYDAYIDX]==ICAL_RECURRENCE_ARRAY_MAX){ + BYDAYIDX = 0; /* Reset to 0 */ + end_of_data = 1; /* Signal that we're at the end */ + } + + /* Add the day of week offset to to the start of this week, and use + that to get the next day */ + /* ignore position of dow ("4FR"), only use dow ("FR")*/ + dow = icalrecurrencetype_day_day_of_week(BYDAYPTR[BYDAYIDX]); + dow -= impl->rule.week_start; /* Set Sunday to be 0 */ + if (dow < 0) dow += 7; + + start_of_week = icaltime_start_doy_week(impl->last, impl->rule.week_start); + + if(dow+start_of_week <1){ + /* The selected date is in the previous year. */ + if(!end_of_data){ + continue; + } + } + + next = icaltime_from_day_of_year(start_of_week + dow,impl->last.year); + + impl->last.day = next.day; + impl->last.month = next.month; + impl->last.year = next.year; + + return end_of_data; + } + +} + +static int next_week(icalrecur_iterator* impl) +{ + int end_of_data = 0; + + /* Increment to the next week day, if there is data at a level less than a week */ + if (next_weekday_by_week(impl) == 0){ + return 0; /* Have not reached end of week yet */ + } + + /* If we get here, we have incremented through the entire week, and + can increment to the next week */ + + if( has_by_data(impl,BY_WEEK_NO)){ + /*FREQ=WEEKLY;BYWEEK=20*/ + /* Use the Week Number byrule data */ + int week_no; + struct icaltimetype t; + + impl->by_indices[BY_WEEK_NO]++; + + if (impl->by_ptrs[BY_WEEK_NO][impl->by_indices[BY_WEEK_NO]] + ==ICAL_RECURRENCE_ARRAY_MAX){ + impl->by_indices[BY_WEEK_NO] = 0; + + end_of_data = 1; + } + + t = impl->last; + t.month=1; /* HACK, should be setting to the date of the first week of year*/ + t.day=1; + + week_no = impl->by_ptrs[BY_WEEK_NO][impl->by_indices[BY_WEEK_NO]]; + + impl->last.day += week_no*7; + + impl->last = icaltime_normalize(impl->last); + + } else { + /* Jump to the next week */ + increment_monthday(impl,7*impl->rule.interval); + } + + if( has_by_data(impl,BY_WEEK_NO) && end_of_data){ + increment_year(impl,1); + } + + return end_of_data; + +} + +/** Expand the BYDAY rule part and return a pointer to a newly allocated list of days. */ +static pvl_list expand_by_day(icalrecur_iterator* impl, int year) +{ + /* Try to calculate each of the occurrences. */ + int i; + pvl_list days_list = pvl_newlist(); + + int start_dow, end_dow, end_year_day; + struct icaltimetype tmp = impl->last; + + tmp.year= year; + tmp.month = 1; + tmp.day = 1; + tmp.is_date = 1; + + /* Find the day that 1st Jan falls on, 1 (Sun) to 7 (Sat). */ + start_dow = icaltime_day_of_week(tmp); + + /* Get the last day of the year*/ + tmp.year= year; + tmp.month = 12; + tmp.day = 31; + tmp.is_date = 1; + + end_dow = icaltime_day_of_week(tmp); + end_year_day = icaltime_day_of_year(tmp); + + for(i = 0; BYDAYPTR[i] != ICAL_RECURRENCE_ARRAY_MAX; i++){ + /* This is 1 (Sun) to 7 (Sat). */ + int dow = + icalrecurrencetype_day_day_of_week(BYDAYPTR[i]); + int pos = icalrecurrencetype_day_position(BYDAYPTR[i]); + + if(pos == 0){ + /* The day was specified without a position -- it is just + a bare day of the week ( BYDAY=SU) so add all of the + days of the year with this day-of-week*/ + int doy, tmp_start_doy; + + tmp_start_doy = ((dow + 7 - start_dow) % 7) + 1; + + for (doy = tmp_start_doy; doy <= end_year_day; doy += 7) + pvl_push(days_list,(void*)(int)doy); + + } else if ( pos > 0) { + int first; + /* First occurrence of dow in year */ + if( dow >= start_dow) { + first = dow - start_dow + 1; + } else { + first = dow - start_dow + 8; + } + + /* Then just multiple the position times 7 to get the pos'th day in the year */ + pvl_push(days_list,(void*)(first+ (pos-1) * 7)); + + } else { /* pos < 0 */ + int last; + pos = -pos; + + /* last occurrence of dow in year */ + if( dow <= end_dow) { + last = end_year_day - end_dow + dow; + } else { + last = end_year_day - end_dow + dow - 7; + } + + pvl_push(days_list,(void*)(last - (pos-1) * 7)); + } + } + return days_list; +} + + +/* For INTERVAL=YEARLY, set up the days[] array in the iterator to + list all of the days of the current year that are specified in this + rule. */ + +static int expand_year_days(icalrecur_iterator* impl, int year) +{ + int j,k; + int days_index=0; + struct icaltimetype t; + int flags; + + t = icaltime_null_date(); + +#define HBD(x) has_by_data(impl,x) + + memset(impl->days,ICAL_RECURRENCE_ARRAY_MAX_BYTE,sizeof(impl->days)); + + /* The flags and the following switch statement select which code + to use to expand the yers days, based on which BY-rules are + present. */ + + flags = (HBD(BY_DAY) ? 1<dtstart; + t.year = impl->last.year; + + impl->days[days_index++] = (short)icaltime_day_of_year(t); + + break; + } + case 1<by_ptrs[BY_MONTH][j]!=ICAL_RECURRENCE_ARRAY_MAX;j++){ + int month = impl->by_ptrs[BY_MONTH][j]; + int doy; + + t = impl->dtstart; + t.year = year; + t.month = month; + t.is_date = 1; + + doy = icaltime_day_of_year(t); + + impl->days[days_index++] = (short)doy; + + } + break; + } + + case 1<by_ptrs[BY_MONTH_DAY][k]!=ICAL_RECURRENCE_ARRAY_MAX;k++) + { + int month_day = impl->by_ptrs[BY_MONTH_DAY][k]; + int doy; + + t = impl->dtstart; + t.day = month_day; + t.year = year; + t.is_date = 1; + + doy = icaltime_day_of_year(t); + + impl->days[days_index++] = (short)doy; + + } + break; + } + + case (1<by_ptrs[BY_MONTH][j]!=ICAL_RECURRENCE_ARRAY_MAX;j++){ + for(k=0;impl->by_ptrs[BY_MONTH_DAY][k]!=ICAL_RECURRENCE_ARRAY_MAX;k++) + { + int month = impl->by_ptrs[BY_MONTH][j]; + int month_day = impl->by_ptrs[BY_MONTH_DAY][k]; + int doy; + + t.day = month_day; + t.month = month; + t.year = year; + t.is_date = 1; + + doy = icaltime_day_of_year(t); + + impl->days[days_index++] = (short)doy; + + } + } + + break; + } + + case 1<dtstart.day; + t.month = impl->dtstart.month; + t.year = year; + t.is_date = 1; + + dow = icaltime_day_of_week(t); + /* HACK Not finished */ + + icalerror_set_errno(ICAL_UNIMPLEMENTED_ERROR); + + break; + } + + case (1<days[days_index++] = day; + } + + pvl_free(days); + + break; + } + + case (1<by_ptrs[BY_MONTH][j]!=ICAL_RECURRENCE_ARRAY_MAX;j++){ + int month = impl->by_ptrs[BY_MONTH][j]; + int days_in_month = icaltime_days_in_month(month,year); + int first_dow, last_dow, doy_offset; + + t.year = year; + t.month = month; + t.day = 1; + t.is_date = 1; + + first_dow = icaltime_day_of_week(t); + + /* This holds the day offset used to calculate the day of the year + from the month day. Just add the month day to this. */ + doy_offset = icaltime_day_of_year(t) - 1; + + t.day = days_in_month; + last_dow = icaltime_day_of_week(t); + + for(k=0;impl->by_ptrs[BY_DAY][k]!=ICAL_RECURRENCE_ARRAY_MAX;k++){ + short day_coded = impl->by_ptrs[BY_DAY][k]; + enum icalrecurrencetype_weekday dow = + icalrecurrencetype_day_day_of_week(day_coded); + int pos = icalrecurrencetype_day_position(day_coded); + int first_matching_day, last_matching_day, day, month_day; + + /* Calculate the first day in the month with the given weekday, + and the last day. */ + first_matching_day = ((dow + 7 - first_dow) % 7) + 1; + last_matching_day = days_in_month - ((last_dow + 7 - dow) % 7); + + if (pos == 0) { + /* Add all of instances of the weekday within the month. */ + for (day = first_matching_day; day <= days_in_month; day += 7) + impl->days[days_index++] = (short)(doy_offset + day); + + } else if (pos > 0) { + /* Add the nth instance of the weekday within the month. */ + month_day = first_matching_day + (pos - 1) * 7; + + if (month_day <= days_in_month) + impl->days[days_index++] = (short)(doy_offset + month_day); + + } else { + /* Add the -nth instance of the weekday within the month.*/ + month_day = last_matching_day + (pos + 1) * 7; + + if (month_day > 0) + impl->days[days_index++] = (short)(doy_offset + month_day); + } + } + } + break; + } + + case (1<days[days_index++] = day; + } + } + + } + + pvl_free(days); + + break; + } + + case (1<days[days_index++] = day; + } + } + } + + } + + pvl_free(days); + + break; + + } + + case (1<days[days_index++] = day; + } + } + + } + + pvl_free(days); + break; + } + + case (1<by_ptrs[BY_YEAR_DAY][j]!=ICAL_RECURRENCE_ARRAY_MAX;j++){ + impl->days[days_index++] = impl->by_ptrs[BY_YEAR_DAY][j]; + } + break; + } + + default: { + icalerror_set_errno(ICAL_UNIMPLEMENTED_ERROR); + break; + } + + } + + return 0; +} + + +static int next_year(icalrecur_iterator* impl) +{ + struct icaltimetype next; + + if (next_hour(impl) == 0){ + return 0; + } + + if (impl->days[++impl->days_index] == ICAL_RECURRENCE_ARRAY_MAX){ + impl->days_index = 0; + + for (;;) { + increment_year(impl,impl->rule.interval); + expand_year_days(impl,impl->last.year); + if (impl->days[0] != ICAL_RECURRENCE_ARRAY_MAX) + break; + } + } + + next = icaltime_from_day_of_year(impl->days[impl->days_index], impl->last.year); + + impl->last.day = next.day; + impl->last.month = next.month; + + return 1; +} + +int icalrecur_check_rulepart(icalrecur_iterator* impl, + int v, enum byrule byrule) +{ + int itr; + + if(impl->by_ptrs[byrule][0]!=ICAL_RECURRENCE_ARRAY_MAX){ + for(itr=0; impl->by_ptrs[byrule][itr]!=ICAL_RECURRENCE_ARRAY_MAX;itr++){ + if(impl->by_ptrs[byrule][itr] == v){ + return 1; + } + } + } + + return 0; +} + +static int check_contract_restriction(icalrecur_iterator* impl, + enum byrule byrule, int v) +{ + int pass = 0; + int itr; + icalrecurrencetype_frequency freq = impl->rule.freq; + + if(impl->by_ptrs[byrule][0]!=ICAL_RECURRENCE_ARRAY_MAX && + expand_map[freq].map[byrule] == CONTRACT){ + for(itr=0; impl->by_ptrs[byrule][itr]!=ICAL_RECURRENCE_ARRAY_MAX;itr++){ + if(impl->by_ptrs[byrule][itr] == v){ + pass=1; + break; + } + } + + return pass; + } else { + /* This is not a contracting byrule, or it has no data, so the + test passes*/ + return 1; + } +} + + +static int check_contracting_rules(icalrecur_iterator* impl) +{ + + int day_of_week = icaltime_day_of_week(impl->last); + int week_no = icaltime_week_number(impl->last); + int year_day = icaltime_day_of_year(impl->last); + + if ( + check_contract_restriction(impl,BY_SECOND, impl->last.second) && + check_contract_restriction(impl,BY_MINUTE, impl->last.minute) && + check_contract_restriction(impl,BY_HOUR, impl->last.hour) && + check_contract_restriction(impl,BY_DAY, day_of_week) && + check_contract_restriction(impl,BY_WEEK_NO, week_no) && + check_contract_restriction(impl,BY_MONTH_DAY, impl->last.day) && + check_contract_restriction(impl,BY_MONTH, impl->last.month) && + check_contract_restriction(impl,BY_YEAR_DAY, year_day) ) + { + + return 1; + } else { + return 0; + } +} + +struct icaltimetype icalrecur_iterator_next(icalrecur_iterator *impl) +{ + int valid = 1; + + if( (impl->rule.count!=0 &&impl->occurrence_no >= impl->rule.count) || + (!icaltime_is_null_time(impl->rule.until) && + icaltime_compare(impl->last,impl->rule.until) > 0)) { + return icaltime_null_time(); + } + + if(impl->occurrence_no == 0 + && icaltime_compare(impl->last,impl->dtstart) >= 0){ + + impl->occurrence_no++; + return impl->last; + } + + do { + valid = 1; + switch(impl->rule.freq){ + + case ICAL_SECONDLY_RECURRENCE: { + next_second(impl); + break; + } + case ICAL_MINUTELY_RECURRENCE: { + next_minute(impl); + break; + } + case ICAL_HOURLY_RECURRENCE: { + next_hour(impl); + break; + } + case ICAL_DAILY_RECURRENCE: { + next_day(impl); + break; + } + case ICAL_WEEKLY_RECURRENCE: { + next_week(impl); + break; + } + case ICAL_MONTHLY_RECURRENCE: { + valid = next_month(impl); + break; + } + case ICAL_YEARLY_RECURRENCE:{ + next_year(impl); + break; + } + default:{ + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + return icaltime_null_time(); + } + } + + if(impl->last.year >= 2038 ){ + /* HACK */ + return icaltime_null_time(); + } + + } while(!check_contracting_rules(impl) + || icaltime_compare(impl->last,impl->dtstart) < 0 + || valid == 0); + + +/* Ignore null times and times that are after the until time */ + if( !icaltime_is_null_time(impl->rule.until) && + icaltime_compare(impl->last,impl->rule.until) > 0 ) { + return icaltime_null_time(); + } + + impl->occurrence_no++; + + return impl->last; +} + + +/************************** Type Routines **********************/ + + +void icalrecurrencetype_clear(struct icalrecurrencetype *recur) +{ + memset(recur,ICAL_RECURRENCE_ARRAY_MAX_BYTE, + sizeof(struct icalrecurrencetype)); + + recur->week_start = ICAL_MONDAY_WEEKDAY; + recur->freq = ICAL_NO_RECURRENCE; + recur->interval = 1; + memset(&(recur->until),0,sizeof(struct icaltimetype)); + recur->count = 0; +} + +/** The 'day' element of icalrecurrencetype_weekday is encoded to + * allow representation of both the day of the week ( Monday, Tueday), + * but also the Nth day of the week ( First tuesday of the month, last + * thursday of the year) These routines decode the day values. + * + * The day's position in the period ( Nth-ness) and the numerical + * value of the day are encoded together as: pos*7 + dow + * + * A position of 0 means 'any' or 'every' + */ + +enum icalrecurrencetype_weekday icalrecurrencetype_day_day_of_week(short day) +{ + return abs(day)%8; +} + +int icalrecurrencetype_day_position(short day) +{ + int wd, pos; + + wd = icalrecurrencetype_day_day_of_week(day); + + pos = (abs(day)-wd)/8 * ((day<0)?-1:1); + + + return pos; +} + + +/****************** Enumeration Routines ******************/ + +static struct {icalrecurrencetype_weekday wd; const char * str; } +wd_map[] = { + {ICAL_SUNDAY_WEEKDAY,"SU"}, + {ICAL_MONDAY_WEEKDAY,"MO"}, + {ICAL_TUESDAY_WEEKDAY,"TU"}, + {ICAL_WEDNESDAY_WEEKDAY,"WE"}, + {ICAL_THURSDAY_WEEKDAY,"TH"}, + {ICAL_FRIDAY_WEEKDAY,"FR"}, + {ICAL_SATURDAY_WEEKDAY,"SA"}, + {ICAL_NO_WEEKDAY,0} +}; + +const char* icalrecur_weekday_to_string(icalrecurrencetype_weekday kind) +{ + int i; + + for (i=0; wd_map[i].wd != ICAL_NO_WEEKDAY; i++) { + if ( wd_map[i].wd == kind) { + return wd_map[i].str; + } + } + + return 0; +} + +icalrecurrencetype_weekday icalrecur_string_to_weekday(const char* str) +{ + int i; + + for (i=0; wd_map[i].wd != ICAL_NO_WEEKDAY; i++) { + if ( strcmp(str,wd_map[i].str) == 0){ + return wd_map[i].wd; + } + } + + return ICAL_NO_WEEKDAY; +} + + + +static struct { + icalrecurrencetype_frequency kind; + const char* str; +} freq_map[] = { + {ICAL_SECONDLY_RECURRENCE,"SECONDLY"}, + {ICAL_MINUTELY_RECURRENCE,"MINUTELY"}, + {ICAL_HOURLY_RECURRENCE,"HOURLY"}, + {ICAL_DAILY_RECURRENCE,"DAILY"}, + {ICAL_WEEKLY_RECURRENCE,"WEEKLY"}, + {ICAL_MONTHLY_RECURRENCE,"MONTHLY"}, + {ICAL_YEARLY_RECURRENCE,"YEARLY"}, + {ICAL_NO_RECURRENCE,0} +}; + +const char* icalrecur_freq_to_string(icalrecurrencetype_frequency kind) +{ + int i; + + for (i=0; freq_map[i].kind != ICAL_NO_RECURRENCE ; i++) { + if ( freq_map[i].kind == kind ) { + return freq_map[i].str; + } + } + return 0; +} + +icalrecurrencetype_frequency icalrecur_string_to_freq(const char* str) +{ + int i; + + for (i=0; freq_map[i].kind != ICAL_NO_RECURRENCE ; i++) { + if ( strcmp(str,freq_map[i].str) == 0){ + return freq_map[i].kind; + } + } + return ICAL_NO_RECURRENCE; +} + +/** Fill an array with the 'count' number of occurrences generated by + * the rrule. Note that the times are returned in UTC, but the times + * are calculated in local time. YOu will have to convert the results + * back into local time before using them. + */ + +int icalrecur_expand_recurrence(char* rule, time_t start, + int count, time_t* array) +{ + struct icalrecurrencetype recur; + icalrecur_iterator* ritr; + time_t tt; + struct icaltimetype icstart, next; + int i = 0; + + memset(array, 0, count*sizeof(time_t)); + + icstart = icaltime_from_timet_with_zone(start,0,0); + + recur = icalrecurrencetype_from_string(rule); + + for(ritr = icalrecur_iterator_new(recur,icstart), + next = icalrecur_iterator_next(ritr); + !icaltime_is_null_time(next) && i < count; + next = icalrecur_iterator_next(ritr)){ + + tt = icaltime_as_timet(next); + + if (tt >= start ){ + array[i++] = tt; + } + + } + + icalrecur_iterator_free(ritr); + + return 1; +} diff --git a/mozilla/calendar/libical/src/libical/icalrecur.h b/mozilla/calendar/libical/src/libical/icalrecur.h new file mode 100644 index 00000000000..45bdd21b65a --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icalrecur.h @@ -0,0 +1,215 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalrecur.h + CREATOR: eric 20 March 2000 + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ +*/ + +/** +@file icalrecur.h +@brief Routines for dealing with recurring time + +How to use: + +1) Get a rule and a start time from a component + +@code + icalproperty rrule; + struct icalrecurrencetype recur; + struct icaltimetype dtstart; + + rrule = icalcomponent_get_first_property(comp,ICAL_RRULE_PROPERTY); + recur = icalproperty_get_rrule(rrule); + start = icalproperty_get_dtstart(dtstart); +@endcode + +Or, just make them up: + +@code + recur = icalrecurrencetype_from_string("FREQ=YEARLY;BYDAY=SU,WE"); + dtstart = icaltime_from_string("19970101T123000") +@endcode + +2) Create an iterator + +@code + icalrecur_iterator* ritr; + ritr = icalrecur_iterator_new(recur,start); +@endcode + +3) Iterator over the occurrences + +@code + struct icaltimetype next; + while (next = icalrecur_iterator_next(ritr) + && !icaltime_is_null_time(next){ + Do something with next + } +@endcode + +Note that that the time returned by icalrecur_iterator_next is in +whatever timezone that dtstart is in. + +*/ + +#ifndef ICALRECUR_H +#define ICALRECUR_H + +#include +#include "icaltime.h" + +/* + * Recurrance enumerations + */ + +typedef enum icalrecurrencetype_frequency +{ + /* These enums are used to index an array, so don't change the + order or the integers */ + + ICAL_SECONDLY_RECURRENCE=0, + ICAL_MINUTELY_RECURRENCE=1, + ICAL_HOURLY_RECURRENCE=2, + ICAL_DAILY_RECURRENCE=3, + ICAL_WEEKLY_RECURRENCE=4, + ICAL_MONTHLY_RECURRENCE=5, + ICAL_YEARLY_RECURRENCE=6, + ICAL_NO_RECURRENCE=7 + +} icalrecurrencetype_frequency; + +typedef enum icalrecurrencetype_weekday +{ + ICAL_NO_WEEKDAY, + ICAL_SUNDAY_WEEKDAY, + ICAL_MONDAY_WEEKDAY, + ICAL_TUESDAY_WEEKDAY, + ICAL_WEDNESDAY_WEEKDAY, + ICAL_THURSDAY_WEEKDAY, + ICAL_FRIDAY_WEEKDAY, + ICAL_SATURDAY_WEEKDAY +} icalrecurrencetype_weekday; + +enum { + ICAL_RECURRENCE_ARRAY_MAX = 0x7f7f, + ICAL_RECURRENCE_ARRAY_MAX_BYTE = 0x7f +}; + + + +/** + * Recurrence type routines + */ + +/* See RFC 2445 Section 4.3.10, RECUR Value, for an explaination of + the values and fields in struct icalrecurrencetype */ + +#define ICAL_BY_SECOND_SIZE 61 +#define ICAL_BY_MINUTE_SIZE 61 +#define ICAL_BY_HOUR_SIZE 25 +#define ICAL_BY_DAY_SIZE 364 /* 7 days * 52 weeks */ +#define ICAL_BY_MONTHDAY_SIZE 32 +#define ICAL_BY_YEARDAY_SIZE 367 +#define ICAL_BY_WEEKNO_SIZE 54 +#define ICAL_BY_MONTH_SIZE 13 +#define ICAL_BY_SETPOS_SIZE 367 + +/** Main struct for holding digested recurrence rules */ +struct icalrecurrencetype +{ + icalrecurrencetype_frequency freq; + + + /* until and count are mutually exclusive. */ + struct icaltimetype until; + int count; + + short interval; + + icalrecurrencetype_weekday week_start; + + /* The BY* parameters can each take a list of values. Here I + * assume that the list of values will not be larger than the + * range of the value -- that is, the client will not name a + * value more than once. + + * Each of the lists is terminated with the value + * ICAL_RECURRENCE_ARRAY_MAX unless the the list is full. + */ + + short by_second[ICAL_BY_SECOND_SIZE]; + short by_minute[ICAL_BY_MINUTE_SIZE]; + short by_hour[ICAL_BY_HOUR_SIZE]; + short by_day[ICAL_BY_DAY_SIZE]; /* Encoded value, see below */ + short by_month_day[ICAL_BY_MONTHDAY_SIZE]; + short by_year_day[ ICAL_BY_YEARDAY_SIZE]; + short by_week_no[ICAL_BY_WEEKNO_SIZE]; + short by_month[ICAL_BY_MONTH_SIZE]; + short by_set_pos[ICAL_BY_SETPOS_SIZE]; +}; + + +void icalrecurrencetype_clear(struct icalrecurrencetype *r); + +/** + * Array Encoding + * + * The 'day' element of the by_day array is encoded to allow + * representation of both the day of the week ( Monday, Tueday), but also + * the Nth day of the week ( First tuesday of the month, last thursday of + * the year) These routines decode the day values + */ + +/** 1 == Monday, etc. */ +enum icalrecurrencetype_weekday icalrecurrencetype_day_day_of_week(short day); + +/** 0 == any of day of week. 1 == first, 2 = second, -2 == second to last, etc */ +int icalrecurrencetype_day_position(short day); + +icalrecurrencetype_weekday icalrecur_string_to_weekday(const char* str); + +/** Recurrance rule parser */ + +/** Convert between strings and recurrencetype structures. */ +struct icalrecurrencetype icalrecurrencetype_from_string(const char* str); +char* icalrecurrencetype_as_string(struct icalrecurrencetype *recur); + + +/** Recurrence iteration routines */ + +typedef struct icalrecur_iterator_impl icalrecur_iterator; + +/** Create a new recurrence rule iterator */ +icalrecur_iterator* icalrecur_iterator_new(struct icalrecurrencetype rule, + struct icaltimetype dtstart); + +/** Get the next occurrence from an iterator */ +struct icaltimetype icalrecur_iterator_next(icalrecur_iterator*); + +void icalrecur_iterator_decrement_count(icalrecur_iterator*); + +/** Free the iterator */ +void icalrecur_iterator_free(icalrecur_iterator*); + +/** + * Fills array up with at most 'count' time_t values, each + * representing an occurrence time in seconds past the POSIX epoch + */ +int icalrecur_expand_recurrence(char* rule, time_t start, + int count, time_t* array); + + +#endif diff --git a/mozilla/calendar/libical/src/libical/icalrestriction.c.in b/mozilla/calendar/libical/src/libical/icalrestriction.c.in new file mode 100644 index 00000000000..05cdc9d4139 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icalrestriction.c.in @@ -0,0 +1,465 @@ +/* -*- Mode: C -*- */ +/* ====================================================================== + File: icalrestriction.c + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + ======================================================================*/ +/*#line 7 "icalrestriction.c.in"*/ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "icalrestriction.h" +#include "icalenums.h" +#include "icalerror.h" + +#include +#include /* For snprintf */ + +#define TMP_BUF_SIZE 1024 + +#ifdef WIN32 +#define snprintf _snprintf +#define strcasecmp stricmp +#endif + + +/* Define the structs for the restrictions. these data are filled out +in machine generated code below */ + +struct icalrestriction_property_record; + +typedef char* (*restriction_func)(struct icalrestriction_property_record* rec,icalcomponent* comp,icalproperty* prop); + + +typedef struct icalrestriction_property_record { + icalproperty_method method; + icalcomponent_kind component; + icalproperty_kind property; + icalrestriction_kind restriction; + restriction_func function; +} icalrestriction_property_record; + + +typedef struct icalrestriction_component_record { + icalproperty_method method; + icalcomponent_kind component; + icalcomponent_kind subcomponent; + icalrestriction_kind restriction; + restriction_func function; +} icalrestriction_component_record; + +icalrestriction_property_record* +icalrestriction_get_property_restriction(icalproperty_method method, + icalcomponent_kind component, + icalproperty_kind property); +icalrestriction_component_record* +icalrestriction_get_component_restriction(icalproperty_method method, + icalcomponent_kind component, + icalcomponent_kind subcomponent); + +icalrestriction_component_record icalrestriction_component_records[]; +icalrestriction_property_record icalrestriction_property_records[]; + +icalrestriction_property_record null_prop_record = {ICAL_METHOD_NONE,ICAL_NO_COMPONENT,ICAL_NO_PROPERTY,ICAL_RESTRICTION_UNKNOWN,0}; +icalrestriction_component_record null_comp_record = {ICAL_METHOD_NONE,ICAL_NO_COMPONENT,ICAL_NO_COMPONENT,ICAL_RESTRICTION_UNKNOWN,0}; + + +/** The each row gives the result of comparing a restriction against a + count. The columns in each row represent 0,1,2+. '-1' indicates + 'invalid, 'don't care' or 'needs more analysis' So, for + ICAL_RESTRICTION_ONE, if there is 1 of a property with that + restriction, it passes, but if there are 0 or 2+, it fails. */ + +char compare_map[ICAL_RESTRICTION_UNKNOWN+1][3] = { + { 1, 1, 1},/*ICAL_RESTRICTION_NONE*/ + { 1, 0, 0},/*ICAL_RESTRICTION_ZERO*/ + { 0, 1, 0},/*ICAL_RESTRICTION_ONE*/ + { 1, 1, 1},/*ICAL_RESTRICTION_ZEROPLUS*/ + { 0, 1, 1},/*ICAL_RESTRICTION_ONEPLUS*/ + { 1, 1, 0},/*ICAL_RESTRICTION_ZEROORONE*/ + { 1, 1, 0},/*ICAL_RESTRICTION_ONEEXCLUSIVE*/ + { 1, 1, 0},/*ICAL_RESTRICTION_ONEMUTUAL*/ + { 1, 1, 1} /*ICAL_RESTRICTION_UNKNOWN*/ +}; + +char restr_string_map[ICAL_RESTRICTION_UNKNOWN+1][60] = { + "unknown number",/*ICAL_RESTRICTION_NONE*/ + "0",/*ICAL_RESTRICTION_ZERO*/ + "1",/*ICAL_RESTRICTION_ONE*/ + "zero or more",/*ICAL_RESTRICTION_ZEROPLUS*/ + "one or more" ,/*ICAL_RESTRICTION_ONEPLUS*/ + "zero or one",/*ICAL_RESTRICTION_ZEROORONE*/ + "zero or one, exclusive with another property",/*ICAL_RESTRICTION_ONEEXCLUSIVE*/ + "zero or one, mutual with another property",/*ICAL_RESTRICTION_ONEMUTUAL*/ + "unknown number" /*ICAL_RESTRICTION_UNKNOWN*/ +}; + + +int +icalrestriction_compare(icalrestriction_kind restr, int count){ + + if ( restr < ICAL_RESTRICTION_NONE || restr > ICAL_RESTRICTION_UNKNOWN + || count < 0){ + return -1; + } + + if (count > 2) { + count = 2; + } + + return compare_map[restr][count]; + +} + +/* Special case routines */ + +char* icalrestriction_may_be_draft_final_canceled( + icalrestriction_property_record *rec, + icalcomponent* comp, + icalproperty* prop) +{ + + icalproperty_status stat = icalproperty_get_status(prop); + + if( !( stat == ICAL_STATUS_DRAFT || + stat == ICAL_STATUS_FINAL || + stat == ICAL_STATUS_CANCELLED )){ + + return "Failed iTIP restrictions for STATUS property. Value must be one of DRAFT, FINAL, or CANCELED"; + + } + + return 0; +} + +char* icalrestriction_may_be_comp_need_process( + icalrestriction_property_record *rec, + icalcomponent* comp, + icalproperty* prop) +{ + icalproperty_status stat = icalproperty_get_status(prop); + + if( !( stat == ICAL_STATUS_COMPLETED || + stat == ICAL_STATUS_NEEDSACTION || + stat == ICAL_STATUS_INPROCESS )){ + + return "Failed iTIP restrictions for STATUS property. Value must be one of COMPLETED, NEEDS-ACTION or IN-PROCESS"; + + } + + return 0; +} +char* icalrestriction_may_be_tent_conf(icalrestriction_property_record *rec, + icalcomponent* comp, + icalproperty* prop){ + icalproperty_status stat = icalproperty_get_status(prop); + + if( !( stat == ICAL_STATUS_TENTATIVE || + stat == ICAL_STATUS_CONFIRMED )){ + + return "Failed iTIP restrictions for STATUS property. Value must be one of TENTATIVE or CONFIRMED"; + + } + + return 0; +} +char* icalrestriction_may_be_tent_conf_cancel( + icalrestriction_property_record *rec, + icalcomponent* comp, + icalproperty* prop) +{ + icalproperty_status stat = icalproperty_get_status(prop); + + if( !( stat == ICAL_STATUS_TENTATIVE || + stat == ICAL_STATUS_CONFIRMED || + stat == ICAL_STATUS_CANCELLED )){ + + return "Failed iTIP restrictions for STATUS property. Value must be one of TENTATIVE, CONFIRMED or CANCELED"; + + } + + return 0; +} + +char* icalrestriction_must_be_cancel_if_present( + icalrestriction_property_record *rec, + icalcomponent* comp, + icalproperty* prop) +{ + /* This routine will not be called if prop == 0 */ + icalproperty_status stat = icalproperty_get_status(prop); + + if( stat != ICAL_STATUS_CANCELLED) + { + return "Failed iTIP restrictions for STATUS property. Value must be CANCELLED"; + + } + + + return 0; +} + +char* icalrestriction_must_be_canceled_no_attendee( + icalrestriction_property_record *rec, + icalcomponent* comp, + icalproperty* prop) +{ + + /* Hack. see rfc2446, 3.2.5 CANCEL for porperty STATUS. I don't + understand the note */ + + return 0; +} +char* icalrestriction_must_be_recurring(icalrestriction_property_record *rec, + icalcomponent* comp, + icalproperty* prop){ + /* Hack */ + return 0; +} +char* icalrestriction_must_have_duration(icalrestriction_property_record *rec, + icalcomponent* comp, + icalproperty* prop){ + + if( !icalcomponent_get_first_property(comp,ICAL_DURATION_PROPERTY)){ + + return "Failed iTIP restrictions. This component must have a DURATION property"; + + } + + return 0; +} +char* icalrestriction_must_have_repeat(icalrestriction_property_record *rec, + icalcomponent* comp, + icalproperty* prop){ + if( !icalcomponent_get_first_property(comp,ICAL_REPEAT_PROPERTY)){ + + return "Failed iTIP restrictions. This component must have a REPEAT property"; + + } + + return 0; +} +char* icalrestriction_must_if_tz_ref(icalrestriction_property_record *rec, + icalcomponent* comp, + icalproperty* prop){ + + /* Hack */ + return 0; +} +char* icalrestriction_no_dtend(icalrestriction_property_record *rec, + icalcomponent* comp, + icalproperty* prop){ + + if( icalcomponent_get_first_property(comp,ICAL_DTEND_PROPERTY)){ + + return "Failed iTIP restrictions. The component must not have both DURATION and DTEND"; + + } + + return 0; +} +char* icalrestriction_no_duration(icalrestriction_property_record *rec, + icalcomponent* comp, + icalproperty* prop){ + + /* _no_dtend takes care of this one */ + return 0; +} +char* icalrestriction_must_be_email( + icalrestriction_property_record *rec, + icalcomponent* comp, + icalproperty* prop) +{ + icalproperty_status stat = icalproperty_get_action(prop); + + if( !( stat == ICAL_ACTION_EMAIL)){ + + return "Failed iTIP restrictions for ACTION property. Value must be EMAIL."; + + } + + return 0; +} + +int icalrestriction_check_component(icalproperty_method method, + icalcomponent* comp) +{ + icalproperty_kind kind; + icalcomponent_kind comp_kind; + icalrestriction_kind restr; + icalrestriction_property_record *prop_record; + char* funcr = 0; + icalproperty *prop; + + int count; + int compare; + int valid = 1; + + comp_kind = icalcomponent_isa(comp); + + /* Check all of the properties in this component */ + + for(kind = ICAL_ANY_PROPERTY+1; kind != ICAL_NO_PROPERTY; kind++){ + count = icalcomponent_count_properties(comp, kind); + + prop_record = icalrestriction_get_property_restriction(method, + comp_kind, + kind); + + restr = prop_record->restriction; + + if(restr == ICAL_RESTRICTION_ONEEXCLUSIVE || + restr == ICAL_RESTRICTION_ONEMUTUAL) { + + /* First treat is as a 0/1 restriction */ + restr = ICAL_RESTRICTION_ZEROORONE; + compare = icalrestriction_compare(restr,count); + + } else { + + compare = icalrestriction_compare(restr,count); + } + + assert(compare != -1); + + if (compare == 0){ + char temp[TMP_BUF_SIZE]; + + snprintf(temp, TMP_BUF_SIZE,"Failed iTIP restrictions for %s property. Expected %s instances of the property and got %d", + icalenum_property_kind_to_string(kind), + restr_string_map[restr], count); + + icalcomponent_add_property + (comp, + icalproperty_vanew_xlicerror( + temp, + icalparameter_new_xlicerrortype(ICAL_XLICERRORTYPE_INVALIDITIP), + 0)); + } + + + prop = icalcomponent_get_first_property(comp, kind); + + if (prop != 0 && prop_record->function !=0 ){ + funcr = prop_record->function(prop_record,comp,prop); + } + + if(funcr !=0){ + icalcomponent_add_property + (comp, + icalproperty_vanew_xlicerror( + funcr, + icalparameter_new_xlicerrortype( + ICAL_XLICERRORTYPE_INVALIDITIP), + 0)); + + compare = 0; + } + + valid = valid && compare; + } + + + + return valid; + + +} + +int icalrestriction_check(icalcomponent* outer_comp) +{ + icalcomponent_kind comp_kind; + icalproperty_method method; + icalcomponent* inner_comp; + icalproperty *method_prop; + int valid; + + icalerror_check_arg_rz( (outer_comp!=0), "outer comp"); + + + /* Get the Method value from the outer component */ + + comp_kind = icalcomponent_isa(outer_comp); + + if (comp_kind != ICAL_VCALENDAR_COMPONENT){ + icalerror_set_errno(ICAL_BADARG_ERROR); + return 0; + } + + method_prop = icalcomponent_get_first_property(outer_comp, + ICAL_METHOD_PROPERTY); + + if (method_prop == 0){ + method = ICAL_METHOD_NONE; + } else { + method = icalproperty_get_method(method_prop); + } + + + /* Check the VCALENDAR wrapper */ + valid = icalrestriction_check_component(ICAL_METHOD_NONE,outer_comp); + + + /* Now check the inner components */ + + for(inner_comp= icalcomponent_get_first_component(outer_comp, + ICAL_ANY_COMPONENT); + inner_comp != 0; + inner_comp= icalcomponent_get_next_component(outer_comp, + ICAL_ANY_COMPONENT)){ + + valid = valid && icalrestriction_check_component(method,inner_comp); + + } + + + return valid; + +} + +icalrestriction_property_record* +icalrestriction_get_property_restriction(icalproperty_method method, + icalcomponent_kind component, + icalproperty_kind property) +{ + int i; + + for(i = 0; + icalrestriction_property_records[i].restriction != ICAL_RESTRICTION_NONE; + i++){ + + if (method == icalrestriction_property_records[i].method && + component == icalrestriction_property_records[i].component && + property == icalrestriction_property_records[i].property ){ + return &icalrestriction_property_records[i]; + } + } + + return &null_prop_record; +} + + +icalrestriction_component_record* +icalrestriction_get_component_restriction(icalproperty_method method, + icalcomponent_kind component, + icalcomponent_kind subcomponent) +{ + + int i; + + for(i = 0; + icalrestriction_component_records[i].restriction != ICAL_RESTRICTION_NONE; + i++){ + + if (method == icalrestriction_component_records[i].method && + component == icalrestriction_component_records[i].component && + subcomponent == icalrestriction_component_records[i].subcomponent ){ + return &icalrestriction_component_records[i]; + } + } + + return &null_comp_record; +} + diff --git a/mozilla/calendar/libical/src/libical/icalrestriction.h b/mozilla/calendar/libical/src/libical/icalrestriction.h new file mode 100644 index 00000000000..8016d4b0908 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icalrestriction.h @@ -0,0 +1,63 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalrestriction.h + CREATOR: eric 24 April 1999 + + $Id: icalrestriction.h,v 1.1.1.1 2001/01/02 07:33:02 ebusboom Exp $ + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icalrestriction.h + + Contributions from: + Graham Davison (g.m.davison@computer.org) + + +======================================================================*/ + +#include "icalproperty.h" +#include "icalcomponent.h" + +#ifndef ICALRESTRICTION_H +#define ICALRESTRICTION_H + +/* These must stay in this order for icalrestriction_compare to work */ +typedef enum icalrestriction_kind { + ICAL_RESTRICTION_NONE=0, /* 0 */ + ICAL_RESTRICTION_ZERO, /* 1 */ + ICAL_RESTRICTION_ONE, /* 2 */ + ICAL_RESTRICTION_ZEROPLUS, /* 3 */ + ICAL_RESTRICTION_ONEPLUS, /* 4 */ + ICAL_RESTRICTION_ZEROORONE, /* 5 */ + ICAL_RESTRICTION_ONEEXCLUSIVE, /* 6 */ + ICAL_RESTRICTION_ONEMUTUAL, /* 7 */ + ICAL_RESTRICTION_UNKNOWN /* 8 */ +} icalrestriction_kind; + +int +icalrestriction_compare(icalrestriction_kind restr, int count); + + +int +icalrestriction_is_parameter_allowed(icalproperty_kind property, + icalparameter_kind parameter); + +int icalrestriction_check(icalcomponent* comp); + + +#endif /* !ICALRESTRICTION_H */ + + + diff --git a/mozilla/calendar/libical/src/libical/icaltime.c b/mozilla/calendar/libical/src/libical/icaltime.c new file mode 100644 index 00000000000..72c08e55542 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icaltime.c @@ -0,0 +1,1050 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: icaltime.c + CREATOR: eric 02 June 2000 + + $Id: icaltime.c,v 1.66 2003/02/17 15:19:14 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The Original Code is eric. The Initial Developer of the Original + Code is Eric Busboom + + + ======================================================================*/ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "icaltime.h" +#include +#include +#include +#include +#include + +#include "astime.h" /* Julian data handling routines */ + +#include "icalerror.h" +#include "icalmemory.h" + +#include "icaltimezone.h" +#include "icalvalue.h" + +#ifdef WIN32 +#include + +#define snprintf _snprintf +#define strcasecmp stricmp +#endif + +/* + * Function to convert a struct tm time specification + * to an ANSI time_t using the specified time zone. + * This is different from the standard mktime() function + * in that we dont want the automatic adjustments for + * local daylight savings time applied to the result. + * This function expects well-formed input. + */ +static time_t make_time(struct tm *tm, int tzm) +{ + time_t tim; + + static int days[] = { -1, 30, 58, 89, 119, 150, 180, 211, 242, 272, 303, 333, 364 }; + + /* check that year specification within range */ + + if (tm->tm_year < 70 || tm->tm_year > 138) + return((time_t) -1); + + /* check that month specification within range */ + + if (tm->tm_mon < 0 || tm->tm_mon > 11) + return((time_t) -1); + + /* check for upper bound of Jan 17, 2038 (to avoid possibility of + 32-bit arithmetic overflow) */ + + if (tm->tm_year == 138) { + if (tm->tm_mon > 0) + return((time_t) -1); + else if (tm->tm_mday > 17) + return((time_t) -1); + } + + /* + * calculate elapsed days since start of the epoch (midnight Jan + * 1st, 1970 UTC) 17 = number of leap years between 1900 and 1970 + * (number of leap days to subtract) + */ + + tim = (tm->tm_year - 70) * 365 + ((tm->tm_year - 1) / 4) - 17; + + /* add number of days elapsed in the current year */ + + tim += days[tm->tm_mon]; + + /* check and adjust for leap years (the leap year check only valid + during the 32-bit era */ + + if ((tm->tm_year & 3) == 0 && tm->tm_mon > 1) + tim += 1; + + /* elapsed days to current date */ + + tim += tm->tm_mday; + + + /* calculate elapsed hours since start of the epoch */ + + tim = tim * 24 + tm->tm_hour; + + /* calculate elapsed minutes since start of the epoch */ + + tim = tim * 60 + tm->tm_min; + + /* adjust per time zone specification */ + + tim -= tzm; + + /* calculate elapsed seconds since start of the epoch */ + + tim = tim * 60 + tm->tm_sec; + + /* return number of seconds since start of the epoch */ + + return(tim); +} + +/** @brief Constructor (deprecated). + * + * Convert seconds past UNIX epoch to a timetype. + * + * @deprecated This constructor is deprecated and shouldn't be used in + * new software. Use icaltime_from_timet_with_zone(time_t, int, + * icaltimezone *) instead. In the meantime, calls to this method + * return a floating time, which can always be converted to a local + * time with an appropriate call to icaltime_convert_to_zone(). + */ + +struct icaltimetype +icaltime_from_timet(const time_t tm, const int is_date) +{ +#ifndef NO_WARN_DEPRECATED + icalerror_warn("icaltime_from_timet() is DEPRECATED, use icaltime_from_timet_with_zone() instead"); +#endif + + return icaltime_from_timet_with_zone(tm, is_date, 0); +} + + +/** @brief Constructor. + * + * @param tm The time + * @param is_date Boolean: 1 means we should treat tm as a DATE + * @param zone The timezone tm is in, NULL means to treat tm as a + * floating time + * + * Return a new icaltime instance, initialized to the given time + * expressed as seconds past UNIX epoch, optionally using the given + * timezone. + * + * If the caller specifies the is_date param as TRUE, the returned + * object is of DATE type, otherwise the input is meant to be of + * DATE-TIME type. + * If the zone is not specified (NULL zone param) the time is taken + * to be floating, that is, valid in any timezone. Note that, in + * addition to the uses specified in [RFC2445], this can be used + * when doing simple math on couples of times. + * If the zone is specified (UTC or otherwise), it's stored in the + * object and it's used as the native timezone for this object. + * This means that the caller can convert this time to a different + * target timezone with no need to store the source timezone. + * + */ +struct icaltimetype +icaltime_from_timet_with_zone(const time_t tm, const int is_date, + const icaltimezone *zone) +{ + struct icaltimetype tt = icaltime_null_time(); + struct tm t; + icaltimezone *utc_zone; + + /* Convert the time_t to a struct tm. We can trust gmtime for this. */ +#ifdef HAVE_GMTIME_R + gmtime_r(&tm, &t); +#else + { + struct tm *t_ptr = gmtime(&tm); + t = *t_ptr; + } +#endif + + tt.year = t.tm_year + 1900; + tt.month = t.tm_mon + 1; + tt.day = t.tm_mday; + + if (is_date) { + tt.is_date = 1; + return tt; + } + + tt.hour = t.tm_hour; + tt.minute = t.tm_min; + tt.second = t.tm_sec; + + /* If it's a floating time, we don't do any conversion. */ + if (zone == NULL) { + return tt; + } + + utc_zone = icaltimezone_get_utc_timezone (); + tt.is_utc = (zone == utc_zone) ? 1 : 0; + tt.zone = zone; + + return tt; +} + +/** @brief Constructor. + * + * Returns an icaltimetype representing the current time in the given timezone. + */ +struct icaltimetype icaltime_current_time_with_zone(const icaltimezone *zone) +{ + return icaltime_from_timet_with_zone (time (NULL), 0, zone); +} + +/** @brief Constructor. + * + * Returns an icaltimetype representing the current day. + */ +struct icaltimetype icaltime_today(void) +{ + return icaltime_from_timet_with_zone (time (NULL), 1, NULL); +} + +/** @brief Return the time as seconds past the UNIX epoch + * + * While this function is not currently deprecated, it probably won't do + * what you expect, unless you know what you're doing. In particular, you + * should only pass an icaltime in UTC, since no conversion is done. Even + * in that case, it's probably better to just use + * icaltime_as_timet_with_zone(). + */ +time_t icaltime_as_timet(const struct icaltimetype tt) +{ + struct tm stm; + time_t t; + + /* If the time is the special null time, return 0. */ + if (icaltime_is_null_time(tt)) { + return 0; + } + + /* Copy the icaltimetype to a struct tm. */ + memset (&stm, 0, sizeof (struct tm)); + + if (icaltime_is_date(tt)) { + stm.tm_sec = stm.tm_min = stm.tm_hour = 0; + } else { + stm.tm_sec = tt.second; + stm.tm_min = tt.minute; + stm.tm_hour = tt.hour; + } + + stm.tm_mday = tt.day; + stm.tm_mon = tt.month-1; + stm.tm_year = tt.year-1900; + stm.tm_isdst = -1; + + t = make_time(&stm, 0); + + return t; + +} + +/** Return the time as seconds past the UNIX epoch, using the + * given timezone. + * + * This convenience method combines a call to icaltime_convert_to_zone() + * with a call to icaltime_as_timet(). + * If the input timezone is null, no conversion is done; that is, the + * time is simply returned as time_t in its native timezone. + */ +time_t icaltime_as_timet_with_zone(const struct icaltimetype _tt, + const icaltimezone *zone) +{ + struct icaltimetype tt = _tt; + struct tm stm; + time_t t; + + /* If the time is the special null time, return 0. */ + if (icaltime_is_null_time(tt)) { + return 0; + } + + if (zone != NULL) { + tt = icaltime_convert_to_zone(_tt, zone); + } + + /* Copy the icaltimetype to a struct tm. */ + memset (&stm, 0, sizeof (struct tm)); + + if (icaltime_is_date(tt)) { + stm.tm_sec = stm.tm_min = stm.tm_hour = 0; + } else { + stm.tm_sec = tt.second; + stm.tm_min = tt.minute; + stm.tm_hour = tt.hour; + } + + stm.tm_mday = tt.day; + stm.tm_mon = tt.month-1; + stm.tm_year = tt.year-1900; + stm.tm_isdst = -1; + + t = make_time(&stm, 0); + + return t; +} + +/** + * Return a string represention of the time, in RFC2445 format. The + * string is owned by libical + */ +const char* icaltime_as_ical_string(const struct icaltimetype tt) +{ + size_t size = 17; + char* buf = icalmemory_new_buffer(size); + + if(tt.is_date){ + snprintf(buf, size,"%04d%02d%02d",tt.year,tt.month,tt.day); + } else { + char* fmt; + if(tt.is_utc){ + fmt = "%04d%02d%02dT%02d%02d%02dZ"; + } else { + fmt = "%04d%02d%02dT%02d%02d%02d"; + } + snprintf(buf, size,fmt,tt.year,tt.month,tt.day, + tt.hour,tt.minute,tt.second); + } + + icalmemory_add_tmp_buffer(buf); + + return buf; + +} + +/** + * Reset all of the time components to be in their normal ranges. For + * instance, given a time with minutes=70, the minutes will be reduces + * to 10, and the hour incremented. This allows the caller to do + * arithmetic on times without worrying about overflow or + * underflow. + * + * Implementation note: we call icaltime_adjust() with no adjustment. + */ +struct icaltimetype icaltime_normalize(const struct icaltimetype tt) +{ + struct icaltimetype ret = tt; + icaltime_adjust(&ret, 0, 0, 0, 0); + return ret; +} + + + +/** @brief Contructor. + * + * Create a time from an ISO format string. + * + * @todo If the given string specifies a DATE-TIME not in UTC, there + * is no way to know if this is a floating time or really refers to a + * timezone. We should probably add a new constructor: + * icaltime_from_string_with_zone() + */ +struct icaltimetype icaltime_from_string(const char* str) +{ + struct icaltimetype tt = icaltime_null_time(); + int size; + + icalerror_check_arg_re(str!=0,"str",icaltime_null_time()); + + size = strlen(str); + + if(size == 15) { /* floating time */ + tt.is_utc = 0; + tt.is_date = 0; + } else if (size == 16) { /* UTC time, ends in 'Z'*/ + if(str[15] != 'Z') + goto FAIL; + + tt.is_utc = 1; + tt.zone = icaltimezone_get_utc_timezone(); + tt.is_date = 0; + } else if (size == 8) { /* A DATE */ + tt.is_utc = 1; + tt.is_date = 1; + } else { /* error */ + goto FAIL; + } + + if(tt.is_date == 1){ + if (sscanf(str,"%04d%02d%02d",&tt.year,&tt.month,&tt.day) < 3) + goto FAIL; + } else { + char tsep; + if (sscanf(str,"%04d%02d%02d%c%02d%02d%02d",&tt.year,&tt.month,&tt.day, + &tsep,&tt.hour,&tt.minute,&tt.second) < 7) + goto FAIL; + + if(tsep != 'T') + goto FAIL; + } + + return tt; + +FAIL: + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + return icaltime_null_time(); +} + + +/* Returns whether the specified year is a leap year. Year is the normal year, + e.g. 2001. */ +int +icaltime_is_leap_year (const int year) +{ + + if (year <= 1752) + return (year % 4 == 0); + else + return ( (year % 4==0) && (year % 100 !=0 )) || (year % 400 == 0); +} + +static int _days_in_month[] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; + +int icaltime_days_in_month(const int month, const int year) +{ + + int days = _days_in_month[month]; + + assert(month > 0); + assert(month <= 12); + + if( month == 2){ + days += icaltime_is_leap_year(year); + } + + return days; +} + +/* 1-> Sunday, 7->Saturday */ +int icaltime_day_of_week(const struct icaltimetype t){ + UTinstant jt; + + memset(&jt,0,sizeof(UTinstant)); + + jt.year = t.year; + jt.month = t.month; + jt.day = t.day; + jt.i_hour = 0; + jt.i_minute = 0; + jt.i_second = 0; + + juldat(&jt); + + return jt.weekday + 1; +} + +/** Day of the year that the first day of the week (Sunday) is on. + */ +int icaltime_start_doy_week(const struct icaltimetype t, int fdow){ + UTinstant jt; + int delta; + + memset(&jt,0,sizeof(UTinstant)); + + jt.year = t.year; + jt.month = t.month; + jt.day = t.day; + jt.i_hour = 0; + jt.i_minute = 0; + jt.i_second = 0; + + juldat(&jt); + caldat(&jt); + + delta = jt.weekday - (fdow - 1); + if (delta < 0) delta += 7; + return jt.day_of_year - delta; +} + +/** Day of the year that the first day of the week (Sunday) is on. + * + * @deprecated Doesn't take into account different week start days. + */ +int icaltime_start_doy_of_week(const struct icaltimetype t){ + +#ifndef NO_WARN_DEPRECATED + icalerror_warn("icaltime_start_doy_of_week() is DEPRECATED, use\ + icaltime_start_doy_week() instead"); +#endif + + return icaltime_start_doy_week(t, 1); +} + +/** + * @todo Doesn't take into account the start day of the + * week. strftime assumes that weeks start on Monday. + */ +int icaltime_week_number(const struct icaltimetype ictt) +{ + UTinstant jt; + + memset(&jt,0,sizeof(UTinstant)); + + jt.year = ictt.year; + jt.month = ictt.month; + jt.day = ictt.day; + jt.i_hour = 0; + jt.i_minute = 0; + jt.i_second = 0; + + juldat(&jt); + caldat(&jt); + + return (jt.day_of_year - jt.weekday) / 7; +} + +/* The first array is for non-leap years, the second for leap years*/ +static const int days_in_year[2][13] = +{ /* jan feb mar apr may jun jul aug sep oct nov dec */ + { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 }, + { 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366 } +}; + +/** + * Returns the day of the year, counting from 1 (Jan 1st). + */ +int icaltime_day_of_year(const struct icaltimetype t){ + int is_leap = icaltime_is_leap_year (t.year); + + return days_in_year[is_leap][t.month - 1] + t.day; +} + +/** @brief Contructor. + * + * Create a new time, given a day of year and a year. + */ +/* Jan 1 is day #1, not 0 */ +struct icaltimetype icaltime_from_day_of_year(const int _doy, const int _year) +{ + struct icaltimetype tt = icaltime_null_date(); + int is_leap; + int month; + int doy = _doy; + int year = _year; + + is_leap = icaltime_is_leap_year(year); + + /* Zero and neg numbers represent days of the previous year */ + if(doy <1){ + year--; + is_leap = icaltime_is_leap_year(year); + doy += days_in_year[is_leap][12]; + } else if(doy > days_in_year[is_leap][12]){ + /* Move on to the next year*/ + is_leap = icaltime_is_leap_year(year); + doy -= days_in_year[is_leap][12]; + year++; + } + + tt.year = year; + + for (month = 11; month >= 0; month--) { + if (doy > days_in_year[is_leap][month]) { + tt.month = month + 1; + tt.day = doy - days_in_year[is_leap][month]; + break; + } + } + + return tt; +} + +/** @brief Constructor. + * + * Return a null time, which is guaranteed not to be equal to any other time. + */ +struct icaltimetype icaltime_null_time(void) +{ + struct icaltimetype t; + memset(&t,0,sizeof(struct icaltimetype)); + + return t; +} + +/** @brief Constructor. + * + * Return a null date. + */ +struct icaltimetype icaltime_null_date(void) +{ + struct icaltimetype t; + memset(&t,0,sizeof(struct icaltimetype)); + + t.is_date = 1; + + /* + * Init to -1 to match what icalyacc.y used to do. + * Does anything depend on this? + */ + t.hour = -1; + t.minute = -1; + t.second = -1; + + return t; +} + + +/** + * Returns false if the time is clearly invalid, but is not null. This + * is usually the result of creating a new time type buy not clearing + * it, or setting one of the flags to an illegal value. + */ +int icaltime_is_valid_time(const struct icaltimetype t){ + if(t.is_utc > 1 || t.is_utc < 0 || + t.year < 0 || t.year > 3000 || + t.is_date > 1 || t.is_date < 0){ + return 0; + } else { + return 1; + } + +} + +/** @brief Returns true if time is a DATE + */ +int icaltime_is_date(const struct icaltimetype t) { + + return t.is_date; +} + +/** @brief Returns true if time is relative to UTC zone + * + * @todo We should only check the zone + */ +int icaltime_is_utc(const struct icaltimetype t) { + + return t.is_utc; +} + +/** + * Return true if the time is null. + */ +int icaltime_is_null_time(const struct icaltimetype t) +{ + if (t.second +t.minute+t.hour+t.day+t.month+t.year == 0){ + return 1; + } + + return 0; + +} + +/** + * Return -1, 0, or 1 to indicate that ab. + * This calls icaltime_compare function after converting them to the utc + * timezone. + */ + +int icaltime_compare(const struct icaltimetype a_in, const struct icaltimetype b_in) +{ + int retval = 0; + struct icaltimetype a, b; + + a = icaltime_convert_to_zone(a_in, icaltimezone_get_utc_timezone()); + b = icaltime_convert_to_zone(b_in, icaltimezone_get_utc_timezone()); + + if (a.year > b.year) + retval = 1; + else if (a.year < b.year) + retval = -1; + + else if (a.month > b.month) + retval = 1; + else if (a.month < b.month) + retval = -1; + + else if (a.day > b.day) + retval = 1; + else if (a.day < b.day) + retval = -1; + + /* if both are dates, we are done */ + if (a.is_date && b.is_date) + return retval; + + /* else, if we already found a difference, we are done */ + else if (retval != 0) + return retval; + + /* else, if only one is a date (and we already know the date part is equal), + then the other is greater */ + else if (b.is_date) + retval = 1; + else if (a.is_date) + retval = -1; + + else if (a.hour > b.hour) + retval = 1; + else if (a.hour < b.hour) + retval = -1; + + else if (a.minute > b.minute) + retval = 1; + else if (a.minute < b.minute) + retval = -1; + + else if (a.second > b.second) + retval = 1; + else if (a.second < b.second) + retval = -1; + + return retval; +} + +/** + * like icaltime_compare, but only use the date parts. + */ + +int +icaltime_compare_date_only(const struct icaltimetype a_in, const struct icaltimetype b_in) +{ + int retval; + struct icaltimetype a, b; + + a = icaltime_convert_to_zone(a_in, icaltimezone_get_utc_timezone()); + b = icaltime_convert_to_zone(b_in, icaltimezone_get_utc_timezone()); + + if (a.year > b.year) + retval = 1; + else if (a.year < b.year) + retval = -1; + + else if (a.month > b.month) + retval = 1; + else if (a.month < b.month) + retval = -1; + + else if (a.day > b.day) + retval = 1; + else if (a.day < b.day) + retval = -1; + + else + retval = 0; + + return retval; +} + +/* These are defined in icalduration.c: +struct icaltimetype icaltime_add(struct icaltimetype t, + struct icaldurationtype d) +struct icaldurationtype icaltime_subtract(struct icaltimetype t1, + struct icaltimetype t2) +*/ + + + +/** @brief Internal, shouldn't be part of the public API + * + * Adds (or subtracts) a time from a icaltimetype. + * NOTE: This function is exactly the same as icaltimezone_adjust_change() + * except for the type of the first parameter. + */ +void +icaltime_adjust(struct icaltimetype *tt, const int days, const int hours, + const int minutes, const int seconds) { + + int second, minute, hour, day; + int minutes_overflow, hours_overflow, days_overflow = 0, years_overflow; + int days_in_month; + + /* If we are passed a date make sure to ignore hour minute and second */ + if (tt->is_date) + goto IS_DATE; + + /* Add on the seconds. */ + second = tt->second + seconds; + tt->second = second % 60; + minutes_overflow = second / 60; + if (tt->second < 0) { + tt->second += 60; + minutes_overflow--; + } + + /* Add on the minutes. */ + minute = tt->minute + minutes + minutes_overflow; + tt->minute = minute % 60; + hours_overflow = minute / 60; + if (tt->minute < 0) { + tt->minute += 60; + hours_overflow--; + } + + /* Add on the hours. */ + hour = tt->hour + hours + hours_overflow; + tt->hour = hour % 24; + days_overflow = hour / 24; + if (tt->hour < 0) { + tt->hour += 24; + days_overflow--; + } + +IS_DATE: + /* Normalize the month. We do this before handling the day since we may + need to know what month it is to get the number of days in it. + Note that months are 1 to 12, so we have to be a bit careful. */ + if (tt->month >= 13) { + years_overflow = (tt->month - 1) / 12; + tt->year += years_overflow; + tt->month -= years_overflow * 12; + } else if (tt->month <= 0) { + /* 0 to -11 is -1 year out, -12 to -23 is -2 years. */ + years_overflow = (tt->month / 12) - 1; + tt->year += years_overflow; + tt->month -= years_overflow * 12; + } + + /* Add on the days. */ + day = tt->day + days + days_overflow; + if (day > 0) { + for (;;) { + days_in_month = icaltime_days_in_month (tt->month, tt->year); + if (day <= days_in_month) + break; + + tt->month++; + if (tt->month >= 13) { + tt->year++; + tt->month = 1; + } + + day -= days_in_month; + } + } else { + while (day <= 0) { + if (tt->month == 1) { + tt->year--; + tt->month = 12; + } else { + tt->month--; + } + + day += icaltime_days_in_month (tt->month, tt->year); + } + } + tt->day = day; +} + +/** @brief Convert time to a given timezone + * + * Convert a time from its native timezone to a given timezone. + * + * If tt is a date, the returned time is an exact + * copy of the input. If it's a floating time, the returned object + * represents the same time translated to the given timezone. + * Otherwise the time will be converted to the new + * time zone, and its native timezone set to the right timezone. + */ +struct icaltimetype icaltime_convert_to_zone(const struct icaltimetype tt, + icaltimezone *zone) { + + struct icaltimetype ret = tt; + + /* If it's a date do nothing */ + if (tt.is_date) { + return ret; + } + + if (tt.zone == zone) { + return ret; + } + + /* If it's a floating time we don't want to adjust the time */ + if (tt.zone != NULL) { + icaltimezone_convert_time(&ret, tt.zone, zone); + } + + ret.zone = zone; + if (zone == icaltimezone_get_utc_timezone()) { + ret.is_utc = 1; + } else { + ret.is_utc = 0; + } + + return ret; +} + +const icaltimezone * +icaltime_get_timezone(const struct icaltimetype t) { + + return t.zone; +} + +char * +icaltime_get_tzid(const struct icaltimetype t) { + + if (t.zone != NULL) { + return icaltimezone_get_tzid(t.zone); + } else { + return NULL; + } +} + +/** @brief Set the timezone + * + * Force the icaltime to be interpreted relative to another timezone. + * If you need to do timezone conversion, applying offset adjustments, + * then you should use icaltime_convert_to_timezone instead. + */ +struct icaltimetype +icaltime_set_timezone(struct icaltimetype *t, const icaltimezone *zone) { + + /* If it's a date do nothing */ + if (t->is_date) { + return *t; + } + + if (t->zone == zone) { + return *t; + } + + t->zone = zone; + if (zone == icaltimezone_get_utc_timezone()) { + t->is_utc = 1; + } else { + t->is_utc = 0; + } + + return *t; +} + + +/** + * @brief builds an icaltimespan given a start time, end time and busy value. + * + * @param dtstart The beginning time of the span, can be a date-time + * or just a date. + * @param dtend The end time of the span. + * @param is_busy A boolean value, 0/1. + * @return A span using the supplied values. + * + * returned span contains times specified in UTC. + */ + +icaltime_span icaltime_span_new(struct icaltimetype dtstart, + struct icaltimetype dtend, + int is_busy) +{ + icaltime_span span; + + span.is_busy = is_busy; + + span.start = icaltime_as_timet_with_zone(dtstart, + icaltimezone_get_utc_timezone()); + + if (icaltime_is_null_time(dtend)) { + if (!icaltime_is_date(dtstart)) { + /* If dtstart is a DATE-TIME and there is no DTEND nor DURATION + it takes no time */ + span.end = span.start; + return span; + } else { + dtend = dtstart; + } + } + + span.end = icaltime_as_timet_with_zone(dtend, icaltimezone_get_utc_timezone()); + + if (icaltime_is_date(dtstart)) { + /* no time specified, go until the end of the day..*/ + span.end += 60*60*24 - 1; + } + return span; +} + + +/** @brief Returns true if the two spans overlap + * + * @param s1 1st span to test + * @param s2 2nd span to test + * @return boolean value + * + * The result is calculated by testing if the start time of s1 is contained + * by the s2 span, or if the end time of s1 is contained by the s2 span. + * + * Also returns true if the spans are equal. + * + * Note, this will return false if the spans are adjacent. + */ + +int icaltime_span_overlaps(icaltime_span *s1, + icaltime_span *s2) +{ + /* s1->start in s2 */ + if (s1->start > s2->start && s1->start < s2->end) + return 1; + + /* s1->end in s2 */ + if (s1->end > s2->start && s1->end < s2->end) + return 1; + + /* s2->start in s1 */ + if (s2->start > s1->start && s2->start < s1->end) + return 1; + + /* s2->end in s1 */ + if (s2->end > s1->start && s2->end < s1->end) + return 1; + + if (s1->start == s2->start && s1->end == s2->end) + return 1; + + return 0; +} + +/** @brief Returns true if the span is totally within the containing + * span + * + * @param s The span to test for. + * @param container The span to test against. + * @return boolean value. + * + */ + +int icaltime_span_contains(icaltime_span *s, + icaltime_span *container) +{ + + if ((s->start >= container->start && s->start < container->end) && + (s->end <= container->end && s->end > container->start)) + return 1; + + return 0; +} diff --git a/mozilla/calendar/libical/src/libical/icaltime.h b/mozilla/calendar/libical/src/libical/icaltime.h new file mode 100644 index 00000000000..efb450b84e9 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icaltime.h @@ -0,0 +1,277 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icaltime.h + CREATOR: eric 02 June 2000 + + + $Id: icaltime.h,v 1.24 2003/02/17 14:23:17 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The Original Code is eric. The Initial Developer of the Original + Code is Eric Busboom + + +======================================================================*/ + +/** @file icaltime.h + * @brief struct icaltimetype is a pseudo-object that abstracts time + * handling. + * + * It can represent either a DATE or a DATE-TIME (floating, UTC or in a + * given timezone), and it keeps track internally of its native timezone. + * + * The typical usage is to call the correct constructor specifying the + * desired timezone. If this is not known until a later time, the + * correct behavior is to specify a NULL timezone and call + * icaltime_convert_to_zone() at a later time. + * + * There are several ways to create a new icaltimetype: + * + * - icaltime_null_time() + * - icaltime_null_date() + * - icaltime_current_time_with_zone() + * - icaltime_today() + * - icaltime_from_timet_with_zone(time_t tm, int is_date, + * icaltimezone *zone) + * - icaltime_from_string_with_zone(const char* str, icaltimezone *zone) + * - icaltime_from_day_of_year(int doy, int year) + * - icaltime_from_week_number(int week_number, int year) + * + * italtimetype objects can be converted to different formats: + * + * - icaltime_as_timet(struct icaltimetype tt) + * - icaltime_as_timet_with_zone(struct icaltimetype tt, + * icaltimezone *zone) + * - icaltime_as_ical_string(struct icaltimetype tt) + * + * Accessor methods include: + * + * - icaltime_get_timezone(struct icaltimetype t) + * - icaltime_get_tzid(struct icaltimetype t) + * - icaltime_set_timezone(struct icaltimetype t, const icaltimezone *zone) + * - icaltime_day_of_year(struct icaltimetype t) + * - icaltime_day_of_week(struct icaltimetype t) + * - icaltime_start_doy_week(struct icaltimetype t, int fdow) + * - icaltime_week_number(struct icaltimetype t) + * + * Query methods include: + * + * - icaltime_is_null_time(struct icaltimetype t) + * - icaltime_is_valid_time(struct icaltimetype t) + * - icaltime_is_date(struct icaltimetype t) + * - icaltime_is_utc(struct icaltimetype t) + * - icaltime_is_floating(struct icaltimetype t) + * + * Modify, compare and utility methods include: + * + * - icaltime_add(struct icaltimetype t, struct icaldurationtype d) + * - icaltime_subtract(struct icaltimetype t1, struct icaltimetype t2) + * - icaltime_compare_with_zone(struct icaltimetype a,struct icaltimetype b) + * - icaltime_compare(struct icaltimetype a,struct icaltimetype b) + * - icaltime_compare_date_only(struct icaltimetype a, + * struct icaltimetype b) + * - icaltime_adjust(struct icaltimetype *tt, int days, int hours, + * int minutes, int seconds); + * - icaltime_normalize(struct icaltimetype t); + * - icaltime_convert_to_zone(const struct icaltimetype tt, + * icaltimezone *zone); + */ + +#ifndef ICALTIME_H +#define ICALTIME_H + +#include + +/* An opaque struct representing a timezone. We declare this here to avoid + a circular dependancy. */ +#ifndef ICALTIMEZONE_DEFINED +#define ICALTIMEZONE_DEFINED +typedef struct _icaltimezone icaltimezone; +#endif + +/** icaltime_span is returned by icalcomponent_get_span() */ +struct icaltime_span { + time_t start; /**< in UTC */ + time_t end; /**< in UTC */ + int is_busy; /**< 1->busy time, 0-> free time */ +}; + +typedef struct icaltime_span icaltime_span; + +/* + * FIXME + * + * is_utc is redundant, and might be considered a minor optimization. + * It might be deprecated, so you should use icaltime_is_utc() instead. + */ +struct icaltimetype +{ + int year; /**< Actual year, e.g. 2001. */ + int month; /**< 1 (Jan) to 12 (Dec). */ + int day; + int hour; + int minute; + int second; + + int is_utc; /**< 1-> time is in UTC timezone */ + + int is_date; /**< 1 -> interpret this as date. */ + + int is_daylight; /**< 1 -> time is in daylight savings time. */ + + const icaltimezone *zone; /**< timezone */ +}; + +typedef struct icaltimetype icaltimetype; + +/** Return a null time, which indicates no time has been set. + This time represent the beginning of the epoch */ +struct icaltimetype icaltime_null_time(void); + +/** Return a null date */ +struct icaltimetype icaltime_null_date(void); + +/** Returns the current time in the given timezone, as an icaltimetype. */ +struct icaltimetype icaltime_current_time_with_zone(const icaltimezone *zone); + +/** Returns the current day as an icaltimetype, with is_date set. */ +struct icaltimetype icaltime_today(void); + +/** Convert seconds past UNIX epoch to a timetype*/ +struct icaltimetype icaltime_from_timet(const time_t v, const int is_date); + +/** Convert seconds past UNIX epoch to a timetype, using timezones. */ +struct icaltimetype icaltime_from_timet_with_zone(const time_t tm, + const int is_date, const icaltimezone *zone); + +/** create a time from an ISO format string */ +struct icaltimetype icaltime_from_string(const char* str); + +/** create a time from an ISO format string */ +struct icaltimetype icaltime_from_string_with_zone(const char* str, + const icaltimezone *zone); + +/** Create a new time, given a day of year and a year. */ +struct icaltimetype icaltime_from_day_of_year(const int doy, + const int year); + +/** @brief Contructor (TODO). + * Create a new time from a weeknumber and a year. */ +struct icaltimetype icaltime_from_week_number(const int week_number, + const int year); + +/** Return the time as seconds past the UNIX epoch */ +time_t icaltime_as_timet(const struct icaltimetype); + +/** Return the time as seconds past the UNIX epoch, using timezones. */ +time_t icaltime_as_timet_with_zone(const struct icaltimetype tt, + const icaltimezone *zone); + +/** Return a string represention of the time, in RFC2445 format. The + string is owned by libical */ +const char* icaltime_as_ical_string(const struct icaltimetype tt); + +/** @brief Return the timezone */ +const icaltimezone *icaltime_get_timezone(const struct icaltimetype t); + +/** @brief Return the tzid, or NULL for a floating time */ +char *icaltime_get_tzid(const struct icaltimetype t); + +/** @brief Set the timezone */ +struct icaltimetype icaltime_set_timezone(struct icaltimetype *t, + const icaltimezone *zone); + +/** Return the day of the year of the given time */ +int icaltime_day_of_year(const struct icaltimetype t); + +/** Return the day of the week of the given time. Sunday is 1 */ +int icaltime_day_of_week(const struct icaltimetype t); + +/** Return the day of the year for the Sunday of the week that the + given time is within. */ +int icaltime_start_doy_of_week(const struct icaltimetype t); + +/** Return the day of the year for the first day of the week that the + given time is within. */ +int icaltime_start_doy_week(const struct icaltimetype t, int fdow); + +/** Return the week number for the week the given time is within */ +int icaltime_week_number(const struct icaltimetype t); + +/** Return true of the time is null. */ +int icaltime_is_null_time(const struct icaltimetype t); + +/** Returns false if the time is clearly invalid, but is not null. This + is usually the result of creating a new time type buy not clearing + it, or setting one of the flags to an illegal value. */ +int icaltime_is_valid_time(const struct icaltimetype t); + +/** @brief Returns true if time is of DATE type, false if DATE-TIME */ +int icaltime_is_date(const struct icaltimetype t); + +/** @brief Returns true if time is relative to UTC zone */ +int icaltime_is_utc(const struct icaltimetype t); + +/** @brief Returns true if time is a floating time */ +int icaltime_is_floating(const struct icaltimetype t); + +/** Return -1, 0, or 1 to indicate that ab */ +int icaltime_compare_with_zone(const struct icaltimetype a, + const struct icaltimetype b); + +/** Return -1, 0, or 1 to indicate that ab */ +int icaltime_compare(const struct icaltimetype a, + const struct icaltimetype b); + +/** like icaltime_compare, but only use the date parts. */ +int icaltime_compare_date_only(const struct icaltimetype a, + const struct icaltimetype b); + +/** Adds or subtracts a number of days, hours, minutes and seconds. */ +void icaltime_adjust(struct icaltimetype *tt, const int days, + const int hours, const int minutes, const int seconds); + +/** Normalize the icaltime, so that all fields are within the normal range. */ +struct icaltimetype icaltime_normalize(const struct icaltimetype t); + +/** convert tt, of timezone tzid, into a utc time. Does nothing if the + time is already UTC. */ +struct icaltimetype icaltime_convert_to_zone(const struct icaltimetype tt, + icaltimezone *zone); + +/** Return the number of days in the given month */ +int icaltime_days_in_month(const int month, const int year); + + +/** @brief calculate an icaltimespan given a start and end time. */ +struct icaltime_span icaltime_span_new(struct icaltimetype dtstart, + struct icaltimetype dtend, + int is_busy); + +/** @brief Returns true if the two spans overlap **/ +int icaltime_span_overlaps(icaltime_span *s1, + icaltime_span *s2); + +/** @brief Returns true if the span is totally within the containing + * span + */ +int icaltime_span_contains(icaltime_span *s, + icaltime_span *container); + + +#endif /* !ICALTIME_H */ + + diff --git a/mozilla/calendar/libical/src/libical/icaltimezone.c b/mozilla/calendar/libical/src/libical/icaltimezone.c new file mode 100644 index 00000000000..1e46e62bceb --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icaltimezone.c @@ -0,0 +1,1672 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ +/*====================================================================== + FILE: icaltimezone.c + CREATOR: Damon Chaplin 15 March 2001 + + $Id: icaltimezone.c,v 1.34 2002/11/04 00:01:21 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 2001, Damon Chaplin + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + +======================================================================*/ + +/** @file icaltimezone.c + * @brief implementation of timezone handling routines + **/ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include +#include "icalproperty.h" +#include "icalarray.h" +#include "icalerror.h" +#include "icalparser.h" +#include "icaltimezone.h" + +#ifdef WIN32 +#define snprintf _snprintf +#define PACKAGE_DATA_DIR "/Projects/libical" +#endif + +/** This is the toplevel directory where the timezone data is installed in. */ +#define ZONEINFO_DIRECTORY PACKAGE_DATA_DIR "/zoneinfo" + +/** The prefix we use to uniquely identify TZIDs. */ +#define TZID_PREFIX "/softwarestudio.org/" +#define TZID_PREFIX_LEN 20 + +/** This is the filename of the file containing the city names and + coordinates of all the builtin timezones. */ +#define ZONES_TAB_FILENAME "zones.tab" + +/** This is the number of years of extra coverage we do when expanding + the timezone changes. */ +#define ICALTIMEZONE_EXTRA_COVERAGE 5 + +/** This is the maximum year we will expand to. time_t values only go up to + somewhere around 2037. */ +#define ICALTIMEZONE_MAX_YEAR 2035 + +struct _icaltimezone { + char *tzid; + /**< The unique ID of this timezone, + e.g. "/softwarestudio.org/Olson_20010601_1/Africa/Banjul". + This should only be used to identify a VTIMEZONE. It is not + meant to be displayed to the user in any form. */ + + char *location; + /**< The location for the timezone, e.g. "Africa/Accra" for the + Olson database. We look for this in the "LOCATION" or + "X-LIC-LOCATION" properties of the VTIMEZONE component. It + isn't a standard property yet. This will be NULL if no location + is found in the VTIMEZONE. */ + + char *tznames; + /**< This will be set to a combination of the TZNAME properties + from the last STANDARD and DAYLIGHT components in the + VTIMEZONE, e.g. "EST/EDT". If they both use the same TZNAME, + or only one type of component is found, then only one TZNAME + will appear, e.g. "AZOT". If no TZNAME is found this will be + NULL. */ + + double latitude; + double longitude; + /**< The coordinates of the city, in degrees. */ + + icalcomponent *component; + /**< The toplevel VTIMEZONE component loaded from the .ics file for this + timezone. If we need to regenerate the changes data we need this. */ + + icaltimezone *builtin_timezone; + /**< If this is not NULL it points to the builtin icaltimezone + that the above TZID refers to. This icaltimezone should be used + instead when accessing the timezone changes data, so that the + expanded timezone changes data is shared between calendar + components. */ + + int end_year; + /**< This is the last year for which we have expanded the data to. + If we need to calculate a date past this we need to expand the + timezone component data from scratch. */ + + icalarray *changes; + /**< A dynamically-allocated array of time zone changes, sorted by the + time of the change in local time. So we can do fast binary-searches + to convert from local time to UTC. */ +}; + +typedef struct _icaltimezonechange icaltimezonechange; + +struct _icaltimezonechange { + int utc_offset; + /**< The offset to add to UTC to get local time, in seconds. */ + + int prev_utc_offset; + /**< The offset to add to UTC, before this change, in seconds. */ + + int year; /**< Actual year, e.g. 2001. */ + int month; /**< 1 (Jan) to 12 (Dec). */ + int day; + int hour; + int minute; + int second; + /**< The time that the change came into effect, in UTC. + Note that the prev_utc_offset applies to this local time, + since we haven't changed to the new offset yet. */ + + int is_daylight; + /**< Whether this is STANDARD or DAYLIGHT time. */ +}; + + +/** An array of icaltimezones for the builtin timezones. */ +static icalarray *builtin_timezones = NULL; + +/** This is the special UTC timezone, which isn't in builtin_timezones. */ +static icaltimezone utc_timezone = { 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + +static char* zone_files_directory = NULL; + +static void icaltimezone_reset (icaltimezone *zone); +static char* icaltimezone_get_location_from_vtimezone (icalcomponent *component); +static char* icaltimezone_get_tznames_from_vtimezone (icalcomponent *component); +static void icaltimezone_expand_changes (icaltimezone *zone, + int end_year); +static void icaltimezone_expand_vtimezone (icalcomponent *comp, + int end_year, + icalarray *changes); +static int icaltimezone_compare_change_fn (const void *elem1, + const void *elem2); + +static int icaltimezone_find_nearby_change (icaltimezone *zone, + icaltimezonechange *change); + +static void icaltimezone_adjust_change (icaltimezonechange *tt, + int days, + int hours, + int minutes, + int seconds); + +static void icaltimezone_init (icaltimezone *zone); + +/** Gets the TZID, LOCATION/X-LIC-LOCATION, and TZNAME properties from the + VTIMEZONE component and places them in the icaltimezone. It returns 1 on + success, or 0 if the TZID can't be found. */ +static int icaltimezone_get_vtimezone_properties (icaltimezone *zone, + icalcomponent *component); + + +static void icaltimezone_load_builtin_timezone (icaltimezone *zone); + +static void icaltimezone_ensure_coverage (icaltimezone *zone, + int end_year); + + +static void icaltimezone_init_builtin_timezones(void); + +static void icaltimezone_parse_zone_tab (void); + +static char* icaltimezone_load_get_line_fn (char *s, + size_t size, + void *data); + +static void format_utc_offset (int utc_offset, + char *buffer); + +static char* get_zone_directory(void); + + +/** Creates a new icaltimezone. */ +icaltimezone* +icaltimezone_new (void) +{ + icaltimezone *zone; + + zone = (icaltimezone*) malloc (sizeof (icaltimezone)); + if (!zone) { + icalerror_set_errno (ICAL_NEWFAILED_ERROR); + return NULL; + } + + icaltimezone_init (zone); + + return zone; +} + + +/** Frees all memory used for the icaltimezone. */ +void +icaltimezone_free (icaltimezone *zone, + int free_struct) +{ + icaltimezone_reset (zone); + if (free_struct) + free (zone); +} + + +/** Resets the icaltimezone to the initial state, freeing most of the fields. */ +static void +icaltimezone_reset (icaltimezone *zone) +{ + if (zone->tzid) + free (zone->tzid); + if (zone->location) + free (zone->location); + if (zone->tznames) + free (zone->tznames); + if (zone->component) + icalcomponent_free (zone->component); + if (zone->changes) + icalarray_free (zone->changes); + + icaltimezone_init (zone); +} + + +/** Initializes an icaltimezone. */ +static void +icaltimezone_init (icaltimezone *zone) +{ + zone->tzid = NULL; + zone->location = NULL; + zone->tznames = NULL; + zone->latitude = 0.0; + zone->longitude = 0.0; + zone->component = NULL; + zone->builtin_timezone = NULL; + zone->end_year = 0; + zone->changes = NULL; +} + + +/** Gets the TZID, LOCATION/X-LIC-LOCATION and TZNAME properties of + the VTIMEZONE component and stores them in the icaltimezone. It + returns 1 on success, or 0 if the TZID can't be found. Note that + it expects the zone to be initialized or reset - it doesn't free + any old values. */ +static int +icaltimezone_get_vtimezone_properties (icaltimezone *zone, + icalcomponent *component) +{ + icalproperty *prop; + const char *tzid; + + prop = icalcomponent_get_first_property (component, ICAL_TZID_PROPERTY); + if (!prop) + return 0; + + /* A VTIMEZONE MUST have a TZID, or a lot of our code won't work. */ + tzid = icalproperty_get_tzid (prop); + if (!tzid) + return 0; + + zone->tzid = strdup (tzid); + zone->component = component; + if ( zone->location != 0 ) free ( zone->location ); + zone->location = icaltimezone_get_location_from_vtimezone (component); + zone->tznames = icaltimezone_get_tznames_from_vtimezone (component); + + return 1; +} + +/** Gets the LOCATION or X-LIC-LOCATION property from a VTIMEZONE. */ +static char* +icaltimezone_get_location_from_vtimezone (icalcomponent *component) +{ + icalproperty *prop; + const char *location; + const char *name; + + prop = icalcomponent_get_first_property (component, + ICAL_LOCATION_PROPERTY); + if (prop) { + location = icalproperty_get_location (prop); + if (location) + return strdup (location); + } + + prop = icalcomponent_get_first_property (component, ICAL_X_PROPERTY); + while (prop) { + name = icalproperty_get_x_name (prop); + if (name && !strcmp (name, "X-LIC-LOCATION")) { + location = icalproperty_get_x (prop); + if (location) + return strdup (location); + } + prop = icalcomponent_get_next_property (component, + ICAL_X_PROPERTY); + } + + return NULL; +} + + +/** Gets the TZNAMEs used for the last STANDARD & DAYLIGHT components + in a VTIMEZONE. If both STANDARD and DAYLIGHT components use the + same TZNAME, it returns that. If they use different TZNAMEs, it + formats them like "EST/EDT". The returned string should be freed by + the caller. */ +static char* +icaltimezone_get_tznames_from_vtimezone (icalcomponent *component) +{ + icalcomponent *comp; + icalcomponent_kind type; + icalproperty *prop; + struct icaltimetype dtstart; + struct icaldatetimeperiodtype rdate; + const char *current_tzname; + const char *standard_tzname = NULL, *daylight_tzname = NULL; + struct icaltimetype standard_max_date, daylight_max_date; + struct icaltimetype current_max_date; + + standard_max_date = icaltime_null_time(); + daylight_max_date = icaltime_null_time(); + + /* Step through the STANDARD & DAYLIGHT subcomponents. */ + comp = icalcomponent_get_first_component (component, ICAL_ANY_COMPONENT); + while (comp) { + type = icalcomponent_isa (comp); + if (type == ICAL_XSTANDARD_COMPONENT + || type == ICAL_XDAYLIGHT_COMPONENT) { + current_max_date = icaltime_null_time (); + current_tzname = NULL; + + /* Step through the properties. We want to find the TZNAME, and + the largest DTSTART or RDATE. */ + prop = icalcomponent_get_first_property (comp, ICAL_ANY_PROPERTY); + while (prop) { + switch (icalproperty_isa (prop)) { + case ICAL_TZNAME_PROPERTY: + current_tzname = icalproperty_get_tzname (prop); + break; + + case ICAL_DTSTART_PROPERTY: + dtstart = icalproperty_get_dtstart (prop); + if (icaltime_compare (dtstart, current_max_date) > 0) + current_max_date = dtstart; + + break; + + case ICAL_RDATE_PROPERTY: + rdate = icalproperty_get_rdate (prop); + if (icaltime_compare (rdate.time, current_max_date) > 0) + current_max_date = rdate.time; + + break; + + default: + break; + } + + prop = icalcomponent_get_next_property (comp, + ICAL_ANY_PROPERTY); + } + + if (current_tzname) { + if (type == ICAL_XSTANDARD_COMPONENT) { + if (!standard_tzname + || icaltime_compare (current_max_date, + standard_max_date) > 0) { + standard_max_date = current_max_date; + standard_tzname = current_tzname; + } + } else { + if (!daylight_tzname + || icaltime_compare (current_max_date, + daylight_max_date) > 0) { + daylight_max_date = current_max_date; + daylight_tzname = current_tzname; + } + } + } + } + + comp = icalcomponent_get_next_component (component, + ICAL_ANY_COMPONENT); + } + + /* Outlook (2000) places "Standard Time" and "Daylight Time" in the TZNAME + strings, which is totally useless. So we return NULL in that case. */ + if (standard_tzname && !strcmp (standard_tzname, "Standard Time")) + return NULL; + + /* If both standard and daylight TZNAMEs were found, if they are the same + we return just one, else we format them like "EST/EDT". */ + if (standard_tzname && daylight_tzname) { + unsigned int standard_len, daylight_len; + char *tznames; + + if (!strcmp (standard_tzname, daylight_tzname)) + return strdup (standard_tzname); + + standard_len = strlen (standard_tzname); + daylight_len = strlen (daylight_tzname); + tznames = malloc (standard_len + daylight_len + 2); + strcpy (tznames, standard_tzname); + tznames[standard_len] = '/'; + strcpy (tznames + standard_len + 1, daylight_tzname); + return tznames; + } else { + const char *tznames; + + /* If either of the TZNAMEs was found just return that, else NULL. */ + tznames = standard_tzname ? standard_tzname : daylight_tzname; + return tznames ? strdup (tznames) : NULL; + } +} + + +static void +icaltimezone_ensure_coverage (icaltimezone *zone, + int end_year) +{ + /* When we expand timezone changes we always expand at least up to this + year, plus ICALTIMEZONE_EXTRA_COVERAGE. */ + static int icaltimezone_minimum_expansion_year = -1; + + int changes_end_year; + + if (!zone->component) + icaltimezone_load_builtin_timezone (zone); + + if (icaltimezone_minimum_expansion_year == -1) { + struct icaltimetype today = icaltime_today(); + icaltimezone_minimum_expansion_year = today.year; + } + + changes_end_year = end_year; + if (changes_end_year < icaltimezone_minimum_expansion_year) + changes_end_year = icaltimezone_minimum_expansion_year; + + changes_end_year += ICALTIMEZONE_EXTRA_COVERAGE; + + if (changes_end_year > ICALTIMEZONE_MAX_YEAR) + changes_end_year = ICALTIMEZONE_MAX_YEAR; + + if (!zone->changes || zone->end_year < end_year) + icaltimezone_expand_changes (zone, changes_end_year); +} + + +static void +icaltimezone_expand_changes (icaltimezone *zone, + int end_year) +{ + icalarray *changes; + icalcomponent *comp; + +#if 0 + printf ("\nExpanding changes for: %s to year: %i\n", zone->tzid, end_year); +#endif + + changes = icalarray_new (sizeof (icaltimezonechange), 32); + if (!changes) + return; + + /* Scan the STANDARD and DAYLIGHT subcomponents. */ + comp = icalcomponent_get_first_component (zone->component, + ICAL_ANY_COMPONENT); + while (comp) { + icaltimezone_expand_vtimezone (comp, end_year, changes); + comp = icalcomponent_get_next_component (zone->component, + ICAL_ANY_COMPONENT); + } + + /* Sort the changes. We may have duplicates but I don't think it will + matter. */ + icalarray_sort (changes, icaltimezone_compare_change_fn); + + if (zone->changes) + icalarray_free (zone->changes); + + zone->changes = changes; + zone->end_year = end_year; +} + + +static void +icaltimezone_expand_vtimezone (icalcomponent *comp, + int end_year, + icalarray *changes) +{ + icaltimezonechange change; + icalproperty *prop; + struct icaltimetype dtstart, occ; + struct icalrecurrencetype rrule; + icalrecur_iterator* rrule_iterator; + struct icaldatetimeperiodtype rdate; + int found_dtstart = 0, found_tzoffsetto = 0, found_tzoffsetfrom = 0; + int has_recurrence = 0; + + /* First we check if it is a STANDARD or DAYLIGHT component, and + just return if it isn't. */ + if (icalcomponent_isa (comp) == ICAL_XSTANDARD_COMPONENT) + change.is_daylight = 0; + else if (icalcomponent_isa (comp) == ICAL_XDAYLIGHT_COMPONENT) + change.is_daylight = 1; + else + return; + + /* Step through each of the properties to find the DTSTART, + TZOFFSETFROM and TZOFFSETTO. We can't expand recurrences here + since we need these properties before we can do that. */ + prop = icalcomponent_get_first_property (comp, ICAL_ANY_PROPERTY); + while (prop) { + switch (icalproperty_isa (prop)) { + case ICAL_DTSTART_PROPERTY: + dtstart = icalproperty_get_dtstart (prop); + found_dtstart = 1; + break; + case ICAL_TZOFFSETTO_PROPERTY: + change.utc_offset = icalproperty_get_tzoffsetto (prop); + /*printf ("Found TZOFFSETTO: %i\n", change.utc_offset);*/ + found_tzoffsetto = 1; + break; + case ICAL_TZOFFSETFROM_PROPERTY: + change.prev_utc_offset = icalproperty_get_tzoffsetfrom (prop); + /*printf ("Found TZOFFSETFROM: %i\n", change.prev_utc_offset);*/ + found_tzoffsetfrom = 1; + break; + case ICAL_RDATE_PROPERTY: + case ICAL_RRULE_PROPERTY: + has_recurrence = 1; + break; + default: + /* Just ignore any other properties. */ + break; + } + + prop = icalcomponent_get_next_property (comp, ICAL_ANY_PROPERTY); + } + + /* If we didn't find a DTSTART, TZOFFSETTO and TZOFFSETFROM we have to + ignore the component. FIXME: Add an error property? */ + if (!found_dtstart || !found_tzoffsetto || !found_tzoffsetfrom) + return; + +#if 0 + printf ("\n Expanding component DTSTART (Y/M/D): %i/%i/%i %i:%02i:%02i\n", + dtstart.year, dtstart.month, dtstart.day, + dtstart.hour, dtstart.minute, dtstart.second); +#endif + + /* If the STANDARD/DAYLIGHT component has no recurrence data, we just add + a single change for the DTSTART. */ + if (!has_recurrence) { + change.year = dtstart.year; + change.month = dtstart.month; + change.day = dtstart.day; + change.hour = dtstart.hour; + change.minute = dtstart.minute; + change.second = dtstart.second; + + /* Convert to UTC. */ + icaltimezone_adjust_change (&change, 0, 0, 0, -change.prev_utc_offset); + +#if 0 + printf (" Appending single DTSTART (Y/M/D): %i/%02i/%02i %i:%02i:%02i\n", + change.year, change.month, change.day, + change.hour, change.minute, change.second); +#endif + + /* Add the change to the array. */ + icalarray_append (changes, &change); + return; + } + + /* The component has recurrence data, so we expand that now. */ + prop = icalcomponent_get_first_property (comp, ICAL_ANY_PROPERTY); + while (prop) { +#if 0 + printf ("Expanding property...\n"); +#endif + switch (icalproperty_isa (prop)) { + case ICAL_RDATE_PROPERTY: + rdate = icalproperty_get_rdate (prop); + change.year = rdate.time.year; + change.month = rdate.time.month; + change.day = rdate.time.day; + /* RDATEs with a DATE value inherit the time from + the DTSTART. */ + if (icaltime_is_date(rdate.time)) { + change.hour = dtstart.hour; + change.minute = dtstart.minute; + change.second = dtstart.second; + } else { + change.hour = rdate.time.hour; + change.minute = rdate.time.minute; + change.second = rdate.time.second; + + /* The spec was a bit vague about whether RDATEs were in local + time or UTC so we support both to be safe. So if it is in + UTC we have to add the UTC offset to get a local time. */ + if (!icaltime_is_utc(rdate.time)) + icaltimezone_adjust_change (&change, 0, 0, 0, + -change.prev_utc_offset); + } + +#if 0 + printf (" Appending RDATE element (Y/M/D): %i/%02i/%02i %i:%02i:%02i\n", + change.year, change.month, change.day, + change.hour, change.minute, change.second); +#endif + + icalarray_append (changes, &change); + break; + case ICAL_RRULE_PROPERTY: + rrule = icalproperty_get_rrule (prop); + + /* If the rrule UNTIL value is set and is in UTC, we convert it to + a local time, since the recurrence code has no way to convert + it itself. */ + if (!icaltime_is_null_time (rrule.until) && rrule.until.is_utc) { +#if 0 + printf (" Found RRULE UNTIL in UTC.\n"); +#endif + + /* To convert from UTC to a local time, we use the TZOFFSETFROM + since that is the offset from UTC that will be in effect + when each of the RRULE occurrences happens. */ + icaltime_adjust (&rrule.until, 0, 0, 0, + change.prev_utc_offset); + rrule.until.is_utc = 0; + } + + rrule_iterator = icalrecur_iterator_new (rrule, dtstart); + for (;;) { + occ = icalrecur_iterator_next (rrule_iterator); + if (occ.year > end_year || icaltime_is_null_time (occ)) + break; + + change.year = occ.year; + change.month = occ.month; + change.day = occ.day; + change.hour = occ.hour; + change.minute = occ.minute; + change.second = occ.second; + +#if 0 + printf (" Appending RRULE element (Y/M/D): %i/%02i/%02i %i:%02i:%02i\n", + change.year, change.month, change.day, + change.hour, change.minute, change.second); +#endif + + icaltimezone_adjust_change (&change, 0, 0, 0, + -change.prev_utc_offset); + + icalarray_append (changes, &change); + } + + icalrecur_iterator_free (rrule_iterator); + break; + default: + break; + } + + prop = icalcomponent_get_next_property (comp, ICAL_ANY_PROPERTY); + } +} + + +/** A function to compare 2 icaltimezonechange elements, used for qsort(). */ +static int +icaltimezone_compare_change_fn (const void *elem1, + const void *elem2) +{ + const icaltimezonechange *change1, *change2; + int retval; + + change1 = elem1; + change2 = elem2; + + if (change1->year < change2->year) + retval = -1; + else if (change1->year > change2->year) + retval = 1; + + else if (change1->month < change2->month) + retval = -1; + else if (change1->month > change2->month) + retval = 1; + + else if (change1->day < change2->day) + retval = -1; + else if (change1->day > change2->day) + retval = 1; + + else if (change1->hour < change2->hour) + retval = -1; + else if (change1->hour > change2->hour) + retval = 1; + + else if (change1->minute < change2->minute) + retval = -1; + else if (change1->minute > change2->minute) + retval = 1; + + else if (change1->second < change2->second) + retval = -1; + else if (change1->second > change2->second) + retval = 1; + + else + retval = 0; + + return retval; +} + + + +void +icaltimezone_convert_time (struct icaltimetype *tt, + icaltimezone *from_zone, + icaltimezone *to_zone) +{ + int utc_offset, is_daylight; + + /* If the time is a DATE value or both timezones are the same, or we are + converting a floating time, we don't need to do anything. */ + if (icaltime_is_date(*tt) || from_zone == to_zone || from_zone == NULL) + return; + + /* Convert the time to UTC by getting the UTC offset and subtracting it. */ + utc_offset = icaltimezone_get_utc_offset (from_zone, tt, NULL); + icaltime_adjust (tt, 0, 0, 0, -utc_offset); + + /* Now we convert the time to the new timezone by getting the UTC offset + of our UTC time and adding it. */ + utc_offset = icaltimezone_get_utc_offset_of_utc_time (to_zone, tt, + &is_daylight); + tt->is_daylight = is_daylight; + icaltime_adjust (tt, 0, 0, 0, utc_offset); +} + + + + +/** @deprecated This API wasn't updated when we changed icaltimetype to contain its own + timezone. Also, this takes a pointer instead of the struct. */ +/* Calculates the UTC offset of a given local time in the given + timezone. It is the number of seconds to add to UTC to get local + time. The is_daylight flag is set to 1 if the time is in + daylight-savings time. */ +int +icaltimezone_get_utc_offset (icaltimezone *zone, + struct icaltimetype *tt, + int *is_daylight) +{ + icaltimezonechange *zone_change, *prev_zone_change, tt_change, tmp_change; + int change_num, step, utc_offset_change, cmp; + int change_num_to_use; + int want_daylight; + + if (tt == NULL) + return 0; + + if (is_daylight) + *is_daylight = 0; + + /* For local times and UTC return 0. */ + if (zone == NULL || zone == &utc_timezone) + return 0; + + /* Use the builtin icaltimezone if possible. */ + if (zone->builtin_timezone) + zone = zone->builtin_timezone; + + /* Make sure the changes array is expanded up to the given time. */ + icaltimezone_ensure_coverage (zone, tt->year); + + if (!zone->changes || zone->changes->num_elements == 0) + return 0; + + /* Copy the time parts of the icaltimetype to an icaltimezonechange so we + can use our comparison function on it. */ + tt_change.year = tt->year; + tt_change.month = tt->month; + tt_change.day = tt->day; + tt_change.hour = tt->hour; + tt_change.minute = tt->minute; + tt_change.second = tt->second; + + /* This should find a change close to the time, either the change before + it or the change after it. */ + change_num = icaltimezone_find_nearby_change (zone, &tt_change); + + /* Sanity check. */ + icalerror_assert (change_num >= 0, + "Negative timezone change index"); + icalerror_assert (change_num < zone->changes->num_elements, + "Timezone change index out of bounds"); + + /* Now move backwards or forwards to find the timezone change that applies + to tt. It should only have to do 1 or 2 steps. */ + zone_change = icalarray_element_at (zone->changes, change_num); + step = 1; + change_num_to_use = -1; + for (;;) { + /* Copy the change, so we can adjust it. */ + tmp_change = *zone_change; + + /* If the clock is going backward, check if it is in the region of time + that is used twice. If it is, use the change with the daylight + setting which matches tt, or use standard if we don't know. */ + if (tmp_change.utc_offset < tmp_change.prev_utc_offset) { + /* If the time change is at 2:00AM local time and the clock is + going back to 1:00AM we adjust the change to 1:00AM. We may + have the wrong change but we'll figure that out later. */ + icaltimezone_adjust_change (&tmp_change, 0, 0, 0, + tmp_change.utc_offset); + } else { + icaltimezone_adjust_change (&tmp_change, 0, 0, 0, + tmp_change.prev_utc_offset); + } + + cmp = icaltimezone_compare_change_fn (&tt_change, &tmp_change); + + /* If the given time is on or after this change, then this change may + apply, but we continue as a later change may be the right one. + If the given time is before this change, then if we have already + found a change which applies we can use that, else we need to step + backwards. */ + if (cmp >= 0) + change_num_to_use = change_num; + else + step = -1; + + /* If we are stepping backwards through the changes and we have found + a change that applies, then we know this is the change to use so + we exit the loop. */ + if (step == -1 && change_num_to_use != -1) + break; + + change_num += step; + + /* If we go past the start of the changes array, then we have no data + for this time so we return a UTC offset of 0. */ + if (change_num < 0) + return 0; + + if (change_num >= zone->changes->num_elements) + break; + + zone_change = icalarray_element_at (zone->changes, change_num); + } + + /* If we didn't find a change to use, then we have a bug! */ + icalerror_assert (change_num_to_use != -1, + "No applicable timezone change found"); + + /* Now we just need to check if the time is in the overlapped region of + time when clocks go back. */ + zone_change = icalarray_element_at (zone->changes, change_num_to_use); + + utc_offset_change = zone_change->utc_offset - zone_change->prev_utc_offset; + if (utc_offset_change < 0 && change_num_to_use > 0) { + tmp_change = *zone_change; + icaltimezone_adjust_change (&tmp_change, 0, 0, 0, + tmp_change.prev_utc_offset); + + if (icaltimezone_compare_change_fn (&tt_change, &tmp_change) < 0) { + /* The time is in the overlapped region, so we may need to use + either the current zone_change or the previous one. If the + time has the is_daylight field set we use the matching change, + else we use the change with standard time. */ + prev_zone_change = icalarray_element_at (zone->changes, + change_num_to_use - 1); + + /* I was going to add an is_daylight flag to struct icaltimetype, + but iCalendar doesn't let us distinguish between standard and + daylight time anyway, so there's no point. So we just use the + standard time instead. */ + want_daylight = (tt->is_daylight == 1) ? 1 : 0; + +#if 0 + if (zone_change->is_daylight == prev_zone_change->is_daylight) + printf (" **** Same is_daylight setting\n"); +#endif + + if (zone_change->is_daylight != want_daylight + && prev_zone_change->is_daylight == want_daylight) + zone_change = prev_zone_change; + } + } + + /* Now we know exactly which timezone change applies to the time, so + we can return the UTC offset and whether it is a daylight time. */ + if (is_daylight) + *is_daylight = zone_change->is_daylight; + return zone_change->utc_offset; +} + + +/** @deprecated This API wasn't updated when we changed icaltimetype to contain its own + timezone. Also, this takes a pointer instead of the struct. */ +/** Calculates the UTC offset of a given UTC time in the given + timezone. It is the number of seconds to add to UTC to get local + time. The is_daylight flag is set to 1 if the time is in + daylight-savings time. */ +int +icaltimezone_get_utc_offset_of_utc_time (icaltimezone *zone, + struct icaltimetype *tt, + int *is_daylight) +{ + icaltimezonechange *zone_change, tt_change, tmp_change; + int change_num, step, change_num_to_use; + + if (is_daylight) + *is_daylight = 0; + + /* For local times and UTC return 0. */ + if (zone == NULL || zone == &utc_timezone) + return 0; + + /* Use the builtin icaltimezone if possible. */ + if (zone->builtin_timezone) + zone = zone->builtin_timezone; + + /* Make sure the changes array is expanded up to the given time. */ + icaltimezone_ensure_coverage (zone, tt->year); + + if (!zone->changes || zone->changes->num_elements == 0) + return 0; + + /* Copy the time parts of the icaltimetype to an icaltimezonechange so we + can use our comparison function on it. */ + tt_change.year = tt->year; + tt_change.month = tt->month; + tt_change.day = tt->day; + tt_change.hour = tt->hour; + tt_change.minute = tt->minute; + tt_change.second = tt->second; + + /* This should find a change close to the time, either the change before + it or the change after it. */ + change_num = icaltimezone_find_nearby_change (zone, &tt_change); + + /* Sanity check. */ + icalerror_assert (change_num >= 0, + "Negative timezone change index"); + icalerror_assert (change_num < zone->changes->num_elements, + "Timezone change index out of bounds"); + + /* Now move backwards or forwards to find the timezone change that applies + to tt. It should only have to do 1 or 2 steps. */ + zone_change = icalarray_element_at (zone->changes, change_num); + step = 1; + change_num_to_use = -1; + for (;;) { + /* Copy the change and adjust it to UTC. */ + tmp_change = *zone_change; + + /* If the given time is on or after this change, then this change may + apply, but we continue as a later change may be the right one. + If the given time is before this change, then if we have already + found a change which applies we can use that, else we need to step + backwards. */ + if (icaltimezone_compare_change_fn (&tt_change, &tmp_change) >= 0) + change_num_to_use = change_num; + else + step = -1; + + /* If we are stepping backwards through the changes and we have found + a change that applies, then we know this is the change to use so + we exit the loop. */ + if (step == -1 && change_num_to_use != -1) + break; + + change_num += step; + + /* If we go past the start of the changes array, then we have no data + for this time so we return a UTC offset of 0. */ + if (change_num < 0) + return 0; + + if (change_num >= zone->changes->num_elements) + break; + + zone_change = icalarray_element_at (zone->changes, change_num); + } + + /* If we didn't find a change to use, then we have a bug! */ + icalerror_assert (change_num_to_use != -1, + "No applicable timezone change found"); + + /* Now we know exactly which timezone change applies to the time, so + we can return the UTC offset and whether it is a daylight time. */ + zone_change = icalarray_element_at (zone->changes, change_num_to_use); + if (is_daylight) + *is_daylight = zone_change->is_daylight; + + return zone_change->utc_offset; +} + + +/** Returns the index of a timezone change which is close to the time + given in change. */ +static int +icaltimezone_find_nearby_change (icaltimezone *zone, + icaltimezonechange *change) +{ + icaltimezonechange *zone_change; + int lower, upper, middle, cmp; + + /* Do a simple binary search. */ + lower = middle = 0; + upper = zone->changes->num_elements; + + while (lower < upper) { + middle = (lower + upper) / 2; + zone_change = icalarray_element_at (zone->changes, middle); + cmp = icaltimezone_compare_change_fn (change, zone_change); + if (cmp == 0) + break; + else if (cmp < 0) + upper = middle; + else + lower = middle + 1; + } + + return middle; +} + + + + +/** Adds (or subtracts) a time from a icaltimezonechange. NOTE: This + function is exactly the same as icaltime_adjust() except for the + type of the first parameter. */ +static void +icaltimezone_adjust_change (icaltimezonechange *tt, + int days, + int hours, + int minutes, + int seconds) +{ + int second, minute, hour, day; + int minutes_overflow, hours_overflow, days_overflow; + int days_in_month; + + /* Add on the seconds. */ + second = tt->second + seconds; + tt->second = second % 60; + minutes_overflow = second / 60; + if (tt->second < 0) { + tt->second += 60; + minutes_overflow--; + } + + /* Add on the minutes. */ + minute = tt->minute + minutes + minutes_overflow; + tt->minute = minute % 60; + hours_overflow = minute / 60; + if (tt->minute < 0) { + tt->minute += 60; + hours_overflow--; + } + + /* Add on the hours. */ + hour = tt->hour + hours + hours_overflow; + tt->hour = hour % 24; + days_overflow = hour / 24; + if (tt->hour < 0) { + tt->hour += 24; + days_overflow--; + } + + /* Add on the days. */ + day = tt->day + days + days_overflow; + if (day > 0) { + for (;;) { + days_in_month = icaltime_days_in_month (tt->month, tt->year); + if (day <= days_in_month) + break; + + tt->month++; + if (tt->month >= 13) { + tt->year++; + tt->month = 1; + } + + day -= days_in_month; + } + } else { + while (day <= 0) { + if (tt->month == 1) { + tt->year--; + tt->month = 12; + } else { + tt->month--; + } + + day += icaltime_days_in_month (tt->month, tt->year); + } + } + tt->day = day; +} + + +char* +icaltimezone_get_tzid (icaltimezone *zone) +{ + /* If this is a floating time, without a timezone, return NULL. */ + if (!zone) + return NULL; + + if (!zone->tzid) + icaltimezone_load_builtin_timezone (zone); + + return zone->tzid; +} + + +char* +icaltimezone_get_location (icaltimezone *zone) +{ + /* If this is a floating time, without a timezone, return NULL. */ + if (!zone) + return NULL; + + /* Note that for builtin timezones this comes from zones.tab so we don't + need to check the timezone is loaded here. */ + return zone->location; +} + + +char* +icaltimezone_get_tznames (icaltimezone *zone) +{ + /* If this is a floating time, without a timezone, return NULL. */ + if (!zone) + return NULL; + + if (!zone->component) + icaltimezone_load_builtin_timezone (zone); + + return zone->tznames; +} + + +/** Returns the latitude of a builtin timezone. */ +double +icaltimezone_get_latitude (icaltimezone *zone) +{ + /* If this is a floating time, without a timezone, return 0. */ + if (!zone) + return 0.0; + + /* Note that for builtin timezones this comes from zones.tab so we don't + need to check the timezone is loaded here. */ + return zone->latitude; +} + + +/** Returns the longitude of a builtin timezone. */ +double +icaltimezone_get_longitude (icaltimezone *zone) +{ + /* If this is a floating time, without a timezone, return 0. */ + if (!zone) + return 0.0; + + /* Note that for builtin timezones this comes from zones.tab so we don't + need to check the timezone is loaded here. */ + return zone->longitude; +} + + +/** Returns the VTIMEZONE component of a timezone. */ +icalcomponent* +icaltimezone_get_component (icaltimezone *zone) +{ + /* If this is a floating time, without a timezone, return NULL. */ + if (!zone) + return NULL; + + if (!zone->component) + icaltimezone_load_builtin_timezone (zone); + + return zone->component; +} + + +/** Sets the VTIMEZONE component of an icaltimezone, initializing the + tzid, location & tzname fields. It returns 1 on success or 0 on + failure, i.e. no TZID was found. */ +int +icaltimezone_set_component (icaltimezone *zone, + icalcomponent *comp) +{ + icaltimezone_reset (zone); + return icaltimezone_get_vtimezone_properties (zone, comp); +} + + +icalarray* +icaltimezone_array_new (void) +{ + return icalarray_new (sizeof (icaltimezone), 16); +} + + +void +icaltimezone_array_append_from_vtimezone (icalarray *timezones, + icalcomponent *child) +{ + icaltimezone zone; + + icaltimezone_init (&zone); + if (icaltimezone_get_vtimezone_properties (&zone, child)) + icalarray_append (timezones, &zone); +} + + +void +icaltimezone_array_free (icalarray *timezones) +{ + icaltimezone *zone; + int i; + + if ( timezones ) + { + for (i = 0; i < timezones->num_elements; i++) { + zone = icalarray_element_at (timezones, i); + icaltimezone_free (zone, 0); + } + + icalarray_free (timezones); + } +} + + +/* + * BUILTIN TIMEZONE HANDLING + */ + + +/** Returns an icalarray of icaltimezone structs, one for each builtin + timezone. This will load and parse the zones.tab file to get the + timezone names and their coordinates. It will not load the + VTIMEZONE data for any timezones. */ +icalarray* +icaltimezone_get_builtin_timezones (void) +{ + if (!builtin_timezones) + icaltimezone_init_builtin_timezones (); + + return builtin_timezones; +} + +/** Release builtin timezone memory */ +void +icaltimezone_free_builtin_timezones(void) +{ + icaltimezone_array_free(builtin_timezones); +} + + +/** Returns a single builtin timezone, given its Olson city name. */ +icaltimezone* +icaltimezone_get_builtin_timezone (const char *location) +{ + icaltimezone *zone; + int lower, upper, middle, cmp; + char *zone_location; + + if (!location || !location[0]) + return NULL; + + if (!strcmp (location, "UTC")) + return &utc_timezone; + + if (!builtin_timezones) + icaltimezone_init_builtin_timezones (); + + /* Do a simple binary search. */ + lower = middle = 0; + upper = builtin_timezones->num_elements; + + while (lower < upper) { + middle = (lower + upper) / 2; + zone = icalarray_element_at (builtin_timezones, middle); + zone_location = icaltimezone_get_location (zone); + cmp = strcmp (location, zone_location); + if (cmp == 0) + return zone; + else if (cmp < 0) + upper = middle; + else + lower = middle + 1; + } + + return NULL; +} + + +/** Returns a single builtin timezone, given its TZID. */ +icaltimezone* +icaltimezone_get_builtin_timezone_from_tzid (const char *tzid) +{ + int num_slashes = 0; + const char *p, *zone_tzid; + icaltimezone *zone; + + if (!tzid || !tzid[0]) + return NULL; + + /* Check that the TZID starts with our unique prefix. */ + if (strncmp (tzid, TZID_PREFIX, TZID_PREFIX_LEN)) + return NULL; + + /* Get the location, which is after the 3rd '/' character. */ + p = tzid; + for (p = tzid; *p; p++) { + if (*p == '/') { + num_slashes++; + if (num_slashes == 3) + break; + } + } + + if (num_slashes != 3) + return NULL; + + p++; + + /* Now we can use the function to get the builtin timezone from the + location string. */ + zone = icaltimezone_get_builtin_timezone (p); + if (!zone) + return NULL; + + /* Check that the builtin TZID matches exactly. We don't want to return + a different version of the VTIMEZONE. */ + zone_tzid = icaltimezone_get_tzid (zone); + if (!strcmp (zone_tzid, tzid)) + return zone; + else + return NULL; +} + + +/** Returns the special UTC timezone. */ +icaltimezone* +icaltimezone_get_utc_timezone (void) +{ + if (!builtin_timezones) + icaltimezone_init_builtin_timezones (); + + return &utc_timezone; +} + + + +/** This initializes the builtin timezone data, i.e. the + builtin_timezones array and the special UTC timezone. It should be + called before any code that uses the timezone functions. */ +static void +icaltimezone_init_builtin_timezones (void) +{ + /* Initialize the special UTC timezone. */ + utc_timezone.tzid = "UTC"; + + icaltimezone_parse_zone_tab (); +} + + +/** This parses the zones.tab file containing the names and locations + of the builtin timezones. It creates the builtin_timezones array + which is an icalarray of icaltimezone structs. It only fills in the + location, latitude and longtude fields; the rest are left + blank. The VTIMEZONE component is loaded later if it is needed. The + timezones in the zones.tab file are sorted by their name, which is + useful for binary searches. */ +static void +icaltimezone_parse_zone_tab (void) +{ + char *filename; + FILE *fp; + char buf[1024]; /* Used to store each line of zones.tab as it is read. */ + char location[1024]; /* Stores the city name when parsing buf. */ + unsigned int filename_len; + int latitude_degrees, latitude_minutes, latitude_seconds; + int longitude_degrees, longitude_minutes, longitude_seconds; + icaltimezone zone; + + icalerror_assert (builtin_timezones == NULL, + "Parsing zones.tab file multiple times"); + + builtin_timezones = icalarray_new (sizeof (icaltimezone), 32); + + filename_len = strlen (get_zone_directory()) + strlen (ZONES_TAB_FILENAME) + + 2; + + filename = (char*) malloc (filename_len); + if (!filename) { + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + return; + } + + snprintf (filename, filename_len, "%s/%s", get_zone_directory(), + ZONES_TAB_FILENAME); + + fp = fopen (filename, "r"); + free (filename); + if (!fp) { + icalerror_set_errno(ICAL_FILE_ERROR); + return; + } + + while (fgets (buf, sizeof(buf), fp)) { + if (*buf == '#') continue; + + /* The format of each line is: "latitude longitude location". */ + if (sscanf (buf, "%4d%2d%2d %4d%2d%2d %s", + &latitude_degrees, &latitude_minutes, + &latitude_seconds, + &longitude_degrees, &longitude_minutes, + &longitude_seconds, + location) != 7) { + fprintf (stderr, "Invalid timezone description line: %s\n", buf); + continue; + } + + icaltimezone_init (&zone); + zone.location = strdup (location); + + if (latitude_degrees >= 0) + zone.latitude = (double) latitude_degrees + + (double) latitude_minutes / 60 + + (double) latitude_seconds / 3600; + else + zone.latitude = (double) latitude_degrees + - (double) latitude_minutes / 60 + - (double) latitude_seconds / 3600; + + if (longitude_degrees >= 0) + zone.longitude = (double) longitude_degrees + + (double) longitude_minutes / 60 + + (double) longitude_seconds / 3600; + else + zone.longitude = (double) longitude_degrees + - (double) longitude_minutes / 60 + - (double) longitude_seconds / 3600; + + icalarray_append (builtin_timezones, &zone); + +#if 0 + printf ("Found zone: %s %f %f\n", + location, zone.latitude, zone.longitude); +#endif + } + + fclose (fp); +} + + +/** Loads the builtin VTIMEZONE data for the given timezone. */ +static void +icaltimezone_load_builtin_timezone (icaltimezone *zone) +{ + char *filename; + unsigned int filename_len; + FILE *fp; + icalparser *parser; + icalcomponent *comp, *subcomp; + + /* If the location isn't set, it isn't a builtin timezone. */ + if (!zone->location || !zone->location[0]) + return; + + filename_len = strlen (get_zone_directory()) + strlen (zone->location) + 6; + + filename = (char*) malloc (filename_len); + if (!filename) { + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + return; + } + + snprintf (filename, filename_len, "%s/%s.ics", get_zone_directory(), + zone->location); + + fp = fopen (filename, "r"); + free (filename); + if (!fp) { + icalerror_set_errno(ICAL_FILE_ERROR); + return; + } + + + /* ##### B.# Sun, 11 Nov 2001 04:04:29 +1100 + this is where the MALFORMEDDATA error is being set, after the call to 'icalparser_parse' + fprintf(stderr, "** WARNING ** %s: %d %s\n", __FILE__, __LINE__, icalerror_strerror(icalerrno)); + */ + + parser = icalparser_new (); + icalparser_set_gen_data (parser, fp); + comp = icalparser_parse (parser, icaltimezone_load_get_line_fn); + icalparser_free (parser); + fclose (fp); + + + + /* Find the VTIMEZONE component inside the VCALENDAR. There should be 1. */ + subcomp = icalcomponent_get_first_component (comp, + ICAL_VTIMEZONE_COMPONENT); + if (!subcomp) { + icalerror_set_errno(ICAL_PARSE_ERROR); + return; + } + + icaltimezone_get_vtimezone_properties (zone, subcomp); + + icalcomponent_remove_component(comp,subcomp); + + icalcomponent_free(comp); + +} + + +/** Callback used from icalparser_parse() */ +static char * +icaltimezone_load_get_line_fn (char *s, + size_t size, + void *data) +{ + return fgets (s, size, (FILE*) data); +} + + + + +/* + * DEBUGGING + */ + +/** + * This outputs a list of timezone changes for the given timezone to the + * given file, up to the maximum year given. We compare this output with the + * output from 'vzic --dump-changes' to make sure that we are consistent. + * (vzic is the Olson timezone database to VTIMEZONE converter.) + * + * The output format is: + * + * Zone-Name [tab] Date [tab] Time [tab] UTC-Offset + * + * The Date and Time fields specify the time change in UTC. + * + * The UTC Offset is for local (wall-clock) time. It is the amount of time + * to add to UTC to get local time. + */ +int +icaltimezone_dump_changes (icaltimezone *zone, + int max_year, + FILE *fp) +{ + static char *months[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", + "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; + icaltimezonechange *zone_change; + int change_num; + char buffer[8]; + + /* Make sure the changes array is expanded up to the given time. */ + icaltimezone_ensure_coverage (zone, max_year); + +#if 0 + printf ("Num changes: %i\n", zone->changes->num_elements); +#endif + + change_num = 0; + for (change_num = 0; change_num < zone->changes->num_elements; change_num++) { + zone_change = icalarray_element_at (zone->changes, change_num); + + if (zone_change->year > max_year) + break; + + fprintf (fp, "%s\t%2i %s %04i\t%2i:%02i:%02i", + zone->location, + zone_change->day, months[zone_change->month - 1], + zone_change->year, + zone_change->hour, zone_change->minute, zone_change->second); + + /* Wall Clock Time offset from UTC. */ + format_utc_offset (zone_change->utc_offset, buffer); + fprintf (fp, "\t%s", buffer); + + fprintf (fp, "\n"); + } + return 1; +} + + +/** This formats a UTC offset as "+HHMM" or "+HHMMSS". + buffer should have space for 8 characters. */ +static void +format_utc_offset (int utc_offset, + char *buffer) +{ + char *sign = "+"; + int hours, minutes, seconds; + + if (utc_offset < 0) { + utc_offset = -utc_offset; + sign = "-"; + } + + hours = utc_offset / 3600; + minutes = (utc_offset % 3600) / 60; + seconds = utc_offset % 60; + + /* Sanity check. Standard timezone offsets shouldn't be much more than 12 + hours, and daylight saving shouldn't change it by more than a few hours. + (The maximum offset is 15 hours 56 minutes at present.) */ + if (hours < 0 || hours >= 24 || minutes < 0 || minutes >= 60 + || seconds < 0 || seconds >= 60) { + fprintf (stderr, "Warning: Strange timezone offset: H:%i M:%i S:%i\n", + hours, minutes, seconds); + } + + if (seconds == 0) + sprintf (buffer, "%s%02i%02i", sign, hours, minutes); + else + sprintf (buffer, "%s%02i%02i%02i", sign, hours, minutes, seconds); +} + +static char* get_zone_directory(void) +{ + return zone_files_directory == NULL ? ZONEINFO_DIRECTORY : zone_files_directory; +} + +void set_zone_directory(char *path) +{ + zone_files_directory = malloc(strlen(path)+1); + if ( zone_files_directory != NULL ) + { + strcpy(zone_files_directory,path); + } +} + +void free_zone_directory(void) +{ + if ( zone_files_directory != NULL ) + { + free(zone_files_directory); + } +} diff --git a/mozilla/calendar/libical/src/libical/icaltimezone.h b/mozilla/calendar/libical/src/libical/icaltimezone.h new file mode 100644 index 00000000000..d89004b2f89 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icaltimezone.h @@ -0,0 +1,167 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */ +/*====================================================================== + FILE: icaltimezone.h + CREATOR: Damon Chaplin 15 March 2001 + + + $Id: icaltimezone.h,v 1.10 2002/11/03 23:51:55 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 2001, Damon Chaplin + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + +======================================================================*/ +/** + * @file icaltimezone.h + * @brief timezone handling routines + */ + +#ifndef ICALTIMEZONE_H +#define ICALTIMEZONE_H + +#include /* For FILE* */ +#include "icaltime.h" +#include "icalarray.h" +#include "icalcomponent.h" + + +#ifndef ICALTIMEZONE_DEFINED +#define ICALTIMEZONE_DEFINED +/** @brief An opaque struct representing a timezone. + * We declare this here to avoid a circular dependancy. + */ +typedef struct _icaltimezone icaltimezone; +#endif + +/** + * @par Creating/Destroying individual icaltimezones. + */ + +/** Creates a new icaltimezone. */ +icaltimezone *icaltimezone_new (void); + +/** Frees all memory used for the icaltimezone. Set free_struct to free the + icaltimezone struct as well. */ +void icaltimezone_free (icaltimezone *zone, + int free_struct); + + +/** + * @par Accessing timezones. + */ + +/** Free any builtin timezone information **/ +void icaltimezone_free_builtin_timezones(void); + +/** Returns the array of builtin icaltimezones. */ +icalarray* icaltimezone_get_builtin_timezones (void); + +/** Returns a single builtin timezone, given its Olson city name. */ +icaltimezone* icaltimezone_get_builtin_timezone (const char *location); + +/** Returns a single builtin timezone, given its TZID. */ +icaltimezone* icaltimezone_get_builtin_timezone_from_tzid (const char *tzid); + +/** Returns the UTC timezone. */ +icaltimezone* icaltimezone_get_utc_timezone (void); + +/** Returns the TZID of a timezone. */ +char* icaltimezone_get_tzid (icaltimezone *zone); + +/** Returns the city name of a timezone. */ +char* icaltimezone_get_location (icaltimezone *zone); + +/** Returns the TZNAME properties used in the latest STANDARD and DAYLIGHT + components. If they are the same it will return just one, e.g. "LMT". + If they are different it will format them like "EST/EDT". Note that this + may also return NULL. */ +char* icaltimezone_get_tznames (icaltimezone *zone); + +/** Returns the latitude of a builtin timezone. */ +double icaltimezone_get_latitude (icaltimezone *zone); + +/** Returns the longitude of a builtin timezone. */ +double icaltimezone_get_longitude (icaltimezone *zone); + +/** Returns the VTIMEZONE component of a timezone. */ +icalcomponent* icaltimezone_get_component (icaltimezone *zone); + +/** Sets the VTIMEZONE component of an icaltimezone, initializing the tzid, + location & tzname fields. It returns 1 on success or 0 on failure, i.e. + no TZID was found. */ +int icaltimezone_set_component (icaltimezone *zone, + icalcomponent *comp); + +/** + * @par Converting times between timezones. + */ + +void icaltimezone_convert_time (struct icaltimetype *tt, + icaltimezone *from_zone, + icaltimezone *to_zone); + + +/** + * @par Getting offsets from UTC. + */ + +/** Calculates the UTC offset of a given local time in the given + timezone. It is the number of seconds to add to UTC to get local + time. The is_daylight flag is set to 1 if the time is in + daylight-savings time. */ +int icaltimezone_get_utc_offset (icaltimezone *zone, + struct icaltimetype *tt, + int *is_daylight); + +/** Calculates the UTC offset of a given UTC time in the given + timezone. It is the number of seconds to add to UTC to get local + time. The is_daylight flag is set to 1 if the time is in + daylight-savings time. */ +int icaltimezone_get_utc_offset_of_utc_time (icaltimezone *zone, + struct icaltimetype *tt, + int *is_daylight); + + + +/* + * Handling arrays of timezones. Mainly for internal use. + */ +icalarray* icaltimezone_array_new (void); + +void icaltimezone_array_append_from_vtimezone (icalarray *timezones, + icalcomponent *child); +void icaltimezone_array_free (icalarray *timezones); + + +/* + * @par Handling the default location the timezone files + */ + +/** Set the directory to look for the zonefiles */ +void set_zone_directory(char *path); + +/** Free memory dedicated to the zonefile directory */ +void free_zone_directory(void); + +/* + * @par Debugging Output. + */ + +/** Dumps information about changes in the timezone up to and including + max_year. */ +int icaltimezone_dump_changes (icaltimezone *zone, + int max_year, + FILE *fp); + +#endif /* ICALTIMEZONE_H */ diff --git a/mozilla/calendar/libical/src/libical/icaltypes.c b/mozilla/calendar/libical/src/libical/icaltypes.c new file mode 100644 index 00000000000..779c3fce1ba --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icaltypes.c @@ -0,0 +1,191 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: icaltypes.c + CREATOR: eric 16 May 1999 + + $Id: icaltypes.c,v 1.15 2002/10/30 23:59:57 acampi Exp $ + $Locker: $ + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icaltypes.c + + ======================================================================*/ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "icaltypes.h" +#include "icalerror.h" +#include "icalmemory.h" +#include /* for malloc and abs() */ +#include /* for errno */ +#include /* for icalmemory_strdup */ +#include + +#ifdef WIN32 +#define snprintf _snprintf +#define strcasecmp stricmp +#endif + +#define TEMP_MAX 1024 + + +int icaltriggertype_is_null_trigger(struct icaltriggertype tr) +{ + if(icaltime_is_null_time(tr.time) && + icaldurationtype_is_null_duration(tr.duration)){ + return 1; + } + + return 0; +} + +int icaltriggertype_is_bad_trigger(struct icaltriggertype tr) +{ + if(icaldurationtype_is_bad_duration(tr.duration)){ + return 1; + } + + return 0; +} + +struct icaltriggertype icaltriggertype_from_int(const int reltime) +{ + struct icaltriggertype tr; + + tr.time = icaltime_null_time(); + tr.duration = icaldurationtype_from_int(reltime); + + return tr; +} + +struct icaltriggertype icaltriggertype_from_string(const char* str) +{ + + + struct icaltriggertype tr, null_tr; + icalerrorstate es; + icalerrorenum e; + + tr.time= icaltime_null_time(); + tr.duration = icaldurationtype_from_int(0); + + null_tr = tr; + + if(str == 0) goto error; + + /* Suppress errors so a failure in icaltime_from_string() does not cause an abort */ + es = icalerror_get_error_state(ICAL_MALFORMEDDATA_ERROR); + icalerror_set_error_state(ICAL_MALFORMEDDATA_ERROR,ICAL_ERROR_NONFATAL); + e = icalerrno; + icalerror_set_errno(ICAL_NO_ERROR); + + tr.time = icaltime_from_string(str); + + if (icaltime_is_null_time(tr.time)){ + + tr.duration = icaldurationtype_from_string(str); + + if (icaldurationtype_is_bad_duration(tr.duration)) goto error; + } + + icalerror_set_error_state(ICAL_MALFORMEDDATA_ERROR,es); + icalerror_set_errno(e); + return tr; + + error: + icalerror_set_error_state(ICAL_MALFORMEDDATA_ERROR,es); + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + return tr; + +} + + +struct icalreqstattype icalreqstattype_from_string(const char* str) +{ + const char *p1,*p2; + struct icalreqstattype stat; + short major=0, minor=0; + + icalerror_check_arg((str != 0),"str"); + + stat.code = ICAL_UNKNOWN_STATUS; + stat.debug = 0; + stat.desc = 0; + + /* Get the status numbers */ + + sscanf(str, "%hd.%hd",&major, &minor); + + if (major <= 0 || minor < 0){ + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + return stat; + } + + stat.code = icalenum_num_to_reqstat(major, minor); + + if (stat.code == ICAL_UNKNOWN_STATUS){ + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + return stat; + } + + + p1 = strchr(str,';'); + + if (p1 == 0){ +/* icalerror_set_errno(ICAL_BADARG_ERROR);*/ + return stat; + } + + /* Just ignore the second clause; it will be taken from inside the library + */ + + + + p2 = strchr(p1+1,';'); + if (p2 != 0 && *p2 != 0){ + stat.debug = p2+1; + } + + return stat; + +} + +const char* icalreqstattype_as_string(struct icalreqstattype stat) +{ + char *temp; + + temp = (char*)icalmemory_tmp_buffer(TEMP_MAX); + + icalerror_check_arg_rz((stat.code != ICAL_UNKNOWN_STATUS),"Status"); + + if (stat.desc == 0){ + stat.desc = icalenum_reqstat_desc(stat.code); + } + + if(stat.debug != 0){ + snprintf(temp,TEMP_MAX,"%d.%d;%s;%s", icalenum_reqstat_major(stat.code), + icalenum_reqstat_minor(stat.code), + stat.desc, stat.debug); + + } else { + snprintf(temp,TEMP_MAX,"%d.%d;%s", icalenum_reqstat_major(stat.code), + icalenum_reqstat_minor(stat.code), + stat.desc); + } + + return temp; +} diff --git a/mozilla/calendar/libical/src/libical/icaltypes.h b/mozilla/calendar/libical/src/libical/icaltypes.h new file mode 100644 index 00000000000..1e5c5e09bb3 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icaltypes.h @@ -0,0 +1,107 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icaltypes.h + CREATOR: eric 20 March 1999 + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icaltypes.h + +======================================================================*/ + +#ifndef ICALTYPES_H +#define ICALTYPES_H + +#include +#include "icalenums.h" +#include "icaltime.h" +#include "icalduration.h" +#include "icalperiod.h" + + +struct icalgeotype +{ + float lat; + float lon; +}; + + +struct icaldatetimeperiodtype +{ + struct icaltimetype time; + struct icalperiodtype period; +}; + + +struct icaltriggertype +{ + struct icaltimetype time; + struct icaldurationtype duration; +}; + +struct icaltriggertype icaltriggertype_from_int(const int reltime); +struct icaltriggertype icaltriggertype_from_string(const char* str); + +int icaltriggertype_is_null_trigger(struct icaltriggertype tr); +int icaltriggertype_is_bad_trigger(struct icaltriggertype tr); + +/* struct icalreqstattype. This struct contains two string pointers, +but don't try to free either of them. The "desc" string is a pointer +to a static table inside the library. Don't try to free it. The +"debug" string is a pointer into the string that the called passed +into to icalreqstattype_from_string. Don't try to free it either, and +don't use it after the original string has been freed. + +BTW, you would get that original string from +*icalproperty_get_requeststatus() or icalvalue_get_text(), when +operating on a the value of a request_status property. */ + +struct icalreqstattype { + + icalrequeststatus code; + const char* desc; + const char* debug; +}; + +struct icalreqstattype icalreqstattype_from_string(const char* str); +const char* icalreqstattype_as_string(struct icalreqstattype); + + + +struct icaltimezonephase { + const char* tzname; + int is_stdandard; /* 1 = standard tme, 0 = daylight savings time */ + struct icaltimetype dtstart; + int offsetto; + int tzoffsetfrom; + const char* comment; + struct icaldatetimeperiodtype rdate; + const char* rrule; +}; + + +struct icaltimezonetype { + const char* tzid; + struct icaltimetype last_mod; + const char* tzurl; + + /* Array of phases. The end of the array is a phase with tzname == 0 */ + struct icaltimezonephase *phases; +}; + +void icaltimezonetype_free(struct icaltimezonetype tzt); + + +#endif /* !ICALTYPES_H */ diff --git a/mozilla/calendar/libical/src/libical/icalvalue_cxx.cpp b/mozilla/calendar/libical/src/libical/icalvalue_cxx.cpp new file mode 100644 index 00000000000..a1db030c33e --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icalvalue_cxx.cpp @@ -0,0 +1,262 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalvalue_cxx.cpp + CREATOR: fnguyen 12/21/01 + (C) COPYRIGHT 2001, Critical Path +======================================================================*/ + +#ifndef ICALVALUE_CXX_H +#include "icalvalue_cxx.h" +#endif + +typedef char* string; // Will use the string library from STL + +ICalValue::ICalValue() throw(icalerrorenum) : imp(icalvalue_new(ICAL_ANY_VALUE)){} + +ICalValue::ICalValue(const ICalValue& v) throw (icalerrorenum) { + imp = icalvalue_new_clone(v.imp); + if (!imp) throw icalerrno; +} +ICalValue& ICalValue::operator=(const ICalValue& v) throw(icalerrorenum) { + if (this == &v) return *this; + + if (imp != NULL) + { + icalvalue_free(imp); + imp = icalvalue_new_clone(v.imp); + if (!imp) throw icalerrno; + } + + return *this; +} + +ICalValue::~ICalValue(){ + if (imp != NULL) icalvalue_free(imp); +} + +ICalValue::ICalValue(icalvalue* v) throw(icalerrorenum) : imp(v){ +} + +ICalValue::ICalValue(icalvalue_kind kind) throw(icalerrorenum) { + imp = icalvalue_new(kind); + if (!imp) throw icalerrno; +} + +ICalValue::ICalValue(icalvalue_kind kind, string str) throw(icalerrorenum) { + imp = icalvalue_new_from_string(kind, str); + if (!imp) throw icalerrno; +} + +string ICalValue::as_ical_string(){ + return (string)icalvalue_as_ical_string(imp); +} +bool ICalValue::is_valid(){ + if (imp == NULL) return false; + return (icalvalue_is_valid(imp) ? true : false); +} +icalvalue_kind ICalValue::isa(){ + return icalvalue_isa(imp); +} +int ICalValue::isa_value(void* value){ + return icalvalue_isa_value(value); +} + +/* Special, non autogenerated value accessors */ +void ICalValue::set_recur(struct icalrecurrencetype v){ + icalvalue_set_recur(imp, v); +} +struct icalrecurrencetype ICalValue::get_recur(){ + return icalvalue_get_recur(imp); +} + +void ICalValue::set_trigger(struct icaltriggertype v){} +struct icaltriggertype ICalValue::get_trigger(){ + return icalvalue_get_trigger(imp); +} + +void ICalValue::set_datetimeperiod(struct icaldatetimeperiodtype v){ + icalvalue_set_datetimeperiod(imp, v); +} +struct icaldatetimeperiodtype ICalValue::get_datetimeperiod(){ + return icalvalue_get_datetimeperiod(imp); +} + +icalparameter_xliccomparetype ICalValue::compare(ICalValue& a, ICalValue& b){ + return icalvalue_compare(a, b); +} + +/* Convert enumerations */ +icalvalue_kind ICalValue::string_to_kind(string str){ + return icalvalue_string_to_kind(str); +} +string ICalValue::kind_to_string(icalvalue_kind kind){ + return (string)icalvalue_kind_to_string(kind); +} + +/* BOOLEAN */ +int ICalValue::get_boolean(){ + return icalvalue_get_boolean(imp); +} +void ICalValue::set_boolean(int v){ + icalvalue_set_boolean(imp, v); +} + +/* UTC-OFFSET */ +int ICalValue::get_utcoffset(){ + return icalvalue_get_utcoffset(imp); +} +void ICalValue::set_utcoffset(int v){ + icalvalue_set_utcoffset(imp, v); +} + +/* METHOD */ +enum icalproperty_method ICalValue::get_method(){ + return icalvalue_get_method(imp); +} +void ICalValue::set_method(enum icalproperty_method v){ + icalvalue_set_method(imp, v); +} + +/* CAL-ADDRESS */ +string ICalValue::get_caladdress(){ + return (string)icalvalue_get_caladdress(imp); +} +void ICalValue::set_caladdress(string v){ + icalvalue_set_caladdress(imp, v); +} + +/* PERIOD */ +struct icalperiodtype ICalValue::get_period(){ + return icalvalue_get_period(imp); +} +void ICalValue::set_period(struct icalperiodtype v){ + icalvalue_set_period(imp, v); +} + +/* STATUS */ +enum icalproperty_status ICalValue::get_status(){ + return icalvalue_get_status(imp); +} +void ICalValue::set_status(enum icalproperty_status v){ + icalvalue_set_status(imp, v); +} + +/* BINARY */ +string ICalValue::get_binary(){ + return (string)icalvalue_get_binary(imp); +} +void ICalValue::set_binary(string v){ + icalvalue_set_binary(imp, v); +} + +/* TEXT */ +string ICalValue::get_text(){ + return (string)icalvalue_get_text(imp); +} +void ICalValue::set_text(string v){ + icalvalue_set_text(imp, v); +} + +/* DURATION */ +struct icaldurationtype ICalValue::get_duration(){ + return icalvalue_get_duration(imp); +} +void ICalValue::set_duration(struct icaldurationtype v){ + icalvalue_set_duration(imp, v); +} + +/* INTEGER */ +int ICalValue::get_integer(){ + return icalvalue_get_integer(imp); +} +void ICalValue::set_integer(int v){ + icalvalue_set_integer(imp, v); +} + +/* URI */ +string ICalValue::get_uri(){ + return (string)icalvalue_get_uri(imp); +} +void ICalValue::set_uri(string v){ + icalvalue_set_uri(imp, v); +} + +/* ATTACH */ +icalattach *ICalValue::get_attach(){ + return icalvalue_get_attach(imp); +} +void ICalValue::set_attach(icalattach *v){ + icalvalue_set_attach(imp, v); +} + +/* CLASS */ +enum icalproperty_class ICalValue::get_class(){ + return icalvalue_get_class(imp); +} +void ICalValue::set_class(enum icalproperty_class v){ + icalvalue_set_class(imp, v); +} + +/* FLOAT */ +float ICalValue::get_float(){ + return icalvalue_get_float(imp); +} +void ICalValue::set_float(float v){ + icalvalue_set_float(imp, v); +} + +/* QUERY */ +string ICalValue::get_query(){ + return (string)icalvalue_get_query(imp); +} +void ICalValue::set_query(string v){ + icalvalue_set_query(imp, v); +} + +/* STRING */ +string ICalValue::get_string(){ + return (string)icalvalue_get_string(imp); +} +void ICalValue::set_string(string v){ + icalvalue_set_string(imp, v); +} + +/* TRANSP */ +enum icalproperty_transp ICalValue::get_transp(){ + return icalvalue_get_transp(imp); +} +void ICalValue::set_transp(enum icalproperty_transp v){ + icalvalue_set_transp(imp, v); +} + +/* DATE-TIME */ +struct icaltimetype ICalValue::get_datetime(){ + return icalvalue_get_datetime(imp); +} +void ICalValue::set_datetime(struct icaltimetype v){ + icalvalue_set_datetime(imp, v); +} + +/* GEO */ +struct icalgeotype ICalValue::get_geo(){ + return icalvalue_get_geo(imp); +} +void ICalValue::set_geo(struct icalgeotype v){ + icalvalue_set_geo(imp, v); +} + +/* DATE */ +struct icaltimetype ICalValue::get_date(){ + return icalvalue_get_date(imp); +} +void ICalValue::set_date(struct icaltimetype v){ + icalvalue_set_date(imp, v); +} + +/* ACTION */ +enum icalproperty_action ICalValue::get_action(){ + return icalvalue_get_action(imp); +} +void ICalValue::set_action(enum icalproperty_action v){ + icalvalue_set_action(imp, v); +} diff --git a/mozilla/calendar/libical/src/libical/icalvalue_cxx.h b/mozilla/calendar/libical/src/libical/icalvalue_cxx.h new file mode 100644 index 00000000000..0023e847644 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icalvalue_cxx.h @@ -0,0 +1,151 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalvalue_cxx.h + CREATOR: fnguyen 12/13/01 + (C) COPYRIGHT 2001, Critical Path +======================================================================*/ + +#ifndef CP_ICALVALUE_H +#define CP_ICALVALUE_H + +extern "C" { +#include "ical.h" +}; + +#include "icptrholder.h" + +typedef char* string; // Will use the string library from STL + +class ICalValue { +public: + ICalValue() throw(icalerrorenum); + ICalValue(const ICalValue&) throw(icalerrorenum); + ICalValue& operator=(const ICalValue&) throw(icalerrorenum); + ~ICalValue(); + + ICalValue(icalvalue*) throw(icalerrorenum); + ICalValue(icalvalue_kind kind) throw(icalerrorenum); + ICalValue(icalvalue_kind kind, string str) throw(icalerrorenum); + + operator icalvalue* () { return imp; } + + void detach() { + imp = NULL; + } + +public: + string as_ical_string(); + bool is_valid(); + icalvalue_kind isa(); + int isa_value(void*); + + /* Special, non autogenerated value accessors */ + void set_recur(struct icalrecurrencetype v); + struct icalrecurrencetype get_recur(); + + void set_trigger(struct icaltriggertype v); + struct icaltriggertype get_trigger(); + + void set_datetimeperiod(struct icaldatetimeperiodtype v); + struct icaldatetimeperiodtype get_datetimeperiod(); + +public: + static icalparameter_xliccomparetype compare(ICalValue& a, ICalValue& b); + + /* Convert enumerations */ + static icalvalue_kind string_to_kind(string str); + string kind_to_string(icalvalue_kind kind); + +public: + /* BOOLEAN */ + int get_boolean(); + void set_boolean(int v); + + /* UTC-OFFSET */ + int get_utcoffset(); + void set_utcoffset(int v); + + /* METHOD */ + enum icalproperty_method get_method(); + void set_method(enum icalproperty_method v); + + /* CAL-ADDRESS */ + string get_caladdress(); + void set_caladdress(string v); + + /* PERIOD */ + struct icalperiodtype get_period(); + void set_period(struct icalperiodtype v); + + /* STATUS */ + enum icalproperty_status get_status(); + void set_status(enum icalproperty_status v); + + /* BINARY */ + string get_binary(); + void set_binary(string v); + + /* TEXT */ + string get_text(); + void set_text(string v); + + /* DURATION */ + struct icaldurationtype get_duration(); + void set_duration(struct icaldurationtype v); + + /* INTEGER */ + int get_integer(); + void set_integer(int v); + + /* URI */ + string get_uri(); + void set_uri(string v); + + /* ATTACH */ + icalattach *get_attach(); + void set_attach(icalattach *v); + + /* CLASS */ + enum icalproperty_class get_class(); + void set_class(enum icalproperty_class v); + + /* FLOAT */ + float get_float(); + void set_float(float v); + + /* QUERY */ + string get_query(); + void set_query(string v); + + /* STRING */ + string get_string(); + void set_string(string v); + + /* TRANSP */ + enum icalproperty_transp get_transp(); + void set_transp(enum icalproperty_transp v); + + /* DATE-TIME */ + struct icaltimetype get_datetime(); + void set_datetime(struct icaltimetype v); + + /* GEO */ + struct icalgeotype get_geo(); + void set_geo(struct icalgeotype v); + + /* DATE */ + struct icaltimetype get_date(); + void set_date(struct icaltimetype v); + + /* ACTION */ + enum icalproperty_action get_action(); + void set_action(enum icalproperty_action v); + +private: + icalvalue* imp; +}; + + +typedef ICPointerHolder ICalValueTmpPtr; /* see icptrholder.h for comments */ + +#endif /*ICALVALUE_H*/ diff --git a/mozilla/calendar/libical/src/libical/icalvalueimpl.h b/mozilla/calendar/libical/src/libical/icalvalueimpl.h new file mode 100644 index 00000000000..3f7f77648ef --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icalvalueimpl.h @@ -0,0 +1,95 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalvalue.c + CREATOR: eric 02 May 1999 + + $Id: icalvalueimpl.h,v 1.5 2002/05/28 14:08:00 acampi Exp $ + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The original code is icalvalue.c + + Contributions from: + Graham Davison (g.m.davison@computer.org) + + +======================================================================*/ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#ifndef ICALVALUEIMPL_H +#define ICALVALUEIMPL_H + +#include "icalenums.h" +#include "icalproperty.h" +#include "icalderivedvalue.h" + + +struct icalvalue_impl { + icalvalue_kind kind; /*this is the kind that is visible from the outside*/ + + char id[5]; + int size; + icalproperty* parent; + char* x_value; + + union data { + icalattach *v_attach; + /* void *v_binary; */ /* use v_attach */ + const char *v_string; + /*char *v_text;*/ + /*char *v_caladdress;*/ + /*char *v_uri;*/ + float v_float; + int v_int; + /*int v_boolean;*/ + /*int v_integer;*/ + struct icaldurationtype v_duration; + /*int v_utcoffset;*/ + + struct icalperiodtype v_period; + /*struct icalperiodtype v_datetimeperiod;*/ + struct icalgeotype v_geo; + /*time_t v_time;*/ + struct icaltimetype v_time; + /*struct icaltimetype v_date;*/ + /*struct icaltimetype v_datetime;*/ + /*struct icaltimetype v_datetimedate;*/ + + struct icalreqstattype v_requeststatus; + + /* struct icalrecurrencetype was once included + directly ( not referenced ) in this union, but it + contributes 2000 bytes to every value, so now it is + a reference*/ + + struct icalrecurrencetype *v_recur; + struct icaltriggertype v_trigger; + + int v_enum; + /* v_enum takes care of several enumerated types including: + icalproperty_method v_method; + icalproperty_status v_status; + icalproperty_action v_action; + icalproperty_class v_class; + icalproperty_transp v_transp; + */ + + } data; +}; + +#endif diff --git a/mozilla/calendar/libical/src/libical/icalversion.h.in b/mozilla/calendar/libical/src/libical/icalversion.h.in new file mode 100644 index 00000000000..5d213693e59 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icalversion.h.in @@ -0,0 +1,7 @@ +#ifndef ICAL_VERSION_H +#define ICAL_VERSION_H + +#define ICAL_PACKAGE "@PACKAGE@" +#define ICAL_VERSION "@VERSION@" + +#endif diff --git a/mozilla/calendar/libical/src/libical/icptrholder.h b/mozilla/calendar/libical/src/libical/icptrholder.h new file mode 100644 index 00000000000..4161604951d --- /dev/null +++ b/mozilla/calendar/libical/src/libical/icptrholder.h @@ -0,0 +1,93 @@ +/* -*- Mode: C++ -*- */ + +/** + * @file icptrholder.h + * @author wyau (08/29/02) + * @brief C++ template classes for managing C++ pointers returned by VComponent::get_..._component, + * VComponent::get_..._property, ICalPropety::get_..._value. + * @remarks VComponent::get... functions returns a C++ oject that wraps the libical implementation. + * It is important to note that the wrapped implementation still belongs to the orginal + * component. To stop memory leak, caller must delete the pointer. However, the destructor + * will call the appropriate free function. eg. ~VComponent calls icalcomponent_free(imp). + * As stated previously, imp stil belongs to the original component. To avoid freeing the + * wrapped "imp", caller must set the "imp" to null before deleting the pointer. + * + * The template class relieves the burden of memory management when used as a stack based + * object. The class holds a pointer to the C++ Wrapper. The destructor set the imp to + * null before deleting the pointer. + * + * Each C++ Wrapper instantiates a template class in it's corresponding .h file. + * + * Usage example: + * VComponentTmpPtr p; // VComponentTmpPtr is an instantiation of this template + * for (p=component.get_first_component; p!= NULL; p=component.get_next_component) { + * + * (C) COPYRIGHT 2001, Critical Path + */ + +#ifndef __ICPTRHOLDER_H__ +#define __ICPTRHOLDER_H__ + +template class ICPointerHolder { +public: + ICPointerHolder() { ptr = NULL; } + ICPointerHolder(T* p) { ptr = p; } + + // copy constructor to support assignment + ICPointerHolder(const ICPointerHolder& ip) { + ptr = ip.ptr; + + // We need to transfer ownership of ptr to this object by setting + // ip's ptr to null. Otherwise, ptr will de deleted twice. + // const ugliness requires us to do the const_cast. + ICPointerHolder *ipp = const_cast(&ip); + ipp->ptr = NULL; + }; + + ~ICPointerHolder() { + release(); + } + + ICPointerHolder& operator=(T* p) { + this->release(); + ptr = p; + return *this; + } + + ICPointerHolder& operator=(ICPointerHolder& p) { + this->release(); + ptr = p.ptr; // this transfer ownership of the pointer + p.ptr = NULL; // set it to null so the pointer won't get delete twice. + return *this; + } + + int operator!=(T* p) {return (ptr != p);} + int operator==(T* p) {return (ptr == p);} + + operator T*() const { + return ptr; + } + + T* operator->() const { + assert(ptr); + return ptr; + } + + T& operator*() { + assert(ptr); + return *ptr; + } + +private: + void release() { + if (ptr != NULL) { + ptr->detach(); + delete ptr; + ptr = NULL; + } + } + + T* ptr; +}; + +#endif diff --git a/mozilla/calendar/libical/src/libical/libical.dsp b/mozilla/calendar/libical/src/libical/libical.dsp new file mode 100644 index 00000000000..c14ba958605 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/libical.dsp @@ -0,0 +1,594 @@ +# Microsoft Developer Studio Project File - Name="libical" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Static Library" 0x0104 + +CFG=libical - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "libical.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "libical.mak" CFG="libical - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "libical - Win32 Release" (based on "Win32 (x86) Static Library") +!MESSAGE "libical - Win32 Debug" (based on "Win32 (x86) Static Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "libical - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I "./autogenex" /I "./" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + +!ELSEIF "$(CFG)" == "libical - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /I ".." /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /FR /YX /FD /GZ /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + +!ENDIF + +# Begin Target + +# Name "libical - Win32 Release" +# Name "libical - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\caldate.c +# End Source File +# Begin Source File + +SOURCE=.\icalarray.c +# End Source File +# Begin Source File + +SOURCE=.\icalattach.c +# End Source File +# Begin Source File + +SOURCE=icalcomponent.c +# End Source File +# Begin Source File + +SOURCE=.\icalderivedparameter.c +# End Source File +# Begin Source File + +SOURCE=icalderivedparameter.c.in + +!IF "$(CFG)" == "libical - Win32 Release" + +# PROP Ignore_Default_Tool 1 +USERDEP__ICALD="../../scripts/mkderivedparameters.pl" "../../design-data/parameters.csv" +# Begin Custom Build +InputPath=icalderivedparameter.c.in +InputName=icalderivedparameter.c + +"$(InputName)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + perl -I ../../scripts ../../scripts/mkderivedparameters.pl -i $(InputName).in -c ../../design-data/parameters.csv > $(InputName) + +# End Custom Build + +!ELSEIF "$(CFG)" == "libical - Win32 Debug" + +USERDEP__ICALD="../../scripts/mkderivedparameters.pl" "../../design-data/parameters.csv" +# Begin Custom Build +InputPath=icalderivedparameter.c.in +InputName=icalderivedparameter.c + +"$(InputName)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + perl -I ../../scripts ../../scripts/mkderivedparameters.pl -i $(InputName).in -c ../../design-data/parameters.csv > $(InputName) + +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\icalderivedproperty.c +# End Source File +# Begin Source File + +SOURCE=icalderivedproperty.c.in + +!IF "$(CFG)" == "libical - Win32 Release" + +# PROP Ignore_Default_Tool 1 +USERDEP__ICALDE="../../scripts/mkderivedproperties.pl" "../../design-data/properties.csv" "../../design-data/value-types.csv" +# Begin Custom Build +InputPath=icalderivedproperty.c.in +InputName=icalderivedproperty.c + +"$(InputName)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + perl -I ../../scripts ../../scripts/mkderivedproperties.pl -i $(InputName).in -c ../../design-data/properties.csv ../../design-data/value-types.csv > $(InputName) + +# End Custom Build + +!ELSEIF "$(CFG)" == "libical - Win32 Debug" + +USERDEP__ICALDE="../../scripts/mkderivedproperties.pl" "../../design-data/properties.csv" "../../design-data/value-types.csv" +# Begin Custom Build +InputPath=icalderivedproperty.c.in +InputName=icalderivedproperty.c + +"$(InputName)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + perl -I ../../scripts ../../scripts/mkderivedproperties.pl -i $(InputName).in -c ../../design-data/properties.csv ../../design-data/value-types.csv > $(InputName) + +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\icalderivedvalue.c +# End Source File +# Begin Source File + +SOURCE=icalderivedvalue.c.in + +!IF "$(CFG)" == "libical - Win32 Release" + +# PROP Ignore_Default_Tool 1 +USERDEP__ICALDER="../../scripts/mkderivedvalues.pl" "../../design-data/value-types.csv" +# Begin Custom Build +InputPath=icalderivedvalue.c.in +InputName=icalderivedvalue.c + +"$(InputName)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + perl -I ../../scripts ../../scripts/mkderivedvalues.pl -i $(InputName).in -c ../../design-data/value-types.csv > $(InputName) + +# End Custom Build + +!ELSEIF "$(CFG)" == "libical - Win32 Debug" + +USERDEP__ICALDER="../../scripts/mkderivedvalues.pl" "../../design-data/value-types.csv" +# Begin Custom Build +InputPath=icalderivedvalue.c.in +InputName=icalderivedvalue.c + +"$(InputName)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + perl -I ../../scripts ../../scripts/mkderivedvalues.pl -i $(InputName).in -c ../../design-data/value-types.csv > $(InputName) + +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=icalduration.c +# End Source File +# Begin Source File + +SOURCE=icalenums.c +# End Source File +# Begin Source File + +SOURCE=icalerror.c +# End Source File +# Begin Source File + +SOURCE=icallangbind.c +# End Source File +# Begin Source File + +SOURCE=icalmemory.c +# End Source File +# Begin Source File + +SOURCE=icalmime.c +# End Source File +# Begin Source File + +SOURCE=icalparameter.c +# End Source File +# Begin Source File + +SOURCE=icalparser.c +# End Source File +# Begin Source File + +SOURCE=icalperiod.c +# End Source File +# Begin Source File + +SOURCE=icalproperty.c +# End Source File +# Begin Source File + +SOURCE=icalrecur.c +# End Source File +# Begin Source File + +SOURCE=.\icalrestriction.c +# End Source File +# Begin Source File + +SOURCE=icalrestriction.c.in + +!IF "$(CFG)" == "libical - Win32 Release" + +# PROP Ignore_Default_Tool 1 +USERDEP__ICALR="../../scripts/mkrestrictiontable.pl" "../../design-data/restrictions.csv" +# Begin Custom Build +InputPath=icalrestriction.c.in +InputName=icalrestriction.c + +"$(InputName)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + perl -I ../../scripts ../../scripts/mkrestrictiontable.pl -i $(InputName).in ../../design-data/restrictions.csv > $(InputName) + +# End Custom Build + +!ELSEIF "$(CFG)" == "libical - Win32 Debug" + +# PROP Ignore_Default_Tool 1 +USERDEP__ICALR="../../scripts/mkrestrictiontable.pl" "../../design-data/restrictions.csv" +# Begin Custom Build +InputPath=icalrestriction.c.in +InputName=icalrestriction.c + +"$(InputName)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + perl -I ../../scripts ../../scripts/mkrestrictiontable.pl -i $(InputName).in ../../design-data/restrictions.csv > $(InputName) + +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=icaltime.c +# End Source File +# Begin Source File + +SOURCE=.\icaltimezone.c +# End Source File +# Begin Source File + +SOURCE=icaltypes.c +# End Source File +# Begin Source File + +SOURCE=icalvalue.c +# End Source File +# Begin Source File + +SOURCE=pvl.c +# End Source File +# Begin Source File + +SOURCE=sspm.c +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\astime.h +# End Source File +# Begin Source File + +SOURCE=.\ical.h + +!IF "$(CFG)" == "libical - Win32 Release" + +# PROP Ignore_Default_Tool 1 +USERDEP__ICAL_="icalversion.h" "icaltime.h" "icalduration.h" "icalperiod.h" "icalenums.h" "icaltypes.h" "icalrecur.h" "icalattach.h" "icalderivedvalue.h" "icalderivedparameter.h" "icalvalue.h" "icalparameter.h" "icalderivedproperty.h" "icalproperty.h" "pvl.h" "icalarray.h" "icalcomponent.h" "icaltimezone.h" "icalparser.h" "icalmemory.h" "icalerror.h" "icalrestriction.h" "sspm.h" "icalmime.h" "icallangbind.h" +# Begin Custom Build +InputPath=.\ical.h + +"ical.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + sh ../../scripts/mkinclude.sh -o ical.h -e "#include.*\"ical" -e "#include.*\"config" -e "#include.*\"pvl\.h\"" -e '\$$(Id|Locker): .+\$$' icalversion.h icaltime.h icalduration.h icalperiod.h icalenums.h icaltypes.h icalrecur.h icalattach.h icalderivedvalue.h icalderivedparameter.h icalvalue.h icalparameter.h icalderivedproperty.h icalproperty.h pvl.h icalarray.h icalcomponent.h icaltimezone.h icalparser.h icalmemory.h icalerror.h icalrestriction.h sspm.h icalmime.h icallangbind.h + +# End Custom Build + +!ELSEIF "$(CFG)" == "libical - Win32 Debug" + +USERDEP__ICAL_="icalversion.h" "icaltime.h" "icalduration.h" "icalperiod.h" "icalenums.h" "icaltypes.h" "icalrecur.h" "icalattach.h" "icalderivedvalue.h" "icalderivedparameter.h" "icalvalue.h" "icalparameter.h" "icalderivedproperty.h" "icalproperty.h" "pvl.h" "icalarray.h" "icalcomponent.h" "icaltimezone.h" "icalparser.h" "icalmemory.h" "icalerror.h" "icalrestriction.h" "sspm.h" "icalmime.h" "icallangbind.h" +# Begin Custom Build +InputPath=.\ical.h + +"ical.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + sh ../../scripts/mkinclude.sh -o ical.h -e "#include.*\"ical" -e "#include.*\"config" -e "#include.*\"pvl\.h\"" -e '\$$(Id|Locker): .+\$$' icalversion.h icaltime.h icalduration.h icalperiod.h icalenums.h icaltypes.h icalrecur.h icalattach.h icalderivedvalue.h icalderivedparameter.h icalvalue.h icalparameter.h icalderivedproperty.h icalproperty.h pvl.h icalarray.h icalcomponent.h icaltimezone.h icalparser.h icalmemory.h icalerror.h icalrestriction.h sspm.h icalmime.h icallangbind.h + +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\icalarray.h +# End Source File +# Begin Source File + +SOURCE=.\icalattach.h +# End Source File +# Begin Source File + +SOURCE=.\icalattachimpl.h +# End Source File +# Begin Source File + +SOURCE=icalcomponent.h +# End Source File +# Begin Source File + +SOURCE=.\icalderivedparameter.h +# End Source File +# Begin Source File + +SOURCE=icalderivedparameter.h.in + +!IF "$(CFG)" == "libical - Win32 Release" + +# PROP Ignore_Default_Tool 1 +USERDEP__ICALDERI="../../scripts/mkderivedparameters.pl" "../../design-data/parameters.csv" +# Begin Custom Build +InputPath=icalderivedparameter.h.in +InputName=icalderivedparameter.h + +"$(InputName)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + perl -I ../../scripts ../../scripts/mkderivedparameters.pl -i $(InputName).in -h ../../design-data/parameters.csv > $(InputName) + +# End Custom Build + +!ELSEIF "$(CFG)" == "libical - Win32 Debug" + +USERDEP__ICALDERI="../../scripts/mkderivedparameters.pl" "../../design-data/parameters.csv" +# Begin Custom Build +InputPath=icalderivedparameter.h.in +InputName=icalderivedparameter.h + +"$(InputName)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + perl -I ../../scripts ../../scripts/mkderivedparameters.pl -i $(InputName).in -h ../../design-data/parameters.csv > $(InputName) + +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\icalderivedproperty.h +# End Source File +# Begin Source File + +SOURCE=icalderivedproperty.h.in + +!IF "$(CFG)" == "libical - Win32 Release" + +# PROP Ignore_Default_Tool 1 +USERDEP__ICALDERIV="../../scripts/mkderivedproperties.pl" "../../design-data/properties.csv" "../../design-data/value-types.csv" +# Begin Custom Build +InputPath=icalderivedproperty.h.in +InputName=icalderivedproperty.h + +"$(InputName)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + perl -I ../../scripts ../../scripts/mkderivedproperties.pl -i $(InputName).in -h ../../design-data/properties.csv ../../design-data/value-types.csv > $(InputName) + +# End Custom Build + +!ELSEIF "$(CFG)" == "libical - Win32 Debug" + +USERDEP__ICALDERIV="../../scripts/mkderivedproperties.pl" "../../design-data/properties.csv" "../../design-data/value-types.csv" +# Begin Custom Build +InputPath=icalderivedproperty.h.in +InputName=icalderivedproperty.h + +"$(InputName)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + perl -I ../../scripts ../../scripts/mkderivedproperties.pl -i $(InputName).in -h ../../design-data/properties.csv ../../design-data/value-types.csv > $(InputName) + +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\icalderivedvalue.h +# End Source File +# Begin Source File + +SOURCE=icalderivedvalue.h.in + +!IF "$(CFG)" == "libical - Win32 Release" + +# PROP Ignore_Default_Tool 1 +USERDEP__ICALDERIVE="../../scripts/mkderivedvalues.pl" "../../design-data/value-types.csv" +# Begin Custom Build +InputPath=icalderivedvalue.h.in +InputName=icalderivedvalue.h + +"$(InputName)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + perl -I ../../scripts ../../scripts/mkderivedvalues.pl -i $(InputName).in -h ../../design-data/value-types.csv > $(InputName) + +# End Custom Build + +!ELSEIF "$(CFG)" == "libical - Win32 Debug" + +USERDEP__ICALDERIVE="../../scripts/mkderivedvalues.pl" "../../design-data/value-types.csv" +# Begin Custom Build +InputPath=icalderivedvalue.h.in +InputName=icalderivedvalue.h + +"$(InputName)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + perl -I ../../scripts ../../scripts/mkderivedvalues.pl -i $(InputName).in -h ../../design-data/value-types.csv > $(InputName) + +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=icalduration.h +# End Source File +# Begin Source File + +SOURCE=icalenums.h +# End Source File +# Begin Source File + +SOURCE=icalerror.h +# End Source File +# Begin Source File + +SOURCE=icallangbind.h +# End Source File +# Begin Source File + +SOURCE=icalmemory.h +# End Source File +# Begin Source File + +SOURCE=icalmime.h +# End Source File +# Begin Source File + +SOURCE=icalparameter.h +# End Source File +# Begin Source File + +SOURCE=icalparameterimpl.h +# End Source File +# Begin Source File + +SOURCE=icalparser.h +# End Source File +# Begin Source File + +SOURCE=icalperiod.h +# End Source File +# Begin Source File + +SOURCE=icalproperty.h +# End Source File +# Begin Source File + +SOURCE=icalrecur.h +# End Source File +# Begin Source File + +SOURCE=icalrestriction.h +# End Source File +# Begin Source File + +SOURCE=icaltime.h +# End Source File +# Begin Source File + +SOURCE=.\icaltimezone.h +# End Source File +# Begin Source File + +SOURCE=icaltypes.h +# End Source File +# Begin Source File + +SOURCE=icalvalue.h +# End Source File +# Begin Source File + +SOURCE=icalvalueimpl.h +# End Source File +# Begin Source File + +SOURCE=.\icalversion.h +# End Source File +# Begin Source File + +SOURCE=icalversion.h.in + +!IF "$(CFG)" == "libical - Win32 Release" + +# PROP Ignore_Default_Tool 1 +# Begin Custom Build +InputPath=icalversion.h.in +InputName=icalversion.h + +"$(InputName)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + sed -e "s/@VERSION@/0.24/g" -e "s/@PACKAGE@/libical/g" $(InputName).in > $(InputName) + +# End Custom Build + +!ELSEIF "$(CFG)" == "libical - Win32 Debug" + +# PROP Ignore_Default_Tool 1 +# Begin Custom Build +InputPath=icalversion.h.in +InputName=icalversion.h + +"$(InputName)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + sed -e "s/@VERSION@/0.24/g" -e "s/@PACKAGE@/libical/g" $(InputName).in > $(InputName) + +# End Custom Build + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=pvl.h +# End Source File +# Begin Source File + +SOURCE=sspm.h +# End Source File +# End Group +# End Target +# End Project diff --git a/mozilla/calendar/libical/src/libical/pvl.c b/mozilla/calendar/libical/src/libical/pvl.c new file mode 100644 index 00000000000..9c271ce953b --- /dev/null +++ b/mozilla/calendar/libical/src/libical/pvl.c @@ -0,0 +1,584 @@ +/*====================================================================== + FILE: pvl.c + CREATOR: eric November, 1995 + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org +======================================================================*/ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "pvl.h" +#include +#include +#include + +/** + struct pvl_list_t + + The list structure. This is the hanlde for the entire list + + This type is also private. Use pvl_list instead + + */ + +typedef struct pvl_list_t +{ + int MAGIC; /**< Magic Identifier */ + struct pvl_elem_t *head; /**< Head of list */ + struct pvl_elem_t *tail; /**< Tail of list */ + int count; /**< Number of items in the list */ + struct pvl_elem_t *p; /**< Pointer used for iterators */ +} pvl_list_t; + + + + +/** + * This global is incremented for each call to pvl_new_element(); it gives each + * list a unique identifer + */ + +int pvl_elem_count = 0; +int pvl_list_count = 0; + + +/** + * @brief Creates a new list, clears the pointers and assigns a magic number + * + * @return Pointer to the new list, 0 if there is no available memory. + */ + +pvl_list +pvl_newlist() +{ + struct pvl_list_t *L; + + if ( ( L = (struct pvl_list_t*)malloc(sizeof(struct pvl_list_t))) == 0) + { + errno = ENOMEM; + return 0; + } + + L->MAGIC = pvl_list_count; + pvl_list_count++; + L->head = 0; + L->tail = 0; + L->count = 0; + L->p = 0; + + return L; +} + +void +pvl_free(pvl_list l) +{ + struct pvl_list_t *L = (struct pvl_list_t *)l; + + pvl_clear(l); + + free(L); +} + +/** + * @brief Creates a new list element, assigns a magic number, and assigns + * the next and previous pointers. + * + * Passing in the next and previous points may seem odd, but it allos the user + * to set them while keeping the internal data hidden. In nearly all cases, + * the user is the pvl library itself. + * + * @param d The data item to be stored in the list + * @param next Pointer value to assign to the member "next" + * @param prior Pointer value to assign to the member "prior" + * + * @return A pointer to the new element, 0 if there is no memory available. + */ + +pvl_elem +pvl_new_element(void *d, pvl_elem next, pvl_elem prior) +{ + struct pvl_elem_t *E; + + if ( ( E = (struct pvl_elem_t*)malloc(sizeof(struct pvl_elem_t))) == 0) + { + errno = ENOMEM; + return 0; + } + + E->MAGIC = pvl_elem_count++; + E->d = d; + E->next = next; + E->prior = prior; + + return (pvl_elem)E; +} + +/** + * @brief Add a new element to the from of the list + * + * @param L The list to add the item to + * @param d Pointer to the item to add + */ + +void +pvl_unshift(pvl_list L,void *d) +{ + struct pvl_elem_t *E = pvl_new_element(d,L->head,0); + + if (E->next != 0) + { + /* Link the head node to it */ + E->next->prior = E; + } + + /* move the head */ + L->head = E; + + /* maybe move the tail */ + + if (L->tail == 0) + { + L->tail = E; + } + + L->count++; +} + +/** + * @brief Remove an element from the front of the list + * + * @param L The list to operate on + * + * @return the entry on the front of the list + */ + +void* +pvl_shift(pvl_list L) +{ + if (L->head == 0) + { + return 0; + } + + return pvl_remove(L,(void*)L->head); + +} + +/** + * @brief Add a new item to the tail of the list + * + * @param L The list to operate on + * @param d Pointer to the item to add + * + */ + +void +pvl_push(pvl_list L,void *d) +{ + struct pvl_elem_t *E = pvl_new_element(d,0,L->tail); + + /* These are done in pvl_new_element + E->next = 0; + E->prior = L->tail; + */ + + if (L->tail != 0) + { + L->tail->next = E; + } + + if (L->head == 0) + { + L->head = E; + } + + L->tail = E; + + L->count++; + +} + +/** + * @brief Remove an element from the tail of the list + * + * @param L The list to operate on + */ + +void* +pvl_pop(pvl_list L) +{ + if ( L->tail == 0) + { + return 0; + } + + return pvl_remove(L,(void*) L->tail);; + +} + + +/** + * Add a new item to a list that is ordered by a comparison function. + * This routine assumes that the list is properly ordered. + * + * @param L The list to operate on + * @param f Pointer to a comparison function + * @param d Pointer to data to pass to the comparison function + */ + +void +pvl_insert_ordered(pvl_list L,pvl_comparef f,void *d) +{ + struct pvl_elem_t *P; + + L->count++; + + /* Empty list, add to head */ + + if(L->head == 0) + { + pvl_unshift(L,d); + return; + } + + /* smaller than head, add to head */ + + if ( ((*f)(d,L->head->d)) <= 0) + { + pvl_unshift(L,d); + return; + } + + /* larger than tail, add to tail */ + if ( (*f)(d,L->tail->d) >= 0) + { + pvl_push(L,d); + return; + } + + + /* Search for the first element that is smaller, and add before it */ + + for (P=L->head; P != 0; P = P->next) + { + if ( (*f)(P->d,d) >= 0) + { + pvl_insert_before(L,P,d); + return; + } + } + + /* badness, choke */ +#ifndef lint + assert(0); +#endif +} + +/** + * @brief Add a new item after the referenced element. + * @param L The list to operate on + * @param P The list element to add the item after + * @param d Pointer to the item to add. + */ + +void +pvl_insert_after(pvl_list L,pvl_elem P,void *d) +{ + struct pvl_elem_t *E = 0; + + L->count++; + + if (P == 0) + { + pvl_unshift(L,d); + return; + } + + if ( P == L->tail) + { + E = pvl_new_element(d,0,P); + L->tail = E; + E->prior->next = E; + } + else + { + E = pvl_new_element(d,P->next,P); + E->next->prior = E; + E->prior->next = E; + } +} + +/** + * @brief Add an item after a referenced item + * + * @param L The list to operate on + * @param P The list element to add the item before + * @param d Pointer to the data to be added. + */ + +void +pvl_insert_before(pvl_list L,pvl_elem P,void *d) +{ + struct pvl_elem_t *E = 0; + + L->count++; + + if (P == 0) + { + pvl_unshift(L,d); + return; + } + + if ( P == L->head) + { + E = pvl_new_element(d,P,0); + E->next->prior = E; + L->head = E; + } + else + { + E = pvl_new_element(d,P,P->prior); + E->prior->next = E; + E->next->prior = E; + } +} + +/** + * @brief Remove the referenced item from the list. + * + * This routine will free the element, but not the data item that the + * element contains. + * + * @param L The list to operate on + * @param E The element to remove. + */ + +void* +pvl_remove(pvl_list L,pvl_elem E) +{ + void* data; + + if (E == L->head) + { + if (E->next != 0) + { + E->next->prior = 0; + L->head = E->next; + } else { + /* E Also points to tail -> only one element in list */ + L->tail = 0; + L->head = 0; + } + } + else if (E == L->tail) + { + if (E->prior != 0) + { + E->prior->next = 0; + L->tail = E->prior; + } else { + /* E points to the head, so it was the last element */ + /* This case should be taken care of in the previous clause */ + L->head = 0; + L->tail = 0; + } + } + else + { + E->prior->next = E->next; + E->next->prior = E->prior; + } + + + L->count--; + + data = E->d; + + E->prior = 0; + E->next = 0; + E->d = 0; + + free(E); + + return data; + +} + +/** + * @brief Return a pointer to data that satisfies a function. + * + * This routine will interate through the entire list and call the + * find function for each item. It will break and return a pointer to the + * data that causes the find function to return 1. + * + * @param l The list to operate on + * @param f Pointer to the find function + * @param v Pointer to constant data to pass into the function + * + * @return Pointer to the element that the find function found. + */ + +pvl_elem +pvl_find(pvl_list l,pvl_findf f,void* v) +{ + pvl_elem e; + + for (e=pvl_head(l); e!= 0; e = pvl_next(e)) + { + if ( (*f)(((struct pvl_elem_t *)e)->d,v) == 1) + { + /* Save this elem for a call to find_next */ + ((struct pvl_list_t *)l)->p = e; + return e; + } + } + + return 0; + +} + +/** + * @brief Like pvl_find(), but continues the search where the last find() or + * find_next() left off. + * + * @param l The list to operate on + * @param f Pointer to the find function + * @param v Pointer to constant data to pass into the function + * + * @return Pointer to the element that the find function found. + */ + +pvl_elem +pvl_find_next(pvl_list l,pvl_findf f,void* v) +{ + + pvl_elem e; + + for (e=pvl_head(l); e!= 0; e = pvl_next(e)) + { + if ( (*f)(((struct pvl_elem_t *)e)->d,v) == 1) + { + /* Save this elem for a call to find_next */ + ((struct pvl_list_t *)l)->p = e; + return e; + } + } + + return 0; + +} + +/** + * @brief Remove the all the elements in the list. The does not free + * the data items the elements hold. + */ + +void +pvl_clear(pvl_list l) +{ + pvl_elem e = pvl_head(l); + pvl_elem next; + + if (e == 0) { + return; + } + + while(e != 0) + { + next = pvl_next(e); + pvl_remove(l,e); + e = next; + } +} + + +/** + * @brief Returns the number of items in the list. + */ + +int +pvl_count(pvl_list L) +{ + return L->count; +} + + +/** + * @brief Returns a pointer to the given element + */ + +pvl_elem +pvl_next(pvl_elem E) +{ + if (E == 0){ + return 0; + } + + return (pvl_elem)E->next; +} + + +/** + * @brief Returns a pointer to the element previous to the element given. + */ + +pvl_elem +pvl_prior(pvl_elem E) +{ + return (pvl_elem)E->prior; +} + + +/** + * @brief Returns a pointer to the first item in the list. + */ + +pvl_elem +pvl_head(pvl_list L ) +{ + return (pvl_elem)L->head; +} + +/** + * @brief Returns a pointer to the last item in the list. + */ +pvl_elem +pvl_tail(pvl_list L) +{ + return (pvl_elem)L->tail; +} + +#ifndef PVL_USE_MACROS +void* +pvl_data(pvl_elem E) +{ + if ( E == 0){ + return 0; + } + + return E->d; +} +#endif + +/** + * @brief Call a function for every item in the list. + * + * @param l The list to operate on + * @param f Pointer to the function to call + * @param v Data to pass to the function on every iteration + */ + +void +pvl_apply(pvl_list l,pvl_applyf f, void *v) +{ + pvl_elem e; + + for (e=pvl_head(l); e!= 0; e = pvl_next(e)) + { + (*f)(((struct pvl_elem_t *)e)->d,v); + } + +} diff --git a/mozilla/calendar/libical/src/libical/pvl.h b/mozilla/calendar/libical/src/libical/pvl.h new file mode 100644 index 00000000000..92ec5464795 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/pvl.h @@ -0,0 +1,97 @@ +/*====================================================================== + FILE: pvl.h + CREATOR: eric November, 1995 + + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org +======================================================================*/ + + +#ifndef __PVL_H__ +#define __PVL_H__ + +typedef struct pvl_list_t* pvl_list; +typedef struct pvl_elem_t* pvl_elem; + +/** + * This type is private. Always use pvl_elem instead. The struct would + * not even appear in this header except to make code in the USE_MACROS + * blocks work + */ + +typedef struct pvl_elem_t +{ + int MAGIC; /**< Magic Identifier */ + void *d; /**< Pointer to data user is storing */ + struct pvl_elem_t *next; /**< Next element */ + struct pvl_elem_t *prior; /**< Prior element */ +} pvl_elem_t; + + + +/** + * This global is incremented for each call to pvl_new_element(); it gives each + * list a unique identifer + */ + +extern int pvl_elem_count; +extern int pvl_list_count; + +/* Create new lists or elements */ +pvl_elem pvl_new_element(void* d, pvl_elem next,pvl_elem prior); +pvl_list pvl_newlist(void); +void pvl_free(pvl_list); + +/* Add, remove, or get the head of the list */ +void pvl_unshift(pvl_list l,void *d); +void* pvl_shift(pvl_list l); +pvl_elem pvl_head(pvl_list); + +/* Add, remove or get the tail of the list */ +void pvl_push(pvl_list l,void *d); +void* pvl_pop(pvl_list l); +pvl_elem pvl_tail(pvl_list); + +/* Insert elements in random places */ +typedef int (*pvl_comparef)(void* a, void* b); /* a, b are of the data type*/ +void pvl_insert_ordered(pvl_list l,pvl_comparef f,void *d); +void pvl_insert_after(pvl_list l,pvl_elem e,void *d); +void pvl_insert_before(pvl_list l,pvl_elem e,void *d); + +/* Remove an element, or clear the entire list */ +void* pvl_remove(pvl_list,pvl_elem); /* Remove element, return data */ +void pvl_clear(pvl_list); /* Remove all elements, de-allocate all data */ + +int pvl_count(pvl_list); + +/* Navagate the list */ +pvl_elem pvl_next(pvl_elem e); +pvl_elem pvl_prior(pvl_elem e); + +/* get the data in the list */ +#ifndef PVL_USE_MACROS +void* pvl_data(pvl_elem); +#else +#define pvl_data(x) x==0 ? 0 : ((struct pvl_elem_t *)x)->d; +#endif + + +/* Find an element for which a function returns true */ +typedef int (*pvl_findf)(void* a, void* b); /*a is list elem, b is other data*/ +pvl_elem pvl_find(pvl_list l,pvl_findf f,void* v); +pvl_elem pvl_find_next(pvl_list l,pvl_findf f,void* v); + +/** + * Pass each element in the list to a function + * a is list elem, b is other data + */ +typedef void (*pvl_applyf)(void* a, void* b); +void pvl_apply(pvl_list l,pvl_applyf f, void *v); + + +#endif /* __PVL_H__ */ + + + + + diff --git a/mozilla/calendar/libical/src/libical/sspm.c b/mozilla/calendar/libical/src/libical/sspm.c new file mode 100644 index 00000000000..ffc7f7eb03f --- /dev/null +++ b/mozilla/calendar/libical/src/libical/sspm.c @@ -0,0 +1,1621 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: sspm.c Parse Mime + CREATOR: eric 25 June 2000 + + $Id: sspm.c,v 1.8 2003/11/17 22:51:53 gray-john Exp $ + $Locker: $ + + The contents of this file are subject to the Mozilla Public License + Version 1.0 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and + limitations under the License. + + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The Initial Developer of the Original Code is Eric Busboom + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + ======================================================================*/ + +#include +#include +#include "sspm.h" +#include +#include /* for tolower */ +#include /* for malloc, free */ +#include /* for strcasecmp */ + +#ifdef DMALLOC +#include "dmalloc.h" +#endif + +#ifdef WIN32 +#define snprintf _snprintf +#define strcasecmp stricmp +#endif + +#define TMP_BUF_SIZE 1024 + + +enum mime_state { + UNKNOWN_STATE, + IN_HEADER, + END_OF_HEADER, + IN_BODY, + OPENING_PART, + END_OF_PART, + TERMINAL_END_OF_PART, + END_OF_INPUT +}; + +struct mime_impl{ + struct sspm_part *parts; + size_t max_parts; + int part_no; + int level; + struct sspm_action_map *actions; + char* (*get_string)(char *s, size_t size, void* data); + void* get_string_data; + char temp[TMP_BUF_SIZE]; + enum mime_state state; +}; + +void sspm_free_header(struct sspm_header *header); +void* sspm_make_multipart_part(struct mime_impl *impl,struct sspm_header *header); +void sspm_read_header(struct mime_impl *impl,struct sspm_header *header); + +char* sspm_strdup(char* str){ + + char* s; + + s = strdup(str); + + return s; +} + + +static struct major_content_type_map +{ + enum sspm_major_type type; + char* str; + +} major_content_type_map[] = +{ + {SSPM_MULTIPART_MAJOR_TYPE,"multipart" }, + {SSPM_TEXT_MAJOR_TYPE,"text" }, + {SSPM_TEXT_MAJOR_TYPE,"text" }, + {SSPM_IMAGE_MAJOR_TYPE,"image" }, + {SSPM_AUDIO_MAJOR_TYPE,"audio" }, + {SSPM_VIDEO_MAJOR_TYPE,"video" }, + {SSPM_APPLICATION_MAJOR_TYPE,"application" }, + {SSPM_MULTIPART_MAJOR_TYPE,"multipart" }, + {SSPM_MESSAGE_MAJOR_TYPE,"message" }, + {SSPM_UNKNOWN_MAJOR_TYPE,"" }, +}; + +static struct minor_content_type_map +{ + enum sspm_minor_type type; + char* str; + +} minor_content_type_map[] = +{ + {SSPM_ANY_MINOR_TYPE,"*" }, + {SSPM_PLAIN_MINOR_TYPE,"plain" }, + {SSPM_RFC822_MINOR_TYPE,"rfc822" }, + {SSPM_DIGEST_MINOR_TYPE,"digest" }, + {SSPM_CALENDAR_MINOR_TYPE,"calendar" }, + {SSPM_MIXED_MINOR_TYPE,"mixed" }, + {SSPM_RELATED_MINOR_TYPE,"related" }, + {SSPM_ALTERNATIVE_MINOR_TYPE,"alternative" }, + {SSPM_PARALLEL_MINOR_TYPE, "parallel" }, + {SSPM_UNKNOWN_MINOR_TYPE,"" } +}; + + + +struct encoding_map { + enum sspm_encoding encoding; + char* str; +} sspm_encoding_map[] = +{ + {SSPM_NO_ENCODING,""}, + {SSPM_QUOTED_PRINTABLE_ENCODING,"quoted-printable"}, + {SSPM_8BIT_ENCODING,"8bit"}, + {SSPM_7BIT_ENCODING,"7bit"}, + {SSPM_BINARY_ENCODING,"binary"}, + {SSPM_BASE64_ENCODING,"base64"}, + {SSPM_UNKNOWN_ENCODING,""} + +}; + + +char* sspm_get_parameter(char* line, char* parameter) +{ + char *p,*s,*q; + static char name[1024]; + + /* Find where the parameter name is in the line */ + p = strstr(line,parameter); + + if( p == 0){ + return 0; + } + + /* skip over the parameter name, the '=' and any blank spaces */ + + p+=strlen(parameter); + + while(*p==' ' || *p == '='){ + p++; + } + + /*now find the next semicolon*/ + + s = strchr(p,';'); + + /* Strip of leading quote */ + q = strchr(p,'\"'); + + if(q !=0){ + p = q+1; + } + + if(s != 0){ + strncpy(name,p,(size_t)s-(size_t)p); + } else { + strcpy(name,p); + } + + /* Strip off trailing quote, if it exists */ + + q = strrchr(name,'\"'); + + if (q != 0){ + *q='\0'; + } + + return name; +} + +char* sspm_property_name(char* line) +{ + static char name[1024]; + char *c = strchr(line,':'); + + if(c != 0){ + strncpy(name,line,(size_t)c-(size_t)line); + name[(size_t)c-(size_t)line] = '\0'; + return name; + } else { + return 0; + } +} + +char* sspm_value(char* line) +{ + static char value[1024]; + + char *c,*s, *p; + + /* Find the first colon and the next semicolon */ + + c = strchr(line,':'); + s = strchr(c,';'); + + /* Skip the colon */ + c++; + + if (s == 0){ + s = c+strlen(line); + } + + for(p=value; c != s; c++){ + if(*c!=' ' && *c!='\n'){ + *(p++) = *c; + } + } + + *p='\0'; + + return value; + +} + +static char *mime_headers[] = { + "Content-Type", + "Content-Transfer-Encoding", + "Content-Disposition", + "Content-Id", + "Mime-Version", + 0 +}; + + +void* sspm_default_new_part() +{ + return 0; +} +void sspm_default_add_line(void *part, struct sspm_header *header, + char* line, size_t size) +{ +} + +void* sspm_default_end_part(void* part) +{ + return 0; +} + +void sspm_default_free_part(void *part) +{ +} + + + +struct sspm_action_map sspm_action_map[] = +{ + {SSPM_UNKNOWN_MAJOR_TYPE,SSPM_UNKNOWN_MINOR_TYPE,sspm_default_new_part,sspm_default_add_line,sspm_default_end_part,sspm_default_free_part}, +}; + +int sspm_is_mime_header(char *line) +{ + char *name = sspm_property_name(line); + int i; + + if(name == 0){ + return 0; + } + + for(i = 0; mime_headers[i] != 0; i++){ + if(strcasecmp(name, mime_headers[i]) == 0) + return 1; + } + + return 0; +} + +int sspm_is_mail_header(char* line) +{ + char *name = sspm_property_name(line); + + if (name != 0){ + return 1; + } + + return 0; + +} + +int sspm_is_blank(char* line) +{ + char *p; + char c =0; + + for(p=line; *p!=0; p++){ + if( ! (*p == ' '|| *p == '\t' || *p=='\n') ){ + c++; + } + } + + if (c==0){ + return 1; + } + + return 0; + +} + +int sspm_is_continuation_line(char* line) +{ + if (line[0] == ' '|| line[0] == '\t' ) { + return 1; + } + + return 0; +} + +int sspm_is_mime_boundary(char *line) +{ + if( line[0] == '-' && line[1] == '-') { + return 1; + } + + return 0; +} + +int sspm_is_mime_terminating_boundary(char *line) +{ + + + if (sspm_is_mime_boundary(line) && + strstr(line,"--\n")){ + return 1; + } + + return 0; +} + +enum line_type { + EMPTY, + BLANK, + MIME_HEADER, + MAIL_HEADER, + HEADER_CONTINUATION, + BOUNDARY, + TERMINATING_BOUNDARY, + UNKNOWN_TYPE +}; + + +static enum line_type get_line_type(char* line){ + + if (line == 0){ + return EMPTY; + } else if(sspm_is_blank(line)){ + return BLANK; + } else if (sspm_is_mime_header(line)){ + return MIME_HEADER; + } else if (sspm_is_mail_header(line)){ + return MAIL_HEADER; + } else if (sspm_is_continuation_line(line)){ + return HEADER_CONTINUATION; + } else if (sspm_is_mime_terminating_boundary(line)){ + return TERMINATING_BOUNDARY; + } else if (sspm_is_mime_boundary(line)) { + return BOUNDARY; + } else { + return UNKNOWN_TYPE; + } + + +} + + +static struct sspm_action_map get_action(struct mime_impl *impl, + enum sspm_major_type major, + enum sspm_minor_type minor) +{ + int i; + + /* Read caller suppled action map */ + + if (impl->actions != 0){ + for(i=0; impl->actions[i].major != SSPM_UNKNOWN_MAJOR_TYPE; i++){ + if((major == impl->actions[i].major && + minor == impl->actions[i].minor) || + (major == impl->actions[i].major && + minor == SSPM_ANY_MINOR_TYPE)){ + return impl->actions[i]; + } + } + } + + /* Else, read default action map */ + + for(i=0; sspm_action_map[i].major != SSPM_UNKNOWN_MAJOR_TYPE; i++){ + if((major == sspm_action_map[i].major && + minor == sspm_action_map[i].minor) || + (major == sspm_action_map[i].major && + minor == SSPM_ANY_MINOR_TYPE)){ + break; + } + } + + return sspm_action_map[i]; +} + + +char* sspm_lowercase(char* str) +{ + char* p = 0; + char* ret; + + if(str ==0){ + return 0; + } + + ret = sspm_strdup(str); + + for(p = ret; *p!=0; p++){ + *p = tolower(*p); + } + + return ret; +} + +enum sspm_major_type sspm_find_major_content_type(char* type) +{ + int i; + + char* ltype = sspm_lowercase(type); + + for (i=0; major_content_type_map[i].type != SSPM_UNKNOWN_MINOR_TYPE; i++){ + if(strncmp(ltype, major_content_type_map[i].str, + strlen(major_content_type_map[i].str))==0){ + free(ltype); + return major_content_type_map[i].type; + } + } + free(ltype); + return major_content_type_map[i].type; /* Should return SSPM_UNKNOWN_MINOR_TYPE */ +} + +enum sspm_minor_type sspm_find_minor_content_type(char* type) +{ + int i; + char* ltype = sspm_lowercase(type); + + char *p = strchr(ltype,'/'); + + if (p==0){ + return SSPM_UNKNOWN_MINOR_TYPE; + } + + p++; /* Skip the '/' */ + + for (i=0; minor_content_type_map[i].type != SSPM_UNKNOWN_MINOR_TYPE; i++){ + if(strncmp(p, minor_content_type_map[i].str, + strlen(minor_content_type_map[i].str))==0){ + free(ltype); + return minor_content_type_map[i].type; + } + } + + free(ltype); + return minor_content_type_map[i].type; /* Should return SSPM_UNKNOWN_MINOR_TYPE */ +} + +char* sspm_major_type_string(enum sspm_major_type type) +{ + int i; + + for (i=0; major_content_type_map[i].type != SSPM_UNKNOWN_MINOR_TYPE; + i++){ + + if(type == major_content_type_map[i].type){ + return major_content_type_map[i].str; + } + } + + return major_content_type_map[i].str; /* Should return SSPM_UNKNOWN_MINOR_TYPE */ +} + +char* sspm_minor_type_string(enum sspm_minor_type type) +{ + int i; + for (i=0; minor_content_type_map[i].type != SSPM_UNKNOWN_MINOR_TYPE; + i++){ + if(type == minor_content_type_map[i].type){ + return minor_content_type_map[i].str; + } + } + + return minor_content_type_map[i].str; /* Should return SSPM_UNKNOWN_MINOR_TYPE */ +} + + +char* sspm_encoding_string(enum sspm_encoding type) +{ + int i; + for (i=0; sspm_encoding_map[i].encoding != SSPM_UNKNOWN_ENCODING; + i++){ + if(type == sspm_encoding_map[i].encoding){ + return sspm_encoding_map[i].str; + } + } + + return sspm_encoding_map[i].str; /* Should return SSPM_UNKNOWN_MINOR_TYPE */ +} + +/* Interpret a header line and add its data to the header + structure. */ +void sspm_build_header(struct sspm_header *header, char* line) +{ + char *prop; + char *val; + + val = sspm_strdup(sspm_value(line)); + prop = sspm_strdup(sspm_property_name(line)); + + if(strcmp(prop,"Content-Type") == 0){ + + /* Create a new mime_header, fill in content-type + and possibly boundary */ + + char* boundary= sspm_get_parameter(line,"boundary"); + + header->def = 0; + header->major = sspm_find_major_content_type(val); + header->minor = sspm_find_minor_content_type(val); + + if(header->minor == SSPM_UNKNOWN_MINOR_TYPE){ + char *p = strchr(val,'/'); + + if (p != 0){ + p++; /* Skip the '/' */ + + header->minor_text = sspm_strdup(p); + } else { + /* Error, malformed content type */ + header->minor_text = sspm_strdup("unknown"); + } + } + if (boundary != 0){ + header->boundary = sspm_strdup(boundary); + } + + } else if(strcmp(prop,"Content-Transfer-Encoding")==0){ + char* encoding = sspm_value(line); + char* lencoding = sspm_lowercase(encoding); + + if(strcmp(lencoding,"base64")==0){ + header->encoding = SSPM_BASE64_ENCODING; + } else if(strcmp(lencoding,"quoted-printable")==0){ + header->encoding = SSPM_QUOTED_PRINTABLE_ENCODING; + } else if(strcmp(lencoding,"binary")==0){ + header->encoding = SSPM_BINARY_ENCODING; + } else if(strcmp(lencoding,"7bit")==0){ + header->encoding = SSPM_7BIT_ENCODING; + } else if(strcmp(lencoding,"8bit")==0){ + header->encoding = SSPM_8BIT_ENCODING; + } else { + header->encoding = SSPM_UNKNOWN_ENCODING; + } + + + free(lencoding); + + header->def = 0; + + } else if(strcmp(prop,"Content-Id")==0){ + char* cid = sspm_value(line); + header->content_id = sspm_strdup(cid); + header->def = 0; + + } + free(val); + free(prop); +} + +char* sspm_get_next_line(struct mime_impl *impl) +{ + char* s; + s = impl->get_string(impl->temp,TMP_BUF_SIZE,impl->get_string_data); + + if(s == 0){ + impl->state = END_OF_INPUT; + } + return s; +} + + +void sspm_store_part(struct mime_impl *impl, struct sspm_header header, + int level, void *part, size_t size) +{ + + impl->parts[impl->part_no].header = header; + impl->parts[impl->part_no].level = level; + impl->parts[impl->part_no].data = part; + impl->parts[impl->part_no].data_size = size; + impl->part_no++; +} + +void sspm_set_error(struct sspm_header* header, enum sspm_error error, + char* message) +{ + header->error = error; + + if(header->error_text!=0){ + free(header->error_text); + } + + header->def = 0; + + if(message != 0){ + header->error_text = sspm_strdup(message); + } else { + header->error_text = 0; + } + +} + +void* sspm_make_part(struct mime_impl *impl, + struct sspm_header *header, + struct sspm_header *parent_header, + void **end_part, + size_t *size) +{ + + /* For a single part type, read to the boundary, if there is a + boundary. Otherwise, read until the end of input. This routine + assumes that the caller has read the header and has left the input + at the first blank line */ + + char *line; + void *part; + int end = 0; + + struct sspm_action_map action = get_action( + impl, + header->major, + header->minor); + + *size = 0; + part =action.new_part(); + + impl->state = IN_BODY; + + while(end == 0 && (line = sspm_get_next_line(impl)) != 0){ + + if(sspm_is_mime_boundary(line)){ + + /* If there is a boundary, then this must be a multipart + part, so there must be a parent_header. */ + if(parent_header == 0){ + char* boundary; + end = 1; + *end_part = 0; + + sspm_set_error(header,SSPM_UNEXPECTED_BOUNDARY_ERROR,line); + + /* Read until the paired terminating boundary */ + if((boundary = (char*)malloc(strlen(line)+5)) == 0){ + fprintf(stderr,"Out of memory"); + abort(); + } + strcpy(boundary,line); + strcat(boundary,"--"); + while((line = sspm_get_next_line(impl)) != 0){ + /*printf("Error: %s\n",line);*/ + if(strcmp(boundary,line)==0){ + break; + } + } + free(boundary); + + break; + } + + if(strncmp((line+2),parent_header->boundary, + sizeof(parent_header->boundary)) == 0){ + *end_part = action.end_part(part); + + if(sspm_is_mime_boundary(line)){ + impl->state = END_OF_PART; + } else if ( sspm_is_mime_terminating_boundary(line)){ + impl->state = TERMINAL_END_OF_PART; + } + end = 1; + } else { + /* Error, this is not the correct terminating boundary*/ + + /* read and discard until we get the right boundary. */ + char* boundary; + char msg[256]; + + snprintf(msg,256, + "Expected: %s--. Got: %s", + parent_header->boundary,line); + + sspm_set_error(parent_header, + SSPM_WRONG_BOUNDARY_ERROR,msg); + + /* Read until the paired terminating boundary */ + if((boundary = (char*)malloc(strlen(line)+5)) == 0){ + fprintf(stderr,"Out of memory"); + abort(); + } + strcpy(boundary,line); + strcat(boundary,"--"); + while((line = sspm_get_next_line(impl)) != 0){ + if(strcmp(boundary,line)==0){ + break; + } + } + free(boundary); + + } + } else { + char* data=0; + char* rtrn=0; + *size = strlen(line); + + data = (char*)malloc(*size+2); + assert(data != 0); + if (header->encoding == SSPM_BASE64_ENCODING){ + rtrn = decode_base64(data,line,size); + } else if(header->encoding == SSPM_QUOTED_PRINTABLE_ENCODING){ + rtrn = decode_quoted_printable(data,line,size); + } + + if(rtrn == 0){ + strcpy(data,line); + } + + /* add a end-of-string after the data, just in case binary + data from decode64 gets passed to a tring handling + routine in add_line */ + data[*size+1]='\0'; + + action.add_line(part,header,data,*size); + + free(data); + } + } + + if (end == 0){ + /* End the part if the input is exhausted */ + *end_part = action.end_part(part); + } + + return end_part; +} + + +void* sspm_make_multipart_subpart(struct mime_impl *impl, + struct sspm_header *parent_header) +{ + struct sspm_header header; + char *line; + void* part; + size_t size; + + if(parent_header->boundary == 0){ + /* Error. Multipart headers must have a boundary*/ + + sspm_set_error(parent_header,SSPM_NO_BOUNDARY_ERROR,0); + /* read all of the reamining lines */ + while((line = sspm_get_next_line(impl)) != 0){ + } + + return 0; + } + + + /* Step 1: Read the opening boundary */ + + if(get_line_type(impl->temp) != BOUNDARY){ + while((line=sspm_get_next_line(impl)) != 0 ){ + if(sspm_is_mime_boundary(line)){ + + assert(parent_header != 0); + + /* Check if it is the right boundary */ + if(!sspm_is_mime_terminating_boundary(line) && + strncmp((line+2),parent_header->boundary, + sizeof(parent_header->boundary)) + == 0){ + /* The +2 in strncmp skips over the leading "--" */ + + break; + } else { + /* Got the wrong boundary, so read and discard + until we get the right boundary. */ + char* boundary; + char msg[256]; + + snprintf(msg,256, + "Expected: %s. Got: %s", + parent_header->boundary,line); + + sspm_set_error(parent_header, + SSPM_WRONG_BOUNDARY_ERROR,msg); + + /* Read until the paired terminating boundary */ + if((boundary = (char*)malloc(strlen(line)+5)) == 0){ + fprintf(stderr,"Out of memory"); + abort(); + } + strcpy(boundary,line); + strcat(boundary,"--"); + while((line = sspm_get_next_line(impl)) != 0){ + if(strcmp(boundary,line)==0){ + break; + } + } + free(boundary); + + return 0; + } + } + } + } + + /* Step 2: Get the part header */ + sspm_read_header(impl,&header); + + /* If the header is still listed as default, there was probably an + error */ + if(header.def == 1 && header.error != SSPM_NO_ERROR){ + sspm_set_error(&header,SSPM_NO_HEADER_ERROR,0); + return 0; + } + + if(header.error!= SSPM_NO_ERROR){ + sspm_store_part(impl,header,impl->level,0,0); + return 0; + } + + /* Step 3: read the body */ + + if(header.major == SSPM_MULTIPART_MAJOR_TYPE){ + struct sspm_header *child_header; + child_header = &(impl->parts[impl->part_no].header); + + /* Store the multipart part */ + sspm_store_part(impl,header,impl->level,0,0); + + /* now get all of the sub-parts */ + part = sspm_make_multipart_part(impl,child_header); + + if(get_line_type(impl->temp) != TERMINATING_BOUNDARY){ + + sspm_set_error(child_header,SSPM_NO_BOUNDARY_ERROR,impl->temp); + return 0; + } + + sspm_get_next_line(impl); /* Step past the terminating boundary */ + + } else { + sspm_make_part(impl, &header,parent_header,&part,&size); + + memset(&(impl->parts[impl->part_no]), 0, sizeof(struct sspm_part)); + + sspm_store_part(impl,header,impl->level,part,size); + + } + + return part; +} + +void* sspm_make_multipart_part(struct mime_impl *impl,struct sspm_header *header) +{ + void *part=0; + + /* Now descend a level into each of the children of this part */ + impl->level++; + + /* Now we are working on the CHILD */ + memset(&(impl->parts[impl->part_no]), 0, sizeof(struct sspm_part)); + + do{ + part = sspm_make_multipart_subpart(impl,header); + + if (part==0){ + /* Clean up the part in progress */ + impl->parts[impl->part_no].header.major + = SSPM_NO_MAJOR_TYPE; + impl->parts[impl->part_no].header.minor + = SSPM_NO_MINOR_TYPE; + + } + + + } while (get_line_type(impl->temp) != TERMINATING_BOUNDARY && + impl->state != END_OF_INPUT); + + impl->level--; + + return 0; +} + + +void sspm_read_header(struct mime_impl *impl,struct sspm_header *header) +{ +#define BUF_SIZE 1024 +#define MAX_HEADER_LINES 25 + + char *buf; + char header_lines[MAX_HEADER_LINES][BUF_SIZE]; /* HACK, hard limits */ + int current_line = -1; + int end = 0; + + memset(header_lines,0,sizeof(header_lines)); + memset(header,0,sizeof(struct sspm_header)); + + /* Set up default header */ + header->def = 1; + header->major = SSPM_TEXT_MAJOR_TYPE; + header->minor = SSPM_PLAIN_MINOR_TYPE; + header->error = SSPM_NO_ERROR; + header->error_text = 0; + + /* Read all of the lines into memory */ + while(end==0&& (buf=sspm_get_next_line(impl)) != 0){ + + enum line_type line_type = get_line_type(buf); + + switch(line_type){ + case BLANK: { + end = 1; + impl->state = END_OF_HEADER; + break; + } + + case MAIL_HEADER: + case MIME_HEADER: { + impl->state = IN_HEADER; + current_line++; + + assert(strlen(buf) < BUF_SIZE); + + strncpy(header_lines[current_line],buf,BUF_SIZE-1); + header_lines[current_line][BUF_SIZE-1] = '\0'; + + break; + } + + case HEADER_CONTINUATION: { + char* last_line, *end; + char *buf_start; + + if(current_line < 0){ + /* This is not really a continuation line, since + we have not see any header line yet */ + sspm_set_error(header,SSPM_MALFORMED_HEADER_ERROR,buf); + return; + } + + last_line = header_lines[current_line]; + end = (char*) ( (size_t)strlen(last_line)+ + (size_t)last_line); + + impl->state = IN_HEADER; + + + /* skip over the spaces in buf start, and remove the new + line at the end of the lat line */ + if (last_line[strlen(last_line)-1] == '\n'){ + last_line[strlen(last_line)-1] = '\0'; + } + buf_start = buf; + while(*buf_start == ' ' ||*buf_start == '\t' ){ + buf_start++; + } + + assert( strlen(buf_start) + strlen(last_line) < BUF_SIZE); + + strncat(last_line,buf_start,BUF_SIZE-strlen(last_line)-1); + + break; + } + + default: { + sspm_set_error(header,SSPM_MALFORMED_HEADER_ERROR,buf); + return; + } + } + } + + + for(current_line = 0; + current_line < MAX_HEADER_LINES && header_lines[current_line][0] != 0; + current_line++){ + + sspm_build_header(header,header_lines[current_line]); + } + + +} + +/* Root routine for parsing mime entries*/ +int sspm_parse_mime(struct sspm_part *parts, + size_t max_parts, + struct sspm_action_map *actions, + char* (*get_string)(char *s, size_t size, void* data), + void *get_string_data, + struct sspm_header *first_header + ) +{ + struct mime_impl impl; + struct sspm_header header; + void *part; + int i; + + /* Initialize all of the data */ + memset(&impl,0,sizeof(struct mime_impl)); + memset(&header,0,sizeof(struct sspm_header)); + + for(i = 0; i<(int)max_parts; i++){ + parts[i].header.major = SSPM_NO_MAJOR_TYPE; + parts[i].header.minor = SSPM_NO_MINOR_TYPE; + } + + impl.parts = parts; + impl.max_parts = max_parts; + impl.part_no = 0; + impl.actions = actions; + impl.get_string = get_string; + impl.get_string_data = get_string_data; + + /* Read the header of the message. This will be the email header, + unless first_header is specified. But ( HACK) that var is not + currently being used */ + sspm_read_header(&impl,&header); + + if(header.major == SSPM_MULTIPART_MAJOR_TYPE){ + struct sspm_header *child_header; + child_header = &(impl.parts[impl.part_no].header); + + sspm_store_part(&impl,header,impl.level,0,0); + + part = sspm_make_multipart_part(&impl,child_header); + + } else { + void *part; + size_t size; + sspm_make_part(&impl, &header, 0,&part,&size); + + memset(&(impl.parts[impl.part_no]), 0, sizeof(struct sspm_part)); + + sspm_store_part(&impl,header,impl.level,part,size); + } + + return 0; +} + +void sspm_free_parts(struct sspm_part *parts, size_t max_parts) +{ + int i; + + for(i = 0; i<(int)max_parts && parts[i].header.major != SSPM_NO_MAJOR_TYPE; + i++){ + sspm_free_header(&(parts[i].header)); + } +} + +void sspm_free_header(struct sspm_header *header) +{ + if(header->boundary!=0){ + free(header->boundary); + } + if(header->minor_text!=0){ + free(header->minor_text); + } + if(header->charset!=0){ + free(header->charset); + } + if(header->filename!=0){ + free(header->filename); + } + if(header->content_id!=0){ + free(header->content_id); + } + if(header->error_text!=0){ + free(header->error_text); + } +} + +/*********************************************************************** +The remaining code is beased on code from the mimelite distribution, +which has the following notice: + +| Authorship: +| Copyright (c) 1994 Gisle Hannemyr. +| Permission is granted to hack, make and distribute copies of this +| program as long as this copyright notice is not removed. +| Flames, bug reports, comments and improvements to: +| snail: Gisle Hannemyr, Brageveien 3A, 0452 Oslo, Norway +| email: Inet: gisle@oslonett.no + +The code is heavily modified by Eric Busboom. + +***********************************************************************/ + +char *decode_quoted_printable(char *dest, + char *src, + size_t *size) +{ + int cc; + size_t i=0; + + while (*src != 0 && i < *size) { + if (*src == '=') { + + src++; + if (!*src) { + break; + } + + /* remove soft line breaks*/ + if ((*src == '\n') || (*src == '\r')){ + src++; + if ((*src == '\n') || (*src == '\r')){ + src++; + } + continue; + } + + cc = isdigit(*src) ? (*src - '0') : (*src - 55); + cc *= 0x10; + src++; + if (!*src) { + break; + } + cc += isdigit(*src) ? (*src - '0') : (*src - 55); + + *dest = cc; + + } else { + *dest = *src; + } + + dest++; + src++; + i++; + } + + *dest = '\0'; + + *size = i; + return(dest); +} + +char *decode_base64(char *dest, + char *src, + size_t *size) +{ + int cc = 0; + char buf[4] = {0,0,0,0}; + int p = 0; + int valid_data = 0; + size_t size_out=0; + + while (*src && p<(int)*size && (cc!= -1)) { + + /* convert a character into the Base64 alphabet */ + cc = *src++; + + if ((cc >= 'A') && (cc <= 'Z')) cc = cc - 'A'; + else if ((cc >= 'a') && (cc <= 'z')) cc = cc - 'a' + 26; + else if ((cc >= '0') && (cc <= '9')) cc = cc - '0' + 52; + else if (cc == '/') cc = 63; + else if (cc == '+') cc = 62; + else cc = -1; + + assert(cc<64); + + /* If we've reached the end, fill the remaining slots in + the bucket and do a final conversion */ + if(cc== -1){ + if(valid_data == 0){ + return 0; + } + + while(p%4!=3){ + p++; + buf[p%4] = 0; + } + } else { + buf[p%4] = cc; + size_out++; + valid_data = 1; + } + + + /* When we have 4 base64 letters, convert them into three + bytes */ + if (p%4 == 3) { + *dest++ =(buf[0]<< 2)|((buf[1] & 0x30) >> 4); + *dest++ =((buf[1] & 0x0F) << 4)|((buf[2] & 0x3C) >> 2); + *dest++ =((buf[2] & 0x03) << 6)|(buf[3] & 0x3F); + + memset(buf,0,4); + } + + p++; + + } + /* Calculate the size of the converted data*/ + *size = ((int)(size_out/4))*3; + if(size_out%4 == 2) *size+=1; + if(size_out%4 == 3) *size+=2; + + return(dest); +} + + +/*********************************************************************** + + Routines to output MIME + +**********************************************************************/ + + +struct sspm_buffer { + char* buffer; + char* pos; + size_t buf_size; + int line_pos; +}; + +void sspm_append_string(struct sspm_buffer* buf, char* string); +void sspm_write_part(struct sspm_buffer *buf,struct sspm_part *part, int *part_num); + +void sspm_append_hex(struct sspm_buffer* buf, char ch) +{ + char tmp[3]; + + sprintf(tmp,"=%02X",ch); + + sspm_append_string(buf,tmp); +} + +/* a copy of icalmemory_append_char */ +void sspm_append_char(struct sspm_buffer* buf, char ch) +{ + char *new_buf; + char *new_pos; + + size_t data_length, final_length; + + data_length = (size_t)buf->pos - (size_t)buf->buffer; + + final_length = data_length + 2; + + if ( final_length > (size_t) buf->buf_size ) { + + buf->buf_size = (buf->buf_size) * 2 + final_length +1; + + new_buf = realloc(buf->buffer,buf->buf_size); + + new_pos = (void*)((size_t)new_buf + data_length); + + buf->pos = new_pos; + buf->buffer = new_buf; + } + + *(buf->pos) = ch; + buf->pos += 1; + *(buf->pos) = 0; +} +/* A copy of icalmemory_append_string */ +void sspm_append_string(struct sspm_buffer* buf, char* string) +{ + char *new_buf; + char *new_pos; + + size_t data_length, final_length, string_length; + + string_length = strlen(string); + data_length = (size_t)buf->pos - (size_t)buf->buffer; + final_length = data_length + string_length; + + if ( final_length >= (size_t) buf->buf_size) { + + + buf->buf_size = (buf->buf_size) * 2 + final_length; + + new_buf = realloc(buf->buffer,buf->buf_size); + + new_pos = (void*)((size_t)new_buf + data_length); + + buf->pos = new_pos; + buf->buffer = new_buf; + } + + strcpy(buf->pos, string); + + buf->pos += string_length; +} + + + +static int sspm_is_printable(char c) +{ + return (c >= 33) && (c <= 126) && (c != '='); + +} + + +void sspm_encode_quoted_printable(struct sspm_buffer *buf, char* data) +{ + char *p; + int lpos = 0; + + for(p = data; *p != 0; p++){ + + if(sspm_is_printable(*p)){ + /* plain characters can represent themselves */ + /* RFC2045 Rule #2 */ + sspm_append_char(buf,*p); + lpos++; + } else if ( *p == '\t' || *p == ' ' ) { + + /* For tabs and spaces, only encode if they appear at the + end of the line */ + /* RFC2045 Rule #3 */ + + char n = *(p+1); + + if( n == '\n' || n == '\r'){ + sspm_append_hex(buf,*p); + lpos += 3; + } else { + sspm_append_char(buf,*p); + lpos++; + } + + } else if( *p == '\n' || *p == '\r'){ + sspm_append_char(buf,*p); + + lpos=0; + + } else { + /* All others need to be encoded */ + sspm_append_hex(buf,*p); + lpos+=3; + } + + + /* Add line breaks */ + if (lpos > 72){ + lpos = 0; + sspm_append_string(buf,"=\n"); + } + } +} + +static char BaseTable[64] = { + 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P', + 'Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f', + 'g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v', + 'w','x','y','z','0','1','2','3','4','5','6','7','8','9','+','/' +}; + +void sspm_write_base64(struct sspm_buffer *buf, char* inbuf,int size ) +{ + + char outbuf[4]; + int i; + + outbuf[0] = outbuf[1] = outbuf[2] = outbuf[3] = 65; + + switch(size){ + + case 4: + outbuf[3] = inbuf[2] & 0x3F; + + case 3: + outbuf[2] = ((inbuf[1] & 0x0F) << 2) | ((inbuf[2] & 0xC0) >> 6); + + case 2: + outbuf[0] = (inbuf[0] & 0xFC) >> 2; + outbuf[1] = ((inbuf[0] & 0x03) << 4) | ((inbuf[1] & 0xF0) >> 4); + break; + + default: + assert(0); + } + + for(i = 0; i < 4; i++){ + + if(outbuf[i] == 65){ + sspm_append_char(buf,'='); + } else { + sspm_append_char(buf,BaseTable[(int)outbuf[i]]); + } + } +} + +void sspm_encode_base64(struct sspm_buffer *buf, char* data, size_t size) +{ + + char *p; + char inbuf[3]; + int i = 0; + int first = 1; + int lpos = 0; + + inbuf[0] = inbuf[1] = inbuf[2] = 0; + + for (p = data; *p !=0; p++){ + + if (i%3 == 0 && first == 0){ + + sspm_write_base64(buf, inbuf, 4); + lpos+=4; + + inbuf[0] = inbuf[1] = inbuf[2] = 0; + } + + assert(lpos%4 == 0); + + if (lpos == 72){ + sspm_append_string(buf,"\n"); + lpos = 0; + } + + inbuf[i%3] = *p; + + i++; + first = 0; + + } + + + /* If the inbuf was not exactly filled on the last byte, we need + to spit out the odd bytes that did get in -- either one or + two. This will result in an output of two bytes and '==' or + three bytes and '=', respectively */ + + if (i%3 == 1 && first == 0){ + sspm_write_base64(buf, inbuf, 2); + } else if (i%3 == 2 && first == 0){ + sspm_write_base64(buf, inbuf, 3); + } + +} + +void sspm_write_header(struct sspm_buffer *buf,struct sspm_header *header) +{ + + int i; + char temp[TMP_BUF_SIZE]; + char* major; + char* minor; + + /* Content-type */ + + major = sspm_major_type_string(header->major); + minor = sspm_minor_type_string(header->minor); + + if(header->minor == SSPM_UNKNOWN_MINOR_TYPE ){ + assert(header->minor_text !=0); + minor = header->minor_text; + } + + sprintf(temp,"Content-Type: %s/%s",major,minor); + + sspm_append_string(buf,temp); + + if(header->boundary != 0){ + sprintf(temp,";boundary=\"%s\"",header->boundary); + sspm_append_string(buf,temp); + } + + /* Append any content type parameters */ + if(header->content_type_params != 0){ + for(i=0; *(header->content_type_params[i])!= 0;i++){ + sprintf(temp,header->content_type_params[i]); + sspm_append_char(buf,';'); + sspm_append_string(buf,temp); + } + } + + sspm_append_char(buf,'\n'); + + /*Content-Transfer-Encoding */ + + if(header->encoding != SSPM_UNKNOWN_ENCODING && + header->encoding != SSPM_NO_ENCODING){ + sprintf(temp,"Content-Transfer-Encoding: %s\n", + sspm_encoding_string(header->encoding)); + } + + sspm_append_char(buf,'\n'); + +} + +void sspm_write_multipart_part(struct sspm_buffer *buf, + struct sspm_part *parts, + int* part_num) +{ + + int parent_level, level; + struct sspm_header *header = &(parts[*part_num].header); + /* Write the header for the multipart part */ + sspm_write_header(buf,header); + + parent_level = parts[*part_num].level; + + (*part_num)++; + + level = parts[*part_num].level; + + while(parts[*part_num].header.major != SSPM_NO_MAJOR_TYPE && + level == parent_level+1){ + + assert(header->boundary); + sspm_append_string(buf,header->boundary); + sspm_append_char(buf,'\n'); + + if (parts[*part_num].header.major == SSPM_MULTIPART_MAJOR_TYPE){ + sspm_write_multipart_part(buf,parts,part_num); + } else { + sspm_write_part(buf, &(parts[*part_num]), part_num); + } + + (*part_num)++; + level = parts[*part_num].level; + } + + sspm_append_string(buf,"\n\n--"); + sspm_append_string(buf,header->boundary); + sspm_append_string(buf,"\n"); + + (*part_num)--; /* undo last, spurious, increment */ +} + +void sspm_write_part(struct sspm_buffer *buf,struct sspm_part *part,int *part_num) +{ + + /* Write header */ + sspm_write_header(buf,&(part->header)); + + /* Write part data */ + + if(part->data == 0){ + return; + } + + if(part->header.encoding == SSPM_BASE64_ENCODING) { + assert(part->data_size != 0); + sspm_encode_base64(buf,part->data,part->data_size); + } else if(part->header.encoding == SSPM_QUOTED_PRINTABLE_ENCODING) { + sspm_encode_quoted_printable(buf,part->data); + } else { + sspm_append_string(buf,part->data); + } + + sspm_append_string(buf,"\n\n"); +} + +int sspm_write_mime(struct sspm_part *parts,size_t num_parts, + char **output_string, char* header) +{ + struct sspm_buffer buf; + int part_num =0; + + buf.buffer = malloc(4096); + buf.pos = buf.buffer; + buf.buf_size = 10; + buf.line_pos = 0; + + /* write caller's header */ + if(header != 0){ + sspm_append_string(&buf,header); + } + + if(buf.buffer[strlen(buf.buffer)-1] != '\n'){ + sspm_append_char(&buf,'\n'); + } + + /* write mime-version header */ + sspm_append_string(&buf,"Mime-Version: 1.0\n"); + + /* End of header */ + + /* Write body parts */ + while(parts[part_num].header.major != SSPM_NO_MAJOR_TYPE){ + if (parts[part_num].header.major == SSPM_MULTIPART_MAJOR_TYPE){ + sspm_write_multipart_part(&buf,parts,&part_num); + } else { + sspm_write_part(&buf, &(parts[part_num]), &part_num); + } + + part_num++; + } + + + *output_string = buf.buffer; + + return 0; +} + diff --git a/mozilla/calendar/libical/src/libical/sspm.h b/mozilla/calendar/libical/src/libical/sspm.h new file mode 100644 index 00000000000..481f9fb3b2e --- /dev/null +++ b/mozilla/calendar/libical/src/libical/sspm.h @@ -0,0 +1,143 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: sspm.h Mime Parser + CREATOR: eric 25 June 2000 + + $Id: sspm.h,v 1.2 2001/01/23 07:03:17 ebusboom Exp $ + $Locker: $ + + The contents of this file are subject to the Mozilla Public License + Version 1.0 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and + limitations under the License. + + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The Initial Developer of the Original Code is Eric Busboom + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + ======================================================================*/ + +#ifndef SSPM_H +#define SSPM_H + +enum sspm_major_type { + SSPM_NO_MAJOR_TYPE, + SSPM_TEXT_MAJOR_TYPE, + SSPM_IMAGE_MAJOR_TYPE, + SSPM_AUDIO_MAJOR_TYPE, + SSPM_VIDEO_MAJOR_TYPE, + SSPM_APPLICATION_MAJOR_TYPE, + SSPM_MULTIPART_MAJOR_TYPE, + SSPM_MESSAGE_MAJOR_TYPE, + SSPM_UNKNOWN_MAJOR_TYPE +}; + +enum sspm_minor_type { + SSPM_NO_MINOR_TYPE, + SSPM_ANY_MINOR_TYPE, + SSPM_PLAIN_MINOR_TYPE, + SSPM_RFC822_MINOR_TYPE, + SSPM_DIGEST_MINOR_TYPE, + SSPM_CALENDAR_MINOR_TYPE, + SSPM_MIXED_MINOR_TYPE, + SSPM_RELATED_MINOR_TYPE, + SSPM_ALTERNATIVE_MINOR_TYPE, + SSPM_PARALLEL_MINOR_TYPE, + SSPM_UNKNOWN_MINOR_TYPE +}; + +enum sspm_encoding { + SSPM_NO_ENCODING, + SSPM_QUOTED_PRINTABLE_ENCODING, + SSPM_8BIT_ENCODING, + SSPM_7BIT_ENCODING, + SSPM_BINARY_ENCODING, + SSPM_BASE64_ENCODING, + SSPM_UNKNOWN_ENCODING +}; + +enum sspm_error{ + SSPM_NO_ERROR, + SSPM_UNEXPECTED_BOUNDARY_ERROR, + SSPM_WRONG_BOUNDARY_ERROR, + SSPM_NO_BOUNDARY_ERROR, + SSPM_NO_HEADER_ERROR, + SSPM_MALFORMED_HEADER_ERROR +}; + + +struct sspm_header +{ + int def; + char* boundary; + enum sspm_major_type major; + enum sspm_minor_type minor; + char *minor_text; + char ** content_type_params; + char* charset; + enum sspm_encoding encoding; + char* filename; + char* content_id; + enum sspm_error error; + char* error_text; +}; + +struct sspm_part { + struct sspm_header header; + int level; + size_t data_size; + void *data; +}; + +struct sspm_action_map { + enum sspm_major_type major; + enum sspm_minor_type minor; + void* (*new_part)(); + void (*add_line)(void *part, struct sspm_header *header, + char* line, size_t size); + void* (*end_part)(void* part); + void (*free_part)(void *part); +}; + +char* sspm_major_type_string(enum sspm_major_type type); +char* sspm_minor_type_string(enum sspm_minor_type type); +char* sspm_encoding_string(enum sspm_encoding type); + +int sspm_parse_mime(struct sspm_part *parts, + size_t max_parts, + struct sspm_action_map *actions, + char* (*get_string)(char *s, size_t size, void* data), + void *get_string_data, + struct sspm_header *first_header + ); + +void sspm_free_parts(struct sspm_part *parts, size_t max_parts); + +char *decode_quoted_printable(char *dest, + char *src, + size_t *size); +char *decode_base64(char *dest, + char *src, + size_t *size); + + +int sspm_write_mime(struct sspm_part *parts,size_t num_parts, + char **output_string, char* header); + +#endif /*SSPM_H*/ diff --git a/mozilla/calendar/libical/src/libical/vcomponent.cpp b/mozilla/calendar/libical/src/libical/vcomponent.cpp new file mode 100644 index 00000000000..27ea61a7f85 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/vcomponent.cpp @@ -0,0 +1,817 @@ +/** + * @file vcomponent.cpp + * @author fnguyen (12/10/01) + * @brief Implemenation of C++ Wrapper for icalcomponent.c + * + * (C) COPYRIGHT 2001, Critical Path + */ + +#ifndef VCOMPONENT_H +#include "vcomponent.h" +#endif + +#ifndef ICALVALUE_CXX_H +#include "icalvalue_cxx.h" +#endif + +#ifndef ICALPROPERTY_CXX_H +#include "icalproperty_cxx.h" +#endif + +#ifndef ICALPARAMETER_CXX_H +#include "icalparameter_cxx.h" +#endif +#include +#include + +#include + +VComponent::VComponent() throw(icalerrorenum) : imp(icalcomponent_new(ICAL_ANY_COMPONENT)) { +} +VComponent::VComponent(const VComponent& v) throw(icalerrorenum) { + imp = icalcomponent_new_clone(v.imp); + if (!imp) throw icalerrno; +} + +VComponent& VComponent::operator=(const VComponent& v) throw(icalerrorenum) { + if (this == &v) return *this; + + if (imp != NULL) + { + icalcomponent_free(imp); + imp = icalcomponent_new_clone(v.imp); + if (!imp) throw icalerrno; + } + + return *this; +} + +VComponent::~VComponent(){ + if (imp) + icalcomponent_free(imp); +} + +VComponent::VComponent(icalcomponent* v) throw (icalerrorenum) : imp(v){ +} + +/* char* returned is in the ring buffer. caller doesn't have to free it */ +char* VComponent::quote_ical_string(char *str){ + const char* p; + size_t buf_sz; + buf_sz = strlen(str) * 2; /* assume worse case scenarios. otherwise, we have to parse the string and count \ */ + char* out = (char*)icalmemory_new_buffer(buf_sz); /* memory is from the ring buffer */ + char* pout; + + if (out == 0){ + return 0; + } + + pout = out; + + for (p = str; *p!=0; p++){ + + if( *p == '\\'){ + *pout++ = '\\'; + } + *pout++ = *p; + + } + *pout++ = '\0'; + + return out; +} + +/** + * @brief Constructor + * + * Create a new VComponent from a string. + * + * @exception ICAL_MALFORMEDDATA_ERROR + * Catch this error if you + * + */ +VComponent::VComponent(string str) throw (icalerrorenum) { + // Fix for BUG #15647, but breaks fix for BUG #15596. Attempting a UI fix for cal-4.0. + //char* quoted_str = quote_ical_string((char *)str); + //imp = icalcomponent_new_from_string(quoted_str); + imp = icalcomponent_new_from_string(str); + + if (!imp) throw icalerrno; +} + +VComponent::VComponent(icalcomponent_kind kind) throw(icalerrorenum) { + imp = icalcomponent_new(kind); + + if (!imp) throw icalerrno; +} + + +string VComponent::as_ical_string() throw(icalerrorenum) { + char *str = icalcomponent_as_ical_string(imp); + + if (!str) throw icalerrno; + + return(str); +} + + +bool VComponent::is_valid(){ + if (imp == NULL) return false; + return (icalcomponent_is_valid(imp) ? true : false); +} + +icalcomponent_kind VComponent::isa(){ + return icalcomponent_isa(imp); +} + +int VComponent::isa_component(void* component){ + return icalcomponent_isa_component(component); +} + +void VComponent::new_from_string(string str){ + if (imp != NULL) icalcomponent_free(imp); + imp = icalcomponent_new_from_string(str); +} + +/* Working with properties */ +void VComponent::add_property(ICalProperty* property){ + icalcomponent_add_property(imp, *property); +} +void VComponent::remove_property(ICalProperty* property){ + icalcomponent_remove_property(imp, *property); + icalproperty_free(*property); + property->detach(); // set imp to null, it's free already. +} +int VComponent::count_properties(icalproperty_kind kind){ + return icalcomponent_count_properties(imp, kind); +} + +/* Iterate through the properties */ +ICalProperty* VComponent::get_current_property(){ + icalproperty* t = icalcomponent_get_current_property(imp); + return ((t != NULL) ? new ICalProperty(t) : NULL); +} + +ICalProperty* VComponent::get_first_property(icalproperty_kind kind){ + icalproperty* t = icalcomponent_get_first_property(imp, kind); + return ((t != NULL) ? new ICalProperty(t) : NULL); +} + +ICalProperty* VComponent::get_next_property(icalproperty_kind kind){ + icalproperty* t = icalcomponent_get_next_property(imp, kind); + return ((t != NULL) ? new ICalProperty(t) : NULL); +} + +/* Working with components */ +/* Return the first VEVENT, VTODO or VJOURNAL sub-component if it is one of those types */ +VComponent* VComponent::get_inner(){ + return new VComponent(icalcomponent_get_inner(imp)); +} + +void VComponent::add_component(VComponent* child){ + icalcomponent_add_component(imp, *child); +} +void VComponent::remove_component(VComponent* child){ + icalcomponent_remove_component(imp, *child); +} +int VComponent::count_components(icalcomponent_kind kind){ + return icalcomponent_count_components(imp, kind); +} + +/* Iteration Routines. There are two forms of iterators, internal and + external. The internal ones came first, and are almost completely + sufficient, but they fail badly when you want to construct a loop that + removes components from the container. +*/ + +/* Iterate through components */ +VComponent* VComponent::get_current_component(){ + icalcomponent* t = icalcomponent_get_current_component(imp); + return ((t != NULL) ? new VComponent(t) : NULL); +} +VComponent* VComponent::get_first_component(icalcomponent_kind kind){ + VComponent* result = NULL; + icalcomponent* t = icalcomponent_get_first_component(imp, kind); + if (t != NULL) { + switch (kind) { + case ICAL_VALARM_COMPONENT: + result = new VAlarm(t); + break; + case ICAL_VCALENDAR_COMPONENT: + result = new VCalendar(t); + break; + case ICAL_VEVENT_COMPONENT: + result = new VEvent(t); + break; + case ICAL_VQUERY_COMPONENT: + result = new VQuery(t); + break; + case ICAL_VTODO_COMPONENT: + result = new VToDo(t); + break; + case ICAL_VAGENDA_COMPONENT: + result = new VAgenda(t); + break; + default: + result = new VComponent(t); + } + } + + return (result); +} +VComponent* VComponent::get_next_component(icalcomponent_kind kind){ + VComponent* result = NULL; + icalcomponent* t = icalcomponent_get_next_component(imp, kind); + if (t != NULL) { + switch (kind) { + case ICAL_VALARM_COMPONENT: + result = new VAlarm(t); + break; + case ICAL_VCALENDAR_COMPONENT: + result = new VCalendar(t); + break; + case ICAL_VEVENT_COMPONENT: + result = new VEvent(t); + break; + case ICAL_VQUERY_COMPONENT: + result = new VQuery(t); + break; + case ICAL_VTODO_COMPONENT: + result = new VToDo(t); + break; + case ICAL_VAGENDA_COMPONENT: + result = new VAgenda(t); + break; + default: + result = new VComponent(t); + } + } + + return (result); +} + +/* Using external iterators */ +icalcompiter VComponent::begin_component(icalcomponent_kind kind){ + return icalcomponent_begin_component(imp, kind); +} +icalcompiter VComponent::end_component(icalcomponent_kind kind){ + return icalcomponent_end_component(imp, kind); +} +VComponent* VComponent::next(icalcompiter* i){ + return (VComponent*)icalcompiter_next(i); +} +VComponent* VComponent::prev(icalcompiter* i){ + return (VComponent*)icalcompiter_prior(i); +} +VComponent* VComponent::current(icalcompiter* i){ + return (VComponent*)icalcompiter_deref(i); +} + +/* Working with embedded error properties */ +int VComponent::count_errors(){ + return icalcomponent_count_errors(imp); +} + +/* Remove all X-LIC-ERROR properties*/ +void VComponent::strip_errors(){ + icalcomponent_strip_errors(imp); +} + +/* Convert some X-LIC-ERROR properties into RETURN-STATUS properties*/ +void VComponent::convert_errors(){ + icalcomponent_convert_errors(imp); +} + +/* Kind conversion routines */ +icalcomponent_kind VComponent::string_to_kind(string str){ + return icalcomponent_string_to_kind(str); +} +string VComponent::kind_to_string(icalcomponent_kind kind){ + return (string)icalcomponent_kind_to_string(kind); +} + +struct icaltimetype VComponent::get_dtstart(){ + return icalcomponent_get_dtstart(imp); +} +void VComponent::set_dtstart(struct icaltimetype v){ + icalcomponent_set_dtstart(imp, v); +} + +/* For the icalcomponent routines only, dtend and duration are tied + together. If you call the set routine for one and the other exists, + the routine will calculate the change to the other. That is, if + there is a DTEND and you call set_duration, the routine will modify + DTEND to be the sum of DTSTART and the duration. If you call a get + routine for one and the other exists, the routine will calculate + the return value. If you call a set routine and neither exists, the + routine will create the apcompriate comperty. +*/ + +struct icaltimetype VComponent::get_dtend(){ + return icalcomponent_get_dtend(imp); +} + +void VComponent::set_dtend(struct icaltimetype v){ + icalcomponent_set_dtend(imp, v); +} + +struct icaltimetype VComponent::get_due(){ + return icalcomponent_get_due(imp); +} +void VComponent::set_due(struct icaltimetype v){ + icalcomponent_set_due(imp, v); +} + +struct icaldurationtype VComponent::get_duration(){ + return icalcomponent_get_duration(imp); +} +void VComponent::set_duration(struct icaldurationtype v){ + icalcomponent_set_duration(imp, v); +} + +icalproperty_method VComponent::get_method(){ + return icalcomponent_get_method(imp); +} +void VComponent::set_method(icalproperty_method method){ + icalcomponent_set_method(imp, method); +} + +struct icaltimetype VComponent::get_dtstamp(){ + return icalcomponent_get_dtstamp(imp); +} +void VComponent::set_dtstamp(struct icaltimetype v){ + icalcomponent_set_dtstamp(imp, v); +} + +string VComponent::get_summary(){ + return (string)icalcomponent_get_summary(imp); +} +void VComponent::set_summary(string v){ + icalcomponent_set_summary(imp, v); +} + +string VComponent::get_location(){ + return (string)icalcomponent_get_location(imp); +} +void VComponent::set_location(string v){ + icalcomponent_set_location(imp, v); +} + + +string VComponent::get_description(){ + return (string)icalcomponent_get_description(imp); +} +void VComponent::set_description(string v){ + icalcomponent_set_description(imp, v); +} +string VComponent::get_comment(){ + return (string)icalcomponent_get_comment(imp); +} +void VComponent::set_comment(string v){ + icalcomponent_set_comment(imp, v); +} + +string VComponent::get_uid(){ + return (string)icalcomponent_get_uid(imp); +} +void VComponent::set_uid(string v){ + icalcomponent_set_uid(imp, v); +} + +string VComponent::get_relcalid(){ + return (string)icalcomponent_get_relcalid(imp); +} +void VComponent::set_relcalid(string v){ + icalcomponent_set_relcalid(imp, v); +} + +struct icaltimetype VComponent::get_recurrenceid(){ + return icalcomponent_get_recurrenceid(imp); +} +void VComponent::set_recurrenceid(struct icaltimetype v){ + icalcomponent_set_recurrenceid(imp, v); +} + +int VComponent::get_sequence(){ + return (int)icalcomponent_get_sequence(imp); +} +void VComponent::set_sequence(int v){ + icalcomponent_set_sequence(imp, v); +} + +int VComponent::get_status(){ + return (int)icalcomponent_get_status(imp); +} +void VComponent::set_status(int v){ + icalcomponent_set_status(imp, v); +} + +/* For VCOMPONENT: Return a reference to the first VEVENT, VTODO, or VJOURNAL */ +VComponent* VComponent::get_first_real_component(){ + return (VComponent*)icalcomponent_get_first_real_component(imp); +} + +/* For VEVENT, VTODO, VJOURNAL and VTIMEZONE: report the start and end + times of an event in UTC */ +struct icaltime_span VComponent::get_span(){ + return icalcomponent_get_span(imp); +} + +int VComponent::recurrence_is_excluded( struct icaltimetype *dtstart, + struct icaltimetype *recurtime){ + return icalproperty_recurrence_is_excluded(imp, dtstart, recurtime); +} + + +/* Internal operations. They are private, and you should not be using them. */ +VComponent* VComponent::get_parent() { + return new VComponent(icalcomponent_get_parent(imp)); +} +void VComponent::set_parent(VComponent *parent){ + icalcomponent_set_parent(imp, *parent); +} + +/* ignoreValue means remove properties even if the data doesn't match */ +bool VComponent::remove(VComponent& fromVC, bool ignoreValue){ + + /* the two components must be the same kind */ + if (this->isa() != fromVC.isa()) return false; + + /* properties first */ + ICalPropertyTmpPtr propToBeRemoved; + for (propToBeRemoved=fromVC.get_first_property(ICAL_ANY_PROPERTY); propToBeRemoved != NULL; + propToBeRemoved=fromVC.get_next_property(ICAL_ANY_PROPERTY)) { + + /* loop through properties from this component */ + ICalPropertyTmpPtr next; + ICalPropertyTmpPtr p; + for (p=this->get_first_property(propToBeRemoved->isa()); p != NULL; p=next) { + next = this->get_next_property(propToBeRemoved->isa()); + if (ignoreValue) + this->remove_property(p); + else { + if (*p == *propToBeRemoved) { + this->remove_property(p); + break; + } + } + } + } + + /* components next - should remove by UID */ + VComponentTmpPtr comp; + for (comp=fromVC.get_first_component(ICAL_ANY_COMPONENT); comp != NULL; + comp=fromVC.get_next_component(ICAL_ANY_COMPONENT)) { + const char* fromCompUid = comp->get_uid(); + VComponentTmpPtr c; + for (c=this->get_first_component(comp->isa()); c != NULL; + c=this->get_next_component(comp->isa())) { + const char* thisCompUid = c->get_uid(); + if (strcmp(fromCompUid, thisCompUid) == 0) { + // recursively go down the components + c->remove(*comp, ignoreValue); + // if all properties are removed and there is no sub-components, then + // remove this compoent + if ((c->count_properties(ICAL_ANY_PROPERTY) == 0) && + (c->count_components(ICAL_ANY_COMPONENT) == 0)) { + this->remove_component(c); + } + break; + } + } + } + + return true; +} +/* removeMissing == true: remove properties that are missing from fromC */ +/* todo: only change the first occurence of the property */ +/* todo: removeMissing is not implemented */ +bool VComponent::update(VComponent& fromC, bool removeMissing){ + + /* make sure they are the same kind */ + if (this->isa() != fromC.isa()) return false; + + /* property first */ + ICalPropertyTmpPtr prop; + for (prop=fromC.get_first_property(ICAL_ANY_PROPERTY); prop != NULL; + prop=fromC.get_next_property(ICAL_ANY_PROPERTY)) { + ICalPropertyTmpPtr thisProp; + thisProp = this->get_first_property(prop->isa()); + if (thisProp == NULL) { + thisProp = new ICalProperty(prop->isa()); + this->add_property(thisProp); + } + ICalValue *value = new ICalValue(*(prop->get_value())); // clone the value + thisProp->set_value(*value); + } + + /* recursively updating sub-components */ + VComponentTmpPtr comp; + for (comp=fromC.get_first_component(ICAL_ANY_COMPONENT); comp != NULL; + comp=fromC.get_next_component(ICAL_ANY_COMPONENT)) { + VComponentTmpPtr thisComp; + thisComp = this->get_first_component(comp->isa()); + if (thisComp == NULL) { + thisComp = new VComponent(comp->isa()); + this->add_component(thisComp); + } + bool err = thisComp->update(*comp, removeMissing); + if (!err) return false; + } + return true; +} +/* add components and property. recursively goes down child components */ +bool VComponent::add(VComponent& fromC){ + /* make sure the kind are the same */ + if (this->isa() != fromC.isa()) return false; + + /* properties first */ + ICalPropertyTmpPtr prop; + for (prop=fromC.get_first_property(ICAL_ANY_PROPERTY); prop != NULL; + prop=fromC.get_next_property(ICAL_ANY_PROPERTY)) { + /* clone another property */ + ICalProperty *p = new ICalProperty(*prop); + add_property(p); + } + + /* sub-components next */ + bool err = false; + VComponentTmpPtr comp; + for (comp=fromC.get_first_component(ICAL_ANY_COMPONENT); comp != NULL; + comp=fromC.get_next_component(ICAL_ANY_COMPONENT)) { + VComponent *c = new VComponent(comp->isa()); + err = c->add(*comp); + add_component(c); + } + + return true; +} + +VCalendar::VCalendar() : VComponent(icalcomponent_new_vcalendar()){ +} +VCalendar::VCalendar(const VCalendar& v) : VComponent(v) {} +VCalendar& VCalendar::operator=(const VCalendar& v){ + if (this == &v) return *this; + VComponent::operator=(v); + + return *this; +} +VCalendar::~VCalendar(){} + +VCalendar::VCalendar(icalcomponent* v) : VComponent(v){} +VCalendar::VCalendar(string str) : VComponent(str){} + + +/* VEvent */ + +VEvent::VEvent() : VComponent(icalcomponent_new_vevent()){} +VEvent::VEvent(const VEvent& v) : VComponent(v) {} +VEvent& VEvent::operator=(const VEvent& v){ + if (this == &v) return *this; + VComponent::operator=(v); + + return *this; +} +VEvent::~VEvent(){} + +VEvent::VEvent(icalcomponent* v) : VComponent(v){} +VEvent::VEvent(string str) : VComponent(str){} + + +/* VTodo */ + +VToDo::VToDo() : VComponent(icalcomponent_new_vtodo()){} +VToDo::VToDo(const VToDo& v) : VComponent(v) {} +VToDo& VToDo::operator=(const VToDo& v){ + if (this == &v) return *this; + VComponent::operator=(v); + + return *this; +} +VToDo::~VToDo(){} + +VToDo::VToDo(icalcomponent* v) : VComponent(v){} +VToDo::VToDo(string str) : VComponent(str){} + + +/* VAgenda */ + +VAgenda::VAgenda() : VComponent(icalcomponent_new_vagenda()){} +VAgenda::VAgenda(const VAgenda& v) : VComponent(v) {} +VAgenda& VAgenda::operator=(const VAgenda& v){ + if (this == &v) return *this; + VComponent::operator=(v); + + return *this; +} +VAgenda::~VAgenda(){} + +VAgenda::VAgenda(icalcomponent* v) : VComponent(v){} +VAgenda::VAgenda(string str) : VComponent(str){} + + +/* VQuery */ + +VQuery::VQuery() : VComponent(icalcomponent_new_vquery()){} +VQuery::VQuery(const VQuery& v) : VComponent(v) {} +VQuery& VQuery::operator=(const VQuery& v){ + if (this == &v) return *this; + VComponent::operator=(v); + + return *this; +} +VQuery::~VQuery(){} + +VQuery::VQuery(icalcomponent* v) : VComponent(v){} +VQuery::VQuery(string str) : VComponent(str){} + + +/* VJournal */ + +VJournal::VJournal() : VComponent(icalcomponent_new_vjournal()){} +VJournal::VJournal(const VJournal& v) : VComponent(v) {} +VJournal& VJournal::operator=(const VJournal& v){ + if (this == &v) return *this; + VComponent::operator=(v); + + return *this; +} +VJournal::~VJournal(){} + +VJournal::VJournal(icalcomponent* v) : VComponent(v){} +VJournal::VJournal(string str) : VComponent(str){} + + +/* VAlarm */ + +VAlarm::VAlarm() : VComponent(icalcomponent_new_valarm()){} +VAlarm::VAlarm(const VAlarm& v) : VComponent(v) {} +VAlarm& VAlarm::operator=(const VAlarm& v){ + if (this == &v) return *this; + VComponent::operator=(v); + + return *this; +} +VAlarm::~VAlarm(){} + +VAlarm::VAlarm(icalcomponent* v) : VComponent(v){} +VAlarm::VAlarm(string str) : VComponent(str){} + +icalrequeststatus +VAlarm::getTriggerTime(VComponent &c, struct icaltriggertype *tr) +{ + struct icaltimetype tt; + ICalParameter *related_param; + + ICalPropertyTmpPtr trigger_prop = this->get_first_property(ICAL_TRIGGER_PROPERTY); + + // all VALARMs must have a TRIGGER + if (trigger_prop == NULL) + return ICAL_3_1_INVPROPVAL_STATUS; + + *tr = trigger_prop->get_trigger(); + + tt = icaltime_null_time(); + + if (icaltime_is_null_time(tr->time)) { + + // relative time trigger + + // TRIGGER;RELATED=END:P5M 5 minutes after END + // TRIGGER;RELATED=START:-P15M 15 minutes before START + // get RELATED parameter + + related_param = trigger_prop->get_first_parameter(ICAL_RELATED_PARAMETER); + + if (related_param && related_param->is_valid()) { + + // get RELATED parameter value + icalparameter_related related = related_param->get_related(); + + if(related) { + switch(related) { + case ICAL_RELATED_END: + if (c.isa() == ICAL_VEVENT_COMPONENT) { + tt = c.get_dtend(); + + // If a recurrenceid exists, use that to calculate the + // dtend from the dtstart. + struct icaltimetype recur_time = c.get_recurrenceid(); + if (!(icaltime_is_null_time(recur_time))) { + struct icaldurationtype dur = icaltime_subtract(c.get_dtstart(), tt); + tt = icaltime_add(recur_time, dur); + } + } + else if (c.isa() == ICAL_VTODO_COMPONENT) { + tt = c.get_due(); + struct icaltimetype recur_time = c.get_recurrenceid(); + if (!(icaltime_is_null_time(recur_time))) { + tt = recur_time; + } + } + // @@@ TODO: if not DTEND or DUE, then DTSTART and DURATION must be present + break; + case ICAL_RELATED_START: + case ICAL_RELATED_X: + case ICAL_RELATED_NONE: + default: + tt = c.get_dtstart(); + struct icaltimetype recur_time = c.get_recurrenceid(); + if (!(icaltime_is_null_time(recur_time))) { + tt = recur_time; + } + break; + } + + } + } + else { // no RELATED explicity specified, the default is + // relative to the start of an event or to-do, rfc2445 + // if no RELATED, we are forced to use dtstart for VEVENT, + // due for VTODO to calculate trigger time. + // If a recur time exists, use that. Recur time trumps dtstart or due. + struct icaltimetype recur_time = c.get_recurrenceid(); + if (!(icaltime_is_null_time(recur_time))) { + tt = recur_time; + } + else if (c.isa() == ICAL_VEVENT_COMPONENT) + tt = c.get_dtstart(); + else if (c.isa() == ICAL_VTODO_COMPONENT) + tt = c.get_due(); + } + + // malformed? encapsulating VEVENT or VTODO MUST have DTSTART/DTEND + if(icaltime_is_null_time(tt)) + return ICAL_3_1_INVPROPVAL_STATUS;; + + // now offset using tr.duration + tr->time = icaltime_add(tt, tr->duration); + } + // else absolute time trigger + + return ICAL_2_0_SUCCESS_STATUS; +} + + +/* VFreeBusy */ + +VFreeBusy::VFreeBusy() : VComponent(icalcomponent_new_vfreebusy()){} +VFreeBusy::VFreeBusy(const VFreeBusy& v) : VComponent(v) {} +VFreeBusy& VFreeBusy::operator=(const VFreeBusy& v){ + if (this == &v) return *this; + VComponent::operator=(v); + + return *this; +} +VFreeBusy::~VFreeBusy(){} + +VFreeBusy::VFreeBusy(icalcomponent* v) : VComponent(v){} +VFreeBusy::VFreeBusy(string str) : VComponent(str){} + + +/* VTimezone */ + +VTimezone::VTimezone() : VComponent(icalcomponent_new_vtimezone()){} +VTimezone::VTimezone(const VTimezone& v) : VComponent(v) {} +VTimezone& VTimezone::operator=(const VTimezone& v){ + if (this == &v) return *this; + VComponent::operator=(v); + + return *this; +} +VTimezone::~VTimezone(){} + +VTimezone::VTimezone(icalcomponent* v) : VComponent(v){} +VTimezone::VTimezone(string str) : VComponent(str){} + + +/* XStandard */ + +XStandard::XStandard() : VComponent(icalcomponent_new_xstandard()){} +XStandard::XStandard(const XStandard& v) : VComponent(v) {} +XStandard& XStandard::operator=(const XStandard& v){ + if (this == &v) return *this; + VComponent::operator=(v); + + return *this; +} +XStandard::~XStandard(){} + +XStandard::XStandard(icalcomponent* v) : VComponent(v){} +XStandard::XStandard(string str) : VComponent(str){} + + +/* XDaylight */ + +XDaylight::XDaylight() : VComponent(icalcomponent_new_xdaylight()){} +XDaylight::XDaylight(const XDaylight& v) : VComponent(v) {} +XDaylight& XDaylight::operator=(const XDaylight& v){ + if (this == &v) return *this; + VComponent::operator=(v); + + return *this; +} +XDaylight::~XDaylight(){} + +XDaylight::XDaylight(icalcomponent* v) : VComponent(v){} +XDaylight::XDaylight(string str) : VComponent(str){} diff --git a/mozilla/calendar/libical/src/libical/vcomponent.h b/mozilla/calendar/libical/src/libical/vcomponent.h new file mode 100644 index 00000000000..fb128adc1c2 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/vcomponent.h @@ -0,0 +1,340 @@ +/* -*- Mode: C++ -*- */ + +/** + * @file vcomponent.h + * @author fnguyen (12/10/01) + * @brief C++ classes for the icalcomponent wrapper (VToDo VEvent, etc..). + * + * (C) COPYRIGHT 2001, Critical Path + */ + +#ifndef VCOMPONENT_H +#define VCOMPONENT_H + +#include "ical.h" +#include "icptrholder.h" + +typedef char* string; // Will use the string library from STL + +class ICalProperty; + +/** + * @class VComponent + * @brief A class wrapping the libical icalcomponent functions + * + * @exception icalerrorenum Any errors generated in libical are + * propogated via this exception type. + */ + +class VComponent { +public: + VComponent() throw (icalerrorenum); + VComponent(const VComponent&) throw (icalerrorenum); + VComponent& operator=(const VComponent&) throw (icalerrorenum); + virtual ~VComponent(); + + VComponent(icalcomponent* v) throw (icalerrorenum); + VComponent(string str) throw (icalerrorenum); + VComponent(icalcomponent_kind kind) throw (icalerrorenum);; + + operator icalcomponent* () { return imp; } + + void new_from_string(string str); + + // detach imp to this object. use with caution. it would cause + // memory leak if you are not careful. + void detach() { + imp = NULL; + } + +public: + string as_ical_string() throw (icalerrorenum); + bool is_valid(); + icalcomponent_kind isa(); + int isa_component(void* component); + + /// Working with properties + void add_property(ICalProperty* property); + void remove_property(ICalProperty* property); + int count_properties(icalproperty_kind kind); + + // Iterate through the properties + ICalProperty* get_current_property(); + ICalProperty* get_first_property(icalproperty_kind kind); + ICalProperty* get_next_property(icalproperty_kind kind); + + // Working with components + + /** + * Return the first VEVENT, VTODO or VJOURNAL sub-component if + * it is one of those types + */ + + VComponent* get_inner(); + + void add_component(VComponent* child); + void remove_component(VComponent* child); + int count_components(icalcomponent_kind kind); + + /** + * Iteration Routines. There are two forms of iterators, + * internal and external. The internal ones came first, and + * are almost completely sufficient, but they fail badly when + * you want to construct a loop that removes components from + * the container. + */ + + /// Iterate through components + VComponent* get_current_component(); + VComponent* get_first_component(icalcomponent_kind kind); + VComponent* get_next_component(icalcomponent_kind kind); + + /// Using external iterators + icalcompiter begin_component(icalcomponent_kind kind); + icalcompiter end_component(icalcomponent_kind kind); + VComponent* next(icalcompiter* i); + VComponent* prev(icalcompiter* i); + VComponent* current(icalcompiter* i); + + /// Working with embedded error properties + int count_errors(); + + /// Remove all X-LIC-ERROR properties + void strip_errors(); + + /// Convert some X-LIC-ERROR properties into RETURN-STATUS properties + void convert_errors(); + + /// Kind conversion routines + static icalcomponent_kind string_to_kind(string str); + static string kind_to_string(icalcomponent_kind kind); + +public: + struct icaltimetype get_dtstart(); + void set_dtstart(struct icaltimetype v); + + /** For the icalcomponent routines only, dtend and duration + * are tied together. If you call the set routine for one and + * the other exists, the routine will calculate the change to + * the other. That is, if there is a DTEND and you call + * set_duration, the routine will modify DTEND to be the sum + * of DTSTART and the duration. If you call a get routine for + * one and the other exists, the routine will calculate the + * return value. If you call a set routine and neither + * exists, the routine will create the apropriate property + */ + + struct icaltimetype get_dtend(); + void set_dtend(struct icaltimetype v); + + struct icaltimetype get_due(); + void set_due(struct icaltimetype v); + + struct icaldurationtype get_duration(); + void set_duration(struct icaldurationtype v); + + icalproperty_method get_method(); + void set_method(icalproperty_method method); + + struct icaltimetype get_dtstamp(); + void set_dtstamp(struct icaltimetype v); + + string get_summary(); + void set_summary(string v); + + string get_location(); + void set_location(string v); + + string get_description(); + void set_description(string v); + + string get_comment(); + void set_comment(string v); + + string get_uid(); + void set_uid(string v); + + string get_relcalid(); + void set_relcalid(string v); + + struct icaltimetype get_recurrenceid(); + void set_recurrenceid(struct icaltimetype v); + + int get_sequence(); + void set_sequence(int v); + + int get_status(); + void set_status(int v); + + +public: + /** + * For VCOMPONENT: Return a reference to the first VEVENT, + * VTODO, or VJOURNAL + */ + VComponent* get_first_real_component(); + + /** + * For VEVENT, VTODO, VJOURNAL and VTIMEZONE: report the + * start and end times of an event in UTC + */ + virtual struct icaltime_span get_span(); + + int recurrence_is_excluded(struct icaltimetype *dtstart, + struct icaltimetype *recurtime); + + +public: + /** + helper functions for adding/removing/updating property and + sub-components */ + + /// Note: the VComponent kind have to be the same + + bool remove(VComponent&, bool ignoreValue); + bool update(VComponent&, bool removeMissing); + bool add(VComponent&); + +private: + /* Internal operations. They are private, and you should not be using them. */ + VComponent* get_parent(); + void set_parent(VComponent *parent); + + char* quote_ical_string(char* str); + +private: + icalcomponent* imp; +}; + +class VCalendar : public VComponent { +public: + VCalendar(); + VCalendar(const VCalendar&); + VCalendar& operator=(const VCalendar&); + ~VCalendar(); + + VCalendar(icalcomponent* v); + VCalendar(string str); +}; + + +class VEvent : public VComponent { +public: + VEvent(); + VEvent(const VEvent&); + VEvent& operator=(const VEvent&); + ~VEvent(); + + VEvent(icalcomponent* v); + VEvent(string str); +}; + +class VToDo : public VComponent { +public: + VToDo(); + VToDo(const VToDo&); + VToDo& operator=(const VToDo&); + ~VToDo(); + + VToDo(icalcomponent* v); + VToDo(string str); +}; + +class VAgenda : public VComponent { +public: + VAgenda(); + VAgenda(const VAgenda&); + VAgenda& operator=(const VAgenda&); + ~VAgenda(); + + VAgenda(icalcomponent* v); + VAgenda(string str); +}; + +class VQuery : public VComponent { +public: + VQuery(); + VQuery(const VQuery&); + VQuery& operator=(const VQuery&); + ~VQuery(); + + VQuery(icalcomponent* v); + VQuery(string str); +}; + +class VJournal : public VComponent { +public: + VJournal(); + VJournal(const VJournal&); + VJournal& operator=(const VJournal&); + ~VJournal(); + + VJournal(icalcomponent* v); + VJournal(string str); +}; + +class VAlarm : public VComponent { +public: + VAlarm(); + VAlarm(const VAlarm&); + VAlarm& operator=(const VAlarm&); + ~VAlarm(); + + VAlarm(icalcomponent* v); + VAlarm(string str); + + /** + * compute the absolute trigger time for this alarm. trigger + * may be related to the containing component c. the result + * is populated in tr->time + */ + icalrequeststatus getTriggerTime(VComponent &c, struct icaltriggertype *tr); +}; + +class VFreeBusy : public VComponent { +public: + VFreeBusy(); + VFreeBusy(const VFreeBusy&); + VFreeBusy& operator=(const VFreeBusy&); + ~VFreeBusy(); + + VFreeBusy(icalcomponent* v); + VFreeBusy(string str); +}; + +class VTimezone : public VComponent { +public: + VTimezone(); + VTimezone(const VTimezone&); + VTimezone& operator=(const VTimezone&); + ~VTimezone(); + + VTimezone(icalcomponent* v); + VTimezone(string str); +}; + +class XStandard : public VComponent { +public: + XStandard(); + XStandard(const XStandard&); + XStandard& operator=(const XStandard&); + ~XStandard(); + + XStandard(icalcomponent* v); + XStandard(string str); +}; + +class XDaylight : public VComponent { +public: + XDaylight(); + XDaylight(const XDaylight&); + XDaylight& operator=(const XDaylight&); + ~XDaylight(); + + XDaylight(icalcomponent* v); + XDaylight(string str); +}; + +typedef ICPointerHolder VComponentTmpPtr; /* see icptrholder.h for comments */ + +#endif /* VComponent_H */ diff --git a/mozilla/calendar/libical/src/libical/vsnprintf.c b/mozilla/calendar/libical/src/libical/vsnprintf.c new file mode 100644 index 00000000000..982920b21c6 --- /dev/null +++ b/mozilla/calendar/libical/src/libical/vsnprintf.c @@ -0,0 +1,172 @@ +#ifndef WIN32 +#include "config.h" +#endif +#ifndef HAVE_SNPRINTF +/* + * Revision 12: http://theos.com/~deraadt/snprintf.c + * + * Copyright (c) 1997 Theo de Raadt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef WIN32 +#include +#include +#include +#endif +#include +#include +#include +#include +#if __STDC__ +#include +#include +#else +#include +#endif +#include + +#ifndef roundup +#define roundup(x, y) ((((x)+((y)-1))/(y))*(y)) +#endif + +static int pgsize; +static char *curobj; +static sigjmp_buf bail; + +#define EXTRABYTES 2 /* XXX: why 2? you don't want to know */ + +static char * +msetup(str, n) + char *str; + size_t n; +{ + char *e; + + if (n == 0) + return NULL; + if (pgsize == 0) + pgsize = getpagesize(); + curobj = (char *)malloc(n + EXTRABYTES + pgsize * 2); + if (curobj == NULL) + return NULL; + e = curobj + n + EXTRABYTES; + e = (char *)roundup((unsigned long)e, pgsize); + if (mprotect(e, pgsize, PROT_NONE) == -1) { + free(curobj); + curobj = NULL; + return NULL; + } + e = e - n - EXTRABYTES; + *e = '\0'; + return (e); +} + +static void +mcatch(int i) +{ + siglongjmp(bail, 1); +} + +static void +mcleanup(str, n, p) + char *str; + size_t n; + char *p; +{ + strncpy(str, p, n-1); + str[n-1] = '\0'; + if (mprotect((caddr_t)(p + n + EXTRABYTES), pgsize, + PROT_READ|PROT_WRITE|PROT_EXEC) == -1) + mprotect((caddr_t)(p + n + EXTRABYTES), pgsize, + PROT_READ|PROT_WRITE); + free(curobj); +} + +int +#if __STDC__ +vsnprintf(char *str, size_t n, char const *fmt, va_list ap) +#else +vsnprintf(str, n, fmt, ap) + char *str; + size_t n; + char *fmt; + char *ap; +#endif +{ + struct sigaction osa, nsa; + char *p; + int ret = n + 1; /* if we bail, indicated we overflowed */ + + memset(&nsa, 0, sizeof nsa); + nsa.sa_handler = mcatch; + sigemptyset(&nsa.sa_mask); + + p = msetup(str, n); + if (p == NULL) { + *str = '\0'; + return 0; + } + if (sigsetjmp(bail, 1) == 0) { + if (sigaction(SIGSEGV, &nsa, &osa) == -1) { + mcleanup(str, n, p); + return (0); + } + ret = vsprintf(p, fmt, ap); + } + mcleanup(str, n, p); + (void) sigaction(SIGSEGV, &osa, NULL); + return (ret); +} + +int +#if __STDC__ +snprintf(char *str, size_t n, char const *fmt, ...) +#else +snprintf(str, n, fmt, va_alist) + char *str; + size_t n; + char *fmt; + va_dcl +#endif +{ + va_list ap; +#if __STDC__ + va_start(ap, fmt); +#else + va_start(ap); +#endif + + return (vsnprintf(str, n, fmt, ap)); + va_end(ap); +} + + +#else + +/* ANSI C forbids an empty source file... */ + +static void vsnprintf_dummy_func() { + vsnprintf_dummy_func(); +} + +#endif diff --git a/mozilla/calendar/libical/src/libicalss/Makefile.am b/mozilla/calendar/libical/src/libicalss/Makefile.am new file mode 100644 index 00000000000..664de599cfd --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/Makefile.am @@ -0,0 +1,148 @@ +#====================================================================== +# FILE: Makefile.am +# CREATOR: eric +# +# $Id: Makefile.am,v 1.21 2002/11/05 14:59:22 acampi Exp $ +# +# +# (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of either: +# +# The LGPL as published by the Free Software Foundation, version +# 2.1, available at: http://www.fsf.org/copyleft/lesser.html +# +# Or: +# +# The Mozilla Public License Version 1.0. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# +# +#====================================================================== + + +AM_YFLAGS =-d -v -p ss +AM_LFLAGS = -Pss +LEX_OUTPUT_ROOT = lex.ss + +all: icalss.h + +# just to get it built +$(srcdir)/icalgauge.c: icalssyacc.h +$(srcdir)/icalsslexer.c: icalssyacc.h + + +if WITH_BDB4 +BDB_INCLUDE=-I@BDB_DIR_INCLUDE@ -DWITH_BDB4 +BDB_SOURCEFILES=icalbdbset.c icalbdbset.h icalbdbsetimpl.h +BDB_HEADERFILES=$(srcdir)/icalbdbset.h +libicalssinclude_BDBHEADERS=icalbdbset.h icalbdbsetimpl.h +BDB_LIBFILES=@BDB_DIR_LIB@/@BDB_LIB@ +else +BDB_INCLUDE= +BDB_SOURCEFILES= +BDB_HEADERFILES= +endif + +if WITH_CXX +cxx_lib=libicalss_cxx.la +cxx_headers=icalspanlist_cxx.h +else +cxx_lib= +cxx_headers= +endif + +lib_LTLIBRARIES = libicalss.la $(cxx_lib) + +INCLUDES = \ + -I$(top_srcdir)/src \ + -I$(top_builddir)/src \ + -I$(top_srcdir)/src/libical \ + -I$(top_builddir)/libical \ + $(BDB_INCLUDE) + +libicalss_la_LDFLAGS = -version-info 0:0:0 +libicalss_la_LIBADD = $(BDB_LIBFILES) + +if DEV +libicalss_la_DEVSOURCES = icalsslexer.l icalssyacc.y +else +libicalss_la_DEVSOURCES = icalsslexer.c icalssyacc.c +endif + +libicalss_la_SOURCES = \ + icalcalendar.c \ + icalcalendar.h \ + icalclassify.c \ + icalclassify.h \ + icalcluster.c \ + icalcluster.h \ + icalclusterimpl.h \ + icalgauge.c \ + icalgauge.h \ + icalgaugeimpl.h \ + icaldirset.c \ + icaldirset.h \ + icaldirsetimpl.h \ + icalfileset.c \ + icalfileset.h \ + icalfilesetimpl.h \ + icalset.c \ + icalset.h \ + icalssyacc.h \ + icalspanlist.c \ + icalspanlist.h \ + icalmessage.c \ + icalmessage.h \ + $(BDB_SOURCEFILES) \ + $(libicalss_la_DEVSOURCES) + +libicalssincludedir = $(includedir) + +COMBINEDHEADERS = \ + $(srcdir)/icalgauge.h \ + $(srcdir)/icalset.h \ + $(srcdir)/icalcluster.h \ + $(srcdir)/icalfileset.h \ + $(srcdir)/icaldirset.h \ + $(BDB_HEADERFILES) \ + $(srcdir)/icalcalendar.h \ + $(srcdir)/icalclassify.h \ + $(srcdir)/icalspanlist.h \ + $(srcdir)/icalmessage.h + + +icalss.h: $(COMBINEDHEADERS) + echo '#ifdef __cplusplus' > icalss.h + echo 'extern "C" {' >> icalss.h + echo '#endif' >> icalss.h + echo '/*' >> icalss.h + echo ' $$''Id''$$' >> icalss.h + echo '*/' >> icalss.h + cat $(COMBINEDHEADERS) \ + | egrep -v "#include.*\"ical" \ + | egrep -v "#include.*\"pvl\.h\"" \ + | egrep -v '\$$(Id|Locker): .+\$$'>> icalss.h + echo '#ifdef __cplusplus' >> icalss.h + echo '};' >> icalss.h + echo '#endif' >> icalss.h + + +if WITH_CXX +libicalss_cxx_la_SOURCES = \ + $(libicalss_la_SOURCES) \ + icalspanlist_cxx.h \ + icalspanlist_cxx.cpp + +# c++ needs ical.h auto-generated. +icalspanlist_cxx.lo: icalss.h + +endif + + +libicalssinclude_HEADERS = icalss.h icalcalendar.h icalclassify.h icalcluster.h icaldirset.h icaldirsetimpl.h icalfileset.h icalfilesetimpl.h icalgauge.h icalgaugeimpl.h icalmessage.h icalset.h icalspanlist.h icalssyacc.h $(libicalssinclude_BDBHEADERS) $(cxx_headers) + +CONFIG_CLEAN_FILES = y.output + diff --git a/mozilla/calendar/libical/src/libicalss/Makefile.in b/mozilla/calendar/libical/src/libicalss/Makefile.in new file mode 100644 index 00000000000..fba4b66a368 --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/Makefile.in @@ -0,0 +1,656 @@ +# Makefile.in generated automatically by automake 1.5 from Makefile.am. + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +#====================================================================== +# FILE: Makefile.am +# CREATOR: eric +# +# $Id: Makefile.in,v 1.5 2003/04/28 17:20:52 acampi Exp $ +# +# +# (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of either: +# +# The LGPL as published by the Free Software Foundation, version +# 2.1, available at: http://www.fsf.org/copyleft/lesser.html +# +# Or: +# +# The Mozilla Public License Version 1.0. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# +# +#====================================================================== + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_HEADER = $(INSTALL_DATA) +transform = @program_transform_name@ +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_alias = @build_alias@ +build_triplet = @build@ +host_alias = @host_alias@ +host_triplet = @host@ +target_alias = @target_alias@ +target_triplet = @target@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AWK = @AWK@ +BDB_DIR = @BDB_DIR@ +BDB_DIR_INCLUDE = @BDB_DIR_INCLUDE@ +BDB_DIR_LIB = @BDB_DIR_LIB@ +BDB_LIB = @BDB_LIB@ +BDB_VERSION = @BDB_VERSION@ +CC = @CC@ +CXX = @CXX@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +EXEEXT = @EXEEXT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +JAR = @JAR@ +JAVA = @JAVA@ +JAVAC = @JAVAC@ +JAVAH = @JAVAH@ +JAVA_PLATFORM = @JAVA_PLATFORM@ +LEX = @LEX@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +MAINT = @MAINT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PTHREAD_LIBS = @PTHREAD_LIBS@ +PY_CFLAGS = @PY_CFLAGS@ +PY_EXTRA_LIBS = @PY_EXTRA_LIBS@ +PY_LIBS = @PY_LIBS@ +PY_LIB_LOC = @PY_LIB_LOC@ +RANLIB = @RANLIB@ +RRCAP_CFLAGS = @RRCAP_CFLAGS@ +RRCAP_LIBS = @RRCAP_LIBS@ +VERSION = @VERSION@ +YACC = @YACC@ +am__include = @am__include@ +am__quote = @am__quote@ +install_sh = @install_sh@ +python_val = @python_val@ + +AM_YFLAGS = -d -v -p ss +AM_LFLAGS = -Pss +LEX_OUTPUT_ROOT = lex.ss + +@WITH_BDB4_TRUE@BDB_INCLUDE = -I@BDB_DIR_INCLUDE@ -DWITH_BDB4 +@WITH_BDB4_FALSE@BDB_INCLUDE = +@WITH_BDB4_TRUE@BDB_SOURCEFILES = icalbdbset.c icalbdbset.h icalbdbsetimpl.h +@WITH_BDB4_FALSE@BDB_SOURCEFILES = +@WITH_BDB4_TRUE@BDB_HEADERFILES = $(srcdir)/icalbdbset.h +@WITH_BDB4_FALSE@BDB_HEADERFILES = +@WITH_BDB4_TRUE@libicalssinclude_BDBHEADERS = icalbdbset.h icalbdbsetimpl.h +@WITH_BDB4_TRUE@BDB_LIBFILES = @BDB_DIR_LIB@/@BDB_LIB@ + +@WITH_CXX_TRUE@cxx_lib = libicalss_cxx.la +@WITH_CXX_FALSE@cxx_lib = +@WITH_CXX_TRUE@cxx_headers = icalspanlist_cxx.h +@WITH_CXX_FALSE@cxx_headers = + +lib_LTLIBRARIES = libicalss.la $(cxx_lib) + +INCLUDES = \ + -I$(top_srcdir)/src \ + -I$(top_builddir)/src \ + -I$(top_srcdir)/src/libical \ + -I$(top_builddir)/libical \ + $(BDB_INCLUDE) + + +libicalss_la_LDFLAGS = -version-info 0:0:0 +libicalss_la_LIBADD = $(BDB_LIBFILES) + +@DEV_TRUE@libicalss_la_DEVSOURCES = icalsslexer.l icalssyacc.y +@DEV_FALSE@libicalss_la_DEVSOURCES = icalsslexer.c icalssyacc.c + +libicalss_la_SOURCES = \ + icalcalendar.c \ + icalcalendar.h \ + icalclassify.c \ + icalclassify.h \ + icalcluster.c \ + icalcluster.h \ + icalclusterimpl.h \ + icalgauge.c \ + icalgauge.h \ + icalgaugeimpl.h \ + icaldirset.c \ + icaldirset.h \ + icaldirsetimpl.h \ + icalfileset.c \ + icalfileset.h \ + icalfilesetimpl.h \ + icalset.c \ + icalset.h \ + icalssyacc.h \ + icalspanlist.c \ + icalspanlist.h \ + icalmessage.c \ + icalmessage.h \ + $(BDB_SOURCEFILES) \ + $(libicalss_la_DEVSOURCES) + + +libicalssincludedir = $(includedir) + +COMBINEDHEADERS = \ + $(srcdir)/icalgauge.h \ + $(srcdir)/icalset.h \ + $(srcdir)/icalcluster.h \ + $(srcdir)/icalfileset.h \ + $(srcdir)/icaldirset.h \ + $(BDB_HEADERFILES) \ + $(srcdir)/icalcalendar.h \ + $(srcdir)/icalclassify.h \ + $(srcdir)/icalspanlist.h \ + $(srcdir)/icalmessage.h + + +@WITH_CXX_TRUE@libicalss_cxx_la_SOURCES = \ +@WITH_CXX_TRUE@ $(libicalss_la_SOURCES) \ +@WITH_CXX_TRUE@ icalspanlist_cxx.h \ +@WITH_CXX_TRUE@ icalspanlist_cxx.cpp + + +libicalssinclude_HEADERS = icalss.h icalcalendar.h icalclassify.h icalcluster.h icaldirset.h icaldirsetimpl.h icalfileset.h icalfilesetimpl.h icalgauge.h icalgaugeimpl.h icalmessage.h icalset.h icalspanlist.h icalssyacc.h $(libicalssinclude_BDBHEADERS) $(cxx_headers) + +CONFIG_CLEAN_FILES = y.output +subdir = src/libicalss +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +LTLIBRARIES = $(lib_LTLIBRARIES) + +@WITH_BDB4_TRUE@libicalss_la_DEPENDENCIES = +@WITH_BDB4_FALSE@libicalss_la_DEPENDENCIES = +@DEV_FALSE@@WITH_BDB4_TRUE@am_libicalss_la_OBJECTS = icalcalendar.lo \ +@DEV_FALSE@@WITH_BDB4_TRUE@ icalclassify.lo icalcluster.lo \ +@DEV_FALSE@@WITH_BDB4_TRUE@ icalgauge.lo icaldirset.lo \ +@DEV_FALSE@@WITH_BDB4_TRUE@ icalfileset.lo icalset.lo \ +@DEV_FALSE@@WITH_BDB4_TRUE@ icalspanlist.lo icalmessage.lo \ +@DEV_FALSE@@WITH_BDB4_TRUE@ icalbdbset.lo icalsslexer.lo \ +@DEV_FALSE@@WITH_BDB4_TRUE@ icalssyacc.lo +@DEV_FALSE@@WITH_BDB4_FALSE@am_libicalss_la_OBJECTS = icalcalendar.lo \ +@DEV_FALSE@@WITH_BDB4_FALSE@ icalclassify.lo icalcluster.lo \ +@DEV_FALSE@@WITH_BDB4_FALSE@ icalgauge.lo icaldirset.lo \ +@DEV_FALSE@@WITH_BDB4_FALSE@ icalfileset.lo icalset.lo \ +@DEV_FALSE@@WITH_BDB4_FALSE@ icalspanlist.lo icalmessage.lo \ +@DEV_FALSE@@WITH_BDB4_FALSE@ icalsslexer.lo icalssyacc.lo +@DEV_TRUE@@WITH_BDB4_TRUE@am_libicalss_la_OBJECTS = icalcalendar.lo \ +@DEV_TRUE@@WITH_BDB4_TRUE@ icalclassify.lo icalcluster.lo \ +@DEV_TRUE@@WITH_BDB4_TRUE@ icalgauge.lo icaldirset.lo \ +@DEV_TRUE@@WITH_BDB4_TRUE@ icalfileset.lo icalset.lo \ +@DEV_TRUE@@WITH_BDB4_TRUE@ icalspanlist.lo icalmessage.lo \ +@DEV_TRUE@@WITH_BDB4_TRUE@ icalbdbset.lo icalsslexer.lo \ +@DEV_TRUE@@WITH_BDB4_TRUE@ icalssyacc.lo +@DEV_TRUE@@WITH_BDB4_FALSE@am_libicalss_la_OBJECTS = icalcalendar.lo \ +@DEV_TRUE@@WITH_BDB4_FALSE@ icalclassify.lo icalcluster.lo \ +@DEV_TRUE@@WITH_BDB4_FALSE@ icalgauge.lo icaldirset.lo \ +@DEV_TRUE@@WITH_BDB4_FALSE@ icalfileset.lo icalset.lo \ +@DEV_TRUE@@WITH_BDB4_FALSE@ icalspanlist.lo icalmessage.lo \ +@DEV_TRUE@@WITH_BDB4_FALSE@ icalsslexer.lo icalssyacc.lo +libicalss_la_OBJECTS = $(am_libicalss_la_OBJECTS) +libicalss_cxx_la_LDFLAGS = +libicalss_cxx_la_LIBADD = +@DEV_FALSE@@WITH_BDB4_FALSE@@WITH_CXX_TRUE@am_libicalss_cxx_la_OBJECTS = \ +@DEV_FALSE@@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ icalcalendar.lo \ +@DEV_FALSE@@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ icalclassify.lo \ +@DEV_FALSE@@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ icalcluster.lo \ +@DEV_FALSE@@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ icalgauge.lo \ +@DEV_FALSE@@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ icaldirset.lo \ +@DEV_FALSE@@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ icalfileset.lo \ +@DEV_FALSE@@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ icalset.lo \ +@DEV_FALSE@@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ icalspanlist.lo \ +@DEV_FALSE@@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ icalmessage.lo \ +@DEV_FALSE@@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ icalsslexer.lo \ +@DEV_FALSE@@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ icalssyacc.lo \ +@DEV_FALSE@@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ icalspanlist_cxx.lo +@DEV_FALSE@@WITH_BDB4_FALSE@@WITH_CXX_FALSE@am_libicalss_cxx_la_OBJECTS = +@DEV_FALSE@@WITH_BDB4_TRUE@@WITH_CXX_TRUE@am_libicalss_cxx_la_OBJECTS = \ +@DEV_FALSE@@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ icalcalendar.lo \ +@DEV_FALSE@@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ icalclassify.lo \ +@DEV_FALSE@@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ icalcluster.lo \ +@DEV_FALSE@@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ icalgauge.lo \ +@DEV_FALSE@@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ icaldirset.lo \ +@DEV_FALSE@@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ icalfileset.lo \ +@DEV_FALSE@@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ icalset.lo \ +@DEV_FALSE@@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ icalspanlist.lo \ +@DEV_FALSE@@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ icalmessage.lo \ +@DEV_FALSE@@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ icalbdbset.lo \ +@DEV_FALSE@@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ icalsslexer.lo \ +@DEV_FALSE@@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ icalssyacc.lo \ +@DEV_FALSE@@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ icalspanlist_cxx.lo +@DEV_FALSE@@WITH_BDB4_TRUE@@WITH_CXX_FALSE@am_libicalss_cxx_la_OBJECTS = +@DEV_TRUE@@WITH_BDB4_FALSE@@WITH_CXX_TRUE@am_libicalss_cxx_la_OBJECTS = \ +@DEV_TRUE@@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ icalcalendar.lo \ +@DEV_TRUE@@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ icalclassify.lo \ +@DEV_TRUE@@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ icalcluster.lo \ +@DEV_TRUE@@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ icalgauge.lo \ +@DEV_TRUE@@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ icaldirset.lo \ +@DEV_TRUE@@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ icalfileset.lo \ +@DEV_TRUE@@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ icalset.lo \ +@DEV_TRUE@@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ icalspanlist.lo \ +@DEV_TRUE@@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ icalmessage.lo \ +@DEV_TRUE@@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ icalsslexer.lo \ +@DEV_TRUE@@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ icalssyacc.lo \ +@DEV_TRUE@@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ icalspanlist_cxx.lo +@DEV_TRUE@@WITH_BDB4_FALSE@@WITH_CXX_FALSE@am_libicalss_cxx_la_OBJECTS = +@DEV_TRUE@@WITH_BDB4_TRUE@@WITH_CXX_TRUE@am_libicalss_cxx_la_OBJECTS = \ +@DEV_TRUE@@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ icalcalendar.lo \ +@DEV_TRUE@@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ icalclassify.lo \ +@DEV_TRUE@@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ icalcluster.lo \ +@DEV_TRUE@@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ icalgauge.lo \ +@DEV_TRUE@@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ icaldirset.lo \ +@DEV_TRUE@@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ icalfileset.lo \ +@DEV_TRUE@@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ icalset.lo \ +@DEV_TRUE@@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ icalspanlist.lo \ +@DEV_TRUE@@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ icalmessage.lo \ +@DEV_TRUE@@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ icalbdbset.lo \ +@DEV_TRUE@@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ icalsslexer.lo \ +@DEV_TRUE@@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ icalssyacc.lo \ +@DEV_TRUE@@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ icalspanlist_cxx.lo +@DEV_TRUE@@WITH_BDB4_TRUE@@WITH_CXX_FALSE@am_libicalss_cxx_la_OBJECTS = +libicalss_cxx_la_OBJECTS = $(am_libicalss_cxx_la_OBJECTS) + +DEFS = @DEFS@ +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +CPPFLAGS = @CPPFLAGS@ +LDFLAGS = @LDFLAGS@ +LIBS = @LIBS@ +depcomp = $(SHELL) $(top_srcdir)/depcomp +@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/icalbdbset.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/icalcalendar.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/icalclassify.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/icalcluster.Plo $(DEPDIR)/icaldirset.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/icalfileset.Plo $(DEPDIR)/icalgauge.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/icalmessage.Plo $(DEPDIR)/icalset.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/icalspanlist.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/icalspanlist_cxx.Plo \ +@AMDEP_TRUE@ $(DEPDIR)/icalsslexer.Plo $(DEPDIR)/icalssyacc.Plo +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ + $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CFLAGS = @CFLAGS@ +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXFLAGS = @CXXFLAGS@ +LEXCOMPILE = $(LEX) $(LFLAGS) $(AM_LFLAGS) +LTLEXCOMPILE = $(LIBTOOL) --mode=compile $(LEX) $(LFLAGS) $(AM_LFLAGS) +YLWRAP = $(top_srcdir)/ylwrap +YACCCOMPILE = $(YACC) $(YFLAGS) $(AM_YFLAGS) +LTYACCCOMPILE = $(LIBTOOL) --mode=compile $(YACC) $(YFLAGS) $(AM_YFLAGS) +DIST_SOURCES = $(libicalss_la_SOURCES) $(libicalss_cxx_la_SOURCES) +HEADERS = $(libicalssinclude_HEADERS) + +DIST_COMMON = $(libicalssinclude_HEADERS) Makefile.am Makefile.in \ + icalsslexer.c icalssyacc.c icalssyacc.h +SOURCES = $(libicalss_la_SOURCES) $(libicalss_cxx_la_SOURCES) + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .cpp .l .lo .o .obj .y + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/libicalss/Makefile +Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && \ + CONFIG_HEADERS= CONFIG_LINKS= \ + CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(libdir) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + echo " $(LIBTOOL) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$p"; \ + $(LIBTOOL) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$p; \ + else :; fi; \ + done + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p"; \ + $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) +icalssyacc.h: icalssyacc.c +icalssyacc.h: icalssyacc.c +libicalss.la: $(libicalss_la_OBJECTS) $(libicalss_la_DEPENDENCIES) + $(LINK) -rpath $(libdir) $(libicalss_la_LDFLAGS) $(libicalss_la_OBJECTS) $(libicalss_la_LIBADD) $(LIBS) +icalssyacc.h: icalssyacc.c +icalssyacc.h: icalssyacc.c +libicalss_cxx.la: $(libicalss_cxx_la_OBJECTS) $(libicalss_cxx_la_DEPENDENCIES) + $(CXXLINK) -rpath $(libdir) $(libicalss_cxx_la_LDFLAGS) $(libicalss_cxx_la_OBJECTS) $(libicalss_cxx_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) core *.core + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icalbdbset.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icalcalendar.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icalclassify.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icalcluster.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icaldirset.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icalfileset.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icalgauge.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icalmessage.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icalset.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icalspanlist.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icalspanlist_cxx.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icalsslexer.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icalssyacc.Plo@am__quote@ + +distclean-depend: + -rm -rf $(DEPDIR) + +.c.o: +@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< + +.c.obj: +@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(COMPILE) -c `cygpath -w $<` + +.c.lo: +@AMDEP_TRUE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(LTCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$< +CCDEPMODE = @CCDEPMODE@ + +.cpp.o: +@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CXXCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$< + +.cpp.obj: +@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CXXCOMPILE) -c -o $@ `cygpath -w $<` + +.cpp.lo: +@AMDEP_TRUE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(LTCXXCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$< +CXXDEPMODE = @CXXDEPMODE@ +LEXLIB = @LEXLIB@ + +.l.c: + $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE) + +.y.c: + $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h -- $(YACCCOMPILE) +uninstall-info-am: +install-libicalssincludeHEADERS: $(libicalssinclude_HEADERS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(libicalssincludedir) + @list='$(libicalssinclude_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(INSTALL_HEADER) $$d$$p $(DESTDIR)$(libicalssincludedir)/$$f"; \ + $(INSTALL_HEADER) $$d$$p $(DESTDIR)$(libicalssincludedir)/$$f; \ + done + +uninstall-libicalssincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(libicalssinclude_HEADERS)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(libicalssincludedir)/$$f"; \ + rm -f $(DESTDIR)$(libicalssincludedir)/$$f; \ + done + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique $(LISP) + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ + || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + +GTAGS: + here=`CDPATH=: && cd $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = ../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + if test -f $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + $(mkinstalldirs) "$(distdir)/$$dir"; \ + fi; \ + if test -d $$d/$$file; then \ + cp -pR $$d/$$file $(distdir) \ + || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) + +installdirs: + $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(libicalssincludedir) + +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "icalssyacc.hicalssyacc.hicalssyacc.hicalssyacc.h" || rm -f icalssyacc.h icalssyacc.h icalssyacc.h icalssyacc.h +clean: clean-am + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-compile distclean-depend \ + distclean-generic distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: install-libicalssincludeHEADERS + +install-exec-am: install-libLTLIBRARIES + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES \ + uninstall-libicalssincludeHEADERS + +.PHONY: GTAGS all all-am check check-am clean clean-generic \ + clean-libLTLIBRARIES clean-libtool distclean distclean-compile \ + distclean-depend distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am info info-am install \ + install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am \ + install-libLTLIBRARIES install-libicalssincludeHEADERS \ + install-man install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool tags uninstall uninstall-am \ + uninstall-info-am uninstall-libLTLIBRARIES \ + uninstall-libicalssincludeHEADERS + + +all: icalss.h + +# just to get it built +$(srcdir)/icalgauge.c: icalssyacc.h +$(srcdir)/icalsslexer.c: icalssyacc.h + +icalss.h: $(COMBINEDHEADERS) + echo '#ifdef __cplusplus' > icalss.h + echo 'extern "C" {' >> icalss.h + echo '#endif' >> icalss.h + echo '/*' >> icalss.h + echo ' $$''Id''$$' >> icalss.h + echo '*/' >> icalss.h + cat $(COMBINEDHEADERS) \ + | egrep -v "#include.*\"ical" \ + | egrep -v "#include.*\"pvl\.h\"" \ + | egrep -v '\$$(Id|Locker): .+\$$'>> icalss.h + echo '#ifdef __cplusplus' >> icalss.h + echo '};' >> icalss.h + echo '#endif' >> icalss.h + +# c++ needs ical.h auto-generated. +@WITH_CXX_TRUE@icalspanlist_cxx.lo: icalss.h +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/mozilla/calendar/libical/src/libicalss/icalbdbset.c b/mozilla/calendar/libical/src/libicalss/icalbdbset.c new file mode 100644 index 00000000000..6b11e467417 --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/icalbdbset.c @@ -0,0 +1,1598 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: icalbdbset.c + ======================================================================*/ + + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "icalbdbset.h" +#include "icalgauge.h" +#include +#include /* for stat */ +#include + +#ifndef WIN32 +#include /* for stat, getpid, unlink */ +#include /* for fcntl */ +#include /* for fcntl */ +#else +#define S_IRUSR S_IREAD /* R for owner */ +#define S_IWUSR S_IWRITE /* W for owner */ +#endif +#include +#include + +#include "icalbdbsetimpl.h" + +#define STRBUF_LEN 255 +#define MAX_RETRY 5 + +extern int errno; + + + +/* these are just stub functions */ +icalerrorenum icalbdbset_read_database(icalbdbset* bset, char *(*pfunc)(const DBT *dbt)); +icalerrorenum icalbdbset_create_cluster(const char *path); +int icalbdbset_cget(DBC *dbcp, DBT *key, DBT *data, int access_method); + +static int _compare_keys(DB *dbp, const DBT *a, const DBT *b); + + +/** Default options used when NULL is passed to icalset_new() **/ +icalbdbset_options icalbdbset_options_default = {ICALBDB_EVENTS, DB_BTREE, 0644, 0, NULL, NULL}; + + +static DB_ENV *ICAL_DB_ENV = 0; + +/** Initialize the db environment */ + +int icalbdbset_init_dbenv(char *db_env_dir, void (*logDbFunc)(const char*, char*)) { + int ret; + int flags; + + if (db_env_dir) { + struct stat env_dir_sb; + + if (stat(db_env_dir, &env_dir_sb)) { + fprintf(stderr, "The directory '%s' is missing, please create it.\n", db_env_dir); + return EINVAL; + } + } + + ret = db_env_create(&ICAL_DB_ENV, 0); + + if (ret) { + /* some kind of error... */ + return ret; + } + + /* Do deadlock detection internally */ + if ((ret = ICAL_DB_ENV->set_lk_detect(ICAL_DB_ENV, DB_LOCK_DEFAULT)) != 0) { + char * foo = db_strerror(ret); + fprintf(stderr, "Could not initialize the database locking environment\n"); + return ret; + } + + flags = DB_INIT_LOCK | DB_INIT_TXN | DB_CREATE | DB_THREAD | \ + DB_RECOVER | DB_INIT_LOG | DB_INIT_MPOOL; + ret = ICAL_DB_ENV->open(ICAL_DB_ENV, db_env_dir, flags, S_IRUSR|S_IWUSR); + + if (ret) { + char * foo = db_strerror(ret); + ICAL_DB_ENV->err(ICAL_DB_ENV, ret, "dbenv->open"); + return ret; + } + + /* display additional error messages */ + if (logDbFunc != NULL) { + ICAL_DB_ENV->set_errcall(ICAL_DB_ENV, logDbFunc); + } + + return ret; +} + +void icalbdbset_checkpoint(void) +{ + int ret; + char *err; + + switch (ret = ICAL_DB_ENV->txn_checkpoint(ICAL_DB_ENV, 0,0,0)) { + case 0: + case DB_INCOMPLETE: + break; + default: + err = db_strerror(ret); + ICAL_DB_ENV->err(ICAL_DB_ENV, ret, "checkpoint failed"); + abort(); + } +} + +void icalbdbset_rmdbLog(void) +{ + int ret = 0; + char** listp; + + /* remove log files that are archivable (ie. no longer needed) */ + if (ICAL_DB_ENV->log_archive(ICAL_DB_ENV, &listp, DB_ARCH_ABS) == 0) { + if (listp != NULL) { + int ii = 0; + while (listp[ii] != NULL) { + ret = unlink(listp[ii]); + ii++; + } + free(listp); + } + } +} + +int icalbdbset_cleanup(void) +{ + int ret = 0; + + /* one last checkpoint.. */ + icalbdbset_checkpoint(); + + /* remove logs that are not needed anymore */ + icalbdbset_rmdbLog(); + + if (ICAL_DB_ENV) + ret = ICAL_DB_ENV->close(ICAL_DB_ENV, 0); + + return ret; +} + +DB_ENV *icalbdbset_get_env(void) { + return ICAL_DB_ENV; +} + + +/** Initialize an icalbdbset. Also attempts to populate from the + * database (primary if only dbp is given, secondary if sdbp is + * given) and creates an empty object if retrieval is unsuccessful. + * pfunc is used to unpack data from the database. If not given, we + * assume data is a string. + */ + +icalset* icalbdbset_init(icalset* set, const char* dsn, void* options_in) +{ + icalbdbset *bset = (icalbdbset*)set; + icalbdbset_options *options = options_in; + int ret; + DB *cal_db; + char *subdb_name; + + if (options == NULL) + *options = icalbdbset_options_default; + + switch (options->subdb) { + case ICALBDB_CALENDARS: + subdb_name = "calendars"; + break; + case ICALBDB_EVENTS: + subdb_name = "events"; + break; + case ICALBDB_TODOS: + subdb_name = "todos"; + break; + case ICALBDB_REMINDERS: + subdb_name = "reminders"; + break; + } + + cal_db = icalbdbset_bdb_open(set->dsn, + subdb_name, + options->dbtype, + options->mode, + options->flag); + if (cal_db == NULL) + return NULL; + + bset->dbp = cal_db; + bset->sdbp = NULL; + bset->gauge = 0; + bset->cluster = 0; + + if ((ret = icalbdbset_read_database(bset, options->pfunc)) != ICAL_NO_ERROR) { + return NULL; + } + + return (icalset *)bset; +} + + +/** open a database and return a reference to it. Used only for + opening the primary index. + flag = set_flag() DUP | DUP_SORT + */ + +icalset* icalbdbset_new(const char* database_filename, + icalbdbset_subdb_type subdb_type, + int dbtype, int flag) +{ + icalbdbset_options options = icalbdbset_options_default; + + options.subdb = subdb_type; + options.dbtype = dbtype; + options.flag = flag; + + /* this will in turn call icalbdbset_init */ + return icalset_new(ICAL_BDB_SET, database_filename, &options); +} + +/** + * Open a secondary database, used for accessing secondary indices. + * The callback function tells icalbdbset how to associate secondary + * key information with primary data. See the BerkeleyDB reference + * guide for more information. + */ + +DB * icalbdbset_bdb_open_secondary(DB *dbp, + const char *database, + const char *sub_database, + int (*callback) (DB *db, + const DBT *dbt1, + const DBT *dbt2, + DBT *dbt3), + int type) +{ + int ret; + int flags; + DB *sdbp = NULL; + + if (!sub_database) + return NULL; + + if (!ICAL_DB_ENV) + icalbdbset_init_dbenv(NULL, NULL); + + /* Open/create secondary */ + if((ret = db_create(&sdbp, ICAL_DB_ENV, 0)) != 0) { + ICAL_DB_ENV->err(ICAL_DB_ENV, ret, "secondary index: %s", sub_database); + return NULL; + } + + if ((ret = sdbp->set_flags(sdbp, DB_DUP | DB_DUPSORT)) != 0) { + ICAL_DB_ENV->err(ICAL_DB_ENV, ret, "set_flags error for secondary index: %s", sub_database); + return NULL; + } + + flags = DB_CREATE | DB_THREAD; + if ((ret = sdbp->open(sdbp, database, sub_database, type, (u_int32_t) flags, 0644)) != 0) { + ICAL_DB_ENV->err(ICAL_DB_ENV, ret, "failed to open secondary index: %s", sub_database); + if (ret == DB_RUNRECOVERY) + abort(); + else + return NULL; + } + + /* Associate the primary index with a secondary */ + if((ret = dbp->associate(dbp, sdbp, callback, 0)) != 0) { + ICAL_DB_ENV->err(ICAL_DB_ENV, ret, "failed to associate secondary index: %s", sub_database); + return NULL; + } + + return sdbp; +} + +DB* icalbdbset_bdb_open(const char* path, + const char *subdb, + int dbtype, + mode_t mode, + int flag) +{ + DB *dbp = NULL; + int ret; + int flags; + + /* Initialize the correct set of db subsystems (see capdb.c) */ + flags = DB_CREATE | DB_THREAD; + + /* should just abort here instead of opening an env in the current dir.. */ + if (!ICAL_DB_ENV) + icalbdbset_init_dbenv(NULL, NULL); + + /* Create and initialize database object, open the database. */ + if ((ret = db_create(&dbp, ICAL_DB_ENV, 0)) != 0) { + return (NULL); + } + + /* set comparison function, if BTREE */ + if (dbtype == DB_BTREE) + dbp->set_bt_compare(dbp, _compare_keys); + + /* set DUP, DUPSORT */ + if (flag != 0) + dbp->set_flags(dbp, flag); + + if ((ret = dbp->open(dbp, path, subdb, dbtype, flags, mode)) != 0) { + ICAL_DB_ENV->err(ICAL_DB_ENV, ret, "%s (database: %s): open failed.", path, subdb); + if (ret == DB_RUNRECOVERY) + abort(); + else + return NULL; + } + + return (dbp); +} + + +/* icalbdbset_parse_data -- parses using pfunc to unpack data. */ +char *icalbdbset_parse_data(DBT *dbt, char *(*pfunc)(const DBT *dbt)) +{ + char *ret; + + if(pfunc) { + ret = (char *)pfunc(dbt); + } else { + ret = (char *) dbt->data; + } + + return (ret); +} + +/* This populates a cluster with the entire contents of a database */ +icalerrorenum icalbdbset_read_database(icalbdbset* bset, char *(*pfunc)(const DBT *dbt)) +{ + + DB *dbp; + DBC *dbcp; + DBT key, data; + char *str, *szpstr; + int ret; + char keystore[256]; + char datastore[1024]; + char *more_mem = NULL; + DB_TXN *tid; + + memset(&key, 0, sizeof(DBT)); + memset(&data, 0, sizeof(DBT)); + + if (bset->sdbp) { dbp = bset->sdbp; } + else { dbp = bset->dbp; } + + if(!dbp) { goto err1; } + + bset->cluster = icalcomponent_new(ICAL_XROOT_COMPONENT); + + if ((ret = ICAL_DB_ENV->txn_begin(ICAL_DB_ENV, NULL, &tid, 0)) != 0) { + char *foo = db_strerror(ret); + abort(); + } + + /* acquire a cursor for the database */ + if ((ret = dbp->cursor(dbp, tid, &dbcp, 0)) != 0) { + dbp->err(dbp, ret, "primary index"); + goto err1; + } + + key.flags = DB_DBT_USERMEM; + key.data = keystore; + key.ulen = sizeof(keystore); + + data.flags= DB_DBT_USERMEM; + data.data = datastore; + data.ulen = sizeof(datastore); + + + /* fetch the key/data pair */ + while (1) { + ret = dbcp->c_get(dbcp, &key, &data, DB_NEXT); + if (ret == DB_NOTFOUND) { + break; + } else if (ret == ENOMEM) { + if (more_mem) free (more_mem); + more_mem = malloc(data.ulen+1024); + data.data = more_mem; + data.ulen = data.ulen+1024; + } else if (ret == DB_LOCK_DEADLOCK) { + char *foo = db_strerror(ret); + abort(); /* should retry in case of DB_LOCK_DEADLOCK */ + } else if (ret) { + char *foo = db_strerror(ret); + /* some other weird-ass error */ + dbp->err(dbp, ret, "cursor"); + abort(); + } else { + icalcomponent *cl; + + /* this prevents an array read bounds error */ + if((str = (char *)calloc(data.size + 1, sizeof(char)))==NULL) + goto err2; + memcpy(str, (char *)data.data, data.size); + + cl = icalparser_parse_string(str); + + icalcomponent_add_component(bset->cluster, cl); + free(str); + } + } + if(ret != DB_NOTFOUND) { + goto err2; + } + + + if (more_mem) { + free(more_mem); + more_mem = NULL; + } + + if ((ret = dbcp->c_close(dbcp)) != 0) { + char * foo = db_strerror(ret); + abort(); /* should retry in case of DB_LOCK_DEADLOCK */ + } + + if ((ret = tid->commit(tid, 0)) != 0) { + char * foo = db_strerror(ret); + abort(); + } + + return ICAL_NO_ERROR; + + err2: + if (more_mem) free(more_mem); + dbcp->c_close(dbcp); + abort(); /* should retry in case of DB_LOCK_DEADLOCK */ + return ICAL_INTERNAL_ERROR; + + err1: + dbp->err(dbp, ret, "cursor index"); + abort(); + return (ICAL_FILE_ERROR); +} + + +/* XXX add more to this */ +void icalbdbset_free(icalset* set) +{ + icalbdbset *bset = (icalbdbset*)set; + int ret; + + icalerror_check_arg_rv((bset!=0),"bset"); + + if (bset->cluster != 0){ + icalbdbset_commit(set); + icalcomponent_free(bset->cluster); + bset->cluster=0; + } + + if(bset->gauge !=0){ + icalgauge_free(bset->gauge); + } + + if(bset->path != 0){ + free((char *)bset->path); + bset->path = 0; + } + + if(bset->sindex != 0) { + free((char *)bset->sindex); + bset->sindex = 0; + } + + if (bset->dbp && + ((ret = bset->dbp->close(bset->dbp, 0)) != 0)) { + } + bset->dbp = NULL; +} + +/* return cursor is in rdbcp */ +int icalbdbset_acquire_cursor(DB *dbp, DB_TXN *tid, DBC **rdbcp) { + int ret=0; + + if((ret = dbp->cursor(dbp, tid, rdbcp, 0)) != 0) { + dbp->err(dbp, ret, "couldn't open cursor"); + goto err1; + } + + return ICAL_NO_ERROR; + + err1: + return ICAL_FILE_ERROR; + +} + +/* returns key/data in arguments */ +int icalbdbset_get_first(DBC *dbcp, DBT *key, DBT *data) { + return icalbdbset_cget(dbcp, key, data, DB_FIRST); +} + +int icalbdbset_get_next(DBC *dbcp, DBT *key, DBT *data) { + return icalbdbset_cget(dbcp, key, data, DB_NEXT); +} + +int icalbdbset_get_last(DBC *dbcp, DBT *key, DBT *data) { + return icalbdbset_cget(dbcp, key, data, DB_LAST); +} + +int icalbdbset_get_key(DBC *dbcp, DBT *key, DBT *data) { + return icalbdbset_cget(dbcp, key, data, DB_SET); +} + +int icalbdbset_delete(DB *dbp, DBT *key) { + DB_TXN *tid; + int ret; + int done = 0; + int retry = 0; + + while ((retry < MAX_RETRY) && !done) { + + if ((ret = ICAL_DB_ENV->txn_begin(ICAL_DB_ENV, NULL, &tid, 0)) != 0) { + if (ret == DB_LOCK_DEADLOCK) { + retry++; + continue; + } + else { + char *foo = db_strerror(ret); + abort(); + } + } + + if ((ret = dbp->del(dbp, tid, key, 0)) != 0) { + if (ret == DB_NOTFOUND) { + /* do nothing - not an error condition */ + } + else if (ret == DB_LOCK_DEADLOCK) { + tid->abort(tid); + retry++; + continue; + } + else { + char *strError = db_strerror(ret); + icalerror_warn("icalbdbset_delete faild: "); + icalerror_warn(strError); + tid->abort(tid); + return ICAL_FILE_ERROR; + } + } + + if ((ret = tid->commit(tid, 0)) != 0) { + if (ret == DB_LOCK_DEADLOCK) { + tid->abort(tid); + retry++; + continue; + } + else { + char * foo = db_strerror(ret); + abort(); + } + } + + done = 1; /* all is well */ + } + + if (!done) { + if (tid != NULL) tid->abort(tid); + } + + return ret; +} + +int icalbdbset_cget(DBC *dbcp, DBT *key, DBT *data, int access_method) { + int ret=0; + + key->flags |= DB_DBT_MALLOC; /* change these to DB_DBT_USERMEM */ + data->flags |= DB_DBT_MALLOC; + + /* fetch the key/data pair */ + if((ret = dbcp->c_get(dbcp, key, data, access_method)) != 0) { + goto err1; + } + + return ICAL_NO_ERROR; + + err1: + return ICAL_FILE_ERROR; +} + + +int icalbdbset_cput(DBC *dbcp, DBT *key, DBT *data, int access_method) { + int ret=0; + + key->flags |= DB_DBT_MALLOC; /* change these to DB_DBT_USERMEM */ + data->flags |= DB_DBT_MALLOC; + + /* fetch the key/data pair */ + if((ret = dbcp->c_put(dbcp, key, data, 0)) != 0) { + goto err1; + } + + return ICAL_NO_ERROR; + + err1: + return ICAL_FILE_ERROR; +} + + +int icalbdbset_put(DB *dbp, DBT *key, DBT *data, int access_method) +{ + int ret = 0; + DB_TXN *tid = NULL; + int retry = 0; + int done = 0; + + while ((retry < MAX_RETRY) && !done) { + + if ((ret = ICAL_DB_ENV->txn_begin(ICAL_DB_ENV, NULL, &tid, 0)) != 0) { + if (ret == DB_LOCK_DEADLOCK) { + retry++; + continue; + } + else { + char *foo = db_strerror(ret); + abort(); + } + } + + if ((ret = dbp->put(dbp, tid, key, data, access_method)) != 0) { + if (ret == DB_LOCK_DEADLOCK) { + tid->abort(tid); + retry++; + continue; + } + else { + char *strError = db_strerror(ret); + icalerror_warn("icalbdbset_put faild: "); + icalerror_warn(strError); + tid->abort(tid); + return ICAL_FILE_ERROR; + } + } + + if ((ret = tid->commit(tid, 0)) != 0) { + if (ret == DB_LOCK_DEADLOCK) { + tid->abort(tid); + retry++; + continue; + } + else { + char * foo = db_strerror(ret); + abort(); + } + } + + done = 1; /* all is well */ + } + + if (!done) { + if (tid != NULL) tid->abort(tid); + return ICAL_FILE_ERROR; + } + else + return ICAL_NO_ERROR; +} + +int icalbdbset_get(DB *dbp, DB_TXN *tid, DBT *key, DBT *data, int flags) +{ + return (dbp->get(dbp, tid, key, data, flags)); +} + +/** Return the path of the database file **/ + +const char* icalbdbset_path(icalset* set) +{ + icalerror_check_arg_rz((set!=0),"set"); + + return set->dsn; +} + +const char* icalbdbset_subdb(icalset* set) +{ + icalbdbset *bset = (icalbdbset*)set; + icalerror_check_arg_rz((bset!=0),"bset"); + + return bset->subdb; +} + + +/** Write changes out to the database file. + */ + +icalerrorenum icalbdbset_commit(icalset *set) { + DB *dbp; + DBC *dbcp; + DBT key, data; + icalcomponent *c; + char *str; + int ret=0; + int reterr = ICAL_NO_ERROR; + char keystore[256]; + char uidbuf[256]; + char datastore[1024]; + char *more_mem = NULL; + DB_TXN *tid = NULL; + icalbdbset *bset = (icalbdbset*)set; + int bad_uid_counter = 0; + int retry = 0, done = 0, completed = 0, deadlocked = 0; + + icalerror_check_arg_re((bset!=0),"bset",ICAL_BADARG_ERROR); + + dbp = bset->dbp; + icalerror_check_arg_re((dbp!=0),"dbp is invalid",ICAL_BADARG_ERROR); + + if (bset->changed == 0) + return ICAL_NO_ERROR; + + memset(&key, 0, sizeof(key)); + memset(&data, 0, sizeof(data)); + + key.flags = DB_DBT_USERMEM; + key.data = keystore; + key.ulen = sizeof(keystore); + + data.flags = DB_DBT_USERMEM; + data.data = datastore; + data.ulen = sizeof(datastore); + + if (!ICAL_DB_ENV) + icalbdbset_init_dbenv(NULL, NULL); + + while ((retry < MAX_RETRY) && !done) { + + if ((ret = ICAL_DB_ENV->txn_begin(ICAL_DB_ENV, NULL, &tid, 0)) != 0) { + if (ret == DB_LOCK_DEADLOCK) { + retry++; + continue; + } + else if (ret == DB_RUNRECOVERY) { + ICAL_DB_ENV->err(ICAL_DB_ENV, ret, "icalbdbset_commit: txn_begin failed"); + abort(); + } + else { + ICAL_DB_ENV->err(ICAL_DB_ENV, ret, "icalbdbset_commit"); + return ICAL_INTERNAL_ERROR; + } + } + + /* first delete everything in the database, because there could be removed components */ + if ((ret = dbp->cursor(dbp, tid, &dbcp, DB_DIRTY_READ)) != 0) { + tid->abort(tid); + if (ret == DB_LOCK_DEADLOCK) { + retry++; + continue; + } + else if (ret == DB_RUNRECOVERY) { + ICAL_DB_ENV->err(ICAL_DB_ENV, ret, "curor failed"); + abort(); + } + else { + ICAL_DB_ENV->err(ICAL_DB_ENV, ret, "curor failed"); + /* leave bset->changed set to true */ + return ICAL_INTERNAL_ERROR; + } + } + + /* fetch the key/data pair, then delete it */ + completed = 0; + while (!completed && !deadlocked) { + ret = dbcp->c_get(dbcp, &key, &data, DB_NEXT); + if (ret == DB_NOTFOUND) { + completed = 1; + } else if (ret == ENOMEM) { + if (more_mem) free(more_mem); + more_mem = malloc(data.ulen+1024); + data.data = more_mem; + data.ulen = data.ulen+1024; + } else if (ret == DB_LOCK_DEADLOCK) { + deadlocked = 1; + } else if (ret == DB_RUNRECOVERY) { + tid->abort(tid); + ICAL_DB_ENV->err(ICAL_DB_ENV, ret, "c_get failed."); + abort(); + } else if (ret == 0) { + if ((ret = dbcp->c_del(dbcp,0))!=0) { + dbp->err(dbp, ret, "cursor"); + if (ret == DB_KEYEMPTY) { + /* never actually created, continue onward.. */ + /* do nothing - break; */ + } else if (ret == DB_LOCK_DEADLOCK) { + deadlocked = 1; + } else { + char *foo = db_strerror(ret); + abort(); + } + } + } else { /* some other non-fatal error */ + dbcp->c_close(dbcp); + tid->abort(tid); + if (more_mem) { + free(more_mem); + more_mem = NULL; + } + return ICAL_INTERNAL_ERROR; + } + } + + if (more_mem) { + free(more_mem); + more_mem = NULL; + } + + if (deadlocked) { + dbcp->c_close(dbcp); + tid->abort(tid); + retry++; + continue; /* next retry */ + } + + deadlocked = 0; + for (c = icalcomponent_get_first_component(bset->cluster,ICAL_ANY_COMPONENT); + c != 0 && !deadlocked; + c = icalcomponent_get_next_component(bset->cluster,ICAL_ANY_COMPONENT)) { + + memset(&key, 0, sizeof(key)); + memset(&data, 0, sizeof(data)); + + /* Note that we're always inserting into a primary index. */ + if (icalcomponent_isa(c) != ICAL_VAGENDA_COMPONENT) { + char *uidstr = (char *)icalcomponent_get_uid(c); + if (!uidstr) { /* this shouldn't happen */ + /* no uid string, we need to add one */ + snprintf(uidbuf, 256, "baduid%d-%d", getpid(), bad_uid_counter++); + key.data = uidbuf; + } else { + key.data = uidstr; + } + } else { + char *relcalid = NULL; + relcalid = (char*)icalcomponent_get_relcalid(c); + if (relcalid == NULL) { + snprintf(uidbuf, 256, "baduid%d-%d", getpid(), bad_uid_counter++); + key.data = uidbuf; + } else { + key.data = relcalid; + } + } + key.size = strlen(key.data); + + str = icalcomponent_as_ical_string(c); + data.data = str; + data.size = strlen(str); + + if ((ret = dbcp->c_put(dbcp, &key, &data, DB_KEYLAST)) != 0) { + if (ret == DB_LOCK_DEADLOCK) { + deadlocked = 1; + } + else if (ret == DB_RUNRECOVERY) { + ICAL_DB_ENV->err(ICAL_DB_ENV, ret, "c_put failed."); + abort(); + } + else { + ICAL_DB_ENV->err(ICAL_DB_ENV, ret, "c_put failed %s.", str); + /* continue to try to put as many icalcomponent as possible */ + reterr = ICAL_INTERNAL_ERROR; + } + } + } + + if (deadlocked) { + dbcp->c_close(dbcp); + tid->abort(tid); + retry++; + continue; + } + + if ((ret = dbcp->c_close(dbcp)) != 0) { + tid->abort(tid); + if (ret == DB_LOCK_DEADLOCK) { + retry++; + continue; + } + else if (ret == DB_RUNRECOVERY) { + ICAL_DB_ENV->err(ICAL_DB_ENV, ret, "c_closed failed."); + abort(); + } + else { + ICAL_DB_ENV->err(ICAL_DB_ENV, ret, "c_closed failed."); + reterr = ICAL_INTERNAL_ERROR; + } + } + + if ((ret = tid->commit(tid, 0)) != 0) { + tid->abort(tid); + if (ret == DB_LOCK_DEADLOCK) { + retry++; + continue; + } + else if (ret == DB_RUNRECOVERY) { + ICAL_DB_ENV->err(ICAL_DB_ENV, ret, "commit failed."); + abort(); + } + else { + ICAL_DB_ENV->err(ICAL_DB_ENV, ret, "commit failed."); + reterr = ICAL_INTERNAL_ERROR; + } + } + + done = 1; + } + + bset->changed = 0; + return reterr; +} + + +void icalbdbset_mark(icalset* set) +{ + icalbdbset *bset = (icalbdbset*)set; + icalerror_check_arg_rv((bset!=0),"bset"); + + bset->changed = 1; +} + + +icalcomponent* icalbdbset_get_component(icalset* set) +{ + icalbdbset *bset = (icalbdbset*)set; + icalerror_check_arg_rz((bset!=0),"bset"); + + return bset->cluster; +} + + +/* manipulate the components in the cluster */ + +icalerrorenum icalbdbset_add_component(icalset *set, + icalcomponent* child) +{ + icalbdbset *bset = (icalbdbset*)set; + icalerror_check_arg_re((bset!=0),"bset", ICAL_BADARG_ERROR); + icalerror_check_arg_re((child!=0),"child",ICAL_BADARG_ERROR); + + icalcomponent_add_component(bset->cluster,child); + + icalbdbset_mark(set); + + return ICAL_NO_ERROR; +} + + +icalerrorenum icalbdbset_remove_component(icalset *set, + icalcomponent* child) +{ + icalbdbset *bset = (icalbdbset*)set; + icalerror_check_arg_re((bset!=0),"bset", ICAL_BADARG_ERROR); + icalerror_check_arg_re((child!=0),"child",ICAL_BADARG_ERROR); + + icalcomponent_remove_component(bset->cluster,child); + + icalbdbset_mark(set); + + return ICAL_NO_ERROR; +} + + +int icalbdbset_count_components(icalset *set, + icalcomponent_kind kind) +{ + icalbdbset *bset = (icalbdbset*)set; + + if(set == 0){ + icalerror_set_errno(ICAL_BADARG_ERROR); + return -1; + } + + return icalcomponent_count_components(bset->cluster,kind); +} + + +/** Set the gauge **/ + +icalerrorenum icalbdbset_select(icalset* set, icalgauge* gauge) +{ + icalbdbset *bset = (icalbdbset*)set; + icalerror_check_arg_re((bset!=0),"bset", ICAL_BADARG_ERROR); + icalerror_check_arg_re(gauge!=0,"gauge",ICAL_BADARG_ERROR); + + bset->gauge = gauge; + + return ICAL_NO_ERROR; +} + + +/** Clear the gauge **/ + +void icalbdbset_clear(icalset* set) +{ + icalbdbset *bset = (icalbdbset*)set; + icalerror_check_arg_rv((bset!=0),"bset"); + + bset->gauge = 0; +} + + +icalcomponent* icalbdbset_fetch(icalset* set, icalcomponent_kind kind, const char* uid) +{ + icalcompiter i; + icalbdbset *bset = (icalbdbset*)set; + icalerror_check_arg_rz((bset!=0),"bset"); + + for(i = icalcomponent_begin_component(bset->cluster, kind); + icalcompiter_deref(&i)!= 0; icalcompiter_next(&i)){ + + icalcomponent *this = icalcompiter_deref(&i); + icalproperty *p = NULL; + const char *this_uid = NULL; + + if (this != 0){ + if (kind == ICAL_VAGENDA_COMPONENT) { + p = icalcomponent_get_first_property(this,ICAL_RELCALID_PROPERTY); + if (p != NULL) this_uid = icalproperty_get_relcalid(p); + } else { + p = icalcomponent_get_first_property(this,ICAL_UID_PROPERTY); + if (p != NULL) this_uid = icalproperty_get_uid(p); + } + + if(this_uid==NULL){ + icalerror_warn("icalbdbset_fetch found a component with no UID"); + continue; + } + + if (strcmp(uid,this_uid)==0){ + return this; + } + } + } + + return 0; +} + + +int icalbdbset_has_uid(icalset* store,const char* uid) +{ + assert(0); /* HACK, not implemented */ + return 0; +} + + +/******* support routines for icalbdbset_fetch_match *********/ + +struct icalbdbset_id { + char* uid; + char* recurrence_id; + int sequence; +}; + +void icalbdbset_id_free(struct icalbdbset_id *id) +{ + if(id->recurrence_id != 0){ + free(id->recurrence_id); + } + + if(id->uid != 0){ + free(id->uid); + } + +} + +struct icalbdbset_id icalbdbset_get_id(icalcomponent* comp) +{ + + icalcomponent *inner; + struct icalbdbset_id id; + icalproperty *p; + + inner = icalcomponent_get_first_real_component(comp); + + p = icalcomponent_get_first_property(inner, ICAL_UID_PROPERTY); + + assert(p!= 0); + + id.uid = strdup(icalproperty_get_uid(p)); + + p = icalcomponent_get_first_property(inner, ICAL_SEQUENCE_PROPERTY); + + if(p == 0) { + id.sequence = 0; + } else { + id.sequence = icalproperty_get_sequence(p); + } + + p = icalcomponent_get_first_property(inner, ICAL_RECURRENCEID_PROPERTY); + + if (p == 0){ + id.recurrence_id = 0; + } else { + icalvalue *v; + v = icalproperty_get_value(p); + id.recurrence_id = strdup(icalvalue_as_ical_string(v)); + + assert(id.recurrence_id != 0); + } + + return id; +} + +/* Find the component that is related to the given + component. Currently, it just matches based on UID and + RECURRENCE-ID */ + +icalcomponent* icalbdbset_fetch_match(icalset* set, icalcomponent *comp) +{ + icalbdbset *bset = (icalbdbset*)set; + icalcompiter i; + struct icalbdbset_id comp_id, match_id; + + icalerror_check_arg_rz((bset!=0),"bset"); + comp_id = icalbdbset_get_id(comp); + + for(i = icalcomponent_begin_component(bset->cluster,ICAL_ANY_COMPONENT); + icalcompiter_deref(&i)!= 0; icalcompiter_next(&i)){ + + icalcomponent *match = icalcompiter_deref(&i); + + match_id = icalbdbset_get_id(match); + + if(strcmp(comp_id.uid, match_id.uid) == 0 && + ( comp_id.recurrence_id ==0 || + strcmp(comp_id.recurrence_id, match_id.recurrence_id) ==0 )){ + + /* HACK. What to do with SEQUENCE? */ + + icalbdbset_id_free(&match_id); + icalbdbset_id_free(&comp_id); + return match; + + } + + icalbdbset_id_free(&match_id); + } + + icalbdbset_id_free(&comp_id); + return 0; + +} + + +icalerrorenum icalbdbset_modify(icalset* set, icalcomponent *old, + icalcomponent *newc) +{ + assert(0); /* HACK, not implemented */ + return ICAL_NO_ERROR; +} + +/* caller is responsible to cal icalbdbset_free_cluster first */ +icalerrorenum icalbdbset_set_cluster(icalset* set, icalcomponent* cluster) +{ + icalbdbset *bset = (icalbdbset*)set; + icalerror_check_arg_rz((bset!=0),"bset"); + + bset->cluster = cluster; +} + +icalerrorenum icalbdbset_free_cluster(icalset* set) +{ + icalbdbset *bset = (icalbdbset*)set; + icalerror_check_arg_rz((bset!=0),"bset"); + + if (bset->cluster != NULL) icalcomponent_free(bset->cluster); +} + +icalcomponent* icalbdbset_get_cluster(icalset* set) +{ + icalbdbset *bset = (icalbdbset*)set; + icalerror_check_arg_rz((bset!=0),"bset"); + + return (bset->cluster); +} + + +/** Iterate through components. */ +icalcomponent* icalbdbset_get_current_component (icalset* set) +{ + icalbdbset *bset = (icalbdbset*)set; + + icalerror_check_arg_rz((bset!=0),"bset"); + + return icalcomponent_get_current_component(bset->cluster); +} + + +icalcomponent* icalbdbset_get_first_component(icalset* set) +{ + icalbdbset *bset = (icalbdbset*)set; + icalcomponent *c=0; + + icalerror_check_arg_rz((bset!=0),"bset"); + + do { + if (c == 0) + c = icalcomponent_get_first_component(bset->cluster, + ICAL_ANY_COMPONENT); + else + c = icalcomponent_get_next_component(bset->cluster, + ICAL_ANY_COMPONENT); + + if(c != 0 && (bset->gauge == 0 || + icalgauge_compare(bset->gauge,c) == 1)){ + return c; + } + + } while (c!=0); + + return 0; +} + + +icalsetiter icalbdbset_begin_component(icalset* set, icalcomponent_kind kind, icalgauge* gauge, const char* tzid) +{ + icalsetiter itr = icalsetiter_null; + icalcomponent* comp = NULL; + icalcompiter citr; + icalbdbset *bset = (icalbdbset*) set; + struct icaltimetype start, next, end; + icalproperty *dtstart, *rrule, *prop, *due; + struct icalrecurrencetype recur; + icaltimezone *u_zone; + int g = 0; + int orig_time_was_utc = 0; + + icalerror_check_arg_re((set!=0), "set", icalsetiter_null); + + itr.gauge = gauge; + itr.tzid = tzid; + + citr = icalcomponent_begin_component(bset->cluster, kind); + comp = icalcompiter_deref(&citr); + + if (gauge == 0) { + itr.iter = citr; + return itr; + } + + /* if there is a gauge, the first matched component is returned */ + while (comp != 0) { + + /* check if it is a recurring component and with guage expand, if so + * we need to add recurrence-id property to the given component */ + rrule = icalcomponent_get_first_property(comp, ICAL_RRULE_PROPERTY); + g = icalgauge_get_expand(gauge); + + if (rrule != 0 + && g == 1) { + + /* it is a recurring event */ + + u_zone = icaltimezone_get_builtin_timezone(itr.tzid); + + /* use UTC, if that's all we have. */ + if (!u_zone) + u_zone = icaltimezone_get_utc_timezone(); + + + recur = icalproperty_get_rrule(rrule); + + if (icalcomponent_isa(comp) == ICAL_VEVENT_COMPONENT) { + dtstart = icalcomponent_get_first_property(comp, ICAL_DTSTART_PROPERTY); + if (dtstart) + start = icalproperty_get_dtstart(dtstart); + } else if (icalcomponent_isa(comp) == ICAL_VTODO_COMPONENT) { + due = icalcomponent_get_first_property(comp, ICAL_DUE_PROPERTY); + if (due) + start = icalproperty_get_due(due); + } + + /* Convert to the user's timezone in order to be able to compare + * the results from the rrule iterator. */ + if (icaltime_is_utc(start)) { + start = icaltime_convert_to_zone(start, u_zone); + orig_time_was_utc = 1; + } + + if (itr.last_component == NULL) { + itr.ritr = icalrecur_iterator_new(recur, start); + next = icalrecur_iterator_next(itr.ritr); + itr.last_component = comp; + } + else { + next = icalrecur_iterator_next(itr.ritr); + if (icaltime_is_null_time(next)){ + itr.last_component = NULL; + icalrecur_iterator_free(itr.ritr); + itr.ritr = NULL; + /* no matched occurence */ + goto getNextComp; + } else { + itr.last_component = comp; + } + } + + /* if it is excluded, do next one */ + if (icalproperty_recurrence_is_excluded(comp, &start, &next)) { + icalrecur_iterator_decrement_count(itr.ritr); + continue; + } + + /* add recurrence-id value to the property if the property already exist; + * add the recurrence id property and the value if the property does not exist */ + prop = icalcomponent_get_first_property(comp, ICAL_RECURRENCEID_PROPERTY); + if (prop == 0) + icalcomponent_add_property(comp, icalproperty_new_recurrenceid(next)); + else + icalproperty_set_recurrenceid(prop, next); + + /* convert the next recurrence time into the user's timezone */ + if (orig_time_was_utc) + next = icaltime_convert_to_zone(next, icaltimezone_get_utc_timezone()); + + } /* end of a recurring event */ + + if (gauge == 0 || icalgauge_compare(itr.gauge, comp) == 1) { + /* find a matched and return it */ + itr.iter = citr; + return itr; + } + + /* if it is a recurring but no matched occurrence has been found OR + * it is not a recurring and no matched component has been found, + * read the next component to find out */ +getNextComp: + if ((rrule != NULL && itr.last_component == NULL) || + (rrule == NULL)) { + comp = icalcompiter_next(&citr); + comp = icalcompiter_deref(&citr); + } + } /* while */ + + /* no matched component has found */ + return icalsetiter_null; +} + +icalcomponent* icalbdbset_form_a_matched_recurrence_component(icalsetiter* itr) +{ + icalcomponent* comp = NULL; + struct icaltimetype start, next, end; + icalproperty *dtstart, *rrule, *prop, *due; + struct icalrecurrencetype recur; + icaltimezone *u_zone; + int g = 0; + int orig_time_was_utc = 0; + + comp = itr->last_component; + + if (comp == NULL || itr->gauge == NULL) { + return NULL; + } + + + rrule = icalcomponent_get_first_property(comp, ICAL_RRULE_PROPERTY); + /* if there is no RRULE, simply return to the caller */ + if (rrule == NULL) + return NULL; + + u_zone = icaltimezone_get_builtin_timezone(itr->tzid); + + /* use UTC, if that's all we have. */ + if (!u_zone) + u_zone = icaltimezone_get_utc_timezone(); + + recur = icalproperty_get_rrule(rrule); + + if (icalcomponent_isa(comp) == ICAL_VEVENT_COMPONENT) { + dtstart = icalcomponent_get_first_property(comp, ICAL_DTSTART_PROPERTY); + if (dtstart) + start = icalproperty_get_dtstart(dtstart); + } else if (icalcomponent_isa(comp) == ICAL_VTODO_COMPONENT) { + due = icalcomponent_get_first_property(comp, ICAL_DUE_PROPERTY); + if (due) + start = icalproperty_get_due(due); + } + + /* Convert to the user's timezone in order to be able to compare the results + * from the rrule iterator. */ + if (icaltime_is_utc(start)) { + start = icaltime_convert_to_zone(start, u_zone); + orig_time_was_utc = 1; + } + + if (itr->ritr == NULL) { + itr->ritr = icalrecur_iterator_new(recur, start); + next = icalrecur_iterator_next(itr->ritr); + itr->last_component = comp; + } else { + next = icalrecur_iterator_next(itr->ritr); + if (icaltime_is_null_time(next)){ + /* no more recurrence, returns */ + itr->last_component = NULL; + icalrecur_iterator_free(itr->ritr); + itr->ritr = NULL; + /* no more pending matched occurence, + * all the pending matched occurences have been returned */ + return NULL; + } else { + itr->last_component = comp; + } + } + + /* if it is excluded, return NULL to the caller */ + if (icalproperty_recurrence_is_excluded(comp, &start, &next)) { + icalrecur_iterator_decrement_count(itr->ritr); + return NULL; + } + + /* set recurrence-id value to the property if the property already exist; + * add the recurrence id property and the value if the property does not exist */ + prop = icalcomponent_get_first_property(comp, ICAL_RECURRENCEID_PROPERTY); + if (prop == 0) + icalcomponent_add_property(comp, icalproperty_new_recurrenceid(next)); + else + icalproperty_set_recurrenceid(prop, next); + + if (orig_time_was_utc) { + next = icaltime_convert_to_zone(next, icaltimezone_get_utc_timezone()); + } + + + if (itr->gauge == 0 || icalgauge_compare(itr->gauge, comp) == 1) { + /* find a matched and return it */ + return comp; + } + + /* not matched */ + return NULL; + +} + +icalcomponent* icalbdbsetiter_to_next(icalset *set, icalsetiter* i) +{ + + icalcomponent* comp = NULL; + icalbdbset *bset = (icalbdbset*) set; + struct icaltimetype start, next, end; + icalproperty *dtstart, *rrule, *prop, *due; + struct icalrecurrencetype recur; + icaltimezone *u_zone; + int g = 0; + int orig_time_was_utc = 0; + + do { + + /* no pending occurence, read the next component */ + if (i->last_component == NULL) { + comp = icalcompiter_next(&(i->iter)); + } + else { + comp = i->last_component; + } + + /* no next component, simply return */ + if (comp == 0) return NULL; + if (i->gauge == 0) return comp; + + /* finding the next matched component and return it to the caller */ + + rrule = icalcomponent_get_first_property(comp, ICAL_RRULE_PROPERTY); + g = icalgauge_get_expand(i->gauge); + + /* a recurring component with expand query */ + if (rrule != 0 + && g == 1) { + + u_zone = icaltimezone_get_builtin_timezone(i->tzid); + + /* use UTC, if that's all we have. */ + if (!u_zone) + u_zone = icaltimezone_get_utc_timezone(); + + recur = icalproperty_get_rrule(rrule); + + if (icalcomponent_isa(comp) == ICAL_VEVENT_COMPONENT) { + dtstart = icalcomponent_get_first_property(comp, ICAL_DTSTART_PROPERTY); + if (dtstart) + start = icalproperty_get_dtstart(dtstart); + } else if (icalcomponent_isa(comp) == ICAL_VTODO_COMPONENT) { + due = icalcomponent_get_first_property(comp, ICAL_DUE_PROPERTY); + if (due) + start = icalproperty_get_due(due); + } + + /* Convert to the user's timezone in order to be able to compare + * the results from the rrule iterator. */ + if (icaltime_is_utc(start)) { + start = icaltime_convert_to_zone(start, u_zone); + orig_time_was_utc = 1; + } + + if (i->ritr == NULL) { + i->ritr = icalrecur_iterator_new(recur, start); + next = icalrecur_iterator_next(i->ritr); + i->last_component = comp; + } else { + next = icalrecur_iterator_next(i->ritr); + if (icaltime_is_null_time(next)) { + i->last_component = NULL; + icalrecur_iterator_free(i->ritr); + i->ritr = NULL; + /* no more occurence, should go to get next component */ + continue; + } else { + i->last_component = comp; + } + } + + /* if it is excluded, do next one */ + if (icalproperty_recurrence_is_excluded(comp, &start, &next)) { + icalrecur_iterator_decrement_count(i->ritr); + continue; + } + + /* set recurrence-id value to the property if the property already exist; + * add the recurrence id property and the value if the property does not exist */ + prop = icalcomponent_get_first_property(comp, ICAL_RECURRENCEID_PROPERTY); + if (prop == 0) + icalcomponent_add_property(comp, icalproperty_new_recurrenceid(next)); + else + icalproperty_set_recurrenceid(prop, next); + + if (orig_time_was_utc) { + next = icaltime_convert_to_zone(next, icaltimezone_get_utc_timezone()); + } + + } /* end of recurring event with expand query */ + + if(comp != 0 && (i->gauge == 0 || + icalgauge_compare(i->gauge, comp) == 1)){ + /* found a matched, return it */ + return comp; + } + } while (comp != 0); + + return 0; + +} + +icalcomponent* icalbdbset_get_next_component(icalset* set) +{ + icalbdbset *bset = (icalbdbset*)set; + icalcomponent *c=0; + + struct icaltimetype start, next; + icalproperty *dtstart, *rrule, *prop, *due; + struct icalrecurrencetype recur; + int g = 0; + + icalerror_check_arg_rz((bset!=0),"bset"); + + do { + c = icalcomponent_get_next_component(bset->cluster, + ICAL_ANY_COMPONENT); + if(c != 0 && (bset->gauge == 0 || + icalgauge_compare(bset->gauge,c) == 1)){ + return c; + } + + } while(c != 0); + + return 0; +} + +int icalbdbset_begin_transaction(DB_TXN* parent_tid, DB_TXN** tid) +{ + return (ICAL_DB_ENV->txn_begin(ICAL_DB_ENV, parent_tid, tid, 0)); +} + +int icalbdbset_commit_transaction(DB_TXN* txnid) +{ + return (txnid->commit(txnid, 0)); +} + + +static int _compare_keys(DB *dbp, const DBT *a, const DBT *b) +{ +/* + * Returns: + * < 0 if a < b + * = 0 if a = b + * > 0 if a > b + */ + + char* ac = (char*)a->data; + char* bc = (char*)b->data; + return (strncmp(ac, bc, a->size)); +} + + + diff --git a/mozilla/calendar/libical/src/libicalss/icalbdbset.h b/mozilla/calendar/libical/src/libicalss/icalbdbset.h new file mode 100644 index 00000000000..1b62d566898 --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/icalbdbset.h @@ -0,0 +1,147 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalbdbset.h + CREATOR: dml 12 December 2001 + (C) COPYRIGHT 2001, Critical Path + + $Id: icalbdbset.h,v 1.4 2002/09/26 22:24:52 lindner Exp $ + $Locker: $ +======================================================================*/ + +#ifndef ICALBDBSET_H +#define ICALBDBSET_H + +#include "ical.h" +#include "icalset.h" +#include "icalgauge.h" +#include + +typedef struct icalbdbset_impl icalbdbset; + +enum icalbdbset_subdb_type {ICALBDB_CALENDARS, ICALBDB_EVENTS, ICALBDB_TODOS, ICALBDB_REMINDERS}; +typedef enum icalbdbset_subdb_type icalbdbset_subdb_type; + +/** sets up the db environment, should be done in parent thread.. */ +int icalbdbset_init_dbenv(char *db_env_dir, void (*logDbFunc)(const char*, char*)); + +icalset* icalbdbset_init(icalset* set, const char *dsn, void *options); +int icalbdbset_cleanup(void); +void icalbdbset_checkpoint(void); +void icalbdbset_rmdbLog(void); + +/** Creates a component handle. flags allows caller to + specify if database is internally a BTREE or HASH */ +icalset * icalbdbset_new(const char* database_filename, + icalbdbset_subdb_type subdb_type, + int dbtype, int flag); + +DB * icalbdbset_bdb_open_secondary(DB *dbp, + const char *subdb, + const char *sindex, + int (*callback) (DB *db, + const DBT *dbt1, + const DBT *dbt2, + DBT *dbt3), + int type); + +char *icalbdbset_parse_data(DBT *dbt, char *(*pfunc)(const DBT *dbt)) ; + +void icalbdbset_free(icalset* set); + +/* cursor operations */ +int icalbdbset_acquire_cursor(DB *dbp, DB_TXN* tid, DBC **rdbcp); +int icalbdbset_cget(DBC *dbcp, DBT *key, DBT *data, int access_method); +int icalbdbset_cput(DBC *dbcp, DBT *key, DBT *data, int access_method); + +int icalbdbset_get_first(DBC *dbcp, DBT *key, DBT *data); +int icalbdbset_get_next(DBC *dbcp, DBT *key, DBT *data); +int icalbdbset_get_last(DBC *dbcp, DBT *key, DBT *data); +int icalbdbset_get_key(DBC *dbcp, DBT *key, DBT *data); +int icalbdbset_delete(DB *dbp, DBT *key); +int icalbdbset_put(DB *dbp, DBT *key, DBT *data, int access_method); +int icalbdbset_get(DB *dbp, DB_TXN *tid, DBT *key, DBT *data, int flags); + +const char* icalbdbset_path(icalset* set); +const char* icalbdbset_subdb(icalset* set); + +/* Mark the set as changed, so it will be written to disk when it + is freed. Commit writes to disk immediately. */ +void icalbdbset_mark(icalset* set); +icalerrorenum icalbdbset_commit(icalset *set); + +icalerrorenum icalbdbset_add_component(icalset* set, + icalcomponent* child); + +icalerrorenum icalbdbset_remove_component(icalset* set, + icalcomponent* child); + +int icalbdbset_count_components(icalset* set, + icalcomponent_kind kind); + +/* Restrict the component returned by icalbdbset_first, _next to those + that pass the gauge. _clear removes the gauge */ +icalerrorenum icalbdbset_select(icalset* store, icalgauge* gauge); +void icalbdbset_clear(icalset* store); + +/* Get and search for a component by uid */ +icalcomponent* icalbdbset_fetch(icalset* set, icalcomponent_kind kind, const char* uid); +int icalbdbset_has_uid(icalset* set, const char* uid); +icalcomponent* icalbdbset_fetch_match(icalset* set, icalcomponent *c); + + +icalerrorenum icalbdbset_modify(icalset* set, icalcomponent *old, + icalcomponent *newc); + +/* cluster management functions */ +icalerrorenum icalbdbset_set_cluster(icalset* set, icalcomponent* cluster); +icalerrorenum icalbdbset_free_cluster(icalset* set); +icalcomponent* icalbdbset_get_cluster(icalset* set); + +/* Iterate through components. If a gauge has been defined, these + will skip over components that do not pass the gauge */ + +icalcomponent* icalbdbset_get_current_component (icalset* set); +icalcomponent* icalbdbset_get_first_component(icalset* set); +icalcomponent* icalbdbset_get_next_component(icalset* set); + +/* External iterator for thread safety */ +icalsetiter icalbdbset_begin_component(icalset* set, icalcomponent_kind kind, icalgauge* gauge, const char* tzid); + +icalcomponent* icalbdbset_form_a_matched_recurrence_component(icalsetiter* itr); + +icalcomponent* icalbdbsetiter_to_next(icalset* set, icalsetiter* i); +icalcomponent* icalbdbsetiter_to_prior(icalset* set, icalsetiter* i); + +/* Return a reference to the internal component. You probably should + not be using this. */ + +icalcomponent* icalbdbset_get_component(icalset* set); + +DB_ENV *icalbdbset_get_env(void); + + +int icalbdbset_begin_transaction(DB_TXN* parent_id, DB_TXN** txnid); +int icalbdbset_commit_transaction(DB_TXN* txnid); + +DB* icalbdbset_bdb_open(const char* path, + const char *subdb, + int type, + mode_t mode, int flag); + + +typedef struct icalbdbset_options { + icalbdbset_subdb_type subdb; /**< the subdatabase to open */ + int dbtype; /**< db_open type: DB_HASH | DB_BTREE */ + mode_t mode; /**< file mode */ + u_int32_t flag; /**< DB->set_flags(): DB_DUP | DB_DUPSORT */ + char *(*pfunc)(const DBT *dbt); /**< parsing function */ + int (*callback) (DB *db, /**< callback for secondary db open */ + const DBT *dbt1, + const DBT *dbt2, + DBT *dbt3); +} icalbdbset_options; + +#endif /* !ICALBDBSET_H */ + + + diff --git a/mozilla/calendar/libical/src/libicalss/icalbdbset_cxx.h b/mozilla/calendar/libical/src/libicalss/icalbdbset_cxx.h new file mode 100644 index 00000000000..678adaa2995 --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/icalbdbset_cxx.h @@ -0,0 +1,61 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalbdbset_cxx.h + CREATOR: dml 12/12/01 + (C) COPYRIGHT 2001, Critical Path +======================================================================*/ + +#ifndef ICALBDBSET_CXX_H +#define ICALBDBSET_CXX_H + + +extern "C" { +#include "ical.h" +#include "icalgauge.h" +} + +#include "vcomponent.h" +#include + +typedef char* string; // Will use the string library from STL + +class ICalBDBSet { +public: + + ICalBDBSet(); + ICalBDBSet(const ICalBDBSet&); + ICalBDBSet operator=(const ICalBDBSet &); + ~ICalBDBSet(); + + ICalBDBSet(const string& path, int flags); + +public: + + void free(); + string path(); + + icalerrorenum add_component(VComponent* child); + icalerrorenum remove_component(VComponent* child); + int count_components(icalcomponent_kind kind); + + // Restrict the component returned by icalbdbset_first, _next to those + // that pass the gauge. _clear removes the gauge + icalerrorenum select(icalgauge *gauge); + void clear(); + + // Get and search for a component by uid + VComponent* fetch(string &uid); + VComponent* fetch_match(icalcomponent *c); + int has_uid(string &uid); + + // Iterate through components. If a guage has been defined, these + // will skip over components that do not pass the gauge + VComponent* get_current_component(); + VComponent* get_first_component(); + VComponent* get_next_component(); + + VComponent* get_component(); + +}; + +#endif diff --git a/mozilla/calendar/libical/src/libicalss/icalbdbsetimpl.h b/mozilla/calendar/libical/src/libicalss/icalbdbsetimpl.h new file mode 100644 index 00000000000..4a8db23a9f9 --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/icalbdbsetimpl.h @@ -0,0 +1,41 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: icalbdbsetimpl.h + CREATOR: dml 12 December 2001 + (C) COPYRIGHT 2001, Critical Path + + $Id: icalbdbsetimpl.h,v 1.3 2002/06/28 10:01:34 acampi Exp $ + $Locker: $ + ======================================================================*/ + +#ifndef ICALBDBSETIMPL_H +#define ICALBDBSETIMPL_H + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "icalgauge.h" +#include + +/* This definition is in its own file so it can be kept out of the + main header file, but used by "friend classes" like icaldirset*/ + +struct icalbdbset_impl { + icalset super; /**< parent class */ + const char *path; + const char *subdb; + const char *sindex; + const char *key; + void *data; + int datasize; + int changed; + icalcomponent* cluster; + icalgauge* gauge; + DB_ENV *dbenv; + DB *dbp; + DB *sdbp; + DBC *dbcp; +}; + +#endif diff --git a/mozilla/calendar/libical/src/libicalss/icalcalendar.c b/mozilla/calendar/libical/src/libicalss/icalcalendar.c new file mode 100644 index 00000000000..c0fe47fedb1 --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/icalcalendar.c @@ -0,0 +1,263 @@ +/*====================================================================== + FILE: icalcalendar.c + CREATOR: eric 23 December 1999 + + $Id: icalcalendar.c,v 1.6 2002/08/07 17:09:06 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + ======================================================================*/ + + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + + +#include "icalcalendar.h" +#include "icalset.h" +#include "icalfileset.h" +#include "icaldirset.h" +#include +#include /* For mkdir, stat */ +#include /* For mkdir */ +#include /* For mkdir */ + +#ifndef WIN32 +#include /* For mkdir, stat */ +#endif + +#ifndef PATH_MAX +#define PATH_MAX 512 +#endif + + +#include /* for malloc */ +#include /* for strcat */ +#include + +#define BOOKED_DIR "booked" +#define INCOMING_FILE "incoming.ics" +#define PROP_FILE "properties.ics" +#define FBLIST_FILE "freebusy.ics" + +struct icalcalendar_impl +{ + char* dir; + icalset* freebusy; + icalset* properties; + icalset* booked; + icalset* incoming; +}; + +struct icalcalendar_impl* icalcalendar_new_impl(void) +{ + struct icalcalendar_impl* impl; + + if ( ( impl = (struct icalcalendar_impl*) + malloc(sizeof(struct icalcalendar_impl))) == 0) { + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + return 0; + } + + return impl; +} + + +icalerrorenum icalcalendar_create(struct icalcalendar_impl* impl) +{ + char path[PATH_MAX]; + struct stat sbuf; + int r; + + icalerror_check_arg_re((impl != 0),"impl",ICAL_BADARG_ERROR); + + path[0] = '\0'; + strcpy(path,impl->dir); + strcat(path,"/"); + strcat(path,BOOKED_DIR); + + r = stat(path,&sbuf); + + if( r != 0 && errno == ENOENT){ + + if(mkdir(path,0777)!=0){ + icalerror_set_errno(ICAL_FILE_ERROR); + return ICAL_FILE_ERROR; + } + } + + return ICAL_NO_ERROR; +} + +icalcalendar* icalcalendar_new(char* dir) +{ + struct icalcalendar_impl* impl; + + icalerror_check_arg_rz((dir != 0),"dir"); + + impl = icalcalendar_new_impl(); + + if (impl == 0){ + return 0; + } + + impl->dir = (char*)strdup(dir); + impl->freebusy = 0; + impl->properties = 0; + impl->booked = 0; + impl->incoming = 0; + + if (icalcalendar_create(impl) != ICAL_NO_ERROR){ + free(impl); + return 0; + } + + return impl; +} + +void icalcalendar_free(icalcalendar* impl) +{ + if (impl->dir !=0){ + free(impl->dir); + } + + if (impl->freebusy !=0){ + icalset_free(impl->booked); + } + + if (impl->properties !=0){ + icalset_free(impl->properties); + } + + if (impl->booked !=0){ + icalset_free(impl->booked); + } + + if (impl->incoming !=0){ + icalset_free(impl->incoming); + } + + impl->dir = 0; + impl->freebusy = 0; + impl->properties = 0; + impl->booked = 0; + impl->incoming = 0; + + + free(impl); +} + + +int icalcalendar_lock(icalcalendar* impl) +{ + icalerror_check_arg_rz((impl != 0),"impl"); + return 0; +} + +int icalcalendar_unlock(icalcalendar* impl) +{ + icalerror_check_arg_rz((impl != 0),"impl"); + return 0; +} + +int icalcalendar_islocked(icalcalendar* impl) +{ + icalerror_check_arg_rz((impl != 0),"impl"); + return 0; +} + +int icalcalendar_ownlock(icalcalendar* impl) +{ + icalerror_check_arg_rz((impl != 0),"impl"); + return 0; +} + +icalset* icalcalendar_get_booked(icalcalendar* impl) +{ + char dir[PATH_MAX]; + + icalerror_check_arg_rz((impl != 0),"impl"); + + dir[0] = '\0'; + strcpy(dir,impl->dir); + strcat(dir,"/"); + strcat(dir,BOOKED_DIR); + + if (impl->booked == 0){ + icalerror_clear_errno(); + impl->booked = icaldirset_new(dir); + assert(icalerrno == ICAL_NO_ERROR); + } + + return impl->booked; + +} + +icalset* icalcalendar_get_incoming(icalcalendar* impl) +{ + char path[PATH_MAX]; + icalerror_check_arg_rz((impl != 0),"impl"); + + path[0] = '\0'; + strcpy(path,impl->dir); + strcat(path,"/"); + strcat(path,INCOMING_FILE); + + if (impl->properties == 0){ + impl->properties = icalfileset_new(path); + } + + return impl->properties; +} + +icalset* icalcalendar_get_properties(icalcalendar* impl) +{ + char path[PATH_MAX]; + icalerror_check_arg_rz((impl != 0),"impl"); + + path[0] = '\0'; + strcpy(path,impl->dir); + strcat(path,"/"); + strcat(path,PROP_FILE); + + if (impl->properties == 0){ + impl->properties = icalfileset_new(path); + } + + return impl->properties; +} + +icalset* icalcalendar_get_freebusy(icalcalendar* impl) +{ + char path[PATH_MAX]; + icalerror_check_arg_rz((impl != 0),"impl"); + + path[0] = '\0'; + strcpy(path,impl->dir); + strcat(path,"/"); + strcat(path,FBLIST_FILE); + + + if (impl->freebusy == 0){ + impl->freebusy = icalfileset_new(path); + } + + return impl->freebusy; +} + + + + diff --git a/mozilla/calendar/libical/src/libicalss/icalcalendar.h b/mozilla/calendar/libical/src/libicalss/icalcalendar.h new file mode 100644 index 00000000000..256d11aa32f --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/icalcalendar.h @@ -0,0 +1,67 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalcalendar.h + CREATOR: eric 23 December 1999 + + + $Id: icalcalendar.h,v 1.2 2002/06/27 02:30:58 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The Original Code is eric. The Initial Developer of the Original + Code is Eric Busboom + + +======================================================================*/ + +#ifndef ICALCALENDAR_H +#define ICALCALENDAR_H + +#include "ical.h" +#include "icalset.h" + +/* icalcalendar + * Routines for storing calendar data in a file system. The calendar + * has two icaldirsets, one for incoming components and one for booked + * components. It also has interfaces to access the free/busy list + * and a list of calendar properties */ + +typedef struct icalcalendar_impl icalcalendar; + +icalcalendar* icalcalendar_new(char* dir); + +void icalcalendar_free(icalcalendar* calendar); + +int icalcalendar_lock(icalcalendar* calendar); + +int icalcalendar_unlock(icalcalendar* calendar); + +int icalcalendar_islocked(icalcalendar* calendar); + +int icalcalendar_ownlock(icalcalendar* calendar); + +icalset* icalcalendar_get_booked(icalcalendar* calendar); + +icalset* icalcalendar_get_incoming(icalcalendar* calendar); + +icalset* icalcalendar_get_properties(icalcalendar* calendar); + +icalset* icalcalendar_get_freebusy(icalcalendar* calendar); + + +#endif /* !ICALCALENDAR_H */ + + + diff --git a/mozilla/calendar/libical/src/libicalss/icalcaputil.h b/mozilla/calendar/libical/src/libicalss/icalcaputil.h new file mode 100644 index 00000000000..4082ca92f9c --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/icalcaputil.h @@ -0,0 +1,58 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalutil.h + CREATOR: eric 23 December 1999 + + + $Id: icalcaputil.h,v 1.1.1.1 2001/01/02 07:33:03 ebusboom Exp $ + $Locker: $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + + =========================================================================*/ + + +/* Create new components that have a form suitable for the various + iTIP trasactions */ + +/* Scheduling commands */ +icalcomponent* icalcaputil_new_accept_reply(icalcomponent* comp, char* calid); +icalcomponent* icalcaputil_new_decline_reply(icalcomponent* comp, char* calid); +icalcomponent* icalcaputil_new_refresh(icalcomponent* comp, char* calid); +icalcomponent* icalcaputil_new_cancel(icalcomponent* comp); +icalcomponent* icalcaputil_new_counter(icalcomponent* comp); +icalcomponent* icalcaputil_new_declinecounter(icalcomponent* comp); + +/* Calendaring commands */ +icalcomponent* icalcaputil_new_create(); +icalcomponent* icalcaputil_new_delete(); +icalcomponent* icalcaputil_new_modify(); +icalerrorenum* icalcaputil_modify_add_old_prop(icalcomponent* c, + icalproperty *p); +icalerrorenum* icalcaputil_modify_add_new_prop(icalcomponent* c, + icalproperty *p); +icalerrorenum* icalcaputil_add_query(icalcomponent* c, char* str); + + +icalcomponent* icalcaputil_new_move(); +icalcomponent* icalcaputil_new_read(); + +icalerrorenum icalcaputil_add_target(icalcomponent* comp,char* target); +icalerrorenum icalcaputil_add_to_vcar(icalcomponent* comp,char* target); + + + + + diff --git a/mozilla/calendar/libical/src/libicalss/icalclassify.c b/mozilla/calendar/libical/src/libicalss/icalclassify.c new file mode 100644 index 00000000000..ef06ffd57c7 --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/icalclassify.c @@ -0,0 +1,756 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: icalclassify.c + CREATOR: ebusboom 23 aug 2000 + + $Id: icalclassify.c,v 1.14 2003/11/17 22:51:53 gray-john Exp $ + $Locker: $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + + ======================================================================*/ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "ical.h" +#include "icalclassify.h" +#include "icalmemory.h" + +#include /* For tolower() */ +#include /* for index() */ +#include /* for malloc and free */ + + + +struct icalclassify_parts { + icalcomponent *c; + icalcomponent_kind inner_kind; + icalproperty_method method; + char* organizer; + icalparameter_partstat reply_partstat; + char* reply_attendee; + char* uid; + int sequence; + struct icaltimetype dtstamp; + struct icaltimetype recurrence_id; +}; + + +char* icalclassify_lowercase(const char* str) +{ + char* p = 0; + char* ret; + + if(str ==0){ + return 0; + } + + ret = icalmemory_strdup(str); + + for(p = ret; *p!=0; p++){ + *p = tolower(*p); + } + + return ret; +} + +/* Return a set of components that intersect in time with comp. For +component X and Y to intersect: + X.DTSTART < Y.DTEND && X.DTEND > Y.DTSTART +*/ + + +icalcomponent* icalclassify_find_overlaps(icalset* set, icalcomponent* comp) +{ + icalcomponent *return_set; + icalcomponent *c; + struct icaltime_span span,compspan; + + icalerror_clear_errno(); + compspan = icalcomponent_get_span(comp); + + if(icalerrno != ICAL_NO_ERROR){ + return 0; + } + + + return_set = icalcomponent_new(ICAL_XROOT_COMPONENT); + + for(c = icalset_get_first_component(set); + c != 0; + c = icalset_get_next_component(set)){ + + icalerror_clear_errno(); + + span = icalcomponent_get_span(c); + + if(icalerrno != ICAL_NO_ERROR){ + continue; + } + + if (compspan.start < span.end && + compspan.end > span.start){ + + icalcomponent *clone = icalcomponent_new_clone(c); + + icalcomponent_add_component(return_set,clone); + } + } + + if(icalcomponent_count_components(return_set,ICAL_ANY_COMPONENT) !=0){ + return return_set; + } else { + icalcomponent_free(return_set); + return 0; + } +} + + + +icalproperty* icalclassify_find_attendee(icalcomponent *c, + const char* attendee) +{ + icalproperty *p; + icalcomponent* inner; + char* lattendee; + char* upn; + + if(attendee == 0){ + return 0; + } + + lattendee = icalclassify_lowercase(attendee); + upn = strchr(lattendee,':'); + + if (upn== 0){ + upn = lattendee; + } else { + upn++; /* skip the ";"*/ + } + + inner = icalcomponent_get_first_real_component(c); + + for(p = icalcomponent_get_first_property(inner,ICAL_ATTENDEE_PROPERTY); + p != 0; + p = icalcomponent_get_next_property(inner,ICAL_ATTENDEE_PROPERTY)) + { + char* this_attendee + = icalclassify_lowercase(icalproperty_get_attendee(p)); + char* this_upn = strchr(this_attendee,':'); + + if(this_upn == 0){ + continue; + } else { + this_upn++; + } + + if(strcmp(this_upn,upn)==0){ + free(lattendee); + free(this_attendee); + return p; + } + + free(this_attendee); + } + free(lattendee); + + return 0; + +} + +void icalssutil_free_parts(struct icalclassify_parts *parts) +{ + if(parts == 0){ + return; + } + + if(parts->organizer != 0){ + free(parts->organizer); + } + + if(parts->uid != 0){ + free(parts->uid); + } + + if(parts->reply_attendee){ + free(parts->reply_attendee); + } +} + +void icalssutil_get_parts(icalcomponent* c, + struct icalclassify_parts* parts) +{ + icalproperty *p; + icalcomponent *inner; + + memset(parts,0,sizeof(struct icalclassify_parts)); + + parts->method = ICAL_METHOD_NONE; + parts->sequence = 0; + parts->reply_partstat = ICAL_PARTSTAT_NONE; + + if(c == 0){ + return; + } + + parts->c = c; + + p = icalcomponent_get_first_property(c,ICAL_METHOD_PROPERTY); + if(p!=0){ + parts->method = icalproperty_get_method(p); + } + + inner = icalcomponent_get_first_real_component(c); + + parts->inner_kind = icalcomponent_isa(inner); + + p = icalcomponent_get_first_property(inner,ICAL_ORGANIZER_PROPERTY); + if(p!=0){ + parts->organizer = strdup(icalproperty_get_organizer(p)); + } + + p = icalcomponent_get_first_property(inner,ICAL_SEQUENCE_PROPERTY); + if(p!=0){ + parts->sequence = icalproperty_get_sequence(p); + } + + p = icalcomponent_get_first_property(inner,ICAL_UID_PROPERTY); + if(p!=0){ + parts->uid = strdup(icalproperty_get_uid(p)); + } + + p = icalcomponent_get_first_property(inner,ICAL_RECURRENCEID_PROPERTY); + if(p!=0){ + parts->recurrence_id = icalproperty_get_recurrenceid(p); + } + + p = icalcomponent_get_first_property(inner,ICAL_DTSTAMP_PROPERTY); + if(p!=0){ + parts->dtstamp = icalproperty_get_dtstamp(p); + } + + if(parts->method==ICAL_METHOD_REPLY){ + icalparameter *param; + p = icalcomponent_get_first_property(inner,ICAL_ATTENDEE_PROPERTY); + + if(p!=0){ + + param = icalproperty_get_first_parameter(p,ICAL_PARTSTAT_PARAMETER); + + if(param != 0){ + parts->reply_partstat = + icalparameter_get_partstat(param); + } + + parts->reply_attendee = strdup(icalproperty_get_attendee(p)); + } + + } + + +} + + +int icalssutil_is_rescheduled(icalcomponent* a,icalcomponent* b) +{ + icalproperty *p1,*p2; + icalcomponent *i1,*i2; + int i; + + icalproperty_kind kind_array[] = { + ICAL_DTSTART_PROPERTY, + ICAL_DTEND_PROPERTY, + ICAL_DURATION_PROPERTY, + ICAL_DUE_PROPERTY, + ICAL_RRULE_PROPERTY, + ICAL_RDATE_PROPERTY, + ICAL_EXRULE_PROPERTY, + ICAL_EXDATE_PROPERTY, + ICAL_NO_PROPERTY + }; + + i1 = icalcomponent_get_first_real_component(a); + i2 = icalcomponent_get_first_real_component(b); + + for(i =0; kind_array[i] != ICAL_NO_PROPERTY; i++){ + p1 = icalcomponent_get_first_property(i1,kind_array[i]); + p2 = icalcomponent_get_first_property(i2,kind_array[i]); + + if( (p1!=0)^(p2!=0) ){ + /* Return true if the property exists in one component and not + the other */ + return 1; + } + + if(p1 && strcmp(icalproperty_as_ical_string(p1), + icalproperty_as_ical_string(p2)) != 0){ + return 1; + } + } + + return 0; + +} + +#define icalclassify_pre \ + int rtrn =0; + +#define icalclassify_post \ + return rtrn; + + +int icalclassify_publish_new(struct icalclassify_parts *comp, + struct icalclassify_parts *match, + const char* user) +{ + icalclassify_pre; + + if(comp->method == ICAL_METHOD_PUBLISH && + match == 0 && comp->inner_kind != ICAL_VFREEBUSY_COMPONENT){ + rtrn = 1; + } + + icalclassify_post; + +} + +int icalclassify_publish_update(struct icalclassify_parts *comp, + struct icalclassify_parts *match, + const char* user) +{ + icalclassify_pre; + + if(comp->method == ICAL_METHOD_PUBLISH && + match !=0 && comp->inner_kind != ICAL_VFREEBUSY_COMPONENT){ + rtrn = 1; + } + + icalclassify_post; + +} + +int icalclassify_publish_freebusy(struct icalclassify_parts *comp, + struct icalclassify_parts *match, + const char* user) +{ + icalclassify_pre; + + if(comp->method == ICAL_METHOD_PUBLISH && + comp->inner_kind == ICAL_VFREEBUSY_COMPONENT){ + rtrn = 1; + } + + icalclassify_post; + +} + + +int icalclassify_request_new(struct icalclassify_parts *comp, + struct icalclassify_parts *match, + const char* user) +{ + /* Method is REQUEST, and there is no match */ + + icalclassify_pre + + if(match->c==0 && comp->method == ICAL_METHOD_REQUEST){ + rtrn = 1; + } + + icalclassify_post + +} + +int icalclassify_request_update( + struct icalclassify_parts *comp, + struct icalclassify_parts *match, + const char* user) +{ + /* REQUEST method, Higher SEQUENCE than match, and all + time-related properties are unchanged */ + + icalclassify_pre + + if (match != 0 && + comp->sequence >= match->sequence && + !icalssutil_is_rescheduled(comp->c,match->c)){ + rtrn = 1; + } + + icalclassify_post + +} + +int icalclassify_request_reschedule( + struct icalclassify_parts *comp, + struct icalclassify_parts *match, + const char* user) +{ + /* REQUEST method, Higher SEQUENCE than match, and one or more + time-related properties are changed */ + icalclassify_pre + + if (match->c != 0 && + comp->sequence > match->sequence && + icalssutil_is_rescheduled(comp->c,match->c)){ + rtrn = 1; + } + + icalclassify_post + +} + +int icalclassify_request_delegate( + struct icalclassify_parts *comp, + struct icalclassify_parts *match, + const char* user) +{ + icalproperty* attendee; + icalparameter* param; + icalclassify_pre; + + attendee = icalclassify_find_attendee(comp->c,user); + + if(attendee == 0){ + return 0; + } + + param = icalproperty_get_first_parameter(attendee,ICAL_DELEGATEDFROM_PARAMETER); + + if (param != 0){ + rtrn = 1; + } + + icalclassify_post + +} + +int icalclassify_request_new_organizer( + struct icalclassify_parts *comp, + struct icalclassify_parts *match, + const char* user) +{ + /* Organizer has changed between match and component */ + icalclassify_pre + icalerror_set_errno(ICAL_UNIMPLEMENTED_ERROR); + icalclassify_post + +} + +int icalclassify_request_status( + struct icalclassify_parts *comp, + struct icalclassify_parts *match, + const char* user) +{ + icalclassify_pre + icalerror_set_errno(ICAL_UNIMPLEMENTED_ERROR); + icalclassify_post +} + +int icalclassify_request_forward( + struct icalclassify_parts *comp, + struct icalclassify_parts *match, + const char* user) +{ + icalclassify_pre + icalerror_set_errno(ICAL_UNIMPLEMENTED_ERROR); + icalclassify_post +} + +int icalclassify_request_freebusy( + struct icalclassify_parts *comp, + struct icalclassify_parts *match, + const char* user) +{ + icalclassify_pre + icalerror_set_errno(ICAL_UNIMPLEMENTED_ERROR); + icalclassify_post +} + +int icalclassify_reply_accept( + struct icalclassify_parts *comp, + struct icalclassify_parts *match, + const char* user) +{ + icalproperty* attendee; + icalclassify_pre; + + attendee = icalclassify_find_attendee(match->c,comp->reply_attendee); + + if(attendee != 0&& + comp->reply_partstat == ICAL_PARTSTAT_ACCEPTED){ + rtrn = 1; + } + + icalclassify_post +} +int icalclassify_reply_decline( + struct icalclassify_parts *comp, + struct icalclassify_parts *match, + const char* user) +{ + icalproperty* attendee; + icalclassify_pre; + + attendee = icalclassify_find_attendee(match->c,comp->reply_attendee); + + + if( attendee != 0 && + comp->reply_partstat == ICAL_PARTSTAT_DECLINED){ + rtrn = 1; + } + icalclassify_post +} +int icalclassify_reply_delegate( + struct icalclassify_parts *comp, + struct icalclassify_parts *match, + const char* user) +{ + icalproperty* attendee; + icalclassify_pre; + + attendee = icalclassify_find_attendee(match->c,comp->reply_attendee); + + if( attendee != 0 && + comp->reply_partstat == ICAL_PARTSTAT_DELEGATED){ + rtrn = 1; + } + icalclassify_post +} +int icalclassify_reply_crasher_accept( + struct icalclassify_parts *comp, + struct icalclassify_parts *match, + const char* user) +{ + icalproperty* attendee; + icalclassify_pre; + + attendee= icalclassify_find_attendee(match->c,comp->reply_attendee); + + if(attendee == 0 && + comp->reply_partstat == ICAL_PARTSTAT_ACCEPTED){ + rtrn = 1; + } + icalclassify_post +} +int icalclassify_reply_crasher_decline( + struct icalclassify_parts *comp, + struct icalclassify_parts *match, + const char* user) +{ + icalproperty* attendee; + icalclassify_pre; + + + attendee = icalclassify_find_attendee(match->c,comp->reply_attendee); + + if(attendee == 0 && + comp->reply_partstat == ICAL_PARTSTAT_DECLINED){ + rtrn = 1; + } + icalclassify_post +} +int icalclassify_add_instance( + struct icalclassify_parts *comp, + struct icalclassify_parts *match, + const char* user) +{ + icalclassify_pre + if(comp->method == ICAL_METHOD_ADD){ + rtrn = 1; + } + icalclassify_post +} +int icalclassify_cancel_event( + struct icalclassify_parts *comp, + struct icalclassify_parts *match, + const char* user) +{ + icalclassify_pre + if(comp->method == ICAL_METHOD_CANCEL){ + rtrn = 1; + } + icalclassify_post +} +int icalclassify_cancel_instance( + struct icalclassify_parts *comp, + struct icalclassify_parts *match, + const char* user) +{ + icalclassify_pre + if(comp->method == ICAL_METHOD_CANCEL){ + rtrn = 1; + } + icalclassify_post +} +int icalclassify_cancel_all( + struct icalclassify_parts *comp, + struct icalclassify_parts *match, + const char* user) +{ + icalclassify_pre + if(comp->method == ICAL_METHOD_CANCEL){ + rtrn = 1; + } + icalclassify_post +} +int icalclassify_refesh( + struct icalclassify_parts *comp, + struct icalclassify_parts *match, + const char* user) +{ + icalclassify_pre + if(comp->method == ICAL_METHOD_REFRESH){ + rtrn = 1; + } + icalclassify_post +} +int icalclassify_counter( + struct icalclassify_parts *comp, + struct icalclassify_parts *match, + const char* user) +{ + icalclassify_pre + if(comp->method == ICAL_METHOD_COUNTER){ + rtrn = 1; + } + icalclassify_post +} +int icalclassify_delinecounter( + struct icalclassify_parts *comp, + struct icalclassify_parts *match, + const char* user) +{ + icalclassify_pre + + if(comp->method == ICAL_METHOD_DECLINECOUNTER){ + rtrn = 1; + } + + icalclassify_post +} + +struct icalclassify_map { + icalproperty_method method; + int (*fn)(struct icalclassify_parts *comp,struct icalclassify_parts *match, const char* user); + icalproperty_xlicclass class; +} icalclassify_map[] = +{ {ICAL_METHOD_PUBLISH,icalclassify_publish_new,ICAL_XLICCLASS_PUBLISHNEW}, + {ICAL_METHOD_PUBLISH,icalclassify_publish_update,ICAL_XLICCLASS_PUBLISHUPDATE}, + {ICAL_METHOD_PUBLISH,icalclassify_publish_freebusy,ICAL_XLICCLASS_PUBLISHFREEBUSY}, + {ICAL_METHOD_REQUEST,icalclassify_request_delegate,ICAL_XLICCLASS_REQUESTDELEGATE}, + {ICAL_METHOD_REQUEST,icalclassify_request_new,ICAL_XLICCLASS_REQUESTNEW}, + {ICAL_METHOD_REQUEST,icalclassify_request_update,ICAL_XLICCLASS_REQUESTUPDATE}, + {ICAL_METHOD_REQUEST,icalclassify_request_reschedule,ICAL_XLICCLASS_REQUESTRESCHEDULE}, + + {ICAL_METHOD_REQUEST,icalclassify_request_new_organizer,ICAL_XLICCLASS_REQUESTNEWORGANIZER}, + {ICAL_METHOD_REQUEST,icalclassify_request_forward,ICAL_XLICCLASS_REQUESTFORWARD}, + {ICAL_METHOD_REQUEST,icalclassify_request_status,ICAL_XLICCLASS_REQUESTSTATUS}, + {ICAL_METHOD_REQUEST,icalclassify_request_freebusy,ICAL_XLICCLASS_REQUESTFREEBUSY}, + + {ICAL_METHOD_REPLY,icalclassify_reply_accept,ICAL_XLICCLASS_REPLYACCEPT}, + {ICAL_METHOD_REPLY,icalclassify_reply_decline,ICAL_XLICCLASS_REPLYDECLINE}, + {ICAL_METHOD_REPLY,icalclassify_reply_delegate,ICAL_XLICCLASS_REPLYDELEGATE}, + {ICAL_METHOD_REPLY,icalclassify_reply_crasher_accept,ICAL_XLICCLASS_REPLYCRASHERACCEPT}, + {ICAL_METHOD_REPLY,icalclassify_reply_crasher_decline,ICAL_XLICCLASS_REPLYCRASHERDECLINE}, + + {ICAL_METHOD_ADD,icalclassify_add_instance,ICAL_XLICCLASS_ADDINSTANCE}, + + {ICAL_METHOD_CANCEL,icalclassify_cancel_event,ICAL_XLICCLASS_CANCELEVENT}, + {ICAL_METHOD_CANCEL,icalclassify_cancel_instance,ICAL_XLICCLASS_CANCELINSTANCE}, + {ICAL_METHOD_CANCEL,icalclassify_cancel_all,ICAL_XLICCLASS_CANCELALL}, + + {ICAL_METHOD_REFRESH,icalclassify_refesh,ICAL_XLICCLASS_REFRESH}, + {ICAL_METHOD_COUNTER,icalclassify_counter,ICAL_XLICCLASS_COUNTER}, + {ICAL_METHOD_DECLINECOUNTER,icalclassify_delinecounter,ICAL_XLICCLASS_DECLINECOUNTER}, + {ICAL_METHOD_NONE,0,ICAL_XLICCLASS_NONE} +}; + + +icalproperty_xlicclass icalclassify(icalcomponent* c,icalcomponent* match, + const char* user) +{ + icalcomponent *inner; + icalproperty *p; + icalproperty_method method; + icalproperty_xlicclass class = ICAL_XLICCLASS_UNKNOWN; + + int i; + + struct icalclassify_parts comp_parts; + struct icalclassify_parts match_parts; + + inner = icalcomponent_get_first_real_component(c); + + if (inner == 0) { + return ICAL_XLICCLASS_NONE; + } + + icalssutil_get_parts(c,&comp_parts); + icalssutil_get_parts(match,&match_parts); + + /* Determine if the incoming component is obsoleted by the match */ + if(match != 0 && ( + comp_parts.method == ICAL_METHOD_REQUEST + )){ + assert ( ! ((comp_parts.dtstamp.is_utc==1)^ + (match_parts.dtstamp.is_utc==1))); + + if( comp_parts.sequence0) + { + /* comp has a smaller sequence and a later DTSTAMP */ + class = ICAL_XLICCLASS_MISSEQUENCED; + goto CLEANUP; + } + + if( (comp_parts.sequence +#include + +#if 0 +#include +#include /* for stat */ +#ifndef WIN32 +#include /* for stat, getpid */ +#else +#include +#include +#endif +#include /* for fcntl */ +#endif + +#include "icalcluster.h" +#include "icalclusterimpl.h" +#include "icalgauge.h" + +#ifdef WIN32 +#define snprintf _snprintf +#define strcasecmp stricmp +#endif + + +icalcluster * icalcluster_new_impl(void) { + + struct icalcluster_impl* impl; + + if ((impl = (struct icalcluster_impl*)malloc( + sizeof(struct icalcluster_impl))) == 0) { + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + return 0; + } + + memset(impl, 0, sizeof(struct icalcluster_impl)); + strcpy(impl->id,ICALCLUSTER_ID); + + return impl; +} + +/** + * Create a cluster with a key/value pair. + * + * @todo Always do a deep copy. + */ + +icalcluster * icalcluster_new(const char* key, icalcomponent *data) { + struct icalcluster_impl *impl = icalcluster_new_impl(); + assert(impl->data == 0); + + impl->key = strdup(key); + impl->changed = 0; + impl->data = 0; + + if (data != NULL) { + if (icalcomponent_isa(data) != ICAL_XROOT_COMPONENT) { + impl->data = icalcomponent_new(ICAL_XROOT_COMPONENT); + icalcomponent_add_component(impl->data, data); + } else { + impl->data = icalcomponent_new_clone(data); + } + } else { + impl->data = icalcomponent_new(ICAL_XROOT_COMPONENT); + } + + return impl; +} + +/** + * Deep clone an icalcluster to a new one + */ + +icalcluster *icalcluster_new_clone(const icalcluster *data) { + struct icalcluster_impl *old = (struct icalcluster_impl *)data; + struct icalcluster_impl *impl = icalcluster_new_impl(); + + impl->key = strdup(old->key); + impl->data = icalcomponent_new_clone(old->data); + impl->changed = 0; + + return impl; +} + + +void icalcluster_free(icalcluster *impl) { + icalerror_check_arg_rv((impl!=0),"cluster"); + + if (impl->key != 0){ + free(impl->key); + impl->key = 0; + } + + if (impl->data != 0){ + icalcomponent_free(impl->data); + impl->data = 0; + } + + free(impl); +} + + +const char *icalcluster_key(icalcluster *impl) { + icalerror_check_arg_rz((impl!=0),"cluster"); + + return impl->key; +} + + +int icalcluster_is_changed(icalcluster *impl) { + icalerror_check_arg_rz((impl!=0),"cluster"); + + return impl->changed; +} + + +void icalcluster_mark(icalcluster *impl) { + icalerror_check_arg_rv((impl!=0),"cluster"); + + impl->changed = 1; +} + + +void icalcluster_commit(icalcluster *impl) { + icalerror_check_arg_rv((impl!=0),"cluster"); + + impl->changed = 0; +} + + +icalcomponent *icalcluster_get_component(icalcluster *impl) { + + icalerror_check_arg_rz((impl!=0),"cluster"); + + if (icalcomponent_isa(impl->data) != ICAL_XROOT_COMPONENT) { + icalerror_warn("The top component is not an XROOT"); + fprintf(stderr, "%s\n", icalcomponent_as_ical_string(impl->data)); + abort(); + } + + return impl->data; +} + + +icalerrorenum icalcluster_add_component(icalcluster *impl, icalcomponent* child) { + + icalerror_check_arg_re((impl!=0),"cluster", ICAL_BADARG_ERROR); + icalerror_check_arg_re((child!=0),"child",ICAL_BADARG_ERROR); + + icalcomponent_add_component(impl->data, child); + icalcluster_mark(impl); + + return ICAL_NO_ERROR; +} + + +icalerrorenum icalcluster_remove_component(icalcluster *impl, icalcomponent* child) { + + icalerror_check_arg_re((impl!=0),"cluster",ICAL_BADARG_ERROR); + icalerror_check_arg_re((child!=0),"child",ICAL_BADARG_ERROR); + + icalcomponent_remove_component(impl->data,child); + icalcluster_mark(impl); + + return ICAL_NO_ERROR; +} + + +int icalcluster_count_components(icalcluster *impl, icalcomponent_kind kind) { + + icalerror_check_arg_re((impl!=0),"cluster",ICAL_BADARG_ERROR); + + return icalcomponent_count_components(impl->data, kind); +} + + +/** Iterate through components **/ +icalcomponent *icalcluster_get_current_component(icalcluster* impl) { + + icalerror_check_arg_rz((impl!=0),"cluster"); + + return icalcomponent_get_current_component(impl->data); +} + + +icalcomponent *icalcluster_get_first_component(icalcluster* impl) { + + icalerror_check_arg_rz((impl!=0),"cluster"); + + return icalcomponent_get_first_component(impl->data, + ICAL_ANY_COMPONENT); +} + + +icalcomponent *icalcluster_get_next_component(icalcluster* impl) { + + icalerror_check_arg_rz((impl!=0),"cluster"); + + return icalcomponent_get_next_component(impl->data, + ICAL_ANY_COMPONENT); +} diff --git a/mozilla/calendar/libical/src/libicalss/icalcluster.h b/mozilla/calendar/libical/src/libicalss/icalcluster.h new file mode 100644 index 00000000000..c8a6fef2be5 --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/icalcluster.h @@ -0,0 +1,61 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalcluster.h + CREATOR: eric 23 December 1999 + + + $Id: icalcluster.h,v 1.2 2002/06/27 02:30:58 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The Original Code is eric. The Initial Developer of the Original + Code is Eric Busboom + + +======================================================================*/ + +#ifndef ICALCLUSTER_H +#define ICALCLUSTER_H + +#include "ical.h" +#include "icalset.h" + +typedef struct icalcluster_impl icalcluster; + +icalcluster* icalcluster_new(const char *key, icalcomponent *data); +icalcluster* icalcluster_new_clone(const icalcluster *cluster); + +void icalcluster_free(icalcluster *cluster); + +const char* icalcluster_key(icalcluster *cluster); +int icalcluster_is_changed(icalcluster *cluster); +void icalcluster_mark(icalcluster *cluster); +void icalcluster_commit(icalcluster *cluster); + +icalcomponent* icalcluster_get_component(icalcluster* cluster); +int icalcluster_count_components(icalcluster *cluster, icalcomponent_kind kind); +icalerrorenum icalcluster_add_component(icalcluster* cluster, + icalcomponent* child); +icalerrorenum icalcluster_remove_component(icalcluster* cluster, + icalcomponent* child); + +icalcomponent* icalcluster_get_current_component(icalcluster* cluster); +icalcomponent* icalcluster_get_first_component(icalcluster* cluster); +icalcomponent* icalcluster_get_next_component(icalcluster* cluster); + +#endif /* !ICALCLUSTER_H */ + + + diff --git a/mozilla/calendar/libical/src/libicalss/icalclusterimpl.h b/mozilla/calendar/libical/src/libicalss/icalclusterimpl.h new file mode 100644 index 00000000000..08592a726e6 --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/icalclusterimpl.h @@ -0,0 +1,45 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: icalfilesetimpl.h + CREATOR: eric 23 December 1999 + + $Id: icalclusterimpl.h,v 1.1 2002/05/29 12:38:31 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The Original Code is eric. The Initial Developer of the Original + Code is Eric Busboom + + + ======================================================================*/ + + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +/* This definition is in its own file so it can be kept out of the + main header file, but used by "friend classes" like icaldirset*/ + +#define ICALCLUSTER_ID "clus" + +struct icalcluster_impl { + + char id[5]; /* clus */ + + char *key; + icalcomponent *data; + int changed; +}; diff --git a/mozilla/calendar/libical/src/libicalss/icalcsdb.h b/mozilla/calendar/libical/src/libicalss/icalcsdb.h new file mode 100644 index 00000000000..408143a93a5 --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/icalcsdb.h @@ -0,0 +1,67 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalcsdb.h Calendar Server Database + CREATOR: eric 23 December 1999 + + + $Id: icalcsdb.h,v 1.1.1.1 2001/01/02 07:33:03 ebusboom Exp $ + $Locker: $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + +======================================================================*/ + +#ifndef ICALCSDB_H +#define ICALCSDB_H + +#include "ical.h" + +typedef void icalcsdb; + +icalcsdb* icalcsdb_new(char* path); + +void icalcsdb_free(icalcsdb* csdb); + +icalerrorenum icalcsdb_create(icalcsdb* db, char* calid); + +icalerrorenum icalcsdb_delete(icalcsdb* db, char* calid); + +icalerrorenum icalcsdb_move(icalcsdb* db, char* oldcalid, char* newcalid); + +icalerrorenum icalcsdb_noop(icalcsdb* db); + +char* icalcsdb_generateuid(icalcsdb* db); + +icalcomponent* icalcsdb_expand_upn(icalcsdb* db, char* upn); +icalcomponent* icalcsdb_expand_calid(icalcsdb* db, char* calid); + +icalerrorenum icalcsbd_senddata(icalcsdb* db, icalcomponent* comp); + +icalset* icalcsdb_get_calendar(icalcsdb* db, char* calid, + icalcomponent *gauge); + +icalset* icalcsdb_get_vcars(icalcsdb* db); + +icalset* icalcsdb_get_properties(icalcsdb* db); + +icalset* icalcsdb_get_capabilities(icalcsdb* db); + +icalset* icalcsdb_get_timezones(icalcsdb* db); + + +#endif /* !ICALCSDB_H */ + + + diff --git a/mozilla/calendar/libical/src/libicalss/icaldirset.c b/mozilla/calendar/libical/src/libicalss/icaldirset.c new file mode 100644 index 00000000000..d3114c2e128 --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/icaldirset.c @@ -0,0 +1,805 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: icaldirset.c + CREATOR: eric 28 November 1999 + + $Id: icaldirset.c,v 1.21 2004/05/10 23:06:35 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The Original Code is eric. The Initial Developer of the Original + Code is Eric Busboom + + + ======================================================================*/ + + +/** + @file icaldirset.c + + @brief icaldirset manages a database of ical components and offers + interfaces for reading, writing and searching for components. + + icaldirset groups components in to clusters based on their DTSTAMP + time -- all components that start in the same month are grouped + together in a single file. All files in a store are kept in a single + directory. + + The primary interfaces are icaldirset__get_first_component and + icaldirset_get_next_component. These routine iterate through all of + the components in the store, subject to the current gauge. A gauge + is an icalcomponent that is tested against other componets for a + match. If a gauge has been set with icaldirset_select, + icaldirset_first and icaldirset_next will only return componentes + that match the gauge. + + The Store generated UIDs for all objects that are stored if they do + not already have a UID. The UID is the name of the cluster (month & + year as MMYYYY) plus a unique serial number. The serial number is + stored as a property of the cluster. + +*/ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + + +#include "ical.h" +#include "icaldirset.h" +#include "icaldirset.h" +#include "icalfileset.h" +#include "icalfilesetimpl.h" +#include "icalcluster.h" +#include "icalgauge.h" + +#include /* For PATH_MAX */ +#ifndef WIN32 +#include /* for opendir() */ +#include /* for stat, getpid */ +#include /* for uname */ +#else +#include +#include +#endif +#include +#include /* for opendir() */ +#include /* for stat */ +#include /* for clock() */ +#include /* for rand(), srand() */ +#include /* for strdup */ +#include "icaldirsetimpl.h" + + +#ifdef WIN32 +#define snprintf _snprintf +#define strcasecmp stricmp + +#define _S_ISTYPE(mode, mask) (((mode) & _S_IFMT) == (mask)) + +#define S_ISDIR(mode) _S_ISTYPE((mode), _S_IFDIR) +#define S_ISREG(mode) _S_ISTYPE((mode), _S_IFREG) +#endif + +/** Default options used when NULL is passed to icalset_new() **/ +icaldirset_options icaldirset_options_default = {O_RDWR|O_CREAT}; + + +const char* icaldirset_path(icalset* set) +{ + icaldirset *dset = (icaldirset*)set; + + return dset->dir; +} + + +void icaldirset_mark(icalset* set) +{ + icaldirset *dset = (icaldirset*)set; + + icalcluster_mark(dset->cluster); +} + + +icalerrorenum icaldirset_commit(icalset* set) +{ + icaldirset *dset = (icaldirset*)set; + icalset *fileset; + icalfileset_options options = icalfileset_options_default; + + options.cluster = dset->cluster; + + fileset = icalset_new(ICAL_FILE_SET, icalcluster_key(dset->cluster), &options); + + fileset->commit(fileset); + fileset->free(fileset); + + return ICAL_NO_ERROR; +} + +void icaldirset_lock(const char* dir) +{ +} + + +void icaldirset_unlock(const char* dir) +{ +} + +/* Load the contents of the store directory into the store's internal directory list*/ +icalerrorenum icaldirset_read_directory(icaldirset *dset) +{ + char *str; +#ifndef WIN32 + struct dirent *de; + DIR* dp; + + dp = opendir(dset->dir); + + if (dp == 0) { + icalerror_set_errno(ICAL_FILE_ERROR); + return ICAL_FILE_ERROR; + } + + /* clear contents of directory list */ + while((str = pvl_pop(dset->directory))){ + free(str); + } + + /* load all of the cluster names in the directory list */ + for(de = readdir(dp); + de != 0; + de = readdir(dp)){ + + /* Remove known directory names '.' and '..'*/ + if (strcmp(de->d_name,".") == 0 || + strcmp(de->d_name,"..") == 0 ){ + continue; + } + + pvl_push(dset->directory, (void*)strdup(de->d_name)); + } + + closedir(dp); +#else + struct _finddata_t c_file; + long hFile; + + /* Find first .c file in current directory */ + if( (hFile = _findfirst( "*", &c_file )) == -1L ) { + icalerror_set_errno(ICAL_FILE_ERROR); + return ICAL_FILE_ERROR; + } else { + while((str = pvl_pop(dset->directory))){ + free(str); + } + + /* load all of the cluster names in the directory list */ + do { + /* Remove known directory names '.' and '..'*/ + if (strcmp(c_file.name,".") == 0 || + strcmp(c_file.name,"..") == 0 ){ + continue; + } + + pvl_push(dset->directory, (void*)strdup(c_file.name)); + } + while ( _findnext( hFile, &c_file ) == 0 ); + + _findclose( hFile ); + } + +#endif + + return ICAL_NO_ERROR; +} + + +icalset* icaldirset_init(icalset* set, const char* dir, void* options_in) +{ + icaldirset *dset = (icaldirset*)set; + icaldirset_options *options = options_in; + struct stat sbuf; + + icalerror_check_arg_rz( (dir!=0), "dir"); + icalerror_check_arg_rz( (set!=0), "set"); + + if (stat(dir,&sbuf) != 0){ + icalerror_set_errno(ICAL_FILE_ERROR); + return 0; + } + + /* dir is not the name of a direectory*/ + if (!S_ISDIR(sbuf.st_mode)){ + icalerror_set_errno(ICAL_USAGE_ERROR); + return 0; + } + + icaldirset_lock(dir); + + dset->dir = (char*)strdup(dir); + dset->options = *options; + dset->directory = pvl_newlist(); + dset->directory_iterator = 0; + dset->gauge = 0; + dset->first_component = 0; + dset->cluster = 0; + + return set; +} + +icalset* icaldirset_new(const char* dir) +{ + return icalset_new(ICAL_DIR_SET, dir, &icaldirset_options_default); +} + + +icalset* icaldirset_new_reader(const char* dir) +{ + icaldirset_options reader_options = icaldirset_options_default; + + reader_options.flags = O_RDONLY; + + return icalset_new(ICAL_DIR_SET, dir, &reader_options); +} + + +icalset* icaldirset_new_writer(const char* dir) +{ + icaldirset_options writer_options = icaldirset_options_default; + + writer_options.flags = O_RDWR|O_CREAT; + + return icalset_new(ICAL_DIR_SET, dir, &writer_options); +} + + +void icaldirset_free(icalset* s) +{ + icaldirset *dset = (icaldirset*)s; + char* str; + + icaldirset_unlock(dset->dir); + + if(dset->dir !=0){ + free(dset->dir); + dset->dir = 0; + } + + if(dset->gauge !=0){ + icalgauge_free(dset->gauge); + dset->gauge = 0; + } + + if(dset->cluster !=0){ + icalcluster_free(dset->cluster); + } + + while(dset->directory !=0 && (str=pvl_pop(dset->directory)) != 0){ + free(str); + } + + if(dset->directory != 0){ + pvl_free(dset->directory); + dset->directory = 0; + } + + dset->directory_iterator = 0; + dset->first_component = 0; +} + + +/* icaldirset_next_uid_number updates a serial number in the Store + directory in a file called SEQUENCE */ + +int icaldirset_next_uid_number(icaldirset* dset) +{ + char sequence = 0; + char temp[128]; + char filename[ICAL_PATH_MAX]; + char *r; + FILE *f; + struct stat sbuf; + + icalerror_check_arg_rz( (dset!=0), "dset"); + + sprintf(filename,"%s/%s",dset->dir,"SEQUENCE"); + + /* Create the file if it does not exist.*/ + if (stat(filename,&sbuf) == -1 || !S_ISREG(sbuf.st_mode)){ + + f = fopen(filename,"w"); + if (f != 0){ + fprintf(f,"0"); + fclose(f); + } else { + icalerror_warn("Can't create SEQUENCE file in icaldirset_next_uid_number"); + return 0; + } + } + + if ( (f = fopen(filename,"r+")) != 0){ + + rewind(f); + r = fgets(temp,128,f); + + if (r == 0){ + sequence = 1; + } else { + sequence = atoi(temp)+1; + } + + rewind(f); + + fprintf(f,"%d",sequence); + + fclose(f); + + return sequence; + + } else { + icalerror_warn("Can't create SEQUENCE file in icaldirset_next_uid_number"); + return 0; + } +} + +icalerrorenum icaldirset_next_cluster(icaldirset* dset) +{ + char path[ICAL_PATH_MAX]; + + if (dset->directory_iterator == 0){ + icalerror_set_errno(ICAL_INTERNAL_ERROR); + return ICAL_INTERNAL_ERROR; + } + dset->directory_iterator = pvl_next(dset->directory_iterator); + + if (dset->directory_iterator == 0){ + /* There are no more clusters */ + if(dset->cluster != 0){ + icalcluster_free(dset->cluster); + dset->cluster = 0; + } + return ICAL_NO_ERROR; + } + + sprintf(path,"%s/%s", dset->dir,(char*)pvl_data(dset->directory_iterator)); + + icalcluster_free(dset->cluster); + dset->cluster = icalfileset_produce_icalcluster(path); + + return icalerrno; +} + +static void icaldirset_add_uid(icalcomponent* comp) +{ + char uidstring[ICAL_PATH_MAX]; + icalproperty *uid; +#ifndef WIN32 + struct utsname unamebuf; +#endif + + icalerror_check_arg_rv( (comp!=0), "comp"); + + uid = icalcomponent_get_first_property(comp,ICAL_UID_PROPERTY); + + if (uid == 0) { + +#ifndef WIN32 + uname(&unamebuf); + + sprintf(uidstring,"%d-%s",(int)getpid(),unamebuf.nodename); +#else + sprintf(uidstring,"%d-%s",(int)getpid(),"WINDOWS"); /* FIX: There must be an easy get the system name */ +#endif + + uid = icalproperty_new_uid(uidstring); + icalcomponent_add_property(comp,uid); + } else { + strcpy(uidstring,icalproperty_get_uid(uid)); + } +} + + +/** + This assumes that the top level component is a VCALENDAR, and there + is an inner component of type VEVENT, VTODO or VJOURNAL. The inner + component must have a DSTAMP property +*/ + +icalerrorenum icaldirset_add_component(icalset* set, icalcomponent* comp) +{ + char clustername[ICAL_PATH_MAX]; + icalproperty *dt = 0; + icalvalue *v; + struct icaltimetype tm; + icalerrorenum error = ICAL_NO_ERROR; + icalcomponent *inner; + icaldirset *dset = (icaldirset*) set; + + icalerror_check_arg_rz( (dset!=0), "dset"); + icalerror_check_arg_rz( (comp!=0), "comp"); + + icaldirset_add_uid(comp); + + /* Determine which cluster this object belongs in. This is a HACK */ + + for(inner = icalcomponent_get_first_component(comp,ICAL_ANY_COMPONENT); + inner != 0; + inner = icalcomponent_get_next_component(comp,ICAL_ANY_COMPONENT)){ + + dt = icalcomponent_get_first_property(inner,ICAL_DTSTAMP_PROPERTY); + + if (dt != 0) + break; + } + + if (dt == 0) { + for(inner = icalcomponent_get_first_component(comp,ICAL_ANY_COMPONENT); + inner != 0; + inner = icalcomponent_get_next_component(comp,ICAL_ANY_COMPONENT)){ + + dt = icalcomponent_get_first_property(inner,ICAL_DTSTART_PROPERTY); + + if (dt != 0) + break; + } + } + + if (dt == 0){ + icalerror_warn("The component does not have a DTSTAMP or DTSTART property, so it cannot be added to the store"); + icalerror_set_errno(ICAL_BADARG_ERROR); + return ICAL_BADARG_ERROR; + } + + v = icalproperty_get_value(dt); + tm = icalvalue_get_datetime(v); + + snprintf(clustername,ICAL_PATH_MAX,"%s/%04d%02d",dset->dir, tm.year, tm.month); + + /* Load the cluster and insert the object */ + if(dset->cluster != 0 && + strcmp(clustername,icalcluster_key(dset->cluster)) != 0 ){ + icalcluster_free(dset->cluster); + dset->cluster = 0; + } + + if (dset->cluster == 0){ + dset->cluster = icalfileset_produce_icalcluster(clustername); + + if (dset->cluster == 0){ + error = icalerrno; + } + } + + if (error != ICAL_NO_ERROR){ + icalerror_set_errno(error); + return error; + } + + /* Add the component to the cluster */ + icalcluster_add_component(dset->cluster,comp); + + /* icalcluster_mark(impl->cluster); */ + + return ICAL_NO_ERROR; +} + +/** + Remove a component in the current cluster. HACK. This routine is a + "friend" of icalfileset, and breaks its encapsulation. It was + either do it this way, or add several layers of interfaces that had + no other use. + */ + +icalerrorenum icaldirset_remove_component(icalset* set, icalcomponent* comp) +{ + icaldirset *dset = (icaldirset*)set; + icalcomponent *filecomp = icalcluster_get_component(dset->cluster); + + icalcompiter i; + int found = 0; + + icalerror_check_arg_re((set!=0),"set",ICAL_BADARG_ERROR); + icalerror_check_arg_re((comp!=0),"comp",ICAL_BADARG_ERROR); + icalerror_check_arg_re((dset->cluster!=0),"Cluster pointer",ICAL_USAGE_ERROR); + + for(i = icalcomponent_begin_component(filecomp,ICAL_ANY_COMPONENT); + icalcompiter_deref(&i)!= 0; icalcompiter_next(&i)){ + + icalcomponent *this = icalcompiter_deref(&i); + + if (this == comp){ + found = 1; + break; + } + } + + if (found != 1){ + icalerror_warn("icaldirset_remove_component: component is not part of current cluster"); + icalerror_set_errno(ICAL_USAGE_ERROR); + return ICAL_USAGE_ERROR; + } + + icalcluster_remove_component(dset->cluster,comp); + + /* icalcluster_mark(impl->cluster); */ + + /* If the removal emptied the fileset, get the next fileset */ + if( icalcluster_count_components(dset->cluster,ICAL_ANY_COMPONENT)==0){ + icalerrorenum error = icaldirset_next_cluster(dset); + + if(dset->cluster != 0 && error == ICAL_NO_ERROR){ + icalcluster_get_first_component(dset->cluster); + } else { + /* HACK. Not strictly correct for impl->cluster==0 */ + return error; + } + } else { + /* Do nothing */ + } + + return ICAL_NO_ERROR; +} + + + +int icaldirset_count_components(icalset* store, + icalcomponent_kind kind) +{ + /* HACK, not implemented */ + assert(0); + + return 0; +} + + +icalcomponent* icaldirset_fetch_match(icalset* set, icalcomponent *c) +{ + fprintf(stderr," icaldirset_fetch_match is not implemented\n"); + assert(0); + return 0; +} + + +icalcomponent* icaldirset_fetch(icalset* set, const char* uid) +{ + icaldirset *dset = (icaldirset*)set; + icalgauge *gauge; + icalgauge *old_gauge; + icalcomponent *c; + char sql[256]; + + icalerror_check_arg_rz( (set!=0), "set"); + icalerror_check_arg_rz( (uid!=0), "uid"); + + snprintf(sql, 256, "SELECT * FROM VEVENT WHERE UID = \"%s\"", uid); + + gauge = icalgauge_new_from_sql(sql, 0); + + old_gauge = dset->gauge; + dset->gauge = gauge; + + c= icaldirset_get_first_component(set); + + dset->gauge = old_gauge; + + icalgauge_free(gauge); + + return c; +} + + +int icaldirset_has_uid(icalset* set, const char* uid) +{ + icalcomponent *c; + + icalerror_check_arg_rz( (set!=0), "set"); + icalerror_check_arg_rz( (uid!=0), "uid"); + + /* HACK. This is a temporary implementation. _has_uid should use a + database, and _fetch should use _has_uid, not the other way + around */ + c = icaldirset_fetch(set,uid); + + return c!=0; + +} + + +icalerrorenum icaldirset_select(icalset* set, icalgauge* gauge) +{ + icaldirset *dset = (icaldirset*)set; + + icalerror_check_arg_re( (set!=0), "set",ICAL_BADARG_ERROR); + icalerror_check_arg_re( (gauge!=0), "gauge",ICAL_BADARG_ERROR); + + dset->gauge = gauge; + + return ICAL_NO_ERROR; +} + + +icalerrorenum icaldirset_modify(icalset* set, + icalcomponent *old, + icalcomponent *new) +{ + assert(0); + return ICAL_NO_ERROR; /* HACK, not implemented */ + +} + + +void icaldirset_clear(icalset* set) +{ + + assert(0); + return; + /* HACK, not implemented */ +} + +icalcomponent* icaldirset_get_current_component(icalset* set) +{ + icaldirset *dset = (icaldirset*)set; + + if (dset->cluster == 0){ + icaldirset_get_first_component(set); + } + if(dset->cluster == 0){ + return 0; + } + + return icalcluster_get_current_component(dset->cluster); +} + + +icalcomponent* icaldirset_get_first_component(icalset* set) +{ + icaldirset *dset = (icaldirset*)set; + + icalerrorenum error; + char path[ICAL_PATH_MAX]; + + error = icaldirset_read_directory(dset); + + if (error != ICAL_NO_ERROR){ + icalerror_set_errno(error); + return 0; + } + + dset->directory_iterator = pvl_head(dset->directory); + + if (dset->directory_iterator == 0){ + icalerror_set_errno(error); + return 0; + } + + snprintf(path,ICAL_PATH_MAX,"%s/%s", + dset->dir, + (char*)pvl_data(dset->directory_iterator)); + + /* If the next cluster we need is different than the current cluster, + delete the current one and get a new one */ + + if(dset->cluster != 0 && strcmp(path,icalcluster_key(dset->cluster)) != 0 ){ + icalcluster_free(dset->cluster); + dset->cluster = 0; + } + + if (dset->cluster == 0){ + dset->cluster = icalfileset_produce_icalcluster(path); + + if (dset->cluster == 0){ + error = icalerrno; + } + } + + if (error != ICAL_NO_ERROR){ + icalerror_set_errno(error); + return 0; + } + + dset->first_component = 1; + + return icaldirset_get_next_component(set); +} + + +icalcomponent* icaldirset_get_next_component(icalset* set) +{ + icaldirset *dset = (icaldirset*)set; + icalcomponent *c; + icalerrorenum error; + + icalerror_check_arg_rz( (set!=0), "set"); + + + if(dset->cluster == 0){ + icalerror_warn("icaldirset_get_next_component called with a NULL cluster (Caller must call icaldirset_get_first_component first"); + icalerror_set_errno(ICAL_USAGE_ERROR); + return 0; + + } + + /* Set the component iterator for the following for loop */ + if (dset->first_component == 1){ + icalcluster_get_first_component(dset->cluster); + dset->first_component = 0; + } else { + icalcluster_get_next_component(dset->cluster); + } + + while(1){ + /* Iterate through all of the objects in the cluster*/ + for( c = icalcluster_get_current_component(dset->cluster); + c != 0; + c = icalcluster_get_next_component(dset->cluster)){ + + /* If there is a gauge defined and the component does not + pass the gauge, skip the rest of the loop */ + + if (dset->gauge != 0 && icalgauge_compare(dset->gauge,c) == 0){ + continue; + } + + /* Either there is no gauge, or the component passed the + gauge, so return it*/ + + return c; + } + + /* Fell through the loop, so the component we want is not + in this cluster. Load a new cluster and try again.*/ + + error = icaldirset_next_cluster(dset); + + if(dset->cluster == 0 || error != ICAL_NO_ERROR){ + /* No more clusters */ + return 0; + } else { + c = icalcluster_get_first_component(dset->cluster); + + return c; + } + + } + + return 0; /* Should never get here */ +} + +icalsetiter icaldirset_begin_component(icalset* set, icalcomponent_kind kind, icalgauge* gauge) +{ + icalsetiter itr = icalsetiter_null; + icaldirset *fset = (icaldirset*) set; + + icalerror_check_arg_re((fset!=0), "set", icalsetiter_null); + + itr.iter.kind = kind; + itr.gauge = gauge; + + /* TO BE IMPLEMENTED */ + return icalsetiter_null; +} + +icalcomponent* icaldirsetiter_to_next(icalset* set, icalsetiter* i) +{ + /* TO BE IMPLEMENTED */ + return NULL; +} + +icalcomponent* icaldirsetiter_to_prior(icalset* set, icalsetiter* i) +{ + /* TO BE IMPLEMENTED */ + return NULL; +} diff --git a/mozilla/calendar/libical/src/libicalss/icaldirset.h b/mozilla/calendar/libical/src/libicalss/icaldirset.h new file mode 100644 index 00000000000..39de8a27462 --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/icaldirset.h @@ -0,0 +1,98 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icaldirset.h + CREATOR: eric 28 November 1999 + + + $Id: icaldirset.h,v 1.6 2002/06/27 02:30:58 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The Original Code is eric. The Initial Developer of the Original + Code is Eric Busboom + + +======================================================================*/ + +#ifndef ICALDIRSET_H +#define ICALDIRSET_H + +#include "ical.h" +#include "icalset.h" +#include "icalcluster.h" +#include "icalgauge.h" + +/* icaldirset Routines for storing, fetching, and searching for ical + * objects in a database */ + +typedef struct icaldirset_impl icaldirset; + +icalset* icaldirset_new(const char* path); + +icalset* icaldirset_new_reader(const char* path); +icalset* icaldirset_new_writer(const char* path); + + +icalset* icaldirset_init(icalset* set, const char *dsn, void *options); +void icaldirset_free(icalset* set); + +const char* icaldirset_path(icalset* set); + +/* Mark the cluster as changed, so it will be written to disk when it + is freed. Commit writes to disk immediately*/ +void icaldirset_mark(icalset* set); +icalerrorenum icaldirset_commit(icalset* set); + +icalerrorenum icaldirset_add_component(icalset* store, icalcomponent* comp); +icalerrorenum icaldirset_remove_component(icalset* store, icalcomponent* comp); + +int icaldirset_count_components(icalset* store, + icalcomponent_kind kind); + +/* Restrict the component returned by icaldirset_first, _next to those + that pass the gauge. _clear removes the gauge. */ +icalerrorenum icaldirset_select(icalset* store, icalgauge* gauge); +void icaldirset_clear(icalset* store); + +/* Get a component by uid */ +icalcomponent* icaldirset_fetch(icalset* store, const char* uid); +int icaldirset_has_uid(icalset* store, const char* uid); +icalcomponent* icaldirset_fetch_match(icalset* set, icalcomponent *c); + +/* Modify components according to the MODIFY method of CAP. Works on + the currently selected components. */ +icalerrorenum icaldirset_modify(icalset* store, icalcomponent *oldc, + icalcomponent *newc); + +/* Iterate through the components. If a gauge has been defined, these + will skip over components that do not pass the gauge */ + +icalcomponent* icaldirset_get_current_component(icalset* store); +icalcomponent* icaldirset_get_first_component(icalset* store); +icalcomponent* icaldirset_get_next_component(icalset* store); + +/* External iterator for thread safety */ +icalsetiter icaldirset_begin_component(icalset* set, icalcomponent_kind kind, icalgauge* gauge); +icalcomponent* icaldirsetiter_to_next(icalset* set, icalsetiter* i); +icalcomponent* icaldirsetiter_to_prior(icalset* set, icalsetiter* i); + +typedef struct icaldirset_options { + int flags; /**< flags corresponding to the open() system call O_RDWR, etc. */ +} icaldirset_options; + +#endif /* !ICALDIRSET_H */ + + + diff --git a/mozilla/calendar/libical/src/libicalss/icaldirsetimpl.h b/mozilla/calendar/libical/src/libicalss/icaldirsetimpl.h new file mode 100644 index 00000000000..f1c380ac8cf --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/icaldirsetimpl.h @@ -0,0 +1,48 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: icaldirsetimpl.h + CREATOR: eric 21 Aug 2000 + + $Id: icaldirsetimpl.h,v 1.4 2002/06/27 02:30:58 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The Original Code is eric. The Initial Developer of the Original + Code is Eric Busboom + + + ======================================================================*/ + + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "icalcluster.h" + +/* This definition is in its own file so it can be kept out of the + main header file, but used by "friend classes" like icalset*/ + +struct icaldirset_impl +{ + icalset super; /**< parent class */ + char* dir; /**< directory containing ics files */ + icaldirset_options options; /**< copy of options passed to icalset_new() */ + icalcluster* cluster; /**< cluster containing data */ + icalgauge* gauge; /**< gauge for filtering out data */ + int first_component; /**< ??? */ + pvl_list directory; /**< ??? */ + pvl_elem directory_iterator; /**< ??? */ +}; diff --git a/mozilla/calendar/libical/src/libicalss/icalfileset.c b/mozilla/calendar/libical/src/libicalss/icalfileset.c new file mode 100644 index 00000000000..cc0f607ce53 --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/icalfileset.c @@ -0,0 +1,921 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: icalfileset.c + CREATOR: eric 23 December 1999 + + $Id: icalfileset.c,v 1.32 2004/09/22 07:26:18 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The Original Code is eric. The Initial Developer of the Original + Code is Eric Busboom + + + ======================================================================*/ + + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "icalfileset.h" +#include "icalgauge.h" +#include +#include /* for stat */ +#ifndef WIN32 +#include /* for stat, getpid */ +#else +#include +#include +#endif +#include +#include +#include /* for fcntl */ +#include "icalfilesetimpl.h" +#include "icalclusterimpl.h" + +#ifdef WIN32 +#define snprintf _snprintf +#define strcasecmp stricmp + +#define _S_ISTYPE(mode, mask) (((mode) & _S_IFMT) == (mask)) + +#define S_ISDIR(mode) _S_ISTYPE((mode), _S_IFDIR) +#define S_ISREG(mode) _S_ISTYPE((mode), _S_IFREG) +#endif + +extern int errno; + +/** Default options used when NULL is passed to icalset_new() **/ +icalfileset_options icalfileset_options_default = {O_RDWR|O_CREAT, 0644, 0}; + +int icalfileset_lock(icalfileset *set); +int icalfileset_unlock(icalfileset *set); +icalerrorenum icalfileset_read_file(icalfileset* set, mode_t mode); +int icalfileset_filesize(icalfileset* set); + +icalerrorenum icalfileset_create_cluster(const char *path); + +icalset* icalfileset_new(const char* path) +{ + return icalset_new(ICAL_FILE_SET, path, &icalfileset_options_default); +} + +icalset* icalfileset_new_reader(const char* path) +{ + icalfileset_options reader_options = icalfileset_options_default; + reader_options.flags = O_RDONLY; + + return icalset_new(ICAL_FILE_SET, path, &reader_options); +} + +icalset* icalfileset_new_writer(const char* path) +{ + icalfileset_options writer_options = icalfileset_options_default; + writer_options.flags = O_RDONLY; + + return icalset_new(ICAL_FILE_SET, path, &writer_options); +} + +icalset* icalfileset_init(icalset *set, const char* path, void* options_in) +{ + icalfileset_options *options = (options_in) ? options_in : &icalfileset_options_default; + icalfileset *fset = (icalfileset*) set; + int flags; + mode_t mode; + off_t cluster_file_size; + + icalerror_clear_errno(); + icalerror_check_arg_rz( (path!=0), "path"); + icalerror_check_arg_rz( (fset!=0), "fset"); + + fset->path = strdup(path); + fset->options = *options; + + flags = options->flags; + mode = options->mode; + + cluster_file_size = icalfileset_filesize(fset); + + if(cluster_file_size < 0){ + icalfileset_free(set); + return 0; + } + +#ifndef WIN32 + fset->fd = open(fset->path, flags, mode); +#else + fset->fd = open(fset->path, flags | O_BINARY, mode); + /* fset->fd = sopen(fset->path,flags, _SH_DENYWR, _S_IREAD | _S_IWRITE); */ +#endif + + if (fset->fd < 0){ + icalerror_set_errno(ICAL_FILE_ERROR); + icalfileset_free(set); + return 0; + } + +#ifndef WIN32 + icalfileset_lock(fset); +#endif + + if(cluster_file_size > 0 ){ + icalerrorenum error; + if((error = icalfileset_read_file(fset,mode))!= ICAL_NO_ERROR){ + icalfileset_free(set); + return 0; + } + } + + if (options->cluster) { + fset->cluster = icalcomponent_new_clone(icalcluster_get_component(options->cluster)); + fset->changed = 1; + } + + if (fset->cluster == 0) { + fset->cluster = icalcomponent_new(ICAL_XROOT_COMPONENT); + } + + return set; +} + + +icalcluster* icalfileset_produce_icalcluster(const char *path) { + icalset *fileset; + icalcluster *ret; + + int errstate = icalerror_errors_are_fatal; + icalerror_errors_are_fatal = 0; + + fileset = icalfileset_new_reader(path); + + + if (fileset == 0 && icalerrno == ICAL_FILE_ERROR) { + /* file does not exist */ + ret = icalcluster_new(path, NULL); + } else { + ret = icalcluster_new(path, ((icalfileset*)fileset)->cluster); + icalfileset_free(fileset); + } + + icalerror_errors_are_fatal = errstate; + icalerror_set_errno(ICAL_NO_ERROR); + return ret; +} + + + +char* icalfileset_read_from_file(char *s, size_t size, void *d) +{ + char* p = s; + int fd = (int)d; + + /* Simulate fgets -- read single characters and stop at '\n' */ + + for(p=s; pfd); + set->cluster = icalparser_parse(parser,icalfileset_read_from_file); + icalparser_free(parser); + + if (set->cluster == 0 || icalerrno != ICAL_NO_ERROR){ + icalerror_set_errno(ICAL_PARSE_ERROR); + /*return ICAL_PARSE_ERROR;*/ + } + + if (icalcomponent_isa(set->cluster) != ICAL_XROOT_COMPONENT){ + /* The parser got a single component, so it did not put it in + an XROOT. */ + icalcomponent *cl = set->cluster; + set->cluster = icalcomponent_new(ICAL_XROOT_COMPONENT); + icalcomponent_add_component(set->cluster,cl); + } + + return ICAL_NO_ERROR; +} + +int icalfileset_filesize(icalfileset* fset) +{ + int cluster_file_size; + struct stat sbuf; + + if (stat(fset->path,&sbuf) != 0){ + + /* A file by the given name does not exist, or there was + another error */ + cluster_file_size = 0; + if (errno == ENOENT) { + /* It was because the file does not exist */ + return 0; + } else { + /* It was because of another error */ + icalerror_set_errno(ICAL_FILE_ERROR); + return -1; + } + } else { + /* A file by the given name exists, but is it a regular file? */ + + if (!S_ISREG(sbuf.st_mode)){ + /* Nope, not a regular file */ + icalerror_set_errno(ICAL_FILE_ERROR); + return -1; + } else { + /* Lets assume that it is a file of the right type */ + return sbuf.st_size; + } + } + + /*return -1; not reached*/ +} + +void icalfileset_free(icalset* set) +{ + icalfileset *fset = (icalfileset*) set; + + icalerror_check_arg_rv((set!=0),"set"); + + if (fset->cluster != 0){ + icalfileset_commit(set); + icalcomponent_free(fset->cluster); + fset->cluster=0; + } + + if (fset->gauge != 0){ + icalgauge_free(fset->gauge); + fset->gauge=0; + } + + if(fset->fd > 0){ + icalfileset_unlock(fset); + close(fset->fd); + fset->fd = -1; + } + + if(fset->path != 0){ + free(fset->path); + fset->path = 0; + } +} + +const char* icalfileset_path(icalset* set) { + icalerror_check_arg_rz((set!=0),"set"); + + return ((icalfileset*)set)->path; +} + + +int icalfileset_lock(icalfileset *set) +{ +#ifndef WIN32 + struct flock lock; + int rtrn; + + icalerror_check_arg_rz((set->fd>0),"set->fd"); + errno = 0; + lock.l_type = F_WRLCK; /* F_RDLCK, F_WRLCK, F_UNLCK */ + lock.l_start = 0; /* byte offset relative to l_whence */ + lock.l_whence = SEEK_SET; /* SEEK_SET, SEEK_CUR, SEEK_END */ + lock.l_len = 0; /* #bytes (0 means to EOF) */ + + rtrn = fcntl(set->fd, F_SETLKW, &lock); + + return rtrn; +#else + return 0; +#endif +} + +int icalfileset_unlock(icalfileset *set) +{ +#ifndef WIN32 + struct flock lock; + icalerror_check_arg_rz((set->fd>0),"set->fd"); + + lock.l_type = F_WRLCK; /* F_RDLCK, F_WRLCK, F_UNLCK */ + lock.l_start = 0; /* byte offset relative to l_whence */ + lock.l_whence = SEEK_SET; /* SEEK_SET, SEEK_CUR, SEEK_END */ + lock.l_len = 0; /* #bytes (0 means to EOF) */ + + return (fcntl(set->fd, F_UNLCK, &lock)); +#else + return 0; +#endif +} + +icalerrorenum icalfileset_commit(icalset* set) +{ + char tmp[ICAL_PATH_MAX]; + char *str; + icalcomponent *c; + off_t write_size=0; + icalfileset *fset = (icalfileset*) set; + + icalerror_check_arg_re((fset!=0),"set",ICAL_BADARG_ERROR); + + icalerror_check_arg_re((fset->fd>0),"set->fd is invalid", + ICAL_INTERNAL_ERROR) ; + + if (fset->changed == 0 ){ + return ICAL_NO_ERROR; + } + + if(lseek(fset->fd, 0, SEEK_SET) < 0){ + icalerror_set_errno(ICAL_FILE_ERROR); + return ICAL_FILE_ERROR; + } + + for(c = icalcomponent_get_first_component(fset->cluster,ICAL_ANY_COMPONENT); + c != 0; + c = icalcomponent_get_next_component(fset->cluster,ICAL_ANY_COMPONENT)){ + int sz; + + str = icalcomponent_as_ical_string(c); + + sz=write(fset->fd,str,strlen(str)); + + if ( sz != strlen(str)){ + perror("write"); + icalerror_set_errno(ICAL_FILE_ERROR); + return ICAL_FILE_ERROR; + } + + write_size += sz; + } + + fset->changed = 0; + +#ifndef WIN32 + if(ftruncate(fset->fd,write_size) < 0){ + return ICAL_FILE_ERROR; + } +#else + chsize( fset->fd, tell( fset->fd ) ); +#endif + + return ICAL_NO_ERROR; +} + +void icalfileset_mark(icalset* set) { + icalerror_check_arg_rv((set!=0),"set"); + + ((icalfileset*)set)->changed = 1; +} + +icalcomponent* icalfileset_get_component(icalset* set){ + icalfileset *fset = (icalfileset*) set; + icalerror_check_arg_rz((set!=0),"set"); + + return fset->cluster; +} + + +/* manipulate the components in the set */ + +icalerrorenum icalfileset_add_component(icalset *set, + icalcomponent* child) +{ + icalfileset *fset = (icalfileset*) set; + + icalerror_check_arg_re((set!=0),"set", ICAL_BADARG_ERROR); + icalerror_check_arg_re((child!=0),"child",ICAL_BADARG_ERROR); + + icalcomponent_add_component(fset->cluster,child); + + icalfileset_mark(set); + + return ICAL_NO_ERROR; +} + +icalerrorenum icalfileset_remove_component(icalset *set, + icalcomponent* child) +{ + icalfileset *fset = (icalfileset*) set; + + icalerror_check_arg_re((set!=0),"set",ICAL_BADARG_ERROR); + icalerror_check_arg_re((child!=0),"child",ICAL_BADARG_ERROR); + + icalcomponent_remove_component(fset->cluster,child); + + icalfileset_mark(set); + + return ICAL_NO_ERROR; +} + +int icalfileset_count_components(icalset *set, + icalcomponent_kind kind) +{ + icalfileset *fset = (icalfileset*) set; + + if (set == 0){ + icalerror_set_errno(ICAL_BADARG_ERROR); + return -1; + } + + return icalcomponent_count_components(fset->cluster,kind); +} + +icalerrorenum icalfileset_select(icalset* set, icalgauge* gauge) +{ + icalfileset *fset = (icalfileset*) set; + + icalerror_check_arg_re(gauge!=0,"gauge",ICAL_BADARG_ERROR); + + fset->gauge = gauge; + + return ICAL_NO_ERROR; +} + +void icalfileset_clear(icalset* set) +{ + icalfileset *fset = (icalfileset*) set; + + icalerror_check_arg_rv(set!=0,"set"); + + fset->gauge = 0; +} + +icalcomponent* icalfileset_fetch(icalset* set,const char* uid) +{ + icalfileset *fset = (icalfileset*) set; + icalcompiter i; + + icalerror_check_arg_rz(set!=0,"set"); + + for(i = icalcomponent_begin_component(fset->cluster,ICAL_ANY_COMPONENT); + icalcompiter_deref(&i)!= 0; icalcompiter_next(&i)){ + + icalcomponent *this = icalcompiter_deref(&i); + icalcomponent *inner; + icalproperty *p; + const char *this_uid; + + for(inner = icalcomponent_get_first_component(this,ICAL_ANY_COMPONENT); + inner != 0; + inner = icalcomponent_get_next_component(this,ICAL_ANY_COMPONENT)){ + + p = icalcomponent_get_first_property(inner,ICAL_UID_PROPERTY); + if ( p ) + { + this_uid = icalproperty_get_uid(p); + + if(this_uid==0){ + icalerror_warn("icalfileset_fetch found a component with no UID"); + continue; + } + + if (strcmp(uid,this_uid)==0){ + return this; + } + } + } + } + + return 0; +} + +int icalfileset_has_uid(icalset* set,const char* uid) +{ + assert(0); /* HACK, not implemented */ + return 0; +} + +/******* support routines for icalfileset_fetch_match *********/ + +struct icalfileset_id{ + char* uid; + char* recurrence_id; + int sequence; +}; + +void icalfileset_id_free(struct icalfileset_id *id) +{ + if(id->recurrence_id != 0){ + free(id->recurrence_id); + } + + if(id->uid != 0){ + free(id->uid); + } +} + + +struct icalfileset_id icalfileset_get_id(icalcomponent* comp) +{ + icalcomponent *inner; + struct icalfileset_id id; + icalproperty *p; + + inner = icalcomponent_get_first_real_component(comp); + + p = icalcomponent_get_first_property(inner, ICAL_UID_PROPERTY); + + assert(p!= 0); + + id.uid = strdup(icalproperty_get_uid(p)); + + p = icalcomponent_get_first_property(inner, ICAL_SEQUENCE_PROPERTY); + + if(p == 0) { + id.sequence = 0; + } else { + id.sequence = icalproperty_get_sequence(p); + } + + p = icalcomponent_get_first_property(inner, ICAL_RECURRENCEID_PROPERTY); + + if (p == 0){ + id.recurrence_id = 0; + } else { + icalvalue *v; + v = icalproperty_get_value(p); + id.recurrence_id = strdup(icalvalue_as_ical_string(v)); + + assert(id.recurrence_id != 0); + } + + return id; +} + + +/* Find the component that is related to the given + component. Currently, it just matches based on UID and + RECURRENCE-ID */ +icalcomponent* icalfileset_fetch_match(icalset* set, icalcomponent *comp) +{ + icalfileset *fset = (icalfileset*) set; + icalcompiter i; + + struct icalfileset_id comp_id, match_id; + + comp_id = icalfileset_get_id(comp); + + for(i = icalcomponent_begin_component(fset->cluster,ICAL_ANY_COMPONENT); + icalcompiter_deref(&i)!= 0; icalcompiter_next(&i)){ + + icalcomponent *match = icalcompiter_deref(&i); + + match_id = icalfileset_get_id(match); + + if(strcmp(comp_id.uid, match_id.uid) == 0 && + ( comp_id.recurrence_id ==0 || + strcmp(comp_id.recurrence_id, match_id.recurrence_id) ==0 )){ + + /* HACK. What to do with SEQUENCE? */ + + icalfileset_id_free(&match_id); + icalfileset_id_free(&comp_id); + return match; + + } + + icalfileset_id_free(&match_id); + } + + icalfileset_id_free(&comp_id); + return 0; + +} + + +icalerrorenum icalfileset_modify(icalset* set, icalcomponent *old, + icalcomponent *new) +{ + icalfileset *fset = (icalfileset*) set; + + assert(0); /* HACK, not implemented */ + return ICAL_NO_ERROR; +} + + +/* Iterate through components */ +icalcomponent* icalfileset_get_current_component (icalset* set) +{ + icalfileset *fset = (icalfileset*) set; + + icalerror_check_arg_rz((set!=0),"set"); + + return icalcomponent_get_current_component(fset->cluster); +} + + +icalcomponent* icalfileset_get_first_component(icalset* set) +{ + icalcomponent *c=0; + icalfileset *fset = (icalfileset*) set; + + icalerror_check_arg_rz((set!=0),"set"); + + do { + if (c == 0){ + c = icalcomponent_get_first_component(fset->cluster, + ICAL_ANY_COMPONENT); + } else { + c = icalcomponent_get_next_component(fset->cluster, + ICAL_ANY_COMPONENT); + } + + if(c != 0 && (fset->gauge == 0 || + icalgauge_compare(fset->gauge, c) == 1)){ + return c; + } + + } while(c != 0); + + + return 0; +} + +icalcomponent* icalfileset_get_next_component(icalset* set) +{ + icalfileset *fset = (icalfileset*) set; + icalcomponent *c; + + icalerror_check_arg_rz((set!=0),"set"); + + do { + c = icalcomponent_get_next_component(fset->cluster, + ICAL_ANY_COMPONENT); + + if(c != 0 && (fset->gauge == 0 || + icalgauge_compare(fset->gauge,c) == 1)){ + return c; + } + + } while(c != 0); + + + return 0; +} +/* +icalsetiter icalfileset_begin_component(icalset* set, icalcomponent_kind kind, icalgauge* gauge) +{ + icalsetiter itr = icalsetiter_null; + icalcomponent* comp = NULL; + icalcompiter citr; + icalfileset *fset = (icalfileset*) set; + + icalerror_check_arg_re((set!=0), "set", icalsetiter_null); + + itr.gauge = gauge; + + citr = icalcomponent_begin_component(fset->cluster, kind); + comp = icalcompiter_deref(&citr); + + while (comp != 0) { + comp = icalcompiter_deref(&citr); + if (gauge == 0 || icalgauge_compare(itr.gauge, comp) == 1) { + itr.iter = citr; + return itr; + } + comp = icalcompiter_next(&citr); + } + + return icalsetiter_null; +} +*/ + +icalsetiter icalfileset_begin_component(icalset* set, icalcomponent_kind kind, icalgauge* gauge) +{ + icalsetiter itr = icalsetiter_null; + icalcomponent* comp = NULL; + icalcompiter citr; + icalfileset *fset = (icalfileset*) set; + struct icaltimetype start, next; + icalproperty *dtstart, *rrule, *prop, *due; + struct icalrecurrencetype recur; + int g = 0; + + icalerror_check_arg_re((set!=0), "set", icalsetiter_null); + + itr.gauge = gauge; + + citr = icalcomponent_begin_component(fset->cluster, kind); + comp = icalcompiter_deref(&citr); + + if (gauge == 0) { + itr.iter = citr; + return itr; + } + + while (comp != 0) { + + /* check if it is a recurring component and with guage expand, if so + we need to add recurrence-id property to the given component */ + rrule = icalcomponent_get_first_property(comp, ICAL_RRULE_PROPERTY); + g = icalgauge_get_expand(gauge); + + if (rrule != 0 + && g == 1) { + + recur = icalproperty_get_rrule(rrule); + if (icalcomponent_isa(comp) == ICAL_VEVENT_COMPONENT) { + dtstart = icalcomponent_get_first_property(comp, ICAL_DTSTART_PROPERTY); + if (dtstart) + start = icalproperty_get_dtstart(dtstart); + } else if (icalcomponent_isa(comp) == ICAL_VTODO_COMPONENT) { + due = icalcomponent_get_first_property(comp, ICAL_DUE_PROPERTY); + if (due) + start = icalproperty_get_due(due); + } + + if (itr.last_component == NULL) { + itr.ritr = icalrecur_iterator_new(recur, start); + next = icalrecur_iterator_next(itr.ritr); + itr.last_component = comp; + } + else { + next = icalrecur_iterator_next(itr.ritr); + if (icaltime_is_null_time(next)){ + itr.last_component = NULL; + icalrecur_iterator_free(itr.ritr); + itr.ritr = NULL; + return icalsetiter_null; + } else { + itr.last_component = comp; + } + } + + /* add recurrence-id to the component + if there is a recurrence-id already, remove it, then add the new one */ + if (prop = icalcomponent_get_first_property(comp, ICAL_RECURRENCEID_PROPERTY)) + icalcomponent_remove_property(comp, prop); + icalcomponent_add_property(comp, icalproperty_new_recurrenceid(next)); + + } + + if (gauge == 0 || icalgauge_compare(itr.gauge, comp) == 1) { + /* matches and returns */ + itr.iter = citr; + return itr; + } + + /* if there is no previous component pending, then get the next component */ + if (itr.last_component == NULL) + comp = icalcompiter_next(&citr); + } + + return icalsetiter_null; +} +icalcomponent* icalfileset_form_a_matched_recurrence_component(icalsetiter* itr) +{ + icalcomponent* comp = NULL; + struct icaltimetype start, next; + icalproperty *dtstart, *rrule, *prop, *due; + struct icalrecurrencetype recur; + + comp = itr->last_component; + + if (comp == NULL || itr->gauge == NULL) { + return NULL; + } + + rrule = icalcomponent_get_first_property(comp, ICAL_RRULE_PROPERTY); + + recur = icalproperty_get_rrule(rrule); + + if (icalcomponent_isa(comp) == ICAL_VEVENT_COMPONENT) { + dtstart = icalcomponent_get_first_property(comp, ICAL_DTSTART_PROPERTY); + if (dtstart) + start = icalproperty_get_dtstart(dtstart); + } else if (icalcomponent_isa(comp) == ICAL_VTODO_COMPONENT) { + due = icalcomponent_get_first_property(comp, ICAL_DUE_PROPERTY); + if (due) + start = icalproperty_get_due(due); + } + + if (itr->ritr == NULL) { + itr->ritr = icalrecur_iterator_new(recur, start); + next = icalrecur_iterator_next(itr->ritr); + itr->last_component = comp; + } else { + next = icalrecur_iterator_next(itr->ritr); + if (icaltime_is_null_time(next)){ + /* no more recurrence, returns */ + itr->last_component = NULL; + icalrecur_iterator_free(itr->ritr); + itr->ritr = NULL; + return NULL; + } else { + itr->last_component = comp; + } + } + + /* add recurrence-id to the component + * if there is a recurrence-id already, remove it, then add the new one */ + if (prop = icalcomponent_get_first_property(comp, ICAL_RECURRENCEID_PROPERTY)) + icalcomponent_remove_property(comp, prop); + icalcomponent_add_property(comp, icalproperty_new_recurrenceid(next)); + + if (itr->gauge == 0 || icalgauge_compare(itr->gauge, comp) == 1) { + /* matches and returns */ + return comp; + } + /* not matched */ + return NULL; + +} +icalcomponent* icalfilesetiter_to_next(icalset* set, icalsetiter* i) +{ + + icalcomponent* c = NULL; + icalfileset *fset = (icalfileset*) set; + struct icaltimetype start, next; + icalproperty *dtstart, *rrule, *prop, *due; + struct icalrecurrencetype recur; + int g = 0; + + + do { + c = icalcompiter_next(&(i->iter)); + + if (c == 0) continue; + if (i->gauge == 0) return c; + + + rrule = icalcomponent_get_first_property(c, ICAL_RRULE_PROPERTY); + g = icalgauge_get_expand(i->gauge); + + /* a recurring component with expand query */ + if (rrule != 0 + && g == 1) { + + recur = icalproperty_get_rrule(rrule); + + if (icalcomponent_isa(c) == ICAL_VEVENT_COMPONENT) { + dtstart = icalcomponent_get_first_property(c, ICAL_DTSTART_PROPERTY); + if (dtstart) + start = icalproperty_get_dtstart(dtstart); + } else if (icalcomponent_isa(c) == ICAL_VTODO_COMPONENT) { + due = icalcomponent_get_first_property(c, ICAL_DUE_PROPERTY); + if (due) + start = icalproperty_get_due(due); + } + + if (i->ritr == NULL) { + i->ritr = icalrecur_iterator_new(recur, start); + next = icalrecur_iterator_next(i->ritr); + i->last_component = c; + } else { + next = icalrecur_iterator_next(i->ritr); + if (icaltime_is_null_time(next)) { + /* no more recurrence, returns */ + i->last_component = NULL; + icalrecur_iterator_free(i->ritr); + i->ritr = NULL; + return NULL; + } else { + i->last_component = c; + } + } + } + + /* add recurrence-id to the component + * if there is a recurrence-id already, remove it, then add the new one */ + if (prop = icalcomponent_get_first_property(c, ICAL_RECURRENCEID_PROPERTY)) + icalcomponent_remove_property(c, prop); + icalcomponent_add_property(c, icalproperty_new_recurrenceid(next)); + + if(c != 0 && (i->gauge == 0 || + icalgauge_compare(i->gauge, c) == 1)){ + return c; + } + } while (c != 0); + + return 0; + +} diff --git a/mozilla/calendar/libical/src/libicalss/icalfileset.h b/mozilla/calendar/libical/src/libicalss/icalfileset.h new file mode 100644 index 00000000000..1deca47c49a --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/icalfileset.h @@ -0,0 +1,131 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalfileset.h + CREATOR: eric 23 December 1999 + + + $Id: icalfileset.h,v 1.13 2002/12/05 13:45:20 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The Original Code is eric. The Initial Developer of the Original + Code is Eric Busboom + + +======================================================================*/ + +#ifndef ICALFILESET_H +#define ICALFILESET_H + +#include "ical.h" +#include "icalset.h" +#include "icalcluster.h" +#include "icalgauge.h" +#include /* For open() flags and mode */ +#include /* For open() flags and mode */ +#include /* For open() flags and mode */ + +#ifdef WIN32 +#define mode_t int +#endif + +typedef struct icalfileset_impl icalfileset; + +icalset* icalfileset_new(const char* path); +icalset* icalfileset_new_reader(const char* path); +icalset* icalfileset_new_writer(const char* path); + +icalset* icalfileset_init(icalset *set, const char *dsn, void* options); + +icalfileset* icalfileset_new_from_cluster(const char* path, icalcluster *cluster); + +icalcluster* icalfileset_produce_icalcluster(const char *path); + +void icalfileset_free(icalset* cluster); + +const char* icalfileset_path(icalset* cluster); + +/* Mark the cluster as changed, so it will be written to disk when it + is freed. Commit writes to disk immediately. */ +void icalfileset_mark(icalset* set); +icalerrorenum icalfileset_commit(icalset* set); + +icalerrorenum icalfileset_add_component(icalset* set, + icalcomponent* child); + +icalerrorenum icalfileset_remove_component(icalset* set, + icalcomponent* child); + +int icalfileset_count_components(icalset* set, + icalcomponent_kind kind); + +/** + * Restrict the component returned by icalfileset_first, _next to those + * that pass the gauge. _clear removes the gauge + */ +icalerrorenum icalfileset_select(icalset* set, icalgauge* gauge); + +/** clear the gauge **/ +void icalfileset_clear(icalset* set); + +/** Get and search for a component by uid **/ +icalcomponent* icalfileset_fetch(icalset* set, const char* uid); +int icalfileset_has_uid(icalset* set, const char* uid); +icalcomponent* icalfileset_fetch_match(icalset* set, icalcomponent *c); + + +/** + * Modify components according to the MODIFY method of CAP. Works on the + * currently selected components. + */ +icalerrorenum icalfileset_modify(icalset* set, + icalcomponent *oldcomp, + icalcomponent *newcomp); + +/* Iterate through components. If a gauge has been defined, these + will skip over components that do not pass the gauge */ + +icalcomponent* icalfileset_get_current_component (icalset* cluster); +icalcomponent* icalfileset_get_first_component(icalset* cluster); +icalcomponent* icalfileset_get_next_component(icalset* cluster); + +/* External iterator for thread safety */ +icalsetiter icalfileset_begin_component(icalset* set, icalcomponent_kind kind, icalgauge* gauge); +icalcomponent * icalfilesetiter_to_next(icalset* set, icalsetiter *iter); +icalcomponent* icalfileset_form_a_matched_recurrence_component(icalsetiter* itr); + +/** Return a reference to the internal component. You probably should + not be using this. */ + +icalcomponent* icalfileset_get_component(icalset* cluster); + +/** + * @brief options for opening an icalfileset. + * + * These options should be passed to the icalset_new() function + */ + +typedef struct icalfileset_options { + int flags; /**< flags for open() O_RDONLY, etc */ + mode_t mode; /**< file mode */ + icalcluster *cluster; /**< use this cluster to initialize data */ +} icalfileset_options; + +extern icalfileset_options icalfileset_options_default; + +#endif /* !ICALFILESET_H */ + + + diff --git a/mozilla/calendar/libical/src/libicalss/icalfilesetimpl.h b/mozilla/calendar/libical/src/libicalss/icalfilesetimpl.h new file mode 100644 index 00000000000..9fac8ad3728 --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/icalfilesetimpl.h @@ -0,0 +1,53 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: icalfilesetimpl.h + CREATOR: eric 23 December 1999 + + $Id: icalfilesetimpl.h,v 1.5 2002/06/27 02:30:58 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The Original Code is eric. The Initial Developer of the Original + Code is Eric Busboom + + + ======================================================================*/ + +#ifndef ICALFILESETIMPL_H +#define ICALFILESETIMPL_H + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "icalgauge.h" + +/* This definition is in its own file so it can be kept out of the + main header file, but used by "friend classes" like icaldirset*/ + +#define ICALFILESET_ID "fset" + +struct icalfileset_impl { + icalset super; /**< parent class */ + char *path; /**< pathname of file */ + icalfileset_options options; /**< copy of options passed to icalset_new() */ + + icalcomponent* cluster; /**< cluster containing data */ + icalgauge* gauge; /**< gauge for filtering out data */ + int changed; /**< boolean flag, 1 if data has changed */ + int fd; /**< file descriptor */ +}; + +#endif diff --git a/mozilla/calendar/libical/src/libicalss/icalgauge.c b/mozilla/calendar/libical/src/libicalss/icalgauge.c new file mode 100644 index 00000000000..2bced9981f5 --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/icalgauge.c @@ -0,0 +1,529 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalgauge.c + CREATOR: eric 23 December 1999 + + + $Id: icalgauge.c,v 1.13 2002/09/26 22:26:06 lindner Exp $ + $Locker: $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The Original Code is eric. The Initial Developer of the Original + Code is Eric Busboom + + +======================================================================*/ + +#include "ical.h" +#include "icalgauge.h" +#include "icalgaugeimpl.h" +#include + +#include "icalssyacc.h" + +typedef void* yyscan_t; + +int ssparse(yyscan_t ); + + +icalgauge* icalgauge_new_from_sql(char* sql, int expand) +{ + struct icalgauge_impl *impl; + yyscan_t yy_globals = NULL; + + int r; + + if ( ( impl = (struct icalgauge_impl*) + malloc(sizeof(struct icalgauge_impl))) == 0) { + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + return 0; + } + + impl->select = pvl_newlist(); + impl->from = pvl_newlist(); + impl->where = pvl_newlist(); + impl->expand = expand; + + sslex_init(&yy_globals); + + ssset_extra(impl, yy_globals); + + ss_scan_string(sql, yy_globals); + + r = ssparse(yy_globals); + sslex_destroy(yy_globals); + + if (r == 0) { + return impl; + } + else { + icalgauge_free(impl); + return NULL; + } +} + +int icalgauge_get_expand(icalgauge* gauge) +{ +return (gauge->expand); + +} + +void icalgauge_free(icalgauge* gauge) +{ + struct icalgauge_where *w; + + assert(gauge->select != 0); + assert(gauge->where != 0); + assert(gauge->from != 0); + + if(gauge->select){ + while( (w=pvl_pop(gauge->select)) != 0){ + if(w->value != 0){ + free(w->value); + } + free(w); + } + pvl_free(gauge->select); + gauge->select = 0; + } + + if(gauge->where){ + while( (w=pvl_pop(gauge->where)) != 0){ + + if(w->value != 0){ + free(w->value); + } + free(w); + } + pvl_free(gauge->where); + gauge->where = 0; + } + + if(gauge->from){ + pvl_free(gauge->from); + gauge->from = 0; + } + + free(gauge); + +} + + +/** Convert a VQUERY component into a gauge */ +icalcomponent* icalgauge_make_gauge(icalcomponent* query); + +/** + icaldirset_test compares a component against a gauge, and returns + true if the component passes the test + + The gauge is a VCALENDAR component that specifies how to test the + target components. The gauge holds a collection of VEVENT, VTODO or + VJOURNAL sub-components. Each of the sub-components has a + collection of properties that are compared to corresponding + properties in the target component, according to the + X-LIC-COMPARETYPE parameters to the gauge's properties. + + When a gauge has several sub-components, the results of testing the + target against each of them is ORed together - the target + component will pass if it matches any of the sub-components in the + gauge. However, the results of matching the properties in a + sub-component are ANDed -- the target must match every property in + a gauge sub-component to match the sub-component. + + Here is an example: + + BEGIN:XROOT + DTSTART;X-LIC-COMPARETYPE=LESS:19981025T020000 + ORGANIZER;X-LIC-COMPARETYPE=EQUAL:mrbig@host.com + END:XROOT + BEGIN:XROOT + LOCATION;X-LIC-COMPARETYPE=EQUAL:McNary's Pub + END:XROOT + + This gauge has two sub-components; one which will match a VEVENT + based on start time, and organizer, and another that matches based + on LOCATION. A target component will pass the test if it matched + either of the sub-components. + + */ + + +int icalgauge_compare_recurse(icalcomponent* comp, icalcomponent* gauge) +{ + int pass = 1,localpass = 0; + icalproperty *p; + icalcomponent *child,*subgauge; + icalcomponent_kind gaugekind, compkind; + + icalerror_check_arg_rz( (comp!=0), "comp"); + icalerror_check_arg_rz( (gauge!=0), "gauge"); + + gaugekind = icalcomponent_isa(gauge); + compkind = icalcomponent_isa(comp); + + if( ! (gaugekind == compkind || gaugekind == ICAL_ANY_COMPONENT) ){ + return 0; + } + + /* Test properties. For each property in the gauge, search through + the component for a similar property. If one is found, compare + the two properties value with the comparison specified in the + gauge with the X-LIC-COMPARETYPE parameter */ + + for(p = icalcomponent_get_first_property(gauge,ICAL_ANY_PROPERTY); + p != 0; + p = icalcomponent_get_next_property(gauge,ICAL_ANY_PROPERTY)){ + + icalproperty* targetprop; + icalparameter* compareparam; + icalparameter_xliccomparetype compare; + int rel; /* The relationship between the gauge and target values.*/ + + /* Extract the comparison type from the gauge. If there is no + comparison type, assume that it is "EQUAL" */ + + compareparam = icalproperty_get_first_parameter( + p, + ICAL_XLICCOMPARETYPE_PARAMETER); + + if (compareparam!=0){ + compare = icalparameter_get_xliccomparetype(compareparam); + } else { + compare = ICAL_XLICCOMPARETYPE_EQUAL; + } + + /* Find a property in the component that has the same type + as the gauge property. HACK -- multiples of a single + property type in the gauge will match only the first + instance in the component */ + + targetprop = icalcomponent_get_first_property(comp, + icalproperty_isa(p)); + + if(targetprop != 0){ + + /* Compare the values of the gauge property and the target + property */ + + rel = icalvalue_compare(icalproperty_get_value(p), + icalproperty_get_value(targetprop)); + + /* Now see if the comparison is equavalent to the comparison + specified in the gauge */ + + if (rel == compare){ + localpass++; + } else if (compare == ICAL_XLICCOMPARETYPE_LESSEQUAL && + ( rel == ICAL_XLICCOMPARETYPE_LESS || + rel == ICAL_XLICCOMPARETYPE_EQUAL)) { + localpass++; + } else if (compare == ICAL_XLICCOMPARETYPE_GREATEREQUAL && + ( rel == ICAL_XLICCOMPARETYPE_GREATER || + rel == ICAL_XLICCOMPARETYPE_EQUAL)) { + localpass++; + } else if (compare == ICAL_XLICCOMPARETYPE_NOTEQUAL && + ( rel == ICAL_XLICCOMPARETYPE_GREATER || + rel == ICAL_XLICCOMPARETYPE_LESS)) { + localpass++; + } else { + localpass = 0; + } + + pass = pass && (localpass>0); + } + } + + /* Test subcomponents. Look for a child component that has a + counterpart in the gauge. If one is found, recursively call + icaldirset_test */ + + for(subgauge = icalcomponent_get_first_component(gauge,ICAL_ANY_COMPONENT); + subgauge != 0; + subgauge = icalcomponent_get_next_component(gauge,ICAL_ANY_COMPONENT)){ + + gaugekind = icalcomponent_isa(subgauge); + + if (gaugekind == ICAL_ANY_COMPONENT){ + child = icalcomponent_get_first_component(comp,ICAL_ANY_COMPONENT); + } else { + child = icalcomponent_get_first_component(comp,gaugekind); + } + + if(child !=0){ + localpass = icalgauge_compare_recurse(child,subgauge); + pass = pass && localpass; + } else { + pass = 0; + } + } + + return pass; +} + + +int icalgauge_compare(icalgauge* gauge,icalcomponent* comp) +{ + + icalcomponent *inner; + int local_pass = 0; + int last_clause = 1, this_clause = 1; + pvl_elem e; + icalcomponent_kind kind; + icalproperty *rrule; + int compare_recur = 0; + + + icalerror_check_arg_rz( (comp!=0), "comp"); + icalerror_check_arg_rz( (gauge!=0), "gauge"); + + if (gauge == 0 || comp == 0) return 0; + + inner = icalcomponent_get_first_real_component(comp); + + if(inner == 0){ + /* Wally Yau: our component is not always wrapped with + * a . It's not an error. + * icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + * return 0; */ + kind = icalcomponent_isa(comp); + if(kind == ICAL_VEVENT_COMPONENT || + kind == ICAL_VTODO_COMPONENT || + kind == ICAL_VJOURNAL_COMPONENT || + kind == ICAL_VQUERY_COMPONENT || + kind == ICAL_VAGENDA_COMPONENT){ + inner = comp; + } + else { + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + return 0; + } + inner = comp; + } + + /* Check that this component is one of the FROM types */ + local_pass = 0; + for(e = pvl_head(gauge->from);e!=0;e=pvl_next(e)){ + icalcomponent_kind k = (icalcomponent_kind)pvl_data(e); + + if(k == icalcomponent_isa(inner)){ + local_pass=1; + } + } + + if(local_pass == 0){ + return 0; + } + + + /**** Check each where clause against the component ****/ + for(e = pvl_head(gauge->where);e!=0;e=pvl_next(e)){ + struct icalgauge_where *w = pvl_data(e); + icalcomponent *sub_comp; + icalvalue *v; + icalproperty *prop; + icalvalue_kind vk; + + if(w->prop == ICAL_NO_PROPERTY || w->value == 0){ + icalerror_set_errno(ICAL_INTERNAL_ERROR); + return 0; + } + + /* First, create a value from the gauge */ + vk = icalenum_property_kind_to_value_kind(w->prop); + + if(vk == ICAL_NO_VALUE){ + icalerror_set_errno(ICAL_INTERNAL_ERROR); + return 0; + } + + if (w->compare == ICALGAUGECOMPARE_ISNULL || w->compare == ICALGAUGECOMPARE_ISNOTNULL) + v = icalvalue_new(vk); + else + v = icalvalue_new_from_string(vk,w->value); + + if (v == 0){ + /* Keep error set by icalvalue_from-string*/ + return 0; + } + + /* Now find the corresponding property in the component, + descending into a sub-component if necessary */ + + if(w->comp == ICAL_NO_COMPONENT){ + sub_comp = inner; + } else { + sub_comp = icalcomponent_get_first_component(inner,w->comp); + if(sub_comp == 0){ + return 0; + } + } + + /* check if it is a recurring */ + rrule = icalcomponent_get_first_property(sub_comp,ICAL_RRULE_PROPERTY); + + if (gauge->expand + && rrule) { + + if (w->prop == ICAL_DTSTART_PROPERTY || + w->prop == ICAL_DTEND_PROPERTY || + w->prop == ICAL_DUE_PROPERTY){ + /** needs to use recurrence-id to do comparison */ + compare_recur = 1; + } + + } + + + this_clause = 0; + local_pass = (w->compare == ICALGAUGECOMPARE_ISNULL) ? 1 : 0; + + for(prop = icalcomponent_get_first_property(sub_comp,w->prop); + prop != 0; + prop = icalcomponent_get_next_property(sub_comp,w->prop)){ + icalvalue* prop_value; + icalgaugecompare relation; + + if (w->compare == ICALGAUGECOMPARE_ISNULL) { + local_pass = 0; + break; + } + + if (w->compare == ICALGAUGECOMPARE_ISNOTNULL) { + local_pass = 1; + break; + } + + if (compare_recur) { + icalproperty *p = icalcomponent_get_first_property(sub_comp, ICAL_RECURRENCEID_PROPERTY); + prop_value = icalproperty_get_value(p); + } + else /* prop value from this component */ + prop_value = icalproperty_get_value(prop); + + relation = (icalgaugecompare)icalvalue_compare(prop_value,v); + + if (relation == w->compare){ + local_pass++; + } else if (w->compare == ICALGAUGECOMPARE_LESSEQUAL && + ( relation == ICALGAUGECOMPARE_LESS || + relation == ICALGAUGECOMPARE_EQUAL)) { + local_pass++; + } else if (w->compare == ICALGAUGECOMPARE_GREATEREQUAL && + ( relation == ICALGAUGECOMPARE_GREATER || + relation == ICALGAUGECOMPARE_EQUAL)) { + local_pass++; + } else if (w->compare == ICALGAUGECOMPARE_NOTEQUAL && + ( relation == ICALGAUGECOMPARE_GREATER || + relation == ICALGAUGECOMPARE_LESS)) { + local_pass++; + } else { + local_pass = 0; + } + } + + + this_clause = local_pass > 0 ? 1 : 0; + + + /* Now look at the logic operator for this clause to see how + the value should be merge with the previous clause */ + + if(w->logic == ICALGAUGELOGIC_AND){ + last_clause = this_clause && last_clause; + } else if(w->logic == ICALGAUGELOGIC_OR) { + last_clause = this_clause || last_clause; + } else { + last_clause = this_clause; + } + + icalvalue_free(v); + + }/**** check next one in where clause ****/ + + return last_clause; + +} + +/** @brief Debug + * Print gauge information to stdout. + */ + +void icalgauge_dump(icalgauge* gauge) +{ + + pvl_elem p; + + printf("--- Select ---\n"); + for(p = pvl_head(gauge->select);p!=0;p=pvl_next(p)){ + struct icalgauge_where *w = pvl_data(p); + + if(w->comp != ICAL_NO_COMPONENT){ + printf("%s ",icalenum_component_kind_to_string(w->comp)); + } + + if(w->prop != ICAL_NO_PROPERTY){ + printf("%s ",icalenum_property_kind_to_string(w->prop)); + } + + if (w->compare != ICALGAUGECOMPARE_NONE){ + printf("%d ",w->compare); + } + + + if (w->value!=0){ + printf("%s",w->value); + } + + + printf("\n"); + } + + printf("--- From ---\n"); + for(p = pvl_head(gauge->from);p!=0;p=pvl_next(p)){ + icalcomponent_kind k = (icalcomponent_kind)pvl_data(p); + + printf("%s\n",icalenum_component_kind_to_string(k)); + } + + printf("--- Where ---\n"); + for(p = pvl_head(gauge->where);p!=0;p=pvl_next(p)){ + struct icalgauge_where *w = pvl_data(p); + + if(w->logic != ICALGAUGELOGIC_NONE){ + printf("%d ",w->logic); + } + + if(w->comp != ICAL_NO_COMPONENT){ + printf("%s ",icalenum_component_kind_to_string(w->comp)); + } + + if(w->prop != ICAL_NO_PROPERTY){ + printf("%s ",icalenum_property_kind_to_string(w->prop)); + } + + if (w->compare != ICALGAUGECOMPARE_NONE){ + printf("%d ",w->compare); + } + + + if (w->value!=0){ + printf("%s",w->value); + } + + + printf("\n"); + } +} + diff --git a/mozilla/calendar/libical/src/libicalss/icalgauge.h b/mozilla/calendar/libical/src/libicalss/icalgauge.h new file mode 100644 index 00000000000..a698360d0cf --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/icalgauge.h @@ -0,0 +1,61 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalgauge.h + CREATOR: eric 23 December 1999 + + + $Id: icalgauge.h,v 1.4 2002/06/27 02:30:59 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The Original Code is eric. The Initial Developer of the Original + Code is Eric Busboom + + +======================================================================*/ + +#ifndef ICALGAUGE_H +#define ICALGAUGE_H + +/** @file icalgauge.h + * @brief Routines implementing a filter for ical components + */ + +typedef struct icalgauge_impl icalgauge; + +icalgauge* icalgauge_new_from_sql(char* sql, int expand); + +int icalgauge_get_expand(icalgauge* gauge); + +void icalgauge_free(icalgauge* gauge); + +char* icalgauge_as_sql(icalcomponent* gauge); + +void icalgauge_dump(icalgauge* gauge); + + +/** @brief Return true if comp matches the gauge. + * + * The component must be in + * cannonical form -- a VCALENDAR with one VEVENT, VTODO or VJOURNAL + * sub component + */ +int icalgauge_compare(icalgauge* g, icalcomponent* comp); + +/** Clone the component, but only return the properties + * specified in the gauge */ +icalcomponent* icalgauge_new_clone(icalgauge* g, icalcomponent* comp); + +#endif /* ICALGAUGE_H*/ diff --git a/mozilla/calendar/libical/src/libicalss/icalgaugeimpl.h b/mozilla/calendar/libical/src/libicalss/icalgaugeimpl.h new file mode 100644 index 00000000000..40dcf9b7ae6 --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/icalgaugeimpl.h @@ -0,0 +1,63 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalgaugeimpl.h + CREATOR: eric 09 Aug 2000 + + + $Id: icalgaugeimpl.h,v 1.6 2002/07/21 17:18:15 lindner Exp $ + $Locker: $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + +======================================================================*/ + +#include "ical.h" + +typedef enum icalgaugecompare { + ICALGAUGECOMPARE_EQUAL=ICAL_XLICCOMPARETYPE_EQUAL, + ICALGAUGECOMPARE_LESS=ICAL_XLICCOMPARETYPE_LESS, + ICALGAUGECOMPARE_LESSEQUAL=ICAL_XLICCOMPARETYPE_LESSEQUAL, + ICALGAUGECOMPARE_GREATER=ICAL_XLICCOMPARETYPE_GREATER, + ICALGAUGECOMPARE_GREATEREQUAL=ICAL_XLICCOMPARETYPE_GREATEREQUAL, + ICALGAUGECOMPARE_NOTEQUAL=ICAL_XLICCOMPARETYPE_NOTEQUAL, + ICALGAUGECOMPARE_REGEX=ICAL_XLICCOMPARETYPE_REGEX, + ICALGAUGECOMPARE_ISNULL=ICAL_XLICCOMPARETYPE_ISNULL, + ICALGAUGECOMPARE_ISNOTNULL=ICAL_XLICCOMPARETYPE_ISNOTNULL, + ICALGAUGECOMPARE_NONE=0 +} icalgaugecompare; + +typedef enum icalgaugelogic { + ICALGAUGELOGIC_NONE, + ICALGAUGELOGIC_AND, + ICALGAUGELOGIC_OR +} icalgaugelogic; + + +struct icalgauge_where { + icalgaugelogic logic; + icalcomponent_kind comp; + icalproperty_kind prop; + icalgaugecompare compare; + char* value; +}; + +struct icalgauge_impl +{ + pvl_list select; /**< Of icalgaugecompare, using only prop and comp fields*/ + pvl_list from; /**< List of component_kinds, as integers */ + pvl_list where; /**< List of icalgaugecompare */ + int expand; +}; + + diff --git a/mozilla/calendar/libical/src/libicalss/icalmessage.c b/mozilla/calendar/libical/src/libicalss/icalmessage.c new file mode 100644 index 00000000000..e81132753ca --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/icalmessage.c @@ -0,0 +1,378 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: icalmessage.c + CREATOR: ebusboom 07 Nov 2000 + + $Id: icalmessage.c,v 1.5 2002/06/27 02:30:59 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + + ======================================================================*/ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "icalmessage.h" +#include "icalenums.h" +#include /* for tolower()*/ +#include /* for strstr */ +#include /* for free(), malloc() */ +icalcomponent* icalmessage_get_inner(icalcomponent* comp) +{ + if (icalcomponent_isa(comp) == ICAL_VCALENDAR_COMPONENT){ + return icalcomponent_get_first_real_component(comp); + } else { + return comp; + } +} + +static char* lowercase(const char* str) +{ + char* p = 0; + char* n = icalmemory_strdup(str); + + if(str ==0){ + return 0; + } + + for(p = n; *p!=0; p++){ + *p = tolower(*p); + } + + return n; +} + +icalproperty* icalmessage_find_attendee(icalcomponent* comp, const char* user) +{ + icalcomponent *inner = icalmessage_get_inner(comp); + icalproperty *p,*attendee = 0; + char* luser = lowercase(user); + + for(p = icalcomponent_get_first_property(inner, ICAL_ATTENDEE_PROPERTY); + p != 0; + p = icalcomponent_get_next_property(inner, ICAL_ATTENDEE_PROPERTY) + ){ + + char* lattendee; + + lattendee = lowercase(icalproperty_get_attendee(p)); + + if (strstr(lattendee,user) != 0){ + attendee = p; + break; + } + + free(lattendee); + + } + + free(luser); + + return attendee; + +} + +void icalmessage_copy_properties(icalcomponent* to, icalcomponent* from, + icalproperty_kind kind) +{ + icalcomponent *to_inner = icalmessage_get_inner(to); + icalcomponent *from_inner = icalmessage_get_inner(from); + + if (to_inner == 0 && from_inner == 0){ + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + return; + } + + if(!icalcomponent_get_first_property(from_inner,kind)){ + return; + } + + icalcomponent_add_property(to_inner, + icalproperty_new_clone( + icalcomponent_get_first_property( + from_inner, + kind) + ) + ); +} + +icalcomponent *icalmessage_new_reply_base(icalcomponent* c, + const char* user, + const char* msg) +{ + icalproperty *attendee; + char tmp[45]; + + icalcomponent *reply = icalcomponent_vanew( + ICAL_VCALENDAR_COMPONENT, + icalproperty_new_method(ICAL_METHOD_REPLY), + icalcomponent_vanew( + ICAL_VEVENT_COMPONENT, + icalproperty_new_dtstamp(icaltime_from_timet(time(0),0)), + 0), + 0); + + icalcomponent *inner = icalmessage_get_inner(reply); + + icalerror_check_arg_rz(c,"c"); + + icalmessage_copy_properties(reply,c,ICAL_UID_PROPERTY); + icalmessage_copy_properties(reply,c,ICAL_ORGANIZER_PROPERTY); + icalmessage_copy_properties(reply,c,ICAL_RECURRENCEID_PROPERTY); + icalmessage_copy_properties(reply,c,ICAL_SUMMARY_PROPERTY); + icalmessage_copy_properties(reply,c,ICAL_SEQUENCE_PROPERTY); + + icalcomponent_set_dtstamp(reply,icaltime_from_timet(time(0),0)); + + if(msg != 0){ + icalcomponent_add_property(inner,icalproperty_new_comment(msg)); + } + + /* Copy this user's attendee property */ + + attendee = icalmessage_find_attendee(c,user); + + if (attendee == 0){ + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); + icalcomponent_free(reply); + return 0; + } + + icalcomponent_add_property(inner,icalproperty_new_clone(attendee)); + + /* Add PRODID and VERSION */ + + icalcomponent_add_property(reply,icalproperty_new_version("2.0")); + +#ifndef WIN32 + sprintf(tmp, + "-//SoftwareStudio//NONSGML %s %s //EN",PACKAGE,VERSION); +#else + sprintf(tmp, + "-//SoftwareStudio//NONSGML %s %s //EN",ICAL_PACKAGE,ICAL_VERSION); +#endif + icalcomponent_add_property(reply,icalproperty_new_prodid(tmp)); + + return reply; + +} + +icalcomponent* icalmessage_new_accept_reply(icalcomponent* c, + const char* user, + const char* msg) +{ + + icalcomponent *reply; + icalproperty *attendee; + icalcomponent *inner; + + icalerror_check_arg_rz(c,"c"); + + reply = icalmessage_new_reply_base(c,user,msg); + + if(reply == 0){ + return 0; + } + + inner = icalmessage_get_inner(reply); + + attendee = icalcomponent_get_first_property(inner, + ICAL_ATTENDEE_PROPERTY); + + icalproperty_set_parameter(attendee, + icalparameter_new_partstat(ICAL_PARTSTAT_ACCEPTED)); + + return reply; +} + +icalcomponent* icalmessage_new_decline_reply(icalcomponent* c, + const char* user, + const char* msg) +{ + icalcomponent *reply; + icalproperty *attendee; + icalcomponent *inner; + + icalerror_check_arg_rz(c,"c"); + + reply = icalmessage_new_reply_base(c,user,msg); + inner = icalmessage_get_inner(reply); + if(reply == 0){ + return 0; + } + + attendee = icalcomponent_get_first_property(inner, + ICAL_ATTENDEE_PROPERTY); + + icalproperty_set_parameter(attendee, + icalparameter_new_partstat(ICAL_PARTSTAT_DECLINED)); + + return reply; +} + +/* New is modified version of old */ +icalcomponent* icalmessage_new_counterpropose_reply(icalcomponent* oldc, + icalcomponent* newc, + const char* user, + const char* msg) +{ + icalcomponent *reply; + + icalerror_check_arg_rz(oldc,"oldc"); + icalerror_check_arg_rz(newc,"newc"); + + reply = icalmessage_new_reply_base(newc,user,msg); + + icalcomponent_set_method(reply,ICAL_METHOD_COUNTER); + + return reply; + +} + + +icalcomponent* icalmessage_new_delegate_reply(icalcomponent* c, + const char* user, + const char* delegatee, + const char* msg) +{ + + icalcomponent *reply; + icalproperty *attendee; + icalcomponent *inner; + + icalerror_check_arg_rz(c,"c"); + + reply = icalmessage_new_reply_base(c,user,msg); + inner = icalmessage_get_inner(reply); + if(reply == 0){ + return 0; + } + + attendee = icalcomponent_get_first_property(inner, + ICAL_ATTENDEE_PROPERTY); + + icalproperty_set_parameter(attendee, + icalparameter_new_partstat(ICAL_PARTSTAT_DELEGATED)); + + icalproperty_set_parameter(attendee, + icalparameter_new_delegatedto(delegatee)); + + return reply; + +} + +icalcomponent* icalmessage_new_delegate_request(icalcomponent* c, + const char* user, + const char* delegatee, + const char* msg) +{ + + icalcomponent *reply; + icalproperty *attendee; + icalcomponent *inner; + + icalerror_check_arg_rz(c,"c"); + + reply = icalmessage_new_reply_base(c,user,msg); + inner = icalmessage_get_inner(reply); + + if(reply == 0){ + return 0; + } + + icalcomponent_set_method(reply,ICAL_METHOD_REQUEST); + + attendee = icalcomponent_get_first_property(inner, + ICAL_ATTENDEE_PROPERTY); + + icalproperty_set_parameter(attendee, + icalparameter_new_partstat(ICAL_PARTSTAT_DELEGATED)); + + icalproperty_set_parameter(attendee, + icalparameter_new_delegatedto(delegatee)); + + icalcomponent_add_property( + inner, + icalproperty_vanew_attendee( + delegatee, + icalparameter_new_delegatedfrom( + icalproperty_get_attendee(attendee) + ), + 0 + ) + ); + + + return reply; + +} + + +icalcomponent* icalmessage_new_cancel_event(icalcomponent* c, + const char* user, + const char* msg); +icalcomponent* icalmessage_new_cancel_instance(icalcomponent* c, + const char* user, + const char* msg); +icalcomponent* icalmessage_new_cancel_all(icalcomponent* c, + const char* user, + const char* msg); + + + +icalcomponent* icalmessage_new_error_reply(icalcomponent* c, + const char* user, + const char* msg, + const char* debug, + icalrequeststatus code) +{ + icalcomponent *reply; + icalcomponent *inner, *cinner; + struct icalreqstattype rs; + + icalerror_check_arg_rz(c,"c"); + + reply = icalmessage_new_reply_base(c,user,msg); + inner = icalmessage_get_inner(reply); + cinner = icalmessage_get_inner(c); + if(reply == 0){ + return 0; + } + + if( code != ICAL_UNKNOWN_STATUS){ + rs.code = code; + rs.debug = debug; + + icalcomponent_add_property(inner, + icalproperty_new_requeststatus(rs)); + } else { /* code == ICAL_UNKNOWN_STATUS */ + + /* Copy all of the request status properties */ + icalproperty *p; + for(p = icalcomponent_get_first_property(cinner, + ICAL_REQUESTSTATUS_PROPERTY); + p != 0; + p = icalcomponent_get_next_property(cinner, + ICAL_REQUESTSTATUS_PROPERTY)){ + + + icalcomponent_add_property(inner,icalproperty_new_clone(p)); + } + } + + return reply; +} diff --git a/mozilla/calendar/libical/src/libicalss/icalmessage.h b/mozilla/calendar/libical/src/libicalss/icalmessage.h new file mode 100644 index 00000000000..d13db05fd12 --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/icalmessage.h @@ -0,0 +1,71 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalmessage.h + CREATOR: eric 07 Nov 2000 + + + $Id: icalmessage.h,v 1.1.1.1 2001/01/02 07:33:05 ebusboom Exp $ + $Locker: $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + + =========================================================================*/ + +#include "ical.h" + +#ifndef ICALMESSAGE_H +#define ICALMESSAGE_H + + +icalcomponent* icalmessage_new_accept_reply(icalcomponent* c, + const char* user, + const char* msg); + +icalcomponent* icalmessage_new_decline_reply(icalcomponent* c, + const char* user, + const char* msg); + +/* New is modified version of old */ +icalcomponent* icalmessage_new_counterpropose_reply(icalcomponent* oldc, + icalcomponent* newc, + const char* user, + const char* msg); + + +icalcomponent* icalmessage_new_delegate_reply(icalcomponent* c, + const char* user, + const char* delegatee, + const char* msg); + + +icalcomponent* icalmessage_new_cancel_event(icalcomponent* c, + const char* user, + const char* msg); +icalcomponent* icalmessage_new_cancel_instance(icalcomponent* c, + const char* user, + const char* msg); +icalcomponent* icalmessage_new_cancel_all(icalcomponent* c, + const char* user, + const char* msg); + + +icalcomponent* icalmessage_new_error_reply(icalcomponent* c, + const char* user, + const char* msg, + const char* debug, + icalrequeststatus rs); + + +#endif /* ICALMESSAGE_H*/ diff --git a/mozilla/calendar/libical/src/libicalss/icalset.c b/mozilla/calendar/libical/src/libicalss/icalset.c new file mode 100644 index 00000000000..8f7acd621e4 --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/icalset.c @@ -0,0 +1,493 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalset.c + CREATOR: eric 17 Jul 2000 + + + Icalset is the "base class" for representations of a collection of + iCal components. Derived classes (actually delegates) include: + + icalfileset Store components in a single file + icaldirset Store components in multiple files in a directory + icalheapset Store components on the heap + icalmysqlset Store components in a mysql database. + + $Id: icalset.c,v 1.16 2002/07/21 17:00:26 lindner Exp $ + $Locker: $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The Original Code is eric. The Initial Developer of the Original + Code is Eric Busboom + + +======================================================================*/ + +#include "ical.h" +#include "icalset.h" +#include "icalfileset.h" +#include "icalfilesetimpl.h" +#include "icaldirset.h" +#include "icaldirsetimpl.h" +#include +#include +#include + +#ifdef WITH_BDB4 +#include "icalbdbset.h" +#include "icalbdbsetimpl.h" +#endif + +/* #define _DLOPEN_TEST */ +#ifdef _DLOPEN_TEST +#include +#include +#include +#endif + +static icalset icalset_dirset_init = { + ICAL_DIR_SET, + sizeof(icaldirset), + NULL, + icaldirset_init, + icaldirset_free, + icaldirset_path, + icaldirset_mark, + icaldirset_commit, + icaldirset_add_component, + icaldirset_remove_component, + icaldirset_count_components, + icaldirset_select, + icaldirset_clear, + icaldirset_fetch, + icaldirset_fetch_match, + icaldirset_has_uid, + icaldirset_modify, + icaldirset_get_current_component, + icaldirset_get_first_component, + icaldirset_get_next_component, + icaldirset_begin_component, + icaldirsetiter_to_next, + icaldirsetiter_to_prior +}; + + +static icalset icalset_fileset_init = { + ICAL_FILE_SET, + sizeof(icalfileset), + NULL, + icalfileset_init, + icalfileset_free, + icalfileset_path, + icalfileset_mark, + icalfileset_commit, + icalfileset_add_component, + icalfileset_remove_component, + icalfileset_count_components, + icalfileset_select, + icalfileset_clear, + icalfileset_fetch, + icalfileset_fetch_match, + icalfileset_has_uid, + icalfileset_modify, + icalfileset_get_current_component, + icalfileset_get_first_component, + icalfileset_get_next_component, + icalfileset_begin_component, + icalfilesetiter_to_next, + NULL +}; + +#ifdef WITH_BDB4 +static icalset icalset_bdbset_init = { + ICAL_BDB_SET, + sizeof(icalbdbset), + NULL, + icalbdbset_init, + icalbdbset_free, + icalbdbset_path, + icalbdbset_mark, + icalbdbset_commit, + icalbdbset_add_component, + icalbdbset_remove_component, + icalbdbset_count_components, + icalbdbset_select, + icalbdbset_clear, + icalbdbset_fetch, + icalbdbset_fetch_match, + icalbdbset_has_uid, + icalbdbset_modify, + icalbdbset_get_current_component, + icalbdbset_get_first_component, + icalbdbset_get_next_component, + icalbdbset_begin_component, + icalbdbsetiter_to_next, + NULL +}; +#endif + +#ifdef _DLOPEN_TEST +static int icalset_init_done = 0; +static pvl_list icalset_kinds = 0; + +typedef icalset *(*fptr)(void); + +/** + * Try to load the file and register any icalset found within. + */ +static int load(const char *file) { + + void *modh; + fptr inith; + icalset *icalset_init_ptr; + + if ((modh = dlopen(file, RTLD_NOW)) == 0) { + perror("dlopen"); + return 0; + } + + if ((inith = (fptr)dlsym(modh, "InitModule")) == 0) { + perror("dlsym"); + return 0; + } + + while ((icalset_init_ptr = ((inith)())) != 0) { + pvl_push(icalset_kinds, &icalset_init_ptr); + } + + return 1; +} + +/** + * Look in the given directory for files called mod_*.o and try to + * load them. + */ +int icalset_loaddir(const char *path) { + DIR *d; + struct dirent *dp; + char buf[PATH_MAX], + *bufptr; + int tot = 0; + + strcpy(buf, path); + bufptr = buf + strlen(buf); + + if (*(bufptr-1) != '/') + *bufptr++ = '/'; + + if ((d = opendir(path)) == 0) { + perror("opendir"); + return 0; + } + + while ((dp = readdir(d)) != 0) { + if (strncmp(dp->d_name, "mod_", 4)) continue; + + strcpy(bufptr, dp->d_name); + + load(buf); + tot++; + } + (void)closedir(d); + + return 1; +} + +int icalset_register_class(icalset *set); + +static void icalset_init(void) { + assert(icalset_kinds == 0); + icalset_kinds = pvl_newlist(); + + pvl_push(icalset_kinds, &icalset_fileset_init); + pvl_push(icalset_kinds, &icalset_dirset_init); +#ifdef WITH_BDB4 + pvl_push(icalset_kinds, &icalset_bdb4set_init); +#endif + +#ifdef EXT_PATH + icalset_loaddir(EXT_PATH); +#endif + + icalset_init_done++; +} + +int icalset_register_class(icalset *set) { + + if (!icalset_init_done) + icalset_init(); + + pvl_push(icalset_kinds, set); + return 1; +} + +#endif + +icalset* icalset_new(icalset_kind kind, const char* dsn, void* options) { + icalset *data = NULL; + icalset *ret = NULL; + +#ifdef _DLOPEN_TEST + pvl_elem e; + icalset *impl; + + if (!icalset_init_done) + icalset_init(); + + for(e = pvl_head(icalset_kinds); e!=0; e = pvl_next(e)) { + impl = (icalset*)pvl_data(e); + if (impl->kind == kind) + break; + } + if (e == 0) { + icalerror_set_errno(ICAL_UNIMPLEMENTED_ERROR); + return(NULL); + } + + data = (icalset*)malloc(impl->size); + if (data == 0) { + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + errno = ENOMEM; + return 0; + } + + /* The first member of the derived class must be an icalset. */ + memset(data,0,impl->size); + /* *data = *impl; */ + memcpy(data, impl, sizeof(icalset)); + + data->dsn = strdup(dsn); +#else + switch(kind) { + case ICAL_FILE_SET: + data = (icalset*) malloc(sizeof(icalfileset)); + if (data == 0) { + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + errno = ENOMEM; + return 0; + } + memset(data,0,sizeof(icalfileset)); + *data = icalset_fileset_init; + break; + case ICAL_DIR_SET: + data = (icalset*) malloc(sizeof(icaldirset)); + if (data == 0) { + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + errno = ENOMEM; + return 0; + } + memset(data,0,sizeof(icaldirset)); + *data = icalset_dirset_init; + break; +#ifdef WITH_BDB4 + case ICAL_BDB_SET: + data = (icalset*) malloc(sizeof(icalbdbset)); + if (data == 0) { + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + errno = ENOMEM; + return 0; + } + memset(data,0,sizeof(icalbdbset)); + *data = icalset_bdbset_init; + break; +#endif + + default: + icalerror_set_errno(ICAL_UNIMPLEMENTED_ERROR); + /** unimplemented **/ + return(NULL); + } + + if ( data == 0) { + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + return 0; + } + data->kind = kind; + data->dsn = strdup(dsn); +#endif + + /** call the implementation specific initializer **/ + if ((ret = data->init(data, dsn, options)) == NULL) + icalset_free(data); + + return ret; +} + +icalset* icalset_new_file(const char* path) +{ + return icalset_new(ICAL_FILE_SET, path, NULL); +} + +icalset* icalset_new_file_writer(const char* path) +{ + return icalfileset_new_writer(path); +} + +icalset* icalset_new_file_reader(const char* path) +{ + return icalfileset_new_reader(path); +} + + +icalset* icalset_new_dir(const char* path) +{ + return icalset_new(ICAL_DIR_SET, path, NULL); +} + +icalset* icalset_new_dir_writer(const char* path) +{ + return icaldirset_new_writer(path); +} + +icalset* icalset_new_dir_reader(const char* path) +{ + return icaldirset_new_reader(path); +} + + + +/* Functions for built-in methods */ + +/** + * free memory associated with this icalset + * automatically calls the implementation specific free routine + */ + +void icalset_free(icalset* set) +{ + if (set->free) + set->free(set); + + if (set->dsn) + free(set->dsn); + + free(set); +} + + +const char* icalset_path(icalset* set) { + return set->path(set); +} + +void icalset_mark(icalset* set) { + set->mark(set); +} + +icalerrorenum icalset_commit(icalset* set) { + return set->commit(set); +} + +icalerrorenum icalset_add_component(icalset* set, icalcomponent* comp) { + return set->add_component(set,comp); +} + +icalerrorenum icalset_remove_component(icalset* set, icalcomponent* comp) { + return set->remove_component(set,comp); +} + +int icalset_count_components(icalset* set,icalcomponent_kind kind) { + return set->count_components(set,kind); +} + +icalerrorenum icalset_select(icalset* set, icalgauge* gauge) { + return set->select(set, gauge); +} + +void icalset_clear(icalset* set) { + set->clear(set); +} + +icalcomponent* icalset_fetch(icalset* set, const char* uid) { + return set->fetch(set, uid); +} + +icalcomponent* icalset_fetch_match(icalset* set, icalcomponent *comp) { + return set->fetch_match(set, comp); +} + +int icalset_has_uid(icalset* set, const char* uid) { + return set->has_uid(set, uid); +} + +icalerrorenum icalset_modify(icalset* set, icalcomponent *old, + icalcomponent *new) { + return set->modify(set, old, new); +} + +icalcomponent* icalset_get_current_component(icalset* set) { + return set->get_current_component(set); +} + +icalcomponent* icalset_get_first_component(icalset* set) { + return set->get_first_component(set); +} + +icalcomponent* icalset_get_next_component(icalset* set) { + return set->get_next_component(set); +} + +icalsetiter icalsetiter_null = {{ICAL_NO_COMPONENT, 0}, 0}; + +icalsetiter icalset_begin_component(icalset* set, + icalcomponent_kind kind, icalgauge* gauge) { + return set->icalset_begin_component(set, kind, gauge); +} + +icalcomponent* icalsetiter_next(icalsetiter* itr) { + + icalcomponent* c = 0; + icalerror_check_arg_rz( (itr != NULL), "i"); + + do { + c = icalcompiter_next(&(itr->iter)); + if(c != 0 && (itr->gauge == 0 || + icalgauge_compare(itr->gauge, c) == 1)){ + return c; + } + } while (c != 0); + + return 0; +} + +icalcomponent* icalsetiter_prior(icalsetiter* i) { + + icalcomponent* c = 0; + icalerror_check_arg_rz( (i != NULL), "i" ); + + do { + c = icalcompiter_prior(&(i->iter)); + if(c != 0 && (i->gauge == 0 || + icalgauge_compare(i->gauge, c) == 1)){ + return c; + } + } while (c != 0); + + return 0; +} + +icalcomponent* icalsetiter_deref(icalsetiter* i) { + icalerror_check_arg_rz( (i != NULL), "i" ); + return (icalcompiter_deref(&(i->iter))); +} + +/* for subclasses that use multiple clusters that require specialized cluster traversal */ +icalcomponent* icalsetiter_to_next(icalset* set, icalsetiter* i) +{ + return set->icalsetiter_to_next(set, i); +} + +icalcomponent* icalsetiter_to_prior(icalset* set, icalsetiter* i) +{ + return set->icalsetiter_to_prior(set, i); +} diff --git a/mozilla/calendar/libical/src/libicalss/icalset.h b/mozilla/calendar/libical/src/libicalss/icalset.h new file mode 100644 index 00000000000..47c5aa57326 --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/icalset.h @@ -0,0 +1,184 @@ +/* -*- Mode: C -*- */ +/** + @file icalset.h + @author eric 28 November 1999 + + Icalset is the "base class" for representations of a collection of + iCal components. Derived classes (actually delegatees) include: + + icalfileset Store components in a single file + icaldirset Store components in multiple files in a directory + icalbdbset Store components in a Berkeley DB File + icalheapset Store components on the heap + icalmysqlset Store components in a mysql database. +**/ + +/* + $Id: icalset.h,v 1.13 2002/09/26 22:25:12 lindner Exp $ + $Locker: $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The Original Code is eric. The Initial Developer of the Original + Code is Eric Busboom + + +======================================================================*/ + +#ifndef ICALSET_H +#define ICALSET_H + +#include /* For PATH_MAX */ +#include "ical.h" +#include "icalgauge.h" + +#ifdef PATH_MAX +#define ICAL_PATH_MAX PATH_MAX +#else +#define ICAL_PATH_MAX 1024 +#endif + + +typedef struct icalset_impl icalset; + +typedef enum icalset_kind { + ICAL_FILE_SET, + ICAL_DIR_SET, + ICAL_BDB_SET +} icalset_kind; + +typedef struct icalsetiter +{ + icalcompiter iter; /* icalcomponent_kind, pvl_elem iter */ + icalgauge* gauge; + icalrecur_iterator* ritr; /*the last iterator*/ + icalcomponent* last_component; /*the pending recurring component to be processed */ + const char* tzid; /* the calendar's timezone id */ +} icalsetiter; + +struct icalset_impl { + icalset_kind kind; + int size; + char *dsn; + icalset* (*init)(icalset* set, const char *dsn, void *options); + void (*free)(icalset* set); + const char* (*path)(icalset* set); + void (*mark)(icalset* set); + icalerrorenum (*commit)(icalset* set); + icalerrorenum (*add_component)(icalset* set, icalcomponent* comp); + icalerrorenum (*remove_component)(icalset* set, icalcomponent* comp); + int (*count_components)(icalset* set, + icalcomponent_kind kind); + icalerrorenum (*select)(icalset* set, icalgauge* gauge); + void (*clear)(icalset* set); + icalcomponent* (*fetch)(icalset* set, const char* uid); + icalcomponent* (*fetch_match)(icalset* set, icalcomponent *comp); + int (*has_uid)(icalset* set, const char* uid); + icalerrorenum (*modify)(icalset* set, icalcomponent *old, + icalcomponent *newc); + icalcomponent* (*get_current_component)(icalset* set); + icalcomponent* (*get_first_component)(icalset* set); + icalcomponent* (*get_next_component)(icalset* set); + icalsetiter (*icalset_begin_component)(icalset* set, + icalcomponent_kind kind, icalgauge* gauge); + icalcomponent* (*icalsetiter_to_next)(icalset* set, icalsetiter* i); + icalcomponent* (*icalsetiter_to_prior)(icalset* set, icalsetiter* i); +}; + +/** @brief Register a new derived class */ +int icalset_register_class(icalset *set); + + +/** @brief Generic icalset constructor + * + * @param kind The type of icalset to create + * @param dsn Data Source Name - usually a pathname or DB handle + * @param options Any implementation specific options + * + * @return A valid icalset reference or NULL if error. + * + * This creates any of the icalset types available. + */ + +icalset* icalset_new(icalset_kind kind, const char* dsn, void* options); + +icalset* icalset_new_file(const char* path); +icalset* icalset_new_file_reader(const char* path); +icalset* icalset_new_file_writer(const char* path); + +icalset* icalset_new_dir(const char* path); +icalset* icalset_new_file_reader(const char* path); +icalset* icalset_new_file_writer(const char* path); + +void icalset_free(icalset* set); + +const char* icalset_path(icalset* set); + +/** Mark the cluster as changed, so it will be written to disk when it + is freed. **/ +void icalset_mark(icalset* set); + +/** Write changes to disk immediately */ +icalerrorenum icalset_commit(icalset* set); + +icalerrorenum icalset_add_component(icalset* set, icalcomponent* comp); +icalerrorenum icalset_remove_component(icalset* set, icalcomponent* comp); + +int icalset_count_components(icalset* set, + icalcomponent_kind kind); + +/** Restrict the component returned by icalset_first, _next to those + that pass the gauge. */ +icalerrorenum icalset_select(icalset* set, icalgauge* gauge); + +/** Clears the gauge defined by icalset_select() */ +void icalset_clear_select(icalset* set); + +/** Get a component by uid */ +icalcomponent* icalset_fetch(icalset* set, const char* uid); + +int icalset_has_uid(icalset* set, const char* uid); +icalcomponent* icalset_fetch_match(icalset* set, icalcomponent *c); + +/** Modify components according to the MODIFY method of CAP. Works on + the currently selected components. */ +icalerrorenum icalset_modify(icalset* set, icalcomponent *oldc, + icalcomponent *newc); + +/** Iterate through the components. If a guage has been defined, these + will skip over components that do not pass the gauge */ + +icalcomponent* icalset_get_current_component(icalset* set); +icalcomponent* icalset_get_first_component(icalset* set); +icalcomponent* icalset_get_next_component(icalset* set); + +/** External Iterator with gauge - for thread safety */ +extern icalsetiter icalsetiter_null; + +icalsetiter icalset_begin_component(icalset* set, + icalcomponent_kind kind, icalgauge* gauge); + +/** Default _next, _prior, _deref for subclasses that use single cluster */ +icalcomponent* icalsetiter_next(icalsetiter* i); +icalcomponent* icalsetiter_prior(icalsetiter* i); +icalcomponent* icalsetiter_deref(icalsetiter* i); + +/** for subclasses that use multiple clusters that require specialized cluster traversal */ +icalcomponent* icalsetiter_to_next(icalset* set, icalsetiter* i); +icalcomponent* icalsetiter_to_prior(icalset* set, icalsetiter* i); + +#endif /* !ICALSET_H */ + + + diff --git a/mozilla/calendar/libical/src/libicalss/icalspanlist.c b/mozilla/calendar/libical/src/libicalss/icalspanlist.c new file mode 100644 index 00000000000..cc9bdd7389d --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/icalspanlist.c @@ -0,0 +1,567 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: icalspanlist.c + CREATOR: ebusboom 23 aug 2000 + + $Id: icalspanlist.c,v 1.13 2002/10/30 23:41:47 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + + ======================================================================*/ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "ical.h" +#include "icalspanlist.h" + +#include /* for free and malloc */ +#include + +struct icalspanlist_impl { + pvl_list spans; /**< list of icaltime_span data **/ + struct icaltimetype start; /**< start time of span **/ + struct icaltimetype end; /**< end time of span **/ +}; + +/** @brief Internal comparison function for two spans + * + * @param a a spanlist. + * @param b another spanlist. + * + * @return -1, 0, 1 depending on the comparison of the start times. + * + * Used to insert spans into the tree in sorted order. + */ + +static int compare_span(void* a, void* b) +{ + struct icaltime_span *span_a = (struct icaltime_span *)a ; + struct icaltime_span *span_b = (struct icaltime_span *)b ; + + if(span_a->start == span_b->start){ + return 0; + } else if(span_a->start < span_b->start){ + return -1; + } else { /*if(span_a->start > span->b.start)*/ + return 1; + } +} + + +/** @brief callback function for collecting spanlists of a + * series of events. + * + * @param comp A valid icalcomponent. + * @param span The span to insert into data. + * @param data The actual spanlist to insert into + * + * This callback is used by icalcomponent_foreach_recurrence() + * to build up a spanlist. + */ + +static void icalspanlist_new_callback(icalcomponent *comp, + struct icaltime_span *span, + void *data) +{ + icaltime_span *s; + icalspanlist *sl = (icalspanlist*) data; + + if (span->is_busy == 0) + return; + + if ((s=(icaltime_span *) malloc(sizeof(icaltime_span))) == 0) { + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + return; + } + + /** copy span data into allocated memory.. **/ + *s = *span; + pvl_insert_ordered(sl->spans, compare_span, (void*)s); +} + + + +/** @brief Make a free list from a set of VEVENT components. + * + * @param set A valid icalset containing VEVENTS + * @param start The free list starts at this date/time + * @param end The free list ends at this date/time + * + * @return A spanlist corresponding to the VEVENTS + * + * Given a set of components, a start time and an end time + * return a spanlist that contains the free/busy times. + */ + +icalspanlist* icalspanlist_new(icalset *set, + struct icaltimetype start, + struct icaltimetype end) +{ + struct icaltime_span range; + pvl_elem itr; + icalcomponent *c,*inner; + icalcomponent_kind kind, inner_kind; + icalspanlist *sl; + struct icaltime_span *freetime; + + if ( ( sl = (struct icalspanlist_impl*) + malloc(sizeof(struct icalspanlist_impl))) == 0) { + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + return 0; + } + + sl->spans = pvl_newlist(); + sl->start = start; + sl->end = end; + + range.start = icaltime_as_timet(start); + range.end = icaltime_as_timet(end); + + /* Get a list of spans of busy time from the events in the set + and order the spans based on the start time */ + + for(c = icalset_get_first_component(set); + c != 0; + c = icalset_get_next_component(set)){ + + kind = icalcomponent_isa(c); + inner = icalcomponent_get_inner(c); + + if(!inner){ + continue; + } + + inner_kind = icalcomponent_isa(inner); + + if( kind != ICAL_VEVENT_COMPONENT && + inner_kind != ICAL_VEVENT_COMPONENT){ + continue; + } + + icalerror_clear_errno(); + + icalcomponent_foreach_recurrence(c, start, end, + icalspanlist_new_callback, + (void*)sl); + + } + + /* Now Fill in the free time spans. loop through the spans. if the + start of the range is not within the span, create a free entry + that runs from the start of the range to the start of the + span. */ + + for( itr = pvl_head(sl->spans); + itr != 0; + itr = pvl_next(itr)) + { + struct icaltime_span *s = (struct icaltime_span*)pvl_data(itr); + + if ((freetime=(struct icaltime_span *) + malloc(sizeof(struct icaltime_span))) == 0){ + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + return 0; + } + + if(range.start < s->start){ + freetime->start = range.start; + freetime->end = s->start; + + freetime->is_busy = 0; + + + pvl_insert_ordered(sl->spans,compare_span,(void*)freetime); + } else { + free(freetime); + } + + range.start = s->end; + } + + /* If the end of the range is null, then assume that everything + after the last item in the calendar is open and add a span + that indicates this */ + + if( icaltime_is_null_time(end)){ + struct icaltime_span* last_span; + + last_span = (struct icaltime_span*)pvl_data(pvl_tail(sl->spans)); + + if (last_span != 0){ + + if ((freetime=(struct icaltime_span *) + malloc(sizeof(struct icaltime_span))) == 0){ + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + return 0; + } + + freetime->is_busy = 0; + freetime->start = last_span->end; + freetime->end = freetime->start; + pvl_insert_ordered(sl->spans,compare_span,(void*)freetime); + } + } + + + return sl; +} + +/** @brief Destructor. + * @param s A valid icalspanlist + * + * Free memory associated with the spanlist + */ + +void icalspanlist_free(icalspanlist* s) +{ + struct icaltime_span *span; + + if (s == NULL) + return; + + while( (span=pvl_pop(s->spans)) != 0){ + free(span); + } + + pvl_free(s->spans); + + s->spans = 0; + + free(s); +} + + +/** @brief (Debug) print out spanlist to stdout. + * @param sl A valid icalspanlist. + */ + +void icalspanlist_dump(icalspanlist* sl){ + int i = 0; + pvl_elem itr; + + for( itr = pvl_head(sl->spans); + itr != 0; + itr = pvl_next(itr)) + { + struct icaltime_span *s = (struct icaltime_span*)pvl_data(itr); + + printf("#%02d %d start: %s",++i,s->is_busy,ctime(&s->start)); + printf(" end : %s",ctime(&s->end)); + + } +} + +icalcomponent* icalspanlist_make_free_list(icalspanlist* sl); +icalcomponent* icalspanlist_make_busy_list(icalspanlist* sl); + + +/** @brief Find next free time span in a spanlist. + * + * @param sl The spanlist to search. + * @param t The time to start looking. + * + * Given a spanlist and a time, find the next period of time + * that is free + */ + +struct icalperiodtype icalspanlist_next_free_time(icalspanlist* sl, + struct icaltimetype t) +{ + pvl_elem itr; + struct icalperiodtype period; + struct icaltime_span *s; + + time_t rangett= icaltime_as_timet(t); + + period.start = icaltime_null_time(); + period.end = icaltime_null_time(); + + itr = pvl_head(sl->spans); + s = (struct icaltime_span *)pvl_data(itr); + + if (s == 0){ + /* No elements in span */ + return period; + } + + /* Is the reference time before the first span? If so, assume + that the reference time is free */ + if(rangett start ){ + /* End of period is start of first span if span is busy, end + of the span if it is free */ + period.start = t; + + if (s->is_busy == 1){ + period.end = icaltime_from_timet(s->start,0); + } else { + period.end = icaltime_from_timet(s->end,0); + } + + return period; + } + + /* Otherwise, find the first free span that contains the + reference time. */ + for( itr = pvl_head(sl->spans); + itr != 0; + itr = pvl_next(itr)) + { + s = (struct icaltime_span *)pvl_data(itr); + + if(s->is_busy == 0 && s->start >= rangett && + ( rangett < s->end || s->end == s->start)){ + + if (rangett < s->start){ + period.start = icaltime_from_timet(s->start,0); + } else { + period.start = icaltime_from_timet(rangett,0); + } + + period.end = icaltime_from_timet(s->end,0); + + return period; + } + + } + + period.start = icaltime_null_time(); + period.end = icaltime_null_time(); + + return period; +} + +struct icalperiodtype icalspanlist_next_busy_time(icalspanlist* sl, + struct icaltimetype t); + + +/** @brief Returns an hour-by-hour array of free/busy times over a + * given period. + * + * @param sl A valid icalspanlist + * @param delta_t The time slice to divide by, in seconds. Default 3600. + * + * @return A pointer to an array of integers containing the number of + * busy events in each delta_t time period. The final entry + * contains the value -1. + * + * This calculation is somewhat tricky. This is due to the fact that + * the time range contains the start time, but does not contain the + * end time. To perform a proper calculation we subtract one second + * off the end times to get a true containing time. + * + * Also note that if you supplying a spanlist that does not start or + * end on a time boundary divisible by delta_t you may get results + * that are not quite what you expect. + */ + +int* icalspanlist_as_freebusy_matrix(icalspanlist* sl, int delta_t) { + pvl_elem itr; + int spanduration_secs; + int *matrix; + int matrix_slots; + time_t sl_start, sl_end; + + icalerror_check_arg_rz( (sl!=0), "spanlist"); + + if (!delta_t) + delta_t = 3600; + + /** calculate the start and end time as time_t **/ + sl_start = icaltime_as_timet_with_zone(sl->start, icaltimezone_get_utc_timezone()); + sl_end = icaltime_as_timet_with_zone(sl->end, icaltimezone_get_utc_timezone()); + + + /** insure that the time period falls on a time boundary divisable + by delta_t */ + + sl_start /= delta_t; + sl_start *= delta_t; + + sl_end /= delta_t; + sl_end *= delta_t; + + + /** find the duration of this spanlist **/ + spanduration_secs = sl_end - sl_start; + + + /** malloc our matrix, add one extra slot for a final -1 **/ + matrix_slots = spanduration_secs/delta_t + 1; + + matrix = (int*) malloc(sizeof(int) * matrix_slots); + if (matrix == NULL) { + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + return NULL; + } + memset(matrix, 0, sizeof(int) * matrix_slots); + matrix[matrix_slots-1] = -1; + + /* loop through each span and mark the slots in the array */ + + for( itr = pvl_head(sl->spans); itr != 0; itr = pvl_next(itr)) { + struct icaltime_span *s = (struct icaltime_span*)pvl_data(itr); + + if (s->is_busy == 1) { + int offset_start = s->start/delta_t - sl_start/delta_t; + int offset_end = (s->end - 1) /delta_t - sl_start/delta_t + 1; + int i; + + if (offset_end >= matrix_slots) + offset_end = matrix_slots - 1; + + i = offset_start; + for (i=offset_start; i < offset_end; i++) { + matrix[i]++; + } + } + } + return matrix; +} + + +/** @brief Return a VFREEBUSY component for the corresponding spanlist + * + * @param sl A valid icalspanlist, from icalspanlist_new() + * @param organizer The organizer specified as MAILTO:user@domain + * @param attendee The attendee specified as MAILTO:user@domain + * + * @return A valid icalcomponent or NULL. + * + * This function returns a VFREEBUSY component for the given spanlist. + * The start time is mapped to DTSTART, the end time to DTEND. + * Each busy span is represented as a separate FREEBUSY entry. + * An attendee parameter is required, and organizer parameter is + * optional. + */ + +icalcomponent *icalspanlist_as_vfreebusy(icalspanlist* sl, + const char* organizer, + const char* attendee) { + icalcomponent *comp; + icalproperty *p; + struct icaltimetype atime = icaltime_from_timet( time(0),0); + pvl_elem itr; + icaltimezone *utc_zone; + icalparameter *param; + + if (!attendee) { + icalerror_set_errno(ICAL_USAGE_ERROR); + return 0; + } + + utc_zone = icaltimezone_get_utc_timezone (); + + comp = icalcomponent_new_vfreebusy(); + + icalcomponent_add_property(comp, icalproperty_new_dtstart(sl->start)); + icalcomponent_add_property(comp, icalproperty_new_dtend(sl->end)); + icalcomponent_add_property(comp, icalproperty_new_dtstamp(atime)); + + if (organizer) { + icalcomponent_add_property(comp, icalproperty_new_organizer(organizer)); + } + icalcomponent_add_property(comp, icalproperty_new_attendee(attendee)); + + /* now add the freebusy sections.. */ + + for( itr = pvl_head(sl->spans); itr != 0; itr = pvl_next(itr)) { + struct icalperiodtype period; + struct icaltime_span *s = (struct icaltime_span*)pvl_data(itr); + + if (s->is_busy == 1) { + + period.start = icaltime_from_timet_with_zone (s->start, 0, utc_zone); + period.end = icaltime_from_timet_with_zone (s->end, 0, utc_zone); + period.duration = icaldurationtype_null_duration(); + + + p = icalproperty_new_freebusy(period); + param = icalparameter_new_fbtype(ICAL_FBTYPE_BUSY); + icalproperty_add_parameter(p, param); + + icalcomponent_add_property(comp, p); + } + + } + + return comp; +} + + +/** @brief Return a spanlist corresponding to the VFREEBUSY portion of + * an icalcomponent. + * + * @param c A valid icalcomponent. + * + * @return A valid icalspanlist or NULL if no VFREEBUSY section. + * + */ + + +icalspanlist *icalspanlist_from_vfreebusy(icalcomponent* comp) +{ + icalcomponent *inner; + icalproperty *prop; + icalspanlist *sl; + + icalerror_check_arg_rz((comp != NULL), "comp"); + + inner = icalcomponent_get_inner(comp); + if (!inner) return NULL; + + if ( ( sl = (icalspanlist*) malloc(sizeof(icalspanlist))) == 0) { + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + return 0; + } + sl->spans = pvl_newlist(); + + /* cycle through each FREEBUSY property, adding to the spanlist */ + for (prop = icalcomponent_get_first_property(inner, ICAL_FREEBUSY_PROPERTY); + prop != NULL; + prop = icalcomponent_get_next_property(inner, ICAL_FREEBUSY_PROPERTY)) { + icaltime_span *s = (icaltime_span *) malloc(sizeof(icaltime_span)); + icalparameter *param; + struct icalperiodtype period; + icalparameter_fbtype fbtype; + + if (s == 0) { + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + return 0; + } + + param = icalproperty_get_first_parameter(prop, ICAL_FBTYPE_PARAMETER); + fbtype = (param) ? icalparameter_get_fbtype(param) : ICAL_FBTYPE_BUSY; + + switch (fbtype) { + case ICAL_FBTYPE_FREE: + case ICAL_FBTYPE_NONE: + case ICAL_FBTYPE_X: + s->is_busy = 1; + default: + s->is_busy = 0; + } + + period = icalproperty_get_freebusy(prop); + s->start = icaltime_as_timet_with_zone(period.start, icaltimezone_get_utc_timezone()); + s->end = icaltime_as_timet_with_zone(period.end, icaltimezone_get_utc_timezone()); +; + pvl_insert_ordered(sl->spans, compare_span, (void*)s); + } + /** @todo calculate start/end limits.. fill in holes? **/ + return sl; +} diff --git a/mozilla/calendar/libical/src/libicalss/icalspanlist.h b/mozilla/calendar/libical/src/libicalss/icalspanlist.h new file mode 100644 index 00000000000..1d0c4b84872 --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/icalspanlist.h @@ -0,0 +1,77 @@ +/* -*- Mode: C -*- */ +/*====================================================================== + FILE: icalspanlist.h + CREATOR: eric 21 Aug 2000 + + + $Id: icalspanlist.h,v 1.6 2002/06/28 10:15:39 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + + =========================================================================*/ +#ifndef ICALSPANLIST_H +#define ICALSPANLIST_H + +#include "ical.h" +#include "icalset.h" + +/** @file icalspanlist.h + * @brief Code that supports collections of free/busy spans of time + */ + +typedef struct icalspanlist_impl icalspanlist; + + +/** @brief Constructor + * Make a free list from a set of component. Start and end should be in UTC + */ + +icalspanlist* icalspanlist_new(icalset *set, + struct icaltimetype start, + struct icaltimetype end); + +/** @brief Destructor + */ +void icalspanlist_free(icalspanlist* spl); + +/* Unimplemented functions */ +icalcomponent* icalspanlist_make_free_list(icalspanlist* sl); +icalcomponent* icalspanlist_make_busy_list(icalspanlist* sl); + +/** Get first next free time after time t. all times are in UTC. */ +struct icalperiodtype icalspanlist_next_free_time(icalspanlist* sl, + struct icaltimetype t); +/** Get first next busy time after time t. all times are in UTC. */ +struct icalperiodtype icalspanlist_next_busy_time(icalspanlist* sl, + struct icaltimetype t); + +void icalspanlist_dump(icalspanlist* s); + +/** @brief Return a valid VFREEBUSY component for this span */ +icalcomponent *icalspanlist_as_vfreebusy(icalspanlist* s_in, + const char* organizer, + const char* attendee); + +/** @brief Return an integer matrix of total events per delta_t timespan */ +int *icalspanlist_as_freebusy_matrix(icalspanlist* span, int delta_t); + +/** @brief Construct an icalspanlist from a VFREEBUSY component */ +icalspanlist *icalspanlist_from_vfreebusy(icalcomponent* c); + +#endif + + + diff --git a/mozilla/calendar/libical/src/libicalss/icalspanlist_cxx.cpp b/mozilla/calendar/libical/src/libicalss/icalspanlist_cxx.cpp new file mode 100644 index 00000000000..38761af4c65 --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/icalspanlist_cxx.cpp @@ -0,0 +1,92 @@ +#include "icalspanlist_cxx.h" +#include + +/** @brief Construct an ICalSpanList from an icalset + @param set The icalset containing the VEVENTS + @param start Designated start of the spanlist + @param end Designated end of the spanlist +*/ + +ICalSpanList::ICalSpanList(icalset *set, icaltimetype start, icaltimetype end) throw(icalerrorenum) +{ + data = icalspanlist_new(set, start, end); + if (!data) throw icalerrno; +}; + + +/** @brief Constructor + @param comp A valid icalcomponent with a VFREEBUSY section +*/ + +ICalSpanList::ICalSpanList(icalcomponent *comp) throw(icalerrorenum) +{ + data = icalspanlist_from_vfreebusy(comp); + if (!data) throw icalerrno; +} + +/** @brief Constructor + @param comp A valid VComponent with a VFREEBUSY section +*/ +ICalSpanList::ICalSpanList(VComponent &comp) throw(icalerrorenum) +{ + data = icalspanlist_from_vfreebusy((icalcomponent*) comp); + if (!data) throw icalerrno; +} + +/** Destructor */ +ICalSpanList::~ICalSpanList() { + if (data) + icalspanlist_free(data); +} + + +/** + * @brief Returns a VFREEBUSY component for the object. + * + * @see icalspanlist_as_vfreebusy() + */ + +VComponent* +ICalSpanList::get_vfreebusy(const char *organizer, const char *attendee) throw(icalerrorenum) +{ + icalcomponent *comp; + VComponent *vcomp; + + comp = icalspanlist_as_vfreebusy(data, organizer, attendee); + if (comp == 0) throw icalerrno; + + vcomp = new VComponent(comp); + if (vcomp == 0) throw icalerrno; + + return vcomp; +} + + +/** + * @brief Returns a summary of events over delta_t + * + * @param delta_t Number of seconds to divide the spanlist time period + * into. + * + * This method calculates the total number of events in each time slot + * of delta_t seconds. + * + * @see icalspanlist_as_freebusy_matrix() + */ + +std::vector ICalSpanList::as_vector(int delta_t) throw(icalerrorenum) +{ + int *matrix; + int i = 0; + std::vector event_vec; + + matrix = icalspanlist_as_freebusy_matrix(data, delta_t); + + if (!matrix) throw ICAL_USAGE_ERROR; + + while (matrix[i] != -1) { + event_vec.push_back(matrix[i]); // Add item at end of vector + } + + return(event_vec); +} diff --git a/mozilla/calendar/libical/src/libicalss/icalspanlist_cxx.h b/mozilla/calendar/libical/src/libicalss/icalspanlist_cxx.h new file mode 100644 index 00000000000..fce901c3db9 --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/icalspanlist_cxx.h @@ -0,0 +1,53 @@ +/* -*- Mode: C++ -*- */ + +/** + * @file icalspanlist_cxx.h + * @author Critical Path + * @brief C++ class wrapping the icalspanlist data structure + * + * This class wraps the icalspanlist routines in libicalss + * + * Errors within libicalss are propagated via exceptions of type + * icalerrorenum. See icalerror.h for the complete list of exceptions + * that might be thrown. + */ + +#ifndef ICALSPANLIST_CXX_H +#define ICALSPANLIST_CXX_H + +#include "ical.h" +#include "icalss.h" +#include "vcomponent.h" +#include /* For as_matrix.. */ + +class ICalSpanList { + public: + /** Construct an ICalSpanList from an icalset */ + ICalSpanList(icalset *set, icaltimetype start, icaltimetype end) throw(icalerrorenum); + + /** Construct an ICalSpanList from the VFREEBUSY chunk of a icalcomponent */ + ICalSpanList(icalcomponent *comp) throw(icalerrorenum); + + /** Construct an ICalSpanList from the VFREEBUSY chunk of a vcomponent */ + ICalSpanList(VComponent &comp) throw(icalerrorenum); + + /** Destructor */ + ~ICalSpanList(); + + /** Return a VFREEBUSY icalcomponent */ + VComponent* get_vfreebusy(const char *organizer, const char *attendee) throw(icalerrorenum); + + /** Return the base data when casting */ + operator icalspanlist*() {return data;} + + /** Return a vector of the number of events over delta t */ + std::vector as_vector(int delta_t) throw(icalerrorenum); + + /** Dump the spanlist to stdout */ + void dump() {icalspanlist_dump(data);} + + private: + icalspanlist *data; +}; + +#endif diff --git a/mozilla/calendar/libical/src/libicalss/icalsslexer.c b/mozilla/calendar/libical/src/libicalss/icalsslexer.c new file mode 100644 index 00000000000..e009d06f347 --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/icalsslexer.c @@ -0,0 +1,2485 @@ +#define YY_REENTRANT 1 +#define YY_TEXT_IS_ARRAY +#define YY_REENTRANT_BISON_PURE 1 +#ifndef YY_REENTRANT +#define yytext sstext +#define yyleng ssleng +#define yyin ssin +#define yyout ssout +#endif +#define yy_create_buffer ss_create_buffer +#define yy_delete_buffer ss_delete_buffer +#define yy_scan_buffer ss_scan_buffer +#define yy_scan_string ss_scan_string +#define yy_scan_bytes ss_scan_bytes +#define yy_flex_debug ss_flex_debug +#define yy_init_buffer ss_init_buffer +#define yy_flush_buffer ss_flush_buffer +#define yy_load_buffer_state ss_load_buffer_state +#define yy_switch_to_buffer ss_switch_to_buffer +#define yylex sslex +#define yyrestart ssrestart +#define yylex_init sslex_init +#define yylex_destroy sslex_destroy +#define yyget_extra ssget_extra +#define yyset_extra ssset_extra +#define yyget_in ssget_in +#define yyset_in ssset_in +#define yyget_out ssget_out +#define yyset_out ssset_out +#define yyget_leng ssget_leng +#define yyget_text ssget_text +#define yyget_lineno ssget_lineno +#define yyset_lineno ssset_lineno +#ifdef YY_REENTRANT_BISON_PURE +#define yyget_lval ssget_lval +#define yyset_lval ssset_lval +#ifdef YYLTYPE +#define yyget_lloc ssget_lloc +#define yyset_lloc ssset_lloc +#endif +#endif +#define yywrap sswrap + +/* -*-C-*- */ +/* A lexical scanner generated by flex */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 5 + +/* %- */ +/* begin standard C headers. */ +#include +#include +#include +/* end standard C headers. */ +/* %+ */ +/* %* */ + +#ifdef __cplusplus + +/* %+ */ +/* %* */ + +/* Use prototypes in function declarations. */ +#define YY_USE_PROTOS + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +#if __STDC__ + +#define YY_USE_PROTOS +#define YY_USE_CONST + +#endif /* __STDC__ */ +#endif /* ! __cplusplus */ + +#ifdef YY_USE_CONST +#define yyconst const +#else +#define yyconst +#endif + + +#ifdef YY_USE_PROTOS +#define YY_PROTO(proto) proto +#else +#define YY_PROTO(proto) () +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. + */ +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) + + +#ifdef YY_REENTRANT + +/* An opaque pointer. */ +#ifndef YY_TYPEDEF_YY_SCANNER_T +#define YY_TYPEDEF_YY_SCANNER_T +typedef void* yyscan_t; +#endif + +/* For use wherever a Global is accessed or assigned. */ +#define YY_G(var) (((struct yy_globals_t*)yy_globals)->var) + +/* For use in function prototypes to append the additional argument. */ +#ifdef YY_USE_PROTOS +#define YY_LAST_ARG , yyscan_t yy_globals +#define YY_ONLY_ARG yyscan_t yy_globals +#else +#define YY_LAST_ARG , yy_globals +#define YY_ONLY_ARG yy_globals +#define YY_DECL_LAST_ARG yyscan_t yy_globals; +#endif + +/* For use in function calls to pass the additional argument. */ +#define YY_CALL_LAST_ARG , yy_globals +#define YY_CALL_ONLY_ARG yy_globals + +/* For convenience, these vars (plus the bison vars far below) + are macros in the reentrant scanner. */ +#define yyin YY_G(yyin_r) +#define yyout YY_G(yyout_r) +#define yyextra YY_G(yyextra_r) +#define yyleng YY_G(yyleng_r) +#define yytext YY_G(yytext_r) +#define yylineno YY_G(yylineno_r) + +int yylex_init YY_PROTO((yyscan_t* scanner)); +int yylex_destroy YY_PROTO((yyscan_t scanner)); + +#else /* not YY_REENTRANT */ + + /* Define these macros to be no-ops. */ +#define YY_G(var) (var) +#define YY_LAST_ARG +#define YY_ONLY_ARG void +#define YY_CALL_LAST_ARG +#define YY_CALL_ONLY_ARG +#define YY_DECL_LAST_ARG +#endif + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN YY_G(yy_start) = 1 + 2 * + +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START ((YY_G(yy_start) - 1) / 2) +#define YYSTATE YY_START + +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE yyrestart( yyin YY_CALL_LAST_ARG ) + +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#define YY_BUF_SIZE 16384 + + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +#ifndef YY_REENTRANT +extern size_t yyleng; +#endif + +/* %- */ +#ifndef YY_REENTRANT +extern FILE *yyin, *yyout; +#endif +/* %* */ + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + +/* The funky do-while in the following #define is used to turn the definition + * int a single C statement (which needs a semi-colon terminator). This + * avoids problems with code like: + * + * if ( condition_holds ) + * yyless( 5 ); + * else + * do_something_else(); + * + * Prior to using the do-while the compiler would get upset at the + * "else" because it interpreted the "if" statement as being all + * done when it reached the ';' after the yyless() call. + */ + +/* Return all but the first 'n' matched characters back to the input stream. */ + +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + *yy_cp = YY_G(yy_hold_char); \ + YY_RESTORE_YY_MORE_OFFSET \ + YY_G(yy_c_buf_p) = yy_cp = yy_bp + n - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) + +#define unput(c) yyunput( c, YY_G(yytext_ptr) YY_CALL_LAST_ARG ) + +/* The following is because we cannot portably get our hands on size_t + * (without autoconf's help, which isn't available because we want + * flex-generated scanners to compile on their own). + */ + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef unsigned int yy_size_t; +#endif + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state + { +/* %- */ + FILE *yy_input_file; +/* %+ */ +/* %* */ + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + yy_size_t yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via yyrestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + }; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* %- Standard (non-C++) definition */ +/* %c */ +#ifndef ssIN_HEADER +#ifndef YY_REENTRANT +static YY_BUFFER_STATE yy_current_buffer = 0; +#endif +/* %e */ +#endif /* !ssIN_HEADER */ +/* %* */ + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + */ +#define YY_CURRENT_BUFFER yy_current_buffer + + +/* %- Standard (non-C++) definition */ + +#ifndef YY_REENTRANT +/* %c */ +#ifndef ssIN_HEADER +/* yy_hold_char holds the character lost when yytext is formed. */ +static char yy_hold_char; + +static int yy_n_chars; /* number of characters read into yy_ch_buf */ + + +size_t yyleng; + +/* Points to current character in buffer. */ +static char *yy_c_buf_p = (char *) 0; +static int yy_init = 1; /* whether we need to initialize */ +static int yy_start = 0; /* start state number */ + +/* Flag which is used to allow yywrap()'s to do buffer switches + * instead of setting up a fresh yyin. A bit of a hack ... + */ +static int yy_did_buffer_switch_on_eof; +/* %e */ +#endif /* !ssIN_HEADER */ +#endif /* end !YY_REENTRANT */ + +void yyrestart YY_PROTO(( FILE *input_file YY_LAST_ARG )); + + +void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer YY_LAST_ARG )); +void yy_load_buffer_state YY_PROTO(( YY_ONLY_ARG )); +YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size YY_LAST_ARG )); +void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b YY_LAST_ARG )); +void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file YY_LAST_ARG )); +void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b YY_LAST_ARG )); + +#define YY_FLUSH_BUFFER yy_flush_buffer( YY_G(yy_current_buffer) YY_CALL_LAST_ARG) + +YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size YY_LAST_ARG )); +YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str YY_LAST_ARG )); +YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len YY_LAST_ARG )); + +/* %* */ + +/* %c */ +#ifndef ssIN_HEADER +static void *yy_flex_alloc YY_PROTO(( yy_size_t YY_LAST_ARG )); +static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t YY_LAST_ARG )); +static void yy_flex_free YY_PROTO(( void * YY_LAST_ARG )); +/* %e */ +#endif /* !ssIN_HEADER */ + +#define yy_new_buffer yy_create_buffer + +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_G(yy_current_buffer) ) \ + YY_G(yy_current_buffer) = \ + yy_create_buffer( yyin, YY_BUF_SIZE YY_CALL_LAST_ARG); \ + YY_G(yy_current_buffer)->yy_is_interactive = is_interactive; \ + } + +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_G(yy_current_buffer) ) \ + YY_G(yy_current_buffer) = \ + yy_create_buffer( yyin, YY_BUF_SIZE YY_CALL_LAST_ARG); \ + YY_G(yy_current_buffer)->yy_at_bol = at_bol; \ + } + +#define YY_AT_BOL() (YY_G(yy_current_buffer)->yy_at_bol) + +/* %% [1.0] yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here */ +/* Begin user sect3 */ +#ifndef ssIN_HEADER +typedef unsigned char YY_CHAR; +#endif /* !ssIN_HEADER */ +#ifndef ssIN_HEADER +#ifndef YY_REENTRANT +FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; +#endif +#endif /* !ssIN_HEADER */ +#ifndef ssIN_HEADER +typedef int yy_state_type; +#endif /* !ssIN_HEADER */ + +/* %- Standard (non-C++) definition */ +/* %c */ +#ifndef ssIN_HEADER +static yy_state_type yy_get_previous_state YY_PROTO(( YY_ONLY_ARG )); +static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state YY_LAST_ARG)); +static int yy_get_next_buffer YY_PROTO(( YY_ONLY_ARG )); +static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); +/* %e */ +#endif /* !ssIN_HEADER */ +/* %* */ + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up yytext. + */ +#define YY_DO_BEFORE_ACTION \ + YY_G(yytext_ptr) = yy_bp; \ +/* %% [2.0] code to fiddle yytext and yyleng for yymore() goes here \ */\ + yyleng = (size_t) (yy_cp - yy_bp); \ + YY_G(yy_hold_char) = *yy_cp; \ + *yy_cp = '\0'; \ +/* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\ + if ( yyleng >= YYLMAX ) \ + YY_FATAL_ERROR( "token too large, exceeds YYLMAX" ); \ + yy_flex_strncpy( yytext, YY_G(yytext_ptr), yyleng + 1 YY_CALL_LAST_ARG); \ + YY_G(yy_c_buf_p) = yy_cp; + +/* %* */ + +/* %c */ +#ifndef ssIN_HEADER +/* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */ +#define YY_NUM_RULES 23 +#define YY_END_OF_BUFFER 24 +static yyconst short int yy_accept[56] = + { 0, + 0, 0, 0, 0, 0, 0, 24, 22, 18, 18, + 22, 17, 21, 4, 19, 8, 5, 9, 21, 21, + 21, 21, 21, 21, 21, 18, 7, 0, 21, 10, + 6, 11, 21, 21, 14, 21, 21, 13, 21, 21, + 20, 12, 21, 15, 21, 21, 21, 2, 16, 21, + 21, 21, 3, 1, 0 + } ; + +static yyconst int yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 4, 5, 1, 1, 1, 1, 1, 6, 1, + 1, 7, 1, 8, 7, 7, 1, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 9, 10, 11, + 12, 13, 1, 7, 14, 7, 15, 16, 17, 18, + 7, 19, 20, 7, 7, 21, 22, 23, 24, 7, + 7, 25, 26, 27, 28, 7, 29, 7, 7, 7, + 1, 1, 1, 1, 1, 1, 14, 7, 15, 16, + + 17, 18, 7, 19, 20, 7, 7, 21, 22, 23, + 24, 7, 7, 25, 26, 27, 28, 7, 29, 7, + 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 + } ; + +static yyconst int yy_meta[30] = + { 0, + 1, 1, 1, 2, 1, 1, 3, 1, 2, 1, + 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3 + } ; + +static yyconst short int yy_base[58] = + { 0, + 0, 0, 0, 0, 0, 0, 68, 69, 28, 31, + 55, 0, 0, 69, 69, 54, 53, 52, 40, 37, + 35, 12, 35, 42, 39, 35, 69, 51, 0, 69, + 69, 69, 40, 31, 0, 27, 32, 0, 31, 34, + 69, 0, 28, 0, 28, 31, 22, 0, 0, 31, + 28, 17, 0, 0, 69, 39, 40 + } ; + +static yyconst short int yy_def[58] = + { 0, + 55, 1, 1, 1, 1, 1, 55, 55, 55, 55, + 55, 56, 57, 55, 55, 55, 55, 55, 57, 57, + 57, 57, 57, 57, 57, 55, 55, 56, 57, 55, + 55, 55, 57, 57, 57, 57, 57, 57, 57, 57, + 55, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 0, 55, 55 + } ; + +static yyconst short int yy_nxt[99] = + { 0, + 8, 9, 10, 9, 11, 12, 13, 14, 8, 15, + 16, 17, 18, 19, 13, 13, 13, 20, 13, 21, + 13, 13, 22, 23, 13, 24, 13, 13, 25, 26, + 26, 26, 26, 26, 26, 36, 26, 26, 26, 37, + 28, 28, 29, 54, 53, 52, 51, 50, 49, 48, + 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, + 35, 34, 33, 32, 31, 30, 27, 55, 7, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55 + + } ; + +static yyconst short int yy_chk[99] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, + 9, 9, 10, 10, 10, 22, 26, 26, 26, 22, + 56, 56, 57, 52, 51, 50, 47, 46, 45, 43, + 40, 39, 37, 36, 34, 33, 28, 25, 24, 23, + 21, 20, 19, 18, 17, 16, 11, 7, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55 + + } ; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +#ifndef YYLMAX +#define YYLMAX 8192 +#endif + +#ifndef YY_REENTRANT +char yytext[YYLMAX]; +char *yytext_ptr; +#endif +#line 1 "icalsslexer.l" +#define INITIAL 0 +#line 2 "icalsslexer.l" +/* -*- Mode: C -*- + ====================================================================== + FILE: icalsslexer.l + CREATOR: eric 8 Aug 2000 + + DESCRIPTION: + + $Id: icalsslexer.c,v 1.10 2002/07/21 17:18:15 lindner Exp $ + $Locker: $ + +(C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The Original Code is eric. The Initial Developer of the Original + Code is Eric Busboom + + ======================================================================*/ + +#include "icalssyacc.h" +#include "icalgaugeimpl.h" +#include "assert.h" + +#include /* For strdup() */ + +#undef YYPURE +#define YYPURE + +#undef SS_FATAL_ERROR +#define SS_FATAL_ERROR(msg) sserror(msg) + +#define sql 1 +#define string_value 2 + +#line 596 "lex.ss.c" +/* %e */ +#endif /* !ssIN_HEADER */ + +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#ifndef YY_NO_UNISTD_H +/* %- */ +#include +/* %+ */ +/* %* */ +#endif /* !YY_NO_UNISTD_H */ + + +#ifndef YY_EXTRA_TYPE +#define YY_EXTRA_TYPE void * +#endif + +/* %- Reentrant structure and macros (non-C++). */ +#ifdef YY_REENTRANT + +/* %c */ +#ifndef ssIN_HEADER +struct yy_globals_t + { + + /* User-defined. Not touched by flex. */ + YY_EXTRA_TYPE yyextra_r; + + /* The rest are the same as the globals declared in the non-reentrant scanner. */ + FILE *yyin_r, *yyout_r; + YY_BUFFER_STATE yy_current_buffer; + char yy_hold_char; + int yy_n_chars; + int yyleng_r; + char *yy_c_buf_p; + int yy_init; + int yy_start; + int yy_did_buffer_switch_on_eof; + int yy_start_stack_ptr; + int yy_start_stack_depth; + int *yy_start_stack; + yy_state_type yy_last_accepting_state; + char* yy_last_accepting_cpos; + + int yylineno_r; + +#ifdef YY_TEXT_IS_ARRAY + char yytext_r[YYLMAX]; + char *yytext_ptr; + int yy_more_offset; + int yy_prev_more_offset; +#else + char *yytext_r; + int yy_more_flag; + int yy_more_len; +#endif + +#ifdef YY_REENTRANT_BISON_PURE + YYSTYPE * yylval_r; +#ifdef YYLTYPE + YYLTYPE * yylloc_r; +#endif +#endif + + }; +/* %e */ +#endif /* !ssIN_HEADER */ + +/* %c */ +#ifndef ssIN_HEADER +static int yy_init_globals YY_PROTO(( yyscan_t )); +/* %e */ +#endif /* !ssIN_HEADER */ + +/* This must go here because YYSTYPE and YYLSTYPE are included + * from bison output in section 1.*/ +#ifdef YY_REENTRANT_BISON_PURE +# define yylval YY_G(yylval_r) +# ifdef YYLTYPE +# define yylloc YY_G(yylloc_r) +# endif +#endif /* YY_REENTRANT_BISON_PURE */ + +#endif /* end if YY_REENTRANT */ + +/* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ +#ifndef YY_NO_GET_EXTRA +YY_EXTRA_TYPE yyget_extra YY_PROTO(( YY_ONLY_ARG )); +#endif + +#ifndef YY_NO_SET_EXTRA +void yyset_extra YY_PROTO(( YY_EXTRA_TYPE user_defined YY_LAST_ARG )); +#endif + +#ifndef YY_NO_GET_IN +FILE *yyget_in YY_PROTO(( YY_ONLY_ARG )); +#endif + +#ifndef YY_NO_SET_IN +void yyset_in YY_PROTO(( FILE * in_str YY_LAST_ARG )); +#endif + +#ifndef YY_NO_GET_OUT +FILE *yyget_out YY_PROTO(( YY_ONLY_ARG )); +#endif + +#ifndef YY_NO_SET_OUT +void yyset_out YY_PROTO(( FILE * out_str YY_LAST_ARG )); +#endif + +#ifndef YY_NO_GET_LENG +int yyget_leng YY_PROTO(( YY_ONLY_ARG )); +#endif + +#ifndef YY_NO_GET_TEXT +char *yyget_text YY_PROTO(( YY_ONLY_ARG )); +#endif + +#ifndef YY_NO_GET_LINENO +int yyget_lineno YY_PROTO(( YY_ONLY_ARG )); +#endif + +#ifndef YY_NO_SET_LINENO +void yyset_lineno YY_PROTO(( int line_number YY_LAST_ARG )); +#endif + +#ifdef YY_REENTRANT_BISON_PURE +#ifndef YY_NO_GET_LVAL +YYSTYPE * yyget_lval YY_PROTO(( YY_ONLY_ARG )); +#endif +void yyset_lval YY_PROTO(( YYSTYPE * yylvalp YY_LAST_ARG )); +#ifdef YYLTYPE +#ifndef YY_NO_GET_LLOC + YYLTYPE *yyget_lloc YY_PROTO(( YY_ONLY_ARG )); +#endif +#ifndef YY_NO_SET_LLOC + void yyset_lloc YY_PROTO(( YYLTYPE * yyllocp YY_LAST_ARG )); +#endif +#endif /* YYLTYPE */ +#endif /* YY_REENTRANT_BISON_PURE */ + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int yywrap YY_PROTO(( YY_ONLY_ARG )); +#else +extern int yywrap YY_PROTO(( YY_ONLY_ARG )); +#endif +#endif + +/* %- */ +/* %c */ +#ifndef ssIN_HEADER +#ifndef YY_NO_UNPUT +static void yyunput YY_PROTO(( int c, char *buf_ptr YY_LAST_ARG)); +#endif +/* %e */ +#endif /* !ssIN_HEADER */ +/* %* */ + +#ifndef yytext_ptr +static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int YY_LAST_ARG)); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen YY_PROTO(( yyconst char * YY_LAST_ARG)); +#endif + +#ifndef YY_NO_INPUT +/* %- Standard (non-C++) definition */ +/* %c */ +#ifndef ssIN_HEADER +#ifdef __cplusplus +static int yyinput YY_PROTO(( YY_ONLY_ARG )); +#else +static int input YY_PROTO(( YY_ONLY_ARG )); +#endif +/* %e */ +#endif /* !ssIN_HEADER */ +/* %* */ +#endif + +#if YY_STACK_USED +#ifndef YY_REENTRANT +/* %c */ +#ifndef ssIN_HEADER +static int yy_start_stack_ptr = 0; +static int yy_start_stack_depth = 0; +static int *yy_start_stack = 0; +/* %e */ +#endif /* !ssIN_HEADER */ +#endif +#ifndef YY_NO_PUSH_STATE +static void yy_push_state YY_PROTO(( int new_state YY_LAST_ARG)); +#endif +#ifndef YY_NO_POP_STATE +static void yy_pop_state YY_PROTO(( YY_ONLY_ARG )); +#endif +#ifndef YY_NO_TOP_STATE +static int yy_top_state YY_PROTO(( YY_ONLY_ARG )); +#endif + +#else +#define YY_NO_PUSH_STATE 1 +#define YY_NO_POP_STATE 1 +#define YY_NO_TOP_STATE 1 +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#define YY_READ_BUF_SIZE 8192 +#endif + +/* Copy whatever the last rule matched to the standard output. */ + +#ifndef ECHO +/* %- Standard (non-C++) definition */ +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO (void) fwrite( yytext, yyleng, 1, yyout ) +/* %+ C++ definition */ +/* %* */ +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ +/* %% [5.0] fread()/read() definition of YY_INPUT goes here unless we're doing C++ \ */\ + if ( YY_G(yy_current_buffer)->yy_is_interactive ) \ + { \ + int c = '*'; \ + size_t n; \ + for ( n = 0; n < max_size && \ + (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ + if ( c == '\n' ) \ + buf[n++] = (char) c; \ + if ( c == EOF && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + result = n; \ + } \ + else \ + { \ + errno=0; \ + while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(yyin); \ + } \ + } +/* %+ C++ definition \ */\ +/* %* */ +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +/* %- */ +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +/* %+ */ +/* %* */ +#endif + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +/* %- Standard (non-C++) definition */ + +/* If the bison pure parser is used, then bison will provide + one or two additional arguments. */ + +#ifdef YY_REENTRANT_BISON_PURE +# ifdef YYLTYPE +# ifdef YY_USE_PROTOS +# define YY_LEX_ARGS (YYSTYPE * yylvalp, YYLTYPE * yyllocp YY_LAST_ARG) +# else +# define YY_LEX_ARGS (yylvalp, yyllocp YY_LAST_ARG) \ + YYSTYPE * yylvalp; YYLTYPE * yyllocp; YY_DECL_LAST_ARG +# endif +# else +# ifdef YY_USE_PROTOS +# define YY_LEX_ARGS (YYSTYPE * yylvalp YY_LAST_ARG) +# else +# define YY_LEX_ARGS (yylvalp YY_LAST_ARG) \ + YYSTYPE * yylvalp; YY_DECL_LAST_ARG +# endif +# endif +#else +# ifdef YY_USE_PROTOS +# define YY_LEX_ARGS (YY_ONLY_ARG) +# else +# define YY_LEX_ARGS (YY_ONLY_ARG) YY_DECL_LAST_ARG +# endif +#endif + + +extern int yylex YY_PROTO( YY_LEX_ARGS ); + +#define YY_DECL int yylex YY_LEX_ARGS +/* %+ C++ definition */ +/* %* */ +#endif + +/* Code executed at the beginning of each rule, after yytext and yyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK break; +#endif + +/* %% [6.0] YY_RULE_SETUP definition goes here */ +#define YY_RULE_SETUP \ + YY_USER_ACTION + +/* %c */ +#ifndef ssIN_HEADER +YY_DECL + { + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; + +/* %% [7.0] user's declarations go here */ +#line 66 "icalsslexer.l" + + + + + + +#line 959 "lex.ss.c" + +#ifdef YY_REENTRANT_BISON_PURE + yylval = yylvalp; +#ifdef YYLTYPE + yylloc = yyllocp; +#endif +#endif + + if ( YY_G(yy_init) ) + { + YY_G(yy_init) = 0; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! YY_G(yy_start) ) + YY_G(yy_start) = 1; /* first start state */ + + if ( ! yyin ) +/* %- */ + yyin = stdin; +/* %+ */ +/* %* */ + + if ( ! yyout ) +/* %- */ + yyout = stdout; +/* %+ */ +/* %* */ + + if ( ! YY_G(yy_current_buffer) ) + YY_G(yy_current_buffer) = + yy_create_buffer( yyin, YY_BUF_SIZE YY_CALL_LAST_ARG); + + yy_load_buffer_state( YY_CALL_ONLY_ARG ); + } + + while ( 1 ) /* loops until end-of-file is reached */ + { +/* %% [8.0] yymore()-related code goes here */ + yy_cp = YY_G(yy_c_buf_p); + + /* Support of yytext. */ + *yy_cp = YY_G(yy_hold_char); + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + +/* %% [9.0] code to set up and find next match goes here */ + yy_current_state = YY_G(yy_start); +yy_match: + do + { + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; + if ( yy_accept[yy_current_state] ) + { + YY_G(yy_last_accepting_state) = yy_current_state; + YY_G(yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 56 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + ++yy_cp; + } + while ( yy_base[yy_current_state] != 69 ); + +yy_find_action: +/* %% [10.0] code to find the action number goes here */ + yy_act = yy_accept[yy_current_state]; + if ( yy_act == 0 ) + { /* have to back up */ + yy_cp = YY_G(yy_last_accepting_cpos); + yy_current_state = YY_G(yy_last_accepting_state); + yy_act = yy_accept[yy_current_state]; + } + + YY_DO_BEFORE_ACTION; + +/* %% [11.0] code for yylineno update goes here */ + +do_action: /* This label is used only to access EOF actions. */ + +/* %% [12.0] debug code goes here */ + + switch ( yy_act ) + { /* beginning of action switch */ +/* %% [13.0] actions go here */ + case 0: /* must back up */ + /* undo the effects of YY_DO_BEFORE_ACTION */ + *yy_cp = YY_G(yy_hold_char); + yy_cp = YY_G(yy_last_accepting_cpos); + yy_current_state = YY_G(yy_last_accepting_state); + goto yy_find_action; + +case 1: +YY_RULE_SETUP +#line 72 "icalsslexer.l" +{ return SELECT; } + YY_BREAK +case 2: +YY_RULE_SETUP +#line 73 "icalsslexer.l" +{ return FROM; } + YY_BREAK +case 3: +YY_RULE_SETUP +#line 74 "icalsslexer.l" +{ return WHERE; } + YY_BREAK +case 4: +YY_RULE_SETUP +#line 75 "icalsslexer.l" +{ return COMMA; } + YY_BREAK +case 5: +YY_RULE_SETUP +#line 76 "icalsslexer.l" +{ return EQUALS; } + YY_BREAK +case 6: +YY_RULE_SETUP +#line 77 "icalsslexer.l" +{ return EQUALS; } + YY_BREAK +case 7: +YY_RULE_SETUP +#line 78 "icalsslexer.l" +{ return NOTEQUALS; } + YY_BREAK +case 8: +YY_RULE_SETUP +#line 79 "icalsslexer.l" +{ return LESS; } + YY_BREAK +case 9: +YY_RULE_SETUP +#line 80 "icalsslexer.l" +{ return GREATER; } + YY_BREAK +case 10: +YY_RULE_SETUP +#line 81 "icalsslexer.l" +{ return LESSEQUALS; } + YY_BREAK +case 11: +YY_RULE_SETUP +#line 82 "icalsslexer.l" +{ return GREATEREQUALS; } + YY_BREAK +case 12: +YY_RULE_SETUP +#line 83 "icalsslexer.l" +{ return AND; } + YY_BREAK +case 13: +YY_RULE_SETUP +#line 84 "icalsslexer.l" +{ return OR; } + YY_BREAK +case 14: +YY_RULE_SETUP +#line 85 "icalsslexer.l" +{ return IS; } + YY_BREAK +case 15: +YY_RULE_SETUP +#line 86 "icalsslexer.l" +{ return NOT; } + YY_BREAK +case 16: +YY_RULE_SETUP +#line 87 "icalsslexer.l" +{ return SQLNULL; } + YY_BREAK +case 17: +YY_RULE_SETUP +#line 88 "icalsslexer.l" +{ return QUOTE; } + YY_BREAK +case 18: +YY_RULE_SETUP +#line 89 "icalsslexer.l" +; + YY_BREAK +case 19: +YY_RULE_SETUP +#line 90 "icalsslexer.l" +{ return EOL; } + YY_BREAK +case 20: +YY_RULE_SETUP +#line 92 "icalsslexer.l" +{ + int c = input(yy_globals); + unput(c); + if(c!='\''){ + yylvalp->v_string= icalmemory_tmp_copy(yytext); + return STRING; + } else { + /*ssmore();*/ + } +} + YY_BREAK +case 21: +YY_RULE_SETUP +#line 103 "icalsslexer.l" +{ + yylval->v_string= icalmemory_tmp_copy(yytext); + return STRING; +} + YY_BREAK +case 22: +YY_RULE_SETUP +#line 109 "icalsslexer.l" +{ return yytext[0]; } + YY_BREAK +case 23: +YY_RULE_SETUP +#line 111 "icalsslexer.l" +ECHO; + YY_BREAK +#line 1188 "lex.ss.c" +case YY_STATE_EOF(INITIAL): +case YY_STATE_EOF(sql): +case YY_STATE_EOF(string_value): + yyterminate(); + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - YY_G(yytext_ptr)) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = YY_G(yy_hold_char); + YY_RESTORE_YY_MORE_OFFSET + + if ( YY_G(yy_current_buffer)->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * yylex(). If so, then we have to assure + * consistency between yy_current_buffer and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + YY_G(yy_n_chars) = YY_G(yy_current_buffer)->yy_n_chars; + YY_G(yy_current_buffer)->yy_input_file = yyin; + YY_G(yy_current_buffer)->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( YY_G(yy_c_buf_p) <= &YY_G(yy_current_buffer)->yy_ch_buf[YY_G(yy_n_chars)] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + YY_G(yy_c_buf_p) = YY_G(yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( YY_CALL_ONLY_ARG ); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state YY_CALL_LAST_ARG); + + yy_bp = YY_G(yytext_ptr) + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++YY_G(yy_c_buf_p); + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { +/* %% [14.0] code to do back-up for compressed tables and set up yy_cp goes here */ + yy_cp = YY_G(yy_c_buf_p); + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer( YY_CALL_ONLY_ARG ) ) + { + case EOB_ACT_END_OF_FILE: + { + YY_G(yy_did_buffer_switch_on_eof) = 0; + + if ( yywrap( YY_CALL_ONLY_ARG ) ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + YY_G(yy_c_buf_p) = YY_G(yytext_ptr) + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! YY_G(yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + YY_G(yy_c_buf_p) = + YY_G(yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( YY_CALL_ONLY_ARG ); + + yy_cp = YY_G(yy_c_buf_p); + yy_bp = YY_G(yytext_ptr) + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + YY_G(yy_c_buf_p) = + &YY_G(yy_current_buffer)->yy_ch_buf[YY_G(yy_n_chars)]; + + yy_current_state = yy_get_previous_state( YY_CALL_ONLY_ARG ); + + yy_cp = YY_G(yy_c_buf_p); + yy_bp = YY_G(yytext_ptr) + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ + } /* end of yylex */ +/* %e */ +#endif /* !ssIN_HEADER */ +/* %+ */ +/* %c */ +#ifndef ssIN_HEADER +/* %e */ +#endif /* !ssIN_HEADER */ +/* %* */ + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ + +/* %- */ +/* %c */ +#ifndef ssIN_HEADER +#ifdef YY_USE_PROTOS +static int yy_get_next_buffer(YY_ONLY_ARG) +#else +static int yy_get_next_buffer(YY_ONLY_ARG) +YY_DECL_LAST_ARG +#endif +/* %+ */ +/* %* */ + { + register char *dest = YY_G(yy_current_buffer)->yy_ch_buf; + register char *source = YY_G(yytext_ptr); + register int number_to_move, i; + int ret_val; + + if ( YY_G(yy_c_buf_p) > &YY_G(yy_current_buffer)->yy_ch_buf[YY_G(yy_n_chars) + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( YY_G(yy_current_buffer)->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( YY_G(yy_c_buf_p) - YY_G(yytext_ptr) - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) (YY_G(yy_c_buf_p) - YY_G(yytext_ptr)) - 1; + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( YY_G(yy_current_buffer)->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + YY_G(yy_current_buffer)->yy_n_chars = YY_G(yy_n_chars) = 0; + + else + { + size_t num_to_read = + YY_G(yy_current_buffer)->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ +#ifdef YY_USES_REJECT + YY_FATAL_ERROR( +"input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); +#else + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_G(yy_current_buffer); + + int yy_c_buf_p_offset = + (int) (YY_G(yy_c_buf_p) - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + int new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + yy_flex_realloc( (void *) b->yy_ch_buf, + b->yy_buf_size + 2 YY_CALL_LAST_ARG ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = 0; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + YY_G(yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_G(yy_current_buffer)->yy_buf_size - + number_to_move - 1; +#endif + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&YY_G(yy_current_buffer)->yy_ch_buf[number_to_move]), + YY_G(yy_n_chars), num_to_read ); + + YY_G(yy_current_buffer)->yy_n_chars = YY_G(yy_n_chars); + } + + if ( YY_G(yy_n_chars) == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + yyrestart( yyin YY_CALL_LAST_ARG); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_G(yy_current_buffer)->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + YY_G(yy_n_chars) += number_to_move; + YY_G(yy_current_buffer)->yy_ch_buf[YY_G(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; + YY_G(yy_current_buffer)->yy_ch_buf[YY_G(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; + + YY_G(yytext_ptr) = &YY_G(yy_current_buffer)->yy_ch_buf[0]; + + return ret_val; + } +/* %e */ +#endif /* !ssIN_HEADER */ + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + +/* %- */ +/* %c */ +#ifndef ssIN_HEADER +#ifdef YY_USE_PROTOS +static yy_state_type yy_get_previous_state(YY_ONLY_ARG) +#else +static yy_state_type yy_get_previous_state(YY_ONLY_ARG) +YY_DECL_LAST_ARG +#endif +/* %+ */ +/* %* */ + { + register yy_state_type yy_current_state; + register char *yy_cp; + +/* %% [15.0] code to get the start state into yy_current_state goes here */ + yy_current_state = YY_G(yy_start); + + for ( yy_cp = YY_G(yytext_ptr) + YY_MORE_ADJ; yy_cp < YY_G(yy_c_buf_p); ++yy_cp ) + { +/* %% [16.0] code to find the next state goes here */ + register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + if ( yy_accept[yy_current_state] ) + { + YY_G(yy_last_accepting_state) = yy_current_state; + YY_G(yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 56 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + } + + return yy_current_state; + } + + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + +/* %- */ +#ifdef YY_USE_PROTOS +static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state YY_LAST_ARG ) +#else +static yy_state_type yy_try_NUL_trans( yy_current_state YY_LAST_ARG ) +yy_state_type yy_current_state; +YY_DECL_LAST_ARG +#endif +/* %+ */ +/* %* */ + { + register int yy_is_jam; +/* %% [17.0] code to find the next state, and perhaps do backing up, goes here */ + register char *yy_cp = YY_G(yy_c_buf_p); + + register YY_CHAR yy_c = 1; + if ( yy_accept[yy_current_state] ) + { + YY_G(yy_last_accepting_state) = yy_current_state; + YY_G(yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 56 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_is_jam = (yy_current_state == 55); + + return yy_is_jam ? 0 : yy_current_state; + } + + +/* %- */ +#ifndef YY_NO_UNPUT +#ifdef YY_USE_PROTOS +static void yyunput( int c, register char *yy_bp YY_LAST_ARG ) +#else +static void yyunput( c, yy_bp YY_LAST_ARG) +int c; +register char *yy_bp; +YY_DECL_LAST_ARG +#endif +/* %+ */ +/* %* */ + { + register char *yy_cp = YY_G(yy_c_buf_p); + + /* undo effects of setting up yytext */ + *yy_cp = YY_G(yy_hold_char); + + if ( yy_cp < YY_G(yy_current_buffer)->yy_ch_buf + 2 ) + { /* need to shift things up to make room */ + /* +2 for EOB chars. */ + register int number_to_move = YY_G(yy_n_chars) + 2; + register char *dest = &YY_G(yy_current_buffer)->yy_ch_buf[ + YY_G(yy_current_buffer)->yy_buf_size + 2]; + register char *source = + &YY_G(yy_current_buffer)->yy_ch_buf[number_to_move]; + + while ( source > YY_G(yy_current_buffer)->yy_ch_buf ) + *--dest = *--source; + + yy_cp += (int) (dest - source); + yy_bp += (int) (dest - source); + YY_G(yy_current_buffer)->yy_n_chars = + YY_G(yy_n_chars) = YY_G(yy_current_buffer)->yy_buf_size; + + if ( yy_cp < YY_G(yy_current_buffer)->yy_ch_buf + 2 ) + YY_FATAL_ERROR( "flex scanner push-back overflow" ); + } + + *--yy_cp = (char) c; + +/* %% [18.0] update yylineno here */ + + YY_G(yytext_ptr) = yy_bp; + YY_G(yy_hold_char) = *yy_cp; + YY_G(yy_c_buf_p) = yy_cp; + } +/* %- */ +#endif /* ifndef YY_NO_UNPUT */ +/* %* */ + + +/* %- */ +#ifndef YY_NO_INPUT +#ifdef __cplusplus +static int yyinput(YY_ONLY_ARG) +#else +#ifdef YY_USE_PROTOS +static int input(YY_ONLY_ARG) +#else +static int input(YY_ONLY_ARG) + YY_DECL_LAST_ARG +#endif +#endif +/* %+ */ +/* %* */ + { + int c; + + *YY_G(yy_c_buf_p) = YY_G(yy_hold_char); + + if ( *YY_G(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( YY_G(yy_c_buf_p) < &YY_G(yy_current_buffer)->yy_ch_buf[YY_G(yy_n_chars)] ) + /* This was really a NUL. */ + *YY_G(yy_c_buf_p) = '\0'; + + else + { /* need more input */ + int offset = YY_G(yy_c_buf_p) - YY_G(yytext_ptr); + ++YY_G(yy_c_buf_p); + + switch ( yy_get_next_buffer( YY_CALL_ONLY_ARG ) ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + yyrestart( yyin YY_CALL_LAST_ARG); + + /* fall through */ + + case EOB_ACT_END_OF_FILE: + { + if ( yywrap( YY_CALL_ONLY_ARG ) ) + return EOF; + + if ( ! YY_G(yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(YY_CALL_ONLY_ARG); +#else + return input(YY_CALL_ONLY_ARG); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + YY_G(yy_c_buf_p) = YY_G(yytext_ptr) + offset; + break; + } + } + } + + c = *(unsigned char *) YY_G(yy_c_buf_p); /* cast for 8-bit char's */ + *YY_G(yy_c_buf_p) = '\0'; /* preserve yytext */ + YY_G(yy_hold_char) = *++YY_G(yy_c_buf_p); + +/* %% [19.0] update BOL and yylineno */ + + return c; + } +/* %- */ +#endif /* ifndef YY_NO_INPUT */ +/* %* */ + +/* %- */ +#ifdef YY_USE_PROTOS +void yyrestart( FILE *input_file YY_LAST_ARG) +#else +void yyrestart( input_file YY_LAST_ARG) +FILE *input_file; +YY_DECL_LAST_ARG +#endif +/* %+ */ +/* %* */ + { + if ( ! YY_G(yy_current_buffer) ) + YY_G(yy_current_buffer) = + yy_create_buffer( yyin, YY_BUF_SIZE YY_CALL_LAST_ARG); + + yy_init_buffer( YY_G(yy_current_buffer), input_file YY_CALL_LAST_ARG); + yy_load_buffer_state( YY_CALL_ONLY_ARG ); + } + + +/* %- */ +#ifdef YY_USE_PROTOS +void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer YY_LAST_ARG ) +#else +void yy_switch_to_buffer( new_buffer YY_LAST_ARG ) +YY_BUFFER_STATE new_buffer; +YY_DECL_LAST_ARG +#endif +/* %+ */ +/* %* */ + { + if ( YY_G(yy_current_buffer) == new_buffer ) + return; + + if ( YY_G(yy_current_buffer) ) + { + /* Flush out information for old buffer. */ + *YY_G(yy_c_buf_p) = YY_G(yy_hold_char); + YY_G(yy_current_buffer)->yy_buf_pos = YY_G(yy_c_buf_p); + YY_G(yy_current_buffer)->yy_n_chars = YY_G(yy_n_chars); + } + + YY_G(yy_current_buffer) = new_buffer; + yy_load_buffer_state( YY_CALL_ONLY_ARG ); + + /* We don't actually know whether we did this switch during + * EOF (yywrap()) processing, but the only time this flag + * is looked at is after yywrap() is called, so it's safe + * to go ahead and always set it. + */ + YY_G(yy_did_buffer_switch_on_eof) = 1; + } + + +/* %- */ +#ifdef YY_USE_PROTOS +void yy_load_buffer_state( YY_ONLY_ARG ) +#else +void yy_load_buffer_state(YY_ONLY_ARG ) +YY_DECL_LAST_ARG +#endif +/* %+ */ +/* %* */ + { + YY_G(yy_n_chars) = YY_G(yy_current_buffer)->yy_n_chars; + YY_G(yytext_ptr) = YY_G(yy_c_buf_p) = YY_G(yy_current_buffer)->yy_buf_pos; + yyin = YY_G(yy_current_buffer)->yy_input_file; + YY_G(yy_hold_char) = *YY_G(yy_c_buf_p); + } + + +/* %- */ +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_create_buffer( FILE *file, int size YY_LAST_ARG) +#else +YY_BUFFER_STATE yy_create_buffer( file, size YY_LAST_ARG) +FILE *file; +int size; +YY_DECL_LAST_ARG +#endif +/* %+ */ +/* %* */ + { + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) YY_CALL_LAST_ARG ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 YY_CALL_LAST_ARG ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + yy_init_buffer( b, file YY_CALL_LAST_ARG); + + return b; + } + + +/* %- */ +#ifdef YY_USE_PROTOS +void yy_delete_buffer( YY_BUFFER_STATE b YY_LAST_ARG) +#else +void yy_delete_buffer( b YY_LAST_ARG) +YY_BUFFER_STATE b; +YY_DECL_LAST_ARG +#endif +/* %+ */ +/* %* */ + { + if ( ! b ) + return; + + if ( b == YY_G(yy_current_buffer) ) + YY_G(yy_current_buffer) = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + yy_flex_free( (void *) b->yy_ch_buf YY_CALL_LAST_ARG ); + + yy_flex_free( (void *) b YY_CALL_LAST_ARG ); + } + + +/* %- */ +#ifndef YY_ALWAYS_INTERACTIVE +#ifndef YY_NEVER_INTERACTIVE +#ifdef __cplusplus +extern "C" int isatty YY_PROTO(( int )); +#else +extern int isatty YY_PROTO(( int )); +#endif /* __cplusplus */ +#endif /* !YY_NEVER_INTERACTIVE */ +#endif /* !YY_ALWAYS_INTERACTIVE */ + +#ifdef YY_USE_PROTOS +void yy_init_buffer( YY_BUFFER_STATE b, FILE *file YY_LAST_ARG) +#else +void yy_init_buffer( b, file YY_LAST_ARG) +YY_BUFFER_STATE b; +FILE *file; +YY_DECL_LAST_ARG +#endif + +/* %+ */ +/* %* */ + + { + int oerrno = errno; + + yy_flush_buffer( b YY_CALL_LAST_ARG); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + +/* %- */ +#if YY_ALWAYS_INTERACTIVE + b->yy_is_interactive = 1; +#else +#if YY_NEVER_INTERACTIVE + b->yy_is_interactive = 0; +#else + b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; +#endif +#endif +/* %+ */ +/* %* */ + errno = oerrno; + } + + +/* %- */ +#ifdef YY_USE_PROTOS +void yy_flush_buffer( YY_BUFFER_STATE b YY_LAST_ARG ) +#else +void yy_flush_buffer( b YY_LAST_ARG ) +YY_BUFFER_STATE b; +YY_DECL_LAST_ARG +#endif + +/* %+ */ +/* %* */ + { + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == YY_G(yy_current_buffer) ) + yy_load_buffer_state( YY_CALL_ONLY_ARG ); + } +/* %* */ + + +#ifndef YY_NO_SCAN_BUFFER +/* %- */ +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size YY_LAST_ARG ) +#else +YY_BUFFER_STATE yy_scan_buffer( base, size YY_LAST_ARG ) +char *base; +yy_size_t size; +YY_DECL_LAST_ARG +#endif + { + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return 0; + + b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) YY_CALL_LAST_ARG ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); + + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = 0; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + yy_switch_to_buffer( b YY_CALL_LAST_ARG ); + + return b; + } +/* %* */ +#endif + + +#ifndef YY_NO_SCAN_STRING +/* %- */ +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str YY_LAST_ARG ) +#else +YY_BUFFER_STATE yy_scan_string( yy_str YY_LAST_ARG) +yyconst char *yy_str; +YY_DECL_LAST_ARG +#endif + { + int len; + for ( len = 0; yy_str[len]; ++len ) + ; + + return yy_scan_bytes( yy_str, len YY_CALL_LAST_ARG); + } +/* %* */ +#endif + + +#ifndef YY_NO_SCAN_BYTES +/* %- */ +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len YY_LAST_ARG) +#else +YY_BUFFER_STATE yy_scan_bytes( bytes, len YY_LAST_ARG) +yyconst char *bytes; +YY_DECL_LAST_ARG +int len; +#endif + { + YY_BUFFER_STATE b; + char *buf; + yy_size_t n; + int i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = len + 2; + buf = (char *) yy_flex_alloc( n YY_CALL_LAST_ARG ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); + + for ( i = 0; i < len; ++i ) + buf[i] = bytes[i]; + + buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR; + + b = yy_scan_buffer( buf, n YY_CALL_LAST_ARG); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; + } +/* %* */ +#endif + + +#ifndef YY_NO_PUSH_STATE +/* %- */ +#ifdef YY_USE_PROTOS +static void yy_push_state( int new_state YY_LAST_ARG) +#else +static void yy_push_state( new_state YY_LAST_ARG) +int new_state; +YY_DECL_LAST_ARG +#endif +/* %+ */ +/* %* */ + { + if ( YY_G(yy_start_stack_ptr) >= YY_G(yy_start_stack_depth) ) + { + yy_size_t new_size; + + YY_G(yy_start_stack_depth) += YY_START_STACK_INCR; + new_size = YY_G(yy_start_stack_depth) * sizeof( int ); + + if ( ! YY_G(yy_start_stack) ) + YY_G(yy_start_stack) = (int *) yy_flex_alloc( new_size YY_CALL_LAST_ARG ); + + else + YY_G(yy_start_stack) = (int *) yy_flex_realloc( + (void *) YY_G(yy_start_stack), new_size YY_CALL_LAST_ARG ); + + if ( ! YY_G(yy_start_stack) ) + YY_FATAL_ERROR( + "out of memory expanding start-condition stack" ); + } + + YY_G(yy_start_stack)[YY_G(yy_start_stack_ptr)++] = YY_START; + + BEGIN(new_state); + } +#endif + + +#ifndef YY_NO_POP_STATE +/* %- */ +#ifdef YY_USE_PROTOS +static void yy_pop_state( YY_ONLY_ARG ) +#else +static void yy_pop_state( YY_ONLY_ARG ) +YY_DECL_LAST_ARG +#endif +/* %+ */ +/* %* */ + { + if ( --YY_G(yy_start_stack_ptr) < 0 ) + YY_FATAL_ERROR( "start-condition stack underflow" ); + + BEGIN(YY_G(yy_start_stack)[YY_G(yy_start_stack_ptr)]); + } +#endif + + +#ifndef YY_NO_TOP_STATE +/* %- */ +#ifdef YY_USE_PROTOS +static int yy_top_state( YY_ONLY_ARG ) +#else +static int yy_top_state( YY_ONLY_ARG ) +YY_DECL_LAST_ARG +#endif +/* %+ */ +/* %* */ + { + return YY_G(yy_start_stack)[YY_G(yy_start_stack_ptr) - 1]; + } +#endif + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +/* %- */ +static void yy_fatal_error( yyconst char msg[] ) + { + (void) fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); + } + +/* %+ */ +/* %* */ + + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + yytext[yyleng] = YY_G(yy_hold_char); \ + YY_G(yy_c_buf_p) = yytext + n; \ + YY_G(yy_hold_char) = *YY_G(yy_c_buf_p); \ + *YY_G(yy_c_buf_p) = '\0'; \ + yyleng = n; \ + } \ + while ( 0 ) + + + +#ifdef YY_REENTRANT + +/* Accessor methods (get/set functions) to struct members. */ + +#ifndef YY_NO_GET_EXTRA +#ifdef YY_USE_PROTOS +YY_EXTRA_TYPE yyget_extra( YY_ONLY_ARG ) +#else +YY_EXTRA_TYPE yyget_extra( YY_ONLY_ARG ) + YY_DECL_LAST_ARG +#endif +{ + return yyextra; +} +#endif /* !YY_NO_GET_EXTRA */ + +#ifndef YY_NO_GET_LINENO +# ifdef YY_USE_PROTOS +int yyget_lineno( YY_ONLY_ARG ) +# else +int yyget_lineno( YY_ONLY_ARG ) + YY_DECL_LAST_ARG +# endif +{ + return yylineno; +} +#endif /* !YY_NO_GET_LINENO */ + +#ifndef YY_NO_GET_IN +#ifdef YY_USE_PROTOS +FILE *yyget_in( YY_ONLY_ARG ) +#else +FILE *yyget_in( YY_ONLY_ARG ) + YY_DECL_LAST_ARG +#endif +{ + return yyin; +} +#endif /* !YY_NO_GET_IN */ + +#ifndef YY_NO_GET_OUT +#ifdef YY_USE_PROTOS +FILE *yyget_out( YY_ONLY_ARG ) +#else +FILE *yyget_out( YY_ONLY_ARG ) + YY_DECL_LAST_ARG +#endif +{ + return yyout; +} +#endif /* !YY_NO_GET_OUT */ + +#ifndef YY_NO_GET_LENG +#ifdef YY_USE_PROTOS +int yyget_leng( YY_ONLY_ARG ) +#else +int yyget_leng( YY_ONLY_ARG ) + YY_DECL_LAST_ARG +#endif +{ + return yyleng; +} +#endif /* !YY_NO_GET_LENG */ + +#ifndef YY_NO_GET_TEXT +#ifdef YY_USE_PROTOS +char *yyget_text( YY_ONLY_ARG ) +#else +char *yyget_text( YY_ONLY_ARG ) + YY_DECL_LAST_ARG +#endif +{ + return yytext; +} +#endif /* !YY_NO_GET_TEXT */ + +#ifndef YY_NO_SET_EXTRA +#ifdef YY_USE_PROTOS +void yyset_extra( YY_EXTRA_TYPE user_defined YY_LAST_ARG ) +#else +void yyset_extra( user_defined YY_LAST_ARG ) + YY_EXTRA_TYPE user_defined; + YY_DECL_LAST_ARG +#endif +{ + yyextra = user_defined ; +} +#endif /* !YY_NO_SET_EXTRA */ + +#ifndef YY_NO_SET_LINENO +# ifdef YY_USE_PROTOS +void yyset_lineno( int line_number YY_LAST_ARG ) +# else +void yyset_lineno( line_number YY_LAST_ARG ) + int line_number; + YY_DECL_LAST_ARG +# endif +{ + yylineno = line_number; +} +#endif /* !YY_NO_SET_LINENO */ + + +#ifndef YY_NO_SET_IN +#ifdef YY_USE_PROTOS +void yyset_in( FILE * in_str YY_LAST_ARG ) +#else +void yyset_in( in_str YY_LAST_ARG ) + FILE * in_str; + YY_DECL_LAST_ARG +#endif +{ + yyin = in_str ; +} +#endif /* !YY_NO_SET_IN */ + +#ifndef YY_NO_SET_OUT +#ifdef YY_USE_PROTOS +void yyset_out( FILE * out_str YY_LAST_ARG ) +#else +void yyset_out( out_str YY_LAST_ARG ) + FILE * out_str; + YY_DECL_LAST_ARG +#endif +{ + yyout = out_str ; +} +#endif /* !YY_NO_SET_OUT */ + +/* Accessor methods for yylval and yylloc */ + +#ifdef YY_REENTRANT_BISON_PURE +#ifndef YY_NO_GET_LVAL +#ifdef YY_USE_PROTOS +YYSTYPE * yyget_lval( YY_ONLY_ARG ) +#else +YYSTYPE * yyget_lval( YY_ONLY_ARG ) + YY_DECL_LAST_ARG +#endif +{ + return yylval; +} +#endif /* !YY_NO_GET_LVAL */ + +#ifndef YY_NO_SET_LVAL +#ifdef YY_USE_PROTOS +void yyset_lval( YYSTYPE * yylvalp YY_LAST_ARG ) +#else +void yyset_lval( yylvalp YY_LAST_ARG ) + YYSTYPE * yylvalp; + YY_DECL_LAST_ARG +#endif +{ + yylval = yylvalp; +} +#endif /* !YY_NO_SET_LVAL */ + +#ifdef YYLTYPE +#ifndef YY_NO_GET_LLOC +#ifdef YY_USE_PROTOS +YYLTYPE *yyget_lloc( YY_ONLY_ARG ) +#else +YYLTYPE *yyget_lloc( YY_ONLY_ARG ) + YY_DECL_LAST_ARG +#endif +{ + return yylloc; +} +#endif /* !YY_NO_GET_LLOC */ + +#ifndef YY_NO_SET_LLOC +#ifdef YY_USE_PROTOS +void yyset_lloc( YYLTYPE * yyllocp YY_LAST_ARG ) +#else +void yyset_lloc( yyllocp YY_LAST_ARG ) + YYLTYPE * yyllocp; + YY_DECL_LAST_ARG +#endif +{ + yylloc = yyllocp; +} +#endif /* !YY_NO_SET_LLOC */ + +#endif /* YYLTYPE */ +#endif /* YY_REENTRANT_BISON_PURE */ + + +#ifdef YY_USE_PROTOS +static int yy_init_globals( yyscan_t yy_globals) +#else +static int yy_init_globals( yy_globals ) + yyscan_t yy_globals; +#endif + { + /* Initialization is the same as for the non-reentrant scanner. + This function is called once per scanner lifetime. */ + + /* We do not touch yylineno unless the option is enabled. */ +#ifdef YY_USE_LINENO + yylineno = 1; +#endif + YY_G(yy_current_buffer) = 0; + YY_G(yy_c_buf_p) = (char *) 0; + YY_G(yy_init) = 1; + YY_G(yy_start) = 0; + YY_G(yy_start_stack_ptr) = 0; + YY_G(yy_start_stack_depth) = 0; + YY_G(yy_start_stack) = (int *) 0; + +/* Defined in main.c */ +#ifdef YY_STDINIT + yyin = stdin; + yyout = stdout; +#else + yyin = (FILE *) 0; + yyout = (FILE *) 0; +#endif + return 0; + } + +/* User-visible API */ +#ifdef YY_USE_PROTOS +int yylex_init( yyscan_t* ptr_yy_globals) +#else +int yylex_init( ptr_yy_globals ) + yyscan_t* ptr_yy_globals; +#endif + { + *ptr_yy_globals = (yyscan_t) yy_flex_alloc ( sizeof( struct yy_globals_t ), NULL ); + yy_init_globals ( *ptr_yy_globals ); + return 0; + } + +#ifdef YY_USE_PROTOS +int yylex_destroy( yyscan_t yy_globals ) +#else +int yylex_destroy( yy_globals ) + yyscan_t yy_globals; +#endif + { + if( yy_globals ) + { + + /* Destroy the current (main) buffer. */ + yy_delete_buffer( YY_G(yy_current_buffer) YY_CALL_LAST_ARG ); + YY_G(yy_current_buffer) = NULL; + + /* Destroy the start condition stack. */ + if( YY_G(yy_start_stack) ) { + yy_flex_free( YY_G(yy_start_stack) YY_CALL_LAST_ARG ); + YY_G(yy_start_stack) = NULL; + } + + /* Destroy the main struct. */ + yy_flex_free ( yy_globals YY_CALL_LAST_ARG ); + } + return 0; + } + +#endif /* End YY_REENTRANT */ + +/* Internal utility routines. */ + +#ifndef yytext_ptr +#ifdef YY_USE_PROTOS +static void yy_flex_strncpy( char *s1, yyconst char *s2, int n YY_LAST_ARG) +#else +static void yy_flex_strncpy( s1, s2, n YY_LAST_ARG) +char *s1; +yyconst char *s2; +int n; +YY_DECL_LAST_ARG +#endif + { + register int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; + } +#endif + +#ifdef YY_NEED_STRLEN +#ifdef YY_USE_PROTOS +static int yy_flex_strlen( yyconst char *s YY_LAST_ARG) +#else +static int yy_flex_strlen( s YY_LAST_ARG) +yyconst char *s; +YY_DECL_LAST_ARG +#endif + { + register int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; + } +#endif + + +#ifdef YY_USE_PROTOS +static void *yy_flex_alloc( yy_size_t size YY_LAST_ARG ) +#else +static void *yy_flex_alloc( size YY_LAST_ARG ) +yy_size_t size; +YY_DECL_LAST_ARG +#endif + { + return (void *) malloc( size ); + } + +#ifdef YY_USE_PROTOS +static void *yy_flex_realloc( void *ptr, yy_size_t size YY_LAST_ARG ) +#else +static void *yy_flex_realloc( ptr, size YY_LAST_ARG ) +void *ptr; +yy_size_t size; +YY_DECL_LAST_ARG +#endif + { + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return (void *) realloc( (char *) ptr, size ); + } + +#ifdef YY_USE_PROTOS +static void yy_flex_free( void *ptr YY_LAST_ARG ) +#else +static void yy_flex_free( ptr YY_LAST_ARG ) +void *ptr; +YY_DECL_LAST_ARG +#endif + { + free( (char *) ptr ); /* see yy_flex_realloc() for (char *) cast */ + } + +#if YY_MAIN +int main() + { + +#ifdef YY_REENTRANT + yyscan_t lexer; + yylex_init(&lexer); + yylex( lexer ); + yylex_destroy( lexer); + +#else + yylex(); +#endif + + return 0; + } +#endif +/* %e */ +#endif /* !ssIN_HEADER */ +#line 111 "icalsslexer.l" +#ifndef ssIN_HEADER + + +int yywrap(yyscan_t yy_globals) +{ + return 1; +} + +#endif /* !ssIN_HEADER */ diff --git a/mozilla/calendar/libical/src/libicalss/icalsslexer.l b/mozilla/calendar/libical/src/libicalss/icalsslexer.l new file mode 100644 index 00000000000..203103d0b99 --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/icalsslexer.l @@ -0,0 +1,117 @@ +%{ +/* -*- Mode: C -*- + ====================================================================== + FILE: icalsslexer.l + CREATOR: eric 8 Aug 2000 + + DESCRIPTION: + + $Id: icalsslexer.l,v 1.7 2002/07/21 17:18:15 lindner Exp $ + $Locker: $ + +(C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The Original Code is eric. The Initial Developer of the Original + Code is Eric Busboom + + ======================================================================*/ + +#include "icalssyacc.h" +#include "icalgaugeimpl.h" +#include "assert.h" + +#include /* For strdup() */ + +#undef YYPURE +#define YYPURE + +#undef SS_FATAL_ERROR +#define SS_FATAL_ERROR(msg) sserror(msg) + +%} + +crlf \x0D?\x0A +space [ ] +qsafechar [^\x00-\x1F\"] +safechar [^\x00-\x1F\"\:\;\,] +tsafechar [\x20-\x21\x23-\x2B\x2D-\x39\x3C-\x5B\x5D-\x7E] +valuechar [^\x00-\x08\x10-\x1F] +xname X-[a-zA-Z0-9\-]+ +xname2 [a-zA-Z0-9\-\ ] +paramtext {safechar}+ +value {valuechar}+ +quotedstring \"{qsafechar}+\" +digit [0-9] + +%array /* Make yytext an array. Slow, but handy. HACK */ + +%option caseless +%option reentrant-bison + +%s sql string_value + + + +%% + +%{ +%} + + +SELECT { return SELECT; } +FROM { return FROM; } +WHERE { return WHERE; } +, { return COMMA; } +"=" { return EQUALS; } +"==" { return EQUALS; } +"!=" { return NOTEQUALS; } +"<" { return LESS; } +">" { return GREATER; } +"<=" { return LESSEQUALS; } +">=" { return GREATEREQUALS; } +AND { return AND; } +OR { return OR; } +IS { return IS; } +NOT { return NOT; } +NULL { return SQLNULL; } +\' { return QUOTE; } +[ \t\n\r]+ ; +; { return EOL; } + +\'[\@\*A-Za-z0-9\-\.\:\ ]+\' { + int c = input(yy_globals); + unput(c); + if(c!='\''){ + yylvalp->v_string= icalmemory_tmp_copy(yytext); + return STRING; + } else { + /*ssmore();*/ + } +} + +[\@\*A-Za-z0-9\-\.]+ { + yylval->v_string= icalmemory_tmp_copy(yytext); + return STRING; +} + + +. { return yytext[0]; } + +%% + +int yywrap(yyscan_t yy_globals) +{ + return 1; +} + diff --git a/mozilla/calendar/libical/src/libicalss/icalssyacc.c b/mozilla/calendar/libical/src/libicalss/icalssyacc.c new file mode 100644 index 00000000000..d668fad083f --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/icalssyacc.c @@ -0,0 +1,1399 @@ +/* A Bison parser, made from icalssyacc.y + by GNU bison 1.34. */ + +#define YYBISON 1 /* Identify Bison output. */ + +#define yyparse ssparse +#define yylex sslex +#define yyerror sserror +#define yylval sslval +#define yychar sschar +#define yydebug ssdebug +#define yynerrs ssnerrs +# define STRING 257 +# define SELECT 258 +# define FROM 259 +# define WHERE 260 +# define COMMA 261 +# define QUOTE 262 +# define EQUALS 263 +# define NOTEQUALS 264 +# define LESS 265 +# define GREATER 266 +# define LESSEQUALS 267 +# define GREATEREQUALS 268 +# define AND 269 +# define OR 270 +# define EOL 271 +# define END 272 +# define IS 273 +# define NOT 274 +# define SQLNULL 275 + +#line 3 "icalssyacc.y" + +/* -*- Mode: C -*- + ====================================================================== + FILE: icalssyacc.y + CREATOR: eric 08 Aug 2000 + + DESCRIPTION: + + $Id: icalssyacc.c,v 1.7 2002/07/21 17:18:15 lindner Exp $ + $Locker: $ + +(C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The Original Code is eric. The Initial Developer of the Original + Code is Eric Busboom + + ======================================================================*/ +/*#define YYDEBUG 1*/ +#include +#include /* for strdup() */ +#include /* for SHRT_MAX*/ +#include "ical.h" +#include "icalgauge.h" +#include "icalgaugeimpl.h" + + +#define YYPARSE_PARAM yy_globals +#define YYLEX_PARAM yy_globals +#define YY_EXTRA_TYPE icalgauge_impl* + /* ick...*/ +#define yyextra ((struct icalgauge_impl*)ssget_extra(yy_globals)) + + +static void ssyacc_add_where(struct icalgauge_impl* impl, char* prop, + icalgaugecompare compare , char* value); +static void ssyacc_add_select(struct icalgauge_impl* impl, char* str1); +static void ssyacc_add_from(struct icalgauge_impl* impl, char* str1); +static void set_logic(struct icalgauge_impl* impl,icalgaugelogic l); +void sserror(char *s); /* Don't know why I need this.... */ + + +#line 56 "icalssyacc.y" +#ifndef YYSTYPE +typedef union { + char* v_string; +} yystype; +# define YYSTYPE yystype +#endif +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif + + + +#define YYFINAL 38 +#define YYFLAG -32768 +#define YYNTBASE 22 + +/* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */ +#define YYTRANSLATE(x) ((unsigned)(x) <= 275 ? yytranslate[x] : 27) + +/* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */ +static const char yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21 +}; + +#if YYDEBUG +static const short yyprhs[] = +{ + 0, 0, 7, 12, 14, 16, 20, 22, 26, 27, + 31, 35, 40, 44, 48, 52, 56, 60, 62, 66 +}; +static const short yyrhs[] = +{ + 4, 23, 5, 24, 6, 26, 0, 4, 23, 5, + 24, 0, 1, 0, 3, 0, 23, 7, 3, 0, + 3, 0, 24, 7, 3, 0, 0, 3, 9, 3, + 0, 3, 19, 21, 0, 3, 19, 20, 21, 0, + 3, 10, 3, 0, 3, 11, 3, 0, 3, 12, + 3, 0, 3, 13, 3, 0, 3, 14, 3, 0, + 25, 0, 26, 15, 25, 0, 26, 16, 25, 0 +}; + +#endif + +#if YYDEBUG +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const short yyrline[] = +{ + 0, 67, 68, 69, 75, 77, 81, 83, 86, 88, + 89, 90, 91, 92, 93, 94, 95, 98, 100, 101 +}; +#endif + + +#if (YYDEBUG) || defined YYERROR_VERBOSE + +/* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */ +static const char *const yytname[] = +{ + "$", "error", "$undefined.", "STRING", "SELECT", "FROM", "WHERE", "COMMA", + "QUOTE", "EQUALS", "NOTEQUALS", "LESS", "GREATER", "LESSEQUALS", + "GREATEREQUALS", "AND", "OR", "EOL", "END", "IS", "NOT", "SQLNULL", + "query_min", "select_list", "from_list", "where_clause", "where_list", 0 +}; +#endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const short yyr1[] = +{ + 0, 22, 22, 22, 23, 23, 24, 24, 25, 25, + 25, 25, 25, 25, 25, 25, 25, 26, 26, 26 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const short yyr2[] = +{ + 0, 6, 4, 1, 1, 3, 1, 3, 0, 3, + 3, 4, 3, 3, 3, 3, 3, 1, 3, 3 +}; + +/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE + doesn't specify something else to do. Zero means the default is an + error. */ +static const short yydefact[] = +{ + 0, 3, 0, 4, 0, 0, 0, 6, 2, 5, + 8, 0, 0, 17, 1, 7, 0, 0, 0, 0, + 0, 0, 0, 8, 8, 9, 12, 13, 14, 15, + 16, 0, 10, 18, 19, 11, 0, 0, 0 +}; + +static const short yydefgoto[] = +{ + 36, 4, 8, 13, 14 +}; + +static const short yypact[] = +{ + 5,-32768, 9,-32768, 6, 17, 18,-32768, 1,-32768, + 19, 20, -9,-32768, -1,-32768, 21, 22, 23, 24, + 25, 26, -4, 19, 19,-32768,-32768,-32768,-32768,-32768, + -32768, 10,-32768,-32768,-32768,-32768, 30, 32,-32768 +}; + +static const short yypgoto[] = +{ + -32768,-32768,-32768, -5,-32768 +}; + + +#define YYLAST 32 + + +static const short yytable[] = +{ + 16, 17, 18, 19, 20, 21, 1, 10, 11, 2, + 22, 5, 3, 6, 23, 24, 31, 32, 33, 34, + 7, 9, 12, 15, 25, 26, 27, 28, 29, 30, + 37, 35, 38 +}; + +static const short yycheck[] = +{ + 9, 10, 11, 12, 13, 14, 1, 6, 7, 4, + 19, 5, 3, 7, 15, 16, 20, 21, 23, 24, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 0, 21, 0 +}; +#define YYPURE 1 + +/* -*-C-*- Note some compilers choke on comments on `#line' lines. */ +#line 3 "/usr/local/share/bison/bison.simple" + +/* Skeleton output parser for bison, + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software + Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* As a special exception, when this file is copied by Bison into a + Bison output file, you may use that output file without restriction. + This special exception was added by the Free Software Foundation + in version 1.24 of Bison. */ + +/* This is the parser code that is written into each bison parser when + the %semantic_parser declaration is not specified in the grammar. + It was written by Richard Stallman by simplifying the hairy parser + used when %semantic_parser is specified. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +#if ! defined (yyoverflow) || defined (YYERROR_VERBOSE) + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# if YYSTACK_USE_ALLOCA +# define YYSTACK_ALLOC alloca +# else +# ifndef YYSTACK_USE_ALLOCA +# if defined (alloca) || defined (_ALLOCA_H) +# define YYSTACK_ALLOC alloca +# else +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) +# else +# if defined (__STDC__) || defined (__cplusplus) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# endif +# define YYSTACK_ALLOC malloc +# define YYSTACK_FREE free +# endif + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + short yyss; + YYSTYPE yyvs; +# if YYLSP_NEEDED + YYLTYPE yyls; +# endif +}; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# if YYLSP_NEEDED +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (short) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \ + + 2 * YYSTACK_GAP_MAX) +# else +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (short) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAX) +# endif + +/* Relocate the TYPE STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Type, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + yymemcpy ((char *) yyptr, (char *) (Stack), \ + yysize * (YYSIZE_T) sizeof (Type)); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (Type) + YYSTACK_GAP_MAX; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (0) + +#endif /* ! defined (yyoverflow) || defined (YYERROR_VERBOSE) */ + + +#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) +# define YYSIZE_T __SIZE_TYPE__ +#endif +#if ! defined (YYSIZE_T) && defined (size_t) +# define YYSIZE_T size_t +#endif +#if ! defined (YYSIZE_T) +# if defined (__STDC__) || defined (__cplusplus) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# endif +#endif +#if ! defined (YYSIZE_T) +# define YYSIZE_T unsigned int +#endif + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY -2 +#define YYEOF 0 +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrlab1 +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ +#define YYFAIL goto yyerrlab +#define YYRECOVERING() (!!yyerrstatus) +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yychar1 = YYTRANSLATE (yychar); \ + YYPOPSTACK; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror ("syntax error: cannot back up"); \ + YYERROR; \ + } \ +while (0) + +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Compute the default location (before the actions + are run). + + When YYLLOC_DEFAULT is run, CURRENT is set the location of the + first token. By default, to implement support for ranges, extend + its range to the last symbol. */ + +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + Current.last_line = Rhs[N].last_line; \ + Current.last_column = Rhs[N].last_column; +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#if YYPURE +# if YYLSP_NEEDED +# ifdef YYLEX_PARAM +# define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM) +# else +# define YYLEX yylex (&yylval, &yylloc) +# endif +# else /* !YYLSP_NEEDED */ +# ifdef YYLEX_PARAM +# define YYLEX yylex (&yylval, YYLEX_PARAM) +# else +# define YYLEX yylex (&yylval) +# endif +# endif /* !YYLSP_NEEDED */ +#else /* !YYPURE */ +# define YYLEX yylex () +#endif /* !YYPURE */ + + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (0) +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +#endif /* !YYDEBUG */ + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#if YYMAXDEPTH == 0 +# undef YYMAXDEPTH +#endif + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + +#if ! defined (yyoverflow) && ! defined (yymemcpy) +# if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ +# define yymemcpy __builtin_memcpy +# else /* not GNU C or C++ */ + +/* This is the most reliable way to avoid incompatibilities + in available built-in functions on various systems. */ +static void +# if defined (__STDC__) || defined (__cplusplus) +yymemcpy (char *yyto, const char *yyfrom, YYSIZE_T yycount) +# else +yymemcpy (yyto, yyfrom, yycount) + char *yyto; + const char *yyfrom; + YYSIZE_T yycount; +# endif +{ + register const char *yyf = yyfrom; + register char *yyt = yyto; + register YYSIZE_T yyi = yycount; + + while (yyi-- != 0) + *yyt++ = *yyf++; +} +# endif +#endif + +#ifdef YYERROR_VERBOSE + +# ifndef yystrlen +# if defined (__GLIBC__) && defined (_STRING_H) +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +static YYSIZE_T +# if defined (__STDC__) || defined (__cplusplus) +yystrlen (const char *yystr) +# else +yystrlen (yystr) + const char *yystr; +# endif +{ + register const char *yys = yystr; + + while (*yys++ != '\0') + continue; + + return yys - yystr - 1; +} +# endif +# endif + +# ifndef yystpcpy +# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE) +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +static char * +# if defined (__STDC__) || defined (__cplusplus) +yystpcpy (char *yydest, const char *yysrc) +# else +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +# endif +{ + register char *yyd = yydest; + register const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif +#endif + +#line 319 "/usr/local/share/bison/bison.simple" + + +/* The user can define YYPARSE_PARAM as the name of an argument to be passed + into yyparse. The argument should have type void *. + It should actually point to an object. + Grammar actions can access the variable by casting it + to the proper pointer type. */ + +#ifdef YYPARSE_PARAM +# if defined (__STDC__) || defined (__cplusplus) +# define YYPARSE_PARAM_ARG void *YYPARSE_PARAM +# define YYPARSE_PARAM_DECL +# else +# define YYPARSE_PARAM_ARG YYPARSE_PARAM +# define YYPARSE_PARAM_DECL void *YYPARSE_PARAM; +# endif +#else /* !YYPARSE_PARAM */ +# define YYPARSE_PARAM_ARG +# define YYPARSE_PARAM_DECL +#endif /* !YYPARSE_PARAM */ + +/* Prevent warning if -Wstrict-prototypes. */ +#ifdef __GNUC__ +# ifdef YYPARSE_PARAM +int yyparse (void *); +# else +int yyparse (void); +# endif +#endif + +/* YY_DECL_VARIABLES -- depending whether we use a pure parser, + variables are global, or local to YYPARSE. */ + +#define YY_DECL_NON_LSP_VARIABLES \ +/* The lookahead symbol. */ \ +int yychar; \ + \ +/* The semantic value of the lookahead symbol. */ \ +YYSTYPE yylval; \ + \ +/* Number of parse errors so far. */ \ +int yynerrs; + +#if YYLSP_NEEDED +# define YY_DECL_VARIABLES \ +YY_DECL_NON_LSP_VARIABLES \ + \ +/* Location data for the lookahead symbol. */ \ +YYLTYPE yylloc; +#else +# define YY_DECL_VARIABLES \ +YY_DECL_NON_LSP_VARIABLES +#endif + + +/* If nonreentrant, generate the variables here. */ + +#if !YYPURE +YY_DECL_VARIABLES +#endif /* !YYPURE */ + +int +yyparse (YYPARSE_PARAM_ARG) + YYPARSE_PARAM_DECL +{ + /* If reentrant, generate the variables here. */ +#if YYPURE + YY_DECL_VARIABLES +#endif /* !YYPURE */ + + register int yystate; + register int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Lookahead token as an internal (translated) token number. */ + int yychar1 = 0; + + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + short yyssa[YYINITDEPTH]; + short *yyss = yyssa; + register short *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + register YYSTYPE *yyvsp; + +#if YYLSP_NEEDED + /* The location stack. */ + YYLTYPE yylsa[YYINITDEPTH]; + YYLTYPE *yyls = yylsa; + YYLTYPE *yylsp; +#endif + +#if YYLSP_NEEDED +# define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) +#else +# define YYPOPSTACK (yyvsp--, yyssp--) +#endif + + YYSIZE_T yystacksize = YYINITDEPTH; + + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; +#if YYLSP_NEEDED + YYLTYPE yyloc; +#endif + + /* When reducing, the number of symbols on the RHS of the reduced + rule. */ + int yylen; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss; + yyvsp = yyvs; +#if YYLSP_NEEDED + yylsp = yyls; +#endif + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. so pushing a state here evens the stacks. + */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyssp >= yyss + yystacksize - 1) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + short *yyss1 = yyss; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. */ +# if YYLSP_NEEDED + YYLTYPE *yyls1 = yyls; + /* This used to be a conditional around just the two extra args, + but that might be undefined if yyoverflow is a macro. */ + yyoverflow ("parser stack overflow", + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yyls1, yysize * sizeof (*yylsp), + &yystacksize); + yyls = yyls1; +# else + yyoverflow ("parser stack overflow", + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yystacksize); +# endif + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ + /* Extend the stack our own way. */ + if (yystacksize >= YYMAXDEPTH) + goto yyoverflowlab; + yystacksize *= 2; + if (yystacksize > YYMAXDEPTH) + yystacksize = YYMAXDEPTH; + + { + short *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyoverflowlab; + YYSTACK_RELOCATE (short, yyss); + YYSTACK_RELOCATE (YYSTYPE, yyvs); +# if YYLSP_NEEDED + YYSTACK_RELOCATE (YYLTYPE, yyls); +# endif +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; +#if YYLSP_NEEDED + yylsp = yyls + yysize - 1; +#endif + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyssp >= yyss + yystacksize - 1) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + goto yybackup; + + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + +/* Do appropriate processing given the current state. */ +/* Read a lookahead token if we need one and don't already have one. */ +/* yyresume: */ + + /* First try to decide what to do without reference to lookahead token. */ + + yyn = yypact[yystate]; + if (yyn == YYFLAG) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* yychar is either YYEMPTY or YYEOF + or a valid token in external form. */ + + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + /* Convert token to internal form (in yychar1) for indexing tables with */ + + if (yychar <= 0) /* This means end of input. */ + { + yychar1 = 0; + yychar = YYEOF; /* Don't call YYLEX any more */ + + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yychar1 = YYTRANSLATE (yychar); + +#if YYDEBUG + /* We have to keep this `#if YYDEBUG', since we use variables + which are defined only if `YYDEBUG' is set. */ + if (yydebug) + { + YYFPRINTF (stderr, "Next token is %d (%s", + yychar, yytname[yychar1]); + /* Give the individual parser a way to print the precise + meaning of a token, for further debugging info. */ +# ifdef YYPRINT + YYPRINT (stderr, yychar, yylval); +# endif + YYFPRINTF (stderr, ")\n"); + } +#endif + } + + yyn += yychar1; + if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1) + goto yydefault; + + yyn = yytable[yyn]; + + /* yyn is what to do for this token type in this state. + Negative => reduce, -yyn is rule number. + Positive => shift, yyn is new state. + New state is final state => don't bother to shift, + just return success. + 0, or most negative number => error. */ + + if (yyn < 0) + { + if (yyn == YYFLAG) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + else if (yyn == 0) + goto yyerrlab; + + if (yyn == YYFINAL) + YYACCEPT; + + /* Shift the lookahead token. */ + YYDPRINTF ((stderr, "Shifting token %d (%s), ", + yychar, yytname[yychar1])); + + /* Discard the token being shifted unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + *++yyvsp = yylval; +#if YYLSP_NEEDED + *++yylsp = yylloc; +#endif + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + yystate = yyn; + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to the semantic value of + the lookahead token. This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + +#if YYLSP_NEEDED + /* Similarly for the default location. Let the user run additional + commands if for instance locations are ranges. */ + yyloc = yylsp[1-yylen]; + YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen); +#endif + +#if YYDEBUG + /* We have to keep this `#if YYDEBUG', since we use variables which + are defined only if `YYDEBUG' is set. */ + if (yydebug) + { + int yyi; + + YYFPRINTF (stderr, "Reducing via rule %d (line %d), ", + yyn, yyrline[yyn]); + + /* Print the symbols being reduced, and their result. */ + for (yyi = yyprhs[yyn]; yyrhs[yyi] > 0; yyi++) + YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]); + YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]); + } +#endif + + switch (yyn) { + +case 3: +#line 69 "icalssyacc.y" +{ + yyclearin; + YYABORT; + } + break; +case 4: +#line 76 "icalssyacc.y" +{ssyacc_add_select(yyextra,yyvsp[0].v_string);} + break; +case 5: +#line 77 "icalssyacc.y" +{ssyacc_add_select(yyextra,yyvsp[0].v_string);} + break; +case 6: +#line 82 "icalssyacc.y" +{ssyacc_add_from(yyextra,yyvsp[0].v_string);} + break; +case 7: +#line 83 "icalssyacc.y" +{ssyacc_add_from(yyextra,yyvsp[0].v_string);} + break; +case 9: +#line 88 "icalssyacc.y" +{ssyacc_add_where(yyextra,yyvsp[-2].v_string,ICALGAUGECOMPARE_EQUAL,yyvsp[0].v_string); } + break; +case 10: +#line 89 "icalssyacc.y" +{ssyacc_add_where(yyextra,yyvsp[-2].v_string,ICALGAUGECOMPARE_ISNULL,""); } + break; +case 11: +#line 90 "icalssyacc.y" +{ssyacc_add_where(yyextra,yyvsp[-3].v_string,ICALGAUGECOMPARE_ISNOTNULL,""); } + break; +case 12: +#line 91 "icalssyacc.y" +{ssyacc_add_where(yyextra,yyvsp[-2].v_string,ICALGAUGECOMPARE_NOTEQUAL,yyvsp[0].v_string); } + break; +case 13: +#line 92 "icalssyacc.y" +{ssyacc_add_where(yyextra,yyvsp[-2].v_string,ICALGAUGECOMPARE_LESS,yyvsp[0].v_string); } + break; +case 14: +#line 93 "icalssyacc.y" +{ssyacc_add_where(yyextra,yyvsp[-2].v_string,ICALGAUGECOMPARE_GREATER,yyvsp[0].v_string); } + break; +case 15: +#line 94 "icalssyacc.y" +{ssyacc_add_where(yyextra,yyvsp[-2].v_string,ICALGAUGECOMPARE_LESSEQUAL,yyvsp[0].v_string); } + break; +case 16: +#line 95 "icalssyacc.y" +{ssyacc_add_where(yyextra,yyvsp[-2].v_string,ICALGAUGECOMPARE_GREATEREQUAL,yyvsp[0].v_string); } + break; +case 17: +#line 99 "icalssyacc.y" +{set_logic(yyextra,ICALGAUGELOGIC_NONE);} + break; +case 18: +#line 100 "icalssyacc.y" +{set_logic(yyextra,ICALGAUGELOGIC_AND);} + break; +case 19: +#line 101 "icalssyacc.y" +{set_logic(yyextra,ICALGAUGELOGIC_OR);} + break; +} + +#line 705 "/usr/local/share/bison/bison.simple" + + + yyvsp -= yylen; + yyssp -= yylen; +#if YYLSP_NEEDED + yylsp -= yylen; +#endif + +#if YYDEBUG + if (yydebug) + { + short *yyssp1 = yyss - 1; + YYFPRINTF (stderr, "state stack now"); + while (yyssp1 != yyssp) + YYFPRINTF (stderr, " %d", *++yyssp1); + YYFPRINTF (stderr, "\n"); + } +#endif + + *++yyvsp = yyval; +#if YYLSP_NEEDED + *++yylsp = yyloc; +#endif + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTBASE] + *yyssp; + if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTBASE]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; + +#ifdef YYERROR_VERBOSE + yyn = yypact[yystate]; + + if (yyn > YYFLAG && yyn < YYLAST) + { + YYSIZE_T yysize = 0; + char *yymsg; + int yyx, yycount; + + yycount = 0; + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + for (yyx = yyn < 0 ? -yyn : 0; + yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++) + if (yycheck[yyx + yyn] == yyx) + yysize += yystrlen (yytname[yyx]) + 15, yycount++; + yysize += yystrlen ("parse error, unexpected ") + 1; + yysize += yystrlen (yytname[YYTRANSLATE (yychar)]); + yymsg = (char *) YYSTACK_ALLOC (yysize); + if (yymsg != 0) + { + char *yyp = yystpcpy (yymsg, "parse error, unexpected "); + yyp = yystpcpy (yyp, yytname[YYTRANSLATE (yychar)]); + + if (yycount < 5) + { + yycount = 0; + for (yyx = yyn < 0 ? -yyn : 0; + yyx < (int) (sizeof (yytname) / sizeof (char *)); + yyx++) + if (yycheck[yyx + yyn] == yyx) + { + const char *yyq = ! yycount ? ", expecting " : " or "; + yyp = yystpcpy (yyp, yyq); + yyp = yystpcpy (yyp, yytname[yyx]); + yycount++; + } + } + yyerror (yymsg); + YYSTACK_FREE (yymsg); + } + else + yyerror ("parse error; also virtual memory exhausted"); + } + else +#endif /* defined (YYERROR_VERBOSE) */ + yyerror ("parse error"); + } + goto yyerrlab1; + + +/*--------------------------------------------------. +| yyerrlab1 -- error raised explicitly by an action | +`--------------------------------------------------*/ +yyerrlab1: + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead token after an + error, discard it. */ + + /* return failure if at end of input */ + if (yychar == YYEOF) + YYABORT; + YYDPRINTF ((stderr, "Discarding token %d (%s).\n", + yychar, yytname[yychar1])); + yychar = YYEMPTY; + } + + /* Else will try to reuse lookahead token after shifting the error + token. */ + + yyerrstatus = 3; /* Each real token shifted decrements this */ + + goto yyerrhandle; + + +/*-------------------------------------------------------------------. +| yyerrdefault -- current state does not do anything special for the | +| error token. | +`-------------------------------------------------------------------*/ +yyerrdefault: +#if 0 + /* This is wrong; only states that explicitly want error tokens + should shift them. */ + + /* If its default is to accept any token, ok. Otherwise pop it. */ + yyn = yydefact[yystate]; + if (yyn) + goto yydefault; +#endif + + +/*---------------------------------------------------------------. +| yyerrpop -- pop the current state because it cannot handle the | +| error token | +`---------------------------------------------------------------*/ +yyerrpop: + if (yyssp == yyss) + YYABORT; + yyvsp--; + yystate = *--yyssp; +#if YYLSP_NEEDED + yylsp--; +#endif + +#if YYDEBUG + if (yydebug) + { + short *yyssp1 = yyss - 1; + YYFPRINTF (stderr, "Error: state stack now"); + while (yyssp1 != yyssp) + YYFPRINTF (stderr, " %d", *++yyssp1); + YYFPRINTF (stderr, "\n"); + } +#endif + +/*--------------. +| yyerrhandle. | +`--------------*/ +yyerrhandle: + yyn = yypact[yystate]; + if (yyn == YYFLAG) + goto yyerrdefault; + + yyn += YYTERROR; + if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR) + goto yyerrdefault; + + yyn = yytable[yyn]; + if (yyn < 0) + { + if (yyn == YYFLAG) + goto yyerrpop; + yyn = -yyn; + goto yyreduce; + } + else if (yyn == 0) + goto yyerrpop; + + if (yyn == YYFINAL) + YYACCEPT; + + YYDPRINTF ((stderr, "Shifting error token, ")); + + *++yyvsp = yylval; +#if YYLSP_NEEDED + *++yylsp = yylloc; +#endif + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +/*---------------------------------------------. +| yyoverflowab -- parser overflow comes here. | +`---------------------------------------------*/ +yyoverflowlab: + yyerror ("parser stack overflow"); + yyresult = 2; + /* Fall through. */ + +yyreturn: +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif + return yyresult; +} +#line 105 "icalssyacc.y" + + +static void ssyacc_add_where(struct icalgauge_impl* impl, char* str1, + icalgaugecompare compare , char* value_str) +{ + + struct icalgauge_where *where; + char *compstr, *propstr, *c, *s,*l; + + if ( (where = malloc(sizeof(struct icalgauge_where))) ==0){ + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + return; + } + + memset(where,0,sizeof(struct icalgauge_where)); + where->logic = ICALGAUGELOGIC_NONE; + where->compare = ICALGAUGECOMPARE_NONE; + where->comp = ICAL_NO_COMPONENT; + where->prop = ICAL_NO_PROPERTY; + + /* remove enclosing quotes */ + s = value_str; + if(*s == '\''){ + s++; + } + l = s+strlen(s)-1; + if(*l == '\''){ + *l=0; + } + + where->value = strdup(s); + + /* Is there a period in str1 ? If so, the string specified both a + component and a property*/ + if( (c = strrchr(str1,'.')) != 0){ + compstr = str1; + propstr = c+1; + *c = '\0'; + } else { + compstr = 0; + propstr = str1; + } + + + /* Handle the case where a component was specified */ + if(compstr != 0){ + where->comp = icalenum_string_to_component_kind(compstr); + } else { + where->comp = ICAL_NO_COMPONENT; + } + + where->prop = icalenum_string_to_property_kind(propstr); + + where->compare = compare; + + if(where->value == 0){ + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + free(where->value); + return; + } + + pvl_push(impl->where,where); +} + +static void set_logic(struct icalgauge_impl* impl,icalgaugelogic l) +{ + pvl_elem e = pvl_tail(impl->where); + struct icalgauge_where *where = pvl_data(e); + + where->logic = l; + +} + + + +static void ssyacc_add_select(struct icalgauge_impl* impl, char* str1) +{ + char *c, *compstr, *propstr; + struct icalgauge_where *where; + + /* Uses only the prop and comp fields of the where structure */ + if ( (where = malloc(sizeof(struct icalgauge_where))) ==0){ + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + return; + } + + memset(where,0,sizeof(struct icalgauge_where)); + where->logic = ICALGAUGELOGIC_NONE; + where->compare = ICALGAUGECOMPARE_NONE; + where->comp = ICAL_NO_COMPONENT; + where->prop = ICAL_NO_PROPERTY; + + /* Is there a period in str1 ? If so, the string specified both a + component and a property*/ + if( (c = strrchr(str1,'.')) != 0){ + compstr = str1; + propstr = c+1; + *c = '\0'; + } else { + compstr = 0; + propstr = str1; + } + + + /* Handle the case where a component was specified */ + if(compstr != 0){ + where->comp = icalenum_string_to_component_kind(compstr); + } else { + where->comp = ICAL_NO_COMPONENT; + } + + + /* If the property was '*', then accept all properties */ + if(strcmp("*",propstr) == 0) { + where->prop = ICAL_ANY_PROPERTY; + } else { + where->prop = icalenum_string_to_property_kind(propstr); + } + + + if(where->prop == ICAL_NO_PROPERTY){ + free(where); + icalerror_set_errno(ICAL_BADARG_ERROR); + return; + } + + pvl_push(impl->select,where); +} + +static void ssyacc_add_from(struct icalgauge_impl* impl, char* str1) +{ + icalcomponent_kind ckind; + + ckind = icalenum_string_to_component_kind(str1); + + if(ckind == ICAL_NO_COMPONENT){ + assert(0); + } + + pvl_push(impl->from,(void*)ckind); + +} + + +void sserror(char *s){ + fprintf(stderr,"Parse error \'%s\'\n", s); + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); +} diff --git a/mozilla/calendar/libical/src/libicalss/icalssyacc.h b/mozilla/calendar/libical/src/libicalss/icalssyacc.h new file mode 100644 index 00000000000..6d03a0f5aec --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/icalssyacc.h @@ -0,0 +1,31 @@ +#ifndef BISON_Y_TAB_H +# define BISON_Y_TAB_H + +#ifndef YYSTYPE +typedef union { + char* v_string; +} yystype; +# define YYSTYPE yystype +#endif +# define STRING 257 +# define SELECT 258 +# define FROM 259 +# define WHERE 260 +# define COMMA 261 +# define QUOTE 262 +# define EQUALS 263 +# define NOTEQUALS 264 +# define LESS 265 +# define GREATER 266 +# define LESSEQUALS 267 +# define GREATEREQUALS 268 +# define AND 269 +# define OR 270 +# define EOL 271 +# define END 272 +# define IS 273 +# define NOT 274 +# define SQLNULL 275 + + +#endif /* not BISON_Y_TAB_H */ diff --git a/mozilla/calendar/libical/src/libicalss/icalssyacc.y b/mozilla/calendar/libical/src/libicalss/icalssyacc.y new file mode 100644 index 00000000000..4c589f2396a --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/icalssyacc.y @@ -0,0 +1,252 @@ +%pure_parser + +%{ +/* -*- Mode: C -*- + ====================================================================== + FILE: icalssyacc.y + CREATOR: eric 08 Aug 2000 + + DESCRIPTION: + + $Id: icalssyacc.y,v 1.7 2002/07/21 17:18:15 lindner Exp $ + $Locker: $ + +(C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The Original Code is eric. The Initial Developer of the Original + Code is Eric Busboom + + ======================================================================*/ +/*#define YYDEBUG 1*/ +#include +#include /* for strdup() */ +#include /* for SHRT_MAX*/ +#include "ical.h" +#include "icalgauge.h" +#include "icalgaugeimpl.h" + + +#define YYPARSE_PARAM yy_globals +#define YYLEX_PARAM yy_globals +#define YY_EXTRA_TYPE icalgauge_impl* + /* ick...*/ +#define yyextra ((struct icalgauge_impl*)ssget_extra(yy_globals)) + + +static void ssyacc_add_where(struct icalgauge_impl* impl, char* prop, + icalgaugecompare compare , char* value); +static void ssyacc_add_select(struct icalgauge_impl* impl, char* str1); +static void ssyacc_add_from(struct icalgauge_impl* impl, char* str1); +static void set_logic(struct icalgauge_impl* impl,icalgaugelogic l); +void sserror(char *s); /* Don't know why I need this.... */ + +%} + +%union { + char* v_string; +} + + +%token STRING +%token SELECT FROM WHERE COMMA QUOTE EQUALS NOTEQUALS LESS GREATER LESSEQUALS +%token GREATEREQUALS AND OR EOL END IS NOT SQLNULL + +%% + +query_min: SELECT select_list FROM from_list WHERE where_list + | SELECT select_list FROM from_list + | error { + yyclearin; + YYABORT; + } + ; + +select_list: + STRING {ssyacc_add_select(yyextra,$1);} + | select_list COMMA STRING {ssyacc_add_select(yyextra,$3);} + ; + + +from_list: + STRING {ssyacc_add_from(yyextra,$1);} + | from_list COMMA STRING {ssyacc_add_from(yyextra,$3);} + ; + +where_clause: + /* Empty */ + | STRING EQUALS STRING {ssyacc_add_where(yyextra,$1,ICALGAUGECOMPARE_EQUAL,$3); } + | STRING IS SQLNULL {ssyacc_add_where(yyextra,$1,ICALGAUGECOMPARE_ISNULL,""); } + | STRING IS NOT SQLNULL {ssyacc_add_where(yyextra,$1,ICALGAUGECOMPARE_ISNOTNULL,""); } + | STRING NOTEQUALS STRING {ssyacc_add_where(yyextra,$1,ICALGAUGECOMPARE_NOTEQUAL,$3); } + | STRING LESS STRING {ssyacc_add_where(yyextra,$1,ICALGAUGECOMPARE_LESS,$3); } + | STRING GREATER STRING {ssyacc_add_where(yyextra,$1,ICALGAUGECOMPARE_GREATER,$3); } + | STRING LESSEQUALS STRING {ssyacc_add_where(yyextra,$1,ICALGAUGECOMPARE_LESSEQUAL,$3); } + | STRING GREATEREQUALS STRING {ssyacc_add_where(yyextra,$1,ICALGAUGECOMPARE_GREATEREQUAL,$3); } + ; + +where_list: + where_clause {set_logic(yyextra,ICALGAUGELOGIC_NONE);} + | where_list AND where_clause {set_logic(yyextra,ICALGAUGELOGIC_AND);} + | where_list OR where_clause {set_logic(yyextra,ICALGAUGELOGIC_OR);} + ; + + +%% + +static void ssyacc_add_where(struct icalgauge_impl* impl, char* str1, + icalgaugecompare compare , char* value_str) +{ + + struct icalgauge_where *where; + char *compstr, *propstr, *c, *s,*l; + + if ( (where = malloc(sizeof(struct icalgauge_where))) ==0){ + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + return; + } + + memset(where,0,sizeof(struct icalgauge_where)); + where->logic = ICALGAUGELOGIC_NONE; + where->compare = ICALGAUGECOMPARE_NONE; + where->comp = ICAL_NO_COMPONENT; + where->prop = ICAL_NO_PROPERTY; + + /* remove enclosing quotes */ + s = value_str; + if(*s == '\''){ + s++; + } + l = s+strlen(s)-1; + if(*l == '\''){ + *l=0; + } + + where->value = strdup(s); + + /* Is there a period in str1 ? If so, the string specified both a + component and a property*/ + if( (c = strrchr(str1,'.')) != 0){ + compstr = str1; + propstr = c+1; + *c = '\0'; + } else { + compstr = 0; + propstr = str1; + } + + + /* Handle the case where a component was specified */ + if(compstr != 0){ + where->comp = icalenum_string_to_component_kind(compstr); + } else { + where->comp = ICAL_NO_COMPONENT; + } + + where->prop = icalenum_string_to_property_kind(propstr); + + where->compare = compare; + + if(where->value == 0){ + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + free(where->value); + return; + } + + pvl_push(impl->where,where); +} + +static void set_logic(struct icalgauge_impl* impl,icalgaugelogic l) +{ + pvl_elem e = pvl_tail(impl->where); + struct icalgauge_where *where = pvl_data(e); + + where->logic = l; + +} + + + +static void ssyacc_add_select(struct icalgauge_impl* impl, char* str1) +{ + char *c, *compstr, *propstr; + struct icalgauge_where *where; + + /* Uses only the prop and comp fields of the where structure */ + if ( (where = malloc(sizeof(struct icalgauge_where))) ==0){ + icalerror_set_errno(ICAL_NEWFAILED_ERROR); + return; + } + + memset(where,0,sizeof(struct icalgauge_where)); + where->logic = ICALGAUGELOGIC_NONE; + where->compare = ICALGAUGECOMPARE_NONE; + where->comp = ICAL_NO_COMPONENT; + where->prop = ICAL_NO_PROPERTY; + + /* Is there a period in str1 ? If so, the string specified both a + component and a property*/ + if( (c = strrchr(str1,'.')) != 0){ + compstr = str1; + propstr = c+1; + *c = '\0'; + } else { + compstr = 0; + propstr = str1; + } + + + /* Handle the case where a component was specified */ + if(compstr != 0){ + where->comp = icalenum_string_to_component_kind(compstr); + } else { + where->comp = ICAL_NO_COMPONENT; + } + + + /* If the property was '*', then accept all properties */ + if(strcmp("*",propstr) == 0) { + where->prop = ICAL_ANY_PROPERTY; + } else { + where->prop = icalenum_string_to_property_kind(propstr); + } + + + if(where->prop == ICAL_NO_PROPERTY){ + free(where); + icalerror_set_errno(ICAL_BADARG_ERROR); + return; + } + + pvl_push(impl->select,where); +} + +static void ssyacc_add_from(struct icalgauge_impl* impl, char* str1) +{ + icalcomponent_kind ckind; + + ckind = icalenum_string_to_component_kind(str1); + + if(ckind == ICAL_NO_COMPONENT){ + assert(0); + } + + pvl_push(impl->from,(void*)ckind); + +} + + +void sserror(char *s){ + fprintf(stderr,"Parse error \'%s\'\n", s); + icalerror_set_errno(ICAL_MALFORMEDDATA_ERROR); +} diff --git a/mozilla/calendar/libical/src/libicalss/libicalss.dsp b/mozilla/calendar/libical/src/libicalss/libicalss.dsp new file mode 100644 index 00000000000..356aad3a8d6 --- /dev/null +++ b/mozilla/calendar/libical/src/libicalss/libicalss.dsp @@ -0,0 +1,212 @@ +# Microsoft Developer Studio Project File - Name="libicalss" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Static Library" 0x0104 + +CFG=libicalss - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "libicalss.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "libicalss.mak" CFG="libicalss - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "libicalss - Win32 Release" (based on "Win32 (x86) Static Library") +!MESSAGE "libicalss - Win32 Debug" (based on "Win32 (x86) Static Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "libicalss - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I "../libical" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "YY_NO_UNISTD_H" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + +!ELSEIF "$(CFG)" == "libicalss - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "libicalss___Win32_Debug" +# PROP BASE Intermediate_Dir "libicalss___Win32_Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\libical" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "YY_NO_UNISTD_H" /YX /FD /GZ /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + +!ENDIF + +# Begin Target + +# Name "libicalss - Win32 Release" +# Name "libicalss - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\icalcalendar.c +# End Source File +# Begin Source File + +SOURCE=.\icalclassify.c +# End Source File +# Begin Source File + +SOURCE=.\icalcluster.c +# End Source File +# Begin Source File + +SOURCE=.\icaldirset.c +# End Source File +# Begin Source File + +SOURCE=.\icalfileset.c +# End Source File +# Begin Source File + +SOURCE=.\icalgauge.c +# End Source File +# Begin Source File + +SOURCE=.\icalmessage.c +# End Source File +# Begin Source File + +SOURCE=.\icalset.c +# End Source File +# Begin Source File + +SOURCE=.\icalspanlist.c +# End Source File +# Begin Source File + +SOURCE=.\icalsslexer.c +# End Source File +# Begin Source File + +SOURCE=.\icalssyacc.c +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\icalbdbset.h +# End Source File +# Begin Source File + +SOURCE=.\icalbdbsetimpl.h +# End Source File +# Begin Source File + +SOURCE=.\icalcalendar.h +# End Source File +# Begin Source File + +SOURCE=.\icalcaputil.h +# End Source File +# Begin Source File + +SOURCE=.\icalclassify.h +# End Source File +# Begin Source File + +SOURCE=.\icalcluster.h +# End Source File +# Begin Source File + +SOURCE=.\icalclusterimpl.h +# End Source File +# Begin Source File + +SOURCE=.\icalcsdb.h +# End Source File +# Begin Source File + +SOURCE=.\icaldirset.h +# End Source File +# Begin Source File + +SOURCE=.\icaldirsetimpl.h +# End Source File +# Begin Source File + +SOURCE=.\icalfileset.h +# End Source File +# Begin Source File + +SOURCE=.\icalfilesetimpl.h +# End Source File +# Begin Source File + +SOURCE=.\icalgauge.h +# End Source File +# Begin Source File + +SOURCE=.\icalgaugeimpl.h +# End Source File +# Begin Source File + +SOURCE=.\icalmessage.h +# End Source File +# Begin Source File + +SOURCE=.\icalset.h +# End Source File +# Begin Source File + +SOURCE=.\icalspanlist.h +# End Source File +# Begin Source File + +SOURCE=.\icalss.h +# End Source File +# Begin Source File + +SOURCE=.\icalssyacc.h +# End Source File +# End Group +# End Target +# End Project diff --git a/mozilla/calendar/libical/src/test/2445.ics b/mozilla/calendar/libical/src/test/2445.ics new file mode 100644 index 00000000000..71cf45e7504 --- /dev/null +++ b/mozilla/calendar/libical/src/test/2445.ics @@ -0,0 +1,326 @@ +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTAMP:19970901T1300Z +DTSTART:19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +END:VEVENT +END:VCALENDAR + +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123402@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970401T163000Z +DTEND:19970402T010000Z +SUMMARY:Laurel is in sensitivity awareness class. +CLASS:PUBLIC +CATEGORIES:BUSINESS,HUMAN RESOURCES +TRANSP:TRANSPARENT +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123403@host.com +DTSTAMP:19970901T1300Z +DTSTART:19971102 +SUMMARY:Our Blissful Anniversary +CLASS:CONFIDENTIAL +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +RRULE:FREQ=YEARLY +END:VEVENT + +BEGIN:VTODO +UID:19970901T130000Z-123404@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970415T133000Z +DUE:19970416T045959Z +SUMMARY:1996 Income Tax Preparation +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +STATUS:NEEDS-ACTION +END:VTODO +BEGIN:VJOURNAL +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T1300Z +DTSTART;VALUE=DATE:19970317 +SUMMARY:Staff meeting minutes +DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa + and Bob. Aurora project plans were reviewed. There is currently + no budget reserves for this project. Lisa will escalate to + management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative called + to discuss new printer. Promised to get us a demo by Friday.\n + 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. + Is looking into a loaner car. 654-2323 (tel). +END:VJOURNAL +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +DTSTAMP:19970901T083000Z +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTAMP:19970901T100000Z +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M +URL:http://host2.com/pub/busy/jpublic-01.ifb +COMMENT:This iCalendar file contains busy time information for + the next three months. +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTAMP:19970901T130000Z +DTSTART:19971026T020000 +RDATE:19971026T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19971026T020000 +RDATE:19970406T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +BEGIN:DAYLIGHT +DTSTART:19990424T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +REPEAT:4 +DURATION:PT15M +ACTION:AUDIO +ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +REPEAT:2 +DURATION:PT15M +ACTION:DISPLAY +DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. +END:VALARM +BEGIN:VALARM +TRIGGER:-P2D +ACTION:EMAIL +ATTENDEE:MAILTO:john_doe@host.com +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. +ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen + da.doc +END:VALARM +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +REPEAT:23 +DURATION:PT1H +ACTION:PROCEDURE +ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- + procs/felizano.exe +END:VALARM +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + MAILTO:employee-A@host.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTART;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T1200Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ + conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER:19980403T120000 +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- + files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR + +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ, Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR diff --git a/mozilla/calendar/libical/src/test/2446.ics b/mozilla/calendar/libical/src/test/2446.ics new file mode 100644 index 00000000000..e69de29bb2d diff --git a/mozilla/calendar/libical/src/test/Makefile.am b/mozilla/calendar/libical/src/test/Makefile.am new file mode 100644 index 00000000000..6a0e7ab1e7c --- /dev/null +++ b/mozilla/calendar/libical/src/test/Makefile.am @@ -0,0 +1,54 @@ +if WITH_CXX +cxx_inc=-DWITH_CXX +cxx_libs=../libical/.libs/libical_cxx.a +regression_cxx = regression-cxx.cpp +else +cxx_inc= +cxx_libs= +regression_cxx = +CXX=@CC@ +endif + +if WITH_BDB4 +bdb4_inc=-DWITH_BDB -I@BDB_DIR@/include +bdb4_libs=@BDB_DIR_LIB@/@BDB_LIB@ +else +bdb4_inc= +bdb4_libs= +endif + +noinst_PROGRAMS = copycluster regression parser stow recur testmime testvcal process + +LDADD = ../libicalss/.libs/libicalss.a ../libicalvcal/.libs/libicalvcal.a $(cxx_libs) ../libical/.libs/libical.a $(bdb4_libs) + +LIBS = @PTHREAD_LIBS@ + +INCLUDES = \ + -I. \ + -I../libicalvcal \ + -I$(srcdir)/../libicalvcal \ + -I$(srcdir) \ + -I../libical \ + -I$(srcdir)/../libical \ + -I../libicalss \ + -I$(srcdir)/../libicalss \ + $(cxx_inc) $(bdb4_inc) + +TESTS=regression +copycluster_SOURCES = copycluster.c +regression_SOURCES = \ + regression.c \ + regression.h \ + regression-component.c \ + regression-classify.c \ + regression-utils.c \ + regression-recur.c \ + regression-storage.c \ + $(regression_cxx) + +parser_SOURCES = icaltestparser.c +stow_SOURCES = stow.c +testvcal_SOURCES = testvcal.c +recur_SOURCES = recur.c +testmime_SOURCES = testmime.c +process_SOURCES = process.c diff --git a/mozilla/calendar/libical/src/test/Makefile.in b/mozilla/calendar/libical/src/test/Makefile.in new file mode 100644 index 00000000000..a69ae65846e --- /dev/null +++ b/mozilla/calendar/libical/src/test/Makefile.in @@ -0,0 +1,695 @@ +# Makefile.in generated automatically by automake 1.5 from Makefile.am. + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = ../.. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_HEADER = $(INSTALL_DATA) +transform = @program_transform_name@ +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_alias = @build_alias@ +build_triplet = @build@ +host_alias = @host_alias@ +host_triplet = @host@ +target_alias = @target_alias@ +target_triplet = @target@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AWK = @AWK@ +BDB_DIR = @BDB_DIR@ +BDB_DIR_INCLUDE = @BDB_DIR_INCLUDE@ +BDB_DIR_LIB = @BDB_DIR_LIB@ +BDB_LIB = @BDB_LIB@ +BDB_VERSION = @BDB_VERSION@ +CC = @CC@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +EXEEXT = @EXEEXT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +JAR = @JAR@ +JAVA = @JAVA@ +JAVAC = @JAVAC@ +JAVAH = @JAVAH@ +JAVA_PLATFORM = @JAVA_PLATFORM@ +LEX = @LEX@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +MAINT = @MAINT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PTHREAD_LIBS = @PTHREAD_LIBS@ +PY_CFLAGS = @PY_CFLAGS@ +PY_EXTRA_LIBS = @PY_EXTRA_LIBS@ +PY_LIBS = @PY_LIBS@ +PY_LIB_LOC = @PY_LIB_LOC@ +RANLIB = @RANLIB@ +RRCAP_CFLAGS = @RRCAP_CFLAGS@ +RRCAP_LIBS = @RRCAP_LIBS@ +VERSION = @VERSION@ +YACC = @YACC@ +am__include = @am__include@ +am__quote = @am__quote@ +install_sh = @install_sh@ +python_val = @python_val@ +CXX = @CXX@ +@WITH_CXX_FALSE@CXX = @CC@ + +@WITH_CXX_TRUE@cxx_inc = -DWITH_CXX +@WITH_CXX_FALSE@cxx_inc = +@WITH_CXX_TRUE@cxx_libs = ../libical/.libs/libical_cxx.a +@WITH_CXX_FALSE@cxx_libs = +@WITH_CXX_TRUE@regression_cxx = regression-cxx.cpp +@WITH_CXX_FALSE@regression_cxx = + +@WITH_BDB4_TRUE@bdb4_inc = -DWITH_BDB -I@BDB_DIR@/include +@WITH_BDB4_FALSE@bdb4_inc = +@WITH_BDB4_TRUE@bdb4_libs = @BDB_DIR_LIB@/@BDB_LIB@ +@WITH_BDB4_FALSE@bdb4_libs = + +noinst_PROGRAMS = copycluster regression parser stow recur testmime testvcal process + +LDADD = ../libicalss/.libs/libicalss.a ../libicalvcal/.libs/libicalvcal.a $(cxx_libs) ../libical/.libs/libical.a $(bdb4_libs) + +LIBS = @PTHREAD_LIBS@ + +INCLUDES = \ + -I. \ + -I../libicalvcal \ + -I$(srcdir)/../libicalvcal \ + -I$(srcdir) \ + -I../libical \ + -I$(srcdir)/../libical \ + -I../libicalss \ + -I$(srcdir)/../libicalss \ + $(cxx_inc) $(bdb4_inc) + + +TESTS = regression +copycluster_SOURCES = copycluster.c +regression_SOURCES = \ + regression.c \ + regression.h \ + regression-component.c \ + regression-classify.c \ + regression-utils.c \ + regression-recur.c \ + regression-storage.c \ + $(regression_cxx) + + +parser_SOURCES = icaltestparser.c +stow_SOURCES = stow.c +testvcal_SOURCES = testvcal.c +recur_SOURCES = recur.c +testmime_SOURCES = testmime.c +process_SOURCES = process.c +subdir = src/test +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +noinst_PROGRAMS = copycluster$(EXEEXT) regression$(EXEEXT) \ + parser$(EXEEXT) stow$(EXEEXT) recur$(EXEEXT) testmime$(EXEEXT) \ + testvcal$(EXEEXT) process$(EXEEXT) +PROGRAMS = $(noinst_PROGRAMS) + +am_copycluster_OBJECTS = copycluster.$(OBJEXT) +copycluster_OBJECTS = $(am_copycluster_OBJECTS) +copycluster_LDADD = $(LDADD) +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@copycluster_DEPENDENCIES = \ +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ ../libicalss/.libs/libicalss.a \ +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ ../libicalvcal/.libs/libicalvcal.a \ +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ ../libical/.libs/libical_cxx.a \ +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ ../libical/.libs/libical.a +@WITH_BDB4_FALSE@@WITH_CXX_FALSE@copycluster_DEPENDENCIES = \ +@WITH_BDB4_FALSE@@WITH_CXX_FALSE@ ../libicalss/.libs/libicalss.a \ +@WITH_BDB4_FALSE@@WITH_CXX_FALSE@ ../libicalvcal/.libs/libicalvcal.a \ +@WITH_BDB4_FALSE@@WITH_CXX_FALSE@ ../libical/.libs/libical.a +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@copycluster_DEPENDENCIES = \ +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ ../libicalss/.libs/libicalss.a \ +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ ../libicalvcal/.libs/libicalvcal.a \ +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ ../libical/.libs/libical_cxx.a \ +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ ../libical/.libs/libical.a +@WITH_BDB4_TRUE@@WITH_CXX_FALSE@copycluster_DEPENDENCIES = \ +@WITH_BDB4_TRUE@@WITH_CXX_FALSE@ ../libicalss/.libs/libicalss.a \ +@WITH_BDB4_TRUE@@WITH_CXX_FALSE@ ../libicalvcal/.libs/libicalvcal.a \ +@WITH_BDB4_TRUE@@WITH_CXX_FALSE@ ../libical/.libs/libical.a +copycluster_LDFLAGS = +am_parser_OBJECTS = icaltestparser.$(OBJEXT) +parser_OBJECTS = $(am_parser_OBJECTS) +parser_LDADD = $(LDADD) +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@parser_DEPENDENCIES = \ +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ ../libicalss/.libs/libicalss.a \ +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ ../libicalvcal/.libs/libicalvcal.a \ +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ ../libical/.libs/libical_cxx.a \ +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ ../libical/.libs/libical.a +@WITH_BDB4_FALSE@@WITH_CXX_FALSE@parser_DEPENDENCIES = \ +@WITH_BDB4_FALSE@@WITH_CXX_FALSE@ ../libicalss/.libs/libicalss.a \ +@WITH_BDB4_FALSE@@WITH_CXX_FALSE@ ../libicalvcal/.libs/libicalvcal.a \ +@WITH_BDB4_FALSE@@WITH_CXX_FALSE@ ../libical/.libs/libical.a +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@parser_DEPENDENCIES = \ +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ ../libicalss/.libs/libicalss.a \ +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ ../libicalvcal/.libs/libicalvcal.a \ +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ ../libical/.libs/libical_cxx.a \ +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ ../libical/.libs/libical.a +@WITH_BDB4_TRUE@@WITH_CXX_FALSE@parser_DEPENDENCIES = \ +@WITH_BDB4_TRUE@@WITH_CXX_FALSE@ ../libicalss/.libs/libicalss.a \ +@WITH_BDB4_TRUE@@WITH_CXX_FALSE@ ../libicalvcal/.libs/libicalvcal.a \ +@WITH_BDB4_TRUE@@WITH_CXX_FALSE@ ../libical/.libs/libical.a +parser_LDFLAGS = +am_process_OBJECTS = process.$(OBJEXT) +process_OBJECTS = $(am_process_OBJECTS) +process_LDADD = $(LDADD) +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@process_DEPENDENCIES = \ +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ ../libicalss/.libs/libicalss.a \ +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ ../libicalvcal/.libs/libicalvcal.a \ +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ ../libical/.libs/libical_cxx.a \ +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ ../libical/.libs/libical.a +@WITH_BDB4_FALSE@@WITH_CXX_FALSE@process_DEPENDENCIES = \ +@WITH_BDB4_FALSE@@WITH_CXX_FALSE@ ../libicalss/.libs/libicalss.a \ +@WITH_BDB4_FALSE@@WITH_CXX_FALSE@ ../libicalvcal/.libs/libicalvcal.a \ +@WITH_BDB4_FALSE@@WITH_CXX_FALSE@ ../libical/.libs/libical.a +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@process_DEPENDENCIES = \ +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ ../libicalss/.libs/libicalss.a \ +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ ../libicalvcal/.libs/libicalvcal.a \ +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ ../libical/.libs/libical_cxx.a \ +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ ../libical/.libs/libical.a +@WITH_BDB4_TRUE@@WITH_CXX_FALSE@process_DEPENDENCIES = \ +@WITH_BDB4_TRUE@@WITH_CXX_FALSE@ ../libicalss/.libs/libicalss.a \ +@WITH_BDB4_TRUE@@WITH_CXX_FALSE@ ../libicalvcal/.libs/libicalvcal.a \ +@WITH_BDB4_TRUE@@WITH_CXX_FALSE@ ../libical/.libs/libical.a +process_LDFLAGS = +am_recur_OBJECTS = recur.$(OBJEXT) +recur_OBJECTS = $(am_recur_OBJECTS) +recur_LDADD = $(LDADD) +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@recur_DEPENDENCIES = \ +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ ../libicalss/.libs/libicalss.a \ +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ ../libicalvcal/.libs/libicalvcal.a \ +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ ../libical/.libs/libical_cxx.a \ +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ ../libical/.libs/libical.a +@WITH_BDB4_FALSE@@WITH_CXX_FALSE@recur_DEPENDENCIES = \ +@WITH_BDB4_FALSE@@WITH_CXX_FALSE@ ../libicalss/.libs/libicalss.a \ +@WITH_BDB4_FALSE@@WITH_CXX_FALSE@ ../libicalvcal/.libs/libicalvcal.a \ +@WITH_BDB4_FALSE@@WITH_CXX_FALSE@ ../libical/.libs/libical.a +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@recur_DEPENDENCIES = \ +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ ../libicalss/.libs/libicalss.a \ +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ ../libicalvcal/.libs/libicalvcal.a \ +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ ../libical/.libs/libical_cxx.a \ +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ ../libical/.libs/libical.a +@WITH_BDB4_TRUE@@WITH_CXX_FALSE@recur_DEPENDENCIES = \ +@WITH_BDB4_TRUE@@WITH_CXX_FALSE@ ../libicalss/.libs/libicalss.a \ +@WITH_BDB4_TRUE@@WITH_CXX_FALSE@ ../libicalvcal/.libs/libicalvcal.a \ +@WITH_BDB4_TRUE@@WITH_CXX_FALSE@ ../libical/.libs/libical.a +recur_LDFLAGS = +@WITH_CXX_TRUE@am_regression_OBJECTS = regression.$(OBJEXT) \ +@WITH_CXX_TRUE@ regression-component.$(OBJEXT) \ +@WITH_CXX_TRUE@ regression-classify.$(OBJEXT) \ +@WITH_CXX_TRUE@ regression-utils.$(OBJEXT) \ +@WITH_CXX_TRUE@ regression-recur.$(OBJEXT) \ +@WITH_CXX_TRUE@ regression-storage.$(OBJEXT) \ +@WITH_CXX_TRUE@ regression-cxx.$(OBJEXT) +@WITH_CXX_FALSE@am_regression_OBJECTS = regression.$(OBJEXT) \ +@WITH_CXX_FALSE@ regression-component.$(OBJEXT) \ +@WITH_CXX_FALSE@ regression-classify.$(OBJEXT) \ +@WITH_CXX_FALSE@ regression-utils.$(OBJEXT) \ +@WITH_CXX_FALSE@ regression-recur.$(OBJEXT) \ +@WITH_CXX_FALSE@ regression-storage.$(OBJEXT) +regression_OBJECTS = $(am_regression_OBJECTS) +regression_LDADD = $(LDADD) +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@regression_DEPENDENCIES = \ +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ ../libicalss/.libs/libicalss.a \ +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ ../libicalvcal/.libs/libicalvcal.a \ +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ ../libical/.libs/libical_cxx.a \ +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ ../libical/.libs/libical.a +@WITH_BDB4_FALSE@@WITH_CXX_FALSE@regression_DEPENDENCIES = \ +@WITH_BDB4_FALSE@@WITH_CXX_FALSE@ ../libicalss/.libs/libicalss.a \ +@WITH_BDB4_FALSE@@WITH_CXX_FALSE@ ../libicalvcal/.libs/libicalvcal.a \ +@WITH_BDB4_FALSE@@WITH_CXX_FALSE@ ../libical/.libs/libical.a +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@regression_DEPENDENCIES = \ +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ ../libicalss/.libs/libicalss.a \ +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ ../libicalvcal/.libs/libicalvcal.a \ +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ ../libical/.libs/libical_cxx.a \ +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ ../libical/.libs/libical.a +@WITH_BDB4_TRUE@@WITH_CXX_FALSE@regression_DEPENDENCIES = \ +@WITH_BDB4_TRUE@@WITH_CXX_FALSE@ ../libicalss/.libs/libicalss.a \ +@WITH_BDB4_TRUE@@WITH_CXX_FALSE@ ../libicalvcal/.libs/libicalvcal.a \ +@WITH_BDB4_TRUE@@WITH_CXX_FALSE@ ../libical/.libs/libical.a +regression_LDFLAGS = +am_stow_OBJECTS = stow.$(OBJEXT) +stow_OBJECTS = $(am_stow_OBJECTS) +stow_LDADD = $(LDADD) +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@stow_DEPENDENCIES = \ +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ ../libicalss/.libs/libicalss.a \ +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ ../libicalvcal/.libs/libicalvcal.a \ +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ ../libical/.libs/libical_cxx.a \ +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ ../libical/.libs/libical.a +@WITH_BDB4_FALSE@@WITH_CXX_FALSE@stow_DEPENDENCIES = \ +@WITH_BDB4_FALSE@@WITH_CXX_FALSE@ ../libicalss/.libs/libicalss.a \ +@WITH_BDB4_FALSE@@WITH_CXX_FALSE@ ../libicalvcal/.libs/libicalvcal.a \ +@WITH_BDB4_FALSE@@WITH_CXX_FALSE@ ../libical/.libs/libical.a +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@stow_DEPENDENCIES = \ +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ ../libicalss/.libs/libicalss.a \ +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ ../libicalvcal/.libs/libicalvcal.a \ +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ ../libical/.libs/libical_cxx.a \ +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ ../libical/.libs/libical.a +@WITH_BDB4_TRUE@@WITH_CXX_FALSE@stow_DEPENDENCIES = \ +@WITH_BDB4_TRUE@@WITH_CXX_FALSE@ ../libicalss/.libs/libicalss.a \ +@WITH_BDB4_TRUE@@WITH_CXX_FALSE@ ../libicalvcal/.libs/libicalvcal.a \ +@WITH_BDB4_TRUE@@WITH_CXX_FALSE@ ../libical/.libs/libical.a +stow_LDFLAGS = +am_testmime_OBJECTS = testmime.$(OBJEXT) +testmime_OBJECTS = $(am_testmime_OBJECTS) +testmime_LDADD = $(LDADD) +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@testmime_DEPENDENCIES = \ +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ ../libicalss/.libs/libicalss.a \ +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ ../libicalvcal/.libs/libicalvcal.a \ +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ ../libical/.libs/libical_cxx.a \ +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ ../libical/.libs/libical.a +@WITH_BDB4_FALSE@@WITH_CXX_FALSE@testmime_DEPENDENCIES = \ +@WITH_BDB4_FALSE@@WITH_CXX_FALSE@ ../libicalss/.libs/libicalss.a \ +@WITH_BDB4_FALSE@@WITH_CXX_FALSE@ ../libicalvcal/.libs/libicalvcal.a \ +@WITH_BDB4_FALSE@@WITH_CXX_FALSE@ ../libical/.libs/libical.a +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@testmime_DEPENDENCIES = \ +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ ../libicalss/.libs/libicalss.a \ +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ ../libicalvcal/.libs/libicalvcal.a \ +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ ../libical/.libs/libical_cxx.a \ +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ ../libical/.libs/libical.a +@WITH_BDB4_TRUE@@WITH_CXX_FALSE@testmime_DEPENDENCIES = \ +@WITH_BDB4_TRUE@@WITH_CXX_FALSE@ ../libicalss/.libs/libicalss.a \ +@WITH_BDB4_TRUE@@WITH_CXX_FALSE@ ../libicalvcal/.libs/libicalvcal.a \ +@WITH_BDB4_TRUE@@WITH_CXX_FALSE@ ../libical/.libs/libical.a +testmime_LDFLAGS = +am_testvcal_OBJECTS = testvcal.$(OBJEXT) +testvcal_OBJECTS = $(am_testvcal_OBJECTS) +testvcal_LDADD = $(LDADD) +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@testvcal_DEPENDENCIES = \ +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ ../libicalss/.libs/libicalss.a \ +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ ../libicalvcal/.libs/libicalvcal.a \ +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ ../libical/.libs/libical_cxx.a \ +@WITH_BDB4_FALSE@@WITH_CXX_TRUE@ ../libical/.libs/libical.a +@WITH_BDB4_FALSE@@WITH_CXX_FALSE@testvcal_DEPENDENCIES = \ +@WITH_BDB4_FALSE@@WITH_CXX_FALSE@ ../libicalss/.libs/libicalss.a \ +@WITH_BDB4_FALSE@@WITH_CXX_FALSE@ ../libicalvcal/.libs/libicalvcal.a \ +@WITH_BDB4_FALSE@@WITH_CXX_FALSE@ ../libical/.libs/libical.a +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@testvcal_DEPENDENCIES = \ +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ ../libicalss/.libs/libicalss.a \ +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ ../libicalvcal/.libs/libicalvcal.a \ +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ ../libical/.libs/libical_cxx.a \ +@WITH_BDB4_TRUE@@WITH_CXX_TRUE@ ../libical/.libs/libical.a +@WITH_BDB4_TRUE@@WITH_CXX_FALSE@testvcal_DEPENDENCIES = \ +@WITH_BDB4_TRUE@@WITH_CXX_FALSE@ ../libicalss/.libs/libicalss.a \ +@WITH_BDB4_TRUE@@WITH_CXX_FALSE@ ../libicalvcal/.libs/libicalvcal.a \ +@WITH_BDB4_TRUE@@WITH_CXX_FALSE@ ../libical/.libs/libical.a +testvcal_LDFLAGS = + +DEFS = @DEFS@ +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +CPPFLAGS = @CPPFLAGS@ +LDFLAGS = @LDFLAGS@ +depcomp = $(SHELL) $(top_srcdir)/depcomp +@AMDEP_TRUE@DEP_FILES = $(DEPDIR)/copycluster.Po \ +@AMDEP_TRUE@ $(DEPDIR)/icaltestparser.Po $(DEPDIR)/process.Po \ +@AMDEP_TRUE@ $(DEPDIR)/recur.Po $(DEPDIR)/regression-classify.Po \ +@AMDEP_TRUE@ $(DEPDIR)/regression-component.Po \ +@AMDEP_TRUE@ $(DEPDIR)/regression-cxx.Po \ +@AMDEP_TRUE@ $(DEPDIR)/regression-recur.Po \ +@AMDEP_TRUE@ $(DEPDIR)/regression-storage.Po \ +@AMDEP_TRUE@ $(DEPDIR)/regression-utils.Po \ +@AMDEP_TRUE@ $(DEPDIR)/regression.Po $(DEPDIR)/stow.Po \ +@AMDEP_TRUE@ $(DEPDIR)/testmime.Po $(DEPDIR)/testvcal.Po +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ + $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CFLAGS = @CFLAGS@ +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXFLAGS = @CXXFLAGS@ +DIST_SOURCES = $(copycluster_SOURCES) $(parser_SOURCES) \ + $(process_SOURCES) $(recur_SOURCES) $(regression_SOURCES) \ + $(stow_SOURCES) $(testmime_SOURCES) $(testvcal_SOURCES) +DIST_COMMON = Makefile.am Makefile.in +SOURCES = $(copycluster_SOURCES) $(parser_SOURCES) $(process_SOURCES) $(recur_SOURCES) $(regression_SOURCES) $(stow_SOURCES) $(testmime_SOURCES) $(testvcal_SOURCES) + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .cpp .lo .o .obj + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/test/Makefile +Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && \ + CONFIG_HEADERS= CONFIG_LINKS= \ + CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status + +clean-noinstPROGRAMS: + -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) +copycluster$(EXEEXT): $(copycluster_OBJECTS) $(copycluster_DEPENDENCIES) + @rm -f copycluster$(EXEEXT) + $(LINK) $(copycluster_LDFLAGS) $(copycluster_OBJECTS) $(copycluster_LDADD) $(LIBS) +parser$(EXEEXT): $(parser_OBJECTS) $(parser_DEPENDENCIES) + @rm -f parser$(EXEEXT) + $(LINK) $(parser_LDFLAGS) $(parser_OBJECTS) $(parser_LDADD) $(LIBS) +process$(EXEEXT): $(process_OBJECTS) $(process_DEPENDENCIES) + @rm -f process$(EXEEXT) + $(LINK) $(process_LDFLAGS) $(process_OBJECTS) $(process_LDADD) $(LIBS) +recur$(EXEEXT): $(recur_OBJECTS) $(recur_DEPENDENCIES) + @rm -f recur$(EXEEXT) + $(LINK) $(recur_LDFLAGS) $(recur_OBJECTS) $(recur_LDADD) $(LIBS) +regression$(EXEEXT): $(regression_OBJECTS) $(regression_DEPENDENCIES) + @rm -f regression$(EXEEXT) + $(CXXLINK) $(regression_LDFLAGS) $(regression_OBJECTS) $(regression_LDADD) $(LIBS) +stow$(EXEEXT): $(stow_OBJECTS) $(stow_DEPENDENCIES) + @rm -f stow$(EXEEXT) + $(LINK) $(stow_LDFLAGS) $(stow_OBJECTS) $(stow_LDADD) $(LIBS) +testmime$(EXEEXT): $(testmime_OBJECTS) $(testmime_DEPENDENCIES) + @rm -f testmime$(EXEEXT) + $(LINK) $(testmime_LDFLAGS) $(testmime_OBJECTS) $(testmime_LDADD) $(LIBS) +testvcal$(EXEEXT): $(testvcal_OBJECTS) $(testvcal_DEPENDENCIES) + @rm -f testvcal$(EXEEXT) + $(LINK) $(testvcal_LDFLAGS) $(testvcal_OBJECTS) $(testvcal_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) core *.core + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/copycluster.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/icaltestparser.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/process.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/recur.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/regression-classify.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/regression-component.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/regression-cxx.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/regression-recur.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/regression-storage.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/regression-utils.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/regression.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/stow.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/testmime.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/testvcal.Po@am__quote@ + +distclean-depend: + -rm -rf $(DEPDIR) + +.c.o: +@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$< + +.c.obj: +@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(COMPILE) -c `cygpath -w $<` + +.c.lo: +@AMDEP_TRUE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(LTCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$< +CCDEPMODE = @CCDEPMODE@ + +.cpp.o: +@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CXXCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$< + +.cpp.obj: +@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CXXCOMPILE) -c -o $@ `cygpath -w $<` + +.cpp.lo: +@AMDEP_TRUE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(LTCXXCOMPILE) -c -o $@ `test -f $< || echo '$(srcdir)/'`$< +CXXDEPMODE = @CXXDEPMODE@ +uninstall-info-am: + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique $(LISP) + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ + || etags $(ETAGS_ARGS) $$tags $$unique $(LISP) + +GTAGS: + here=`CDPATH=: && cd $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH + +check-TESTS: $(TESTS) + @failed=0; all=0; xfail=0; xpass=0; \ + srcdir=$(srcdir); export srcdir; \ + list='$(TESTS)'; \ + if test -n "$$list"; then \ + for tst in $$list; do \ + if test -f ./$$tst; then dir=./; \ + elif test -f $$tst; then dir=; \ + else dir="$(srcdir)/"; fi; \ + if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *" $$tst "*) \ + xpass=`expr $$xpass + 1`; \ + failed=`expr $$failed + 1`; \ + echo "XPASS: $$tst"; \ + ;; \ + *) \ + echo "PASS: $$tst"; \ + ;; \ + esac; \ + elif test $$? -ne 77; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *" $$tst "*) \ + xfail=`expr $$xfail + 1`; \ + echo "XFAIL: $$tst"; \ + ;; \ + *) \ + failed=`expr $$failed + 1`; \ + echo "FAIL: $$tst"; \ + ;; \ + esac; \ + fi; \ + done; \ + if test "$$failed" -eq 0; then \ + if test "$$xfail" -eq 0; then \ + banner="All $$all tests passed"; \ + else \ + banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ + fi; \ + else \ + if test "$$xpass" -eq 0; then \ + banner="$$failed of $$all tests failed"; \ + else \ + banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ + fi; \ + fi; \ + dashes=`echo "$$banner" | sed s/./=/g`; \ + echo "$$dashes"; \ + echo "$$banner"; \ + echo "$$dashes"; \ + test "$$failed" -eq 0; \ + fi + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = ../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + if test -f $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + $(mkinstalldirs) "$(distdir)/$$dir"; \ + fi; \ + if test -d $$d/$$file; then \ + cp -pR $$d/$$file $(distdir) \ + || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(PROGRAMS) + +installdirs: + +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-compile distclean-depend \ + distclean-generic distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +uninstall-am: uninstall-info-am + +.PHONY: GTAGS all all-am check check-TESTS check-am clean clean-generic \ + clean-libtool clean-noinstPROGRAMS distclean distclean-compile \ + distclean-depend distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am info info-am install \ + install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + tags uninstall uninstall-am uninstall-info-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/mozilla/calendar/libical/src/test/copycluster.c b/mozilla/calendar/libical/src/test/copycluster.c new file mode 100644 index 00000000000..63cecbc031b --- /dev/null +++ b/mozilla/calendar/libical/src/test/copycluster.c @@ -0,0 +1,133 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: copycluster.c + CREATOR: eric 15 January 2000 + + $Id: copycluster.c,v 1.15 2002/07/16 10:04:08 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 2000 Eric Busboom + http://www.softwarestudio.org + + The contents of this file are subject to the Mozilla Public License + Version 1.0 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and + limitations under the License. + + The Original Code is eric. The Initial Developer of the Original + Code is Eric Busboom + + + ======================================================================*/ + +#include /* for printf */ +#include +#include /* For strerror */ +#include /* for signal */ +#include /* for alarm */ +#include /* for exit */ + +#include "ical.h" +#include "icalss.h" + +static void sig_alrm(int i){ + fprintf(stderr,"Could not get lock on file\n"); + exit(1); +} +/* This program copies a file that holds iCal components to an other file. */ + + +void usage(char* arg0) { + printf("usage: %s cluster-file1 cluster-file2\n",arg0); +} + +int main(int c, char *argv[]){ + + icalset *clusterin, *clusterout; + icalcomponent *itr; + int count=0; + int tostdout = 0; + + if(c < 2 || c > 3){ + usage(argv[0]); + exit(1); + } + + if (c == 2){ + tostdout = 1; + } + + + /*icalerror_set_error_state(ICAL_PARSE_ERROR, ICAL_ERROR_NONFATAL);*/ + + signal(SIGALRM,sig_alrm); + + alarm(10); + clusterin = icalfileset_new(argv[1]); + alarm(0); + + if (clusterin == 0){ + printf("Could not open input cluster \"%s\"\n",argv[1]); + if(icalerrno!= ICAL_NO_ERROR){ + printf("Error: %s\n",icalerror_strerror(icalerrno)); + } + exit(1); + } + + if (!tostdout){ + alarm(10); + clusterout = icalfileset_new(argv[2]); + alarm(0); + if (clusterout == 0){ + printf("Could not open output cluster \"%s\"\n",argv[2]); + exit(1); + } + } + + + for (itr = icalset_get_first_component(clusterin); + itr != 0; + itr = icalset_get_next_component(clusterin)){ + + icalerror_set_error_state(ICAL_BADARG_ERROR, ICAL_ERROR_NONFATAL); + icalrestriction_check(itr); + icalerror_set_error_state(ICAL_BADARG_ERROR, ICAL_ERROR_DEFAULT); + + if (itr != 0){ + + if(tostdout){ + + printf("--------------\n%s\n",icalcomponent_as_ical_string(itr)); + + } else { + + icalfileset_add_component(clusterout, + icalcomponent_new_clone(itr)); + } + + count++; + + } else { + printf("Got NULL component"); + } + } + + + printf("Transfered %d components\n",count); + + icalset_free(clusterin); + + if (!tostdout){ + icalfileset_mark(clusterout); + icalset_free(clusterout); + } + + return 0; +} + + diff --git a/mozilla/calendar/libical/src/test/findobj.c b/mozilla/calendar/libical/src/test/findobj.c new file mode 100644 index 00000000000..f56b0070780 --- /dev/null +++ b/mozilla/calendar/libical/src/test/findobj.c @@ -0,0 +1,71 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: findobj.c + CREATOR: eric 11 February 2000 + + $Id: findobj.c,v 1.2 2002/06/28 10:45:12 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 2000 Eric Busboom + http://www.softwarestudio.org + + The contents of this file are subject to the Mozilla Public License + Version 1.0 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and + limitations under the License. + + The Original Code is eric. The Initial Developer of the Original + Code is Eric Busboom + + + ======================================================================*/ + +#include /* for printf */ +#include +#include /* For strerror */ + +#include "ical.h" +#include "icalss.h" + +/* This program finds an object stored in a calendar */ + +void usage(char* arg0) { + printf("usage: %s calendar-dir uid\n",arg0); +} + +int main(int c, char *argv[]){ + + icalcalendar *cal; + icaldirset *booked; + icalcomponent *itr; + + if(c < 2 || c > 3){ + usage(argv[0]); + exit(1); + } + + cal = icalcalendar_new(argv[1]); + + if(cal == 0){ + fprintf(stderr,"%s: error in opening calendar \"%s\": %s. errno is \"%s\"\n", + argv[0],argv[1],icalerror_strerror(icalerrno), + strerror(errno)); + } + + booked = icalcalendar_get_booked(cal); + + itr = icaldirset_fetch(booked,argv[2]); + + + if(itr != 0){ + printf("%s",icalcomponent_as_ical_string(itr)); + } + + return 0; +} + diff --git a/mozilla/calendar/libical/src/test/icaltestparser.c b/mozilla/calendar/libical/src/test/icaltestparser.c new file mode 100644 index 00000000000..6119ec2471a --- /dev/null +++ b/mozilla/calendar/libical/src/test/icaltestparser.c @@ -0,0 +1,122 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: icaltestparser.c + CREATOR: eric 20 June 1999 + + $Id: icaltestparser.c,v 1.2 2001/01/16 06:55:09 ebusboom Exp $ + $Locker: $ + + The contents of this file are subject to the Mozilla Public License + Version 1.0 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and + limitations under the License. + + The original author is Eric Busboom + The original code is icaltestparser.c + + + (C) COPYRIGHT 1999 The Software Studio. + http://www.softwarestudio.org + + ======================================================================*/ + +#include +#include +#include +#include +#include "ical.h" + +#include + +char str[] = "BEGIN:VCALENDAR\ +PRODID:\"-//RDU Software//NONSGML HandCal//EN\"\ +VERSION:2.0\ +BEGIN:VTIMEZONE\ +TZID:US-Eastern\ +BEGIN:STANDARD\ +DTSTART:19990404T020000\ +RDATE:19990u404xT020000\ +TZOFFSETFROM:-0500\ +TZOFFSETTO:-0400\ +END:STANDARD\ +BEGIN:DAYLIGHT\ +DTSTART:19990404T020000\ +RDATE:19990404T020000\ +TZOFFSETFROM:-0500\ +TZOFFSETTO:-0400\ +TZNAME:EDT\ +Dkjhgri:derhvnv;\ +BEGIN:dfkjh\ +END:dfdfkjh\ +END:DAYLIGHT\ +END:VTIMEZONE\ +BEGIN:VEVENT\ +GEO:Bongo\ +DTSTAMP:19980309T231000Z\ +UID:guid-1.host1.com\ +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com\ +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP\ + :MAILTO:employee-A@host.com\ +DESCRIPTION:Project XYZ Review Meeting\ +CATEGORIES:MEETING\ +CLASS:PUBLIC\ +CREATED:19980309T130000Z\ +SUMMARY:XYZ Project Review\ +DTSTART;TZID=US-Eastern:19980312T083000\ +DTEND;TZID=US-Eastern:19980312T093000\ +LOCATION:1CP Conference Room 4350\ +END:VEVENT\ +END:VCALENDAR\ +"; + +extern int yydebug; + +/* Have the parser fetch data from stdin */ + +char* read_stream(char *s, size_t size, void *d) +{ + char *c = fgets(s,size, (FILE*)d); + + return c; + +} + + + +int main(int argc, char* argv[]) +{ + + char* line; + FILE* stream; + icalcomponent *c; + icalparser *parser = icalparser_new(); + + stream = fopen(argv[1],"r"); + + assert(stream != 0); + + icalparser_set_gen_data(parser,stream); + + do{ + + line = icalparser_get_line(parser,read_stream); + + c = icalparser_add_line(parser,line); + + + if (c != 0){ + /*icalcomponent_convert_errors(c);*/ + printf("%s",icalcomponent_as_ical_string(c)); + printf("\n---------------\n"); + icalcomponent_free(c); + } + + } while ( line != 0); + + return 0; + } diff --git a/mozilla/calendar/libical/src/test/itip.ics b/mozilla/calendar/libical/src/test/itip.ics new file mode 100644 index 00000000000..9a71660a756 --- /dev/null +++ b/mozilla/calendar/libical/src/test/itip.ics @@ -0,0 +1,14 @@ + +BEGIN:VCALENDAR +METHOD:REPLY +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +ATTENDEE:mailto:eric@agony.busboom.org +DTSTART:19970701T200000Z +DTSTAMP:19970611T190000Z +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +END:VEVENT +END:VCALENDAR diff --git a/mozilla/calendar/libical/src/test/outgoing.ics b/mozilla/calendar/libical/src/test/outgoing.ics new file mode 100644 index 00000000000..9f9fd3fd692 --- /dev/null +++ b/mozilla/calendar/libical/src/test/outgoing.ics @@ -0,0 +1,544 @@ +BEGIN:VCALENDAR +METHOD + :REPLY +VERSION + :2.0 +PRODID + :-//SoftwareStudio//NONSGML libical 0.21 //EN +BEGIN:VEVENT +DTSTAMP + :20001121T170735Z +UID + :calsrv.example.com-873970198738703@example.com +ORGANIZER + :Mailto:bob@cal.softwarestudio.org +SUMMARY + : Overlap 1 +SEQUENCE + :0 +COMMENT + :I can make it to this meeting +ATTENDEE + ;ROLE=CHAIR + ;CUTYPE=INDIVIDUAL + ;CN=Alice + ;PARTSTAT=ACCEPTED + :Mailto:alice@cal.softwarestudio.org +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD + :REPLY +VERSION + :2.0 +PRODID + :-//SoftwareStudio//NONSGML libical 0.21 //EN +BEGIN:VEVENT +DTSTAMP + :20001121T170735Z +UID + :calsrv.example.com-873970198738704@example.com +ORGANIZER + :Mailto:bob@cal.softwarestudio.org +SUMMARY + :Overlap 2 +SEQUENCE + :0 +COMMENT + :I can make it to this meeting +ATTENDEE + ;ROLE=CHAIR + ;CUTYPE=INDIVIDUAL + ;CN=Alice + ;PARTSTAT=ACCEPTED + :Mailto:alice@cal.softwarestudio.org +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD + :REPLY +VERSION + :2.0 +PRODID + :-//SoftwareStudio//NONSGML libical 0.21 //EN +BEGIN:VEVENT +DTSTAMP + :20001121T170735Z +UID + :calsrv.example.com-873970198738705@example.com +ORGANIZER + :Mailto:bob@cal.softwarestudio.org +SUMMARY + :Overlap 3 +SEQUENCE + :0 +COMMENT + :I can make it to this meeting +ATTENDEE + ;ROLE=CHAIR + ;CUTYPE=INDIVIDUAL + ;CN=Alice + ;PARTSTAT=ACCEPTED + :Mailto:alice@cal.softwarestudio.org +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD + :REPLY +VERSION + :2.0 +PRODID + :-//SoftwareStudio//NONSGML libical 0.21 //EN +BEGIN:VEVENT +DTSTAMP + :20001121T170953Z +UID + :calsrv.example.com-873970198738703@example.com +ORGANIZER + :Mailto:bob@cal.softwarestudio.org +SUMMARY + : Overlap 1 +SEQUENCE + :0 +COMMENT + :I can make it to this meeting +ATTENDEE + ;ROLE=CHAIR + ;CUTYPE=INDIVIDUAL + ;CN=Alice + ;PARTSTAT=ACCEPTED + :Mailto:alice@cal.softwarestudio.org +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD + :REPLY +VERSION + :2.0 +PRODID + :-//SoftwareStudio//NONSGML libical 0.21 //EN +BEGIN:VEVENT +DTSTAMP + :20001121T170953Z +UID + :calsrv.example.com-873970198738704@example.com +ORGANIZER + :Mailto:bob@cal.softwarestudio.org +SUMMARY + :Overlap 2 +SEQUENCE + :0 +COMMENT + :I can make it to this meeting +ATTENDEE + ;ROLE=CHAIR + ;CUTYPE=INDIVIDUAL + ;CN=Alice + ;PARTSTAT=ACCEPTED + :Mailto:alice@cal.softwarestudio.org +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD + :REPLY +VERSION + :2.0 +PRODID + :-//SoftwareStudio//NONSGML libical 0.21 //EN +BEGIN:VEVENT +DTSTAMP + :20001121T170953Z +UID + :calsrv.example.com-873970198738705@example.com +ORGANIZER + :Mailto:bob@cal.softwarestudio.org +SUMMARY + :Overlap 3 +SEQUENCE + :0 +COMMENT + :I can make it to this meeting +ATTENDEE + ;ROLE=CHAIR + ;CUTYPE=INDIVIDUAL + ;CN=Alice + ;PARTSTAT=ACCEPTED + :Mailto:alice@cal.softwarestudio.org +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD + :REPLY +VERSION + :2.0 +PRODID + :-//SoftwareStudio//NONSGML libical 0.21 //EN +BEGIN:VEVENT +DTSTAMP + :20001121T171147Z +UID + :calsrv.example.com-873970198738703@example.com +ORGANIZER + :Mailto:bob@cal.softwarestudio.org +SUMMARY + : Overlap 1 +SEQUENCE + :0 +COMMENT + :Unfortunately\, I have another commitment that conflicts with this + meeting. I am delegating my attendance to Bob. +ATTENDEE + ;ROLE=CHAIR + ;CUTYPE=INDIVIDUAL + ;CN=Alice + ;PARTSTAT=DELEGATED + ;DELEGATED-TO=bob@cal.softwarestudio.org + :Mailto:alice@cal.softwarestudio.org +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +X-LIC-NOTE + : Overlap with Slot 2\, 1300 to 1400\, should be counterproposed +METHOD + :REQUEST +VERSION + :2.0 +BEGIN:VEVENT +ORGANIZER + :Mailto:bob@cal.softwarestudio.org +ATTENDEE + ;ROLE=CHAIR + ;CUTYPE=INDIVIDUAL + ;CN=Alice + :Mailto:alice@cal.softwarestudio.org +ATTENDEE + ;RSVP=TRUE + ;CUTYPE=INDIVIDUAL + ;CN=B + :Mailto:B@example.com +DTSTAMP + :19970611T040000Z +DTSTART + :19970701T070000 +DTEND + :19970701T080000 +SUMMARY + :Overlap 2 +UID + :calsrv.example.com-873970198738704@example.com +SEQUENCE + :0 +STATUS + :CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD + :REPLY +VERSION + :2.0 +PRODID + :-//SoftwareStudio//NONSGML libical 0.21 //EN +BEGIN:VEVENT +DTSTAMP + :20001121T171147Z +UID + :calsrv.example.com-873970198738705@example.com +ORGANIZER + :Mailto:bob@cal.softwarestudio.org +SUMMARY + :Overlap 3 +SEQUENCE + :0 +COMMENT + :I can't make it to this meeting +ATTENDEE + ;ROLE=CHAIR + ;CUTYPE=INDIVIDUAL + ;CN=Alice + ;PARTSTAT=DECLINED + :Mailto:alice@cal.softwarestudio.org +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD + :REPLY +VERSION + :2.0 +PRODID + :-//SoftwareStudio//NONSGML libical 0.21 //EN +BEGIN:VEVENT +DTSTAMP + :20001121T171154Z +UID + :calsrv.example.com-873970198738703@example.com +ORGANIZER + :Mailto:bob@cal.softwarestudio.org +SUMMARY + : Overlap 1 +SEQUENCE + :0 +COMMENT + :Unfortunately\, I have another commitment that conflicts with this + meeting. I am delegating my attendance to Bob. +ATTENDEE + ;ROLE=CHAIR + ;CUTYPE=INDIVIDUAL + ;CN=Alice + ;PARTSTAT=DELEGATED + ;DELEGATED-TO=bob@cal.softwarestudio.org + :Mailto:alice@cal.softwarestudio.org +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +X-LIC-NOTE + : Overlap with Slot 2\, 1300 to 1400\, should be counterproposed +METHOD + :REQUEST +VERSION + :2.0 +BEGIN:VEVENT +ORGANIZER + :Mailto:bob@cal.softwarestudio.org +ATTENDEE + ;ROLE=CHAIR + ;CUTYPE=INDIVIDUAL + ;CN=Alice + :Mailto:alice@cal.softwarestudio.org +ATTENDEE + ;RSVP=TRUE + ;CUTYPE=INDIVIDUAL + ;CN=B + :Mailto:B@example.com +DTSTAMP + :19970611T040000Z +DTSTART + :19970701T070000 +DTEND + :19970701T080000 +SUMMARY + :Overlap 2 +UID + :calsrv.example.com-873970198738704@example.com +SEQUENCE + :0 +STATUS + :CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD + :REPLY +VERSION + :2.0 +PRODID + :-//SoftwareStudio//NONSGML libical 0.21 //EN +BEGIN:VEVENT +DTSTAMP + :20001121T171154Z +UID + :calsrv.example.com-873970198738705@example.com +ORGANIZER + :Mailto:bob@cal.softwarestudio.org +SUMMARY + :Overlap 3 +SEQUENCE + :0 +COMMENT + :I can't make it to this meeting +ATTENDEE + ;ROLE=CHAIR + ;CUTYPE=INDIVIDUAL + ;CN=Alice + ;PARTSTAT=DECLINED + :Mailto:alice@cal.softwarestudio.org +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD + :REPLY +VERSION + :2.0 +PRODID + :-//SoftwareStudio//NONSGML libical 0.21 //EN +BEGIN:VEVENT +DTSTAMP + :20001121T144324Z +UID + :calsrv.example.com-873970198738703@example.com +ORGANIZER + :Mailto:bob@cal.softwarestudio.org +SUMMARY + : Overlap 1 +SEQUENCE + :0 +COMMENT + :Unfortunately\, I have another commitment that conflicts with this + meeting. I am delegating my attendance to Bob. +ATTENDEE + ;ROLE=CHAIR + ;CUTYPE=INDIVIDUAL + ;CN=Alice + ;PARTSTAT=DELEGATED + ;DELEGATED-TO=bob@cal.softwarestudio.org + :Mailto:alice@cal.softwarestudio.org +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +X-LIC-NOTE + : Overlap with Slot 2\, 1300 to 1400\, should be counterproposed +METHOD + :REQUEST +VERSION + :2.0 +BEGIN:VEVENT +ORGANIZER + :Mailto:bob@cal.softwarestudio.org +ATTENDEE + ;ROLE=CHAIR + ;CUTYPE=INDIVIDUAL + ;CN=Alice + :Mailto:alice@cal.softwarestudio.org +ATTENDEE + ;RSVP=TRUE + ;CUTYPE=INDIVIDUAL + ;CN=B + :Mailto:B@example.com +DTSTAMP + :19970611T040000Z +DTSTART + :19970701T230000 +DTEND + :19970702T000000 +SUMMARY + :Overlap 2 +UID + :calsrv.example.com-873970198738704@example.com +SEQUENCE + :0 +STATUS + :CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD + :REPLY +VERSION + :2.0 +PRODID + :-//SoftwareStudio//NONSGML libical 0.21 //EN +BEGIN:VEVENT +DTSTAMP + :20001121T144324Z +UID + :calsrv.example.com-873970198738705@example.com +ORGANIZER + :Mailto:bob@cal.softwarestudio.org +SUMMARY + :Overlap 3 +SEQUENCE + :0 +COMMENT + :I can't make it to this meeting +ATTENDEE + ;ROLE=CHAIR + ;CUTYPE=INDIVIDUAL + ;CN=Alice + ;PARTSTAT=DECLINED + :Mailto:alice@cal.softwarestudio.org +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD + :REPLY +VERSION + :2.0 +PRODID + :-//SoftwareStudio//NONSGML libical 0.21 //EN +BEGIN:VEVENT +DTSTAMP + :20001121T144412Z +UID + :calsrv.example.com-873970198738703@example.com +ORGANIZER + :Mailto:bob@cal.softwarestudio.org +SUMMARY + : Overlap 1 +SEQUENCE + :0 +COMMENT + :Unfortunately\, I have another commitment that conflicts with this + meeting. I am delegating my attendance to Bob. +ATTENDEE + ;ROLE=CHAIR + ;CUTYPE=INDIVIDUAL + ;CN=Alice + ;PARTSTAT=DELEGATED + ;DELEGATED-TO=bob@cal.softwarestudio.org + :Mailto:alice@cal.softwarestudio.org +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +X-LIC-NOTE + : Overlap with Slot 2\, 1300 to 1400\, should be counterproposed +METHOD + :REQUEST +VERSION + :2.0 +BEGIN:VEVENT +ORGANIZER + :Mailto:bob@cal.softwarestudio.org +ATTENDEE + ;ROLE=CHAIR + ;CUTYPE=INDIVIDUAL + ;CN=Alice + :Mailto:alice@cal.softwarestudio.org +ATTENDEE + ;RSVP=TRUE + ;CUTYPE=INDIVIDUAL + ;CN=B + :Mailto:B@example.com +DTSTAMP + :19970611T040000Z +DTSTART + :19970701T230000 +DTEND + :19970702T000000 +SUMMARY + :Overlap 2 +UID + :calsrv.example.com-873970198738704@example.com +SEQUENCE + :0 +STATUS + :CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD + :REPLY +VERSION + :2.0 +PRODID + :-//SoftwareStudio//NONSGML libical 0.21 //EN +BEGIN:VEVENT +DTSTAMP + :20001121T144412Z +UID + :calsrv.example.com-873970198738705@example.com +ORGANIZER + :Mailto:bob@cal.softwarestudio.org +SUMMARY + :Overlap 3 +SEQUENCE + :0 +COMMENT + :I can't make it to this meeting +ATTENDEE + ;ROLE=CHAIR + ;CUTYPE=INDIVIDUAL + ;CN=Alice + ;PARTSTAT=DECLINED + :Mailto:alice@cal.softwarestudio.org +END:VEVENT +END:VCALENDAR diff --git a/mozilla/calendar/libical/src/test/process.c b/mozilla/calendar/libical/src/test/process.c new file mode 100644 index 00000000000..4bf7d82f196 --- /dev/null +++ b/mozilla/calendar/libical/src/test/process.c @@ -0,0 +1,407 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: process.c + CREATOR: eric 11 February 2000 + + $Id: process.c,v 1.7 2002/06/28 10:45:12 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 2000 Eric Busboom + http://www.softwarestudio.org + + The contents of this file are subject to the Mozilla Public License + Version 1.0 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and + limitations under the License. + + ======================================================================*/ + +#include /* for printf */ +#include +#include /* For strerror */ +#include /* for free */ + +#include "ical.h" +#include "icalss.h" + +void send_message(icalcomponent *reply,const char* this_user) +{ + printf("From: %s\n\n%s\n",this_user,icalcomponent_as_ical_string(reply)); + + +} + + +int main(int argc, char* argv[]) +{ + icalcomponent *c, *next_c; + int i=0; + const char *class_string; + int dont_remove; + + icalset* f = icalset_new_file("../../test-data/process-incoming.ics"); + icalset* trash = icalset_new_file("trash.ics"); + icalset* cal = icalset_new_file("../../test-data/process-calendar.ics"); + icalset* out = icalset_new_file("outgoing.ics"); + + const char* this_user = "alice@cal.softwarestudio.org"; + + assert(f!= 0); + assert(cal!=0); + assert(trash!=0); + assert(out!=0); + + + /* Foreach incoming message */ + for(c=icalset_get_first_component(f);c!=0;c = next_c){ + + icalproperty_xlicclass class; + icalcomponent *match; + icalcomponent *inner; + icalcomponent *reply = 0; + + assert(c!=0); + + inner = icalcomponent_get_first_real_component(c); + + i++; + reply = 0; + dont_remove = 0; + + if(inner == 0){ + printf("Bad component, no inner\n %s\n", + icalcomponent_as_ical_string(c)); + continue; + } + + /* Find a booked component that is matched to the incoming + message, based on the incoming component's UID, SEQUENCE + and RECURRENCE-ID*/ + + match = icalset_fetch_match(cal,c); + + class = icalclassify(c,match,this_user); + + class_string = icalproperty_enum_to_string(class); + + /* Print out the notes associated with the incoming component + and the matched component in the */ + { + const char *c_note=0; + const char *m_note=0; + icalproperty *p; + + for(p = icalcomponent_get_first_property(c,ICAL_X_PROPERTY); + p!= 0; + p = icalcomponent_get_next_property(c,ICAL_X_PROPERTY)){ + + if(strcmp(icalproperty_get_x_name(p),"X-LIC-NOTE")==0){ + c_note = icalproperty_get_x(p); + } + } + + if (match != 0){ + for(p = icalcomponent_get_first_property(match, + ICAL_X_PROPERTY); + p!= 0; + p = icalcomponent_get_next_property(match, + ICAL_X_PROPERTY)){ + if(strcmp(icalproperty_get_x_name(p),"X-LIC-NOTE")==0){ + m_note = icalproperty_get_x(p); + } + } + } + + if(c_note != 0){ + printf("Incoming: %s\n",c_note); + } + if(m_note != 0){ + printf("Match : %s\n",m_note); + } + } + + /* Main processing structure */ + + switch (class){ + case ICAL_XLICCLASS_NONE: { + char temp[1024]; + /* Huh? Return an error to sender */ + icalrestriction_check(c); + icalcomponent_convert_errors(c); + + snprintf(temp,1024,"I can't understand the component you sent. \n Here is the component you sent, possibly with error messages:\n %s",icalcomponent_as_ical_string(c)); + + reply = icalmessage_new_error_reply( + c, + this_user, + temp, + "", + ICAL_UNKNOWN_STATUS + ); + + + + break; + } + case ICAL_XLICCLASS_PUBLISHNEW: { + + /* Don't accept published events from anyone but + self. If self, fall through to ICAL_XLICCLASS_REQUESTNEW */ + + + + } + case ICAL_XLICCLASS_REQUESTNEW: { + + /* Book the new component if it does not overlap + anything. If the time is busy and the start time is + an even modulo 4, delegate to + bob@cal.softwarestudio.org. If the time is busy and + is 1 modulo 4, counterpropose for the first + available free time. Otherwise, deline the meeting */ + + icalcomponent *overlaps; + overlaps = icalclassify_find_overlaps(cal,c); + + if(overlaps == 0){ + /* No overlaps, book the meeting */ +/* icalset_add_component(cal,icalcomponent_new_clone(c));*/ + + /* Return a reply */ + reply = icalmessage_new_accept_reply(c,this_user, + "I can make it to this meeting"); + + icalset_add_component(out,reply); + + } else { + /* There was a conflict, so delegate, counterpropose + or decline it */ + struct icaltimetype dtstart + = icalcomponent_get_dtstart(c); + + if(dtstart.hour%4 == 0){ + /* Delegate the meeting */ + reply = icalmessage_new_delegate_reply(c, + this_user, + "bob@cal.softwarestudio.org", + "Unfortunately, I have another commitment that \ +conflicts with this meeting. I am delegating my attendance to Bob. "); + + icalset_add_component(out,reply); + + } else if (dtstart.hour%4 == 1) { + /* Counter propose to next available time */ + icalcomponent *newc; + struct icalperiodtype next_time; + + icalspanlist *spanl = + icalspanlist_new(cal,dtstart, + icaltime_null_time()); + + next_time = icalspanlist_next_free_time( + spanl,icalcomponent_get_dtstart(c)); + + newc = icalcomponent_new_clone(c); + + icalcomponent_set_dtstart(newc,next_time.start); + + + /* Hack, the duration of the counterproposed + meeting may be longer than the free time + available */ + icalcomponent_set_duration(newc, + icalcomponent_get_duration(c)); + + reply = icalmessage_new_counterpropose_reply(c, + newc, + this_user, + "Unfortunately, I have another commitment that \ +conflicts with this meeting. I am proposing a time that works better for me."); + + icalset_add_component(out,reply); + + } else { + /* Decline the meeting */ + + reply = icalmessage_new_decline_reply(c, + this_user, + "I can't make it to this meeting"); + + icalset_add_component(out,reply); + + } + + + } + break; + } + case ICAL_XLICCLASS_PUBLISHFREEBUSY: { + /* Store the busy time information in a file named after + the sender */ + break; + } + + case ICAL_XLICCLASS_PUBLISHUPDATE: { + /* Only accept publish updates from self. If self, fall + throught to ICAL_XLICCLASS_REQUESTUPDATE */ + } + + case ICAL_XLICCLASS_REQUESTUPDATE: { + /* always accept the changes */ + break; + } + + case ICAL_XLICCLASS_REQUESTRESCHEDULE: { + /* Use same rules as REQUEST_NEW */ + icalcomponent *overlaps; + overlaps = icalclassify_find_overlaps(cal,c); + + break; + } + case ICAL_XLICCLASS_REQUESTDELEGATE: { + + break; + } + case ICAL_XLICCLASS_REQUESTNEWORGANIZER: { + break; + } + case ICAL_XLICCLASS_REQUESTFORWARD: { + break; + } + case ICAL_XLICCLASS_REQUESTSTATUS: { + break; + } + + case ICAL_XLICCLASS_REQUESTFREEBUSY: { + break; + } + case ICAL_XLICCLASS_REPLYACCEPT: { + /* Change the PARTSTAT of the sender */ + break; + } + case ICAL_XLICCLASS_REPLYDECLINE: { + /* Change the PARTSTAT of the sender */ + break; + } + case ICAL_XLICCLASS_REPLYCRASHERACCEPT: { + /* Add the crasher to the ATTENDEE list with the + appropriate PARTSTAT */ + break; + } + case ICAL_XLICCLASS_REPLYCRASHERDECLINE: { + /* Add the crasher to the ATTENDEE list with the + appropriate PARTSTAT */ + break; + } + case ICAL_XLICCLASS_ADDINSTANCE: { + break; + } + case ICAL_XLICCLASS_CANCELEVENT: { + /* Remove the component */ + break; + } + case ICAL_XLICCLASS_CANCELINSTANCE: { + break; + } + case ICAL_XLICCLASS_CANCELALL: { + /* Remove the component */ + break; + } + case ICAL_XLICCLASS_REFRESH: { + /* Resend the latest copy of the request */ + break; + } + case ICAL_XLICCLASS_COUNTER: { + break; + } + case ICAL_XLICCLASS_DECLINECOUNTER: { + break; + } + case ICAL_XLICCLASS_MALFORMED: { + /* Send back an error */ + break; + } + case ICAL_XLICCLASS_OBSOLETE: { + printf(" ** Got an obsolete component:\n%s", + icalcomponent_as_ical_string(c)); + /* Send back an error */ + break; + } + case ICAL_XLICCLASS_MISSEQUENCED: { + printf(" ** Got a missequenced component:\n%s", + icalcomponent_as_ical_string(c)); + /* Send back an error */ + break; + } + case ICAL_XLICCLASS_UNKNOWN: { + printf(" ** Don't know what to do with this component:\n%s", + icalcomponent_as_ical_string(c)); + /* Send back an error */ + break; + } + case ICAL_XLICCLASS_X: + case ICAL_XLICCLASS_REPLYDELEGATE: + default: { + } + } + +#if(0) + if (reply != 0){ + + /* Don't send the reply if the RSVP parameter indicates not to*/ + icalcomponent *reply_inner; + icalproperty *attendee; + icalparameter *rsvp; + + reply_inner = icalcomponent_get_first_real_component(reply); + attendee = icalcomponent_get_first_property(reply_inner, + ICAL_ATTENDEE_PROPERTY); + rsvp = icalproperty_get_first_parameter(attendee, + ICAL_RSVP_PARAMETER); + + if(rsvp == 0 || icalparameter_get_rsvp(rsvp) == 1){ + icalrestriction_check(reply); + send_message(reply,this_user); + } + + icalcomponent_free(reply); + } +#endif + + if(reply !=0){ + printf("%s\n",icalcomponent_as_ical_string(reply)); + } + + next_c = icalset_get_next_component(f); + + if(dont_remove == 0){ + /*icalset_remove_component(f,c); + icalset_add_component(trash,c);*/ + } + } + +#if (0) + + for(c = icalset_get_first_component(out); + c!=0; + c = icalset_get_next_component(out)){ + + printf("%s",icalcomponent_as_ical_string(c)); + + } +#endif + + icalset_free(f); + icalset_free(trash); + icalset_free(cal); + icalset_free(out); + + return 0; +} + + diff --git a/mozilla/calendar/libical/src/test/recur.c b/mozilla/calendar/libical/src/test/recur.c new file mode 100644 index 00000000000..bb23337adbb --- /dev/null +++ b/mozilla/calendar/libical/src/test/recur.c @@ -0,0 +1,161 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: recur.c + CREATOR: ebusboom 8jun00 + + DESCRIPTION: + + Test program for expanding recurrences. Run as: + + ./recur ../../test-data/recur.txt + + + (C) COPYRIGHT 1999 Eric Busboom + http://www.softwarestudio.org + + The contents of this file are subject to the Mozilla Public License + Version 1.0 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and + limitations under the License. + + ======================================================================*/ + +#include +#include /* for strdup */ +#include /* for malloc */ +#include /* for printf */ +#include /* for time() */ +#include /* for signal */ +#ifndef WIN32 +#include /* for alarm */ +#endif + +#include "ical.h" +#include "icalss.h" + +#ifdef WIN32 +#define snprintf _snprintf +#define strcasecmp stricmp +#endif + +static void sig_alrm(int i){ + fprintf(stderr,"Could not get lock on file\n"); + exit(1); +} + +static void recur_callback(icalcomponent *comp, + struct icaltime_span *span, + void *data) +{ + printf("cb: %s", ctime(&span->start)); + printf(" %s\n", ctime(&span->end)); + +} + +int main(int argc, char *argv[]) +{ + icalset *cin; + struct icaltimetype next; + icalcomponent *itr; + icalproperty *desc, *dtstart, *rrule; + struct icalrecurrencetype recur; + icalrecur_iterator* ritr; + time_t tt; + char* file; + + icalerror_set_error_state(ICAL_PARSE_ERROR, ICAL_ERROR_NONFATAL); + +#ifndef WIN32 + signal(SIGALRM,sig_alrm); +#endif + + if (argc <= 1){ + file = "../../test-data/recur.txt"; + } else if (argc == 2){ + file = argv[1]; + } else { + fprintf(stderr,"usage: recur [input file]\n"); + exit(1); + } + +#ifndef WIN32 + alarm(300); /* to get file lock */ +#endif + cin = icalfileset_new(file); +#ifndef WIN32 + alarm(0); +#endif + + if(cin == 0){ + fprintf(stderr,"recur: can't open file %s\n",file); + exit(1); + } + + + for (itr = icalfileset_get_first_component(cin); + itr != 0; + itr = icalfileset_get_next_component(cin)){ + + struct icaltimetype start = icaltime_from_timet(1,0); + struct icaltimetype end = icaltime_today(); + + + + desc = icalcomponent_get_first_property(itr,ICAL_DESCRIPTION_PROPERTY); + dtstart = icalcomponent_get_first_property(itr,ICAL_DTSTART_PROPERTY); + rrule = icalcomponent_get_first_property(itr,ICAL_RRULE_PROPERTY); + + if (desc == 0 || dtstart == 0 || rrule == 0){ + printf("\n******** Error in input component ********\n"); + printf("The following component is malformed:\n %s\n", + icalcomponent_as_ical_string(itr)); + continue; + } + + printf("\n\n#### %s\n",icalproperty_get_description(desc)); + printf("#### %s\n",icalvalue_as_ical_string(icalproperty_get_value(rrule))); + recur = icalproperty_get_rrule(rrule); + start = icalproperty_get_dtstart(dtstart); + + ritr = icalrecur_iterator_new(recur,start); + + tt = icaltime_as_timet(start); + + printf("#### %s\n",ctime(&tt )); + + icalrecur_iterator_free(ritr); + + for(ritr = icalrecur_iterator_new(recur,start), + next = icalrecur_iterator_next(ritr); + !icaltime_is_null_time(next); + next = icalrecur_iterator_next(ritr)){ + + tt = icaltime_as_timet(next); + + printf(" %s",ctime(&tt )); + + } + icalrecur_iterator_free(ritr); + + icalcomponent_foreach_recurrence(itr, start, end, + recur_callback, NULL); + + + + } + + icalset_free(cin); + + icaltimezone_free_builtin_timezones(); + + icalmemory_free_ring(); + + free_zone_directory(); + + return 0; +} diff --git a/mozilla/calendar/libical/src/test/recur.dsp b/mozilla/calendar/libical/src/test/recur.dsp new file mode 100644 index 00000000000..866727b5d36 --- /dev/null +++ b/mozilla/calendar/libical/src/test/recur.dsp @@ -0,0 +1,102 @@ +# Microsoft Developer Studio Project File - Name="recur" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=recur - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "recur.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "recur.mak" CFG="recur - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "recur - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "recur - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "recur - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\libical" /I "..\libicalss" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "YY_NO_UNISTD_H" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "recur - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\libical" /I "..\libicalss" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "YY_NO_UNISTD_H" /FR /YX /FD /GZ /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libical.lib libicalss.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\libical\Debug" /libpath:"..\libicalss\Debug" + +!ENDIF + +# Begin Target + +# Name "recur - Win32 Release" +# Name "recur - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\recur.c +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/mozilla/calendar/libical/src/test/regression-classify.c b/mozilla/calendar/libical/src/test/regression-classify.c new file mode 100644 index 00000000000..b17af03f116 --- /dev/null +++ b/mozilla/calendar/libical/src/test/regression-classify.c @@ -0,0 +1,187 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: regression-classify.c + CREATOR: eric 11 February 2000 + + $Id: regression-classify.c,v 1.3 2002/08/07 17:18:13 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 2000 Eric Busboom + http://www.softwarestudio.org + + The contents of this file are subject to the Mozilla Public License + Version 1.0 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and + limitations under the License. + + The Original Code is eric. The Initial Developer of the Original + Code is Eric Busboom + + + ======================================================================*/ +#include /* for printf */ +#include +#include /* For strerror */ + +#include "ical.h" +#include "icalss.h" +#include "regression.h" + +extern int VERBOSE; + +/* Get a note about the purpose of the property*/ +static const char* get_note(icalcomponent *c) +{ + icalproperty *p; + const char* note = 0; + + if(c != 0){ + for(p = icalcomponent_get_first_property(c,ICAL_X_PROPERTY); + p!= 0; + p = icalcomponent_get_next_property(c,ICAL_X_PROPERTY)){ + if(strcmp(icalproperty_get_x_name(p),"X-LIC-NOTE")==0){ + note = icalproperty_get_x(p); + } + } + } + + if(note == 0){ + note = "None"; + } + + return note; +} + +/* Get the expected result about the purpose of the property*/ + +static const char* get_expect(icalcomponent *c) +{ + icalproperty *p; + const char* note = 0; + + if(c != 0){ + for(p = icalcomponent_get_first_property(c,ICAL_X_PROPERTY); + p!= 0; + p = icalcomponent_get_next_property(c,ICAL_X_PROPERTY)){ + if(strcmp(icalproperty_get_x_name(p),"X-LIC-EXPECT")==0){ + note = icalproperty_get_x(p); + } + } + } + + if(note == 0){ + note = "None"; + } + + return note; +} + +void test_classify(void) +{ + icalcomponent *c,*match; + int i=0; + int error_count = 0; + /* Open up the two storage files, one for the incomming components, + one for the calendar */ + icalset* incoming = icalset_new_file("../../test-data/incoming.ics"); + icalset* cal = icalset_new_file("../../test-data/calendar.ics"); + icalset* f = icalset_new_file("../../test-data/classify.ics"); + + ok("opening file classify.ics", (f!=0)); + ok("opening file calendar.ics", (cal!=0)); + ok("opening file incoming.ics", (incoming!=0)); + + /* some basic tests.. */ + if (f) { + c = icalset_get_first_component(f); + match = icalset_get_next_component(f); + + ok("test two vcalendars for SEQUENCE with icalclassify()", + (icalclassify(c,match,"A@example.com") == ICAL_XLICCLASS_REQUESTRESCHEDULE)); + + icalset_free(f); + } + + assert(incoming!= 0); + assert(cal!=0); + + /* Iterate through all of the incoming components */ + for(c=icalset_get_first_component(incoming);c!=0; + c=icalset_get_next_component(incoming)){ + + icalproperty_xlicclass class; + icalcomponent *match = 0; + const char* this_uid; + const char* this_note = get_note(c); + const char* expected_result = get_expect(c); + const char* actual_result; + const char* match_note; + char msg[128]; + + i++; + + /* Check this component against the restrictions imposed by + iTIP. An errors will be inserted as X-LIC-ERROR properties + in the component. The Parser will also insert errors if it + cannot parse the component */ + icalcomponent_check_restrictions(c); + + /* If there are any errors, print out the component */ + + error_count = icalcomponent_count_errors(c); + sprintf(msg, "%s - parsing", this_note); + int_is(msg, error_count, 0); + + if (error_count !=0) { + if (VERBOSE) printf("----- Component has errors ------- \n%s-----------------\n", + icalcomponent_as_ical_string(c)); + } + + /* Use one of the icalcomponent convenience routines to get + the UID. This routine will save you from having to use + icalcomponent_get_inner(), + icalcomponent_get_first_property(), checking the return + value, and then calling icalproperty_get_uid. There are + several other convenience routines for DTSTART, DTEND, + DURATION, SUMMARY, METHOD, and COMMENT */ + this_uid = icalcomponent_get_uid(c); + + if(this_uid != 0){ + /* Look in the calendar for a component with the same UID + as the incomming component. We should reall also be + checking the RECURRENCE-ID. Another way to do this + operation is to us icalset_find_match(), which does use + the RECURRENCE-ID. */ + match = icalset_fetch(cal,this_uid); + } + + + /* Classify the incoming component. The third argument is the + calid of the user who owns the calendar. In a real program, + you would probably switch() on the class.*/ + class = icalclassify(c,match,"A@example.com"); + /** eventually test this too.. **/ + match_note = get_note(match); + actual_result = icalproperty_enum_to_string(class); + sprintf(msg, "expecting %s", expected_result); + is(msg, expected_result, actual_result); + + if (VERBOSE) printf("Test %d\n\ +Incoming: %s\n\ +Matched: %s\n\ +Classification: %s\n\n", + i,this_note,get_note(match), + icalproperty_enum_to_string(class)); + } + + icalset_free(incoming); + icalset_free(cal); + +} + + diff --git a/mozilla/calendar/libical/src/test/regression-component.c b/mozilla/calendar/libical/src/test/regression-component.c new file mode 100644 index 00000000000..0babb579ba0 --- /dev/null +++ b/mozilla/calendar/libical/src/test/regression-component.c @@ -0,0 +1,580 @@ +#include "ical.h" +#include "regression.h" + +#include +extern int VERBOSE; + +void create_simple_component(void) +{ + + icalcomponent* calendar; + icalproperty *version, *bogus; + + /* Create calendar and add properties */ + calendar = icalcomponent_new(ICAL_VCALENDAR_COMPONENT); + + ok("create vcalendar component", (calendar!=NULL)); + + icalcomponent_add_property( + calendar, + icalproperty_new_version("2.0") + ); + + version = icalcomponent_get_first_property(calendar,ICAL_VERSION_PROPERTY); + ok("version property added", (version!=NULL)); + + bogus = icalcomponent_get_first_property(calendar,ICAL_DTSTART_PROPERTY); + ok("bogus dtstart not found", (bogus == NULL)); + + if (VERBOSE && calendar) + printf("%s\n",icalcomponent_as_ical_string(calendar)); + + icalcomponent_free(calendar); +} + + +static char* create_new_component_str = +"BEGIN:VCALENDAR\n" +"VERSION:2.0\n" +"PRODID:-//RDU Software//NONSGML HandCal//EN\n" +"BEGIN:VTIMEZONE\n" +"TZID:America/New_York\n" +"BEGIN:DAYLIGHT\n" +"DTSTART:20020606T212449\n" +"RDATE;VALUE=PERIOD:20020606T212449/20020607T012809\n" +"TZOFFSETFROM:-0500\n" +"TZOFFSETTO:-0400\n" +"TZNAME:EST\n" +"END:DAYLIGHT\n" +"BEGIN:STANDARD\n" +"DTSTART:20020606T212449\n" +"RDATE;VALUE=PERIOD:20020606T212449/20020607T012809\n" +"TZOFFSETFROM:-0400\n" +"TZOFFSETTO:-0500\n" +"TZNAME:EST\n" +"END:STANDARD\n" +"END:VTIMEZONE\n" +"BEGIN:VEVENT\n" +"DTSTAMP:20020606T212449\n" +"UID:guid-1.host1.com\n" +"ORGANIZER;ROLE=CHAIR:mrbig@host.com\n" +"ATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=TRUE;CUTYPE=GROUP:employee-A@host.com\n" +"DESCRIPTION:Project XYZ Review Meeting\n" +"CATEGORIES:MEETING\n" +"CLASS:PRIVATE\n" +"CREATED:20020606T212449\n" +"SUMMARY:XYZ Project Review\n" +"DTSTART;TZID=America/New_York:20020606T212449\n" +"DTEND;TZID=America/New_York:20020606T212449\n" +"LOCATION:1CP Conference Room 4350\n" +"END:VEVENT\n" +"END:VCALENDAR\n"; + + +/* Create a new component */ +void create_new_component() +{ + icalcomponent* calendar; + icalcomponent* timezone; + icalcomponent* tzc; + icalcomponent* event; + struct icaltimetype atime = icaltime_from_timet( 1023398689, 0); + struct icaldatetimeperiodtype rtime; + icalproperty* property; + char *calendar_as_string; + + rtime.period.start = icaltime_from_timet( 1023398689,0); + rtime.period.end = icaltime_from_timet( 1023409689,0); + rtime.period.end.hour++; + rtime.time = icaltime_null_time(); + + /* Create calendar and add properties */ + calendar = icalcomponent_new(ICAL_VCALENDAR_COMPONENT); + + + icalcomponent_add_property( + calendar, + icalproperty_new_version("2.0") + ); + + icalcomponent_add_property( + calendar, + icalproperty_new_prodid("-//RDU Software//NONSGML HandCal//EN") + ); + + /* Create a timezone object and add it to the calendar */ + + timezone = icalcomponent_new(ICAL_VTIMEZONE_COMPONENT); + + icalcomponent_add_property( + timezone, + icalproperty_new_tzid("America/New_York") + ); + + /* Add a sub-component of the timezone */ + tzc = icalcomponent_new(ICAL_XDAYLIGHT_COMPONENT); + + icalcomponent_add_property( + tzc, + icalproperty_new_dtstart(atime) + ); + + icalcomponent_add_property( + tzc, + icalproperty_new_rdate(rtime) + ); + + icalcomponent_add_property( + tzc, + icalproperty_new_tzoffsetfrom(-5*3600) + ); + + icalcomponent_add_property( + tzc, + icalproperty_new_tzoffsetto(-4*3600) + ); + + icalcomponent_add_property( + tzc, + icalproperty_new_tzname("EST") + ); + + icalcomponent_add_component(timezone,tzc); + + icalcomponent_add_component(calendar,timezone); + + /* Add a second subcomponent */ + tzc = icalcomponent_new(ICAL_XSTANDARD_COMPONENT); + + icalcomponent_add_property( + tzc, + icalproperty_new_dtstart(atime) + ); + + icalcomponent_add_property( + tzc, + icalproperty_new_rdate(rtime) + ); + + icalcomponent_add_property( + tzc, + icalproperty_new_tzoffsetfrom(-4*3600) + ); + + icalcomponent_add_property( + tzc, + icalproperty_new_tzoffsetto(-5*3600) + ); + + icalcomponent_add_property( + tzc, + icalproperty_new_tzname("EST") + ); + + icalcomponent_add_component(timezone,tzc); + + /* Add an event */ + + event = icalcomponent_new(ICAL_VEVENT_COMPONENT); + + icalcomponent_add_property( + event, + icalproperty_new_dtstamp(atime) + ); + + icalcomponent_add_property( + event, + icalproperty_new_uid("guid-1.host1.com") + ); + + /* add a property that has parameters */ + property = icalproperty_new_organizer("mrbig@host.com"); + + icalproperty_add_parameter( + property, + icalparameter_new_role(ICAL_ROLE_CHAIR) + ); + + icalcomponent_add_property(event,property); + + /* add another property that has parameters */ + property = icalproperty_new_attendee("employee-A@host.com"); + + icalproperty_add_parameter( + property, + icalparameter_new_role(ICAL_ROLE_REQPARTICIPANT) + ); + + icalproperty_add_parameter( + property, + icalparameter_new_rsvp(ICAL_RSVP_TRUE) + ); + + icalproperty_add_parameter( + property, + icalparameter_new_cutype(ICAL_CUTYPE_GROUP) + ); + + icalcomponent_add_property(event,property); + + + /* more properties */ + + icalcomponent_add_property( + event, + icalproperty_new_description("Project XYZ Review Meeting") + ); + + icalcomponent_add_property( + event, + icalproperty_new_categories("MEETING") + ); + + icalcomponent_add_property( + event, + icalproperty_new_class(ICAL_CLASS_PRIVATE) + ); + + icalcomponent_add_property( + event, + icalproperty_new_created(atime) + ); + + icalcomponent_add_property( + event, + icalproperty_new_summary("XYZ Project Review") + ); + + + property = icalproperty_new_dtstart(atime); + + icalproperty_add_parameter( + property, + icalparameter_new_tzid("America/New_York") + ); + + icalcomponent_add_property(event,property); + + + property = icalproperty_new_dtend(atime); + + icalproperty_add_parameter( + property, + icalparameter_new_tzid("America/New_York") + ); + + icalcomponent_add_property(event,property); + + icalcomponent_add_property( + event, + icalproperty_new_location("1CP Conference Room 4350") + ); + + icalcomponent_add_component(calendar,event); + + calendar_as_string = icalcomponent_as_ical_string(calendar); + + is("build large, complex component", + calendar_as_string, + create_new_component_str); + + if (VERBOSE && calendar) + printf("%s\n",icalcomponent_as_ical_string(calendar)); + + + if (calendar) + icalcomponent_free(calendar); + +} + +/* Create a new component, using the va_args list */ + +void create_new_component_with_va_args() +{ + + icalcomponent* calendar; + struct icaltimetype atime = icaltime_from_timet( time(0),0); + struct icaldatetimeperiodtype rtime; + + rtime.period.start = icaltime_from_timet( time(0),0); + rtime.period.end = icaltime_from_timet( time(0),0); + rtime.period.end.hour++; + rtime.time = icaltime_null_time(); + + calendar = + icalcomponent_vanew( + ICAL_VCALENDAR_COMPONENT, + icalproperty_new_version("2.0"), + icalproperty_new_prodid("-//RDU Software//NONSGML HandCal//EN"), + icalcomponent_vanew( + ICAL_VTIMEZONE_COMPONENT, + icalproperty_new_tzid("America/New_York"), + icalcomponent_vanew( + ICAL_XDAYLIGHT_COMPONENT, + icalproperty_new_dtstart(atime), + icalproperty_new_rdate(rtime), + icalproperty_new_tzoffsetfrom(-4.0), + icalproperty_new_tzoffsetto(-5.0), + icalproperty_new_tzname("EST"), + 0 + ), + icalcomponent_vanew( + ICAL_XSTANDARD_COMPONENT, + icalproperty_new_dtstart(atime), + icalproperty_new_rdate(rtime), + icalproperty_new_tzoffsetfrom(-5.0), + icalproperty_new_tzoffsetto(-4.0), + icalproperty_new_tzname("EST"), + 0 + ), + 0 + ), + icalcomponent_vanew( + ICAL_VEVENT_COMPONENT, + icalproperty_new_dtstamp(atime), + icalproperty_new_uid("guid-1.host1.com"), + icalproperty_vanew_organizer( + "mrbig@host.com", + icalparameter_new_role(ICAL_ROLE_CHAIR), + 0 + ), + icalproperty_vanew_attendee( + "employee-A@host.com", + icalparameter_new_role(ICAL_ROLE_REQPARTICIPANT), + icalparameter_new_rsvp(ICAL_RSVP_TRUE), + icalparameter_new_cutype(ICAL_CUTYPE_GROUP), + 0 + ), + icalproperty_new_description("Project XYZ Review Meeting"), + icalproperty_new_categories("MEETING"), + icalproperty_new_class(ICAL_CLASS_PUBLIC), + icalproperty_new_created(atime), + icalproperty_new_summary("XYZ Project Review"), + icalproperty_vanew_dtstart( + atime, + icalparameter_new_tzid("America/New_York"), + 0 + ), + icalproperty_vanew_dtend( + atime, + icalparameter_new_tzid("America/New_York"), + 0 + ), + icalproperty_new_location("1CP Conference Room 4350"), + 0 + ), + 0 + ); + + ok("creating a complex vcalendar", (calendar != NULL)); + if (VERBOSE && calendar) + printf("%s\n",icalcomponent_as_ical_string(calendar)); + + icalcomponent_free(calendar); + +} + +static void print_span(int c, struct icaltime_span span ){ + printf("span-->%d, %d\n", (int)span.start, (int)span.end); + if (span.start == 0) + printf("#%02d start: (empty)\n",c); + else + printf("#%02d start: %s\n",c,ical_timet_string(span.start)); + + if (span.end == 0) + printf(" end : (empty)\n"); + else + printf(" end : %s\n",ical_timet_string(span.end)); + +} + +/** Test icalcomponent_get_span() + * + */ +void test_icalcomponent_get_span() +{ + time_t tm1 = 973378800; /*Sat Nov 4 23:00:00 UTC 2000, + Sat Nov 4 15:00:00 PST 2000 */ + time_t tm2 = 973382400; /*Sat Nov 5 00:00:00 UTC 2000 + Sat Nov 4 16:00:00 PST 2000 */ + struct icaldurationtype dur; + struct icaltime_span span; + icalcomponent *c; + icaltimezone *azone, *bzone; + int tnum = 0; + + /** test 0 + * Direct assigning time_t means they will be interpreted as UTC + */ + span.start = tm1; + span.end = tm2; + if (VERBOSE) print_span(tnum++,span); + + /** test 1 + * We specify times in a timezone, the returned span is in UTC + */ + azone = icaltimezone_get_builtin_timezone("America/Los_Angeles"); + c = icalcomponent_vanew( + ICAL_VEVENT_COMPONENT, + icalproperty_vanew_dtstart( + icaltime_from_timet_with_zone(tm1,0,azone), + icalparameter_new_tzid("America/Los_Angeles"),0), + icalproperty_vanew_dtend( + icaltime_from_timet_with_zone(tm2,0,azone), + icalparameter_new_tzid("America/Los_Angeles"),0), + 0 + ); + + span = icalcomponent_get_span(c); + if (VERBOSE) print_span(tnum++,span); + int_is("America/Los_Angeles", span.start, 973407600); + icalcomponent_free(c); + + /** test 2 + * We specify times as floating, the returned span is in UTC + * with no conversion applied - so result should be as test 0 + */ + c = icalcomponent_vanew( + ICAL_VEVENT_COMPONENT, + icalproperty_vanew_dtstart(icaltime_from_timet(tm1,0),0), + icalproperty_vanew_dtend(icaltime_from_timet(tm2,0),0), + 0 + ); + + span = icalcomponent_get_span(c); + if (VERBOSE) print_span(tnum++,span); + int_is("floating time", span.start, tm1); + + icalcomponent_free(c); + + /** test 3 + * We specify times in a timezone, the returned span is in UTC + */ + azone = icaltimezone_get_builtin_timezone("America/New_York"); + c = icalcomponent_vanew( + ICAL_VEVENT_COMPONENT, + icalproperty_vanew_dtstart( + icaltime_from_timet_with_zone(tm1,0,azone), + icalparameter_new_tzid("America/New_York"),0), + icalproperty_vanew_dtend( + icaltime_from_timet_with_zone(tm2,0,azone), + icalparameter_new_tzid("America/New_York"),0), + 0 + ); + + span = icalcomponent_get_span(c); + if (VERBOSE) print_span(tnum++,span); + int_is("America/New_York", span.start, 973396800); + + icalcomponent_free(c); + + /** test 4 + * We specify times in two different timezones, the returned span + * is in UTC + */ + azone = icaltimezone_get_builtin_timezone("America/New_York"); + bzone = icaltimezone_get_builtin_timezone("America/Los_Angeles"); + c = icalcomponent_vanew( + ICAL_VEVENT_COMPONENT, + icalproperty_vanew_dtstart( + icaltime_from_timet_with_zone(tm1,0,azone), + icalparameter_new_tzid("America/New_York"),0), + icalproperty_vanew_dtend( + icaltime_from_timet_with_zone(tm2,0,bzone), + icalparameter_new_tzid("America/Los_Angeles"),0), + 0 + ); + + span = icalcomponent_get_span(c); + if (VERBOSE) print_span(tnum++,span); + int_is("America/New_York", span.start, 973396800); + + icalcomponent_free(c); + + /** test 5 + * We specify start time in a timezone and a duration, the returned span + * is in UTC + */ + azone = icaltimezone_get_builtin_timezone("America/Los_Angeles"); + memset(&dur,0,sizeof(dur)); + dur.minutes = 30; + c = icalcomponent_vanew( + ICAL_VEVENT_COMPONENT, + icalproperty_vanew_dtstart( + icaltime_from_timet_with_zone(tm1,0,azone), + icalparameter_new_tzid("America/Los_Angeles"),0), + icalproperty_new_duration(dur), + + 0 + ); + + span = icalcomponent_get_span(c); + if (VERBOSE) print_span(tnum++,span); + int_is("America/Los_Angeles w/ duration", span.end, 973409400); + + icalcomponent_free(c); + + icalerror_errors_are_fatal = 0; + /** test 6 + * We specify only start time, should return a null span with no error + */ + c = icalcomponent_vanew( + ICAL_VEVENT_COMPONENT, + icalproperty_new_dtstart(icaltime_from_timet(tm1,0)), + 0 + ); + + span = icalcomponent_get_span(c); + if (VERBOSE) print_span(tnum++,span); + int_is("null span", span.start, 0); + icalcomponent_free(c); + + /** test 7 + * We specify start and end date + */ + c = icalcomponent_vanew( + ICAL_VEVENT_COMPONENT, + icalproperty_new_dtstart(icaltime_from_timet(tm1,1)), + icalproperty_new_dtend(icaltime_from_timet(tm1,1)), + 0 + ); + + span = icalcomponent_get_span(c); + if (VERBOSE) print_span(tnum++,span); + int_is("UTC", span.start, 973296000); + icalcomponent_free(c); + + /** test 8 + * We specify start and end date + */ + c = icalcomponent_vanew( + ICAL_VEVENT_COMPONENT, + icalproperty_new_dtstart(icaltime_from_timet(tm1,1)), + icalproperty_new_dtend(icaltime_from_timet(tm2,1)), + 0 + ); + + span = icalcomponent_get_span(c); + int_is("UTC #2", span.start, 973296000); + if (VERBOSE) print_span(tnum++,span); + + icalcomponent_free(c); + + /** test 9 + * We specify start date + */ + c = icalcomponent_vanew( + ICAL_VEVENT_COMPONENT, + icalproperty_new_dtstart(icaltime_from_timet(tm1,1)), + 0 + ); + + span = icalcomponent_get_span(c); + if (VERBOSE) print_span(tnum++,span); + int_is("start date only", span.end, 973382399); + + icalcomponent_free(c); + + /* assert(icalerrno == ICAL_MALFORMEDDATA_ERROR); */ + icalerror_errors_are_fatal = 1; +} diff --git a/mozilla/calendar/libical/src/test/regression-cxx.cpp b/mozilla/calendar/libical/src/test/regression-cxx.cpp new file mode 100644 index 00000000000..e7605b85318 --- /dev/null +++ b/mozilla/calendar/libical/src/test/regression-cxx.cpp @@ -0,0 +1,137 @@ +#include +#include +#include +#include "icalparameter_cxx.h" +#include "icalproperty_cxx.h" +#include "vcomponent.h" +#include "regression.h" + +char content[] = "BEGIN:VCALENDAR\n\ +VERSION:2.1\n\ +BEGIN:VEVENT\n\ +UID:abcd12345\n\ +DTSTART:20020307T180000Z\n\ +DTEND:20020307T190000Z\n\ +SUMMARY:Important Meeting\n\ +END:VEVENT\n\ +END:VCALENDAR"; + +void test_cxx(void) +{ + ICalProperty *summProp = new ICalProperty(ICAL_SUMMARY_PROPERTY); + ICalProperty *startProp = new ICalProperty(ICAL_DTSTART_PROPERTY); + ICalProperty *endProp = new ICalProperty(ICAL_DTEND_PROPERTY); + ICalProperty *locationProp = new ICalProperty(ICAL_LOCATION_PROPERTY); + ICalProperty *descProp = new ICalProperty(ICAL_DESCRIPTION_PROPERTY); + + ok("Valid SUMMARY Property", (summProp != 0)); + ok("Valid DTSTART Property", (startProp != 0)); + ok("Valid DTEND Property", (endProp != 0)); + ok("Valid LOCATION Property", (locationProp != 0)); + ok("Valid DESCRIPTION Property", (descProp != 0)); + + struct icaltimetype starttime = icaltime_from_string("20011221T180000Z"); // UTC time ends in Z + struct icaltimetype endtime = icaltime_from_string("20020101T080000Z"); // UTC time ends in Z + + summProp->set_summary("jon said: change dir to c:\\rest\\test\\nest to get the file called \nthis should be in the next line."); + startProp->set_dtstart(starttime); + endProp->set_dtend(endtime); + locationProp->set_location("SF, California; Seattle, Washington"); + descProp->set_description("The best cities on the west coast, hit 'NO' if you don't agree!\n"); + + VEvent *vEvent = new VEvent(); + + ok("Create a new VEvent", (vEvent!=0)); + + vEvent->add_property(summProp); + vEvent->add_property(startProp); + vEvent->add_property(endProp); + vEvent->add_property(locationProp); + vEvent->add_property(descProp); + + // + is ("vEvent->get_summary()", + vEvent->get_summary(), + "jon said: change dir to c:\\rest\\test\\nest to get the file called \nthis should be in the next line."); + + is ("vEvent->get_dtstart()", + icaltime_as_ical_string(vEvent->get_dtstart()), + "20011221T180000Z"); + + is ("vEvent->get_dtend()", + icaltime_as_ical_string(vEvent->get_dtend()), + "20020101T080000Z"); + + ok ("vEvent->as_ical_string()", + (vEvent->as_ical_string() != 0)); + + if (VERBOSE) { + printf("Summary: %s\n", vEvent->get_summary()); + printf("DTSTART: %s\n", icaltime_as_ical_string(vEvent->get_dtstart())); + printf("DTEND: %s\n", icaltime_as_ical_string(vEvent->get_dtend())); + printf("LOCATION: %s\n", vEvent->get_location()); + printf("DESCRIPTION: %s\n", vEvent->get_description()); + + printf("vcomponent: %s", vEvent->as_ical_string()); + } + + VComponent ic(icalparser_parse_string((const char*)content)); + ok("Parsing component", (ic.is_valid())); + + if (VERBOSE) + printf("%s\n", ic.as_ical_string()); + + // component is wrapped within BEGIN:VCALENDAR END:VCALENDAR + // we need to unwrap it. + + VEvent* sub_ic = dynamic_cast(ic.get_first_component(ICAL_VEVENT_COMPONENT)); + + int_is("Getting VEvent subcomponent", + sub_ic->isa(), + ICAL_VEVENT_COMPONENT); + + while (sub_ic != NULL) { + if (VERBOSE) + printf("subcomponent: %s\n", sub_ic->as_ical_string()); + + sub_ic = dynamic_cast(ic.get_next_component(ICAL_VEVENT_COMPONENT)); + } + + VCalendar* cal = new VCalendar(); + VAgenda* vAgenda = new VAgenda(); + + ok("Create a new VCalendar object", (cal != 0)); + ok("Create a new VAgenda object", (vAgenda != 0)); + + ICalProperty* prop = new ICalProperty(ICAL_OWNER_PROPERTY); + prop->set_owner("fred@flintstone.net"); + vAgenda->add_property(prop); + + prop = new ICalProperty(ICAL_SUMMARY_PROPERTY); + prop->set_summary("CPMain"); + vAgenda->add_property(prop); + + prop = new ICalProperty(ICAL_TZID_PROPERTY); + prop->set_tzid("America/Los_Angeles"); + vAgenda->add_property(prop); + + cal->add_component(vAgenda); + + ok("Complex VCALENDAR/VAGENDA", (cal->as_ical_string() != 0)); + + if (VERBOSE) + printf("vAgenda: %s\n", cal->as_ical_string()); + + int caughtException = 0; + try { + string foo = "HFHFHFHF"; + VComponent v = VComponent(foo); + } catch (icalerrorenum err) { + if (err == ICAL_BADARG_ERROR) { + caughtException = 1; + } + } + int_is("Testing exception handling", caughtException, 1); + +} + diff --git a/mozilla/calendar/libical/src/test/regression-recur.c b/mozilla/calendar/libical/src/test/regression-recur.c new file mode 100644 index 00000000000..85f643e9645 --- /dev/null +++ b/mozilla/calendar/libical/src/test/regression-recur.c @@ -0,0 +1,194 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: regression-recur.c + CREATOR: ebusboom 8jun00 + + DESCRIPTION: + + (C) COPYRIGHT 1999 Eric Busboom + http://www.softwarestudio.org + + The contents of this file are subject to the Mozilla Public License + Version 1.0 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and + limitations under the License. + + ======================================================================*/ + +#include +#include /* for strdup */ +#include /* for malloc */ +#include /* for printf */ +#include /* for time() */ +#include /* for signal */ +#ifndef WIN32 +#include /* for alarm */ +#endif + +#include "ical.h" +#include "icalss.h" +#include "regression.h" + +extern int VERBOSE; + +#ifdef WIN32 +#define snprintf _snprintf +#define strcasecmp stricmp +#endif + + +static void sig_alrm(int i){ + fprintf(stderr,"Could not get lock on file\n"); + exit(1); +} + +/* Get the expected result about the purpose of the property*/ + +static int get_expected_numevents(icalcomponent *c) +{ + icalproperty *p; + const char* note = 0; + int num_events = 0; + + if(c != 0){ + for(p = icalcomponent_get_first_property(c,ICAL_X_PROPERTY); + p!= 0; + p = icalcomponent_get_next_property(c,ICAL_X_PROPERTY)){ + if(strcmp(icalproperty_get_x_name(p),"X-EXPECT-NUMEVENTS")==0){ + note = icalproperty_get_x(p); + } + } + } + + if(note != 0){ + num_events = atoi(note); + } + + + return num_events; +} + + + +static void recur_callback(icalcomponent *comp, + struct icaltime_span *span, + void *data) +{ + int *num_recurs = data; + + if (VERBOSE) { + printf("recur: %s", ctime(&span->start)); + printf(" %s", ctime(&span->end)); + } + *num_recurs = *num_recurs + 1; +} + +void test_recur_file() +{ + icalset *cin = 0; + struct icaltimetype next; + icalcomponent *itr; + icalproperty *desc, *dtstart, *rrule; + struct icalrecurrencetype recur; + icalrecur_iterator* ritr; + time_t tt; + char* file; + int num_recurs_found = 0; + + icalerror_set_error_state(ICAL_PARSE_ERROR, ICAL_ERROR_NONFATAL); + +#ifndef WIN32 + signal(SIGALRM,sig_alrm); +#endif + file = getenv("ICAL_RECUR_FILE"); + if (!file) + file = "../../test-data/recur.txt"; + +#ifndef WIN32 + alarm(15); /* to get file lock */ +#endif + cin = icalfileset_new(file); +#ifndef WIN32 + alarm(0); +#endif + + ok("opening file with recurring events", (cin!=NULL)); + assert(cin!=NULL); + + for (itr = icalfileset_get_first_component(cin); + itr != 0; + itr = icalfileset_get_next_component(cin)){ + int badcomp = 0; + int expected_events = 0; + char msg[128]; + + + struct icaltimetype start = icaltime_null_time(); + struct icaltimetype startmin = icaltime_from_timet(1,0); + struct icaltimetype endmax = icaltime_null_time(); + const char *desc_str = "malformed component"; + + desc = icalcomponent_get_first_property(itr,ICAL_DESCRIPTION_PROPERTY); + dtstart = icalcomponent_get_first_property(itr,ICAL_DTSTART_PROPERTY); + rrule = icalcomponent_get_first_property(itr,ICAL_RRULE_PROPERTY); + if (desc) { + desc_str = icalproperty_get_description(desc); + } + + ok((char*)desc_str, !(desc == 0 || dtstart == 0 || rrule == 0)); + + if (desc == 0 || dtstart == 0 || rrule == 0) { + badcomp = 1; + if (VERBOSE) { + printf("\n******** Error in input component ********\n"); + printf("The following component is malformed:\n %s\n", desc_str); + } + continue; + } + if (VERBOSE) { + printf("\n\n#### %s\n",desc_str); + printf("#### %s\n",icalvalue_as_ical_string(icalproperty_get_value(rrule))); + } + + recur = icalproperty_get_rrule(rrule); + start = icalproperty_get_dtstart(dtstart); + + ritr = icalrecur_iterator_new(recur,start); + + tt = icaltime_as_timet(start); + + if (VERBOSE) + printf("#### %s\n",ctime(&tt )); + + icalrecur_iterator_free(ritr); + + for(ritr = icalrecur_iterator_new(recur,start), + next = icalrecur_iterator_next(ritr); + !icaltime_is_null_time(next); + next = icalrecur_iterator_next(ritr)){ + + tt = icaltime_as_timet(next); + + if (VERBOSE) + printf(" %s",ctime(&tt )); + + } + + icalrecur_iterator_free(ritr); + num_recurs_found = 0; + expected_events = get_expected_numevents(itr); + + icalcomponent_foreach_recurrence(itr, startmin, endmax, + recur_callback, &num_recurs_found); + + sprintf(msg," expecting total of %d events", expected_events); + int_is(msg, num_recurs_found, expected_events); + } + + icalset_free(cin); +} diff --git a/mozilla/calendar/libical/src/test/regression-storage.c b/mozilla/calendar/libical/src/test/regression-storage.c new file mode 100644 index 00000000000..32ceb7b3c05 --- /dev/null +++ b/mozilla/calendar/libical/src/test/regression-storage.c @@ -0,0 +1,804 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: regression-storage.c + CREATOR: eric 03 April 1999 + + DESCRIPTION: + + $Id: regression-storage.c,v 1.3 2002/08/07 17:19:55 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 1999 Eric Busboom + http://www.softwarestudio.org + + The contents of this file are subject to the Mozilla Public License + Version 1.0 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and + limitations under the License. + + The original author is Eric Busboom + The original code is usecases.c + + + ======================================================================*/ + +#include +#include /* for strdup */ +#include /* for malloc */ +#include /* for printf */ +#include /* for time() */ + +#include "ical.h" +#include "icalss.h" +#include "regression.h" + +#define OUTPUT_FILE "filesetout.ics" + +/* define sample calendar struct */ +struct calendar { + int ID; + int total_size; + + /* offsets */ + int total_size_offset; + int vcalendar_size_offset; + int vcalendar_offset; + int title_size_offset; + int title_offset; + + /* data */ + int vcalendar_size; + char *vcalendar; + + int title_size; + char *title; + +}; + +int vcalendar_init(struct calendar **cal, char *vcalendar, char *title); + +#ifdef WITH_BDB +#include + +int get_title(DB *dbp, const DBT *pkey, const DBT *pdata, DBT *skey); +char * parse_vcalendar(const DBT *dbt) ; +char * pack_calendar(struct calendar *cal, int size); +struct calendar * unpack_calendar(char *str, int size); +#endif + +static char str[] = "BEGIN:VCALENDAR\n\ +PRODID:\"-//RDU Software//NONSGML HandCal//EN\"\n\ +VERSION:2.0\n\ +BEGIN:VTIMEZONE\n\ +TZID:US-Eastern\n\ +BEGIN:STANDARD\n\ +DTSTART:19981025T020000\n\ +RDATE:19981025T020000\n\ +TZOFFSETFROM:-0400\n\ +TZOFFSETTO:-0500\n\ +TZNAME:EST\n\ +END:STANDARD\n\ +BEGIN:DAYLIGHT\n\ +DTSTART:19990404T020000\n\ +RDATE:19990404T020000\n\ +TZOFFSETFROM:-0500\n\ +TZOFFSETTO:-0400\n\ +TZNAME:EDT\n\ +END:DAYLIGHT\n\ +END:VTIMEZONE\n\ +BEGIN:VEVENT\n\ +DTSTAMP:19980309T231000Z\n\ +UID:guid-1.host1.com\n\ +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com\n\ +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:MAILTO:employee-A@host.com\n\ +DESCRIPTION:Project XYZ Review Meeting\n\ +CATEGORIES:MEETING\n\ +CLASS:PUBLIC\n\ +CREATED:19980309T130000Z\n\ +SUMMARY:XYZ Project Review\n\ +DTSTART;TZID=US-Eastern:19980312T083000\n\ +DTEND;TZID=US-Eastern:19980312T093000\n\ +LOCATION:1CP Conference Room 4350\n\ +END:VEVENT\n\ +BEGIN:BOOGA\n\ +DTSTAMP:19980309T231000Z\n\ +X-LIC-FOO:Booga\n\ +DTSTOMP:19980309T231000Z\n\ +UID:guid-1.host1.com\n\ +END:BOOGA\n\ +END:VCALENDAR"; + +char str2[] = "BEGIN:VCALENDAR\n\ +PRODID:\"-//RDU Software//NONSGML HandCal//EN\"\n\ +VERSION:2.0\n\ +BEGIN:VEVENT\n\ +DTSTAMP:19980309T231000Z\n\ +UID:guid-1.host1.com\n\ +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com\n\ +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:MAILTO:employee-A@host.com\n\ +DESCRIPTION:Project XYZ Review Meeting\n\ +CATEGORIES:MEETING\n\ +CLASS:PUBLIC\n\ +CREATED:19980309T130000Z\n\ +SUMMARY:XYZ Project Review\n\ +DTSTART;TZID=US-Eastern:19980312T083000\n\ +DTEND;TZID=US-Eastern:19980312T093000\n\ +LOCATION:1CP Conference Room 4350\n\ +END:VEVENT\n\ +END:VCALENDAR\n\ +"; + + +void test_fileset_extended(void) +{ + icalset *cout; + int month = 0; + int count=0; + struct icaltimetype start, end; + icalcomponent *c,*clone, *itr; + icalsetiter iter; + + start = icaltime_from_timet( time(0),0); + end = start; + end.hour++; + + cout = icalfileset_new(OUTPUT_FILE); + ok("Opening output file", (cout != 0)); + assert(cout!=0); + + c = icalparser_parse_string(str2); + ok("Parsing str2", (c!=0)); + assert(c != 0); + + icalset_free(cout); + + /* Add data to the file */ + + for(month = 1; month < 10; month++){ + icalcomponent *event; + icalproperty *dtstart, *dtend; + + cout = icalfileset_new(OUTPUT_FILE); + ok("Opening output file", (cout != 0)); + assert(cout != 0); + + start.month = month; + end.month = month; + + clone = icalcomponent_new_clone(c); + ok("Making clone of output file", (clone!=0)); + assert(clone !=0); + + event = icalcomponent_get_first_component(clone,ICAL_VEVENT_COMPONENT); + ok("Getting first event from clone", (event!=0)); + assert(event != 0); + + dtstart = icalcomponent_get_first_property(event,ICAL_DTSTART_PROPERTY); + ok("find DTSTART", (dtstart !=0)); + assert(dtstart!=0); + + icalproperty_set_dtstart(dtstart,start); + + dtend = icalcomponent_get_first_property(event,ICAL_DTEND_PROPERTY); + ok("find DTEND", (dtend !=0)); + + assert(dtend!=0); + + icalproperty_set_dtend(dtend,end); + + icalfileset_add_component(cout,clone); + icalfileset_commit(cout); + + icalset_free(cout); + } + + /* Print them out */ + + cout = icalfileset_new(OUTPUT_FILE); + + ok("Opening output file", (cout != 0)); + assert(cout != 0); + + for (iter = icalfileset_begin_component(cout, ICAL_ANY_COMPONENT, 0); + icalsetiter_deref(&iter) != 0; icalsetiter_next(&iter)) { + icalcomponent *event; + icalproperty *dtstart, *dtend; + + itr = icalsetiter_deref(&iter); + count++; + + event = icalcomponent_get_first_component(itr,ICAL_VEVENT_COMPONENT); + + dtstart = icalcomponent_get_first_property(event,ICAL_DTSTART_PROPERTY); + dtend = icalcomponent_get_first_property(event,ICAL_DTEND_PROPERTY); + + if (VERBOSE) + printf("%d %s %s\n",count, icalproperty_as_ical_string(dtstart), + icalproperty_as_ical_string(dtend)); + + } + + /* Remove all of them */ + + icalset_free(cout); + + cout = icalfileset_new(OUTPUT_FILE); + ok("Opening output file", (cout!=0)); + assert(cout != 0); + + /* need to advance the iterator first before calling remove_componenet() */ + /* otherwise, iter will contain a "removed" component and icalsetiter_next(&iter) */ + /* will fail. */ + + iter = icalfileset_begin_component(cout, ICAL_ANY_COMPONENT, 0); + itr = icalsetiter_deref(&iter); + while (itr != 0) { + icalsetiter_next(&iter); + icalfileset_remove_component(cout, itr); + icalcomponent_free(itr); + itr = icalsetiter_deref(&iter); + } + + icalset_free(cout); + + /* Print them out again */ + + cout = icalfileset_new(OUTPUT_FILE); + ok("Opening output file", (cout != 0)); + assert(cout != 0); + count =0; + + for (itr = icalfileset_get_first_component(cout); + itr != 0; + itr = icalfileset_get_next_component(cout)){ + + icalcomponent *event; + icalproperty *dtstart, *dtend; + + count++; + + event = icalcomponent_get_first_component(itr,ICAL_VEVENT_COMPONENT); + + dtstart = icalcomponent_get_first_property(event,ICAL_DTSTART_PROPERTY); + dtend = icalcomponent_get_first_property(event,ICAL_DTEND_PROPERTY); + + printf("%d %s %s\n",count, icalproperty_as_ical_string(dtstart), + icalproperty_as_ical_string(dtend)); + + } + + icalset_free(cout); + icalcomponent_free(c); +} + + +#ifdef WITH_BDB + +/* + In this example, we're storing a calendar with several components + under the reference id "calendar_7286" and retrieving records based + on title, "month_1" through "month_10". We use a number of the + "optional" arguments to specify secondary indices, sub-databases + (i.e. having multiple databases residing within a single Berkeley + DB file), and keys for storage and retrieval. +*/ + +void test_bdbset() +{ + icalset *cout; + int month = 0; + int count=0; + int num_components=0; + int szdata_len=0; + int ret=0; + char *subdb, *szdata, *szpacked_data; + char uid[255]; + struct icaltimetype start, end; + icalcomponent *c,*clone, *itr; + DBT key, data; + DBC *dbcp; + + struct calendar *cal; + int cal_size; + + return; // for now... TODO fix these broken tests.. + + + + start = icaltime_from_timet( time(0),0); + end = start; + end.hour++; + + /* Note: as per the Berkeley DB ref pages: + * + * The database argument is optional, and allows applications to + * have multiple databases in a single file. Although no database + * argument needs to be specified, it is an error to attempt to + * open a second database in a file that was not initially created + * using a database name. + * + */ + + subdb = "calendar_id"; + + /* open database, using subdb */ + cout = icalbdbset_new("calendar.db", ICALBDB_EVENTS, DB_HASH, 0); + /* + sdbp = icalbdbset_secondary_open(dbp, + DATABASE, + "title", + get_title, + DB_HASH); + */ + + c = icalparser_parse_string(str2); + + assert(c != 0); + + /* Add data to the file */ + + for(month = 1; month < 10; month++){ + icalcomponent *event; + icalproperty *dtstart, *dtend, *location; + + /* retrieve data */ + // cout = icalbdbset_new(dbp, sdbp, NULL); + // assert(cout != 0); + + start.month = month; + end.month = month; + + clone = icalcomponent_new_clone(c); + assert(clone !=0); + event = icalcomponent_get_first_component(clone, + ICAL_VEVENT_COMPONENT); + assert(event != 0); + + dtstart = icalcomponent_get_first_property(event, + ICAL_DTSTART_PROPERTY); + assert(dtstart!=0); + icalproperty_set_dtstart(dtstart,start); + + dtend = icalcomponent_get_first_property(event,ICAL_DTEND_PROPERTY); + assert(dtend!=0); + icalproperty_set_dtend(dtend,end); + + location = icalcomponent_get_first_property(event, ICAL_LOCATION_PROPERTY); + assert(location!=0); + +#if 0 + /* change the uid to include the month */ + sprintf(uid, "%s_%d", icalcomponent_get_uid(clone), month); + icalcomponent_set_uid(clone, uid); +#endif + + icalbdbset_add_component(cout,clone); + + /* commit changes */ + icalbdbset_commit(cout); + + num_components = icalcomponent_count_components(clone, ICAL_ANY_COMPONENT); + + icalset_free(cout); + + } + + /* try out the cursor operations */ + memset(&key, 0, sizeof(DBT)); + memset(&data, 0, sizeof(DBT)); + +#if 0 + ret = icalbdbset_acquire_cursor(dbp, &dbcp); + ret = icalbdbset_get_first(dbcp, &key, &data); + ret = icalbdbset_get_next(dbcp, &key, &data); + ret = icalbdbset_get_last(dbcp, &key, &data); +#endif + /* Print them out */ + + for(month = 1, count=0; month < 10; month++){ + char *title; + + icalcomponent *event; + icalproperty *dtstart, *dtend; + + for (itr = icalbdbset_get_first_component(cout); + itr != 0; + itr = icalbdbset_get_next_component(cout)){ + + icalcomponent *event; + icalproperty *dtstart, *dtend; + + count++; + + event = icalcomponent_get_first_component(itr,ICAL_VEVENT_COMPONENT); + + dtstart = icalcomponent_get_first_property(event,ICAL_DTSTART_PROPERTY); + dtend = icalcomponent_get_first_property(event,ICAL_DTEND_PROPERTY); + + printf("%d %s %s\n",count, icalproperty_as_ical_string(dtstart), + icalproperty_as_ical_string(dtend)); + + } + icalset_free(cout); + } + + /* open database */ + // cout = icalbdbset_bdb_open("calendar.db", "title", DB_HASH, 0644); + /* sdbp = icalbdbset_secondary_open(dbp, + DATABASE, + "title", + get_title, + DB_HASH); + */ + /* Remove all of them */ + for(month = 1; month < 10; month++){ + for (itr = icalbdbset_get_first_component(cout); + itr != 0; + itr = icalbdbset_get_next_component(cout)){ + + icalbdbset_remove_component(cout, itr); + } + + icalbdbset_commit(cout); + icalset_free(cout); + + } + + /* Print them out again */ + + for(month = 1, count=0; month < 10; month++){ + char *title; + + icalcomponent *event; + icalproperty *dtstart, *dtend; + + for (itr = icalbdbset_get_first_component(cout); + itr != 0; + itr = icalbdbset_get_next_component(cout)){ + + icalcomponent *event; + icalproperty *dtstart, *dtend; + + count++; + + event = icalcomponent_get_first_component(itr,ICAL_VEVENT_COMPONENT); + + dtstart = icalcomponent_get_first_property(event,ICAL_DTSTART_PROPERTY); + dtend = icalcomponent_get_first_property(event,ICAL_DTEND_PROPERTY); + + printf("%d %s %s\n",count, icalproperty_as_ical_string(dtstart), + icalproperty_as_ical_string(dtend)); + + } + icalset_free(cout); + } +} +#endif + +int vcalendar_init(struct calendar **rcal, char *vcalendar, char *title) +{ + int vcalendar_size, title_size, total_size; + struct calendar *cal; + + if(vcalendar) + vcalendar_size = strlen(vcalendar); + else { + vcalendar = ""; + vcalendar_size = strlen(vcalendar); + } + + if(title) + title_size = strlen(title); + else { + title = ""; + title_size = strlen(title); + } + + total_size = sizeof(struct calendar) + vcalendar_size + title_size; + + if((cal = (struct calendar *)malloc(total_size))==NULL) + return 0; + memset(cal, 0, total_size); + + /* offsets */ + cal->total_size_offset = sizeof(int); + cal->vcalendar_size_offset = (sizeof(int) * 7); + cal->vcalendar_offset = cal->vcalendar_size_offset + sizeof(int); + cal->title_size_offset = cal->vcalendar_offset + vcalendar_size; + cal->title_offset = cal->title_size_offset + sizeof(int); + + /* sizes */ + cal->total_size = total_size; + cal->vcalendar_size = vcalendar_size; + cal->title_size = title_size; + + if (vcalendar && *vcalendar) + cal->vcalendar = strdup(vcalendar); + + if (title && *title) + cal->title = strdup(title); + + *rcal = cal; + + return 0; +} + +/* get_title -- extracts a secondary key (the vcalendar) + * from a primary key/data pair */ + +/* just create a random title for now */ +#ifdef WITH_BDB + +int get_title(DB *dbp, const DBT *pkey, const DBT *pdata, DBT *skey) +{ + icalcomponent *cl; + char title[255]; + + memset(skey, 0, sizeof(DBT)); + + cl = icalparser_parse_string((char *)pdata->data); + sprintf(title, "title_%s", icalcomponent_get_uid(cl)); + + skey->data = strdup(title); + skey->size = strlen(skey->data); + return (0); +} + +char * pack_calendar(struct calendar *cal, int size) +{ + char *str; + + if((str = (char *)malloc(sizeof(char) * size))==NULL) + return 0; + + /* ID */ + memcpy(str, &cal->ID, sizeof(cal->ID)); + + /* total_size */ + memcpy(str + cal->total_size_offset, + &cal->total_size, + sizeof(cal->total_size)); + + /* vcalendar_size */ + memcpy(str + cal->vcalendar_size_offset, + &cal->vcalendar_size, + sizeof(cal->vcalendar_size)); + + /* vcalendar */ + memcpy(str + cal->vcalendar_offset, + cal->vcalendar, + cal->vcalendar_size); + + /* title_size */ + memcpy(str + cal->title_size_offset, + &cal->title_size, + sizeof(cal->title_size)); + + /* title */ + memcpy(str + cal->title_offset, + cal->title, + cal->title_size); + + return str; +} + +struct calendar * unpack_calendar(char *str, int size) +{ + struct calendar *cal; + if((cal = (struct calendar *) malloc(size))==NULL) + return 0; + memset(cal, 0, size); + + /* offsets */ + cal->total_size_offset = sizeof(int); + cal->vcalendar_size_offset = (sizeof(int) * 7); + cal->vcalendar_offset = cal->vcalendar_size_offset + sizeof(int); + + /* ID */ + memcpy(&cal->ID, str, sizeof(cal->ID)); + + /* total_size */ + memcpy(&cal->total_size, + str + cal->total_size_offset, + sizeof(cal->total_size)); + + /* vcalendar_size */ + memcpy(&cal->vcalendar_size, + str + cal->vcalendar_size_offset, + sizeof(cal->vcalendar_size)); + + if((cal->vcalendar = (char *)malloc(sizeof(char) * + cal->vcalendar_size))==NULL) + return 0; + + /* vcalendar */ + memcpy(cal->vcalendar, + (char *)(str + cal->vcalendar_offset), + cal->vcalendar_size); + + cal->title_size_offset = cal->vcalendar_offset + cal->vcalendar_size; + cal->title_offset = cal->title_size_offset + sizeof(int); + + /* title_size */ + memcpy(&cal->title_size, + str + cal->title_size_offset, + sizeof(cal->title_size)); + + if((cal->title = (char *)malloc(sizeof(char) * + cal->title_size))==NULL) + return 0; + + /* title*/ + memcpy(cal->title, + (char *)(str + cal->title_offset), + cal->title_size); + + return cal; +} + +char * parse_vcalendar(const DBT *dbt) +{ + char *str; + struct calendar *cal; + + str = (char *)dbt->data; + cal = unpack_calendar(str, dbt->size); + + return cal->vcalendar; +} +#endif + +void test_dirset_extended(void) +{ + + icalcomponent *c; + icalgauge *gauge; + icalerrorenum error; + icalcomponent *itr; + icalset* cluster; + struct icalperiodtype rtime; + icalset *s = icaldirset_new("store"); + icalset *s2 = icaldirset_new("store-new"); + int i, count = 0; + + ok("Open dirset 'store'", (s!=0)); + assert(s != 0); + + rtime.start = icaltime_from_timet( time(0),0); + + cluster = icalfileset_new(OUTPUT_FILE); + + ok("Open fileset to duplicate 4 times", (cluster != 0)); + assert(cluster != 0); + +#define NUMCOMP 4 + + /* Duplicate every component in the cluster NUMCOMP times */ + + icalerror_clear_errno(); + + for (i = 1; i /* abort() */ +#include /* strcmp() */ + +static char ictt_str[1024]; +int VERBOSE = 0; +int QUIET = 0; + +const char* ical_timet_string(const time_t t) +{ + struct tm stm = *(gmtime(&t)); + + sprintf(ictt_str,"%02d-%02d-%02d %02d:%02d:%02d Z",stm.tm_year+1900, + stm.tm_mon+1,stm.tm_mday,stm.tm_hour,stm.tm_min,stm.tm_sec); + + return ictt_str; + +} + +const char* ictt_as_string(struct icaltimetype t) +{ + const char *zone = icaltimezone_get_tzid((icaltimezone *)t.zone); + + if (icaltime_is_utc(t)) + sprintf(ictt_str,"%02d-%02d-%02d %02d:%02d:%02d Z UTC", + t.year,t.month,t.day, t.hour,t.minute,t.second); + else + sprintf(ictt_str,"%02d-%02d-%02d %02d:%02d:%02d %s", + t.year,t.month,t.day, t.hour,t.minute,t.second, + zone == NULL? "(floating)": zone); + + return ictt_str; +} + +char* icaltime_as_ctime(struct icaltimetype t) +{ + time_t tt; + + tt = icaltime_as_timet(t); + sprintf(ictt_str,"%s",ctime(&tt)); + + return ictt_str; +} + + +/** This variable is used to control whether we core dump on errors **/ +static int die_on_errors = 0; +static int testnumber = 0; +static int failed = 0; +static int current_set = 0; + +static struct {int set; int test;} failed_tests[1024]; + +void die_on_errors_set(int val) { + die_on_errors = 1; +} + +void _ok(char* test_name, int success, char *file, int linenum, char *test) { + testnumber++; + + if (!QUIET || (QUIET && !success)) + printf("%sok %d - %s\n", (success)?"" : "not ", testnumber, test_name); + if (!success) { + failed_tests[failed].set = current_set; + failed_tests[failed].test = testnumber; + failed++; + + printf("# test failed: \"%s\"\n", test); + printf("# at: %s:%-d\n", file, linenum); + } + + if (die_on_errors == 1 && !success) { + abort(); + } +} + +void _is(char* test_name, const char* str1, const char* str2, char *file, int linenum) { + int diff; + + if (str1 == NULL || str2 == NULL) { + diff = 1; + } else { + diff = strcmp(str1, str2); + } + + if (!test_name) test_name = "()"; + + _ok(test_name, (diff==0), file, linenum, ""); + + if (diff) { + printf("# got: %s\n", str1 ? str1 : "(null)"); + printf("# expected: %s\n", str2 ? str2 : "(null)"); + } +} + +void _int_is(char* test_name, int i1, int i2, char *file, int linenum) { + _ok(test_name, (i1==i2), file, linenum, ""); + + if (i1!=i2) { + printf("# got: %d\n", i1); + printf("# expected: %d\n", i2); + } +} + + +void verbose(int newval) { + VERBOSE = newval; +} + +void test_start(int numtests) { + if (numtests) { + if (!QUIET) + printf("1..%-d\n", numtests); + } else { + if (!QUIET) + printf("1..\n"); + } +} + +void test_header(char *header, int set) { + if (!QUIET) + printf("########## %-40s (%d) ##########\n", header, set); + current_set = set; +} + +void test_end(void) { + int pct; + + if (failed) { + int i, oldset = 0; + + pct = ((testnumber - failed)*100)/testnumber; + printf("\n Failed %d/%d tests, %2d%% okay\n", failed, testnumber, pct); + printf("\n Failed tests:\n "); + for (i = 0; i < failed; i++) { + int this_set = failed_tests[i].set; + char *prefix = ""; + if (this_set != oldset) { + prefix = "\n "; + oldset = this_set; + } + + printf("%s%d/%d ", prefix, this_set, failed_tests[i].test); + } + printf("\n"); + + } else { + printf("\n All Tests Successful.\n"); + } +} + + +void test_run(char *test_name, + void (*test_fcn)(void), + int do_test, int headeronly) +{ + static int test_set = 1; + + if (headeronly || do_test == 0 || do_test == test_set) + test_header(test_name, test_set); + + if (!headeronly && (do_test==0 || do_test == test_set)) { + (*test_fcn)(); + if (!QUIET) + printf("\n"); + } + test_set++; +} diff --git a/mozilla/calendar/libical/src/test/regression.c b/mozilla/calendar/libical/src/test/regression.c new file mode 100644 index 00000000000..0dd6b352a50 --- /dev/null +++ b/mozilla/calendar/libical/src/test/regression.c @@ -0,0 +1,3667 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: regression.c + CREATOR: eric 03 April 1999 + + DESCRIPTION: + + $Id: regression.c,v 1.64 2003/02/17 15:26:18 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 1999 Eric Busboom + http://www.softwarestudio.org + + The contents of this file are subject to the Mozilla Public License + Version 1.0 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and + limitations under the License. + + The original author is Eric Busboom + The original code is regression.c + + + ======================================================================*/ + +#include "ical.h" +#include "icalss.h" +#include "icalvcal.h" + +#include "regression.h" + +#include +#include /* for strdup */ +#include /* for malloc */ +#include /* for printf */ +#include /* for time() */ +#ifndef WIN32 +#include /* for unlink, fork */ +#include /* For waitpid */ +#include /* for select */ +#else +#include +#endif +#include /* For wait pid */ + +#ifdef WIN32 +typedef int pid_t; +#endif + + +/* For GNU libc, strcmp appears to be a macro, so using strcmp in + assert results in incomprehansible assertion messages. This + eliminates the problem */ + +int regrstrcmp(const char* a, const char* b){ + return strcmp(a,b); +} + +/* This example creates and minipulates the ical object that appears + * in rfc 2445, page 137 */ + +static char str[] = "BEGIN:VCALENDAR\ +PRODID:\"-//RDU Software//NONSGML HandCal//EN\"\ +VERSION:2.0\ +BEGIN:VTIMEZONE\ +TZID:America/New_York\ +BEGIN:STANDARD\ +DTSTART:19981025T020000\ +RDATE:19981025T020000\ +TZOFFSETFROM:-0400\ +TZOFFSETTO:-0500\ +TZNAME:EST\ +END:STANDARD\ +BEGIN:DAYLIGHT\ +DTSTART:19990404T020000\ +RDATE:19990404T020000\ +TZOFFSETFROM:-0500\ +TZOFFSETTO:-0400\ +TZNAME:EDT\ +END:DAYLIGHT\ +END:VTIMEZONE\ +BEGIN:VEVENT\ +DTSTAMP:19980309T231000Z\ +UID:guid-1.host1.com\ +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com\ +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:MAILTO:employee-A@host.com\ +DESCRIPTION:Project XYZ Review Meeting\ +CATEGORIES:MEETING\ +CLASS:PUBLIC\ +CREATED:19980309T130000Z\ +SUMMARY:XYZ Project Review\ +DTSTART;TZID=America/New_York:19980312T083000\ +DTEND;TZID=America/New_York:19980312T093000\ +LOCATION:1CP Conference Room 4350\ +END:VEVENT\ +BEGIN:BOOGA\ +DTSTAMP:19980309T231000Z\ +X-LIC-FOO:Booga\ +DTSTOMP:19980309T231000Z\ +UID:guid-1.host1.com\ +END:BOOGA\ +END:VCALENDAR"; + + + +/* Return a list of all attendees who are required. */ + +static char** get_required_attendees(icalcomponent* event) +{ + icalproperty* p; + icalparameter* parameter; + + char **attendees; + int max = 10; + int c = 0; + + attendees = malloc(max * (sizeof (char *))); + + ok("event is non null", (event != 0)); + int_is("event is a VEVENT", icalcomponent_isa(event), ICAL_VEVENT_COMPONENT); + + for( + p = icalcomponent_get_first_property(event,ICAL_ATTENDEE_PROPERTY); + p != 0; + p = icalcomponent_get_next_property(event,ICAL_ATTENDEE_PROPERTY) + ) { + + parameter = icalproperty_get_first_parameter(p,ICAL_ROLE_PARAMETER); + + if ( icalparameter_get_role(parameter) == ICAL_ROLE_REQPARTICIPANT) + { + attendees[c++] = icalmemory_strdup(icalproperty_get_attendee(p)); + + if (c >= max) { + max *= 2; + attendees = realloc(attendees, max * (sizeof (char *))); + } + + } + } + + return attendees; +} + +/* If an attendee has a PARTSTAT of NEEDSACTION or has no PARTSTAT + parameter, change it to TENTATIVE. */ + +static void update_attendees(icalcomponent* event) +{ + icalproperty* p; + icalparameter* parameter; + + + assert(event != 0); + assert(icalcomponent_isa(event) == ICAL_VEVENT_COMPONENT); + + for( + p = icalcomponent_get_first_property(event,ICAL_ATTENDEE_PROPERTY); + p != 0; + p = icalcomponent_get_next_property(event,ICAL_ATTENDEE_PROPERTY) + ) { + + parameter = icalproperty_get_first_parameter(p,ICAL_PARTSTAT_PARAMETER); + + if (parameter == 0) { + + icalproperty_add_parameter( + p, + icalparameter_new_partstat(ICAL_PARTSTAT_TENTATIVE) + ); + + } else if (icalparameter_get_partstat(parameter) == ICAL_PARTSTAT_NEEDSACTION) { + + icalproperty_remove_parameter_by_ref(p,parameter); + + icalparameter_free(parameter); + + icalproperty_add_parameter( + p, + icalparameter_new_partstat(ICAL_PARTSTAT_TENTATIVE) + ); + } + + } +} + + +void test_values() +{ + icalvalue *v; + icalvalue *copy; + + v = icalvalue_new_caladdress("cap://value/1"); + + is("icalvalue_new_caladdress()", + icalvalue_get_caladdress(v), "cap://value/1"); + + icalvalue_set_caladdress(v,"cap://value/2"); + + is("icalvalue_set_caladdress()", + icalvalue_get_caladdress(v), "cap://value/2"); + + is("icalvalue_as_ical_string()", + icalvalue_as_ical_string(v), "cap://value/2"); + + copy = icalvalue_new_clone(v); + + is("icalvalue_new_clone()", + icalvalue_as_ical_string(copy), "cap://value/2"); + icalvalue_free(v); + icalvalue_free(copy); + + + v = icalvalue_new_boolean(1); + int_is("icalvalue_new_boolean(1)", icalvalue_get_boolean(v), 1); + icalvalue_set_boolean(v,2); + ok("icalvalue_set_boolean(2)", (2 == icalvalue_get_boolean(v))); + is("icalvalue_as_ical_string()", icalvalue_as_ical_string(v), "2"); + + copy = icalvalue_new_clone(v); + is("icalvalue_new_clone()", icalvalue_as_ical_string(copy), "2"); + + icalvalue_free(v); + icalvalue_free(copy); + + + v = icalvalue_new_x("test"); + is("icalvalue_new_x(test)", icalvalue_get_x(v), "test"); + icalvalue_set_x(v, "test2"); + is("icalvalue_set_x(test2)", icalvalue_get_x(v), "test2"); + is("icalvalue_as_ical_string()", icalvalue_as_ical_string(v), "test2"); + + copy = icalvalue_new_clone(v); + is("icalvalue_new_clone()", icalvalue_as_ical_string(copy), "test2"); + + icalvalue_free(v); + icalvalue_free(copy); + + + v = icalvalue_new_date(icaltime_from_timet( 1023404802,0)); + is("icalvalue_new_date()", icalvalue_as_ical_string(v), "20020606T230642"); + icalvalue_set_date(v,icaltime_from_timet( 1023404802-3600,0)); + is("icalvalue_set_date()",icalvalue_as_ical_string(v), "20020606T220642"); + + copy = icalvalue_new_clone(v); + is("icalvalue_new_clone()",icalvalue_as_ical_string(v), "20020606T220642"); + + icalvalue_free(v); + icalvalue_free(copy); + + + v = icalvalue_new(-1); + + ok("icalvalue_new(-1), Invalid type", (v == NULL)); + + if (v!=0) icalvalue_free(v); + + ok("ICAL_BOOLEAN_VALUE",(ICAL_BOOLEAN_VALUE == + icalparameter_value_to_value_kind(ICAL_VALUE_BOOLEAN))); + ok("ICAL_UTCOFFSET_VALUE",(ICAL_UTCOFFSET_VALUE == + icalparameter_value_to_value_kind(ICAL_VALUE_UTCOFFSET))); + ok("ICAL_RECUR_VALUE", (ICAL_RECUR_VALUE == + icalparameter_value_to_value_kind(ICAL_VALUE_RECUR))); + ok("ICAL_CALADDRESS_VALUE",(ICAL_CALADDRESS_VALUE == + icalparameter_value_to_value_kind(ICAL_VALUE_CALADDRESS))); + ok("ICAL_PERIOD_VALUE", (ICAL_PERIOD_VALUE == + icalparameter_value_to_value_kind(ICAL_VALUE_PERIOD))); + ok("ICAL_BINARY_VALUE",(ICAL_BINARY_VALUE == + icalparameter_value_to_value_kind(ICAL_VALUE_BINARY))); + ok("ICAL_TEXT_VALUE",(ICAL_TEXT_VALUE == + icalparameter_value_to_value_kind(ICAL_VALUE_TEXT))); + ok("ICAL_DURATION_VALUE",(ICAL_DURATION_VALUE == + icalparameter_value_to_value_kind(ICAL_VALUE_DURATION))); + ok("ICAL_INTEGER_VALUE", + (ICAL_INTEGER_VALUE == icalparameter_value_to_value_kind(ICAL_VALUE_INTEGER))); + + ok("ICAL_URI_VALUE", + (ICAL_URI_VALUE == icalparameter_value_to_value_kind(ICAL_VALUE_URI))); + ok("ICAL_FLOAT_VALUE",(ICAL_FLOAT_VALUE == + icalparameter_value_to_value_kind(ICAL_VALUE_FLOAT))); + ok("ICAL_X_VALUE",(ICAL_X_VALUE == + icalparameter_value_to_value_kind(ICAL_VALUE_X))); + ok("ICAL_DATETIME_VALUE",(ICAL_DATETIME_VALUE == + icalparameter_value_to_value_kind(ICAL_VALUE_DATETIME))); + ok("ICAL_DATE_TIME",(ICAL_DATE_VALUE == + icalparameter_value_to_value_kind(ICAL_VALUE_DATE))); + + /* v = icalvalue_new_caladdress(0); + + printf("Bad string: %p\n",v); + + if (v!=0) icalvalue_free(v); */ + + icalerror_set_error_state(ICAL_MALFORMEDDATA_ERROR, ICAL_ERROR_NONFATAL); + v = icalvalue_new_from_string(ICAL_RECUR_VALUE,"D2 #0"); + ok("illegal recur value", (v == 0)); + + v = icalvalue_new_from_string(ICAL_TRIGGER_VALUE,"Gonk"); + ok("illegal trigger value", (v == 0)); + + v = icalvalue_new_from_string(ICAL_REQUESTSTATUS_VALUE,"Gonk"); + ok("illegal requeststatus value", (v == 0)); + + icalerror_set_error_state(ICAL_MALFORMEDDATA_ERROR, ICAL_ERROR_DEFAULT); +} + + +void test_properties() +{ + icalproperty *prop; + icalparameter *param; + + icalproperty *clone; + char test_cn_str[128] = ""; + char *test_cn_str_good = "A Common Name 1A Common Name 2A Common Name 3A Common Name 4"; + char *test_ical_str_good = "COMMENT;CN=A Common Name 1;CN=A Common Name 2;CN=A Common Name 3;CN=A \n Common Name 4:Another Comment\n"; + + prop = icalproperty_vanew_comment( + "Another Comment", + icalparameter_new_cn("A Common Name 1"), + icalparameter_new_cn("A Common Name 2"), + icalparameter_new_cn("A Common Name 3"), + icalparameter_new_cn("A Common Name 4"), + 0); + + for(param = icalproperty_get_first_parameter(prop,ICAL_ANY_PARAMETER); + param != 0; + param = icalproperty_get_next_parameter(prop,ICAL_ANY_PARAMETER)) { + const char *str = icalparameter_get_cn(param); + if (VERBOSE) printf("Prop parameter: %s\n",icalparameter_get_cn(param)); + strcat(test_cn_str, str); + } + is("fetching parameters", test_cn_str, test_cn_str_good); + + if (VERBOSE) printf("Prop value: %s\n",icalproperty_get_comment(prop)); + is("icalproperty_get_comment()", + icalproperty_get_comment(prop), "Another Comment"); + + if (VERBOSE) printf("As iCAL string:\n %s\n",icalproperty_as_ical_string(prop)); + + is("icalproperty_as_ical_string()", + icalproperty_as_ical_string(prop), test_ical_str_good); + + clone = icalproperty_new_clone(prop); + + if (VERBOSE) printf("Clone:\n %s\n",icalproperty_as_ical_string(prop)); + is("icalproperty_new_clone()", + icalproperty_as_ical_string(prop), test_ical_str_good); + + icalproperty_free(clone); + icalproperty_free(prop); + + prop = icalproperty_new(-1); + + ok("test icalproperty_new() with invalid type (-1)", + (prop == NULL)); + + if (prop!=0) icalproperty_free(prop); +} + +void test_utf8() +{ + icalproperty *prop; + char *utf8text = "aáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaá"; + char *test_ical_str_good = "DESCRIPTION:\n" +" aáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaá\n" +" óaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóaáóa\n" +" áóaáóaáóaáóaáóaáóaáóaáóaáóaá\n"; + + prop = icalproperty_new_description(utf8text); + + is("icalproperty_as_ical_string()", + icalproperty_as_ical_string(prop), test_ical_str_good); + icalproperty_free(prop); +} + + + +void test_parameters() +{ + icalparameter *p; + int i; + int enums[] = {ICAL_CUTYPE_INDIVIDUAL,ICAL_CUTYPE_RESOURCE,ICAL_FBTYPE_BUSY,ICAL_PARTSTAT_NEEDSACTION,ICAL_ROLE_NONPARTICIPANT,ICAL_XLICCOMPARETYPE_LESSEQUAL,ICAL_XLICERRORTYPE_MIMEPARSEERROR,-1}; + + char* str1 = "A Common Name"; + + p = icalparameter_new_cn(str1); + + is("icalparameter_new_cn()", icalparameter_get_cn(p), str1); + is("icalparameter_as_ical_string()" ,icalparameter_as_ical_string(p),"CN=A Common Name"); + + icalparameter_free(p); + + p = icalparameter_new_from_string("PARTSTAT=ACCEPTED"); + ok("PARTSTAT_PARAMETER", (icalparameter_isa(p) == ICAL_PARTSTAT_PARAMETER)); + ok("PARTSTAT_ACCEPTED", (icalparameter_get_partstat(p) == ICAL_PARTSTAT_ACCEPTED)); + + icalparameter_free(p); + + p = icalparameter_new_from_string("ROLE=CHAIR"); + + ok("ROLE_PARAMETER", (icalparameter_isa(p) == ICAL_ROLE_PARAMETER)); + ok("ROLE_CHAIR", (icalparameter_get_partstat(p) == ICAL_ROLE_CHAIR)); + + icalparameter_free(p); + + p = icalparameter_new_from_string("PARTSTAT=X-FOO"); + ok("PARTSTAT_PARAMETER", (icalparameter_isa(p) == ICAL_PARTSTAT_PARAMETER)); + ok("PARTSTAT_X", (icalparameter_get_partstat(p) == ICAL_PARTSTAT_X)); + + icalparameter_free(p); + + p = icalparameter_new_from_string("X-PARAM=X-FOO"); + ok("X_PARAMETER", (icalparameter_isa(p) == ICAL_X_PARAMETER)); + + icalparameter_free(p); + + + for (i=0;enums[i] != -1; i++){ + if (VERBOSE) printf("%s\n",icalparameter_enum_to_string(enums[i])); + ok("test paramter enums", + (icalparameter_string_to_enum(icalparameter_enum_to_string(enums[i]))==enums[i])); + } +} + + +char *good_child = +"BEGIN:VEVENT\n" +"VERSION:2.0\n" +"DESCRIPTION:This is an event\n" +"COMMENT;CN=A Common Name 1;CN=A Common Name 2;CN=A Common Name 3;CN=A \n" +" Common Name 4:Another Comment\n" +"X-LIC-ERROR;X-LIC-ERRORTYPE=COMPONENT-PARSE-ERROR:This is only a test\n" +"END:VEVENT\n"; + +void test_components() +{ + icalcomponent* c; + icalcomponent* child; + + c = icalcomponent_vanew( + ICAL_VCALENDAR_COMPONENT, + icalproperty_new_version("2.0"), + icalproperty_new_prodid("-//RDU Software//NONSGML HandCal//EN"), + icalproperty_vanew_comment( + "A Comment", + icalparameter_new_cn("A Common Name 1"), + 0), + icalcomponent_vanew( + ICAL_VEVENT_COMPONENT, + icalproperty_new_version("2.0"), + icalproperty_new_description("This is an event"), + icalproperty_vanew_comment( + "Another Comment", + icalparameter_new_cn("A Common Name 1"), + icalparameter_new_cn("A Common Name 2"), + icalparameter_new_cn("A Common Name 3"), + icalparameter_new_cn("A Common Name 4"), + 0), + icalproperty_vanew_xlicerror( + "This is only a test", + icalparameter_new_xlicerrortype(ICAL_XLICERRORTYPE_COMPONENTPARSEERROR), + 0), + + 0 + ), + 0 + ); + + if (VERBOSE) + printf("Original Component:\n%s\n\n",icalcomponent_as_ical_string(c)); + + child = icalcomponent_get_first_component(c,ICAL_VEVENT_COMPONENT); + + ok("test icalcomponent_get_first_component()", + (child != NULL)); + + if (VERBOSE) + printf("Child Component:\n%s\n\n",icalcomponent_as_ical_string(child)); + + is("test results of child component", + icalcomponent_as_ical_string(child), good_child); + + icalcomponent_free(c); +} + + +void test_memory() +{ + size_t bufsize = 256; + int i; + char *p; + + char S1[] = "1) When in the Course of human events, "; + char S2[] = "2) it becomes necessary for one people to dissolve the political bands which have connected them with another, "; + char S3[] = "3) and to assume among the powers of the earth, "; + char S4[] = "4) the separate and equal station to which the Laws of Nature and of Nature's God entitle them, "; + char S5[] = "5) a decent respect to the opinions of mankind requires that they "; + char S6[] = "6) should declare the causes which impel them to the separation. "; + char S7[] = "7) We hold these truths to be self-evident, "; + char S8[] = "8) that all men are created equal, "; + +/* char S9[] = "9) that they are endowed by their Creator with certain unalienable Rights, "; + char S10[] = "10) that among these are Life, Liberty, and the pursuit of Happiness. "; + char S11[] = "11) That to secure these rights, Governments are instituted among Men, "; + char S12[] = "12) deriving their just powers from the consent of the governed. "; +*/ + + + char *f, *b1, *b2, *b3, *b4, *b5, *b6, *b7, *b8; + +#define BUFSIZE 1024 + + f = icalmemory_new_buffer(bufsize); + p = f; + b1 = icalmemory_tmp_buffer(BUFSIZE); + strcpy(b1, S1); + icalmemory_append_string(&f, &p, &bufsize, b1); + + b2 = icalmemory_tmp_buffer(BUFSIZE); + strcpy(b2, S2); + icalmemory_append_string(&f, &p, &bufsize, b2); + + b3 = icalmemory_tmp_buffer(BUFSIZE); + strcpy(b3, S3); + icalmemory_append_string(&f, &p, &bufsize, b3); + + b4 = icalmemory_tmp_buffer(BUFSIZE); + strcpy(b4, S4); + icalmemory_append_string(&f, &p, &bufsize, b4); + + b5 = icalmemory_tmp_buffer(BUFSIZE); + strcpy(b5, S5); + icalmemory_append_string(&f, &p, &bufsize, b5); + + b6 = icalmemory_tmp_buffer(BUFSIZE); + strcpy(b6, S6); + icalmemory_append_string(&f, &p, &bufsize, b6); + + b7 = icalmemory_tmp_buffer(BUFSIZE); + strcpy(b7, S7); + icalmemory_append_string(&f, &p, &bufsize, b7); + + b8 = icalmemory_tmp_buffer(BUFSIZE); + strcpy(b8, S8); + icalmemory_append_string(&f, &p, &bufsize, b8); + + + if (VERBOSE) { + printf("1: %p %s \n",b1,b1); + printf("2: %p %s\n",b2,b2); + printf("3: %p %s\n",b3,b3); + printf("4: %p %s\n",b4,b4); + printf("5: %p %s\n",b5,b5); + printf("6: %p %s\n",b6,b6); + printf("7: %p %s\n",b7,b7); + printf("8: %p %s\n",b8,b8); + + + printf("Final: %s\n", f); + + printf("Final buffer size: %d\n",bufsize); + } + + ok("final buffer size == 806", (bufsize == 806)); + + free(f); + + bufsize = 4; + + f = icalmemory_new_buffer(bufsize); + + memset(f,0,bufsize); + p = f; + + icalmemory_append_char(&f, &p, &bufsize, 'a'); + if (VERBOSE) printf("Char-by-Char buffer: %s\n", f); + + icalmemory_append_char(&f, &p, &bufsize, 'b'); + if (VERBOSE) printf("Char-by-Char buffer: %s\n", f); + icalmemory_append_char(&f, &p, &bufsize, 'c'); + if (VERBOSE) printf("Char-by-Char buffer: %s\n", f); + icalmemory_append_char(&f, &p, &bufsize, 'd'); + if (VERBOSE) printf("Char-by-Char buffer: %s\n", f); + icalmemory_append_char(&f, &p, &bufsize, 'e'); + if (VERBOSE) printf("Char-by-Char buffer: %s\n", f); + icalmemory_append_char(&f, &p, &bufsize, 'f'); + if (VERBOSE) printf("Char-by-Char buffer: %s\n", f); + icalmemory_append_char(&f, &p, &bufsize, 'g'); + if (VERBOSE) printf("Char-by-Char buffer: %s\n", f); + icalmemory_append_char(&f, &p, &bufsize, 'h'); + if (VERBOSE) printf("Char-by-Char buffer: %s\n", f); + icalmemory_append_char(&f, &p, &bufsize, 'i'); + if (VERBOSE) printf("Char-by-Char buffer: %s\n", f); + icalmemory_append_char(&f, &p, &bufsize, 'j'); + if (VERBOSE) printf("Char-by-Char buffer: %s\n", f); + icalmemory_append_char(&f, &p, &bufsize, 'a'); + if (VERBOSE) printf("Char-by-Char buffer: %s\n", f); + icalmemory_append_char(&f, &p, &bufsize, 'b'); + if (VERBOSE) printf("Char-by-Char buffer: %s\n", f); + icalmemory_append_char(&f, &p, &bufsize, 'c'); + if (VERBOSE) printf("Char-by-Char buffer: %s\n", f); + icalmemory_append_char(&f, &p, &bufsize, 'd'); + if (VERBOSE) printf("Char-by-Char buffer: %s\n", f); + icalmemory_append_char(&f, &p, &bufsize, 'e'); + if (VERBOSE) printf("Char-by-Char buffer: %s\n", f); + icalmemory_append_char(&f, &p, &bufsize, 'f'); + if (VERBOSE) printf("Char-by-Char buffer: %s\n", f); + icalmemory_append_char(&f, &p, &bufsize, 'g'); + if (VERBOSE) printf("Char-by-Char buffer: %s\n", f); + icalmemory_append_char(&f, &p, &bufsize, 'h'); + if (VERBOSE) printf("Char-by-Char buffer: %s\n", f); + icalmemory_append_char(&f, &p, &bufsize, 'i'); + if (VERBOSE) printf("Char-by-Char buffer: %s\n", f); + icalmemory_append_char(&f, &p, &bufsize, 'j'); + if (VERBOSE) printf("Char-by-Char buffer: %s\n", f); + + free(f); + + for(i=0; i<100; i++){ + f = icalmemory_tmp_buffer(bufsize); + + assert(f!=0); + + memset(f,0,bufsize); + sprintf(f,"%d",i); + } +} + + +void test_dirset() +{ + icalcomponent *c; + icalgauge *gauge; + icalerrorenum error; + icalcomponent *next, *itr; + icalset* cluster; + icalset *s, *s2; + struct icalperiodtype rtime; + int i; + int count = 0; + + mkdir("store", 0755); + mkdir("store-new", 0755); + + s = icaldirset_new("store"); + s2 = icaldirset_new("store-new"); + + ok("opening 'store' dirset", s!=NULL); + ok("opening 'store-new' dirset", s2!=NULL); + + rtime.start = icaltime_from_timet( time(0),0); + + cluster = icalfileset_new("clusterin.vcd"); + + if (cluster == 0){ + printf("Failed to create cluster: %s\n",icalerror_strerror(icalerrno)); + } + +#define NUMCOMP 4 + + /* Duplicate every component in the cluster NUMCOMP times */ + + icalerror_clear_errno(); + + for (i = 1; i */ +void test_recur_parameter_bug(){ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include + + static const char test_icalcomp_str[] = +"BEGIN:VEVENT\n" +"RRULE;X-EVOLUTION-ENDDATE=20030209T081500:FREQ=DAILY;COUNT=10;INTERVAL=6\n" +"END:VEVENT\n"; + + icalcomponent *icalcomp; + icalproperty *prop; + struct icalrecurrencetype recur; + int n_errors; + char *str; + + icalcomp = icalparser_parse_string ((char *) test_icalcomp_str); + ok("icalparser_parse_string()",(icalcomp!=NULL)); + assert(icalcomp!=NULL); + + str = icalcomponent_as_ical_string(icalcomp); + is("parsed matches original", str, (char*)test_icalcomp_str); + if (VERBOSE) printf("%s\n\n",str); + + n_errors = icalcomponent_count_errors (icalcomp); + int_is("no parse errors", n_errors, 0); + + if (n_errors) { + icalproperty *p; + + for (p = icalcomponent_get_first_property (icalcomp, + ICAL_XLICERROR_PROPERTY); + p; + p = icalcomponent_get_next_property (icalcomp, + ICAL_XLICERROR_PROPERTY)) { + const char *str; + + str = icalproperty_as_ical_string (p); + fprintf (stderr, "error: %s\n", str); + } + } + + prop = icalcomponent_get_first_property (icalcomp, ICAL_RRULE_PROPERTY); + ok("get RRULE property", (prop!=NULL)); + assert(prop!=NULL); + + recur = icalproperty_get_rrule (prop); + + if (VERBOSE) printf("%s\n",icalrecurrencetype_as_string(&recur)); + + icalcomponent_free(icalcomp); +} + + +void test_duration() +{ + struct icaldurationtype d; + + d = icaldurationtype_from_string("PT8H30M"); + if (VERBOSE) printf("%s\n",icaldurationtype_as_ical_string(d)); + int_is("PT8H30M", icaldurationtype_as_int(d), 30600); + + d = icaldurationtype_from_string("-PT8H30M"); + if (VERBOSE) printf("%s\n",icaldurationtype_as_ical_string(d)); + int_is("-PT8H30M", icaldurationtype_as_int(d), -30600); + + d = icaldurationtype_from_string("PT10H10M10S"); + if (VERBOSE) printf("%s\n",icaldurationtype_as_ical_string(d)); + int_is("PT10H10M10S", icaldurationtype_as_int(d), 36610); + + d = icaldurationtype_from_string("P7W"); + if (VERBOSE) printf("%s\n",icaldurationtype_as_ical_string(d)); + int_is("P7W", icaldurationtype_as_int(d), 4233600); + + d = icaldurationtype_from_string("P2DT8H30M"); + if (VERBOSE) printf("%s\n",icaldurationtype_as_ical_string(d)); + int_is("P2DT8H30M", icaldurationtype_as_int(d), 203400); + + icalerror_errors_are_fatal = 0; + + /* Test conversion of bad input */ + + d = icaldurationtype_from_int(1314000); + if (VERBOSE) printf("%s %d\n",icaldurationtype_as_ical_string(d), + icaldurationtype_as_int(d)); + is("1314000", icaldurationtype_as_ical_string(d), "P15DT5H"); + + d = icaldurationtype_from_string("P2W1DT5H"); + if (VERBOSE) printf("%s %d\n",icaldurationtype_as_ical_string(d), + icaldurationtype_as_int(d)); + int_is("P15DT5H", icaldurationtype_as_int(d), 0); + + d = icaldurationtype_from_string("P-2DT8H30M"); + if (VERBOSE) printf("%s\n",icaldurationtype_as_ical_string(d)); + int_is("P-2DT8H30M", icaldurationtype_as_int(d), 0); + + d = icaldurationtype_from_string("P7W8H"); + if (VERBOSE) printf("%s\n",icaldurationtype_as_ical_string(d)); + int_is("P7W8H", icaldurationtype_as_int(d), 0); + + d = icaldurationtype_from_string("T10H"); + if (VERBOSE) printf("%s\n",icaldurationtype_as_ical_string(d)); + int_is("T10H", icaldurationtype_as_int(d), 0); + + icalerror_errors_are_fatal = 1; + + d = icaldurationtype_from_int(4233600); + if (VERBOSE) printf("%s\n",icaldurationtype_as_ical_string(d)); + is("P7W", + icaldurationtype_as_ical_string(d), "P7W"); + + d = icaldurationtype_from_int(4424400); + if (VERBOSE) printf("%s\n",icaldurationtype_as_ical_string(d)); + is("P51DT5H", + icaldurationtype_as_ical_string(d), "P51DT5H"); +} + + +void test_period() +{ + struct icalperiodtype p; + icalvalue *v; + char *str; + + str = "19971015T050000Z/PT8H30M"; + p = icalperiodtype_from_string(str); + is(str, icalperiodtype_as_ical_string(p),str); + + + str = "19971015T050000Z/19971015T060000Z"; + p = icalperiodtype_from_string(str); + is(str, icalperiodtype_as_ical_string(p),str); + + + str = "19970101T120000/PT3H"; + + v = icalvalue_new_from_string(ICAL_PERIOD_VALUE,str); + is(str, icalvalue_as_ical_string(v), str); + + icalvalue_free(v); +} + + +void test_strings(){ + icalvalue *v; + + v = icalvalue_new_text("foo;bar;bats"); + if (VERBOSE) + printf("%s\n",icalvalue_as_ical_string(v)); + + is("test encoding of 'foo;bar;bats'", + "foo\\;bar\\;bats", icalvalue_as_ical_string(v)); + + icalvalue_free(v); + + + v = icalvalue_new_text("foo\\;b\nar\\;ba\tts"); + if (VERBOSE) + printf("%s\n",icalvalue_as_ical_string(v)); + + is("test encoding of 'foo\\\\;b\\nar\\\\;ba\\tts'", + "foo\\\\\\;b\\nar\\\\\\;ba\\tts", icalvalue_as_ical_string(v)); + + icalvalue_free(v); +} + + +void test_requeststat() +{ + icalproperty *p; + icalrequeststatus s; + struct icalreqstattype st, st2; + char temp[1024]; + + s = icalenum_num_to_reqstat(2,1); + + ok("icalenum_num_to_reqstat(2,1)",(s == ICAL_2_1_FALLBACK_STATUS)); + + ok("icalenum_reqstat_major()",(icalenum_reqstat_major(s) == 2)); + ok("icalenum_reqstat_minor()",(icalenum_reqstat_minor(s) == 1)); + + is ("icalenum_reqstat_desc() -> 2.1", icalenum_reqstat_desc(s), + "Success but fallback taken on one or more property values."); + + st.code = s; + st.debug = "booga"; + st.desc = 0; + + is("icalreqstattype_as_string()", + icalreqstattype_as_string(st), + "2.1;Success but fallback taken on one or more property values.;booga"); + + st.desc = " A non-standard description"; + + is("icalreqstattype_as_string() w/ non standard description", + icalreqstattype_as_string(st), + "2.1; A non-standard description;booga"); + + st.desc = 0; + + sprintf(temp,"%s\n",icalreqstattype_as_string(st)); + + + st2 = icalreqstattype_from_string("2.1;Success but fallback taken on one or more property values.;booga"); + + /* printf("%d -- %d -- %s -- %s\n",*/ + ok("icalenum_reqstat_major()",(icalenum_reqstat_major(st2.code) == 2)); + ok("icalenum_reqstat_minor()",(icalenum_reqstat_minor(st2.code) == 1)); + is("icalenum_reqstat_desc", + icalenum_reqstat_desc(st2.code), + "Success but fallback taken on one or more property values."); + + st2 = icalreqstattype_from_string("2.1;Success but fallback taken on one or more property values.;booga"); + if (VERBOSE) printf("%s\n",icalreqstattype_as_string(st2)); + + st2 = icalreqstattype_from_string("2.1;Success but fallback taken on one or more property values.;"); + if (VERBOSE) printf("%s\n",icalreqstattype_as_string(st2)); + + st2 = icalreqstattype_from_string("2.1;Success but fallback taken on one or more property values."); + if (VERBOSE) printf("%s\n",icalreqstattype_as_string(st2)); + + st2 = icalreqstattype_from_string("2.1;"); + if (VERBOSE) printf("%s\n",icalreqstattype_as_string(st2)); + + is("st2 test again", + icalreqstattype_as_string(st2), + "2.1;Success but fallback taken on one or more property values."); + + st2 = icalreqstattype_from_string("2.1"); + is("st2 test #3", + icalreqstattype_as_string(st2), + "2.1;Success but fallback taken on one or more property values."); + + p = icalproperty_new_from_string("REQUEST-STATUS:2.1;Success but fallback taken on one or more property values.;booga"); + + is("icalproperty_new_from_string()", + icalproperty_as_ical_string(p), + "REQUEST-STATUS:2.1;Success but fallback taken on one or more property \n values.;booga\n"); + + icalerror_set_error_state(ICAL_MALFORMEDDATA_ERROR,ICAL_ERROR_NONFATAL); + st2 = icalreqstattype_from_string("16.4"); + + ok("test unknown code", (st2.code == ICAL_UNKNOWN_STATUS)); + + st2 = icalreqstattype_from_string("1."); + + ok("test malformed code", (st2.code == ICAL_UNKNOWN_STATUS)); + icalerror_set_error_state(ICAL_MALFORMEDDATA_ERROR,ICAL_ERROR_DEFAULT); + + icalproperty_free(p); +} + + +void test_dtstart(){ + + struct icaltimetype tt,tt2; + + icalproperty *p; + + + tt = icaltime_from_string("19970101"); + + int_is("19970101 is a date", tt.is_date, 1); + + p = icalproperty_new_dtstart(tt); + + if (VERBOSE) printf("%s\n",icalvalue_kind_to_string(icalvalue_isa(icalproperty_get_value(p)))); + + ok("ICAL_DATE_VALUE", (icalvalue_isa(icalproperty_get_value(p))==ICAL_DATE_VALUE)); + + tt2 = icalproperty_get_dtstart(p); + int_is("converted date is date", tt2.is_date, 1); + + if (VERBOSE) printf("%s\n",icalproperty_as_ical_string(p)); + + tt = icaltime_from_string("19970101T103000"); + + int_is("19970101T103000 is not a date", tt.is_date, 0); + + icalproperty_free(p); + + p = icalproperty_new_dtstart(tt); + + if (VERBOSE) printf("%s\n",icalvalue_kind_to_string(icalvalue_isa(icalproperty_get_value(p)))); + ok("ICAL_DATETIME_VALUE", (icalvalue_isa(icalproperty_get_value(p))==ICAL_DATETIME_VALUE)); + + tt2 = icalproperty_get_dtstart(p); + int_is("converted datetime is not date", tt2.is_date, 0); + + if (VERBOSE) printf("%s\n",icalproperty_as_ical_string(p)); + + icalproperty_free(p); +} + +void do_test_time(char* zone) +{ + struct icaltimetype ictt, icttutc, icttzone, icttdayl, + icttla, icttny,icttphoenix, icttlocal, icttnorm; + time_t tt,tt2, tt_p200; + int offset_tz; + icalvalue *v; + short day_of_week,start_day_of_week, day_of_year; + icaltimezone *azone, *utczone; + char msg[256]; + + icalerror_errors_are_fatal = 0; + + azone = icaltimezone_get_builtin_timezone(zone); + utczone = icaltimezone_get_utc_timezone(); + + /* Test new API */ + if (VERBOSE) printf("\n---> From time_t \n"); + + tt = 1025127869; /* stick with a constant... */ + + if (VERBOSE) printf("Orig : %s\n",ical_timet_string(tt)); + if (VERBOSE) printf("\nicaltime_from_timet(tt,0) (DEPRECATED)\n"); + + ictt = icaltime_from_timet(tt, 0); + + is("icaltime_from_timet(1025127869) as UTC", ictt_as_string(ictt), + "2002-06-26 21:44:29 (floating)"); + + ictt = icaltime_from_timet_with_zone(tt, 0, NULL); + is("Floating time from time_t", + ictt_as_string(ictt), "2002-06-26 21:44:29 (floating)"); + + ictt = icaltime_from_timet_with_zone(tt, 0, azone); + ok("icaltime_from_timet_with_zone(tt,0,zone) as zone", + strncmp(ictt_as_string(ictt), "2002-06-26 21:44:29", 19)==0); + + ictt = icaltime_from_timet_with_zone(tt, 0, utczone); + + is("icaltime_from_timet_with_zone(tt,0,utc)", ictt_as_string(ictt), + "2002-06-26 21:44:29 Z UTC"); + + if (VERBOSE) printf("\n---> Convert from floating \n"); + + ictt = icaltime_from_timet_with_zone(tt, 0, NULL); + icttutc = icaltime_convert_to_zone(ictt, utczone); + + is("Convert from floating to UTC", + ictt_as_string(icttutc), + "2002-06-26 21:44:29 Z UTC"); + + icttzone = icaltime_convert_to_zone(ictt, azone); + + ok("Convert from floating to zone", + (strncmp(ictt_as_string(icttzone), "2002-06-26 21:44:29", 19)==0)); + + tt2 = icaltime_as_timet(icttzone); + + if (VERBOSE) printf("\n---> Convert from UTC \n"); + + ictt = icaltime_from_timet_with_zone(tt, 0, utczone); + icttutc = icaltime_convert_to_zone(ictt, utczone); + + is("Convert from UTC to UTC", + ictt_as_string(icttutc), + "2002-06-26 21:44:29 Z UTC"); + + icttzone = icaltime_convert_to_zone(ictt, azone); + + ok("Convert from UTC to zone (test year/mon only..)", + (strncmp(ictt_as_string(icttzone), "2002-06-26 21:44:29", 7)==0)); + + tt2 = icaltime_as_timet(icttzone); + + if (VERBOSE) printf("No conversion: %s\n", ical_timet_string(tt2)); + + ok("No conversion at all (test year/mon only)", + (strncmp(ical_timet_string(tt2), "2002-06-26 21:44:29 Z",7) == 0)); + + tt2 = icaltime_as_timet_with_zone(icttzone, utczone); + if (VERBOSE) printf("Back to UTC : %s\n", ical_timet_string(tt2)); + + ok("test time conversion routines",(tt==tt2)); + + if (VERBOSE) printf("\n---> Convert from zone \n"); + ictt = icaltime_from_timet_with_zone(tt, 0, azone); + icttzone = icaltime_convert_to_zone(ictt, azone); + + if (VERBOSE) + printf("To zone : %s\n", ictt_as_string(icttzone)); + icttutc = icaltime_convert_to_zone(ictt, utczone); + + if (VERBOSE) + printf("To UTC : %s\n", ictt_as_string(icttutc)); + tt2 = icaltime_as_timet(icttutc); + + if (VERBOSE) + printf("No conversion: %s\n", ical_timet_string(tt2)); + + tt2 = icaltime_as_timet_with_zone(icttutc, azone); + + if (VERBOSE) + printf("Back to zone : %s\n", ical_timet_string(tt2)); + + ok("test time conversion, round 2", (tt==tt2)); + + ictt = icaltime_from_string("20001103T183030Z"); + + tt = icaltime_as_timet(ictt); + + ok("test icaltime -> time_t for 20001103T183030Z", (tt==973276230)); + /* Fri Nov 3 10:30:30 PST 2000 in PST + Fri Nov 3 18:30:30 PST 2000 in UTC */ + + if (VERBOSE) { + printf(" Normalize \n"); + printf("Orig (ical) : %s\n", ictt_as_string(ictt)); + } + icttnorm = ictt; + icttnorm.second -= 60 * 60 * 24 * 5; + icttnorm = icaltime_normalize(icttnorm); + + if (VERBOSE) + printf("-5d in sec : %s\n", ictt_as_string(icttnorm)); + icttnorm.day += 60; + icttnorm = icaltime_normalize(icttnorm); + + if (VERBOSE) + printf("+60 d : %s\n", ictt_as_string(icttnorm)); + + /** add test case here.. **/ + + if (VERBOSE) + printf("\n As time_t \n"); + + tt2 = icaltime_as_timet(ictt); + + if (VERBOSE) { + printf("20001103T183030Z (timet): %s\n",ical_timet_string(tt2)); + printf("20001103T183030Z : %s\n",ictt_as_string(ictt)); + } + + /** this test is bogus **/ + ok("test normalization", (tt2 == tt)); + + icttlocal = icaltime_convert_to_zone(ictt, azone); + tt2 = icaltime_as_timet(icttlocal); + if (VERBOSE) { + printf("20001103T183030 (timet): %s\n",ical_timet_string(tt2)); + printf("20001103T183030 : %s\n",ictt_as_string(icttlocal)); + } + + offset_tz = -icaltimezone_get_utc_offset_of_utc_time(azone, &ictt, 0); /* FIXME */ + if (VERBOSE) + printf("offset_tz : %d\n",offset_tz); + + ok("test utc offset", (tt-tt2 == offset_tz)); + + /* FIXME with the new API, it's not very useful */ + icttlocal = ictt; + icaltimezone_convert_time(&icttlocal, + icaltimezone_get_utc_timezone(), + icaltimezone_get_builtin_timezone(zone)); + + if (VERBOSE) + printf("As local : %s\n", ictt_as_string(icttlocal)); + + if (VERBOSE) printf("\n Convert to and from lib c \n"); + + if (VERBOSE) printf("System time is: %s\n",ical_timet_string(tt)); + + v = icalvalue_new_datetime(ictt); + + if (VERBOSE) + printf("System time from libical: %s\n",icalvalue_as_ical_string(v)); + + icalvalue_free(v); + + tt2 = icaltime_as_timet(ictt); + + if (VERBOSE) + printf("Converted back to libc: %s\n",ical_timet_string(tt2)); + + if (VERBOSE) printf("\n Incrementing time \n"); + + icttnorm = ictt; + + icttnorm.year++; + tt2 = icaltime_as_timet(icttnorm); + if (VERBOSE) + printf("Add a year: %s\n",ical_timet_string(tt2)); + + icttnorm.month+=13; + tt2 = icaltime_as_timet(icttnorm); + if (VERBOSE) + printf("Add 13 months: %s\n",ical_timet_string(tt2)); + + icttnorm.second+=90; + tt2 = icaltime_as_timet(icttnorm); + if (VERBOSE) + printf("Add 90 seconds: %s\n",ical_timet_string(tt2)); + + if (VERBOSE) printf("\n Day Of week \n"); + + day_of_week = icaltime_day_of_week(ictt); + start_day_of_week = icaltime_start_doy_of_week(ictt); + day_of_year = icaltime_day_of_year(ictt); + + sprintf(msg, "Testing day of week %d", day_of_week); + int_is(msg, day_of_week, 6); + + sprintf(msg, "Testing day of year %d",day_of_year); + int_is(msg, day_of_year, 308); + + sprintf(msg, "Week started on doy of %d", start_day_of_week); + int_is(msg, start_day_of_week , 303); + + if (VERBOSE) printf("\n TimeZone Conversions \n"); + +/* + icttla = ictt; + icaltimezone_convert_time(&icttla, + icaltimezone_get_utc_timezone(), + lazone); +*/ + icttla = icaltime_convert_to_zone(ictt, + icaltimezone_get_builtin_timezone("America/Los_Angeles")); + + int_is("Converted hour in America/Los_Angeles is 10", icttla.hour, 10); + + icttutc = icaltime_convert_to_zone(icttla,icaltimezone_get_utc_timezone()); + + ok("America/Los_Angeles local time is 2000-11-03 10:30:30", + (strncmp(ictt_as_string(icttla), "2000-11-03 10:30:30", 19)==0)); + + ok("Test conversion back to UTC",(icaltime_compare(icttutc, ictt) == 0)); + + icttny = icaltime_convert_to_zone(ictt, + icaltimezone_get_builtin_timezone("America/New_York")); + + icttphoenix = icaltime_convert_to_zone(ictt, + icaltimezone_get_builtin_timezone("America/Phoenix")); + + if (VERBOSE) { + printf("Orig (ctime): %s\n", ical_timet_string(tt) ); + printf("Orig (ical) : %s\n", ictt_as_string(ictt)); + printf("UTC : %s\n", ictt_as_string(icttutc)); + printf("Los Angeles : %s\n", ictt_as_string(icttla)); + printf("Phoenix : %s\n", ictt_as_string(icttphoenix)); + printf("New York : %s\n", ictt_as_string(icttny)); + } + /** @todo Check results for Phoenix here?... **/ + + /* Daylight savings test for New York */ + if (VERBOSE) { + printf("\n Daylight Savings \n"); + + printf("Orig (ctime): %s\n", ical_timet_string(tt) ); + printf("Orig (ical) : %s\n", ictt_as_string(ictt)); + printf("NY : %s\n", ictt_as_string(icttny)); + } + + ok("Converted time in zone America/New_York is 2000-11-03 13:30:30", + (strncmp(ictt_as_string(icttny),"2000-11-03 13:30:30",19)==0)); + + tt_p200 = tt + 200 * 24 * 60 * 60 ; /* Add 200 days */ + + icttdayl = icaltime_from_timet_with_zone(tt_p200,0, + icaltimezone_get_utc_timezone()); + icttny = icaltime_convert_to_zone(icttdayl, + icaltimezone_get_builtin_timezone("America/New_York")); + + if (VERBOSE) { + printf("Orig +200d : %s\n", ical_timet_string(tt_p200) ); + printf("NY+200D : %s\n", ictt_as_string(icttny)); + } + + ok("Converted time +200d in zone America/New_York is 2001-05-22 14:30:30", + (strncmp(ictt_as_string(icttny),"2001-05-22 14:30:30",19)==0)); + + + /* Daylight savings test for Los Angeles */ + + icttla = icaltime_convert_to_zone(ictt, + icaltimezone_get_builtin_timezone("America/Los_Angeles")); + + if (VERBOSE) { + printf("\nOrig (ctime): %s\n", ical_timet_string(tt) ); + printf("Orig (ical) : %s\n", ictt_as_string(ictt)); + printf("LA : %s\n", ictt_as_string(icttla)); + } + + ok("Converted time in zone America/Los_Angeles is 2000-11-03 10:30:30", + (strncmp(ictt_as_string(icttla),"2000-11-03 10:30:30",19)==0)); + + + icttla = icaltime_convert_to_zone(icttdayl, + icaltimezone_get_builtin_timezone("America/Los_Angeles")); + + if (VERBOSE) { + printf("Orig +200d : %s\n", ical_timet_string(tt_p200) ); + printf("LA+200D : %s\n", ictt_as_string(icttla)); + } + + ok("Converted time +200d in zone America/Los_Angeles is 2001-05-22 11:30:30", + (strncmp(ictt_as_string(icttla),"2001-05-22 11:30:30",19)==0)); + + + icalerror_errors_are_fatal = 1; +} + +void test_iterators() +{ + icalcomponent *c,*inner,*next; + icalcompiter i; + char vevent_list[64] = ""; + char remaining_list[64] = ""; + + char *vevent_list_good = "12347"; + char *remaining_list_good = "568910"; + + int nomore = 1; + + c= icalcomponent_vanew( + ICAL_VCALENDAR_COMPONENT, + icalcomponent_vanew(ICAL_VEVENT_COMPONENT, + icalproperty_new_version("1"),0), + icalcomponent_vanew(ICAL_VEVENT_COMPONENT, + icalproperty_new_version("2"),0), + icalcomponent_vanew(ICAL_VEVENT_COMPONENT, + icalproperty_new_version("3"),0), + icalcomponent_vanew(ICAL_VEVENT_COMPONENT, + icalproperty_new_version("4"),0), + icalcomponent_vanew(ICAL_VTODO_COMPONENT, + icalproperty_new_version("5"),0), + icalcomponent_vanew(ICAL_VJOURNAL_COMPONENT, + icalproperty_new_version("6"),0), + icalcomponent_vanew(ICAL_VEVENT_COMPONENT, + icalproperty_new_version("7"),0), + icalcomponent_vanew(ICAL_VJOURNAL_COMPONENT, + icalproperty_new_version("8"),0), + icalcomponent_vanew(ICAL_VJOURNAL_COMPONENT, + icalproperty_new_version("9"),0), + icalcomponent_vanew(ICAL_VJOURNAL_COMPONENT, + icalproperty_new_version("10"),0), + 0); + + /* List all of the VEVENTS */ + + for(i = icalcomponent_begin_component(c,ICAL_VEVENT_COMPONENT); + icalcompiter_deref(&i)!= 0; icalcompiter_next(&i)){ + + icalcomponent *this = icalcompiter_deref(&i); + + icalproperty *p = + icalcomponent_get_first_property(this, + ICAL_VERSION_PROPERTY); + const char* s = icalproperty_get_version(p); + + strcat(vevent_list, s); + } + is("iterate through VEVENTS in a component", + vevent_list, vevent_list_good); + + /* Delete all of the VEVENTS */ + /* reset iterator */ + icalcomponent_get_first_component(c,ICAL_VEVENT_COMPONENT); + + while((inner=icalcomponent_get_current_component(c)) != 0 ){ + if(icalcomponent_isa(inner) == ICAL_VEVENT_COMPONENT){ + icalcomponent_remove_component(c,inner); + icalcomponent_free(inner); + } else { + icalcomponent_get_next_component(c,ICAL_VEVENT_COMPONENT); + } + } + + /* List all remaining components */ + for(inner = icalcomponent_get_first_component(c,ICAL_ANY_COMPONENT); + inner != 0; + inner = icalcomponent_get_next_component(c,ICAL_ANY_COMPONENT)){ + + + icalproperty *p = + icalcomponent_get_first_property(inner,ICAL_VERSION_PROPERTY); + + const char* s = icalproperty_get_version(p); + + strcat(remaining_list, s); + } + + is("iterate through remaining components", + remaining_list, remaining_list_good); + + + /* Remove all remaining components */ + for(inner = icalcomponent_get_first_component(c,ICAL_ANY_COMPONENT); + inner != 0; + inner = next){ + + icalcomponent *this; + icalproperty *p; + const char* s; + next = icalcomponent_get_next_component(c,ICAL_ANY_COMPONENT); + + p=icalcomponent_get_first_property(inner,ICAL_VERSION_PROPERTY); + s = icalproperty_get_version(p); + + icalcomponent_remove_component(c,inner); + + this = icalcomponent_get_current_component(c); + + if(this != 0){ + p=icalcomponent_get_first_property(this,ICAL_VERSION_PROPERTY); + s = icalproperty_get_version(p); + } + + icalcomponent_free(inner); + } + + + /* List all remaining components */ + for(inner = icalcomponent_get_first_component(c,ICAL_ANY_COMPONENT); + inner != 0; + inner = icalcomponent_get_next_component(c,ICAL_ANY_COMPONENT)){ + + icalproperty *p = + icalcomponent_get_first_property(inner,ICAL_VERSION_PROPERTY); + + const char* s = icalproperty_get_version(p); + + if (s) + nomore = 0; + } + + ok("test if any components remain after deleting the rest", + nomore == 1); + + icalcomponent_free(c); +} + + +void test_time() +{ + char *zones[6] = { "America/Los_Angeles","America/New_York","Europe/London","Asia/Shanghai", NULL}; + + int i; + + do_test_time(0); + + for(i = 0; zones[i] != NULL; i++){ + + if (VERBOSE) printf(" ######### Timezone: %s ############\n",zones[i]); + + do_test_time(zones[i]); + + } + +} + + +void test_icalset() +{ + icalcomponent *c; + + icalset* f = icalset_new_file("2446.ics"); + icalset* d = icalset_new_dir("outdir"); + + assert(f!=0); + assert(d!=0); + + for(c = icalset_get_first_component(f); + c != 0; + c = icalset_get_next_component(f)){ + + icalcomponent *clone; + + clone = icalcomponent_new_clone(c); + + icalset_add_component(d,clone); + + printf(" class %d\n",icalclassify(c,0,"user")); + + } + + icalset_free(f); + icalset_free(d); +} + + +icalcomponent* icalclassify_find_overlaps(icalset* set, icalcomponent* comp); + +void test_overlaps() +{ + icalcomponent *cset,*c; + icalset *set; + time_t tm1 = 973378800; /*Sat Nov 4 23:00:00 UTC 2000, + Sat Nov 4 15:00:00 PST 2000 */ + time_t tm2 = 973382400; /*Sat Nov 5 00:00:00 UTC 2000 + Sat Nov 4 16:00:00 PST 2000 */ + + time_t hh = 1800; /* one half hour */ + + set = icalset_new_file("../../test-data/overlaps.ics"); + + c = icalcomponent_vanew( + ICAL_VEVENT_COMPONENT, + icalproperty_vanew_dtstart(icaltime_from_timet(tm1-hh,0),0), + icalproperty_vanew_dtend(icaltime_from_timet(tm2-hh,0),0), + 0 + ); + + cset = icalclassify_find_overlaps(set,c); + ok("TODO find overlaps 1", (cset != NULL)); + + if (VERBOSE && cset) printf("%s\n",icalcomponent_as_ical_string(cset)); + + if (cset) icalcomponent_free(cset); + if (c) icalcomponent_free(c); + + + c = icalcomponent_vanew( + ICAL_VEVENT_COMPONENT, + icalproperty_vanew_dtstart(icaltime_from_timet(tm1-hh,0),0), + icalproperty_vanew_dtend(icaltime_from_timet(tm2,0),0), + 0 + ); + + cset = icalclassify_find_overlaps(set,c); + + ok("TODO find overlaps 1", cset != NULL); + if (VERBOSE && cset) printf("%s\n",icalcomponent_as_ical_string(cset)); + + if (cset) icalcomponent_free(cset); + if (c) icalcomponent_free(c); + + c = icalcomponent_vanew( + ICAL_VEVENT_COMPONENT, + icalproperty_vanew_dtstart(icaltime_from_timet(tm1+5*hh,0),0), + icalproperty_vanew_dtend(icaltime_from_timet(tm2+5*hh,0),0), + 0 + ); + + cset = icalclassify_find_overlaps(set,c); + ok("TODO find overlaps 1", cset != NULL); + if (VERBOSE && cset) printf("%s\n",icalcomponent_as_ical_string(cset)); + + if (set) icalset_free(set); + if (cset) icalcomponent_free(cset); + if (c) icalcomponent_free(c); +} + + + +void test_fblist() +{ + icalspanlist *sl, *new_sl; + icalset* set = icalset_new_file("../../test-data/spanlist.ics"); + struct icalperiodtype period; + icalcomponent *comp; + int * foo; + int i; + + sl = icalspanlist_new(set, + icaltime_from_string("19980101T000000Z"), + icaltime_from_string("19980108T000000Z")); + + ok("open ../../test-data/spanlist.ics", (set!=NULL)); + assert(set!=NULL); + + if (VERBOSE) printf("Restricted spanlist\n"); + if (VERBOSE) icalspanlist_dump(sl); + + period= icalspanlist_next_free_time(sl, + icaltime_from_string("19970801T120000")); + + is("Next Free time start 19970801T120000", icaltime_as_ical_string(period.start), "19970801T120000"); + is("Next Free time end 19980101T000000", icaltime_as_ical_string(period.end), "19980101T000000"); + + period= icalspanlist_next_free_time(sl, period.end); + + is("Next Free time start 19980101T010000", icaltime_as_ical_string(period.start), "19980101T010000"); + is("Next Free time end 19980102T010000", icaltime_as_ical_string(period.end), "19980102T010000"); + + if (VERBOSE) printf("%s\n", + icalcomponent_as_ical_string(icalspanlist_as_vfreebusy(sl, + "a@foo.com", + "b@foo.com") + )); + + foo = icalspanlist_as_freebusy_matrix(sl,3600); + + for (i=0; foo[i] != -1; i++); /* find number entries */ + + int_is("Calculating freebusy hourly matrix", i, (7*24)); + + if (VERBOSE) { + for (i=0; foo[i] != -1; i++) { + printf("%d", foo[i]); + if ((i % 24) == 23) + printf("\n"); + } + printf("\n\n"); + } + + + free(foo); + + foo = icalspanlist_as_freebusy_matrix(sl,3600*24); + + ok("Calculating daily freebusy matrix", (foo!=NULL)); + + { + char out_str[80] = ""; + char *strp = out_str; + + for (i=0; foo[i]!=-1; i++){ + sprintf(strp, "%d", foo[i]); + strp++; + } + is("Checking freebusy validity", out_str, "1121110"); + } + if (VERBOSE) { + for (i=0; foo[i] != -1; i++) { + printf("%d", foo[i]); + if ((i % 7) == 6) + printf("\n"); + } + printf("\n\n"); + } + free(foo); + + icalspanlist_free(sl); + + + if (VERBOSE) printf("Unrestricted spanlist\n"); + + sl = icalspanlist_new(set, + icaltime_from_string("19970324T120000Z"), + icaltime_null_time()); + + ok("add 19970324T120000Z to spanlist", (sl!=NULL)); + + if (VERBOSE) printf("Restricted spanlist\n"); + if (VERBOSE) icalspanlist_dump(sl); + + period= icalspanlist_next_free_time(sl, + icaltime_from_string("19970801T120000Z")); + + + is("Next Free time start 19980101T010000", + icaltime_as_ical_string(period.start), + "19980101T010000"); + + is("Next Free time end 19980102T010000", + icaltime_as_ical_string(period.end), + "19980102T010000"); + + comp = icalspanlist_as_vfreebusy(sl, "a@foo.com", "b@foo.com"); + + ok("Calculating VFREEBUSY component", (comp != NULL)); + if (VERBOSE) printf("%s\n", icalcomponent_as_ical_string(comp)); + + new_sl = icalspanlist_from_vfreebusy(comp); + + ok("Calculating spanlist from generated VFREEBUSY component", + (new_sl != NULL)); + + if (VERBOSE) icalspanlist_dump(new_sl); + + if (sl) icalspanlist_free(sl); + if (new_sl) icalspanlist_free(new_sl); + if (comp) icalcomponent_free(comp); + + icalset_free(set); +} + + +void test_convenience(){ + icalcomponent *c; + int duration; + struct icaltimetype tt; + + c = icalcomponent_vanew( + ICAL_VCALENDAR_COMPONENT, + icalcomponent_vanew( + ICAL_VEVENT_COMPONENT, + icalproperty_new_dtstart(icaltime_from_string("19970801T120000")), + icalproperty_new_dtend(icaltime_from_string("19970801T130000")), + 0 + ), + 0); + + if (VERBOSE) printf("\n%s\n", icalcomponent_as_ical_string(c)); + + duration = icaldurationtype_as_int(icalcomponent_get_duration(c))/60; + + is("Start is 1997-08-01 12:00:00 (floating)", + ictt_as_string(icalcomponent_get_dtstart(c)), "1997-08-01 12:00:00 (floating)"); + is("End is 1997-08-01 13:00:00 (floating)", + ictt_as_string(icalcomponent_get_dtend(c)), "1997-08-01 13:00:00 (floating)"); + ok("Duration is 60 m", (duration == 60)); + + icalcomponent_free(c); + + c = icalcomponent_vanew( + ICAL_VCALENDAR_COMPONENT, + icalcomponent_vanew( + ICAL_VEVENT_COMPONENT, + icalproperty_new_dtstart(icaltime_from_string("19970801T120000Z")), + icalproperty_new_duration(icaldurationtype_from_string("PT1H30M")), + 0 + ), + 0); + + if (VERBOSE) printf("\n%s\n", icalcomponent_as_ical_string(c)); + + duration = icaldurationtype_as_int(icalcomponent_get_duration(c))/60; + + is("Start is 1997-08-01 12:00:00 Z UTC", + ictt_as_string(icalcomponent_get_dtstart(c)), "1997-08-01 12:00:00 Z UTC"); + is("End is 1997-08-01 13:30:00 Z UTC", + ictt_as_string(icalcomponent_get_dtend(c)), "1997-08-01 13:30:00 Z UTC"); + ok("Duration is 90 m", (duration == 90)); + + icalcomponent_free(c); + + icalerror_errors_are_fatal = 0; + + c = icalcomponent_vanew( + ICAL_VCALENDAR_COMPONENT, + icalcomponent_vanew( + ICAL_VEVENT_COMPONENT, + icalproperty_new_dtstart(icaltime_from_string("19970801T120000")), + icalproperty_new_dtend(icaltime_from_string("19970801T130000")), + 0 + ), + 0); + + icalcomponent_set_duration(c,icaldurationtype_from_string("PT1H30M")); + + if (VERBOSE) printf("\n%s\n", icalcomponent_as_ical_string(c)); + + duration = icaldurationtype_as_int(icalcomponent_get_duration(c))/60; + + is("Start is 1997-08-01 12:00:00 (floating)", + ictt_as_string(icalcomponent_get_dtstart(c)), + "1997-08-01 12:00:00 (floating)"); + is("End is 1997-08-01 13:00:00 (floating)", + ictt_as_string(icalcomponent_get_dtend(c)), + "1997-08-01 13:00:00 (floating)"); + ok("Duration is 60 m", (duration == 60)); + + icalcomponent_free(c); + + c = icalcomponent_vanew( + ICAL_VCALENDAR_COMPONENT, + icalcomponent_vanew( + ICAL_VEVENT_COMPONENT, + icalproperty_new_dtstart(icaltime_from_string("19970801T120000Z")), + icalproperty_new_duration(icaldurationtype_from_string("PT1H30M")), + 0 + ), + 0); + + icalcomponent_set_dtend(c,icaltime_from_string("19970801T133000Z")); + + if (VERBOSE) printf("\n%s\n", icalcomponent_as_ical_string(c)); + + + duration = icaldurationtype_as_int(icalcomponent_get_duration(c))/60; + + ok("Start is 1997-08-01 12:00:00 Z UTC", + (0 == strcmp("1997-08-01 12:00:00 Z UTC", ictt_as_string(icalcomponent_get_dtstart(c))))); + ok("End is 1997-08-01 13:30:00 Z UTC", + (0 == strcmp("1997-08-01 13:30:00 Z UTC", ictt_as_string(icalcomponent_get_dtend(c))))); + ok("Duration is 90 m", (duration == 90)); + + icalerror_errors_are_fatal = 1; + + icalcomponent_free(c); + + c = icalcomponent_vanew( + ICAL_VCALENDAR_COMPONENT, + icalcomponent_vanew( + ICAL_VEVENT_COMPONENT, + 0 + ), + 0); + + icalcomponent_set_dtstart(c,icaltime_from_string("19970801T120000Z")); + icalcomponent_set_dtend(c,icaltime_from_string("19970801T133000Z")); + + if (VERBOSE) printf("\n%s\n", icalcomponent_as_ical_string(c)); + + + duration = icaldurationtype_as_int(icalcomponent_get_duration(c))/60; + + ok("Start is 1997-08-01 12:00:00 Z UTC", + (0 == strcmp("1997-08-01 12:00:00 Z UTC", ictt_as_string(icalcomponent_get_dtstart(c))))); + ok("End is 1997-08-01 13:30:00 Z UTC", + (0 == strcmp("1997-08-01 13:30:00 Z UTC", ictt_as_string(icalcomponent_get_dtend(c))))); + ok("Duration is 90 m", (duration == 90)); + + icalcomponent_free(c); + + c = icalcomponent_vanew( + ICAL_VCALENDAR_COMPONENT, + icalcomponent_vanew( + ICAL_VEVENT_COMPONENT, + 0 + ), + 0); + + + icalcomponent_set_dtstart(c,icaltime_from_string("19970801T120000Z")); + icalcomponent_set_duration(c,icaldurationtype_from_string("PT1H30M")); + + if (VERBOSE) printf("\n%s\n", icalcomponent_as_ical_string(c)); + + + duration = icaldurationtype_as_int(icalcomponent_get_duration(c))/60; + + ok("Start is 1997-08-01 12:00:00 Z UTC", + (0 == strcmp("1997-08-01 12:00:00 Z UTC", ictt_as_string(icalcomponent_get_dtstart(c))))); + ok("End is 1997-08-01 13:30:00 Z UTC", + (0 == strcmp("1997-08-01 13:30:00 Z UTC", ictt_as_string(icalcomponent_get_dtend(c))))); + ok("Duration is 90 m", (duration == 90)); + + icalcomponent_free(c); + + c = icalcomponent_vanew( + ICAL_VCALENDAR_COMPONENT, + icalcomponent_vanew( + ICAL_VEVENT_COMPONENT, + 0 + ), + 0); + + tt = icaltime_from_string("19970801T120000"); + icaltime_set_timezone(&tt, + icaltimezone_get_builtin_timezone("Europe/Rome")); + icalcomponent_set_dtstart(c,tt); + + if (VERBOSE) printf("\n%s\n", icalcomponent_as_ical_string(c)); + + icalcomponent_set_duration(c,icaldurationtype_from_string("PT1H30M")); + duration = icaldurationtype_as_int(icalcomponent_get_duration(c))/60; + + ok("Start is 1997-08-01 12:00:00 /softwarestudio.org/Olson_20010626_2/Europe/Rome", + (0 == strcmp("1997-08-01 12:00:00 /softwarestudio.org/Olson_20010626_2/Europe/Rome", ictt_as_string(icalcomponent_get_dtstart(c))))); + ok("End is 1997-08-01 13:30:00 /softwarestudio.org/Olson_20010626_2/Europe/Rome", + (0 == strcmp("1997-08-01 13:30:00 /softwarestudio.org/Olson_20010626_2/Europe/Rome", ictt_as_string(icalcomponent_get_dtend(c))))); + ok("Duration is 90 m", (duration == 90)); + + icalcomponent_free(c); +} + +void test_time_parser() +{ + struct icaltimetype tt; + + icalerror_errors_are_fatal = 0; + + tt = icaltime_from_string("19970101T1000"); + ok("19970101T1000 is null time", icaltime_is_null_time(tt)); + + tt = icaltime_from_string("19970101X100000"); + ok("19970101X100000 is null time", icaltime_is_null_time(tt)); + + tt = icaltime_from_string("19970101T100000"); + ok("19970101T100000 is valid", !icaltime_is_null_time(tt)); + + if (VERBOSE) printf("%s\n",icaltime_as_ctime(tt)); + + tt = icaltime_from_string("19970101T100000Z"); + + ok("19970101T100000Z is valid" , !icaltime_is_null_time(tt)); + if (VERBOSE) printf("%s\n",icaltime_as_ctime(tt)); + + tt = icaltime_from_string("19970101"); + ok("19970101 is valid", (!icaltime_is_null_time(tt))); + + if (VERBOSE) printf("%s\n",icaltime_as_ctime(tt)); + + icalerror_errors_are_fatal = 1; +} + +void test_recur_parser() +{ + struct icalrecurrencetype rt; + char *str; + + str = "FREQ=YEARLY;UNTIL=20000131T090000Z;INTERVAL=1;BYDAY=-1TU,3WE,-4FR,SA,SU;BYYEARDAY=34,65,76,78;BYMONTH=1,2,3,4,8"; + rt = icalrecurrencetype_from_string(str); + is(str, icalrecurrencetype_as_string(&rt), str); + + str = "FREQ=DAILY;COUNT=3;INTERVAL=1;BYDAY=-1TU,3WE,-4FR,SA,SU;BYYEARDAY=34,65,76,78;BYMONTH=1,2,3,4,8"; + + rt = icalrecurrencetype_from_string(str); + is(str, icalrecurrencetype_as_string(&rt), str); +} + +char* ical_strstr(const char *haystack, const char *needle){ + return strstr(haystack,needle); +} + +void test_start_of_week() +{ + struct icaltimetype tt2; + struct icaltimetype tt1 = icaltime_from_string("19900110"); + int dow, doy,start_dow; + + do{ + tt1 = icaltime_normalize(tt1); + + doy = icaltime_start_doy_of_week(tt1); + dow = icaltime_day_of_week(tt1); + + tt2 = icaltime_from_day_of_year(doy,tt1.year); + start_dow = icaltime_day_of_week(tt2); + + if(doy == 1){ + char msg[128]; + sprintf(msg, "%s", ictt_as_string(tt1)); + int_is(msg, start_dow, 1); + } + + if(start_dow != 1){ /* Sunday is 1 */ + printf("failed: Start of week (%s) is not a Sunday \n for %s (doy=%d,dow=%d)\n",ictt_as_string(tt2), ictt_as_string(tt1),dow,start_dow); + } + + + assert(start_dow == 1); + + + tt1.day+=1; + + } while(tt1.year < 2010); +} + +void test_doy() +{ + struct icaltimetype tt1, tt2; + short doy,doy2; + char msg[128]; + + doy = -1; + + tt1 = icaltime_from_string("19900101"); + + if (VERBOSE) printf("Test icaltime_day_of_year() agreement with mktime\n"); + + do{ + struct tm stm; + + tt1 = icaltime_normalize(tt1); + + stm.tm_sec = tt1.second; + stm.tm_min = tt1.minute; + stm.tm_hour = tt1.hour; + stm.tm_mday = tt1.day; + stm.tm_mon = tt1.month-1; + stm.tm_year = tt1.year-1900; + stm.tm_isdst = -1; + + mktime(&stm); + + doy = icaltime_day_of_year(tt1); + + doy2 = stm.tm_yday+1; + + if (doy == 1) { + /** show some test cases **/ + sprintf(msg, "Year %d - mktime() compare", tt1.year); + int_is(msg, doy,doy2); + } + + if (doy != doy2){ + printf("Failed for %s (%d,%d)\n",ictt_as_string(tt1),doy,doy2); + } + assert(doy == doy2); + + tt1.day+=1; + + } while(tt1.year < 2010); + + if (VERBOSE) printf("\nTest icaltime_day_of_year() agreement with icaltime_from_day_of_year()\n"); + + tt1 = icaltime_from_string("19900101"); + + do{ + if(doy == 1){ + /** show some test cases **/ + sprintf(msg, "Year %d - icaltime_day_of_year() compare", tt1.year); + int_is(msg, doy,doy2); + } + + doy = icaltime_day_of_year(tt1); + tt2 = icaltime_from_day_of_year(doy,tt1.year); + doy2 = icaltime_day_of_year(tt2); + + assert(doy2 == doy); + assert(icaltime_compare(tt1,tt2) == 0); + + tt1.day+=1; + tt1 = icaltime_normalize(tt1); + + } while(tt1.year < 2010); + + + tt1 = icaltime_from_string("19950301"); + doy = icaltime_day_of_year(tt1); + tt2 = icaltime_from_day_of_year(doy,1995); + if(VERBOSE) printf("%d %s %s\n",doy, icaltime_as_ctime(tt1),icaltime_as_ctime(tt2)); + + ok("test 19950301", (tt2.day == 1 && tt2.month == 3)); + ok("day of year == 60", (doy == 60)); + + tt1 = icaltime_from_string("19960301"); + doy = icaltime_day_of_year(tt1); + tt2 = icaltime_from_day_of_year(doy,1996); + if (VERBOSE) printf("%d %s %s\n",doy, icaltime_as_ctime(tt1),icaltime_as_ctime(tt2)); + ok("test 19960301", (tt2.day == 1 && tt2.month == 3)); + ok("day of year == 61", (doy == 61)); + + tt1 = icaltime_from_string("19970301"); + doy = icaltime_day_of_year(tt1); + tt2 = icaltime_from_day_of_year(doy,1997); + if (VERBOSE) printf("%d %s %s\n",doy, icaltime_as_ctime(tt1),icaltime_as_ctime(tt2)); + + ok("test 19970301", (tt2.day == 1 && tt2.month == 3)); + ok("day of year == 60", (doy == 60)); + +} + +void test_x(){ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include + + static const char test_icalcomp_str[] = +"BEGIN:VEVENT\r\n" +"RRULE\r\n" +" ;X-EVOLUTION-ENDDATE=20030209T081500\r\n" +" :FREQ=DAILY;COUNT=10;INTERVAL=6\r\n" +"X-COMMENT;X-FOO=BAR: Booga\r\n" +"END:VEVENT\r\n"; + + icalcomponent *icalcomp; + icalproperty *prop; + struct icalrecurrencetype recur; + int n_errors; + + icalcomp = icalparser_parse_string ((char *) test_icalcomp_str); + assert(icalcomp!=NULL); + + if (VERBOSE) printf("%s\n\n",icalcomponent_as_ical_string(icalcomp)); + + n_errors = icalcomponent_count_errors (icalcomp); + int_is("icalparser_parse_string()", n_errors,0); + + if (n_errors) { + /** NOT USED **/ + icalproperty *p; + + for (p = icalcomponent_get_first_property (icalcomp, + ICAL_XLICERROR_PROPERTY); + p; + p = icalcomponent_get_next_property (icalcomp, + ICAL_XLICERROR_PROPERTY)) { + const char *str; + + str = icalproperty_as_ical_string (p); + fprintf (stderr, "error: %s\n", str); + } + } + + prop = icalcomponent_get_first_property (icalcomp, ICAL_RRULE_PROPERTY); + ok("get RRULE property", (prop != NULL)); + assert(prop!=NULL); + + recur = icalproperty_get_rrule (prop); + + if (VERBOSE) printf("%s\n",icalrecurrencetype_as_string(&recur)); + + icalcomponent_free(icalcomp); + +} + +void test_gauge_sql() { + icalgauge *g; + char* str; + + str= "SELECT DTSTART,DTEND,COMMENT FROM VEVENT,VTODO WHERE VEVENT.SUMMARY = 'Bongoa' AND SEQUENCE < 5"; + + g = icalgauge_new_from_sql(str, 0); + ok(str, (g!=NULL)); + if (VERBOSE) icalgauge_dump(g); + + icalgauge_free(g); + + str="SELECT * FROM VEVENT,VTODO WHERE VEVENT.SUMMARY = 'Bongoa' AND SEQUENCE < 5 OR METHOD != 'CREATE'"; + + g = icalgauge_new_from_sql(str, 0); + ok(str, (g!=NULL)); + if (VERBOSE) icalgauge_dump(g); + + icalgauge_free(g); + + str="SELECT * FROM VEVENT WHERE SUMMARY == 'BA301'"; + + g = icalgauge_new_from_sql(str, 0); + ok(str, (g!=NULL)); + if (VERBOSE) icalgauge_dump(g); + + icalgauge_free(g); + + str="SELECT * FROM VEVENT WHERE SUMMARY == 'BA301'"; + + g = icalgauge_new_from_sql(str, 0); + ok(str, (g!=NULL)); + if (VERBOSE) icalgauge_dump(g); + + icalgauge_free(g); + + str="SELECT * FROM VEVENT WHERE LOCATION == '104 Forum'"; + + g = icalgauge_new_from_sql(str, 0); + ok(str, (g!=NULL)); + if (VERBOSE) icalgauge_dump(g); + + icalgauge_free(g); +} + + +void test_gauge_compare() { + icalgauge *g; + icalcomponent *c; + char* str; + + /* Equality */ + + c = icalcomponent_vanew(ICAL_VCALENDAR_COMPONENT, + icalcomponent_vanew(ICAL_VEVENT_COMPONENT, + icalproperty_new_dtstart( + icaltime_from_string("20000101T000002")),0),0); + + g = icalgauge_new_from_sql( + "SELECT * FROM VEVENT WHERE DTSTART = '20000101T000002'", 0); + + ok("SELECT * FROM VEVENT WHERE DTSTART = '20000101T000002'", (c!=0 && g!=0)); + assert(c!=0); + assert(g!=0); + + int_is("compare",icalgauge_compare(g,c), 1); + + icalgauge_free(g); + + + g = icalgauge_new_from_sql( + "SELECT * FROM VEVENT WHERE DTSTART = '20000101T000001'", 0); + + ok("SELECT * FROM VEVENT WHERE DTSTART = '20000101T000001'\n", (g!=0)); + + assert(g!=0); + int_is("compare",icalgauge_compare(g,c), 0); + + icalgauge_free(g); + + g = icalgauge_new_from_sql( + "SELECT * FROM VEVENT WHERE DTSTART != '20000101T000003'", 0); + + ok("SELECT * FROM VEVENT WHERE DTSTART != '20000101T000003'\n", (c!=0 && g!=0)); + + + assert(g!=0); + int_is("compare",icalgauge_compare(g,c), 1); + + icalgauge_free(g); + + + /* Less than */ + + g = icalgauge_new_from_sql( + "SELECT * FROM VEVENT WHERE DTSTART < '20000101T000003'", 0); + + ok("SELECT * FROM VEVENT WHERE DTSTART < '20000101T000003'", (c!=0 && g!=0)); + + int_is("compare",icalgauge_compare(g,c), 1); + + assert(g!=0); + icalgauge_free(g); + + g = icalgauge_new_from_sql( + "SELECT * FROM VEVENT WHERE DTSTART < '20000101T000002'", 0); + + ok("SELECT * FROM VEVENT WHERE DTSTART < '20000101T000002'\n", (g!=0)); + + + assert(g!=0); + int_is("compare",icalgauge_compare(g,c), 0); + + icalgauge_free(g); + + /* Greater than */ + + g = icalgauge_new_from_sql( + "SELECT * FROM VEVENT WHERE DTSTART > '20000101T000001'", 0); + + ok("SELECT * FROM VEVENT WHERE DTSTART > '20000101T000001'\n", (g!=0)); + + + assert(g!=0); + int_is("compare",icalgauge_compare(g,c), 1); + + icalgauge_free(g); + + g = icalgauge_new_from_sql( + "SELECT * FROM VEVENT WHERE DTSTART > '20000101T000002'", 0); + + ok("SELECT * FROM VEVENT WHERE DTSTART > '20000101T000002'\n", (g!=0)); + + + assert(g!=0); + int_is("compare",icalgauge_compare(g,c), 0); + + + icalgauge_free(g); + + + /* Greater than or Equal to */ + + g = icalgauge_new_from_sql( + "SELECT * FROM VEVENT WHERE DTSTART >= '20000101T000002'", 0); + + ok("SELECT * FROM VEVENT WHERE DTSTART >= '20000101T000002'\n", (g!=0)); + + + int_is("compare",icalgauge_compare(g,c), 1); + + icalgauge_free(g); + + g = icalgauge_new_from_sql( + "SELECT * FROM VEVENT WHERE DTSTART >= '20000101T000003'", 0); + + ok("SELECT * FROM VEVENT WHERE DTSTART >= '20000101T000003'\n", (g!=0)); + + + int_is("compare",icalgauge_compare(g,c), 0); + + icalgauge_free(g); + + /* Less than or Equal to */ + + g = icalgauge_new_from_sql( + "SELECT * FROM VEVENT WHERE DTSTART <= '20000101T000002'", 0); + + ok("SELECT * FROM VEVENT WHERE DTSTART <= '20000101T000002'\n", (g!=0)); + + + assert(g!=0); + int_is("compare",icalgauge_compare(g,c), 1); + + icalgauge_free(g); + + g = icalgauge_new_from_sql( + "SELECT * FROM VEVENT WHERE DTSTART <= '20000101T000001'", 0); + + ok("SELECT * FROM VEVENT WHERE DTSTART <= '20000101T000001'\n", (g!=0)); + + + int_is("compare",icalgauge_compare(g,c), 0); + + icalgauge_free(g); + + icalcomponent_free(c); + + /* Combinations */ + + c = icalcomponent_vanew(ICAL_VCALENDAR_COMPONENT, + icalcomponent_vanew(ICAL_VEVENT_COMPONENT, + icalproperty_new_dtstart( + icaltime_from_string("20000102T000000")),0),0); + + + str = "SELECT * FROM VEVENT WHERE DTSTART > '20000101T000000' and DTSTART < '20000103T000000'"; + + g = icalgauge_new_from_sql(str, 0); + ok(str, (g!=0)); + int_is("compare",icalgauge_compare(g,c), 1); + + icalgauge_free(g); + + str = "SELECT * FROM VEVENT WHERE DTSTART > '20000101T000000' and DTSTART < '20000102T000000'"; + + g = icalgauge_new_from_sql(str, 0); + ok(str, (g!=0)); + int_is("compare",icalgauge_compare(g,c), 0); + + icalgauge_free(g); + + str = "SELECT * FROM VEVENT WHERE DTSTART > '20000101T000000' or DTSTART < '20000102T000000'"; + + g = icalgauge_new_from_sql(str, 0); + ok(str, (g!=0)); + int_is("compare",icalgauge_compare(g,c), 1); + + icalgauge_free(g); + + + icalcomponent_free(c); + + /* Combinations, non-cannonical component */ + + c = icalcomponent_vanew(ICAL_VEVENT_COMPONENT, + icalproperty_new_dtstart( + icaltime_from_string("20000102T000000")),0); + + + str = "SELECT * FROM VEVENT WHERE DTSTART > '20000101T000000' and DTSTART < '20000103T000000'"; + + g = icalgauge_new_from_sql(str, 0); + ok(str, (g!=0)); + int_is("compare",icalgauge_compare(g,c), 1); + + icalgauge_free(g); + + str = "SELECT * FROM VEVENT WHERE DTSTART > '20000101T000000' and DTSTART < '20000102T000000'"; + + g = icalgauge_new_from_sql(str, 0); + ok(str, (g!=0)); + int_is("compare",icalgauge_compare(g,c), 0); + + icalgauge_free(g); + + str = "SELECT * FROM VEVENT WHERE DTSTART > '20000101T000000' or DTSTART < '20000102T000000'"; + + g = icalgauge_new_from_sql(str, 0); + ok(str, (g!=0)); + int_is("compare",icalgauge_compare(g,c), 1); + + icalgauge_free(g); + icalcomponent_free(c); + + + /* Complex comparisions */ + + c = icalcomponent_vanew( + ICAL_VCALENDAR_COMPONENT, + icalproperty_new_method(ICAL_METHOD_REQUEST), + icalcomponent_vanew( + ICAL_VEVENT_COMPONENT, + icalproperty_new_dtstart( + icaltime_from_string("20000101T000002")), + icalproperty_new_comment("foo"), + icalcomponent_vanew( + ICAL_VALARM_COMPONENT, + icalproperty_new_dtstart( + icaltime_from_string("20000101T120000")), + + 0), + 0), + 0); + + + str = "SELECT * FROM VEVENT WHERE VALARM.DTSTART = '20000101T120000'"; + + g = icalgauge_new_from_sql(str, 0); + ok(str, (g!=0)); + int_is("compare",icalgauge_compare(g,c), 1); + + icalgauge_free(g); + + str = "SELECT * FROM VEVENT WHERE COMMENT = 'foo'"; + g = icalgauge_new_from_sql(str, 0); + ok(str, (g!=0)); + int_is("compare",icalgauge_compare(g,c), 1); + + icalgauge_free(g); + + str = "SELECT * FROM VEVENT WHERE COMMENT = 'foo' AND VALARM.DTSTART = '20000101T120000'"; + g = icalgauge_new_from_sql(str, 0); + ok(str, (g!=0)); + int_is("compare",icalgauge_compare(g,c), 1); + + icalgauge_free(g); + + str = "SELECT * FROM VEVENT WHERE COMMENT = 'bar' AND VALARM.DTSTART = '20000101T120000'"; + g = icalgauge_new_from_sql(str, 0); + ok(str, (g!=0)); + int_is("compare",icalgauge_compare(g,c), 0); + + icalgauge_free(g); + + str = "SELECT * FROM VEVENT WHERE COMMENT = 'bar' or VALARM.DTSTART = '20000101T120000'"; + g = icalgauge_new_from_sql(str, 0); + ok(str, (g!=0)); + int_is("compare",icalgauge_compare(g,c), 1); + + icalgauge_free(g); + + icalcomponent_free(c); + +} + +icalcomponent* make_component(int i){ + + icalcomponent *c; + + struct icaltimetype t = icaltime_from_string("20000101T120000Z"); + + t.day += i; + + icaltime_normalize(t); + + c = icalcomponent_vanew( + ICAL_VCALENDAR_COMPONENT, + icalproperty_new_method(ICAL_METHOD_REQUEST), + icalcomponent_vanew( + ICAL_VEVENT_COMPONENT, + icalproperty_new_dtstart(t), + 0), + 0); + + assert(c != 0); + + return c; + +} +void test_fileset() +{ + icalset *fs; + icalcomponent *c; + int i; + int comp_count = 0; + char *path = "test_fileset.ics"; + icalgauge *g = icalgauge_new_from_sql( + "SELECT * FROM VEVENT WHERE DTSTART > '20000103T120000Z' AND DTSTART <= '20000106T120000Z'", 0); + + ok("icalgauge_new_from_sql()", (g!=NULL)); + + unlink(path); + + fs = icalfileset_new(path); + + ok("icalfileset_new()", (fs!=NULL)); + assert(fs != 0); + + for (i = 0; i!= 10; i++){ + c = make_component(i); + icalfileset_add_component(fs,c); + } + + icalfileset_commit(fs); + + icalset_free(fs); + /** reopen fileset.ics **/ + fs = icalfileset_new(path); + + if (VERBOSE) printf("== No Selections \n"); + + comp_count = 0; + for (c = icalfileset_get_first_component(fs); + c != 0; + c = icalfileset_get_next_component(fs)){ + struct icaltimetype t = icalcomponent_get_dtstart(c); + comp_count++; + if (VERBOSE) printf("%s\n",icaltime_as_ctime(t)); + } + int_is("icalfileset get components",comp_count, 10); + + icalfileset_select(fs,g); + + if (VERBOSE) printf("\n== DTSTART > '20000103T120000Z' AND DTSTART <= '20000106T120000Z' \n"); + + comp_count = 0; + for (c = icalfileset_get_first_component(fs); + c != 0; + c = icalfileset_get_next_component(fs)){ + struct icaltimetype t = icalcomponent_get_dtstart(c); + comp_count++; + if (VERBOSE) printf("%s\n",icaltime_as_ctime(t)); + } + int_is("icalfileset get components with gauge",comp_count, 3); + + icalset_free(fs); + + /*icalgauge_free(g);*/ + +} + +void microsleep(int us) +{ +#ifndef WIN32 + struct timeval tv; + + tv.tv_sec = 0; + tv.tv_usec = us; + + select(0,0,0,0,&tv); +#else + Sleep(us); +#endif +} + + +void test_file_locks() +{ +#ifndef WIN32 + pid_t pid; + char *path = "test_fileset_locktest.ics"; + icalset *fs; + icalcomponent *c, *c2; + struct icaldurationtype d; + int i; + int final,sec; + + icalerror_clear_errno(); + + unlink(path); + + fs = icalfileset_new(path); + + if(icalfileset_get_first_component(fs)==0){ + c = make_component(0); + + d = icaldurationtype_from_int(1); + + icalcomponent_set_duration(c,d); + + icalfileset_add_component(fs,c); + + c2 = icalcomponent_new_clone(c); + + icalfileset_add_component(fs,c2); + + icalfileset_commit(fs); + } + + icalset_free(fs); + + assert(icalerrno == ICAL_NO_ERROR); + + pid = fork(); + + assert(pid >= 0); + + if(pid == 0){ + /*child*/ + int i; + + microsleep(rand()/(RAND_MAX/100)); + + for(i = 0; i< 50; i++){ + fs = icalfileset_new(path); + + + assert(fs != 0); + + c = icalfileset_get_first_component(fs); + + assert(c!=0); + + d = icalcomponent_get_duration(c); + d = icaldurationtype_from_int(icaldurationtype_as_int(d)+1); + + icalcomponent_set_duration(c,d); + icalcomponent_set_summary(c,"Child"); + + c2 = icalcomponent_new_clone(c); + icalcomponent_set_summary(c2,"Child"); + icalfileset_add_component(fs,c2); + + icalfileset_mark(fs); + icalfileset_commit(fs); + + icalset_free(fs); + + microsleep(rand()/(RAND_MAX/20)); + + + } + + exit(0); + + } else { + /* parent */ + int i; + + for(i = 0; i< 50; i++){ + fs = icalfileset_new(path); + + assert(fs != 0); + + c = icalfileset_get_first_component(fs); + + assert(c!=0); + + d = icalcomponent_get_duration(c); + d = icaldurationtype_from_int(icaldurationtype_as_int(d)+1); + + icalcomponent_set_duration(c,d); + icalcomponent_set_summary(c,"Parent"); + + c2 = icalcomponent_new_clone(c); + icalcomponent_set_summary(c2,"Parent"); + icalfileset_add_component(fs,c2); + + icalfileset_mark(fs); + icalfileset_commit(fs); + icalset_free(fs); + + putc('.',stdout); + fflush(stdout); + + } + } + + assert(waitpid(pid,0,0)==pid); + + + fs = icalfileset_new(path); + + i=1; + + c = icalfileset_get_first_component(fs); + final = icaldurationtype_as_int(icalcomponent_get_duration(c)); + for (c = icalfileset_get_next_component(fs); + c != 0; + c = icalfileset_get_next_component(fs)){ + struct icaldurationtype d = icalcomponent_get_duration(c); + sec = icaldurationtype_as_int(d); + + /*printf("%d,%d ",i,sec);*/ + assert(i == sec); + i++; + } + + printf("\nFinal: %d\n",final); + + + assert(sec == final); +#endif +} + +void test_action() +{ + icalcomponent *c; + icalproperty *p; + char *str; + + static const char test_icalcomp_str[] = +"BEGIN:VEVENT\n" +"ACTION:EMAIL\n" +"ACTION:PROCEDURE\n" +"ACTION:AUDIO\n" +"ACTION:FUBAR\n" +"END:VEVENT\n"; + + + c = icalparser_parse_string ((char *) test_icalcomp_str); + + ok("icalparser_parse_string(), ACTIONS", (c!=NULL)); + assert(c!=0); + + str = icalcomponent_as_ical_string(c); + is("icalcomponent_as_ical_string()", str, ((char*) test_icalcomp_str)); + if (VERBOSE) printf("%s\n\n",str); + + p = icalcomponent_get_first_property(c,ICAL_ACTION_PROPERTY); + + ok("ICAL_ACTION_EMAIL", (icalproperty_get_action(p) == ICAL_ACTION_EMAIL)); + + p = icalcomponent_get_next_property(c,ICAL_ACTION_PROPERTY); + + ok("ICAL_ACTION_PROCEDURE", (icalproperty_get_action(p) == ICAL_ACTION_PROCEDURE)); + + p = icalcomponent_get_next_property(c,ICAL_ACTION_PROPERTY); + + ok("ICAL_ACTION_AUDIO", (icalproperty_get_action(p) == ICAL_ACTION_AUDIO)); + + p = icalcomponent_get_next_property(c,ICAL_ACTION_PROPERTY); + + ok("ICAL_ACTION_X", (icalproperty_get_action(p) == ICAL_ACTION_X)); + is("ICAL_ACTION -> FUBAR", icalvalue_get_x(icalproperty_get_value(p)), "FUBAR"); + icalcomponent_free(c); +} + + + +void test_trigger() +{ + + struct icaltriggertype tr; + icalcomponent *c; + icalproperty *p; + const char* str; + + static const char test_icalcomp_str[] = +"BEGIN:VEVENT\n" +"TRIGGER;VALUE=DATE-TIME:19980403T120000\n" +"TRIGGER;VALUE=DURATION:-PT15M\n" +"TRIGGER;VALUE=DATE-TIME:19980403T120000\n" +"TRIGGER;VALUE=DURATION:-PT15M\n" +"END:VEVENT\n"; + + + c = icalparser_parse_string ((char *) test_icalcomp_str); + ok("icalparser_parse_string()", (c!= NULL)); + assert(c!=NULL); + + is("parsed triggers", icalcomponent_as_ical_string(c), (char*)test_icalcomp_str); + + for(p = icalcomponent_get_first_property(c,ICAL_TRIGGER_PROPERTY); + p != 0; + p = icalcomponent_get_next_property(c,ICAL_TRIGGER_PROPERTY)){ + tr = icalproperty_get_trigger(p); + + if(!icaltime_is_null_time(tr.time)){ + if (VERBOSE) printf("value=DATE-TIME:%s\n", icaltime_as_ical_string(tr.time)); + } else { + if (VERBOSE) printf("value=DURATION:%s\n", icaldurationtype_as_ical_string(tr.duration)); + } + } + + icalcomponent_free(c); + + /* Trigger, as a DATETIME */ + tr.duration = icaldurationtype_null_duration(); + tr.time = icaltime_from_string("19970101T120000"); + p = icalproperty_new_trigger(tr); + str = icalproperty_as_ical_string(p); + + is("TRIGGER;VALUE=DATE-TIME:19970101T120000", str, "TRIGGER;VALUE=DATE-TIME:19970101T120000\n"); + icalproperty_free(p); + + /* TRIGGER, as a DURATION */ + tr.time = icaltime_null_time(); + tr.duration = icaldurationtype_from_string("P3DT3H50M45S"); + p = icalproperty_new_trigger(tr); + str = icalproperty_as_ical_string(p); + + is("TRIGGER;VALUE=DURATION:P3DT3H50M45S", str, "TRIGGER;VALUE=DURATION:P3DT3H50M45S\n"); + icalproperty_free(p); + + /* TRIGGER, as a DATETIME, VALUE=DATETIME*/ + tr.duration = icaldurationtype_null_duration(); + tr.time = icaltime_from_string("19970101T120000"); + p = icalproperty_new_trigger(tr); + icalproperty_add_parameter(p,icalparameter_new_value( ICAL_VALUE_DATETIME)); + str = icalproperty_as_ical_string(p); + + is("TRIGGER;VALUE=DATE-TIME:19970101T120000", str, "TRIGGER;VALUE=DATE-TIME:19970101T120000\n"); + icalproperty_free(p); + + /*TRIGGER, as a DURATION, VALUE=DATETIME */ + tr.time = icaltime_null_time(); + tr.duration = icaldurationtype_from_string("P3DT3H50M45S"); + p = icalproperty_new_trigger(tr); + icalproperty_add_parameter(p,icalparameter_new_value( ICAL_VALUE_DATETIME )); + + str = icalproperty_as_ical_string(p); + + is("TRIGGER;VALUE=DURATION:P3DT3H50M45S", str, "TRIGGER;VALUE=DURATION:P3DT3H50M45S\n"); + icalproperty_free(p); + + /* TRIGGER, as a DATETIME, VALUE=DURATION*/ + tr.duration = icaldurationtype_null_duration(); + tr.time = icaltime_from_string("19970101T120000"); + p = icalproperty_new_trigger(tr); + icalproperty_add_parameter(p,icalparameter_new_value( ICAL_VALUE_DURATION)); + str = icalproperty_as_ical_string(p); + + is("TRIGGER;VALUE=DATE-TIME:19970101T120000", str, "TRIGGER;VALUE=DATE-TIME:19970101T120000\n"); + icalproperty_free(p); + + /*TRIGGER, as a DURATION, VALUE=DURATION */ + tr.time = icaltime_null_time(); + tr.duration = icaldurationtype_from_string("P3DT3H50M45S"); + p = icalproperty_new_trigger(tr); + icalproperty_add_parameter(p,icalparameter_new_value( ICAL_VALUE_DURATION)); + + str = icalproperty_as_ical_string(p); + + is("TRIGGER;VALUE=DURATION:P3DT3H50M45S", str, "TRIGGER;VALUE=DURATION:P3DT3H50M45S\n"); + icalproperty_free(p); + + + /* TRIGGER, as a DATETIME, VALUE=BINARY */ + tr.duration = icaldurationtype_null_duration(); + tr.time = icaltime_from_string("19970101T120000"); + p = icalproperty_new_trigger(tr); + icalproperty_add_parameter(p,icalparameter_new_value(ICAL_VALUE_BINARY)); + str = icalproperty_as_ical_string(p); + + is("TRIGGER;VALUE=DATE-TIME:19970101T120000", str, "TRIGGER;VALUE=DATE-TIME:19970101T120000\n"); + icalproperty_free(p); + + /*TRIGGER, as a DURATION, VALUE=BINARY */ + tr.time = icaltime_null_time(); + tr.duration = icaldurationtype_from_string("P3DT3H50M45S"); + p = icalproperty_new_trigger(tr); + icalproperty_add_parameter(p,icalparameter_new_value(ICAL_VALUE_BINARY)); + + str = icalproperty_as_ical_string(p); + + is("TRIGGER;VALUE=DURATION:P3DT3H50M45S", str, "TRIGGER;VALUE=DURATION:P3DT3H50M45S\n"); + icalproperty_free(p); +} + + +void test_rdate() +{ + + struct icaldatetimeperiodtype dtp; + icalproperty *p; + const char* str; + struct icalperiodtype period; + + period.start = icaltime_from_string("19970101T120000"); + period.end = icaltime_null_time(); + period.duration = icaldurationtype_from_string("PT3H10M15S"); + + /* RDATE, as DATE-TIME */ + dtp.time = icaltime_from_string("19970101T120000"); + dtp.period = icalperiodtype_null_period(); + p = icalproperty_new_rdate(dtp); + str = icalproperty_as_ical_string(p); + + is("RDATE as DATE-TIME", + "RDATE;VALUE=DATE-TIME:19970101T120000\n",str); + icalproperty_free(p); + + /* RDATE, as PERIOD */ + dtp.time = icaltime_null_time(); + dtp.period = period; + p = icalproperty_new_rdate(dtp); + + str = icalproperty_as_ical_string(p); + is("RDATE, as PERIOD", "RDATE;VALUE=PERIOD:19970101T120000/PT3H10M15S\n",str); + icalproperty_free(p); + + /* RDATE, as DATE-TIME, VALUE=DATE-TIME */ + dtp.time = icaltime_from_string("19970101T120000"); + dtp.period = icalperiodtype_null_period(); + p = icalproperty_new_rdate(dtp); + icalproperty_add_parameter(p,icalparameter_new_value(ICAL_VALUE_DATETIME)); + str = icalproperty_as_ical_string(p); + + is("RDATE, as DATE-TIME, VALUE=DATE-TIME", + "RDATE;VALUE=DATE-TIME:19970101T120000\n",str); + icalproperty_free(p); + + + /* RDATE, as PERIOD, VALUE=DATE-TIME */ + dtp.time = icaltime_null_time(); + dtp.period = period; + p = icalproperty_new_rdate(dtp); + icalproperty_add_parameter(p,icalparameter_new_value(ICAL_VALUE_DATETIME)); + str = icalproperty_as_ical_string(p); + is("RDATE, as PERIOD, VALUE=DATE-TIME", + "RDATE;VALUE=PERIOD:19970101T120000/PT3H10M15S\n",str); + icalproperty_free(p); + + + /* RDATE, as DATE-TIME, VALUE=PERIOD */ + dtp.time = icaltime_from_string("19970101T120000"); + dtp.period = icalperiodtype_null_period(); + p = icalproperty_new_rdate(dtp); + icalproperty_add_parameter(p,icalparameter_new_value(ICAL_VALUE_PERIOD)); + str = icalproperty_as_ical_string(p); + + is("RDATE, as DATE-TIME, VALUE=PERIOD", + "RDATE;VALUE=DATE-TIME:19970101T120000\n",str); + icalproperty_free(p); + + + /* RDATE, as PERIOD, VALUE=PERIOD */ + dtp.time = icaltime_null_time(); + dtp.period = period; + p = icalproperty_new_rdate(dtp); + icalproperty_add_parameter(p,icalparameter_new_value(ICAL_VALUE_PERIOD)); + str = icalproperty_as_ical_string(p); + + is("RDATE, as PERIOD, VALUE=PERIOD", + "RDATE;VALUE=PERIOD:19970101T120000/PT3H10M15S\n",str); + icalproperty_free(p); + + + /* RDATE, as DATE-TIME, VALUE=BINARY */ + dtp.time = icaltime_from_string("19970101T120000"); + dtp.period = icalperiodtype_null_period(); + p = icalproperty_new_rdate(dtp); + icalproperty_add_parameter(p,icalparameter_new_value(ICAL_VALUE_BINARY)); + str = icalproperty_as_ical_string(p); + + is("RDATE, as DATE-TIME, VALUE=BINARY", + "RDATE;VALUE=DATE-TIME:19970101T120000\n",str); + icalproperty_free(p); + + + /* RDATE, as PERIOD, VALUE=BINARY */ + dtp.time = icaltime_null_time(); + dtp.period = period; + p = icalproperty_new_rdate(dtp); + icalproperty_add_parameter(p,icalparameter_new_value(ICAL_VALUE_BINARY)); + str = icalproperty_as_ical_string(p); + + is("RDAE, as PERIOD, VALUE=BINARY", + "RDATE;VALUE=PERIOD:19970101T120000/PT3H10M15S\n",str); + icalproperty_free(p); +} + + +void test_langbind() +{ + icalcomponent *c, *inner; + icalproperty *p; + char *test_str_parsed; + static const char test_str[] = +"BEGIN:VEVENT\n" +"ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:MAILTO:employee-A@host.com\n" +"COMMENT: Comment that \n spans a line\n" +"COMMENT: Comment with \"quotable\" \'characters\' and other \t bad magic \n things \f Yeah.\n" +"DTSTART:19970101T120000\n" +"DTSTART:19970101T120000Z\n" +"DTSTART:19970101\n" +"DURATION:P3DT4H25M\n" +"FREEBUSY:19970101T120000/19970101T120000\n" +"FREEBUSY:19970101T120000/P3DT4H25M\n" +"END:VEVENT\n"; + + static const char *test_str_parsed_good = +"BEGIN:VEVENT\n" +"ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:MAILTO:\n" +" employee-A@host.com\n" +"COMMENT: Comment that spans a line\n" +"COMMENT: Comment with \\\"quotable\\\" 'characters' and other \\t bad magic \n" +" things \\f Yeah.\n" +"DTSTART:19970101T120000\n" +"DTSTART:19970101T120000Z\n" +"DTSTART;VALUE=DATE:19970101\n" +"DURATION:P3DT4H25M\n" +"FREEBUSY:19970101T120000/19970101T120000\n" +"FREEBUSY:19970101T120000/P3DT4H25M\n" +"END:VEVENT\n"; + + if (VERBOSE) printf("%s\n",test_str); + + c = icalparser_parse_string(test_str); + + ok("icalparser_parse_string()", (c!=NULL)); + assert(c != NULL); + + test_str_parsed = icalcomponent_as_ical_string(c); + + is("parsed version with bad chars, etc", + test_str_parsed, + test_str_parsed_good); + + + inner = icalcomponent_get_inner(c); + + for( + p = icallangbind_get_first_property(inner,"ANY"); + p != 0; + p = icallangbind_get_next_property(inner,"ANY") + ) { + + const char *str = icallangbind_property_eval_string(p,":"); + /** TODO add tests **/ + if (VERBOSE) printf("%s\n",str); + } + + + p = icalcomponent_get_first_property(inner,ICAL_ATTENDEE_PROPERTY); + + icalproperty_set_parameter_from_string(p,"CUTYPE","INDIVIDUAL"); + + is ("Set attendee parameter", + icalproperty_as_ical_string(p), + "ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL:MAILTO:\n" + " employee-A@host.com\n"); + + icalproperty_set_value_from_string(p,"mary@foo.org","TEXT"); + + is ("Set attendee parameter value", + icalproperty_as_ical_string(p), + "ATTENDEE;VALUE=TEXT;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL:\n" +" mary@foo.org\n"); + + icalcomponent_free(c); +} + +void test_property_parse() +{ + icalproperty *p; + const char *str; + + p= icalproperty_new_from_string( + "ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:MAILTO:employee-A@host.com"); + + ok("icalproperty_from_string(), ATTENDEE", (p != 0)); + assert (p != 0); + + str = icalproperty_as_ical_string(p); + if (VERBOSE) printf("%s\n",str); + + icalproperty_free(p); + + p= icalproperty_new_from_string("DTSTART:19970101T120000Z\n"); + + ok("icalproperty_from_string(), simple DTSTART", (p != 0)); + assert (p != 0); + + str = icalproperty_as_ical_string(p); + if (VERBOSE) printf("%s\n",str); + + icalproperty_free(p); + +} + + +void test_value_parameter() +{ + + icalcomponent *c; + icalproperty *p; + icalparameter *param; + + static const char test_icalcomp_str[] = +"BEGIN:VEVENT\n" +"DTSTART;VALUE=DATE-TIME:19971123T123000\n" +"DTSTART;VALUE=DATE:19971123\n" +"DTSTART;VALUE=FOO:19971123T123000\n" +"END:VEVENT\n"; + + c = icalparser_parse_string ((char *) test_icalcomp_str); + ok("icalparser_parse_string()", (c != NULL)); + if (!c) { + exit (EXIT_FAILURE); + } + + if (VERBOSE) printf("%s",icalcomponent_as_ical_string(c)); + + p = icalcomponent_get_first_property(c,ICAL_DTSTART_PROPERTY); + param = icalproperty_get_first_parameter(p,ICAL_VALUE_PARAMETER); + + ok("icalproperty_get_value()", (icalparameter_get_value(param) == ICAL_VALUE_DATETIME)); + + p = icalcomponent_get_next_property(c,ICAL_DTSTART_PROPERTY); + param = icalproperty_get_first_parameter(p,ICAL_VALUE_PARAMETER); + ok("icalproperty_get_first_parameter()",(icalparameter_get_value(param) == ICAL_VALUE_DATE)); + + icalcomponent_free(c); +} + + +void test_x_parameter() +{ + icalproperty *p; + + p= icalproperty_new_from_string( + "COMMENT;X-A=1;X-B=2: This is a note"); + + if (VERBOSE) printf("%s\n",icalproperty_as_ical_string(p)); + + ok("COMMENT property",(icalproperty_isa(p) == ICAL_COMMENT_PROPERTY)); + is("COMMENT parses param", icalproperty_get_comment(p)," This is a note"); + + icalproperty_set_parameter_from_string(p,"X-LIES", "no"); + icalproperty_set_parameter_from_string(p,"X-LAUGHS", "big"); + icalproperty_set_parameter_from_string(p,"X-TRUTH", "yes"); + icalproperty_set_parameter_from_string(p,"X-HUMOUR", "bad"); + + if (VERBOSE) printf("%s\n",icalproperty_as_ical_string(p)); + + is("Check X-LIES", icalproperty_get_parameter_as_string(p, "X-LIES"), "no"); + is("Check X-LAUGHS", icalproperty_get_parameter_as_string(p, "X-LAUGHS"), "big"); + is("Check X-TRUTH", icalproperty_get_parameter_as_string(p, "X-TRUTH"), "yes"); + is("Check X-HUMOUR", icalproperty_get_parameter_as_string(p, "X-HUMOUR"), "bad"); + + icalproperty_free(p); +} + + + +void test_x_property() +{ + icalproperty *p; + + p= icalproperty_new_from_string( + "X-LIC-PROPERTY: This is a note"); + + if (VERBOSE && p) printf("%s\n",icalproperty_as_ical_string(p)); + + ok("x-property is correct kind",(icalproperty_isa(p) == ICAL_X_PROPERTY)); + is("icalproperty_get_x_name() works", + icalproperty_get_x_name(p),"X-LIC-PROPERTY"); + is("icalproperty_get_x() works", + icalproperty_get_x(p)," This is a note"); + + icalproperty_free(p); +} + +void test_utcoffset() +{ + icalproperty *p; + + p = icalproperty_new_from_string("TZOFFSETFROM:-001608"); + ok("parse TZOOFSETFROM:-001608", (p!=NULL)); + + if (VERBOSE && p) printf("%s\n",icalproperty_as_ical_string(p)); + + if (p) icalproperty_free(p); +} + +void test_attach() +{ + icalcomponent *c; + + static const char test_icalcomp_str[] = +"BEGIN:VEVENT\n" +"ATTACH:CID:jsmith.part3.960817T083000.xyzMain@host1.com\n" +"ATTACH:FMTTYPE=application/postscript;ftp://xyzCorp.com/pub/reports/r-960812.ps\n" +"END:VEVENT\n"; + + c = icalparser_parse_string ((char *) test_icalcomp_str); + ok("parse simple attachment", (c != NULL)); + + if (VERBOSE) printf("%s",icalcomponent_as_ical_string(c)); + + if (c) icalcomponent_free(c); +} + + +void test_vcal(void) +{ + VObject *vcal = 0; + icalcomponent *comp; + char* file = "../../test-data/user-cal.vcf"; + + vcal = Parse_MIME_FromFileName(file); + + ok("Parsing ../../test-data/user-cal.vcf", (vcal != 0)); + + comp = icalvcal_convert(vcal); + + ok("Converting to ical component", (comp != 0)); + + if (VERBOSE && comp) + printf("%s\n",icalcomponent_as_ical_string(comp)); + + if (comp) icalcomponent_free(comp); + if (vcal) deleteVObject(vcal); +} + +int main(int argc, char *argv[]) +{ + int c; + extern char *optarg; + extern int optopt; + int errflg=0; + char* program_name = strrchr(argv[0],'/'); + int do_test = 0; + int do_header = 0; + + set_zone_directory("../../zoneinfo"); + putenv("TZ="); + + test_start(0); + + +#ifndef WIN32 + while ((c = getopt(argc, argv, "lvq")) != -1) { + switch (c) { + case 'v': { + VERBOSE = 1; + break; + } + case 'q': { + QUIET = 1; + break; + } + case 'l': { + do_header = 1;; + } + case '?': { + errflg++; + } + } + } + if (optind < argc) { + do_test = atoi(argv[argc-1]); + } +#else + if (argc>1) + do_test = atoi(argv[2]); + +#endif + + + test_run("Test time parser functions", test_time_parser, do_test, do_header); + test_run("Test time", test_time, do_test, do_header); + test_run("Test day of Year", test_doy, do_test, do_header); + test_run("Test duration", test_duration, do_test, do_header); + test_run("Test period", test_period, do_test, do_header); + test_run("Test DTSTART", test_dtstart, do_test, do_header); + test_run("Test day of year of week start", test_start_of_week, do_test, do_header); + test_run("Test recur parser", test_recur_parser, do_test, do_header); + test_run("Test recur", test_recur, do_test, do_header); + test_run("Test Recurring Events File", test_recur_file, do_test, do_header); + test_run("Test parameter bug", test_recur_parameter_bug, do_test, do_header); + test_run("Test Array Expansion", test_expand_recurrence, do_test, do_header); + test_run("Test Free/Busy lists", test_fblist, do_test, do_header); + test_run("Test Overlaps", test_overlaps, do_test, do_header); + + test_run("Test Span", test_icalcomponent_get_span, do_test, do_header); + test_run("Test Gauge SQL", test_gauge_sql, do_test, do_header); + test_run("Test Gauge Compare", test_gauge_compare, do_test, do_header); + test_run("Test File Set", test_fileset, do_test, do_header); + test_run("Test File Set (Extended)", test_fileset_extended, do_test, do_header); + test_run("Test Dir Set", test_dirset, do_test, do_header); + test_run("Test Dir Set (Extended)", test_dirset_extended, do_test, do_header); + + test_run("Test File Locks", test_file_locks, do_test, do_header); + test_run("Test X Props and Params", test_x, do_test, do_header); + test_run("Test Trigger", test_trigger, do_test, do_header); + test_run("Test Restriction", test_restriction, do_test, do_header); + test_run("Test RDATE", test_rdate, do_test, do_header); + test_run("Test language binding", test_langbind, do_test, do_header); + test_run("Test property parser", test_property_parse, do_test, do_header); + test_run("Test Action", test_action, do_test, do_header); + test_run("Test Value Parameter", test_value_parameter, do_test, do_header); + test_run("Test X property", test_x_property, do_test, do_header); + test_run("Test X parameter", test_x_parameter, do_test, do_header); + test_run("Test request status", test_requeststat, do_test, do_header); + test_run("Test UTC-OFFSET", test_utcoffset, do_test, do_header); + test_run("Test Values", test_values, do_test, do_header); + test_run("Test Parameters", test_parameters, do_test, do_header); + test_run("Test Properties", test_properties, do_test, do_header); + test_run("Test Components", test_components, do_test, do_header); + test_run("Test Convenience", test_convenience, do_test, do_header); + test_run("Test classify ", test_classify, do_test, do_header); + test_run("Test Iterators", test_iterators, do_test, do_header); + test_run("Test strings", test_strings, do_test, do_header); + test_run("Test Compare", test_compare, do_test, do_header); + test_run("Create Simple Component", create_simple_component, do_test, do_header); + test_run("Create Components", create_new_component, do_test, do_header); + test_run("Create Components with vaargs", create_new_component_with_va_args, do_test, do_header); + test_run("Test Memory", test_memory, do_test, do_header); + test_run("Test Attachment", test_attach, do_test, do_header); + test_run("Test icalcalendar", test_calendar, do_test, do_header); + test_run("Test Dirset", test_dirset, do_test, do_header); + test_run("Test vCal to iCal conversion", test_vcal, do_test, do_header); + test_run("Test UTF-8 Handling", test_utf8, do_test, do_header); + + /** OPTIONAL TESTS go here... **/ + +#ifdef WITH_CXX + test_run("Test C++ API", test_cxx, do_test, do_header); +#endif + +#ifdef WITH_BDB + test_run("Test BDB Set", test_bdbset, do_test, do_header); +#endif + + + icaltimezone_free_builtin_timezones(); + icalmemory_free_ring(); + free_zone_directory(); + + test_end(); + + return 0; +} + + diff --git a/mozilla/calendar/libical/src/test/regression.dsp b/mozilla/calendar/libical/src/test/regression.dsp new file mode 100644 index 00000000000..f7b76a2ee2d --- /dev/null +++ b/mozilla/calendar/libical/src/test/regression.dsp @@ -0,0 +1,125 @@ +# Microsoft Developer Studio Project File - Name="regression" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=regression - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "regression.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "regression.mak" CFG="regression - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "regression - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "regression - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "regression - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I "../libical" /I "../libicalss" /I "../libicalvcal" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libical.lib libicalss.lib libicalvcal.lib /nologo /subsystem:console /machine:I386 /libpath:"../libical/Release" /libpath:"../libicalss/Release" /libpath:"../libicalvcal/Release" + +!ELSEIF "$(CFG)" == "regression - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../libical" /I "../libicalss" /I "../libicalvcal" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libical.lib libicalss.lib libicalvcal.lib /nologo /subsystem:console /profile /debug /machine:I386 /libpath:"../libical/Debug" /libpath:"../libicalss/Debug" /libpath:"../libicalvcal/Debug" + +!ENDIF + +# Begin Target + +# Name "regression - Win32 Release" +# Name "regression - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=".\regression-classify.c" +# End Source File +# Begin Source File + +SOURCE=".\regression-component.c" +# End Source File +# Begin Source File + +SOURCE=".\regression-recur.c" +# End Source File +# Begin Source File + +SOURCE=".\regression-storage.c" +# End Source File +# Begin Source File + +SOURCE=".\regression-utils.c" +# End Source File +# Begin Source File + +SOURCE=.\regression.c +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\regression.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/mozilla/calendar/libical/src/test/regression.h b/mozilla/calendar/libical/src/test/regression.h new file mode 100644 index 00000000000..633cd3295de --- /dev/null +++ b/mozilla/calendar/libical/src/test/regression.h @@ -0,0 +1,53 @@ +#ifdef __cplusplus +extern "C" { +#endif + +extern int VERBOSE; +extern int QUIET; + +/* regression-component.c */ +void create_new_component(void); +void create_new_component_with_va_args(void); +void create_simple_component(void); +void test_icalcomponent_get_span(void); +void create_new_component_with_va_args(void); + +/* regression-classify.c */ +void test_classify(void); + +/* regression-recur.c */ +void test_recur_file(void); + +/* regression-cxx.c */ +void test_cxx(void); + +/* regression-storage.c */ +void test_fileset_extended(void); +void test_dirset_extended(void); +void test_bdbset(void); + +/* regression-utils.c */ +const char* ical_timet_string(const time_t t); +const char* ictt_as_string(struct icaltimetype t); +char* icaltime_as_ctime(struct icaltimetype t); + + +void _ok(char*name, int result, char*file, int linenum, char *test); +void _is(char* test_name, const char* str1, const char* str2, char *file, int linenum); +void _int_is(char* test_name, int i1, int i2, char *file, int linenum); +#define ok(TEST, EX) (_ok(TEST, EX, __FILE__, __LINE__, #EX)) +#define is(S1, S2, EX) (_is(S1, S2, EX, __FILE__, __LINE__)) +#define int_is(I1, I2, EX) (_int_is(I1, I2, EX, __FILE__, __LINE__)) +void test_header(char*title, int test_set); +void test_start(int); +void test_end(void); +void test_run(char *test_name, + void (*test_fcn)(void), + int do_test, int headeronly); + + + + +#ifdef __cplusplus +} +#endif diff --git a/mozilla/calendar/libical/src/test/storage.c b/mozilla/calendar/libical/src/test/storage.c new file mode 100644 index 00000000000..403b3209afd --- /dev/null +++ b/mozilla/calendar/libical/src/test/storage.c @@ -0,0 +1,873 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: storage.c + CREATOR: eric 03 April 1999 + + DESCRIPTION: + + $Id: storage.c,v 1.5 2002/07/16 10:04:08 acampi Exp $ + $Locker: $ + + (C) COPYRIGHT 1999 Eric Busboom + http://www.softwarestudio.org + + The contents of this file are subject to the Mozilla Public License + Version 1.0 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and + limitations under the License. + + The original author is Eric Busboom + The original code is usecases.c + + + ======================================================================*/ + +#include "ical.h" +#include +#include /* for strdup */ +#include /* for malloc */ +#include /* for printf */ +#include /* for time() */ +#include "icalmemory.h" +#include "icaldirset.h" +#include "icalfileset.h" +#ifdef WITH_BDB4 +#include "icalbdbset.h" +#endif +#include "icalerror.h" +#include "icalrestriction.h" +#include "icalcalendar.h" + +#define OUTPUT_FILE "filesetout.ics" +#define DATABASE "calendar.db" + +/* define sample calendar struct */ +struct calendar { + int ID; + int total_size; + + /* offsets */ + int total_size_offset; + int vcalendar_size_offset; + int vcalendar_offset; + int title_size_offset; + int title_offset; + + /* data */ + int vcalendar_size; + char *vcalendar; + + int title_size; + char *title; + +}; + +int vcalendar_init(struct calendar **cal, char *vcalendar, char *title); + +#ifdef WITH_BDB4 +int get_title(DB *dbp, const DBT *pkey, const DBT *pdata, DBT *skey); +char * parse_vcalendar(const DBT *dbt) ; +#endif + +char * pack_calendar(struct calendar *cal, int size); +struct calendar * unpack_calendar(char *str, int size); + +char str[] = "BEGIN:VCALENDAR\n\ +PRODID:\"-//RDU Software//NONSGML HandCal//EN\"\n\ +VERSION:2.0\n\ +BEGIN:VTIMEZONE\n\ +TZID:US-Eastern\n\ +BEGIN:STANDARD\n\ +DTSTART:19981025T020000\n\ +RDATE:19981025T020000\n\ +TZOFFSETFROM:-0400\n\ +TZOFFSETTO:-0500\n\ +TZNAME:EST\n\ +END:STANDARD\n\ +BEGIN:DAYLIGHT\n\ +DTSTART:19990404T020000\n\ +RDATE:19990404T020000\n\ +TZOFFSETFROM:-0500\n\ +TZOFFSETTO:-0400\n\ +TZNAME:EDT\n\ +END:DAYLIGHT\n\ +END:VTIMEZONE\n\ +BEGIN:VEVENT\n\ +DTSTAMP:19980309T231000Z\n\ +UID:guid-1.host1.com\n\ +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com\n\ +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:MAILTO:employee-A@host.com\n\ +DESCRIPTION:Project XYZ Review Meeting\n\ +CATEGORIES:MEETING\n\ +CLASS:PUBLIC\n\ +CREATED:19980309T130000Z\n\ +SUMMARY:XYZ Project Review\n\ +DTSTART;TZID=US-Eastern:19980312T083000\n\ +DTEND;TZID=US-Eastern:19980312T093000\n\ +LOCATION:1CP Conference Room 4350\n\ +END:VEVENT\n\ +BEGIN:BOOGA\n\ +DTSTAMP:19980309T231000Z\n\ +X-LIC-FOO:Booga\n\ +DTSTOMP:19980309T231000Z\n\ +UID:guid-1.host1.com\n\ +END:BOOGA\n\ +END:VCALENDAR"; + +char str2[] = "BEGIN:VCALENDAR\n\ +PRODID:\"-//RDU Software//NONSGML HandCal//EN\"\n\ +VERSION:2.0\n\ +BEGIN:VEVENT\n\ +DTSTAMP:19980309T231000Z\n\ +UID:guid-1.host1.com\n\ +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com\n\ +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:MAILTO:employee-A@host.com\n\ +DESCRIPTION:Project XYZ Review Meeting\n\ +CATEGORIES:MEETING\n\ +CLASS:PUBLIC\n\ +CREATED:19980309T130000Z\n\ +SUMMARY:XYZ Project Review\n\ +DTSTART;TZID=US-Eastern:19980312T083000\n\ +DTEND;TZID=US-Eastern:19980312T093000\n\ +LOCATION:1CP Conference Room 4350\n\ +END:VEVENT\n\ +END:VCALENDAR\n\ +"; + +void test_fileset() +{ + icalfileset *cout; + int month = 0; + int count=0; + struct icaltimetype start, end; + icalcomponent *c,*clone, *itr; + + start = icaltime_from_timet( time(0),0); + end = start; + end.hour++; + + cout = icalfileset_new(OUTPUT_FILE); + assert(cout != 0); + + c = icalparser_parse_string(str2); + assert(c != 0); + + /* Add data to the file */ + + for(month = 1; month < 10; month++){ + icalcomponent *event; + icalproperty *dtstart, *dtend; + + cout = icalfileset_new(OUTPUT_FILE); + assert(cout != 0); + + start.month = month; + end.month = month; + + clone = icalcomponent_new_clone(c); + assert(clone !=0); + event = icalcomponent_get_first_component(clone,ICAL_VEVENT_COMPONENT); + assert(event != 0); + + dtstart = icalcomponent_get_first_property(event,ICAL_DTSTART_PROPERTY); + assert(dtstart!=0); + icalproperty_set_dtstart(dtstart,start); + + dtend = icalcomponent_get_first_property(event,ICAL_DTEND_PROPERTY); + assert(dtend!=0); + icalproperty_set_dtend(dtend,end); + + icalfileset_add_component(cout,clone); + icalfileset_commit(cout); + + icalset_free(cout); + + } + + /* Print them out */ + + cout = icalfileset_new(OUTPUT_FILE); + assert(cout != 0); + + for (itr = icalfileset_get_first_component(cout); + itr != 0; + itr = icalfileset_get_next_component(cout)){ + + icalcomponent *event; + icalproperty *dtstart, *dtend; + + count++; + + event = icalcomponent_get_first_component(itr,ICAL_VEVENT_COMPONENT); + + dtstart = icalcomponent_get_first_property(event,ICAL_DTSTART_PROPERTY); + dtend = icalcomponent_get_first_property(event,ICAL_DTEND_PROPERTY); + + printf("%d %s %s\n",count, icalproperty_as_ical_string(dtstart), + icalproperty_as_ical_string(dtend)); + + } + + /* Remove all of them */ + + icalset_free(cout); + + cout = icalfileset_new(OUTPUT_FILE); + assert(cout != 0); + + for (itr = icalfileset_get_first_component(cout); + itr != 0; + itr = icalfileset_get_next_component(cout)){ + + + icalfileset_remove_component(cout, itr); + } + + icalset_free(cout); + + + /* Print them out again */ + + cout = icalfileset_new(OUTPUT_FILE); + assert(cout != 0); + count =0; + + for (itr = icalfileset_get_first_component(cout); + itr != 0; + itr = icalfileset_get_next_component(cout)){ + + icalcomponent *event; + icalproperty *dtstart, *dtend; + + count++; + + event = icalcomponent_get_first_component(itr,ICAL_VEVENT_COMPONENT); + + dtstart = icalcomponent_get_first_property(event,ICAL_DTSTART_PROPERTY); + dtend = icalcomponent_get_first_property(event,ICAL_DTEND_PROPERTY); + + printf("%d %s %s\n",count, icalproperty_as_ical_string(dtstart), + icalproperty_as_ical_string(dtend)); + + } + + icalset_free(cout); + + +} + +/* + In this example, we're storing a calendar with several components + under the reference id "calendar_7286" and retrieving records based + on title, "month_1" through "month_10". We use a number of the + "optional" arguments to specify secondary indices, sub-databases + (i.e. having multiple databases residing within a single Berkeley + DB file), and keys for storage and retrieval. +*/ + +#ifdef WITH_BDB4 +void test_bdbset() +{ + icalbdbset *cout; + int month = 0; + int count=0; + int num_components=0; + int szdata_len=0; + int ret=0; + char *subdb, *szdata, *szpacked_data; + char uid[255]; + struct icaltimetype start, end; + icalcomponent *c,*clone, *itr; + DB *dbp, *sdbp; + DBT key, data; + DBC *dbcp; + + struct calendar *cal; + int cal_size; + + start = icaltime_from_timet( time(0),0); + end = start; + end.hour++; + + /* Note: as per the Berkeley DB ref pages: + * + * The database argument is optional, and allows applications to + * have multiple databases in a single file. Although no database + * argument needs to be specified, it is an error to attempt to + * open a second database in a file that was not initially created + * using a database name. + * + */ + + subdb = "calendar_id"; + sdbp = 0; + + /* open database, using subdb */ + dbp = icalbdbset_database_open(DATABASE, subdb, DB_HASH); + sdbp = icalbdbset_secondary_open(dbp, + DATABASE, + "title", + get_title, + DB_HASH); + + c = icalparser_parse_string(str2); + assert(c != 0); + + /* Add data to the file */ + + for(month = 1; month < 10; month++){ + icalcomponent *event; + icalproperty *dtstart, *dtend, *location; + + /* retrieve data */ + cout = icalbdbset_new(dbp, sdbp, NULL); + assert(cout != 0); + + start.month = month; + end.month = month; + + clone = icalcomponent_new_clone(c); + assert(clone !=0); + event = icalcomponent_get_first_component(clone, + ICAL_VEVENT_COMPONENT); + assert(event != 0); + + dtstart = icalcomponent_get_first_property(event, + ICAL_DTSTART_PROPERTY); + assert(dtstart!=0); + icalproperty_set_dtstart(dtstart,start); + + dtend = icalcomponent_get_first_property(event,ICAL_DTEND_PROPERTY); + assert(dtend!=0); + icalproperty_set_dtend(dtend,end); + + location = icalcomponent_get_first_property(event, ICAL_LOCATION_PROPERTY); + assert(location!=0); + +#if 0 + /* change the uid to include the month */ + sprintf(uid, "%s_%d", icalcomponent_get_uid(clone), month); + icalcomponent_set_uid(clone, uid); +#endif + + icalbdbset_add_component(cout,clone); + + /* commit changes */ + icalbdbset_commit(cout); + + num_components = icalcomponent_count_components(clone, ICAL_ANY_COMPONENT); + + icalset_free(cout); + + } + + /* try out the cursor operations */ + memset(&key, 0, sizeof(DBT)); + memset(&data, 0, sizeof(DBT)); + + ret = icalbdbset_acquire_cursor(dbp, &dbcp); + ret = icalbdbset_get_first(dbcp, &key, &data); + ret = icalbdbset_get_next(dbcp, &key, &data); + ret = icalbdbset_get_last(dbcp, &key, &data); + + /* Print them out */ + + for(month = 1, count=0; month < 10; month++){ + char *title; + + icalcomponent *event; + icalproperty *dtstart, *dtend; + + cout = icalbdbset_new(dbp, sdbp, NULL); + assert(cout != 0); + + for (itr = icalbdbset_get_first_component(cout); + itr != 0; + itr = icalbdbset_get_next_component(cout)){ + + icalcomponent *event; + icalproperty *dtstart, *dtend; + + count++; + + event = icalcomponent_get_first_component(itr,ICAL_VEVENT_COMPONENT); + + dtstart = icalcomponent_get_first_property(event,ICAL_DTSTART_PROPERTY); + dtend = icalcomponent_get_first_property(event,ICAL_DTEND_PROPERTY); + + printf("%d %s %s\n",count, icalproperty_as_ical_string(dtstart), + icalproperty_as_ical_string(dtend)); + + } + icalset_free(cout); + } + + /* close database */ + icalbdbset_database_close(dbp); + icalbdbset_database_close(sdbp); + + /* open database */ + dbp = icalbdbset_database_open(DATABASE, subdb, DB_HASH); + sdbp = icalbdbset_secondary_open(dbp, + DATABASE, + "title", + get_title, + DB_HASH); + + /* Remove all of them */ + for(month = 1; month < 10; month++){ + + cout = icalbdbset_new(dbp, sdbp, NULL); + assert(cout != 0); + + for (itr = icalbdbset_get_first_component(cout); + itr != 0; + itr = icalbdbset_get_next_component(cout)){ + + icalbdbset_remove_component(cout, itr); + } + + icalbdbset_commit(cout); + icalset_free(cout); + + } + + /* Print them out again */ + + for(month = 1, count=0; month < 10; month++){ + char *title; + + icalcomponent *event; + icalproperty *dtstart, *dtend; + + cout = icalbdbset_new(dbp, sdbp, NULL); + assert(cout != 0); + + for (itr = icalbdbset_get_first_component(cout); + itr != 0; + itr = icalbdbset_get_next_component(cout)){ + + icalcomponent *event; + icalproperty *dtstart, *dtend; + + count++; + + event = icalcomponent_get_first_component(itr,ICAL_VEVENT_COMPONENT); + + dtstart = icalcomponent_get_first_property(event,ICAL_DTSTART_PROPERTY); + dtend = icalcomponent_get_first_property(event,ICAL_DTEND_PROPERTY); + + printf("%d %s %s\n",count, icalproperty_as_ical_string(dtstart), + icalproperty_as_ical_string(dtend)); + + } + icalset_free(cout); + } +} + +/* get_title -- extracts a secondary key (the vcalendar) + * from a primary key/data pair */ + +/* just create a random title for now */ + +int get_title(DB *dbp, const DBT *pkey, const DBT *pdata, DBT *skey) +{ + icalcomponent *cl; + char title[255]; + + memset(skey, 0, sizeof(DBT)); + + cl = icalparser_parse_string((char *)pdata->data); + sprintf(title, "title_%s", icalcomponent_get_uid(cl)); + + skey->data = strdup(title); + skey->size = strlen(skey->data); + return (0); +} + +char * parse_vcalendar(const DBT *dbt) +{ + char *str; + struct calendar *cal; + + str = (char *)dbt->data; + cal = unpack_calendar(str, dbt->size); + + return cal->vcalendar; +} + +#endif + + +int vcalendar_init(struct calendar **rcal, char *vcalendar, char *title) +{ + int vcalendar_size, title_size, total_size; + struct calendar *cal; + + if(vcalendar) + vcalendar_size = strlen(vcalendar); + else { + vcalendar = ""; + vcalendar_size = strlen(vcalendar); + } + + if(title) + title_size = strlen(title); + else { + title = ""; + title_size = strlen(title); + } + + total_size = sizeof(struct calendar) + vcalendar_size + title_size; + + if((cal = (struct calendar *)malloc(total_size))==NULL) + return 0; + memset(cal, 0, total_size); + + /* offsets */ + cal->total_size_offset = sizeof(int); + cal->vcalendar_size_offset = (sizeof(int) * 7); + cal->vcalendar_offset = cal->vcalendar_size_offset + sizeof(int); + cal->title_size_offset = cal->vcalendar_offset + vcalendar_size; + cal->title_offset = cal->title_size_offset + sizeof(int); + + /* sizes */ + cal->total_size = total_size; + cal->vcalendar_size = vcalendar_size; + cal->title_size = title_size; + + if (vcalendar && *vcalendar) + cal->vcalendar = strdup(vcalendar); + + if (title && *title) + cal->title = strdup(title); + + *rcal = cal; + + return 0; +} + +char * pack_calendar(struct calendar *cal, int size) +{ + char *str; + + if((str = (char *)malloc(sizeof(char) * size))==NULL) + return 0; + + /* ID */ + memcpy(str, &cal->ID, sizeof(cal->ID)); + + /* total_size */ + memcpy(str + cal->total_size_offset, + &cal->total_size, + sizeof(cal->total_size)); + + /* vcalendar_size */ + memcpy(str + cal->vcalendar_size_offset, + &cal->vcalendar_size, + sizeof(cal->vcalendar_size)); + + /* vcalendar */ + memcpy(str + cal->vcalendar_offset, + cal->vcalendar, + cal->vcalendar_size); + + /* title_size */ + memcpy(str + cal->title_size_offset, + &cal->title_size, + sizeof(cal->title_size)); + + /* title */ + memcpy(str + cal->title_offset, + cal->title, + cal->title_size); + + return str; +} + +struct calendar * unpack_calendar(char *str, int size) +{ + struct calendar *cal; + if((cal = (struct calendar *) malloc(size))==NULL) + return 0; + memset(cal, 0, size); + + /* offsets */ + cal->total_size_offset = sizeof(int); + cal->vcalendar_size_offset = (sizeof(int) * 7); + cal->vcalendar_offset = cal->vcalendar_size_offset + sizeof(int); + + /* ID */ + memcpy(&cal->ID, str, sizeof(cal->ID)); + + /* total_size */ + memcpy(&cal->total_size, + str + cal->total_size_offset, + sizeof(cal->total_size)); + + /* vcalendar_size */ + memcpy(&cal->vcalendar_size, + str + cal->vcalendar_size_offset, + sizeof(cal->vcalendar_size)); + + if((cal->vcalendar = (char *)malloc(sizeof(char) * + cal->vcalendar_size))==NULL) + return 0; + + /* vcalendar */ + memcpy(cal->vcalendar, + (char *)(str + cal->vcalendar_offset), + cal->vcalendar_size); + + cal->title_size_offset = cal->vcalendar_offset + cal->vcalendar_size; + cal->title_offset = cal->title_size_offset + sizeof(int); + + /* title_size */ + memcpy(&cal->title_size, + str + cal->title_size_offset, + sizeof(cal->title_size)); + + if((cal->title = (char *)malloc(sizeof(char) * + cal->title_size))==NULL) + return 0; + + /* title*/ + memcpy(cal->title, + (char *)(str + cal->title_offset), + cal->title_size); + + return cal; +} + +int test_dirset() +{ + + icalcomponent *c, *gauge; + icalerrorenum error; + icalcomponent *itr; + icalfileset* cluster; + struct icalperiodtype rtime; + icaldirset *s = icaldirset_new("store"); + int i; + + assert(s != 0); + + rtime.start = icaltime_from_timet( time(0),0); + + cluster = icalfileset_new(OUTPUT_FILE); + + assert(cluster != 0); + +#define NUMCOMP 4 + + /* Duplicate every component in the cluster NUMCOMP times */ + + icalerror_clear_errno(); + + for (i = 1; i +#include +#include +#include +#include /* for PATH_MAX */ +#include +#include +#include /* for uname */ +#include /* for stat */ +#include /* for stat, getpid, getopt */ +#include /* For getpwent */ +#include /* For getpwent */ +#include /* for tolower */ + +#include "ical.h" +#include "icalss.h" + +char* program_name; +#define TMPSIZE 2048 +#define SENDMAIL "/usr/lib/sendmail -t" + +void usage(char *message); + +#ifndef PATH_MAX +#define PATH_MAX 256 /* HACK */ +#endif + + +enum options { + STORE_IN_FILE, + STORE_IN_DB, + INPUT_IS_MIME, + INPUT_IS_ICAL, + INPUT_FROM_STDIN, + INPUT_FROM_FILE, + ERRORS_TO_STDOUT, + ERRORS_TO_ORGANIZER +}; + +struct options_struct +{ + enum options storage; + enum options input_type; + enum options input_source; + enum options errors; + char* input_file; + char* calid; + char* output_file; +}; + + +enum file_type +{ + ERROR, + NO_FILE, + DIRECTORY, + REGULAR, + OTHER +}; + +enum file_type test_file(char *path) +{ + struct stat sbuf; + enum file_type type; + + errno = 0; + + /* Check if the path already exists and if it is a directory*/ + if (stat(path,&sbuf) != 0){ + + /* A file by the given name does not exist, or there was + another error */ + if(errno == ENOENT) + { + type = NO_FILE; + } else { + type = ERROR; + } + + } else { + /* A file by the given name exists, but is it a directory? */ + + if (S_ISDIR(sbuf.st_mode)){ + type = DIRECTORY; + } else if(S_ISREG(sbuf.st_mode)){ + type = REGULAR; + } else { + type = OTHER; + } + } + + return type; +} + +char* lowercase(const char* str) +{ + char* p = 0; + char* ret; + + if(str ==0){ + return 0; + } + + ret = strdup(str); + + for(p = ret; *p!=0; p++){ + *p = tolower(*p); + } + + return ret; +} + +#if 0 +char* get_local_attendee(struct options_struct *opt) +{ + char attendee[PATH_MAX]; + + if(opt->calid){ + + strncpy(attendee,opt->calid,PATH_MAX); + + } else { + + char* user = getenv("USER"); + struct utsname uts; + uname(&utget_option); + /* HACK nodename may not be a fully qualified domain name */ + snprintf(attendee,PATH_MAX,"%s@%s",user,uts.nodename); + + } + + return lowercase(attendee); +} +#endif + + +icalcomponent* get_first_real_component(icalcomponent *comp) +{ + icalcomponent *c; + + for(c = icalcomponent_get_first_component(comp,ICAL_ANY_COMPONENT); + c != 0; + c = icalcomponent_get_next_component(comp,ICAL_ANY_COMPONENT)){ + if (icalcomponent_isa(c) == ICAL_VEVENT_COMPONENT || + icalcomponent_isa(c) == ICAL_VTODO_COMPONENT || + icalcomponent_isa(c) == ICAL_VJOURNAL_COMPONENT ) + { + return c; + } + } + + return 0; +} + + + +char* make_mime(const char* to, const char* from, const char* subject, + const char* text_message, const char* method, + const char* ical_message) +{ + size_t size = strlen(to)+strlen(from)+strlen(subject)+ + strlen(text_message)+ strlen(ical_message)+TMPSIZE; + + char mime_part_1[TMPSIZE]; + char mime_part_2[TMPSIZE]; + char content_id[TMPSIZE]; + char boundary[TMPSIZE]; + struct utsname uts; + char* m; + + + if ((m = malloc(sizeof(char)*size)) == 0){ + fprintf(stderr,"%s: Can't allocate memory: %s\n",program_name,strerror(errno)); + exit(1); + } + + uname(&uts); + + srand(time(0)<calid; + FILE* p; + const char *org_addr; + + icalcomponent *inner = get_first_real_component(comp); + + icalproperty *organizer_prop = icalcomponent_get_first_property(inner,ICAL_ORGANIZER_PROPERTY); + const char *organizer = icalproperty_get_organizer(organizer_prop); + + org_addr = strchr(organizer,':'); + + if(org_addr != 0){ + org_addr++; /* Skip the ';' */ + } else { + org_addr = organizer; + } + + if (opt->errors == ERRORS_TO_ORGANIZER){ + p = popen(SENDMAIL,"w"); + } else { + p = stdout; + } + + if(p == 0){ + fprintf(stderr, + "%s: fatal. Could not open pipe to sendmail (\"%s\") \n", + program_name,SENDMAIL); + exit(1); + } + + fputs(make_mime(org_addr, local_attendee, "iMIP error", + message, "reply", + icalcomponent_as_ical_string(comp)),p); + + if (opt->errors == ERRORS_TO_ORGANIZER){ + pclose(p); + } +} + +/* The program had a fatal error and could not process the incoming component*/ +void return_error(icalcomponent* comp, char* message, struct options_struct *opt) +{ + + + fputs(make_mime("Dest", "Source", "iMIP system failure", + message, 0,0),stdout); + +} + +icalcomponent* make_reply(icalcomponent *comp, icalproperty *return_status, + struct options_struct *opt) + +{ + icalcomponent *reply, *rinner; + icalcomponent *inner = get_first_real_component(comp); + icalproperty *p=0; + char* local_attendee = opt->calid; + char attendee[TMPSIZE]; + + char prodid[TMPSIZE]; + + snprintf(attendee,TMPSIZE,"mailto:%s",local_attendee); + + snprintf(prodid,TMPSIZE,"-//Softwarestudio.org//%s version %s//EN",ICAL_PACKAGE,ICAL_VERSION); + + /* Create the base component */ + reply = icalcomponent_vanew( + ICAL_VCALENDAR_COMPONENT, + icalproperty_new_version(strdup("2.0")), + icalproperty_new_prodid(strdup(prodid)), + icalproperty_new_method(ICAL_METHOD_REPLY), + icalcomponent_vanew( + ICAL_VEVENT_COMPONENT, + icalproperty_new_clone( + icalcomponent_get_first_property(inner,ICAL_DTSTAMP_PROPERTY)), + icalproperty_new_clone( + icalcomponent_get_first_property(inner,ICAL_ORGANIZER_PROPERTY)), + icalproperty_new_clone( + icalcomponent_get_first_property(inner,ICAL_UID_PROPERTY)), + icalproperty_new_attendee(attendee), + 0), + 0); + + + /* Convert errors into request-status properties and transfers + them to the reply component */ + + icalcomponent_convert_errors(comp); + + rinner = get_first_real_component(reply); + + for(p = icalcomponent_get_first_property(inner, + ICAL_REQUESTSTATUS_PROPERTY); + p != 0; + p = icalcomponent_get_next_property(inner, + ICAL_REQUESTSTATUS_PROPERTY)){ + + icalcomponent_add_property(rinner,icalproperty_new_clone(p)); + } + + if(return_status != 0){ + icalcomponent_add_property(rinner, return_status); + } + + return reply; + +} + +int check_attendee(icalproperty *p, struct options_struct *opt){ + const char* s = icalproperty_get_attendee(p); + char* lower_attendee = lowercase(s); + char* local_attendee = opt->calid; + + /* Check that attendee begins with "mailto:" */ + if (strncmp(lower_attendee,"mailto:",7) == 0){ + /* skip over the mailto: part */ + lower_attendee += 7; + + if(strcmp(lower_attendee,local_attendee) == 0){ + return 1; + } + + lower_attendee -= 7; + + free(lower_attendee); + } + + return 0; +} + +char static_component_error_str[PATH_MAX]; +char* check_component(icalcomponent* comp, icalproperty **return_status, + struct options_struct *opt) +{ + char* component_error_str=0; + icalcomponent* inner; + int errors = 0; + icalproperty *p; + int found_attendee = 0; + struct icalreqstattype rs; + + rs.code = ICAL_UNKNOWN_STATUS; + rs.desc = 0; + rs.debug = 0; + + /*{ + icalrequeststatus code; + const char* desc; + const char* debug; + };*/ + + *return_status = 0; + + /* This do/while loop only executes once because it is being used + to fake exceptions */ + + do { + + /* Check that we actually got a component */ + if(comp == 0){ + strcpy(static_component_error_str, + "Did not find a component"); + component_error_str = static_component_error_str; + break; + } + + /* Check that the root component is a VCALENDAR */ + if(icalcomponent_isa(comp) != ICAL_VCALENDAR_COMPONENT){ + strcpy(static_component_error_str, + "Root component is not a VCALENDAR"); + component_error_str = static_component_error_str; + rs.code = ICAL_3_11_MISSREQCOMP_STATUS; + + break; + } + + + /* Check that the component has a METHOD */ + + if (icalcomponent_get_first_property(comp,ICAL_METHOD_PROPERTY) == 0) + { + strcpy(static_component_error_str, + "The component you sent did not have a METHOD property"); + component_error_str = static_component_error_str; + rs.code = ICAL_3_11_MISSREQCOMP_STATUS; + break; + } + + inner = get_first_real_component(comp); + + + /* Check that the compopnent has an organizer */ + if(icalcomponent_get_first_property(inner,ICAL_ORGANIZER_PROPERTY) == 0){ + fprintf(stderr,"%s: fatal. Component does not have an ORGANIZER property\n",program_name); + rs.code = ICAL_3_11_MISSREQCOMP_STATUS; + break; + } + + + /* Check for this user as an attendee or organizer */ + + for(p = icalcomponent_get_first_property(inner,ICAL_ATTENDEE_PROPERTY); + p != 0; + p = icalcomponent_get_next_property(inner,ICAL_ATTENDEE_PROPERTY)){ + + found_attendee += check_attendee(p,opt); + } + + for(p = icalcomponent_get_first_property(inner,ICAL_ORGANIZER_PROPERTY); + p != 0; + p = icalcomponent_get_next_property(inner,ICAL_ORGANIZER_PROPERTY)){ + + found_attendee += check_attendee(p,opt); + } + + if (found_attendee == 0){ + struct icalreqstattype rs; + memset(static_component_error_str,0,PATH_MAX); + + snprintf(static_component_error_str,PATH_MAX, + "This target user (%s) is not listed as an attendee or organizer", + opt->calid ); + component_error_str = static_component_error_str; + + rs.code = ICAL_3_7_INVCU_STATUS; + + break; + } + + + + /* Check that the component passes iTIP restrictions */ + + errors = icalcomponent_count_errors(comp); + icalrestriction_check(comp); + + if(errors != icalcomponent_count_errors(comp)){ + snprintf(static_component_error_str,PATH_MAX, + "The component does not conform to iTIP restrictions.\n Here is the original component; look at the X-LIC-ERROR properties\nfor details\n\n%s",icalcomponent_as_ical_string(comp)); + component_error_str = static_component_error_str; + break; + } + + + + } while(0); + + if(rs.code != ICAL_UNKNOWN_STATUS){ + *return_status = icalproperty_new_requeststatus(rs); + } + + return component_error_str; +} + + +void usage(char *message) +{ + fprintf(stderr,"Usage: %s [-emdcn] [-i inputfile] [-o outputfile] [-u calid]\n",program_name); + fprintf(stderr,"-e\tInput data is encapsulated in a MIME Message \n\ +-m\tInput is raw iCal \n\ +-i\tSpecify input file. Otherwise, input comes from stdin\n\ +-o\tSpecify file to save incoming message to\n\ +-d\tSpecify database to send data to\n\ +-u\tSet the calid to store the data to\n\ +-n\tSend errors to stdout instead of organizer\n\ +"); + +} + + +void get_options(int argc, char* argv[], struct options_struct *opt) +{ + int c; + extern char *optarg; + extern int optind, optopt; + int errflg=0; + + opt->storage = STORE_IN_FILE; + opt->input_source = INPUT_FROM_STDIN; + opt->input_type = INPUT_IS_ICAL; + opt->input_file = 0; + opt->errors = ERRORS_TO_ORGANIZER; + opt->calid = 0; + opt->output_file = 0; + + + while ((c = getopt(argc, argv, "nemu:o:d:b:c:i:")) != -1) { + switch (c) { + case 'e': { /* Input data is MIME encapsulated */ + opt->input_type = INPUT_IS_MIME; + break; + } + case 'm': { /* Input is iCal. Default*/ + opt->input_type = INPUT_IS_ICAL; + break; + } + case 'i': { /* Input comes from named file */ + opt->input_source = INPUT_FROM_FILE; + opt->input_file = strdup(optarg); + break; + } + case 'o': { /* Output goes to named file. Default*/ + opt->output_file = strdup(optarg); + opt->storage = STORE_IN_FILE; + break; + } + case 'd': { /* Output goes to database */ + fprintf(stderr,"%s: option -d is unimplmented\n",program_name); + opt->storage = STORE_IN_DB; + errflg++; + break; + } + case 'c': { + + break; + } + case 'u': { /* Set the calid for the output database or + file. Default is user name of user running + program */ + opt->calid = strdup(optarg); + break; + } + + case 'n': { /* Dump error to stdout. Default is to + send error to the organizer specified + in the iCal data */ + opt->errors = ERRORS_TO_STDOUT; + break; + } + + case ':': {/* Option given without an operand */ + fprintf(stderr, + "%s: Option -%c requires an operand\n", + program_name,optopt); + errflg++; + break; + } + case '?': { + errflg++; + } + + } + + if (errflg >0){ + usage(""); + exit(1); + } + } + + if(opt->calid == 0){ + /* If no calid specified, use username */ + char attendee[PATH_MAX]; + char* user = getenv("USER"); + struct utsname uts; + uname(&uts); + /* HACK nodename may not be a fully qualified domain name */ + snprintf(attendee,PATH_MAX,"%s@%s",user,uts.nodename); + + opt->calid = lowercase(attendee); + } + + if(opt->storage == STORE_IN_FILE && + opt->output_file ==0){ + char file[PATH_MAX]; + char* user = getenv("USER"); + struct passwd *pw; + + if(!user){ + fprintf(stderr,"%s: Can't get username. Try explicitly specifing the output file with -o", program_name); + exit(1); + } + + /* Find password entry for user */ + while( (pw = getpwent())!=0){ + if(strcmp(user,pw->pw_name)==0){ + break; + } + } + + if(pw==0){ + fprintf(stderr,"%s: Can't get get password entry for user \"%s\" Try explicitly specifing the output file with -o", + program_name,user); + exit(1); + } + + if(pw->pw_dir==0){ + fprintf(stderr,"%s: User \"%s\" has no home directory. Try explicitly specifing the output file with -o", + program_name, user); + exit(1); + } + + snprintf(file,PATH_MAX,"%s/.facs/%s",pw->pw_dir,opt->calid); + + opt->output_file = strdup(file); + } + + + /* Now try to create the calendar directory if it does + not exist */ + + if(opt->storage == STORE_IN_FILE ) { + char * p; + char* facspath = strdup(opt->output_file); + enum file_type type; + + /* Cut off the last slash to make it just a directoy */ + + p = strrchr(facspath,'/'); + + if (p != 0){ + /* Use some other directory */ + *p='\0'; + + type = test_file(facspath); + + errno = 0; + if (type == NO_FILE){ + + if(mkdir(facspath,0775) != 0){ + fprintf(stderr, + "%s: Failed to create calendar directory %s: %s\n", + program_name,facspath, strerror(errno)); + exit(1); + } else { + fprintf(stderr,"%s: Creating calendar directory %s\n", + program_name,facspath); + } + + } else if(type==REGULAR || type == ERROR){ + fprintf(stderr,"%s: Cannot create calendar directory %s\n", + program_name,facspath); + exit(1); + } + } + } +} + +char* check_options(struct options_struct *opt) +{ + return 0; +} + +void store_component(icalcomponent *comp, struct options_struct *opt) +{ + icalerrorenum error; + + + if(opt->storage == STORE_IN_FILE){ + icalset *fs = icalfileset_new(opt->output_file); + + if (fs == 0){ + fprintf(stderr, + "%s: Failed to get incoming component directory: %s\n", + program_name, icalerror_strerror(icalerrno)); + exit(1); + } + + + error = icalfileset_add_component(fs,comp); + + if (error != ICAL_NO_ERROR){ + fprintf(stderr,"%s: Failed to write incoming component: %s\n", + program_name, icalerror_strerror(icalerrno)); + exit(1); + } + + error = icalfileset_commit(fs); + + if (error != ICAL_NO_ERROR){ + fprintf(stderr,"%s: Failed to commit incoming cluster: %s\n", + program_name, icalerror_strerror(icalerrno)); + exit(1); + } + + icalset_free(fs); + + return; + } else { + assert(0); + } +} + +char* read_stream(char *s, size_t size, void *d) +{ + char *c = fgets(s,size, (FILE*)d); + + return c; +} + +icalcomponent* read_nonmime_component(struct options_struct *opt) +{ + FILE *stream; + icalcomponent *comp; + icalparser* parser = icalparser_new(); + icalerrorstate es = icalerror_get_error_state(ICAL_MALFORMEDDATA_ERROR); + char* line; + + if(opt->input_source == INPUT_FROM_FILE){ + stream = fopen(opt->input_file,"r"); + + if (stream == 0){ + perror("Can't open input file"); + exit(1); + } + + } else { + stream = stdin; + } + + assert(stream != 0); + icalparser_set_gen_data(parser,stream); + + do { + line = icalparser_get_line(parser,read_stream); + + icalerror_set_error_state(ICAL_MALFORMEDDATA_ERROR,ICAL_ERROR_NONFATAL); + comp = icalparser_add_line(parser,line); + icalerror_set_error_state(ICAL_MALFORMEDDATA_ERROR,es); + + if (comp != 0){ + return comp; + } + + } while ( line != 0); + + if(opt->input_source == INPUT_FROM_FILE){ + fclose(stream); + } + + + return comp; + } + +icalcomponent* find_vcalendar(icalcomponent* comp) +{ + icalcomponent *c,*rtrn; + + for(c = icalcomponent_get_first_component(comp,ICAL_ANY_COMPONENT); + c != 0; + c = icalcomponent_get_next_component(comp,ICAL_ANY_COMPONENT)){ + + if(icalcomponent_isa(c) == ICAL_VCALENDAR_COMPONENT){ + icalcomponent_remove_component(comp,c); + return c; + } + + if((rtrn=find_vcalendar(c)) != 0){ + return rtrn; + } + } + + return 0; +} + +icalcomponent* read_mime_component(struct options_struct *opt) +{ + icalcomponent *comp,*mimecomp; + FILE* stream; + + if(opt->input_source == INPUT_FROM_FILE){ + stream = fopen(opt->input_file,"r"); + + if (stream == 0){ + perror("Can't open input file"); + exit(1); + } + + } else { + stream = stdin; + } + + assert(stream != 0); + + mimecomp = icalmime_parse(read_stream,(void*)stream); + + /* now find the iCal component embedded within the mime component */ + comp = find_vcalendar(mimecomp); + + + if(comp == 0){ + return 0; + } + + return comp; +} + +icalcomponent* read_component(struct options_struct *opt) +{ + if(opt->input_type == INPUT_IS_MIME){ + return read_mime_component(opt); + } else if (opt->input_type == INPUT_IS_ICAL){ + return read_nonmime_component(opt); + } else { + fprintf(stderr,"%s: Internal Error; unknown option for input_type\n", + program_name); + exit(1); + } +} + +int main(int argc, char* argv[] ) +{ + char* options_error_str; + char* component_error_str; + icalcomponent* comp, *reply; + struct options_struct opt; + icalproperty *return_status; + + program_name = strrchr(argv[0],'/'); + + get_options(argc, argv, &opt); + + if ( (options_error_str = check_options(&opt)) != 0 ){ + usage(options_error_str); + exit(1); + } + + comp = read_component(&opt); + + /* If the component had any fatal errors, return an error message + to the organizer */ + if ( (component_error_str = + check_component(comp,&return_status,&opt)) != 0){ + + reply = make_reply(comp,return_status,&opt); + + return_failure(reply, component_error_str, &opt); + icalcomponent_free(reply); + exit(0); + + } + + store_component(comp,&opt); + + + /* Don't free the component comp, since it is now part of the + store, and will be freed there */ + + exit(0); +} + diff --git a/mozilla/calendar/libical/src/test/test_fileset.ics b/mozilla/calendar/libical/src/test/test_fileset.ics new file mode 100644 index 00000000000..35799e45693 --- /dev/null +++ b/mozilla/calendar/libical/src/test/test_fileset.ics @@ -0,0 +1,60 @@ +BEGIN:VCALENDAR +METHOD:REQUEST +BEGIN:VEVENT +DTSTART:20000101T120000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +BEGIN:VEVENT +DTSTART:20000102T120000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +BEGIN:VEVENT +DTSTART:20000103T120000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +BEGIN:VEVENT +DTSTART:20000104T120000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +BEGIN:VEVENT +DTSTART:20000105T120000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +BEGIN:VEVENT +DTSTART:20000106T120000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +BEGIN:VEVENT +DTSTART:20000107T120000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +BEGIN:VEVENT +DTSTART:20000108T120000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +BEGIN:VEVENT +DTSTART:20000109T120000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +BEGIN:VEVENT +DTSTART:20000110T120000Z +END:VEVENT +END:VCALENDAR diff --git a/mozilla/calendar/libical/src/test/testclassify.c b/mozilla/calendar/libical/src/test/testclassify.c new file mode 100644 index 00000000000..fc7cff1d536 --- /dev/null +++ b/mozilla/calendar/libical/src/test/testclassify.c @@ -0,0 +1,128 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: testclassify.c + CREATOR: eric 11 February 2000 + + $Id: testclassify.c,v 1.5 2001/04/16 21:04:20 ebusboom Exp $ + $Locker: $ + + (C) COPYRIGHT 2000 Eric Busboom + http://www.softwarestudio.org + + The contents of this file are subject to the Mozilla Public License + Version 1.0 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and + limitations under the License. + + The Original Code is eric. The Initial Developer of the Original + Code is Eric Busboom + + + ======================================================================*/ + +#include /* for printf */ +#include "ical.h" +#include +#include /* For strerror */ +#include "icalss.h" + +/* Get a note about the purpose of the property*/ +const char* get_note(icalcomponent *c) +{ + icalproperty *p; + const char* note = 0; + + if(c != 0){ + for(p = icalcomponent_get_first_property(c,ICAL_X_PROPERTY); + p!= 0; + p = icalcomponent_get_next_property(c,ICAL_X_PROPERTY)){ + if(strcmp(icalproperty_get_x_name(p),"X-LIC-NOTE")==0){ + note = icalproperty_get_x(p); + } + } + } + + if(note == 0){ + note = "None"; + } + + return note; +} + + +int main(int argc, char* argv[]) +{ + icalcomponent *c; + int i=0; + + /* Open up the two storage files, one for the incomming components, + one for the calendar */ + icalset* incoming = icalset_new_file("../../test-data/incoming.ics"); + icalset* cal = icalset_new_file("../../test-data/calendar.ics"); + + assert(incoming!= 0); + assert(cal!=0); + + /* Iterate through all of the incoming components */ + for(c=icalset_get_first_component(incoming);c!=0; + c=icalset_get_next_component(incoming)){ + + icalproperty_xlicclass class; + icalcomponent *match = 0; + const char* this_uid; + + i++; + + /* Check this component against the restrictions imposed by + iTIP. An errors will be inserted as X-LIC-ERROR properties + in the component. The Parser will also insert errors if it + cannot parse the component */ + icalcomponent_check_restrictions(c); + + /* If there are any errors, print out the component */ + if(icalcomponent_count_errors(c) != 0){ + printf("----- Component has errors ------- \n%s-----------------\n", + icalcomponent_as_ical_string(c)); + } + + /* Use one of the icalcomponent convenience routines to get + the UID. This routine will save you from having to use + icalcomponent_get_inner(), + icalcomponent_get_first_property(), checking the return + value, and then calling icalproperty_get_uid. There are + several other convenience routines for DTSTART, DTEND, + DURATION, SUMMARY, METHOD, and COMMENT */ + this_uid = icalcomponent_get_uid(c); + + if(this_uid != 0){ + /* Look in the calendar for a component with the same UID + as the incomming component. We should reall also be + checking the RECURRENCE-ID. Another way to do this + operation is to us icalset_find_match(), which does use + the RECURRENCE-ID. */ + match = icalset_fetch(cal,this_uid); + } + + + /* Classify the incoming component. The third argument is the + calid of the user who owns the calendar. In a real program, + you would probably switch() on the class.*/ + class = icalclassify(c,match,"A@example.com"); + + printf("Test %d\n\ +Incoming: %s\n\ +Matched: %s\n\ +Classification: %s\n\n", + i,get_note(c),get_note(match), + icalproperty_enum_to_string(class)); + } + + return 0; +} + + diff --git a/mozilla/calendar/libical/src/test/testmime.c b/mozilla/calendar/libical/src/test/testmime.c new file mode 100644 index 00000000000..c87d3064eba --- /dev/null +++ b/mozilla/calendar/libical/src/test/testmime.c @@ -0,0 +1,339 @@ +/* -*- Mode: C -*- + ====================================================================== + FILE: + CREATOR: eric 25 June 2000 + + $Id: testmime.c,v 1.3 2002/06/28 10:45:12 acampi Exp $ + $Locker: $ + + The contents of this file are subject to the Mozilla Public License + Version 1.0 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and + limitations under the License. + + + This program is free software; you can redistribute it and/or modify + it under the terms of either: + + The LGPL as published by the Free Software Foundation, version + 2.1, available at: http://www.fsf.org/copyleft/lesser.html + + Or: + + The Mozilla Public License Version 1.0. You may obtain a copy of + the License at http://www.mozilla.org/MPL/ + + The Initial Developer of the Original Code is Eric Busboom + + (C) COPYRIGHT 2000, Eric Busboom, http://www.softwarestudio.org + ======================================================================*/ + +#include "ical.h" + +#include /* For rand */ +#include /* for strrchr, strdup*/ +#include /* for getopt */ + +/*int sspm_parse_mime(struct sspm_part *parts, + size_t max_parts, + struct sspm_action_map *actions, + char* (*get_string)(char *s, size_t size, void* data), + void *get_string_data, + struct sspm_header *first_header + ); +*/ + + + +char* major_type_string[] = { + "TEXT", + "IMAGE", + "AUDIO", + "VIDEO", + "APPLICATION", + "MULTIPART", + "MESSAGE", + "UNKNOWN", + "NO" +}; + +char* minor_type_string[] = { + "ANY", + "PLAIN", + "RFC822", + "DIGEST", + "CALENDAR", + "MIXED", + "RELATED", + "ALTERNATIVE", + "PARALLEL", + "UNKNOWN", + "NO" +}; + + +char* read_stream(char *s, size_t size, void *d) +{ + char *c = fgets(s,size, (FILE*)d); + + return c; + +} + + +int main(int argc, char* argv[]) { + + FILE *f; + int c; + extern char *optarg; + extern int optind, optopt; + int errflg=0; + char* program_name; + + struct options{ + int normal; + int stress; + int base64; + int qp; + int sleep; + int count; + char* input_file; + } opt; + + memset(&opt,0,sizeof(opt)); + + program_name = (char*)strrchr((char*)argv[0],'/'); + program_name++; + + while ((c = getopt(argc, argv, "nsbqi:S:c:")) != -1) { + switch (c) { + case 'i': { /* Input comes from named file */ + opt.input_file = strdup(optarg); + break; + } + case 'n':{ /* Normal */ + + if(opt.stress+opt.base64+opt.qp != 0){ + fprintf(stderr, + "%s: Use only one of n,s,b and q\n", + program_name); + } + opt.normal = 1; + break; + } + case 's':{ /* Stress-test*/ + if(opt.base64+opt.normal+opt.qp != 0){ + fprintf(stderr, + "%s: Use only one of n,s,b and q\n", + program_name); + } + opt.stress = 1; + break; + } + case 'b':{ /* test base64 decoding*/ + if(opt.stress+opt.normal+opt.qp != 0){ + fprintf(stderr, + "%s: Use only one of n,s,b and q\n", + program_name); + } + opt.base64 = 1; + break; + } + case 'q':{ /* test quoted-printable decoding*/ + if(opt.stress+opt.base64+opt.normal != 0){ + fprintf(stderr, + "%s: Use only one of n,s,b and q\n", + program_name); + } + opt.qp = 1; + break; + } + case 'S':{ /* sleep at end of run */ + opt.sleep = atoi(optarg); + break; + } + + case 'c':{ /* number of iterations of stress test */ + opt.count = atoi(optarg); + break; + } + + case ':': {/* Option given without an operand */ + fprintf(stderr, + "%s: Option -%c requires an operand\n", + program_name,optopt); + errflg++; + break; + } + case '?': { + errflg++; + } + } + } + + if (errflg >0){ + fprintf(stderr,"Usage: %s [-n|-s|-b|-q] [-i input_file]\n", + program_name); + exit(1); + } + + if(opt.stress+opt.base64+opt.normal+opt.qp == 0){ + fprintf(stderr, + "%s: Must have one of n,s,b or q\n", + program_name); + } + + if(opt.input_file){ + f = fopen(opt.input_file,"r"); + if (f == 0){ + fprintf(stderr,"Could not open input file \"%s\"\n", + opt.input_file); + exit(1); + } + } else { + f = stdin; + } + + + + if(opt.normal == 1){ + icalcomponent *c; + + c = icalmime_parse(read_stream,f); + + printf("%s\n",icalcomponent_as_ical_string(c)); + + icalcomponent_free(c); + + } else if (opt.stress==1 ){ + /* Read file in by lines, then randomize the lines into a + string buffer */ + + char *array[1024]; + char temp[1024]; + char *buf; + int i,last; + int size; + int non_rand; + int rand_lines; + int r; + int j; + icalcomponent *c; + struct slg_data { + char* pos; + char* str; + } d; + + for(i=0; !feof(f); i++){ + fgets(temp,1024,f); + array[i] = strdup(temp); + size += strlen(temp); + } + last = i; + + buf = malloc(size*2); + assert(buf != 0); + + + for(j=0; j + +/* Given a vCal data file as its first argument, this program will + print out an equivalent iCal component. + + For instance: + + ./testvcal ../../test-data/user-cal.vcf + +*/ + +int main(int argc, char* argv[]) +{ + VObject *vcal = 0; + icalcomponent *comp; + char* file; + + if (argc != 2){ + file = "../../test-data/user-cal.vcf"; + } else { + file = argv[1]; + } + + + vcal = Parse_MIME_FromFileName(file); + + assert(vcal != 0); + + comp = icalvcal_convert(vcal); + + printf("%s\n",icalcomponent_as_ical_string(comp)); + + return 0; +} + + diff --git a/mozilla/calendar/libical/test-data/0 b/mozilla/calendar/libical/test-data/0 new file mode 100644 index 00000000000..ed915ad582d --- /dev/null +++ b/mozilla/calendar/libical/test-data/0 @@ -0,0 +1,7 @@ +BEGIN:VCALENDAR +BEGIN:VEVENT +SUMMARY:Bastille Day Party This option indicates that xauth should attempt to break any authority file locks before proceeding. +SUMMARY:Bastille Day Party This option indicates that xauth should + attempt to break any authority file locks before proceeding. +END:VEVENT +END:VCALENDAR diff --git a/mozilla/calendar/libical/test-data/1 b/mozilla/calendar/libical/test-data/1 new file mode 100644 index 00000000000..a4d078d47b6 --- /dev/null +++ b/mozilla/calendar/libical/test-data/1 @@ -0,0 +1,38 @@ +BEGIN:VCALENDAR +PRODID:"-//RDU Software//NONSGML HandCal//EN" +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTAR:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:MAILTO:employee-A@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:mailto:Employee-B@HOST.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:MailTo:Eric@Agony.Qualcomm.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTAR;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR + diff --git a/mozilla/calendar/libical/test-data/1.1 b/mozilla/calendar/libical/test-data/1.1 new file mode 100644 index 00000000000..a7c92c33bdc --- /dev/null +++ b/mozilla/calendar/libical/test-data/1.1 @@ -0,0 +1,13 @@ +BEGIN:VCALENDAR +DURATION:P15DT5H0M20S +DURATION:P7W +URL;CN=John Smith:http://example.com/urivalue.html +X-SKI-TITLE;RSVP=TRUE: This is an extension property +SUMMARY:"No Property" +SUMMARY;RSVP=TRUE;RSVP=FALSE:Calendaring Interoperability Planning Meeting +SUMMARY;ALTREP=This is an xname:altrep +SUMMARY;CUTYPE=DESCRIPTION is a keyword:Xname parameter +DTEND:19990605 +DTSTART:19990605T103012 +CATEGORIES;RSVP=TRUE;RSVP=FALSE:one,two +END:VCALENDAR diff --git a/mozilla/calendar/libical/test-data/2 b/mozilla/calendar/libical/test-data/2 new file mode 100644 index 00000000000..50ba609ab35 --- /dev/null +++ b/mozilla/calendar/libical/test-data/2 @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +METHOD:xyz +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML + My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T1200Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +ATTENDEE;RSVP=TRUE:MAILTO:jsmith@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR diff --git a/mozilla/calendar/libical/test-data/2445.ics b/mozilla/calendar/libical/test-data/2445.ics new file mode 100644 index 00000000000..ecf6f106ff6 --- /dev/null +++ b/mozilla/calendar/libical/test-data/2445.ics @@ -0,0 +1,331 @@ +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTART:19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +END:VEVENT +END:VCALENDAR + +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T130000Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123402@host.com +DTSTAMP:19970901T130000Z +DTSTART:19970401T163000Z +DTEND:19970402T010000Z +SUMMARY:Laurel is in sensitivity awareness class. +CLASS:PUBLIC +CATEGORIES:BUSINESS,HUMAN RESOURCES +TRANSP:TRANSPARENT +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123403@host.com +DTSTAMP:19970901T130000Z +DTSTART:19971102 +SUMMARY:Our Blissful Anniversary +CLASS:CONFIDENTIAL +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +RRULE:FREQ=YEARLY +END:VEVENT + +BEGIN:VTODO +UID:19970901T130000Z-123404@host.com +DTSTAMP:19970901T130000Z +DTSTART:19970415T133000Z +DUE:19970416T045959Z +SUMMARY:1996 Income Tax Preparation +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +STATUS:NEEDS-ACTION +END:VTODO + +BEGIN:VJOURNAL +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T130000Z +DTSTART;VALUE=DATE:19970317 +SUMMARY:Staff meeting minutes +DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa + and Bob. Aurora project plans were reviewed. There is currently + no budget reserves for this project. Lisa will escalate to + management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative called + to discuss new printer. Promised to get us a demo by Friday.\n + 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. + Is looking into a loaner car. 654-2323 (tel). +END:VJOURNAL +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +DTSTAMP:19970901T083000Z +END:VFREEBUSY + +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTAMP:19970901T100000Z +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M +URL:http://host2.com/pub/busy/jpublic-01.ifb +COMMENT:This iCalendar file contains busy time information for + the next three months. +END:VFREEBUSY + +BEGIN:VFREEBUSY +ORGANIZER:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19971026T020000 +RDATE:19971026T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19971026T020000 +RDATE:19970406T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +BEGIN:DAYLIGHT +DTSTART:19990424T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +REPEAT:4 +DURATION:PT15M +ACTION:AUDIO +ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +REPEAT:2 +DURATION:PT15M +ACTION:DISPLAY +DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. +END:VALARM +BEGIN:VALARM +TRIGGER:-P2D +ACTION:EMAIL +ATTENDEE:MAILTO:john_doe@host.com +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. +ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen + da.doc +END:VALARM +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +REPEAT:23 +DURATION:PT1H +ACTION:PROCEDURE +ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- + procs/felizano.exe +END:VALARM + +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + MAILTO:employee-A@host.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTART;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR + + +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T120000Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ + conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER:P1DT25M +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- + files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR + +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ, Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR diff --git a/mozilla/calendar/libical/test-data/2446.ics b/mozilla/calendar/libical/test-data/2446.ics new file mode 100644 index 00000000000..c6e2359aa1b --- /dev/null +++ b/mozilla/calendar/libical/test-data/2446.ics @@ -0,0 +1,1006 @@ + +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTART:19970701T200000Z +DTSTAMP:19970611T190000Z +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970612T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SEQUENCE:1 +UID:0981234-1234234-23@example.com +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:CANCEL +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +COMMENT:DUKES forfeit the game +SEQUENCE:2 +UID:0981234-1234234-23@example.com +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +CALSCALE:GREGORIAN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-Chicago +TZURL:http://zones.stds_r_us.net/tz/America-Chicago +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +ATTACH:http://www.dukes.com/ +CATEGORIES:SPORTS EVENT,ENTERTAINMENT +CLASS:PRIVATE +DESCRIPTION:MIDWAY STADIUM\n + Big time game. MUST see.\n + Expected duration:2 hours\n +DTEND;TZID=America-Chicago:19970701T180000 +DTSTART;TZID=America-Chicago:19970702T160000 +DTSTAMP:19970614T190000Z +STATUS:CONFIRMED +LOCATION;VALUE=URI:http://www.midwaystadium.com/ +PRIORITY:2 +RESOURCES:SCOREBOARD +SEQUENCE:3 +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +RELATED-TO:0981234-1234234-14@example.com +BEGIN:VALARM +TRIGGER:-PT2H +ACTION:DISPLAY +DESCRIPTION:You should be leaving for the game now. +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +ACTION:AUDIO +END:VALARM +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970614T190000Z +UID:0981234-1234234-23@example.com +DTSTART;VALUE=DATE:19970714 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY: Bastille Day +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T200000Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE; + CUTYPE=ROOM:Mailto:Conf@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T190000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +DTSTAMP:19970613T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T190000Z +DTEND:19970701T200000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +DTSTAMP:19970611T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:COUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +DTSTAMP:19970612T190000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +COMMENT:This time works much better and I think the big conference + room is too big +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +SUMMARY:Discuss the Merits of the election results - changed to + meet B's schedule +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:DECLINECOUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +COMMENT:Sorry\, I cannot change this meeting time +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +ATTENDEE;RSVP=TRUE; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED- + FROM="Mailto:C@example.com":Mailto:E@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED; + DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com +COMMENT:Sorry\, I will be out of town at that time. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DECLINED; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +SUMMARY:Phone Conference +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +DTSTAMP:19970614T200000Z +COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR + INVITATION +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +COMMENT:Mr. B cannot attend. It's raining. Lets cancel. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CANCELLED +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:mailto:B@example.com +COMMENT:You're off the hook for this meeting +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970613T193000Z +SEQUENCE:1 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +ATTENDEE;CUTYPE=ROOM:CR_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT; + RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:2 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +RRULE:FREQ=WEEKLY +SUMMARY:Phone Conference +UID:123456@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +METHOD:PUBLISH +BEGIN:VFREEBUSY +DTSTAMP:19980101T124100Z +ORGANIZER:MAILTO:A@Example.com +DTSTART:19980101T124200Z +DTEND:19980107T124200Z +FREEBUSY:19980101T180000Z/19980101T190000Z +FREEBUSY:19980103T020000Z/19980103T050000Z +FREEBUSY:19980107T020000Z/19980107T050000Z +FREEBUSY:19980113T000000Z/19980113T010000Z +FREEBUSY:19980115T190000Z/19980115T200000Z +FREEBUSY:19980115T220000Z/19980115T230000Z +FREEBUSY:19980116T013000Z/19980116T043000Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T080000Z +DTEND:19970701T200000 +UID:calsrv.example.com-873970198738777@example.com +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:A@example.com +ATTENDEE:Mailto:B@example.com +DTSTART:19970701T080000Z +DTEND:19970701T200000Z +UID:calsrv.example.com-873970198738777@example.com +FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M +DTSTAMP:19970613T190030Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-SanJose +TZURL:http://zones.stds_r_us.net/tz/America-SanJose +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:A@example.COM +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:B@example.fr +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:c@example.jp +DTSTAMP:19970613T190030Z +DTSTART;TZID=America-SanJose:19970701T140000 +DTEND;TZID=America-SanJose:19970701T150000 +RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU +RDATE;TZID=America-SanJose:19970910T140000 +EXDATE;TZID=America-SanJose:19970909T140000 +EXDATE;TZID=America-SanJose:19971028T140000 +SUMMARY:Weekly Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +LOCATION:Conference Call +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1com +RECURRENCE-ID:19970701T210000Z +SEQUENCE:1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970703T210000Z +DTEND:19970703T220000Z +LOCATION:Conference Call +DTSTAMP:19970626T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +RECURRENCE-ID:19970801T210000Z +SEQUENCE:2 +STATUS:CANCELLED +DTSTAMP:19970721T093000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DTSTAMP:19970721T103000Z +STATUS:CANCELLED +SEQUENCE:3 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID;RANGE=THISANDFUTURE:19970901T210000Z +SEQUENCE:3 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Discussion +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970901T210000Z +DTEND:19970901T220000Z +LOCATION:Building 32\, Microsoft\, Seattle\, WA +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T210000Z +DTEND:19970715T220000Z +LOCATION:Conference Call +DTSTAMP:19970629T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +LOCATION:The White Room +DTSTAMP:19980301T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The Usual conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU,TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The White Room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RDATE:19980304T180000Z +RDATE:19980311T180000Z +RDATE:19980318T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:1 +RECURRENCE-ID:19980311T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980311T180000Z +DTSTAMP:19980306T193000Z +LOCATION:The Small conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980315T180000Z +DTEND:19980315T200000Z +DTSTAMP:19980307T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +RDATE:19980304T180000Z +RDATE:19980311T160000Z +RDATE:19980315T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +SEQUENCE:2 +RECURRENCE-ID:19980311T160000Z +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980304T180000Z +DTSTAMP:19980306T193000Z +ORGANIZER:Mailto:A@example.com +LOCATION:The Small conference room +UID:guid-1@host1.com +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:COUNTER +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID:19970715T210000Z +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T220000Z +DTEND:19970715T230000Z +LOCATION:Conference Call +COMMENT:May we bump this by an hour? I have a conflict +DTSTAMP:19970629T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +DTSTAMP:19970602T094000Z +LOCATION:Conference Call +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single + event;RRULE +REQUEST-STATUS:3.0;Invalid Property Name;FOO +UID:guid-1@host1.com +SEQUENCE:0 +DTSTAMP:19970603T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:NEEDS-ACTION +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +UID:calsrv.example.com-873970198738777-00@example.com +COMMENT:I'll send you my input by e-mail +SEQUENCE:0 +DTSTAMP:19970717T203000Z +REQUEST-STATUS:2.0;Success +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +SUMMARY:Create the requirements document +PRIORITY:1 +SEQUENCE:0 +STATUS:IN-PROCESS +DTSTART:19970701T170000Z +DTSTAMP:19970717T230000Z +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +REQUEST-STATUS:2.0 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +REQUEST-STATUS:2.0 +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;PARTSTAT=IN-PROCESS;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:1 +DTSTAMP:19970718T100000Z +STATUS:IN-PROCESS +PERCENT-COMPLETE:40 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR +DTSTART:19980101T100000 +DUE:19980103T100000 +SUMMARY:Send Status Reports to Area Managers +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:NEEDS-ACTION +PRIORITY:1 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +RECURRENCE-ID:19980101T170000Z +SEQUENCE:1 +ORGANIZER:MAILTO:A@Example.com +REQUEST-STATUS:2.0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VJOURNAL +DTSTART:19971002T200000Z +DTSTAMP:19971002T200000Z +ORGANIZER:MAILTO:A@Example.com +SUMMARY:Phone conference minutes +DESCRIPTION:The editors meeting was held on October 1\, 1997. + Details are in the attached document. +UID:0981234-1234234-2410@example.com +RELATED-TO:0981234-1234234-2402-35@example.com +ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +UID: guid-1-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:acme-12345@host1.com +SEQUENCE:3 +RRULE:FREQ=WEEKLY +RDATE;VALUE=PERIOD:19970819T210000Z/19970819T220000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +DESCRIPTION:IETF-C&S Conference Call +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970801T210000Z +DTEND:19970801T220000Z +RECURRENCE-ID:19970809T210000Z +DTSTAMP:19970726T083000 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +UID:acme-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR diff --git a/mozilla/calendar/libical/test-data/3 b/mozilla/calendar/libical/test-data/3 new file mode 100644 index 00000000000..008373ebfaf --- /dev/null +++ b/mozilla/calendar/libical/test-data/3 @@ -0,0 +1,21 @@ +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER;VALUE=DATE-TIME:19980403T120000 +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio-files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR diff --git a/mozilla/calendar/libical/test-data/4 b/mozilla/calendar/libical/test-data/4 new file mode 100644 index 00000000000..59c3d6917b9 --- /dev/null +++ b/mozilla/calendar/libical/test-data/4 @@ -0,0 +1,23 @@ +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ: Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR diff --git a/mozilla/calendar/libical/test-data/5 b/mozilla/calendar/libical/test-data/5 new file mode 100644 index 00000000000..ba1fd09f7f3 --- /dev/null +++ b/mozilla/calendar/libical/test-data/5 @@ -0,0 +1,16 @@ +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711 +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000/19980318T040000,19980318T030000/19980318T040000 +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR + + + diff --git a/mozilla/calendar/libical/test-data/6 b/mozilla/calendar/libical/test-data/6 new file mode 100644 index 00000000000..753bd2b66ce --- /dev/null +++ b/mozilla/calendar/libical/test-data/6 @@ -0,0 +1,12 @@ +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTART:19970701T200000Z +DTSTAMP:19970611T190000Z +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +END:VEVENT +END:VCALENDAR diff --git a/mozilla/calendar/libical/test-data/7 b/mozilla/calendar/libical/test-data/7 new file mode 100644 index 00000000000..0a255fc5140 --- /dev/null +++ b/mozilla/calendar/libical/test-data/7 @@ -0,0 +1,14 @@ +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970612T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SEQUENCE:1 +UID:0981234-1234234-23@example.com +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +END:VEVENT +END:VCALENDAR diff --git a/mozilla/calendar/libical/test-data/8 b/mozilla/calendar/libical/test-data/8 new file mode 100644 index 00000000000..ee0ad680f15 --- /dev/null +++ b/mozilla/calendar/libical/test-data/8 @@ -0,0 +1,6 @@ +BEGIN:VEVENT +DTSTART:19960701T200000Z +DTEND:19960701T210000Z +DTSTAMP:19960611T190000Z +END:VEVENT + diff --git a/mozilla/calendar/libical/test-data/Makefile.am b/mozilla/calendar/libical/test-data/Makefile.am new file mode 100644 index 00000000000..572010875d1 --- /dev/null +++ b/mozilla/calendar/libical/test-data/Makefile.am @@ -0,0 +1,27 @@ +EXTRA_DIST = \ +0 \ +1 \ +1.1 \ +2 \ +2445.ics \ +2446.ics \ +3 \ +4 \ +5 \ +6 \ +7 \ +smallcluster.ics \ +recur.txt \ +user-cal.vcf \ +complex-mime.txt \ +simple-mime.txt \ +stresstest.ics \ +classify.ics \ +incoming.ics \ +process-incoming.ics \ +calendar.ics \ +restriction.ics \ +overlaps.ics \ +spanlist.ics + + diff --git a/mozilla/calendar/libical/test-data/calendar.ics b/mozilla/calendar/libical/test-data/calendar.ics new file mode 100644 index 00000000000..417ce5079b6 --- /dev/null +++ b/mozilla/calendar/libical/test-data/calendar.ics @@ -0,0 +1,63 @@ +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CREATE +X-LIC-NOTE: #C1. Rescheduled by #I2\ and updated by #I3 +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T190000Z +DTEND:19970701T193000Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +X-LIC-NOTE: #C2. The test user is the organizer. +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE; + CUTYPE=ROOM:Mailto:Conf@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T190000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738785@example.com +SEQUENCE:0 +DTSTAMP:19970613T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CREATED +X-LIC-NOTE: #C3. Publish +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +DTSTAMP:19970610T190000Z +DTSTART:19970701T100000Z +DTEND:19970701T1100000Z +SUMMARY:Conference +UID:calsrv.example.com-1002@example.com +STATUS:CONFIRMED +SEQUENCE:2 +END:VEVENT +END:VCALENDAR diff --git a/mozilla/calendar/libical/test-data/classify.ics b/mozilla/calendar/libical/test-data/classify.ics new file mode 100644 index 00000000000..c7c5a1e4382 --- /dev/null +++ b/mozilla/calendar/libical/test-data/classify.ics @@ -0,0 +1,43 @@ +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19960701T200000Z +DTEND:19970701T200000Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19950611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T200000Z +SUMMARY:Conference in the park +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR diff --git a/mozilla/calendar/libical/test-data/complex-mime-error.txt b/mozilla/calendar/libical/test-data/complex-mime-error.txt new file mode 100644 index 00000000000..8beb20f3e2b --- /dev/null +++ b/mozilla/calendar/libical/test-data/complex-mime-error.txt @@ -0,0 +1,59 @@ +From: foo1@example.com +MIME-Version: 1.0 +To: foo2@example.com,foo3@example.com +Subject: REQUEST - Phone Conference +Content-Type:multipart/related;boundary="--FEE3790DC7E35189CA67CE2C" + +----FEE3790DC7E35189CA67CE2C +Content-Type: multipart/alternat; + boundary="--00FEE3790DC7E35189CA67CE2C00" + +----00FEE3790DC7E35189CA67CE2C00 + Content-Type: text/plain; charset=us-ascii + +Content-Transfer-Encoding: 7bit + +When: 7/1/1997 10:00PM PDT- 7/1/97 10:30 PM PDT +Where: +Organizer: foo1@example.com +Summary: Let's discuss the attached document + + +----00FEE3790DC7E35189CA67CE2C00 + +Content-Type:text/calendar; method=REQUEST; charset=US-ASCII; + Component=vevent +Content-Transfer-Encoding: 7bit +Content-Disposition: attachment; filename="event.vcs" + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:foo1@example.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:MAILTO:employee-A@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:mailto:Employee-B@HOST.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:MailTo:Eric@Agony.Qualcomm.com +DTSTAMP:19970611T190000Z +DTSTART:19970621T170000Z +DTEND:199706211T173000Z +SUMMARY:Let's discuss the attached document +UID:calsvr.example.com-873970198738777-8aa +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR + +00FEE3790DC7E35189CA67CE2C00-- + +----FEE3790DC7E35189CA67CE2C +Content-Type: application/msword; name="FieldReport +Content-Transfer-Encoding: base64 +Content-Disposition: inline; filename="FieldReport.doc" +Content-ID: + + +R0lGODdhTAQZAJEAAFVVVd3d3e4AAP///ywAAAAATAQZAAAC/5yPOSLhD6OctNqLs94XqAG +4kiW5omm6sq27gvH8kzX9o1y+s73/g8MCofEovGITCoxKMbyCR16cNSq9YrNarfcrvdriIH +5LL5jE6rxc3G+v2cguf0uv2Oz+v38L7/DxgoOKjURnjIIbe3yNjo+AgZWYVIWWl5iZnJY6J. + diff --git a/mozilla/calendar/libical/test-data/complex-mime.txt b/mozilla/calendar/libical/test-data/complex-mime.txt new file mode 100644 index 00000000000..32cb106dfdd --- /dev/null +++ b/mozilla/calendar/libical/test-data/complex-mime.txt @@ -0,0 +1,81 @@ +From: foo1@example.com +MIME-Version: 1.0 +To: foo2@example.com,foo3@example.com +Subject: REQUEST - Phone Conference +Content-Type:multipart/related;boundary="--FEE3790DC7E35189CA67CE2C" + +----FEE3790DC7E35189CA67CE2C +Content-Type: multipart/alternative; + boundary="--00FEE3790DC7E35189CA67CE2C00" + +----00FEE3790DC7E35189CA67CE2C00 +Content-Type: text/plain; charset=us-ascii +Content-Transfer-Encoding: 7bit + +When: 7/1/1997 10:00PM PDT- 7/1/97 10:30 PM PDT +Where: +Organizer: foo1@example.com +Summary: Let's discuss the attached document + + +----00FEE3790DC7E35189CA67CE2C00 +Content-Type:text/calendar; method=REQUEST; charset=US-ASCII; + Component=vevent +Content-Transfer-Encoding: quoted-printable +Content-Disposition: attachment; filename="event.vcs" + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +METHOD:REQUEST +BEGIN:VEVENT +ORGANIZER:foo1@example.com +ATTENDEE;RSVP=3DTRUE;ROLE=3DREQ-PARTICIPANT;CUTYPE=3DGROUP:MAILTO:employe= +e-A@host.com +ATTENDEE;RSVP=3DTRUE;ROLE=3DREQ-PARTICIPANT;CUTYPE=3DGROUP:mailto:Employe= +e-B@HOST.com +ATTENDEE;RSVP=3DTRUE;ROLE=3DREQ-PARTICIPANT;CUTYPE=3DGROUP:MailTo:Eric@Ag= +ony.Busboom.org +DTSTAMP:19970611T190000Z +DTSTART:19970621T170000Z +DTEND:199706211T173000Z +SUMMARY:Let's discuss the attached document +UID:calsvr.example.com-873970198738777-8aa +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR + +----00FEE3790DC7E35189CA67CE2C00 +Content-Type:text/calendar; method=REQUEST; charset=US-ASCII; + Component=vevent +Content-Transfer-Encoding: base64 +Content-Disposition: attachment; filename="event.vcs" + +QkVHSU46VkNBTEVOREFSClBST0RJRDotLy9BQ01FL0Rlc2t0b3BDYWxlbmRhci8vRU4KVkVS +U0lPTjoyLjAKQkVHSU46VkVWRU5UCk9SR0FOSVpFUjpmb28xQGV4YW1wbGUuY29tCkFUVEVO +REVFO1JTVlA9VFJVRTtST0xFPVJFUS1QQVJUSUNJUEFOVDtDVVRZUEU9R1JPVVA6TUFJTFRP +OmVtcGxveWVlLUFAaG9zdC5jb20KQVRURU5ERUU7UlNWUD1UUlVFO1JPTEU9UkVRLVBBUlRJ +Q0lQQU5UO0NVVFlQRT1HUk9VUDptYWlsdG86RW1wbG95ZWUtQkBIT1NULmNvbQpBVFRFTkRF +RTtSU1ZQPVRSVUU7Uk9MRT1SRVEtUEFSVElDSVBBTlQ7Q1VUWVBFPUdST1VQOk1haWxUbzpF +cmljQEFnb255LlF1YWxjb21tLmNvbQpEVFNUQU1QOjE5OTcwNjExVDE5MDAwMFoKRFRTVEFS +VDoxOTk3MDYyMVQxNzAwMDBaCkRURU5EOjE5OTcwNjIxMVQxNzMwMDBaClNVTU1BUlk6TGV0 +J3MgZGlzY3VzcyB0aGUgYXR0YWNoZWQgZG9jdW1lbnQKVUlEOmNhbHN2ci5leGFtcGxlLmNv +bS04NzM5NzAxOTg3Mzg3NzctOGFhClNFUVVFTkNFOjAKU1RBVFVTOkNPTkZJUk1FRApFTkQ6 +VkVWRU5UCkVORDpWQ0FMRU5EQVIK + + +----00FEE3790DC7E35189CA67CE2C00-- + +----FEE3790DC7E35189CA67CE2C +Content-Type: application/msword; name="FieldReport.doc" +Content-Transfer-Encoding: base64 +Content-Disposition: inline; filename="FieldReport.doc" +Content-ID: + + +R0lGODdhTAQZAJEAAFVVVd3d3e4AAP///ywAAAAATAQZAAAC/5yPOSLhD6OctNqLs94XqAG +4kiW5omm6sq27gvH8kzX9o1y+s73/g8MCofEovGITCoxKMbyCR16cNSq9YrNarfcrvdriIH +5LL5jE6rxc3G+v2cguf0uv2Oz+v38L7/DxgoOKjURnjIIbe3yNjo+AgZWYVIWWl5iZnJY6J. + +----FEE3790DC7E35189CA67CE2C-- diff --git a/mozilla/calendar/libical/test-data/hist.data b/mozilla/calendar/libical/test-data/hist.data new file mode 100644 index 00000000000..b6b9610e2f5 --- /dev/null +++ b/mozilla/calendar/libical/test-data/hist.data @@ -0,0 +1,403 @@ +9.9 +9.9 +9.9 +9.9 +9.9 +9.9 +9.9 +9.9 +9.9 +9.9 +9.9 +9.8 +9.8 +9.8 +9.8 +9.8 +9.8 +9.8 +9.8 +9.6 +9.5 +9.5 +9.5 +9.5 +9.5 +9.5 +9.5 +9.5 +9.5 +9.5 +9.5 +9.4 +9.4 +9.4 +9.4 +9.4 +9.4 +9.4 +9.4 +9.4 +9.4 +9.4 +9.4 +9.4 +9.4 +9.4 +9.4 +9.4 +9.3 +9.3 +9.3 +9.3 +9.2 +9.2 +9.2 +9.2 +9.2 +9.2 +9.2 +9.1 +9.1 +9.1 +8.9 +8.9 +8.9 +8.8 +8.8 +8.8 +8.7 +8.7 +8.6 +8.6 +8.5 +8.5 +8.4 +8.4 +8.4 +8.1 +8.1 +8.1 +7.9 +7.9 +7.9 +7.9 +7.9 +7.9 +7.9 +7.9 +7.9 +7.7 +7.7 +7.7 +7.7 +7.7 +7.6 +7.6 +7.6 +7.6 +7.6 +7.6 +7.6 +7.6 +7.6 +7.6 +7.6 +7.5 +7.5 +7.5 +7.5 +7.5 +7.5 +7.5 +7.5 +7.5 +7.5 +7.4 +7.3 +7.3 +7.3 +7.3 +7.2 +7.2 +7.2 +7.2 +7.2 +7.1 +7.1 +7.1 +7.1 +7.1 +7.1 +6.9 +6.9 +6.9 +6.9 +6.9 +6.9 +6.9 +6.9 +6.9 +6.9 +6.9 +6.8 +6.8 +6.8 +6.7 +6.7 +6.7 +6.6 +6.6 +6.6 +6.6 +6.6 +6.6 +6.5 +6.5 +6.5 +6.5 +6.5 +6.5 +6.5 +6.5 +6.5 +6.5 +6.5 +6.5 +6.5 +6.5 +6.5 +6.5 +6.5 +6.5 +6.5 +6.5 +6.4 +6.4 +6.4 +6.4 +6.4 +6.2 +6.2 +6.2 +6.1 +6.1 +6.1 +6.1 +5.9 +5.9 +5.8 +5.8 +5.8 +5.8 +5.8 +5.7 +5.7 +5.7 +5.7 +5.6 +5.6 +5.6 +5.5 +5.5 +5.4 +5.4 +5.4 +5.4 +5.4 +5.3 +5.2 +5.2 +5.2 +5.1 +5.1 +5.1 +5.1 +5.1 +4.9 +4.9 +4.7 +4.7 +4.6 +4.5 +4.5 +4.4 +4.4 +4.3 +4.3 +4.3 +4.3 +4.3 +4.3 +4.3 +4.3 +4.3 +4.3 +4.3 +4.2 +4.2 +4.2 +4.2 +4.1 +4.1 +4.1 +4.1 +4.1 +3.9 +3.9 +3.9 +3.8 +3.8 +3.8 +3.7 +3.7 +3.7 +3.7 +3.7 +3.7 +3.7 +3.6 +3.6 +3.6 +3.6 +3.6 +3.5 +3.5 +3.5 +3.5 +3.4 +3.4 +3.4 +3.4 +3.4 +3.3 +3.2 +3.2 +3.2 +3.2 +3.2 +3.1 +3.1 +3.1 +3.1 +2.9 +2.9 +2.9 +2.9 +2.8 +2.8 +2.8 +2.8 +2.8 +2.8 +2.7 +2.7 +2.7 +2.7 +2.7 +2.7 +2.7 +2.7 +2.7 +2.7 +2.7 +2.7 +2.7 +2.7 +2.7 +2.6 +2.6 +2.6 +2.6 +2.6 +2.5 +2.5 +2.5 +2.5 +2.5 +2.5 +2.4 +2.4 +2.3 +2.3 +2.2 +2.2 +2.2 +2.2 +2.2 +2.2 +2.1 +2.1 +2.1 +2.1 +2.1 +2.1 +2.1 +2.1 +2.1 +1.9 +1.9 +1.9 +1.9 +1.9 +1.9 +1.9 +1.9 +1.9 +1.9 +1.9 +1.8 +1.8 +1.8 +1.7 +1.7 +1.7 +1.7 +1.6 +1.6 +1.6 +1.6 +1.6 +1.6 +1.6 +1.6 +1.6 +1.6 +1.5 +1.5 +1.5 +1.5 +1.5 +1.5 +1.5 +1.5 +1.4 +1.4 +1.4 +1.4 +1.4 +1.4 +1.4 +1.3 +1.3 +1.3 +1.2 +1.2 +1.2 +1.2 +1.2 +1.2 +1.2 +1.2 +1.1 +1.1 +1.1 +1.1 +1.1 +1.1 +1.1 +1.1 +1.1 +1.1 +1.1 +1.1 diff --git a/mozilla/calendar/libical/test-data/incoming.ics b/mozilla/calendar/libical/test-data/incoming.ics new file mode 100644 index 00000000000..dd77861ad4f --- /dev/null +++ b/mozilla/calendar/libical/test-data/incoming.ics @@ -0,0 +1,294 @@ +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +X-LIC-NOTE:#I1. New Request +X-LIC-EXPECT:REQUEST-NEW +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970610T190000Z +DTSTART:19970701T100000Z +DTEND:19970701T10300Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738776@example.com +SEQUENCE:2 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +X-LIC-NOTE:#I2. Reschedules C1 +X-LIC-EXPECT:REQUEST-RESCHEDULE +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T200000Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:2 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +X-LIC-NOTE:#I3. Updates C1 +X-LIC-EXPECT:REQUEST-UPDATE +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T193000Z +DTSTART:19970701T190000Z +DTEND:19970701T193000Z +SUMMARY: Pool party +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:2 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +X-LIC-NOTE:#I4: This is an obsolete request\, otherwise identical to #I1 +X-LIC-EXPECT:OBSOLETE +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE; + CUTYPE=ROOM:Mailto:Conf@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTART:19960701T180000Z +DTEND:19970701T190000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +DTSTAMP:19960613T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +X-LIC-NOTE:#I5: User B is accepting A's request\, #C2 +X-LIC-EXPECT:REPLY-ACCEPT +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738785@example.com +SEQUENCE:1 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +X-LIC-NOTE:#I6: User B's reply delegating to C\, #C2 +X-LIC-EXPECT:REPLY-DELEGATE +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED-TO="Mailto:C@example.com" + :Mailto:B@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738785@example.com +SEQUENCE:1 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +X-LIC-NOTE:#I7: User C's delegation to A\, new event +X-LIC-EXPECT:REQUEST-DELEGATE +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C;DELEGATED-TO="Mailto:A@example.com" + :Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=A;DELEGATED-FROM="Mailto:C@example.com" + :Mailto:A@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T190000Z +DTEND:19970701T193000Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738779@example.com +SEQUENCE:2 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +X-LIC-NOTE:#I8: User C is rejecting A's request\, #C2 +X-LIC-EXPECT:REPLY-DECLINE +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=DECLINED:Mailto:C@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738785@example.com +SEQUENCE:1 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +X-LIC-NOTE:#I9: Crasher X is accepting A's request\, #C2 +X-LIC-EXPECT:REPLY-CRASHER-ACCEPT +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:X@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738785@example.com +SEQUENCE:1 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +X-LIC-NOTE:#I10: Crasher Y is declining A's request\, #C2 +X-LIC-EXPECT:REPLY-CRASHER-DECLINE +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=DECLINED:Mailto:Y@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738785@example.com +SEQUENCE:1 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +X-LIC-NOTE:#I11: Cancel #c1 +X-LIC-EXPECT:CANCEL-EVENT +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +COMMENT:Mr. B cannot attend. It's raining. Lets cancel. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CANCELLED +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:COUNTER +X-LIC-NOTE:#I12. Counter to #C1. Changed DTEND to DURATION. +X-LIC-EXPECT:COUNTER +VERSION:2.0 +BEGIN:VEVENT +DTSTAMP:19970611T190000Z +DTSTART:19970701T190000Z +DURATION:PT2H +ORGANIZER:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +SUMMARY:Conference +COMMENT: I think the conference should be 2 hours long +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +X-LIC-NOTE:#I13. New Publish +X-LIC-EXPECT:PUBLISH-UPDATE +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +DTSTAMP:19970610T190000Z +DTSTART:19970701T100000Z +DTEND:19970701T103000Z +SUMMARY:Conference +UID:calsrv.example.com-1001@example.com +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +X-LIC-NOTE:#I14. Publish Update +X-LIC-EXPECT:PUBLISH-UPDATE +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +DTSTAMP:19970610T190000Z +DTSTART:19970701T100000Z +DTEND:19970701T110000Z +SUMMARY:Conference +UID:calsrv.example.com-1002@example.com +STATUS:CONFIRMED +SEQUENCE:2 +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +METHOD:PUBLISH +X-LIC-NOTE:#I15. Publish VFREEBUSY +X-LIC-EXPECT:PUBLISH-FREEBUSY +BEGIN:VFREEBUSY +DTSTAMP:19980101T124100Z +ORGANIZER:MAILTO:A@Example.com +DTSTART:19980101T124200Z +DTEND:19980107T124200Z +FREEBUSY:19980101T180000Z/19980101T190000Z +FREEBUSY:19980103T020000Z/19980103T050000Z +FREEBUSY:19980107T020000Z/19980107T050000Z +FREEBUSY:19980113T000000Z/19980113T010000Z +FREEBUSY:19980115T190000Z/19980115T200000Z +FREEBUSY:19980115T220000Z/19980115T230000Z +FREEBUSY:19980116T013000Z/19980116T043000Z +END:VFREEBUSY +END:VCALENDAR diff --git a/mozilla/calendar/libical/test-data/large.ics b/mozilla/calendar/libical/test-data/large.ics new file mode 100644 index 00000000000..a7cc783513f --- /dev/null +++ b/mozilla/calendar/libical/test-data/large.ics @@ -0,0 +1,40533 @@ +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTART:19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +END:VEVENT +END:VCALENDAR + +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123402@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970401T163000Z +DTEND:19970402T010000Z +SUMMARY:Laurel is in sensitivity awareness class. +CLASS:PUBLIC +CATEGORIES:BUSINESS,HUMAN RESOURCES +TRANSP:TRANSPARENT +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123403@host.com +DTSTAMP:19970901T1300Z +DTSTART:19971102 +SUMMARY:Our Blissful Anniversary +CLASS:CONFIDENTIAL +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +RRULE:FREQ=YEARLY +END:VEVENT + +BEGIN:VTODO +UID:19970901T130000Z-123404@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970415T133000Z +DUE:19970416T045959Z +SUMMARY:1996 Income Tax Preparation +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +STATUS:NEEDS-ACTION +END:VTODO +BEGIN:VJOURNAL +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T1300Z +DTSTART;VALUE=DATE:19970317 +SUMMARY:Staff meeting minutes +DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa + and Bob. Aurora project plans were reviewed. There is currently + no budget reserves for this project. Lisa will escalate to + management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative called + to discuss new printer. Promised to get us a demo by Friday.\n + 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. + Is looking into a loaner car. 654-2323 (tel). +END:VJOURNAL +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +DTSTAMP:19970901T083000Z +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTAMP:19970901T100000Z +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M +URL:http://host2.com/pub/busy/jpublic-01.ifb +COMMENT:This iCalendar file contains busy time information for + the next three months. +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19971026T020000 +RDATE:19971026T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19971026T020000 +RDATE:19970406T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +BEGIN:DAYLIGHT +DTSTART:19990424T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +REPEAT:4 +DURATION:PT15M +ACTION:AUDIO +ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +REPEAT:2 +DURATION:PT15M +ACTION:DISPLAY +DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. +END:VALARM +BEGIN:VALARM +TRIGGER:-P2D +ACTION:EMAIL +ATTENDEE:MAILTO:john_doe@host.com +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. +ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen + da.doc +END:VALARM +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +REPEAT:23 +DURATION:PT1H +ACTION:PROCEDURE +ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- + procs/felizano.exe +END:VALARM +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + MAILTO:employee-A@host.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTART;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T1200Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ + conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER:19980403T120000 +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- + files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ, Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTART:19970701T200000Z +DTSTAMP:19970611T190000Z +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970612T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SEQUENCE:1 +UID:0981234-1234234-23@example.com +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +COMMENT:DUKES forfeit the game +SEQUENCE:2 +UID:0981234-1234234-23@example.com +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +CALSCALE:GREGORIAN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-Chicago +TZURL:http://zones.stds_r_us.net/tz/America-Chicago +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +ATTACH:http://www.dukes.com/ +CATEGORIES:SPORTS EVENT,ENTERTAINMENT +CLASS:PRIVATE +DESCRIPTION:MIDWAY STADIUM\n + Big time game. MUST see.\n + Expected duration:2 hours\n +DTEND;TZID=America-Chicago:19970701T180000 +DTSTART;TZID=America-Chicago:19970702T160000 +DTSTAMP:19970614T190000Z +STATUS:CONFIRMED +LOCATION;VALUE=URI:http://www.midwaystadium.com/ +PRIORITY:2 +RESOURCES:SCOREBOARD +SEQUENCE:3 +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +RELATED-TO:0981234-1234234-14@example.com +BEGIN:VALARM +TRIGGER:-PT2H +ACTION:DISPLAY +DESCRIPTION:You should be leaving for the game now. +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +ACTION:AUDIO +END:VALARM +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970614T190000Z +UID:0981234-1234234-23@example.com +DTSTART;VALUE=DATE:19970714 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY: Bastille Day +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T2000000Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE; + CUTYPE=ROOM:Mailto:Conf@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T190000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +DTSTAMP:19970613T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T190000Z +DTEND:19970701T200000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +DTSTAMP:19970611T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:COUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +DTSTAMP:19970612T190000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +COMMENT:This time works much better and I think the big conference + room is too big +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +SUMMARY:Discuss the Merits of the election results - changed to + meet B's schedule +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:DECLINECOUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +COMMENT:Sorry\, I cannot change this meeting time +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +ATTENDEE;RSVP=TRUE; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED- + FROM="Mailto:C@example.com":Mailto:E@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED; + DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com +COMMENT:Sorry\, I will be out of town at that time. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DECLINED; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +SUMMARY:Phone Conference +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +DTSTAMP:19970614T200000Z +COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR + INVITATION +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +COMMENT:Mr. B cannot attend. It's raining. Lets cancel. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CANCELLED +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:mailto:B@example.com +COMMENT:You're off the hook for this meeting +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970613T193000Z +SEQUENCE:1 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +ATTENDEE;CUTYPE=ROOM:CR_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT; + RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:2 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +RRULE:FREQ=WEEKLY +SUMMARY:Phone Conference +UID:123456@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +METHOD:PUBLISH +BEGIN:VFREEBUSY +DTSTAMP:19980101T124100Z +ORGANIZER:MAILTO:A@Example.com +DTSTART:19980101T124200Z +DTEND:19980107T124200Z +FREEBUSY:19980101T180000Z/19980101T190000Z +FREEBUSY:19980103T020000Z/19980103T050000Z +FREEBUSY:19980107T020000Z/19980107T050000Z +FREEBUSY:19980113T000000Z/19980113T010000Z +FREEBUSY:19980115T190000Z/19980115T200000Z +FREEBUSY:19980115T220000Z/19980115T230000Z +FREEBUSY:19980116T013000Z/19980116T043000Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T080000Z +DTEND:19970701T200000 +UID:calsrv.example.com-873970198738777@example.com +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:A@example.com +ATTENDEE:Mailto:B@example.com +DTSTART:19970701T080000Z +DTEND:19970701T200000Z +UID:calsrv.example.com-873970198738777@example.com +FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M +DTSTAMP:19970613T190030Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-SanJose +TZURL:http://zones.stds_r_us.net/tz/America-SanJose +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:A@example.COM +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:B@example.fr +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:c@example.jp +DTSTAMP:19970613T190030Z +DTSTART;TZID=America-SanJose:19970701T140000 +DTEND;TZID=America-SanJose:19970701T150000 +RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU +RDATE;TZID=America-SanJose:19970910T140000 +EXDATE;TZID=America-SanJose:19970909T140000 +EXDATE;TZID=America-SanJose:19971028T140000 +SUMMARY:Weekly Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +LOCATION:Conference Call +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1com +RECURRENCE-ID:19970701T210000Z +SEQUENCE:1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970703T210000Z +DTEND:19970703T220000Z +LOCATION:Conference Call +DTSTAMP:19970626T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +RECURRENCE-ID:19970801T210000Z +SEQUENCE:2 +STATUS:CANCELLED +DTSTAMP:19970721T093000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DTSTAMP:19970721T103000Z +STATUS:CANCELLED +SEQUENCE:3 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID;RANGE=THISANDFUTURE:19970901T210000Z +SEQUENCE:3 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Discussion +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970901T210000Z +DTEND:19970901T220000Z +LOCATION:Building 32\, Microsoft\, Seattle\, WA +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T210000Z +DTEND:19970715T220000Z +LOCATION:Conference Call +DTSTAMP:19970629T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +LOCATION:The White Room +DTSTAMP:19980301T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The Usual conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU,TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The White Room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RDATE:19980304T180000Z +RDATE:19980311T180000Z +RDATE:19980318T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:1 +RECURRENCE-ID:19980311T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980311T180000Z +DTSTAMP:19980306T193000Z +LOCATION:The Small conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980315T180000Z +DTEND:19980315T200000Z +DTSTAMP:19980307T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +RDATE:19980304T180000Z +RDATE:19980311T160000Z +RDATE:19980315T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +SEQUENCE:2 +RECURRENCE-ID:19980311T160000Z +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980304T180000Z +DTSTAMP:19980306T193000Z +ORGANIZER:Mailto:A@example.com +LOCATION:The Small conference room +UID:guid-1@host1.com +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:COUNTER +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID:19970715T210000Z +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T220000Z +DTEND:19970715T230000Z +LOCATION:Conference Call +COMMENT:May we bump this by an hour? I have a conflict +DTSTAMP:19970629T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +DTSTAMP:19970602T094000Z +LOCATION:Conference Call +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single + event;RRULE +REQUEST-STATUS:3.0;Invalid Property Name;FOO +UID:guid-1@host1.com +SEQUENCE:0 +DTSTAMP:19970603T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:Needs Action +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +UID:calsrv.example.com-873970198738777-00@example.com +COMMENT:I'll send you my input by e-mail +SEQUENCE:0 +DTSTAMP:19970717T203000Z +REQUEST-STATUS:2.0;Success +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +SUMMARY:Create the requirements document +PRIORITY:1 +SEQUENCE:0 +STATUS:IN-PROCESS +DTSTART:19970701T170000Z +DTSTAMP:19970717T230000Z +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +REQUEST-STATUS:2.0 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +REQUEST-STATUS:2.0 +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;PARTSTAT=IN-PROCESS;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:1 +DTSTAMP:19970718T100000Z +STATUS:IN-PROGRESS +PERCENT-COMPLETE:40 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR +DTSTART:19980101T100000 +DUE:19980103T100000 +SUMMARY:Send Status Reports to Area Managers +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:NEEDS-ACTION +PRIORITY:1 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +RECURRENCE-ID:19980101T170000Z +SEQUENCE:1 +ORGANIZER:MAILTO:A@Example.com +REQUEST-STATUS:2.0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VJOURNAL +DTSTART:19971002T200000Z +DTSTAMP:19971002T200000Z +ORGANIZER:MAILTO:A@Example.com +SUMMARY:Phone conference minutes +DESCRIPTION:The editors meeting was held on October 1\, 1997. + Details are in the attached document. +UID:0981234-1234234-2410@example.com +RELATED-TO:0981234-1234234-2402-35@example.com +ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +UID: guid-1-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:acme-12345@host1.com +SEQUENCE:3 +RRULE:FREQ=WEEKLY +RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +DESCRIPTION:IETF-C&S Conference Call +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970801T210000Z +DTEND:19970801T220000Z +RECURRENCE-ID:19970809T210000Z +DTSTAMP:19970726T083000 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +UID:acme-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTART:19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +END:VEVENT +END:VCALENDAR + +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123402@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970401T163000Z +DTEND:19970402T010000Z +SUMMARY:Laurel is in sensitivity awareness class. +CLASS:PUBLIC +CATEGORIES:BUSINESS,HUMAN RESOURCES +TRANSP:TRANSPARENT +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123403@host.com +DTSTAMP:19970901T1300Z +DTSTART:19971102 +SUMMARY:Our Blissful Anniversary +CLASS:CONFIDENTIAL +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +RRULE:FREQ=YEARLY +END:VEVENT + +BEGIN:VTODO +UID:19970901T130000Z-123404@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970415T133000Z +DUE:19970416T045959Z +SUMMARY:1996 Income Tax Preparation +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +STATUS:NEEDS-ACTION +END:VTODO +BEGIN:VJOURNAL +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T1300Z +DTSTART;VALUE=DATE:19970317 +SUMMARY:Staff meeting minutes +DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa + and Bob. Aurora project plans were reviewed. There is currently + no budget reserves for this project. Lisa will escalate to + management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative called + to discuss new printer. Promised to get us a demo by Friday.\n + 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. + Is looking into a loaner car. 654-2323 (tel). +END:VJOURNAL +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +DTSTAMP:19970901T083000Z +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTAMP:19970901T100000Z +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M +URL:http://host2.com/pub/busy/jpublic-01.ifb +COMMENT:This iCalendar file contains busy time information for + the next three months. +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19971026T020000 +RDATE:19971026T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19971026T020000 +RDATE:19970406T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +BEGIN:DAYLIGHT +DTSTART:19990424T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +REPEAT:4 +DURATION:PT15M +ACTION:AUDIO +ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +REPEAT:2 +DURATION:PT15M +ACTION:DISPLAY +DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. +END:VALARM +BEGIN:VALARM +TRIGGER:-P2D +ACTION:EMAIL +ATTENDEE:MAILTO:john_doe@host.com +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. +ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen + da.doc +END:VALARM +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +REPEAT:23 +DURATION:PT1H +ACTION:PROCEDURE +ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- + procs/felizano.exe +END:VALARM +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + MAILTO:employee-A@host.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTART;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T1200Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ + conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER:19980403T120000 +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- + files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ, Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTART:19970701T200000Z +DTSTAMP:19970611T190000Z +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970612T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SEQUENCE:1 +UID:0981234-1234234-23@example.com +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +COMMENT:DUKES forfeit the game +SEQUENCE:2 +UID:0981234-1234234-23@example.com +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +CALSCALE:GREGORIAN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-Chicago +TZURL:http://zones.stds_r_us.net/tz/America-Chicago +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +ATTACH:http://www.dukes.com/ +CATEGORIES:SPORTS EVENT,ENTERTAINMENT +CLASS:PRIVATE +DESCRIPTION:MIDWAY STADIUM\n + Big time game. MUST see.\n + Expected duration:2 hours\n +DTEND;TZID=America-Chicago:19970701T180000 +DTSTART;TZID=America-Chicago:19970702T160000 +DTSTAMP:19970614T190000Z +STATUS:CONFIRMED +LOCATION;VALUE=URI:http://www.midwaystadium.com/ +PRIORITY:2 +RESOURCES:SCOREBOARD +SEQUENCE:3 +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +RELATED-TO:0981234-1234234-14@example.com +BEGIN:VALARM +TRIGGER:-PT2H +ACTION:DISPLAY +DESCRIPTION:You should be leaving for the game now. +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +ACTION:AUDIO +END:VALARM +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970614T190000Z +UID:0981234-1234234-23@example.com +DTSTART;VALUE=DATE:19970714 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY: Bastille Day +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T2000000Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE; + CUTYPE=ROOM:Mailto:Conf@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T190000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +DTSTAMP:19970613T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T190000Z +DTEND:19970701T200000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +DTSTAMP:19970611T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:COUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +DTSTAMP:19970612T190000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +COMMENT:This time works much better and I think the big conference + room is too big +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +SUMMARY:Discuss the Merits of the election results - changed to + meet B's schedule +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:DECLINECOUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +COMMENT:Sorry\, I cannot change this meeting time +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +ATTENDEE;RSVP=TRUE; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED- + FROM="Mailto:C@example.com":Mailto:E@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED; + DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com +COMMENT:Sorry\, I will be out of town at that time. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DECLINED; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +SUMMARY:Phone Conference +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +DTSTAMP:19970614T200000Z +COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR + INVITATION +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +COMMENT:Mr. B cannot attend. It's raining. Lets cancel. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CANCELLED +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:mailto:B@example.com +COMMENT:You're off the hook for this meeting +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970613T193000Z +SEQUENCE:1 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +ATTENDEE;CUTYPE=ROOM:CR_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT; + RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:2 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +RRULE:FREQ=WEEKLY +SUMMARY:Phone Conference +UID:123456@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +METHOD:PUBLISH +BEGIN:VFREEBUSY +DTSTAMP:19980101T124100Z +ORGANIZER:MAILTO:A@Example.com +DTSTART:19980101T124200Z +DTEND:19980107T124200Z +FREEBUSY:19980101T180000Z/19980101T190000Z +FREEBUSY:19980103T020000Z/19980103T050000Z +FREEBUSY:19980107T020000Z/19980107T050000Z +FREEBUSY:19980113T000000Z/19980113T010000Z +FREEBUSY:19980115T190000Z/19980115T200000Z +FREEBUSY:19980115T220000Z/19980115T230000Z +FREEBUSY:19980116T013000Z/19980116T043000Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T080000Z +DTEND:19970701T200000 +UID:calsrv.example.com-873970198738777@example.com +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:A@example.com +ATTENDEE:Mailto:B@example.com +DTSTART:19970701T080000Z +DTEND:19970701T200000Z +UID:calsrv.example.com-873970198738777@example.com +FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M +DTSTAMP:19970613T190030Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-SanJose +TZURL:http://zones.stds_r_us.net/tz/America-SanJose +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:A@example.COM +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:B@example.fr +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:c@example.jp +DTSTAMP:19970613T190030Z +DTSTART;TZID=America-SanJose:19970701T140000 +DTEND;TZID=America-SanJose:19970701T150000 +RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU +RDATE;TZID=America-SanJose:19970910T140000 +EXDATE;TZID=America-SanJose:19970909T140000 +EXDATE;TZID=America-SanJose:19971028T140000 +SUMMARY:Weekly Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +LOCATION:Conference Call +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1com +RECURRENCE-ID:19970701T210000Z +SEQUENCE:1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970703T210000Z +DTEND:19970703T220000Z +LOCATION:Conference Call +DTSTAMP:19970626T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +RECURRENCE-ID:19970801T210000Z +SEQUENCE:2 +STATUS:CANCELLED +DTSTAMP:19970721T093000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DTSTAMP:19970721T103000Z +STATUS:CANCELLED +SEQUENCE:3 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID;RANGE=THISANDFUTURE:19970901T210000Z +SEQUENCE:3 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Discussion +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970901T210000Z +DTEND:19970901T220000Z +LOCATION:Building 32\, Microsoft\, Seattle\, WA +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T210000Z +DTEND:19970715T220000Z +LOCATION:Conference Call +DTSTAMP:19970629T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +LOCATION:The White Room +DTSTAMP:19980301T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The Usual conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU,TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The White Room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RDATE:19980304T180000Z +RDATE:19980311T180000Z +RDATE:19980318T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:1 +RECURRENCE-ID:19980311T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980311T180000Z +DTSTAMP:19980306T193000Z +LOCATION:The Small conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980315T180000Z +DTEND:19980315T200000Z +DTSTAMP:19980307T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +RDATE:19980304T180000Z +RDATE:19980311T160000Z +RDATE:19980315T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +SEQUENCE:2 +RECURRENCE-ID:19980311T160000Z +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980304T180000Z +DTSTAMP:19980306T193000Z +ORGANIZER:Mailto:A@example.com +LOCATION:The Small conference room +UID:guid-1@host1.com +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:COUNTER +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID:19970715T210000Z +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T220000Z +DTEND:19970715T230000Z +LOCATION:Conference Call +COMMENT:May we bump this by an hour? I have a conflict +DTSTAMP:19970629T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +DTSTAMP:19970602T094000Z +LOCATION:Conference Call +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single + event;RRULE +REQUEST-STATUS:3.0;Invalid Property Name;FOO +UID:guid-1@host1.com +SEQUENCE:0 +DTSTAMP:19970603T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:Needs Action +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +UID:calsrv.example.com-873970198738777-00@example.com +COMMENT:I'll send you my input by e-mail +SEQUENCE:0 +DTSTAMP:19970717T203000Z +REQUEST-STATUS:2.0;Success +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +SUMMARY:Create the requirements document +PRIORITY:1 +SEQUENCE:0 +STATUS:IN-PROCESS +DTSTART:19970701T170000Z +DTSTAMP:19970717T230000Z +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +REQUEST-STATUS:2.0 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +REQUEST-STATUS:2.0 +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;PARTSTAT=IN-PROCESS;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:1 +DTSTAMP:19970718T100000Z +STATUS:IN-PROGRESS +PERCENT-COMPLETE:40 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR +DTSTART:19980101T100000 +DUE:19980103T100000 +SUMMARY:Send Status Reports to Area Managers +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:NEEDS-ACTION +PRIORITY:1 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +RECURRENCE-ID:19980101T170000Z +SEQUENCE:1 +ORGANIZER:MAILTO:A@Example.com +REQUEST-STATUS:2.0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VJOURNAL +DTSTART:19971002T200000Z +DTSTAMP:19971002T200000Z +ORGANIZER:MAILTO:A@Example.com +SUMMARY:Phone conference minutes +DESCRIPTION:The editors meeting was held on October 1\, 1997. + Details are in the attached document. +UID:0981234-1234234-2410@example.com +RELATED-TO:0981234-1234234-2402-35@example.com +ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +UID: guid-1-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:acme-12345@host1.com +SEQUENCE:3 +RRULE:FREQ=WEEKLY +RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +DESCRIPTION:IETF-C&S Conference Call +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970801T210000Z +DTEND:19970801T220000Z +RECURRENCE-ID:19970809T210000Z +DTSTAMP:19970726T083000 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +UID:acme-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTART:19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +END:VEVENT +END:VCALENDAR + +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123402@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970401T163000Z +DTEND:19970402T010000Z +SUMMARY:Laurel is in sensitivity awareness class. +CLASS:PUBLIC +CATEGORIES:BUSINESS,HUMAN RESOURCES +TRANSP:TRANSPARENT +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123403@host.com +DTSTAMP:19970901T1300Z +DTSTART:19971102 +SUMMARY:Our Blissful Anniversary +CLASS:CONFIDENTIAL +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +RRULE:FREQ=YEARLY +END:VEVENT + +BEGIN:VTODO +UID:19970901T130000Z-123404@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970415T133000Z +DUE:19970416T045959Z +SUMMARY:1996 Income Tax Preparation +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +STATUS:NEEDS-ACTION +END:VTODO +BEGIN:VJOURNAL +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T1300Z +DTSTART;VALUE=DATE:19970317 +SUMMARY:Staff meeting minutes +DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa + and Bob. Aurora project plans were reviewed. There is currently + no budget reserves for this project. Lisa will escalate to + management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative called + to discuss new printer. Promised to get us a demo by Friday.\n + 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. + Is looking into a loaner car. 654-2323 (tel). +END:VJOURNAL +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +DTSTAMP:19970901T083000Z +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTAMP:19970901T100000Z +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M +URL:http://host2.com/pub/busy/jpublic-01.ifb +COMMENT:This iCalendar file contains busy time information for + the next three months. +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19971026T020000 +RDATE:19971026T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19971026T020000 +RDATE:19970406T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +BEGIN:DAYLIGHT +DTSTART:19990424T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +REPEAT:4 +DURATION:PT15M +ACTION:AUDIO +ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +REPEAT:2 +DURATION:PT15M +ACTION:DISPLAY +DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. +END:VALARM +BEGIN:VALARM +TRIGGER:-P2D +ACTION:EMAIL +ATTENDEE:MAILTO:john_doe@host.com +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. +ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen + da.doc +END:VALARM +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +REPEAT:23 +DURATION:PT1H +ACTION:PROCEDURE +ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- + procs/felizano.exe +END:VALARM +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + MAILTO:employee-A@host.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTART;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T1200Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ + conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER:19980403T120000 +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- + files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ, Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTART:19970701T200000Z +DTSTAMP:19970611T190000Z +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970612T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SEQUENCE:1 +UID:0981234-1234234-23@example.com +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +COMMENT:DUKES forfeit the game +SEQUENCE:2 +UID:0981234-1234234-23@example.com +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +CALSCALE:GREGORIAN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-Chicago +TZURL:http://zones.stds_r_us.net/tz/America-Chicago +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +ATTACH:http://www.dukes.com/ +CATEGORIES:SPORTS EVENT,ENTERTAINMENT +CLASS:PRIVATE +DESCRIPTION:MIDWAY STADIUM\n + Big time game. MUST see.\n + Expected duration:2 hours\n +DTEND;TZID=America-Chicago:19970701T180000 +DTSTART;TZID=America-Chicago:19970702T160000 +DTSTAMP:19970614T190000Z +STATUS:CONFIRMED +LOCATION;VALUE=URI:http://www.midwaystadium.com/ +PRIORITY:2 +RESOURCES:SCOREBOARD +SEQUENCE:3 +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +RELATED-TO:0981234-1234234-14@example.com +BEGIN:VALARM +TRIGGER:-PT2H +ACTION:DISPLAY +DESCRIPTION:You should be leaving for the game now. +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +ACTION:AUDIO +END:VALARM +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970614T190000Z +UID:0981234-1234234-23@example.com +DTSTART;VALUE=DATE:19970714 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY: Bastille Day +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T2000000Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE; + CUTYPE=ROOM:Mailto:Conf@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T190000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +DTSTAMP:19970613T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T190000Z +DTEND:19970701T200000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +DTSTAMP:19970611T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:COUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +DTSTAMP:19970612T190000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +COMMENT:This time works much better and I think the big conference + room is too big +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +SUMMARY:Discuss the Merits of the election results - changed to + meet B's schedule +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:DECLINECOUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +COMMENT:Sorry\, I cannot change this meeting time +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +ATTENDEE;RSVP=TRUE; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED- + FROM="Mailto:C@example.com":Mailto:E@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED; + DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com +COMMENT:Sorry\, I will be out of town at that time. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DECLINED; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +SUMMARY:Phone Conference +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +DTSTAMP:19970614T200000Z +COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR + INVITATION +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +COMMENT:Mr. B cannot attend. It's raining. Lets cancel. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CANCELLED +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:mailto:B@example.com +COMMENT:You're off the hook for this meeting +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970613T193000Z +SEQUENCE:1 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +ATTENDEE;CUTYPE=ROOM:CR_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT; + RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:2 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +RRULE:FREQ=WEEKLY +SUMMARY:Phone Conference +UID:123456@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +METHOD:PUBLISH +BEGIN:VFREEBUSY +DTSTAMP:19980101T124100Z +ORGANIZER:MAILTO:A@Example.com +DTSTART:19980101T124200Z +DTEND:19980107T124200Z +FREEBUSY:19980101T180000Z/19980101T190000Z +FREEBUSY:19980103T020000Z/19980103T050000Z +FREEBUSY:19980107T020000Z/19980107T050000Z +FREEBUSY:19980113T000000Z/19980113T010000Z +FREEBUSY:19980115T190000Z/19980115T200000Z +FREEBUSY:19980115T220000Z/19980115T230000Z +FREEBUSY:19980116T013000Z/19980116T043000Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T080000Z +DTEND:19970701T200000 +UID:calsrv.example.com-873970198738777@example.com +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:A@example.com +ATTENDEE:Mailto:B@example.com +DTSTART:19970701T080000Z +DTEND:19970701T200000Z +UID:calsrv.example.com-873970198738777@example.com +FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M +DTSTAMP:19970613T190030Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-SanJose +TZURL:http://zones.stds_r_us.net/tz/America-SanJose +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:A@example.COM +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:B@example.fr +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:c@example.jp +DTSTAMP:19970613T190030Z +DTSTART;TZID=America-SanJose:19970701T140000 +DTEND;TZID=America-SanJose:19970701T150000 +RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU +RDATE;TZID=America-SanJose:19970910T140000 +EXDATE;TZID=America-SanJose:19970909T140000 +EXDATE;TZID=America-SanJose:19971028T140000 +SUMMARY:Weekly Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +LOCATION:Conference Call +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1com +RECURRENCE-ID:19970701T210000Z +SEQUENCE:1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970703T210000Z +DTEND:19970703T220000Z +LOCATION:Conference Call +DTSTAMP:19970626T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +RECURRENCE-ID:19970801T210000Z +SEQUENCE:2 +STATUS:CANCELLED +DTSTAMP:19970721T093000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DTSTAMP:19970721T103000Z +STATUS:CANCELLED +SEQUENCE:3 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID;RANGE=THISANDFUTURE:19970901T210000Z +SEQUENCE:3 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Discussion +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970901T210000Z +DTEND:19970901T220000Z +LOCATION:Building 32\, Microsoft\, Seattle\, WA +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T210000Z +DTEND:19970715T220000Z +LOCATION:Conference Call +DTSTAMP:19970629T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +LOCATION:The White Room +DTSTAMP:19980301T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The Usual conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU,TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The White Room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RDATE:19980304T180000Z +RDATE:19980311T180000Z +RDATE:19980318T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:1 +RECURRENCE-ID:19980311T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980311T180000Z +DTSTAMP:19980306T193000Z +LOCATION:The Small conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980315T180000Z +DTEND:19980315T200000Z +DTSTAMP:19980307T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +RDATE:19980304T180000Z +RDATE:19980311T160000Z +RDATE:19980315T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +SEQUENCE:2 +RECURRENCE-ID:19980311T160000Z +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980304T180000Z +DTSTAMP:19980306T193000Z +ORGANIZER:Mailto:A@example.com +LOCATION:The Small conference room +UID:guid-1@host1.com +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:COUNTER +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID:19970715T210000Z +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T220000Z +DTEND:19970715T230000Z +LOCATION:Conference Call +COMMENT:May we bump this by an hour? I have a conflict +DTSTAMP:19970629T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +DTSTAMP:19970602T094000Z +LOCATION:Conference Call +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single + event;RRULE +REQUEST-STATUS:3.0;Invalid Property Name;FOO +UID:guid-1@host1.com +SEQUENCE:0 +DTSTAMP:19970603T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:Needs Action +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +UID:calsrv.example.com-873970198738777-00@example.com +COMMENT:I'll send you my input by e-mail +SEQUENCE:0 +DTSTAMP:19970717T203000Z +REQUEST-STATUS:2.0;Success +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +SUMMARY:Create the requirements document +PRIORITY:1 +SEQUENCE:0 +STATUS:IN-PROCESS +DTSTART:19970701T170000Z +DTSTAMP:19970717T230000Z +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +REQUEST-STATUS:2.0 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +REQUEST-STATUS:2.0 +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;PARTSTAT=IN-PROCESS;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:1 +DTSTAMP:19970718T100000Z +STATUS:IN-PROGRESS +PERCENT-COMPLETE:40 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR +DTSTART:19980101T100000 +DUE:19980103T100000 +SUMMARY:Send Status Reports to Area Managers +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:NEEDS-ACTION +PRIORITY:1 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +RECURRENCE-ID:19980101T170000Z +SEQUENCE:1 +ORGANIZER:MAILTO:A@Example.com +REQUEST-STATUS:2.0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VJOURNAL +DTSTART:19971002T200000Z +DTSTAMP:19971002T200000Z +ORGANIZER:MAILTO:A@Example.com +SUMMARY:Phone conference minutes +DESCRIPTION:The editors meeting was held on October 1\, 1997. + Details are in the attached document. +UID:0981234-1234234-2410@example.com +RELATED-TO:0981234-1234234-2402-35@example.com +ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +UID: guid-1-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:acme-12345@host1.com +SEQUENCE:3 +RRULE:FREQ=WEEKLY +RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +DESCRIPTION:IETF-C&S Conference Call +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970801T210000Z +DTEND:19970801T220000Z +RECURRENCE-ID:19970809T210000Z +DTSTAMP:19970726T083000 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +UID:acme-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTART:19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +END:VEVENT +END:VCALENDAR + +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123402@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970401T163000Z +DTEND:19970402T010000Z +SUMMARY:Laurel is in sensitivity awareness class. +CLASS:PUBLIC +CATEGORIES:BUSINESS,HUMAN RESOURCES +TRANSP:TRANSPARENT +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123403@host.com +DTSTAMP:19970901T1300Z +DTSTART:19971102 +SUMMARY:Our Blissful Anniversary +CLASS:CONFIDENTIAL +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +RRULE:FREQ=YEARLY +END:VEVENT + +BEGIN:VTODO +UID:19970901T130000Z-123404@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970415T133000Z +DUE:19970416T045959Z +SUMMARY:1996 Income Tax Preparation +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +STATUS:NEEDS-ACTION +END:VTODO +BEGIN:VJOURNAL +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T1300Z +DTSTART;VALUE=DATE:19970317 +SUMMARY:Staff meeting minutes +DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa + and Bob. Aurora project plans were reviewed. There is currently + no budget reserves for this project. Lisa will escalate to + management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative called + to discuss new printer. Promised to get us a demo by Friday.\n + 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. + Is looking into a loaner car. 654-2323 (tel). +END:VJOURNAL +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +DTSTAMP:19970901T083000Z +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTAMP:19970901T100000Z +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M +URL:http://host2.com/pub/busy/jpublic-01.ifb +COMMENT:This iCalendar file contains busy time information for + the next three months. +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19971026T020000 +RDATE:19971026T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19971026T020000 +RDATE:19970406T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +BEGIN:DAYLIGHT +DTSTART:19990424T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +REPEAT:4 +DURATION:PT15M +ACTION:AUDIO +ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +REPEAT:2 +DURATION:PT15M +ACTION:DISPLAY +DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. +END:VALARM +BEGIN:VALARM +TRIGGER:-P2D +ACTION:EMAIL +ATTENDEE:MAILTO:john_doe@host.com +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. +ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen + da.doc +END:VALARM +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +REPEAT:23 +DURATION:PT1H +ACTION:PROCEDURE +ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- + procs/felizano.exe +END:VALARM +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + MAILTO:employee-A@host.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTART;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T1200Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ + conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER:19980403T120000 +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- + files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ, Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTART:19970701T200000Z +DTSTAMP:19970611T190000Z +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970612T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SEQUENCE:1 +UID:0981234-1234234-23@example.com +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +COMMENT:DUKES forfeit the game +SEQUENCE:2 +UID:0981234-1234234-23@example.com +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +CALSCALE:GREGORIAN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-Chicago +TZURL:http://zones.stds_r_us.net/tz/America-Chicago +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +ATTACH:http://www.dukes.com/ +CATEGORIES:SPORTS EVENT,ENTERTAINMENT +CLASS:PRIVATE +DESCRIPTION:MIDWAY STADIUM\n + Big time game. MUST see.\n + Expected duration:2 hours\n +DTEND;TZID=America-Chicago:19970701T180000 +DTSTART;TZID=America-Chicago:19970702T160000 +DTSTAMP:19970614T190000Z +STATUS:CONFIRMED +LOCATION;VALUE=URI:http://www.midwaystadium.com/ +PRIORITY:2 +RESOURCES:SCOREBOARD +SEQUENCE:3 +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +RELATED-TO:0981234-1234234-14@example.com +BEGIN:VALARM +TRIGGER:-PT2H +ACTION:DISPLAY +DESCRIPTION:You should be leaving for the game now. +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +ACTION:AUDIO +END:VALARM +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970614T190000Z +UID:0981234-1234234-23@example.com +DTSTART;VALUE=DATE:19970714 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY: Bastille Day +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T2000000Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE; + CUTYPE=ROOM:Mailto:Conf@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T190000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +DTSTAMP:19970613T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T190000Z +DTEND:19970701T200000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +DTSTAMP:19970611T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:COUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +DTSTAMP:19970612T190000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +COMMENT:This time works much better and I think the big conference + room is too big +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +SUMMARY:Discuss the Merits of the election results - changed to + meet B's schedule +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:DECLINECOUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +COMMENT:Sorry\, I cannot change this meeting time +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +ATTENDEE;RSVP=TRUE; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED- + FROM="Mailto:C@example.com":Mailto:E@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED; + DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com +COMMENT:Sorry\, I will be out of town at that time. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DECLINED; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +SUMMARY:Phone Conference +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +DTSTAMP:19970614T200000Z +COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR + INVITATION +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +COMMENT:Mr. B cannot attend. It's raining. Lets cancel. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CANCELLED +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:mailto:B@example.com +COMMENT:You're off the hook for this meeting +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970613T193000Z +SEQUENCE:1 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +ATTENDEE;CUTYPE=ROOM:CR_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT; + RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:2 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +RRULE:FREQ=WEEKLY +SUMMARY:Phone Conference +UID:123456@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +METHOD:PUBLISH +BEGIN:VFREEBUSY +DTSTAMP:19980101T124100Z +ORGANIZER:MAILTO:A@Example.com +DTSTART:19980101T124200Z +DTEND:19980107T124200Z +FREEBUSY:19980101T180000Z/19980101T190000Z +FREEBUSY:19980103T020000Z/19980103T050000Z +FREEBUSY:19980107T020000Z/19980107T050000Z +FREEBUSY:19980113T000000Z/19980113T010000Z +FREEBUSY:19980115T190000Z/19980115T200000Z +FREEBUSY:19980115T220000Z/19980115T230000Z +FREEBUSY:19980116T013000Z/19980116T043000Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T080000Z +DTEND:19970701T200000 +UID:calsrv.example.com-873970198738777@example.com +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:A@example.com +ATTENDEE:Mailto:B@example.com +DTSTART:19970701T080000Z +DTEND:19970701T200000Z +UID:calsrv.example.com-873970198738777@example.com +FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M +DTSTAMP:19970613T190030Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-SanJose +TZURL:http://zones.stds_r_us.net/tz/America-SanJose +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:A@example.COM +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:B@example.fr +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:c@example.jp +DTSTAMP:19970613T190030Z +DTSTART;TZID=America-SanJose:19970701T140000 +DTEND;TZID=America-SanJose:19970701T150000 +RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU +RDATE;TZID=America-SanJose:19970910T140000 +EXDATE;TZID=America-SanJose:19970909T140000 +EXDATE;TZID=America-SanJose:19971028T140000 +SUMMARY:Weekly Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +LOCATION:Conference Call +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1com +RECURRENCE-ID:19970701T210000Z +SEQUENCE:1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970703T210000Z +DTEND:19970703T220000Z +LOCATION:Conference Call +DTSTAMP:19970626T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +RECURRENCE-ID:19970801T210000Z +SEQUENCE:2 +STATUS:CANCELLED +DTSTAMP:19970721T093000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DTSTAMP:19970721T103000Z +STATUS:CANCELLED +SEQUENCE:3 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID;RANGE=THISANDFUTURE:19970901T210000Z +SEQUENCE:3 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Discussion +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970901T210000Z +DTEND:19970901T220000Z +LOCATION:Building 32\, Microsoft\, Seattle\, WA +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T210000Z +DTEND:19970715T220000Z +LOCATION:Conference Call +DTSTAMP:19970629T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +LOCATION:The White Room +DTSTAMP:19980301T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The Usual conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU,TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The White Room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RDATE:19980304T180000Z +RDATE:19980311T180000Z +RDATE:19980318T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:1 +RECURRENCE-ID:19980311T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980311T180000Z +DTSTAMP:19980306T193000Z +LOCATION:The Small conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980315T180000Z +DTEND:19980315T200000Z +DTSTAMP:19980307T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +RDATE:19980304T180000Z +RDATE:19980311T160000Z +RDATE:19980315T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +SEQUENCE:2 +RECURRENCE-ID:19980311T160000Z +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980304T180000Z +DTSTAMP:19980306T193000Z +ORGANIZER:Mailto:A@example.com +LOCATION:The Small conference room +UID:guid-1@host1.com +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:COUNTER +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID:19970715T210000Z +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T220000Z +DTEND:19970715T230000Z +LOCATION:Conference Call +COMMENT:May we bump this by an hour? I have a conflict +DTSTAMP:19970629T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +DTSTAMP:19970602T094000Z +LOCATION:Conference Call +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single + event;RRULE +REQUEST-STATUS:3.0;Invalid Property Name;FOO +UID:guid-1@host1.com +SEQUENCE:0 +DTSTAMP:19970603T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:Needs Action +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +UID:calsrv.example.com-873970198738777-00@example.com +COMMENT:I'll send you my input by e-mail +SEQUENCE:0 +DTSTAMP:19970717T203000Z +REQUEST-STATUS:2.0;Success +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +SUMMARY:Create the requirements document +PRIORITY:1 +SEQUENCE:0 +STATUS:IN-PROCESS +DTSTART:19970701T170000Z +DTSTAMP:19970717T230000Z +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +REQUEST-STATUS:2.0 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +REQUEST-STATUS:2.0 +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;PARTSTAT=IN-PROCESS;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:1 +DTSTAMP:19970718T100000Z +STATUS:IN-PROGRESS +PERCENT-COMPLETE:40 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR +DTSTART:19980101T100000 +DUE:19980103T100000 +SUMMARY:Send Status Reports to Area Managers +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:NEEDS-ACTION +PRIORITY:1 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +RECURRENCE-ID:19980101T170000Z +SEQUENCE:1 +ORGANIZER:MAILTO:A@Example.com +REQUEST-STATUS:2.0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VJOURNAL +DTSTART:19971002T200000Z +DTSTAMP:19971002T200000Z +ORGANIZER:MAILTO:A@Example.com +SUMMARY:Phone conference minutes +DESCRIPTION:The editors meeting was held on October 1\, 1997. + Details are in the attached document. +UID:0981234-1234234-2410@example.com +RELATED-TO:0981234-1234234-2402-35@example.com +ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +UID: guid-1-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:acme-12345@host1.com +SEQUENCE:3 +RRULE:FREQ=WEEKLY +RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +DESCRIPTION:IETF-C&S Conference Call +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970801T210000Z +DTEND:19970801T220000Z +RECURRENCE-ID:19970809T210000Z +DTSTAMP:19970726T083000 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +UID:acme-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTART:19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +END:VEVENT +END:VCALENDAR + +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123402@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970401T163000Z +DTEND:19970402T010000Z +SUMMARY:Laurel is in sensitivity awareness class. +CLASS:PUBLIC +CATEGORIES:BUSINESS,HUMAN RESOURCES +TRANSP:TRANSPARENT +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123403@host.com +DTSTAMP:19970901T1300Z +DTSTART:19971102 +SUMMARY:Our Blissful Anniversary +CLASS:CONFIDENTIAL +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +RRULE:FREQ=YEARLY +END:VEVENT + +BEGIN:VTODO +UID:19970901T130000Z-123404@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970415T133000Z +DUE:19970416T045959Z +SUMMARY:1996 Income Tax Preparation +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +STATUS:NEEDS-ACTION +END:VTODO +BEGIN:VJOURNAL +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T1300Z +DTSTART;VALUE=DATE:19970317 +SUMMARY:Staff meeting minutes +DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa + and Bob. Aurora project plans were reviewed. There is currently + no budget reserves for this project. Lisa will escalate to + management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative called + to discuss new printer. Promised to get us a demo by Friday.\n + 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. + Is looking into a loaner car. 654-2323 (tel). +END:VJOURNAL +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +DTSTAMP:19970901T083000Z +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTAMP:19970901T100000Z +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M +URL:http://host2.com/pub/busy/jpublic-01.ifb +COMMENT:This iCalendar file contains busy time information for + the next three months. +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19971026T020000 +RDATE:19971026T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19971026T020000 +RDATE:19970406T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +BEGIN:DAYLIGHT +DTSTART:19990424T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +REPEAT:4 +DURATION:PT15M +ACTION:AUDIO +ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +REPEAT:2 +DURATION:PT15M +ACTION:DISPLAY +DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. +END:VALARM +BEGIN:VALARM +TRIGGER:-P2D +ACTION:EMAIL +ATTENDEE:MAILTO:john_doe@host.com +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. +ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen + da.doc +END:VALARM +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +REPEAT:23 +DURATION:PT1H +ACTION:PROCEDURE +ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- + procs/felizano.exe +END:VALARM +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + MAILTO:employee-A@host.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTART;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T1200Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ + conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER:19980403T120000 +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- + files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ, Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTART:19970701T200000Z +DTSTAMP:19970611T190000Z +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970612T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SEQUENCE:1 +UID:0981234-1234234-23@example.com +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +COMMENT:DUKES forfeit the game +SEQUENCE:2 +UID:0981234-1234234-23@example.com +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +CALSCALE:GREGORIAN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-Chicago +TZURL:http://zones.stds_r_us.net/tz/America-Chicago +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +ATTACH:http://www.dukes.com/ +CATEGORIES:SPORTS EVENT,ENTERTAINMENT +CLASS:PRIVATE +DESCRIPTION:MIDWAY STADIUM\n + Big time game. MUST see.\n + Expected duration:2 hours\n +DTEND;TZID=America-Chicago:19970701T180000 +DTSTART;TZID=America-Chicago:19970702T160000 +DTSTAMP:19970614T190000Z +STATUS:CONFIRMED +LOCATION;VALUE=URI:http://www.midwaystadium.com/ +PRIORITY:2 +RESOURCES:SCOREBOARD +SEQUENCE:3 +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +RELATED-TO:0981234-1234234-14@example.com +BEGIN:VALARM +TRIGGER:-PT2H +ACTION:DISPLAY +DESCRIPTION:You should be leaving for the game now. +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +ACTION:AUDIO +END:VALARM +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970614T190000Z +UID:0981234-1234234-23@example.com +DTSTART;VALUE=DATE:19970714 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY: Bastille Day +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T2000000Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE; + CUTYPE=ROOM:Mailto:Conf@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T190000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +DTSTAMP:19970613T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T190000Z +DTEND:19970701T200000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +DTSTAMP:19970611T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:COUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +DTSTAMP:19970612T190000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +COMMENT:This time works much better and I think the big conference + room is too big +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +SUMMARY:Discuss the Merits of the election results - changed to + meet B's schedule +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:DECLINECOUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +COMMENT:Sorry\, I cannot change this meeting time +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +ATTENDEE;RSVP=TRUE; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED- + FROM="Mailto:C@example.com":Mailto:E@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED; + DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com +COMMENT:Sorry\, I will be out of town at that time. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DECLINED; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +SUMMARY:Phone Conference +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +DTSTAMP:19970614T200000Z +COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR + INVITATION +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +COMMENT:Mr. B cannot attend. It's raining. Lets cancel. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CANCELLED +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:mailto:B@example.com +COMMENT:You're off the hook for this meeting +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970613T193000Z +SEQUENCE:1 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +ATTENDEE;CUTYPE=ROOM:CR_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT; + RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:2 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +RRULE:FREQ=WEEKLY +SUMMARY:Phone Conference +UID:123456@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +METHOD:PUBLISH +BEGIN:VFREEBUSY +DTSTAMP:19980101T124100Z +ORGANIZER:MAILTO:A@Example.com +DTSTART:19980101T124200Z +DTEND:19980107T124200Z +FREEBUSY:19980101T180000Z/19980101T190000Z +FREEBUSY:19980103T020000Z/19980103T050000Z +FREEBUSY:19980107T020000Z/19980107T050000Z +FREEBUSY:19980113T000000Z/19980113T010000Z +FREEBUSY:19980115T190000Z/19980115T200000Z +FREEBUSY:19980115T220000Z/19980115T230000Z +FREEBUSY:19980116T013000Z/19980116T043000Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T080000Z +DTEND:19970701T200000 +UID:calsrv.example.com-873970198738777@example.com +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:A@example.com +ATTENDEE:Mailto:B@example.com +DTSTART:19970701T080000Z +DTEND:19970701T200000Z +UID:calsrv.example.com-873970198738777@example.com +FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M +DTSTAMP:19970613T190030Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-SanJose +TZURL:http://zones.stds_r_us.net/tz/America-SanJose +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:A@example.COM +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:B@example.fr +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:c@example.jp +DTSTAMP:19970613T190030Z +DTSTART;TZID=America-SanJose:19970701T140000 +DTEND;TZID=America-SanJose:19970701T150000 +RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU +RDATE;TZID=America-SanJose:19970910T140000 +EXDATE;TZID=America-SanJose:19970909T140000 +EXDATE;TZID=America-SanJose:19971028T140000 +SUMMARY:Weekly Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +LOCATION:Conference Call +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1com +RECURRENCE-ID:19970701T210000Z +SEQUENCE:1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970703T210000Z +DTEND:19970703T220000Z +LOCATION:Conference Call +DTSTAMP:19970626T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +RECURRENCE-ID:19970801T210000Z +SEQUENCE:2 +STATUS:CANCELLED +DTSTAMP:19970721T093000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DTSTAMP:19970721T103000Z +STATUS:CANCELLED +SEQUENCE:3 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID;RANGE=THISANDFUTURE:19970901T210000Z +SEQUENCE:3 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Discussion +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970901T210000Z +DTEND:19970901T220000Z +LOCATION:Building 32\, Microsoft\, Seattle\, WA +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T210000Z +DTEND:19970715T220000Z +LOCATION:Conference Call +DTSTAMP:19970629T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +LOCATION:The White Room +DTSTAMP:19980301T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The Usual conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU,TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The White Room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RDATE:19980304T180000Z +RDATE:19980311T180000Z +RDATE:19980318T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:1 +RECURRENCE-ID:19980311T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980311T180000Z +DTSTAMP:19980306T193000Z +LOCATION:The Small conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980315T180000Z +DTEND:19980315T200000Z +DTSTAMP:19980307T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +RDATE:19980304T180000Z +RDATE:19980311T160000Z +RDATE:19980315T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +SEQUENCE:2 +RECURRENCE-ID:19980311T160000Z +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980304T180000Z +DTSTAMP:19980306T193000Z +ORGANIZER:Mailto:A@example.com +LOCATION:The Small conference room +UID:guid-1@host1.com +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:COUNTER +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID:19970715T210000Z +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T220000Z +DTEND:19970715T230000Z +LOCATION:Conference Call +COMMENT:May we bump this by an hour? I have a conflict +DTSTAMP:19970629T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +DTSTAMP:19970602T094000Z +LOCATION:Conference Call +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single + event;RRULE +REQUEST-STATUS:3.0;Invalid Property Name;FOO +UID:guid-1@host1.com +SEQUENCE:0 +DTSTAMP:19970603T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:Needs Action +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +UID:calsrv.example.com-873970198738777-00@example.com +COMMENT:I'll send you my input by e-mail +SEQUENCE:0 +DTSTAMP:19970717T203000Z +REQUEST-STATUS:2.0;Success +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +SUMMARY:Create the requirements document +PRIORITY:1 +SEQUENCE:0 +STATUS:IN-PROCESS +DTSTART:19970701T170000Z +DTSTAMP:19970717T230000Z +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +REQUEST-STATUS:2.0 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +REQUEST-STATUS:2.0 +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;PARTSTAT=IN-PROCESS;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:1 +DTSTAMP:19970718T100000Z +STATUS:IN-PROGRESS +PERCENT-COMPLETE:40 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR +DTSTART:19980101T100000 +DUE:19980103T100000 +SUMMARY:Send Status Reports to Area Managers +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:NEEDS-ACTION +PRIORITY:1 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +RECURRENCE-ID:19980101T170000Z +SEQUENCE:1 +ORGANIZER:MAILTO:A@Example.com +REQUEST-STATUS:2.0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VJOURNAL +DTSTART:19971002T200000Z +DTSTAMP:19971002T200000Z +ORGANIZER:MAILTO:A@Example.com +SUMMARY:Phone conference minutes +DESCRIPTION:The editors meeting was held on October 1\, 1997. + Details are in the attached document. +UID:0981234-1234234-2410@example.com +RELATED-TO:0981234-1234234-2402-35@example.com +ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +UID: guid-1-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:acme-12345@host1.com +SEQUENCE:3 +RRULE:FREQ=WEEKLY +RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +DESCRIPTION:IETF-C&S Conference Call +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970801T210000Z +DTEND:19970801T220000Z +RECURRENCE-ID:19970809T210000Z +DTSTAMP:19970726T083000 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +UID:acme-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTART:19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +END:VEVENT +END:VCALENDAR + +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123402@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970401T163000Z +DTEND:19970402T010000Z +SUMMARY:Laurel is in sensitivity awareness class. +CLASS:PUBLIC +CATEGORIES:BUSINESS,HUMAN RESOURCES +TRANSP:TRANSPARENT +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123403@host.com +DTSTAMP:19970901T1300Z +DTSTART:19971102 +SUMMARY:Our Blissful Anniversary +CLASS:CONFIDENTIAL +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +RRULE:FREQ=YEARLY +END:VEVENT + +BEGIN:VTODO +UID:19970901T130000Z-123404@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970415T133000Z +DUE:19970416T045959Z +SUMMARY:1996 Income Tax Preparation +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +STATUS:NEEDS-ACTION +END:VTODO +BEGIN:VJOURNAL +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T1300Z +DTSTART;VALUE=DATE:19970317 +SUMMARY:Staff meeting minutes +DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa + and Bob. Aurora project plans were reviewed. There is currently + no budget reserves for this project. Lisa will escalate to + management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative called + to discuss new printer. Promised to get us a demo by Friday.\n + 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. + Is looking into a loaner car. 654-2323 (tel). +END:VJOURNAL +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +DTSTAMP:19970901T083000Z +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTAMP:19970901T100000Z +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M +URL:http://host2.com/pub/busy/jpublic-01.ifb +COMMENT:This iCalendar file contains busy time information for + the next three months. +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19971026T020000 +RDATE:19971026T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19971026T020000 +RDATE:19970406T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +BEGIN:DAYLIGHT +DTSTART:19990424T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +REPEAT:4 +DURATION:PT15M +ACTION:AUDIO +ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +REPEAT:2 +DURATION:PT15M +ACTION:DISPLAY +DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. +END:VALARM +BEGIN:VALARM +TRIGGER:-P2D +ACTION:EMAIL +ATTENDEE:MAILTO:john_doe@host.com +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. +ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen + da.doc +END:VALARM +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +REPEAT:23 +DURATION:PT1H +ACTION:PROCEDURE +ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- + procs/felizano.exe +END:VALARM +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + MAILTO:employee-A@host.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTART;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T1200Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ + conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER:19980403T120000 +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- + files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ, Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTART:19970701T200000Z +DTSTAMP:19970611T190000Z +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970612T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SEQUENCE:1 +UID:0981234-1234234-23@example.com +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +COMMENT:DUKES forfeit the game +SEQUENCE:2 +UID:0981234-1234234-23@example.com +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +CALSCALE:GREGORIAN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-Chicago +TZURL:http://zones.stds_r_us.net/tz/America-Chicago +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +ATTACH:http://www.dukes.com/ +CATEGORIES:SPORTS EVENT,ENTERTAINMENT +CLASS:PRIVATE +DESCRIPTION:MIDWAY STADIUM\n + Big time game. MUST see.\n + Expected duration:2 hours\n +DTEND;TZID=America-Chicago:19970701T180000 +DTSTART;TZID=America-Chicago:19970702T160000 +DTSTAMP:19970614T190000Z +STATUS:CONFIRMED +LOCATION;VALUE=URI:http://www.midwaystadium.com/ +PRIORITY:2 +RESOURCES:SCOREBOARD +SEQUENCE:3 +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +RELATED-TO:0981234-1234234-14@example.com +BEGIN:VALARM +TRIGGER:-PT2H +ACTION:DISPLAY +DESCRIPTION:You should be leaving for the game now. +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +ACTION:AUDIO +END:VALARM +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970614T190000Z +UID:0981234-1234234-23@example.com +DTSTART;VALUE=DATE:19970714 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY: Bastille Day +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T2000000Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE; + CUTYPE=ROOM:Mailto:Conf@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T190000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +DTSTAMP:19970613T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T190000Z +DTEND:19970701T200000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +DTSTAMP:19970611T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:COUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +DTSTAMP:19970612T190000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +COMMENT:This time works much better and I think the big conference + room is too big +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +SUMMARY:Discuss the Merits of the election results - changed to + meet B's schedule +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:DECLINECOUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +COMMENT:Sorry\, I cannot change this meeting time +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +ATTENDEE;RSVP=TRUE; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED- + FROM="Mailto:C@example.com":Mailto:E@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED; + DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com +COMMENT:Sorry\, I will be out of town at that time. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DECLINED; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +SUMMARY:Phone Conference +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +DTSTAMP:19970614T200000Z +COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR + INVITATION +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +COMMENT:Mr. B cannot attend. It's raining. Lets cancel. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CANCELLED +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:mailto:B@example.com +COMMENT:You're off the hook for this meeting +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970613T193000Z +SEQUENCE:1 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +ATTENDEE;CUTYPE=ROOM:CR_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT; + RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:2 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +RRULE:FREQ=WEEKLY +SUMMARY:Phone Conference +UID:123456@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +METHOD:PUBLISH +BEGIN:VFREEBUSY +DTSTAMP:19980101T124100Z +ORGANIZER:MAILTO:A@Example.com +DTSTART:19980101T124200Z +DTEND:19980107T124200Z +FREEBUSY:19980101T180000Z/19980101T190000Z +FREEBUSY:19980103T020000Z/19980103T050000Z +FREEBUSY:19980107T020000Z/19980107T050000Z +FREEBUSY:19980113T000000Z/19980113T010000Z +FREEBUSY:19980115T190000Z/19980115T200000Z +FREEBUSY:19980115T220000Z/19980115T230000Z +FREEBUSY:19980116T013000Z/19980116T043000Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T080000Z +DTEND:19970701T200000 +UID:calsrv.example.com-873970198738777@example.com +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:A@example.com +ATTENDEE:Mailto:B@example.com +DTSTART:19970701T080000Z +DTEND:19970701T200000Z +UID:calsrv.example.com-873970198738777@example.com +FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M +DTSTAMP:19970613T190030Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-SanJose +TZURL:http://zones.stds_r_us.net/tz/America-SanJose +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:A@example.COM +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:B@example.fr +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:c@example.jp +DTSTAMP:19970613T190030Z +DTSTART;TZID=America-SanJose:19970701T140000 +DTEND;TZID=America-SanJose:19970701T150000 +RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU +RDATE;TZID=America-SanJose:19970910T140000 +EXDATE;TZID=America-SanJose:19970909T140000 +EXDATE;TZID=America-SanJose:19971028T140000 +SUMMARY:Weekly Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +LOCATION:Conference Call +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1com +RECURRENCE-ID:19970701T210000Z +SEQUENCE:1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970703T210000Z +DTEND:19970703T220000Z +LOCATION:Conference Call +DTSTAMP:19970626T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +RECURRENCE-ID:19970801T210000Z +SEQUENCE:2 +STATUS:CANCELLED +DTSTAMP:19970721T093000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DTSTAMP:19970721T103000Z +STATUS:CANCELLED +SEQUENCE:3 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID;RANGE=THISANDFUTURE:19970901T210000Z +SEQUENCE:3 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Discussion +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970901T210000Z +DTEND:19970901T220000Z +LOCATION:Building 32\, Microsoft\, Seattle\, WA +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T210000Z +DTEND:19970715T220000Z +LOCATION:Conference Call +DTSTAMP:19970629T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +LOCATION:The White Room +DTSTAMP:19980301T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The Usual conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU,TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The White Room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RDATE:19980304T180000Z +RDATE:19980311T180000Z +RDATE:19980318T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:1 +RECURRENCE-ID:19980311T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980311T180000Z +DTSTAMP:19980306T193000Z +LOCATION:The Small conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980315T180000Z +DTEND:19980315T200000Z +DTSTAMP:19980307T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +RDATE:19980304T180000Z +RDATE:19980311T160000Z +RDATE:19980315T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +SEQUENCE:2 +RECURRENCE-ID:19980311T160000Z +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980304T180000Z +DTSTAMP:19980306T193000Z +ORGANIZER:Mailto:A@example.com +LOCATION:The Small conference room +UID:guid-1@host1.com +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:COUNTER +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID:19970715T210000Z +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T220000Z +DTEND:19970715T230000Z +LOCATION:Conference Call +COMMENT:May we bump this by an hour? I have a conflict +DTSTAMP:19970629T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +DTSTAMP:19970602T094000Z +LOCATION:Conference Call +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single + event;RRULE +REQUEST-STATUS:3.0;Invalid Property Name;FOO +UID:guid-1@host1.com +SEQUENCE:0 +DTSTAMP:19970603T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:Needs Action +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +UID:calsrv.example.com-873970198738777-00@example.com +COMMENT:I'll send you my input by e-mail +SEQUENCE:0 +DTSTAMP:19970717T203000Z +REQUEST-STATUS:2.0;Success +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +SUMMARY:Create the requirements document +PRIORITY:1 +SEQUENCE:0 +STATUS:IN-PROCESS +DTSTART:19970701T170000Z +DTSTAMP:19970717T230000Z +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +REQUEST-STATUS:2.0 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +REQUEST-STATUS:2.0 +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;PARTSTAT=IN-PROCESS;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:1 +DTSTAMP:19970718T100000Z +STATUS:IN-PROGRESS +PERCENT-COMPLETE:40 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR +DTSTART:19980101T100000 +DUE:19980103T100000 +SUMMARY:Send Status Reports to Area Managers +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:NEEDS-ACTION +PRIORITY:1 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +RECURRENCE-ID:19980101T170000Z +SEQUENCE:1 +ORGANIZER:MAILTO:A@Example.com +REQUEST-STATUS:2.0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VJOURNAL +DTSTART:19971002T200000Z +DTSTAMP:19971002T200000Z +ORGANIZER:MAILTO:A@Example.com +SUMMARY:Phone conference minutes +DESCRIPTION:The editors meeting was held on October 1\, 1997. + Details are in the attached document. +UID:0981234-1234234-2410@example.com +RELATED-TO:0981234-1234234-2402-35@example.com +ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +UID: guid-1-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:acme-12345@host1.com +SEQUENCE:3 +RRULE:FREQ=WEEKLY +RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +DESCRIPTION:IETF-C&S Conference Call +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970801T210000Z +DTEND:19970801T220000Z +RECURRENCE-ID:19970809T210000Z +DTSTAMP:19970726T083000 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +UID:acme-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTART:19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +END:VEVENT +END:VCALENDAR + +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123402@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970401T163000Z +DTEND:19970402T010000Z +SUMMARY:Laurel is in sensitivity awareness class. +CLASS:PUBLIC +CATEGORIES:BUSINESS,HUMAN RESOURCES +TRANSP:TRANSPARENT +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123403@host.com +DTSTAMP:19970901T1300Z +DTSTART:19971102 +SUMMARY:Our Blissful Anniversary +CLASS:CONFIDENTIAL +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +RRULE:FREQ=YEARLY +END:VEVENT + +BEGIN:VTODO +UID:19970901T130000Z-123404@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970415T133000Z +DUE:19970416T045959Z +SUMMARY:1996 Income Tax Preparation +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +STATUS:NEEDS-ACTION +END:VTODO +BEGIN:VJOURNAL +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T1300Z +DTSTART;VALUE=DATE:19970317 +SUMMARY:Staff meeting minutes +DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa + and Bob. Aurora project plans were reviewed. There is currently + no budget reserves for this project. Lisa will escalate to + management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative called + to discuss new printer. Promised to get us a demo by Friday.\n + 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. + Is looking into a loaner car. 654-2323 (tel). +END:VJOURNAL +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +DTSTAMP:19970901T083000Z +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTAMP:19970901T100000Z +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M +URL:http://host2.com/pub/busy/jpublic-01.ifb +COMMENT:This iCalendar file contains busy time information for + the next three months. +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19971026T020000 +RDATE:19971026T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19971026T020000 +RDATE:19970406T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +BEGIN:DAYLIGHT +DTSTART:19990424T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +REPEAT:4 +DURATION:PT15M +ACTION:AUDIO +ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +REPEAT:2 +DURATION:PT15M +ACTION:DISPLAY +DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. +END:VALARM +BEGIN:VALARM +TRIGGER:-P2D +ACTION:EMAIL +ATTENDEE:MAILTO:john_doe@host.com +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. +ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen + da.doc +END:VALARM +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +REPEAT:23 +DURATION:PT1H +ACTION:PROCEDURE +ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- + procs/felizano.exe +END:VALARM +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + MAILTO:employee-A@host.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTART;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T1200Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ + conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER:19980403T120000 +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- + files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ, Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTART:19970701T200000Z +DTSTAMP:19970611T190000Z +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970612T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SEQUENCE:1 +UID:0981234-1234234-23@example.com +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +COMMENT:DUKES forfeit the game +SEQUENCE:2 +UID:0981234-1234234-23@example.com +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +CALSCALE:GREGORIAN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-Chicago +TZURL:http://zones.stds_r_us.net/tz/America-Chicago +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +ATTACH:http://www.dukes.com/ +CATEGORIES:SPORTS EVENT,ENTERTAINMENT +CLASS:PRIVATE +DESCRIPTION:MIDWAY STADIUM\n + Big time game. MUST see.\n + Expected duration:2 hours\n +DTEND;TZID=America-Chicago:19970701T180000 +DTSTART;TZID=America-Chicago:19970702T160000 +DTSTAMP:19970614T190000Z +STATUS:CONFIRMED +LOCATION;VALUE=URI:http://www.midwaystadium.com/ +PRIORITY:2 +RESOURCES:SCOREBOARD +SEQUENCE:3 +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +RELATED-TO:0981234-1234234-14@example.com +BEGIN:VALARM +TRIGGER:-PT2H +ACTION:DISPLAY +DESCRIPTION:You should be leaving for the game now. +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +ACTION:AUDIO +END:VALARM +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970614T190000Z +UID:0981234-1234234-23@example.com +DTSTART;VALUE=DATE:19970714 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY: Bastille Day +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T2000000Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE; + CUTYPE=ROOM:Mailto:Conf@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T190000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +DTSTAMP:19970613T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T190000Z +DTEND:19970701T200000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +DTSTAMP:19970611T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:COUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +DTSTAMP:19970612T190000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +COMMENT:This time works much better and I think the big conference + room is too big +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +SUMMARY:Discuss the Merits of the election results - changed to + meet B's schedule +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:DECLINECOUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +COMMENT:Sorry\, I cannot change this meeting time +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +ATTENDEE;RSVP=TRUE; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED- + FROM="Mailto:C@example.com":Mailto:E@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED; + DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com +COMMENT:Sorry\, I will be out of town at that time. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DECLINED; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +SUMMARY:Phone Conference +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +DTSTAMP:19970614T200000Z +COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR + INVITATION +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +COMMENT:Mr. B cannot attend. It's raining. Lets cancel. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CANCELLED +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:mailto:B@example.com +COMMENT:You're off the hook for this meeting +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970613T193000Z +SEQUENCE:1 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +ATTENDEE;CUTYPE=ROOM:CR_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT; + RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:2 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +RRULE:FREQ=WEEKLY +SUMMARY:Phone Conference +UID:123456@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +METHOD:PUBLISH +BEGIN:VFREEBUSY +DTSTAMP:19980101T124100Z +ORGANIZER:MAILTO:A@Example.com +DTSTART:19980101T124200Z +DTEND:19980107T124200Z +FREEBUSY:19980101T180000Z/19980101T190000Z +FREEBUSY:19980103T020000Z/19980103T050000Z +FREEBUSY:19980107T020000Z/19980107T050000Z +FREEBUSY:19980113T000000Z/19980113T010000Z +FREEBUSY:19980115T190000Z/19980115T200000Z +FREEBUSY:19980115T220000Z/19980115T230000Z +FREEBUSY:19980116T013000Z/19980116T043000Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T080000Z +DTEND:19970701T200000 +UID:calsrv.example.com-873970198738777@example.com +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:A@example.com +ATTENDEE:Mailto:B@example.com +DTSTART:19970701T080000Z +DTEND:19970701T200000Z +UID:calsrv.example.com-873970198738777@example.com +FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M +DTSTAMP:19970613T190030Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-SanJose +TZURL:http://zones.stds_r_us.net/tz/America-SanJose +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:A@example.COM +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:B@example.fr +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:c@example.jp +DTSTAMP:19970613T190030Z +DTSTART;TZID=America-SanJose:19970701T140000 +DTEND;TZID=America-SanJose:19970701T150000 +RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU +RDATE;TZID=America-SanJose:19970910T140000 +EXDATE;TZID=America-SanJose:19970909T140000 +EXDATE;TZID=America-SanJose:19971028T140000 +SUMMARY:Weekly Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +LOCATION:Conference Call +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1com +RECURRENCE-ID:19970701T210000Z +SEQUENCE:1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970703T210000Z +DTEND:19970703T220000Z +LOCATION:Conference Call +DTSTAMP:19970626T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +RECURRENCE-ID:19970801T210000Z +SEQUENCE:2 +STATUS:CANCELLED +DTSTAMP:19970721T093000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DTSTAMP:19970721T103000Z +STATUS:CANCELLED +SEQUENCE:3 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID;RANGE=THISANDFUTURE:19970901T210000Z +SEQUENCE:3 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Discussion +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970901T210000Z +DTEND:19970901T220000Z +LOCATION:Building 32\, Microsoft\, Seattle\, WA +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T210000Z +DTEND:19970715T220000Z +LOCATION:Conference Call +DTSTAMP:19970629T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +LOCATION:The White Room +DTSTAMP:19980301T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The Usual conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU,TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The White Room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RDATE:19980304T180000Z +RDATE:19980311T180000Z +RDATE:19980318T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:1 +RECURRENCE-ID:19980311T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980311T180000Z +DTSTAMP:19980306T193000Z +LOCATION:The Small conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980315T180000Z +DTEND:19980315T200000Z +DTSTAMP:19980307T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +RDATE:19980304T180000Z +RDATE:19980311T160000Z +RDATE:19980315T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +SEQUENCE:2 +RECURRENCE-ID:19980311T160000Z +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980304T180000Z +DTSTAMP:19980306T193000Z +ORGANIZER:Mailto:A@example.com +LOCATION:The Small conference room +UID:guid-1@host1.com +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:COUNTER +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID:19970715T210000Z +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T220000Z +DTEND:19970715T230000Z +LOCATION:Conference Call +COMMENT:May we bump this by an hour? I have a conflict +DTSTAMP:19970629T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +DTSTAMP:19970602T094000Z +LOCATION:Conference Call +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single + event;RRULE +REQUEST-STATUS:3.0;Invalid Property Name;FOO +UID:guid-1@host1.com +SEQUENCE:0 +DTSTAMP:19970603T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:Needs Action +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +UID:calsrv.example.com-873970198738777-00@example.com +COMMENT:I'll send you my input by e-mail +SEQUENCE:0 +DTSTAMP:19970717T203000Z +REQUEST-STATUS:2.0;Success +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +SUMMARY:Create the requirements document +PRIORITY:1 +SEQUENCE:0 +STATUS:IN-PROCESS +DTSTART:19970701T170000Z +DTSTAMP:19970717T230000Z +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +REQUEST-STATUS:2.0 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +REQUEST-STATUS:2.0 +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;PARTSTAT=IN-PROCESS;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:1 +DTSTAMP:19970718T100000Z +STATUS:IN-PROGRESS +PERCENT-COMPLETE:40 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR +DTSTART:19980101T100000 +DUE:19980103T100000 +SUMMARY:Send Status Reports to Area Managers +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:NEEDS-ACTION +PRIORITY:1 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +RECURRENCE-ID:19980101T170000Z +SEQUENCE:1 +ORGANIZER:MAILTO:A@Example.com +REQUEST-STATUS:2.0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VJOURNAL +DTSTART:19971002T200000Z +DTSTAMP:19971002T200000Z +ORGANIZER:MAILTO:A@Example.com +SUMMARY:Phone conference minutes +DESCRIPTION:The editors meeting was held on October 1\, 1997. + Details are in the attached document. +UID:0981234-1234234-2410@example.com +RELATED-TO:0981234-1234234-2402-35@example.com +ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +UID: guid-1-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:acme-12345@host1.com +SEQUENCE:3 +RRULE:FREQ=WEEKLY +RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +DESCRIPTION:IETF-C&S Conference Call +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970801T210000Z +DTEND:19970801T220000Z +RECURRENCE-ID:19970809T210000Z +DTSTAMP:19970726T083000 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +UID:acme-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTART:19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +END:VEVENT +END:VCALENDAR + +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123402@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970401T163000Z +DTEND:19970402T010000Z +SUMMARY:Laurel is in sensitivity awareness class. +CLASS:PUBLIC +CATEGORIES:BUSINESS,HUMAN RESOURCES +TRANSP:TRANSPARENT +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123403@host.com +DTSTAMP:19970901T1300Z +DTSTART:19971102 +SUMMARY:Our Blissful Anniversary +CLASS:CONFIDENTIAL +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +RRULE:FREQ=YEARLY +END:VEVENT + +BEGIN:VTODO +UID:19970901T130000Z-123404@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970415T133000Z +DUE:19970416T045959Z +SUMMARY:1996 Income Tax Preparation +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +STATUS:NEEDS-ACTION +END:VTODO +BEGIN:VJOURNAL +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T1300Z +DTSTART;VALUE=DATE:19970317 +SUMMARY:Staff meeting minutes +DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa + and Bob. Aurora project plans were reviewed. There is currently + no budget reserves for this project. Lisa will escalate to + management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative called + to discuss new printer. Promised to get us a demo by Friday.\n + 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. + Is looking into a loaner car. 654-2323 (tel). +END:VJOURNAL +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +DTSTAMP:19970901T083000Z +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTAMP:19970901T100000Z +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M +URL:http://host2.com/pub/busy/jpublic-01.ifb +COMMENT:This iCalendar file contains busy time information for + the next three months. +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19971026T020000 +RDATE:19971026T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19971026T020000 +RDATE:19970406T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +BEGIN:DAYLIGHT +DTSTART:19990424T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +REPEAT:4 +DURATION:PT15M +ACTION:AUDIO +ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +REPEAT:2 +DURATION:PT15M +ACTION:DISPLAY +DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. +END:VALARM +BEGIN:VALARM +TRIGGER:-P2D +ACTION:EMAIL +ATTENDEE:MAILTO:john_doe@host.com +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. +ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen + da.doc +END:VALARM +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +REPEAT:23 +DURATION:PT1H +ACTION:PROCEDURE +ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- + procs/felizano.exe +END:VALARM +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + MAILTO:employee-A@host.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTART;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T1200Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ + conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER:19980403T120000 +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- + files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ, Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTART:19970701T200000Z +DTSTAMP:19970611T190000Z +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970612T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SEQUENCE:1 +UID:0981234-1234234-23@example.com +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +COMMENT:DUKES forfeit the game +SEQUENCE:2 +UID:0981234-1234234-23@example.com +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +CALSCALE:GREGORIAN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-Chicago +TZURL:http://zones.stds_r_us.net/tz/America-Chicago +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +ATTACH:http://www.dukes.com/ +CATEGORIES:SPORTS EVENT,ENTERTAINMENT +CLASS:PRIVATE +DESCRIPTION:MIDWAY STADIUM\n + Big time game. MUST see.\n + Expected duration:2 hours\n +DTEND;TZID=America-Chicago:19970701T180000 +DTSTART;TZID=America-Chicago:19970702T160000 +DTSTAMP:19970614T190000Z +STATUS:CONFIRMED +LOCATION;VALUE=URI:http://www.midwaystadium.com/ +PRIORITY:2 +RESOURCES:SCOREBOARD +SEQUENCE:3 +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +RELATED-TO:0981234-1234234-14@example.com +BEGIN:VALARM +TRIGGER:-PT2H +ACTION:DISPLAY +DESCRIPTION:You should be leaving for the game now. +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +ACTION:AUDIO +END:VALARM +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970614T190000Z +UID:0981234-1234234-23@example.com +DTSTART;VALUE=DATE:19970714 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY: Bastille Day +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T2000000Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE; + CUTYPE=ROOM:Mailto:Conf@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T190000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +DTSTAMP:19970613T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T190000Z +DTEND:19970701T200000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +DTSTAMP:19970611T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:COUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +DTSTAMP:19970612T190000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +COMMENT:This time works much better and I think the big conference + room is too big +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +SUMMARY:Discuss the Merits of the election results - changed to + meet B's schedule +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:DECLINECOUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +COMMENT:Sorry\, I cannot change this meeting time +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +ATTENDEE;RSVP=TRUE; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED- + FROM="Mailto:C@example.com":Mailto:E@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED; + DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com +COMMENT:Sorry\, I will be out of town at that time. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DECLINED; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +SUMMARY:Phone Conference +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +DTSTAMP:19970614T200000Z +COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR + INVITATION +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +COMMENT:Mr. B cannot attend. It's raining. Lets cancel. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CANCELLED +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:mailto:B@example.com +COMMENT:You're off the hook for this meeting +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970613T193000Z +SEQUENCE:1 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +ATTENDEE;CUTYPE=ROOM:CR_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT; + RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:2 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +RRULE:FREQ=WEEKLY +SUMMARY:Phone Conference +UID:123456@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +METHOD:PUBLISH +BEGIN:VFREEBUSY +DTSTAMP:19980101T124100Z +ORGANIZER:MAILTO:A@Example.com +DTSTART:19980101T124200Z +DTEND:19980107T124200Z +FREEBUSY:19980101T180000Z/19980101T190000Z +FREEBUSY:19980103T020000Z/19980103T050000Z +FREEBUSY:19980107T020000Z/19980107T050000Z +FREEBUSY:19980113T000000Z/19980113T010000Z +FREEBUSY:19980115T190000Z/19980115T200000Z +FREEBUSY:19980115T220000Z/19980115T230000Z +FREEBUSY:19980116T013000Z/19980116T043000Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T080000Z +DTEND:19970701T200000 +UID:calsrv.example.com-873970198738777@example.com +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:A@example.com +ATTENDEE:Mailto:B@example.com +DTSTART:19970701T080000Z +DTEND:19970701T200000Z +UID:calsrv.example.com-873970198738777@example.com +FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M +DTSTAMP:19970613T190030Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-SanJose +TZURL:http://zones.stds_r_us.net/tz/America-SanJose +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:A@example.COM +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:B@example.fr +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:c@example.jp +DTSTAMP:19970613T190030Z +DTSTART;TZID=America-SanJose:19970701T140000 +DTEND;TZID=America-SanJose:19970701T150000 +RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU +RDATE;TZID=America-SanJose:19970910T140000 +EXDATE;TZID=America-SanJose:19970909T140000 +EXDATE;TZID=America-SanJose:19971028T140000 +SUMMARY:Weekly Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +LOCATION:Conference Call +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1com +RECURRENCE-ID:19970701T210000Z +SEQUENCE:1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970703T210000Z +DTEND:19970703T220000Z +LOCATION:Conference Call +DTSTAMP:19970626T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +RECURRENCE-ID:19970801T210000Z +SEQUENCE:2 +STATUS:CANCELLED +DTSTAMP:19970721T093000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DTSTAMP:19970721T103000Z +STATUS:CANCELLED +SEQUENCE:3 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID;RANGE=THISANDFUTURE:19970901T210000Z +SEQUENCE:3 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Discussion +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970901T210000Z +DTEND:19970901T220000Z +LOCATION:Building 32\, Microsoft\, Seattle\, WA +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T210000Z +DTEND:19970715T220000Z +LOCATION:Conference Call +DTSTAMP:19970629T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +LOCATION:The White Room +DTSTAMP:19980301T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The Usual conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU,TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The White Room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RDATE:19980304T180000Z +RDATE:19980311T180000Z +RDATE:19980318T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:1 +RECURRENCE-ID:19980311T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980311T180000Z +DTSTAMP:19980306T193000Z +LOCATION:The Small conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980315T180000Z +DTEND:19980315T200000Z +DTSTAMP:19980307T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +RDATE:19980304T180000Z +RDATE:19980311T160000Z +RDATE:19980315T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +SEQUENCE:2 +RECURRENCE-ID:19980311T160000Z +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980304T180000Z +DTSTAMP:19980306T193000Z +ORGANIZER:Mailto:A@example.com +LOCATION:The Small conference room +UID:guid-1@host1.com +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:COUNTER +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID:19970715T210000Z +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T220000Z +DTEND:19970715T230000Z +LOCATION:Conference Call +COMMENT:May we bump this by an hour? I have a conflict +DTSTAMP:19970629T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +DTSTAMP:19970602T094000Z +LOCATION:Conference Call +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single + event;RRULE +REQUEST-STATUS:3.0;Invalid Property Name;FOO +UID:guid-1@host1.com +SEQUENCE:0 +DTSTAMP:19970603T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:Needs Action +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +UID:calsrv.example.com-873970198738777-00@example.com +COMMENT:I'll send you my input by e-mail +SEQUENCE:0 +DTSTAMP:19970717T203000Z +REQUEST-STATUS:2.0;Success +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +SUMMARY:Create the requirements document +PRIORITY:1 +SEQUENCE:0 +STATUS:IN-PROCESS +DTSTART:19970701T170000Z +DTSTAMP:19970717T230000Z +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +REQUEST-STATUS:2.0 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +REQUEST-STATUS:2.0 +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;PARTSTAT=IN-PROCESS;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:1 +DTSTAMP:19970718T100000Z +STATUS:IN-PROGRESS +PERCENT-COMPLETE:40 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR +DTSTART:19980101T100000 +DUE:19980103T100000 +SUMMARY:Send Status Reports to Area Managers +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:NEEDS-ACTION +PRIORITY:1 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +RECURRENCE-ID:19980101T170000Z +SEQUENCE:1 +ORGANIZER:MAILTO:A@Example.com +REQUEST-STATUS:2.0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VJOURNAL +DTSTART:19971002T200000Z +DTSTAMP:19971002T200000Z +ORGANIZER:MAILTO:A@Example.com +SUMMARY:Phone conference minutes +DESCRIPTION:The editors meeting was held on October 1\, 1997. + Details are in the attached document. +UID:0981234-1234234-2410@example.com +RELATED-TO:0981234-1234234-2402-35@example.com +ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +UID: guid-1-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:acme-12345@host1.com +SEQUENCE:3 +RRULE:FREQ=WEEKLY +RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +DESCRIPTION:IETF-C&S Conference Call +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970801T210000Z +DTEND:19970801T220000Z +RECURRENCE-ID:19970809T210000Z +DTSTAMP:19970726T083000 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +UID:acme-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTART:19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +END:VEVENT +END:VCALENDAR + +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123402@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970401T163000Z +DTEND:19970402T010000Z +SUMMARY:Laurel is in sensitivity awareness class. +CLASS:PUBLIC +CATEGORIES:BUSINESS,HUMAN RESOURCES +TRANSP:TRANSPARENT +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123403@host.com +DTSTAMP:19970901T1300Z +DTSTART:19971102 +SUMMARY:Our Blissful Anniversary +CLASS:CONFIDENTIAL +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +RRULE:FREQ=YEARLY +END:VEVENT + +BEGIN:VTODO +UID:19970901T130000Z-123404@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970415T133000Z +DUE:19970416T045959Z +SUMMARY:1996 Income Tax Preparation +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +STATUS:NEEDS-ACTION +END:VTODO +BEGIN:VJOURNAL +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T1300Z +DTSTART;VALUE=DATE:19970317 +SUMMARY:Staff meeting minutes +DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa + and Bob. Aurora project plans were reviewed. There is currently + no budget reserves for this project. Lisa will escalate to + management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative called + to discuss new printer. Promised to get us a demo by Friday.\n + 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. + Is looking into a loaner car. 654-2323 (tel). +END:VJOURNAL +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +DTSTAMP:19970901T083000Z +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTAMP:19970901T100000Z +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M +URL:http://host2.com/pub/busy/jpublic-01.ifb +COMMENT:This iCalendar file contains busy time information for + the next three months. +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19971026T020000 +RDATE:19971026T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19971026T020000 +RDATE:19970406T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +BEGIN:DAYLIGHT +DTSTART:19990424T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +REPEAT:4 +DURATION:PT15M +ACTION:AUDIO +ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +REPEAT:2 +DURATION:PT15M +ACTION:DISPLAY +DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. +END:VALARM +BEGIN:VALARM +TRIGGER:-P2D +ACTION:EMAIL +ATTENDEE:MAILTO:john_doe@host.com +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. +ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen + da.doc +END:VALARM +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +REPEAT:23 +DURATION:PT1H +ACTION:PROCEDURE +ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- + procs/felizano.exe +END:VALARM +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + MAILTO:employee-A@host.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTART;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T1200Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ + conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER:19980403T120000 +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- + files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ, Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTART:19970701T200000Z +DTSTAMP:19970611T190000Z +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970612T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SEQUENCE:1 +UID:0981234-1234234-23@example.com +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +COMMENT:DUKES forfeit the game +SEQUENCE:2 +UID:0981234-1234234-23@example.com +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +CALSCALE:GREGORIAN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-Chicago +TZURL:http://zones.stds_r_us.net/tz/America-Chicago +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +ATTACH:http://www.dukes.com/ +CATEGORIES:SPORTS EVENT,ENTERTAINMENT +CLASS:PRIVATE +DESCRIPTION:MIDWAY STADIUM\n + Big time game. MUST see.\n + Expected duration:2 hours\n +DTEND;TZID=America-Chicago:19970701T180000 +DTSTART;TZID=America-Chicago:19970702T160000 +DTSTAMP:19970614T190000Z +STATUS:CONFIRMED +LOCATION;VALUE=URI:http://www.midwaystadium.com/ +PRIORITY:2 +RESOURCES:SCOREBOARD +SEQUENCE:3 +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +RELATED-TO:0981234-1234234-14@example.com +BEGIN:VALARM +TRIGGER:-PT2H +ACTION:DISPLAY +DESCRIPTION:You should be leaving for the game now. +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +ACTION:AUDIO +END:VALARM +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970614T190000Z +UID:0981234-1234234-23@example.com +DTSTART;VALUE=DATE:19970714 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY: Bastille Day +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T2000000Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE; + CUTYPE=ROOM:Mailto:Conf@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T190000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +DTSTAMP:19970613T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T190000Z +DTEND:19970701T200000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +DTSTAMP:19970611T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:COUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +DTSTAMP:19970612T190000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +COMMENT:This time works much better and I think the big conference + room is too big +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +SUMMARY:Discuss the Merits of the election results - changed to + meet B's schedule +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:DECLINECOUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +COMMENT:Sorry\, I cannot change this meeting time +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +ATTENDEE;RSVP=TRUE; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED- + FROM="Mailto:C@example.com":Mailto:E@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED; + DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com +COMMENT:Sorry\, I will be out of town at that time. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DECLINED; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +SUMMARY:Phone Conference +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +DTSTAMP:19970614T200000Z +COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR + INVITATION +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +COMMENT:Mr. B cannot attend. It's raining. Lets cancel. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CANCELLED +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:mailto:B@example.com +COMMENT:You're off the hook for this meeting +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970613T193000Z +SEQUENCE:1 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +ATTENDEE;CUTYPE=ROOM:CR_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT; + RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:2 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +RRULE:FREQ=WEEKLY +SUMMARY:Phone Conference +UID:123456@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +METHOD:PUBLISH +BEGIN:VFREEBUSY +DTSTAMP:19980101T124100Z +ORGANIZER:MAILTO:A@Example.com +DTSTART:19980101T124200Z +DTEND:19980107T124200Z +FREEBUSY:19980101T180000Z/19980101T190000Z +FREEBUSY:19980103T020000Z/19980103T050000Z +FREEBUSY:19980107T020000Z/19980107T050000Z +FREEBUSY:19980113T000000Z/19980113T010000Z +FREEBUSY:19980115T190000Z/19980115T200000Z +FREEBUSY:19980115T220000Z/19980115T230000Z +FREEBUSY:19980116T013000Z/19980116T043000Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T080000Z +DTEND:19970701T200000 +UID:calsrv.example.com-873970198738777@example.com +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:A@example.com +ATTENDEE:Mailto:B@example.com +DTSTART:19970701T080000Z +DTEND:19970701T200000Z +UID:calsrv.example.com-873970198738777@example.com +FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M +DTSTAMP:19970613T190030Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-SanJose +TZURL:http://zones.stds_r_us.net/tz/America-SanJose +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:A@example.COM +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:B@example.fr +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:c@example.jp +DTSTAMP:19970613T190030Z +DTSTART;TZID=America-SanJose:19970701T140000 +DTEND;TZID=America-SanJose:19970701T150000 +RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU +RDATE;TZID=America-SanJose:19970910T140000 +EXDATE;TZID=America-SanJose:19970909T140000 +EXDATE;TZID=America-SanJose:19971028T140000 +SUMMARY:Weekly Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +LOCATION:Conference Call +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1com +RECURRENCE-ID:19970701T210000Z +SEQUENCE:1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970703T210000Z +DTEND:19970703T220000Z +LOCATION:Conference Call +DTSTAMP:19970626T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +RECURRENCE-ID:19970801T210000Z +SEQUENCE:2 +STATUS:CANCELLED +DTSTAMP:19970721T093000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DTSTAMP:19970721T103000Z +STATUS:CANCELLED +SEQUENCE:3 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID;RANGE=THISANDFUTURE:19970901T210000Z +SEQUENCE:3 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Discussion +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970901T210000Z +DTEND:19970901T220000Z +LOCATION:Building 32\, Microsoft\, Seattle\, WA +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T210000Z +DTEND:19970715T220000Z +LOCATION:Conference Call +DTSTAMP:19970629T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +LOCATION:The White Room +DTSTAMP:19980301T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The Usual conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU,TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The White Room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RDATE:19980304T180000Z +RDATE:19980311T180000Z +RDATE:19980318T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:1 +RECURRENCE-ID:19980311T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980311T180000Z +DTSTAMP:19980306T193000Z +LOCATION:The Small conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980315T180000Z +DTEND:19980315T200000Z +DTSTAMP:19980307T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +RDATE:19980304T180000Z +RDATE:19980311T160000Z +RDATE:19980315T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +SEQUENCE:2 +RECURRENCE-ID:19980311T160000Z +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980304T180000Z +DTSTAMP:19980306T193000Z +ORGANIZER:Mailto:A@example.com +LOCATION:The Small conference room +UID:guid-1@host1.com +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:COUNTER +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID:19970715T210000Z +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T220000Z +DTEND:19970715T230000Z +LOCATION:Conference Call +COMMENT:May we bump this by an hour? I have a conflict +DTSTAMP:19970629T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +DTSTAMP:19970602T094000Z +LOCATION:Conference Call +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single + event;RRULE +REQUEST-STATUS:3.0;Invalid Property Name;FOO +UID:guid-1@host1.com +SEQUENCE:0 +DTSTAMP:19970603T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:Needs Action +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +UID:calsrv.example.com-873970198738777-00@example.com +COMMENT:I'll send you my input by e-mail +SEQUENCE:0 +DTSTAMP:19970717T203000Z +REQUEST-STATUS:2.0;Success +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +SUMMARY:Create the requirements document +PRIORITY:1 +SEQUENCE:0 +STATUS:IN-PROCESS +DTSTART:19970701T170000Z +DTSTAMP:19970717T230000Z +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +REQUEST-STATUS:2.0 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +REQUEST-STATUS:2.0 +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;PARTSTAT=IN-PROCESS;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:1 +DTSTAMP:19970718T100000Z +STATUS:IN-PROGRESS +PERCENT-COMPLETE:40 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR +DTSTART:19980101T100000 +DUE:19980103T100000 +SUMMARY:Send Status Reports to Area Managers +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:NEEDS-ACTION +PRIORITY:1 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +RECURRENCE-ID:19980101T170000Z +SEQUENCE:1 +ORGANIZER:MAILTO:A@Example.com +REQUEST-STATUS:2.0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VJOURNAL +DTSTART:19971002T200000Z +DTSTAMP:19971002T200000Z +ORGANIZER:MAILTO:A@Example.com +SUMMARY:Phone conference minutes +DESCRIPTION:The editors meeting was held on October 1\, 1997. + Details are in the attached document. +UID:0981234-1234234-2410@example.com +RELATED-TO:0981234-1234234-2402-35@example.com +ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +UID: guid-1-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:acme-12345@host1.com +SEQUENCE:3 +RRULE:FREQ=WEEKLY +RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +DESCRIPTION:IETF-C&S Conference Call +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970801T210000Z +DTEND:19970801T220000Z +RECURRENCE-ID:19970809T210000Z +DTSTAMP:19970726T083000 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +UID:acme-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTART:19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +END:VEVENT +END:VCALENDAR + +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123402@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970401T163000Z +DTEND:19970402T010000Z +SUMMARY:Laurel is in sensitivity awareness class. +CLASS:PUBLIC +CATEGORIES:BUSINESS,HUMAN RESOURCES +TRANSP:TRANSPARENT +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123403@host.com +DTSTAMP:19970901T1300Z +DTSTART:19971102 +SUMMARY:Our Blissful Anniversary +CLASS:CONFIDENTIAL +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +RRULE:FREQ=YEARLY +END:VEVENT + +BEGIN:VTODO +UID:19970901T130000Z-123404@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970415T133000Z +DUE:19970416T045959Z +SUMMARY:1996 Income Tax Preparation +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +STATUS:NEEDS-ACTION +END:VTODO +BEGIN:VJOURNAL +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T1300Z +DTSTART;VALUE=DATE:19970317 +SUMMARY:Staff meeting minutes +DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa + and Bob. Aurora project plans were reviewed. There is currently + no budget reserves for this project. Lisa will escalate to + management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative called + to discuss new printer. Promised to get us a demo by Friday.\n + 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. + Is looking into a loaner car. 654-2323 (tel). +END:VJOURNAL +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +DTSTAMP:19970901T083000Z +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTAMP:19970901T100000Z +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M +URL:http://host2.com/pub/busy/jpublic-01.ifb +COMMENT:This iCalendar file contains busy time information for + the next three months. +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19971026T020000 +RDATE:19971026T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19971026T020000 +RDATE:19970406T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +BEGIN:DAYLIGHT +DTSTART:19990424T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +REPEAT:4 +DURATION:PT15M +ACTION:AUDIO +ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +REPEAT:2 +DURATION:PT15M +ACTION:DISPLAY +DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. +END:VALARM +BEGIN:VALARM +TRIGGER:-P2D +ACTION:EMAIL +ATTENDEE:MAILTO:john_doe@host.com +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. +ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen + da.doc +END:VALARM +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +REPEAT:23 +DURATION:PT1H +ACTION:PROCEDURE +ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- + procs/felizano.exe +END:VALARM +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + MAILTO:employee-A@host.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTART;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T1200Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ + conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER:19980403T120000 +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- + files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ, Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTART:19970701T200000Z +DTSTAMP:19970611T190000Z +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970612T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SEQUENCE:1 +UID:0981234-1234234-23@example.com +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +COMMENT:DUKES forfeit the game +SEQUENCE:2 +UID:0981234-1234234-23@example.com +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +CALSCALE:GREGORIAN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-Chicago +TZURL:http://zones.stds_r_us.net/tz/America-Chicago +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +ATTACH:http://www.dukes.com/ +CATEGORIES:SPORTS EVENT,ENTERTAINMENT +CLASS:PRIVATE +DESCRIPTION:MIDWAY STADIUM\n + Big time game. MUST see.\n + Expected duration:2 hours\n +DTEND;TZID=America-Chicago:19970701T180000 +DTSTART;TZID=America-Chicago:19970702T160000 +DTSTAMP:19970614T190000Z +STATUS:CONFIRMED +LOCATION;VALUE=URI:http://www.midwaystadium.com/ +PRIORITY:2 +RESOURCES:SCOREBOARD +SEQUENCE:3 +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +RELATED-TO:0981234-1234234-14@example.com +BEGIN:VALARM +TRIGGER:-PT2H +ACTION:DISPLAY +DESCRIPTION:You should be leaving for the game now. +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +ACTION:AUDIO +END:VALARM +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970614T190000Z +UID:0981234-1234234-23@example.com +DTSTART;VALUE=DATE:19970714 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY: Bastille Day +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T2000000Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE; + CUTYPE=ROOM:Mailto:Conf@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T190000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +DTSTAMP:19970613T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T190000Z +DTEND:19970701T200000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +DTSTAMP:19970611T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:COUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +DTSTAMP:19970612T190000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +COMMENT:This time works much better and I think the big conference + room is too big +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +SUMMARY:Discuss the Merits of the election results - changed to + meet B's schedule +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:DECLINECOUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +COMMENT:Sorry\, I cannot change this meeting time +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +ATTENDEE;RSVP=TRUE; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED- + FROM="Mailto:C@example.com":Mailto:E@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED; + DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com +COMMENT:Sorry\, I will be out of town at that time. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DECLINED; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +SUMMARY:Phone Conference +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +DTSTAMP:19970614T200000Z +COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR + INVITATION +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +COMMENT:Mr. B cannot attend. It's raining. Lets cancel. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CANCELLED +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:mailto:B@example.com +COMMENT:You're off the hook for this meeting +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970613T193000Z +SEQUENCE:1 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +ATTENDEE;CUTYPE=ROOM:CR_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT; + RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:2 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +RRULE:FREQ=WEEKLY +SUMMARY:Phone Conference +UID:123456@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +METHOD:PUBLISH +BEGIN:VFREEBUSY +DTSTAMP:19980101T124100Z +ORGANIZER:MAILTO:A@Example.com +DTSTART:19980101T124200Z +DTEND:19980107T124200Z +FREEBUSY:19980101T180000Z/19980101T190000Z +FREEBUSY:19980103T020000Z/19980103T050000Z +FREEBUSY:19980107T020000Z/19980107T050000Z +FREEBUSY:19980113T000000Z/19980113T010000Z +FREEBUSY:19980115T190000Z/19980115T200000Z +FREEBUSY:19980115T220000Z/19980115T230000Z +FREEBUSY:19980116T013000Z/19980116T043000Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T080000Z +DTEND:19970701T200000 +UID:calsrv.example.com-873970198738777@example.com +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:A@example.com +ATTENDEE:Mailto:B@example.com +DTSTART:19970701T080000Z +DTEND:19970701T200000Z +UID:calsrv.example.com-873970198738777@example.com +FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M +DTSTAMP:19970613T190030Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-SanJose +TZURL:http://zones.stds_r_us.net/tz/America-SanJose +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:A@example.COM +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:B@example.fr +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:c@example.jp +DTSTAMP:19970613T190030Z +DTSTART;TZID=America-SanJose:19970701T140000 +DTEND;TZID=America-SanJose:19970701T150000 +RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU +RDATE;TZID=America-SanJose:19970910T140000 +EXDATE;TZID=America-SanJose:19970909T140000 +EXDATE;TZID=America-SanJose:19971028T140000 +SUMMARY:Weekly Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +LOCATION:Conference Call +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1com +RECURRENCE-ID:19970701T210000Z +SEQUENCE:1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970703T210000Z +DTEND:19970703T220000Z +LOCATION:Conference Call +DTSTAMP:19970626T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +RECURRENCE-ID:19970801T210000Z +SEQUENCE:2 +STATUS:CANCELLED +DTSTAMP:19970721T093000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DTSTAMP:19970721T103000Z +STATUS:CANCELLED +SEQUENCE:3 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID;RANGE=THISANDFUTURE:19970901T210000Z +SEQUENCE:3 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Discussion +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970901T210000Z +DTEND:19970901T220000Z +LOCATION:Building 32\, Microsoft\, Seattle\, WA +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T210000Z +DTEND:19970715T220000Z +LOCATION:Conference Call +DTSTAMP:19970629T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +LOCATION:The White Room +DTSTAMP:19980301T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The Usual conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU,TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The White Room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RDATE:19980304T180000Z +RDATE:19980311T180000Z +RDATE:19980318T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:1 +RECURRENCE-ID:19980311T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980311T180000Z +DTSTAMP:19980306T193000Z +LOCATION:The Small conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980315T180000Z +DTEND:19980315T200000Z +DTSTAMP:19980307T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +RDATE:19980304T180000Z +RDATE:19980311T160000Z +RDATE:19980315T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +SEQUENCE:2 +RECURRENCE-ID:19980311T160000Z +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980304T180000Z +DTSTAMP:19980306T193000Z +ORGANIZER:Mailto:A@example.com +LOCATION:The Small conference room +UID:guid-1@host1.com +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:COUNTER +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID:19970715T210000Z +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T220000Z +DTEND:19970715T230000Z +LOCATION:Conference Call +COMMENT:May we bump this by an hour? I have a conflict +DTSTAMP:19970629T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +DTSTAMP:19970602T094000Z +LOCATION:Conference Call +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single + event;RRULE +REQUEST-STATUS:3.0;Invalid Property Name;FOO +UID:guid-1@host1.com +SEQUENCE:0 +DTSTAMP:19970603T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:Needs Action +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +UID:calsrv.example.com-873970198738777-00@example.com +COMMENT:I'll send you my input by e-mail +SEQUENCE:0 +DTSTAMP:19970717T203000Z +REQUEST-STATUS:2.0;Success +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +SUMMARY:Create the requirements document +PRIORITY:1 +SEQUENCE:0 +STATUS:IN-PROCESS +DTSTART:19970701T170000Z +DTSTAMP:19970717T230000Z +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +REQUEST-STATUS:2.0 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +REQUEST-STATUS:2.0 +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;PARTSTAT=IN-PROCESS;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:1 +DTSTAMP:19970718T100000Z +STATUS:IN-PROGRESS +PERCENT-COMPLETE:40 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR +DTSTART:19980101T100000 +DUE:19980103T100000 +SUMMARY:Send Status Reports to Area Managers +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:NEEDS-ACTION +PRIORITY:1 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +RECURRENCE-ID:19980101T170000Z +SEQUENCE:1 +ORGANIZER:MAILTO:A@Example.com +REQUEST-STATUS:2.0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VJOURNAL +DTSTART:19971002T200000Z +DTSTAMP:19971002T200000Z +ORGANIZER:MAILTO:A@Example.com +SUMMARY:Phone conference minutes +DESCRIPTION:The editors meeting was held on October 1\, 1997. + Details are in the attached document. +UID:0981234-1234234-2410@example.com +RELATED-TO:0981234-1234234-2402-35@example.com +ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +UID: guid-1-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:acme-12345@host1.com +SEQUENCE:3 +RRULE:FREQ=WEEKLY +RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +DESCRIPTION:IETF-C&S Conference Call +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970801T210000Z +DTEND:19970801T220000Z +RECURRENCE-ID:19970809T210000Z +DTSTAMP:19970726T083000 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +UID:acme-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTART:19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +END:VEVENT +END:VCALENDAR + +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123402@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970401T163000Z +DTEND:19970402T010000Z +SUMMARY:Laurel is in sensitivity awareness class. +CLASS:PUBLIC +CATEGORIES:BUSINESS,HUMAN RESOURCES +TRANSP:TRANSPARENT +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123403@host.com +DTSTAMP:19970901T1300Z +DTSTART:19971102 +SUMMARY:Our Blissful Anniversary +CLASS:CONFIDENTIAL +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +RRULE:FREQ=YEARLY +END:VEVENT + +BEGIN:VTODO +UID:19970901T130000Z-123404@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970415T133000Z +DUE:19970416T045959Z +SUMMARY:1996 Income Tax Preparation +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +STATUS:NEEDS-ACTION +END:VTODO +BEGIN:VJOURNAL +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T1300Z +DTSTART;VALUE=DATE:19970317 +SUMMARY:Staff meeting minutes +DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa + and Bob. Aurora project plans were reviewed. There is currently + no budget reserves for this project. Lisa will escalate to + management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative called + to discuss new printer. Promised to get us a demo by Friday.\n + 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. + Is looking into a loaner car. 654-2323 (tel). +END:VJOURNAL +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +DTSTAMP:19970901T083000Z +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTAMP:19970901T100000Z +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M +URL:http://host2.com/pub/busy/jpublic-01.ifb +COMMENT:This iCalendar file contains busy time information for + the next three months. +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19971026T020000 +RDATE:19971026T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19971026T020000 +RDATE:19970406T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +BEGIN:DAYLIGHT +DTSTART:19990424T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +REPEAT:4 +DURATION:PT15M +ACTION:AUDIO +ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +REPEAT:2 +DURATION:PT15M +ACTION:DISPLAY +DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. +END:VALARM +BEGIN:VALARM +TRIGGER:-P2D +ACTION:EMAIL +ATTENDEE:MAILTO:john_doe@host.com +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. +ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen + da.doc +END:VALARM +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +REPEAT:23 +DURATION:PT1H +ACTION:PROCEDURE +ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- + procs/felizano.exe +END:VALARM +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + MAILTO:employee-A@host.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTART;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T1200Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ + conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER:19980403T120000 +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- + files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ, Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTART:19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +END:VEVENT +END:VCALENDAR + +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123402@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970401T163000Z +DTEND:19970402T010000Z +SUMMARY:Laurel is in sensitivity awareness class. +CLASS:PUBLIC +CATEGORIES:BUSINESS,HUMAN RESOURCES +TRANSP:TRANSPARENT +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123403@host.com +DTSTAMP:19970901T1300Z +DTSTART:19971102 +SUMMARY:Our Blissful Anniversary +CLASS:CONFIDENTIAL +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +RRULE:FREQ=YEARLY +END:VEVENT + +BEGIN:VTODO +UID:19970901T130000Z-123404@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970415T133000Z +DUE:19970416T045959Z +SUMMARY:1996 Income Tax Preparation +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +STATUS:NEEDS-ACTION +END:VTODO +BEGIN:VJOURNAL +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T1300Z +DTSTART;VALUE=DATE:19970317 +SUMMARY:Staff meeting minutes +DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa + and Bob. Aurora project plans were reviewed. There is currently + no budget reserves for this project. Lisa will escalate to + management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative called + to discuss new printer. Promised to get us a demo by Friday.\n + 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. + Is looking into a loaner car. 654-2323 (tel). +END:VJOURNAL +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +DTSTAMP:19970901T083000Z +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTAMP:19970901T100000Z +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M +URL:http://host2.com/pub/busy/jpublic-01.ifb +COMMENT:This iCalendar file contains busy time information for + the next three months. +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19971026T020000 +RDATE:19971026T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19971026T020000 +RDATE:19970406T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +BEGIN:DAYLIGHT +DTSTART:19990424T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +REPEAT:4 +DURATION:PT15M +ACTION:AUDIO +ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +REPEAT:2 +DURATION:PT15M +ACTION:DISPLAY +DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. +END:VALARM +BEGIN:VALARM +TRIGGER:-P2D +ACTION:EMAIL +ATTENDEE:MAILTO:john_doe@host.com +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. +ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen + da.doc +END:VALARM +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +REPEAT:23 +DURATION:PT1H +ACTION:PROCEDURE +ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- + procs/felizano.exe +END:VALARM +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + MAILTO:employee-A@host.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTART;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T1200Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ + conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER:19980403T120000 +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- + files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ, Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTART:19970701T200000Z +DTSTAMP:19970611T190000Z +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970612T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SEQUENCE:1 +UID:0981234-1234234-23@example.com +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +COMMENT:DUKES forfeit the game +SEQUENCE:2 +UID:0981234-1234234-23@example.com +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +CALSCALE:GREGORIAN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-Chicago +TZURL:http://zones.stds_r_us.net/tz/America-Chicago +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +ATTACH:http://www.dukes.com/ +CATEGORIES:SPORTS EVENT,ENTERTAINMENT +CLASS:PRIVATE +DESCRIPTION:MIDWAY STADIUM\n + Big time game. MUST see.\n + Expected duration:2 hours\n +DTEND;TZID=America-Chicago:19970701T180000 +DTSTART;TZID=America-Chicago:19970702T160000 +DTSTAMP:19970614T190000Z +STATUS:CONFIRMED +LOCATION;VALUE=URI:http://www.midwaystadium.com/ +PRIORITY:2 +RESOURCES:SCOREBOARD +SEQUENCE:3 +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +RELATED-TO:0981234-1234234-14@example.com +BEGIN:VALARM +TRIGGER:-PT2H +ACTION:DISPLAY +DESCRIPTION:You should be leaving for the game now. +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +ACTION:AUDIO +END:VALARM +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970614T190000Z +UID:0981234-1234234-23@example.com +DTSTART;VALUE=DATE:19970714 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY: Bastille Day +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T2000000Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE; + CUTYPE=ROOM:Mailto:Conf@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T190000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +DTSTAMP:19970613T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T190000Z +DTEND:19970701T200000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +DTSTAMP:19970611T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:COUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +DTSTAMP:19970612T190000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +COMMENT:This time works much better and I think the big conference + room is too big +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +SUMMARY:Discuss the Merits of the election results - changed to + meet B's schedule +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:DECLINECOUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +COMMENT:Sorry\, I cannot change this meeting time +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +ATTENDEE;RSVP=TRUE; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED- + FROM="Mailto:C@example.com":Mailto:E@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED; + DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com +COMMENT:Sorry\, I will be out of town at that time. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DECLINED; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +SUMMARY:Phone Conference +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +DTSTAMP:19970614T200000Z +COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR + INVITATION +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +COMMENT:Mr. B cannot attend. It's raining. Lets cancel. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CANCELLED +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:mailto:B@example.com +COMMENT:You're off the hook for this meeting +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970613T193000Z +SEQUENCE:1 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +ATTENDEE;CUTYPE=ROOM:CR_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT; + RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:2 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +RRULE:FREQ=WEEKLY +SUMMARY:Phone Conference +UID:123456@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +METHOD:PUBLISH +BEGIN:VFREEBUSY +DTSTAMP:19980101T124100Z +ORGANIZER:MAILTO:A@Example.com +DTSTART:19980101T124200Z +DTEND:19980107T124200Z +FREEBUSY:19980101T180000Z/19980101T190000Z +FREEBUSY:19980103T020000Z/19980103T050000Z +FREEBUSY:19980107T020000Z/19980107T050000Z +FREEBUSY:19980113T000000Z/19980113T010000Z +FREEBUSY:19980115T190000Z/19980115T200000Z +FREEBUSY:19980115T220000Z/19980115T230000Z +FREEBUSY:19980116T013000Z/19980116T043000Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T080000Z +DTEND:19970701T200000 +UID:calsrv.example.com-873970198738777@example.com +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:A@example.com +ATTENDEE:Mailto:B@example.com +DTSTART:19970701T080000Z +DTEND:19970701T200000Z +UID:calsrv.example.com-873970198738777@example.com +FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M +DTSTAMP:19970613T190030Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-SanJose +TZURL:http://zones.stds_r_us.net/tz/America-SanJose +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:A@example.COM +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:B@example.fr +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:c@example.jp +DTSTAMP:19970613T190030Z +DTSTART;TZID=America-SanJose:19970701T140000 +DTEND;TZID=America-SanJose:19970701T150000 +RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU +RDATE;TZID=America-SanJose:19970910T140000 +EXDATE;TZID=America-SanJose:19970909T140000 +EXDATE;TZID=America-SanJose:19971028T140000 +SUMMARY:Weekly Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +LOCATION:Conference Call +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1com +RECURRENCE-ID:19970701T210000Z +SEQUENCE:1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970703T210000Z +DTEND:19970703T220000Z +LOCATION:Conference Call +DTSTAMP:19970626T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +RECURRENCE-ID:19970801T210000Z +SEQUENCE:2 +STATUS:CANCELLED +DTSTAMP:19970721T093000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DTSTAMP:19970721T103000Z +STATUS:CANCELLED +SEQUENCE:3 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID;RANGE=THISANDFUTURE:19970901T210000Z +SEQUENCE:3 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Discussion +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970901T210000Z +DTEND:19970901T220000Z +LOCATION:Building 32\, Microsoft\, Seattle\, WA +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T210000Z +DTEND:19970715T220000Z +LOCATION:Conference Call +DTSTAMP:19970629T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +LOCATION:The White Room +DTSTAMP:19980301T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The Usual conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU,TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The White Room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RDATE:19980304T180000Z +RDATE:19980311T180000Z +RDATE:19980318T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:1 +RECURRENCE-ID:19980311T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980311T180000Z +DTSTAMP:19980306T193000Z +LOCATION:The Small conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980315T180000Z +DTEND:19980315T200000Z +DTSTAMP:19980307T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +RDATE:19980304T180000Z +RDATE:19980311T160000Z +RDATE:19980315T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +SEQUENCE:2 +RECURRENCE-ID:19980311T160000Z +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980304T180000Z +DTSTAMP:19980306T193000Z +ORGANIZER:Mailto:A@example.com +LOCATION:The Small conference room +UID:guid-1@host1.com +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:COUNTER +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID:19970715T210000Z +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T220000Z +DTEND:19970715T230000Z +LOCATION:Conference Call +COMMENT:May we bump this by an hour? I have a conflict +DTSTAMP:19970629T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +DTSTAMP:19970602T094000Z +LOCATION:Conference Call +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single + event;RRULE +REQUEST-STATUS:3.0;Invalid Property Name;FOO +UID:guid-1@host1.com +SEQUENCE:0 +DTSTAMP:19970603T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:Needs Action +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +UID:calsrv.example.com-873970198738777-00@example.com +COMMENT:I'll send you my input by e-mail +SEQUENCE:0 +DTSTAMP:19970717T203000Z +REQUEST-STATUS:2.0;Success +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +SUMMARY:Create the requirements document +PRIORITY:1 +SEQUENCE:0 +STATUS:IN-PROCESS +DTSTART:19970701T170000Z +DTSTAMP:19970717T230000Z +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +REQUEST-STATUS:2.0 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +REQUEST-STATUS:2.0 +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;PARTSTAT=IN-PROCESS;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:1 +DTSTAMP:19970718T100000Z +STATUS:IN-PROGRESS +PERCENT-COMPLETE:40 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR +DTSTART:19980101T100000 +DUE:19980103T100000 +SUMMARY:Send Status Reports to Area Managers +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:NEEDS-ACTION +PRIORITY:1 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +RECURRENCE-ID:19980101T170000Z +SEQUENCE:1 +ORGANIZER:MAILTO:A@Example.com +REQUEST-STATUS:2.0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VJOURNAL +DTSTART:19971002T200000Z +DTSTAMP:19971002T200000Z +ORGANIZER:MAILTO:A@Example.com +SUMMARY:Phone conference minutes +DESCRIPTION:The editors meeting was held on October 1\, 1997. + Details are in the attached document. +UID:0981234-1234234-2410@example.com +RELATED-TO:0981234-1234234-2402-35@example.com +ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +UID: guid-1-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:acme-12345@host1.com +SEQUENCE:3 +RRULE:FREQ=WEEKLY +RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +DESCRIPTION:IETF-C&S Conference Call +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970801T210000Z +DTEND:19970801T220000Z +RECURRENCE-ID:19970809T210000Z +DTSTAMP:19970726T083000 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +UID:acme-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTART:19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +END:VEVENT +END:VCALENDAR + +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123402@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970401T163000Z +DTEND:19970402T010000Z +SUMMARY:Laurel is in sensitivity awareness class. +CLASS:PUBLIC +CATEGORIES:BUSINESS,HUMAN RESOURCES +TRANSP:TRANSPARENT +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123403@host.com +DTSTAMP:19970901T1300Z +DTSTART:19971102 +SUMMARY:Our Blissful Anniversary +CLASS:CONFIDENTIAL +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +RRULE:FREQ=YEARLY +END:VEVENT + +BEGIN:VTODO +UID:19970901T130000Z-123404@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970415T133000Z +DUE:19970416T045959Z +SUMMARY:1996 Income Tax Preparation +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +STATUS:NEEDS-ACTION +END:VTODO +BEGIN:VJOURNAL +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T1300Z +DTSTART;VALUE=DATE:19970317 +SUMMARY:Staff meeting minutes +DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa + and Bob. Aurora project plans were reviewed. There is currently + no budget reserves for this project. Lisa will escalate to + management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative called + to discuss new printer. Promised to get us a demo by Friday.\n + 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. + Is looking into a loaner car. 654-2323 (tel). +END:VJOURNAL +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +DTSTAMP:19970901T083000Z +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTAMP:19970901T100000Z +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M +URL:http://host2.com/pub/busy/jpublic-01.ifb +COMMENT:This iCalendar file contains busy time information for + the next three months. +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19971026T020000 +RDATE:19971026T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19971026T020000 +RDATE:19970406T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +BEGIN:DAYLIGHT +DTSTART:19990424T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +REPEAT:4 +DURATION:PT15M +ACTION:AUDIO +ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +REPEAT:2 +DURATION:PT15M +ACTION:DISPLAY +DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. +END:VALARM +BEGIN:VALARM +TRIGGER:-P2D +ACTION:EMAIL +ATTENDEE:MAILTO:john_doe@host.com +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. +ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen + da.doc +END:VALARM +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +REPEAT:23 +DURATION:PT1H +ACTION:PROCEDURE +ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- + procs/felizano.exe +END:VALARM +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + MAILTO:employee-A@host.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTART;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T1200Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ + conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER:19980403T120000 +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- + files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ, Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTART:19970701T200000Z +DTSTAMP:19970611T190000Z +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970612T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SEQUENCE:1 +UID:0981234-1234234-23@example.com +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +COMMENT:DUKES forfeit the game +SEQUENCE:2 +UID:0981234-1234234-23@example.com +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +CALSCALE:GREGORIAN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-Chicago +TZURL:http://zones.stds_r_us.net/tz/America-Chicago +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +ATTACH:http://www.dukes.com/ +CATEGORIES:SPORTS EVENT,ENTERTAINMENT +CLASS:PRIVATE +DESCRIPTION:MIDWAY STADIUM\n + Big time game. MUST see.\n + Expected duration:2 hours\n +DTEND;TZID=America-Chicago:19970701T180000 +DTSTART;TZID=America-Chicago:19970702T160000 +DTSTAMP:19970614T190000Z +STATUS:CONFIRMED +LOCATION;VALUE=URI:http://www.midwaystadium.com/ +PRIORITY:2 +RESOURCES:SCOREBOARD +SEQUENCE:3 +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +RELATED-TO:0981234-1234234-14@example.com +BEGIN:VALARM +TRIGGER:-PT2H +ACTION:DISPLAY +DESCRIPTION:You should be leaving for the game now. +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +ACTION:AUDIO +END:VALARM +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970614T190000Z +UID:0981234-1234234-23@example.com +DTSTART;VALUE=DATE:19970714 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY: Bastille Day +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T2000000Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE; + CUTYPE=ROOM:Mailto:Conf@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T190000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +DTSTAMP:19970613T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T190000Z +DTEND:19970701T200000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +DTSTAMP:19970611T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:COUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +DTSTAMP:19970612T190000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +COMMENT:This time works much better and I think the big conference + room is too big +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +SUMMARY:Discuss the Merits of the election results - changed to + meet B's schedule +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:DECLINECOUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +COMMENT:Sorry\, I cannot change this meeting time +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +ATTENDEE;RSVP=TRUE; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED- + FROM="Mailto:C@example.com":Mailto:E@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED; + DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com +COMMENT:Sorry\, I will be out of town at that time. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DECLINED; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +SUMMARY:Phone Conference +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +DTSTAMP:19970614T200000Z +COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR + INVITATION +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +COMMENT:Mr. B cannot attend. It's raining. Lets cancel. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CANCELLED +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:mailto:B@example.com +COMMENT:You're off the hook for this meeting +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970613T193000Z +SEQUENCE:1 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +ATTENDEE;CUTYPE=ROOM:CR_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT; + RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:2 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +RRULE:FREQ=WEEKLY +SUMMARY:Phone Conference +UID:123456@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +METHOD:PUBLISH +BEGIN:VFREEBUSY +DTSTAMP:19980101T124100Z +ORGANIZER:MAILTO:A@Example.com +DTSTART:19980101T124200Z +DTEND:19980107T124200Z +FREEBUSY:19980101T180000Z/19980101T190000Z +FREEBUSY:19980103T020000Z/19980103T050000Z +FREEBUSY:19980107T020000Z/19980107T050000Z +FREEBUSY:19980113T000000Z/19980113T010000Z +FREEBUSY:19980115T190000Z/19980115T200000Z +FREEBUSY:19980115T220000Z/19980115T230000Z +FREEBUSY:19980116T013000Z/19980116T043000Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T080000Z +DTEND:19970701T200000 +UID:calsrv.example.com-873970198738777@example.com +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:A@example.com +ATTENDEE:Mailto:B@example.com +DTSTART:19970701T080000Z +DTEND:19970701T200000Z +UID:calsrv.example.com-873970198738777@example.com +FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M +DTSTAMP:19970613T190030Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-SanJose +TZURL:http://zones.stds_r_us.net/tz/America-SanJose +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:A@example.COM +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:B@example.fr +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:c@example.jp +DTSTAMP:19970613T190030Z +DTSTART;TZID=America-SanJose:19970701T140000 +DTEND;TZID=America-SanJose:19970701T150000 +RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU +RDATE;TZID=America-SanJose:19970910T140000 +EXDATE;TZID=America-SanJose:19970909T140000 +EXDATE;TZID=America-SanJose:19971028T140000 +SUMMARY:Weekly Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +LOCATION:Conference Call +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1com +RECURRENCE-ID:19970701T210000Z +SEQUENCE:1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970703T210000Z +DTEND:19970703T220000Z +LOCATION:Conference Call +DTSTAMP:19970626T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +RECURRENCE-ID:19970801T210000Z +SEQUENCE:2 +STATUS:CANCELLED +DTSTAMP:19970721T093000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DTSTAMP:19970721T103000Z +STATUS:CANCELLED +SEQUENCE:3 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID;RANGE=THISANDFUTURE:19970901T210000Z +SEQUENCE:3 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Discussion +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970901T210000Z +DTEND:19970901T220000Z +LOCATION:Building 32\, Microsoft\, Seattle\, WA +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T210000Z +DTEND:19970715T220000Z +LOCATION:Conference Call +DTSTAMP:19970629T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +LOCATION:The White Room +DTSTAMP:19980301T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The Usual conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU,TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The White Room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RDATE:19980304T180000Z +RDATE:19980311T180000Z +RDATE:19980318T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:1 +RECURRENCE-ID:19980311T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980311T180000Z +DTSTAMP:19980306T193000Z +LOCATION:The Small conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980315T180000Z +DTEND:19980315T200000Z +DTSTAMP:19980307T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +RDATE:19980304T180000Z +RDATE:19980311T160000Z +RDATE:19980315T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +SEQUENCE:2 +RECURRENCE-ID:19980311T160000Z +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980304T180000Z +DTSTAMP:19980306T193000Z +ORGANIZER:Mailto:A@example.com +LOCATION:The Small conference room +UID:guid-1@host1.com +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:COUNTER +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID:19970715T210000Z +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T220000Z +DTEND:19970715T230000Z +LOCATION:Conference Call +COMMENT:May we bump this by an hour? I have a conflict +DTSTAMP:19970629T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +DTSTAMP:19970602T094000Z +LOCATION:Conference Call +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single + event;RRULE +REQUEST-STATUS:3.0;Invalid Property Name;FOO +UID:guid-1@host1.com +SEQUENCE:0 +DTSTAMP:19970603T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:Needs Action +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +UID:calsrv.example.com-873970198738777-00@example.com +COMMENT:I'll send you my input by e-mail +SEQUENCE:0 +DTSTAMP:19970717T203000Z +REQUEST-STATUS:2.0;Success +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +SUMMARY:Create the requirements document +PRIORITY:1 +SEQUENCE:0 +STATUS:IN-PROCESS +DTSTART:19970701T170000Z +DTSTAMP:19970717T230000Z +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +REQUEST-STATUS:2.0 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +REQUEST-STATUS:2.0 +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;PARTSTAT=IN-PROCESS;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:1 +DTSTAMP:19970718T100000Z +STATUS:IN-PROGRESS +PERCENT-COMPLETE:40 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR +DTSTART:19980101T100000 +DUE:19980103T100000 +SUMMARY:Send Status Reports to Area Managers +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:NEEDS-ACTION +PRIORITY:1 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +RECURRENCE-ID:19980101T170000Z +SEQUENCE:1 +ORGANIZER:MAILTO:A@Example.com +REQUEST-STATUS:2.0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VJOURNAL +DTSTART:19971002T200000Z +DTSTAMP:19971002T200000Z +ORGANIZER:MAILTO:A@Example.com +SUMMARY:Phone conference minutes +DESCRIPTION:The editors meeting was held on October 1\, 1997. + Details are in the attached document. +UID:0981234-1234234-2410@example.com +RELATED-TO:0981234-1234234-2402-35@example.com +ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +UID: guid-1-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:acme-12345@host1.com +SEQUENCE:3 +RRULE:FREQ=WEEKLY +RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +DESCRIPTION:IETF-C&S Conference Call +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970801T210000Z +DTEND:19970801T220000Z +RECURRENCE-ID:19970809T210000Z +DTSTAMP:19970726T083000 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +UID:acme-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTART:19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +END:VEVENT +END:VCALENDAR + +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123402@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970401T163000Z +DTEND:19970402T010000Z +SUMMARY:Laurel is in sensitivity awareness class. +CLASS:PUBLIC +CATEGORIES:BUSINESS,HUMAN RESOURCES +TRANSP:TRANSPARENT +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123403@host.com +DTSTAMP:19970901T1300Z +DTSTART:19971102 +SUMMARY:Our Blissful Anniversary +CLASS:CONFIDENTIAL +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +RRULE:FREQ=YEARLY +END:VEVENT + +BEGIN:VTODO +UID:19970901T130000Z-123404@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970415T133000Z +DUE:19970416T045959Z +SUMMARY:1996 Income Tax Preparation +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +STATUS:NEEDS-ACTION +END:VTODO +BEGIN:VJOURNAL +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T1300Z +DTSTART;VALUE=DATE:19970317 +SUMMARY:Staff meeting minutes +DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa + and Bob. Aurora project plans were reviewed. There is currently + no budget reserves for this project. Lisa will escalate to + management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative called + to discuss new printer. Promised to get us a demo by Friday.\n + 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. + Is looking into a loaner car. 654-2323 (tel). +END:VJOURNAL +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +DTSTAMP:19970901T083000Z +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTAMP:19970901T100000Z +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M +URL:http://host2.com/pub/busy/jpublic-01.ifb +COMMENT:This iCalendar file contains busy time information for + the next three months. +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19971026T020000 +RDATE:19971026T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19971026T020000 +RDATE:19970406T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +BEGIN:DAYLIGHT +DTSTART:19990424T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +REPEAT:4 +DURATION:PT15M +ACTION:AUDIO +ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +REPEAT:2 +DURATION:PT15M +ACTION:DISPLAY +DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. +END:VALARM +BEGIN:VALARM +TRIGGER:-P2D +ACTION:EMAIL +ATTENDEE:MAILTO:john_doe@host.com +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. +ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen + da.doc +END:VALARM +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +REPEAT:23 +DURATION:PT1H +ACTION:PROCEDURE +ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- + procs/felizano.exe +END:VALARM +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + MAILTO:employee-A@host.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTART;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T1200Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ + conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER:19980403T120000 +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- + files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ, Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTART:19970701T200000Z +DTSTAMP:19970611T190000Z +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970612T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SEQUENCE:1 +UID:0981234-1234234-23@example.com +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +COMMENT:DUKES forfeit the game +SEQUENCE:2 +UID:0981234-1234234-23@example.com +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +CALSCALE:GREGORIAN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-Chicago +TZURL:http://zones.stds_r_us.net/tz/America-Chicago +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +ATTACH:http://www.dukes.com/ +CATEGORIES:SPORTS EVENT,ENTERTAINMENT +CLASS:PRIVATE +DESCRIPTION:MIDWAY STADIUM\n + Big time game. MUST see.\n + Expected duration:2 hours\n +DTEND;TZID=America-Chicago:19970701T180000 +DTSTART;TZID=America-Chicago:19970702T160000 +DTSTAMP:19970614T190000Z +STATUS:CONFIRMED +LOCATION;VALUE=URI:http://www.midwaystadium.com/ +PRIORITY:2 +RESOURCES:SCOREBOARD +SEQUENCE:3 +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +RELATED-TO:0981234-1234234-14@example.com +BEGIN:VALARM +TRIGGER:-PT2H +ACTION:DISPLAY +DESCRIPTION:You should be leaving for the game now. +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +ACTION:AUDIO +END:VALARM +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970614T190000Z +UID:0981234-1234234-23@example.com +DTSTART;VALUE=DATE:19970714 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY: Bastille Day +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T2000000Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE; + CUTYPE=ROOM:Mailto:Conf@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T190000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +DTSTAMP:19970613T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T190000Z +DTEND:19970701T200000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +DTSTAMP:19970611T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:COUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +DTSTAMP:19970612T190000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +COMMENT:This time works much better and I think the big conference + room is too big +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +SUMMARY:Discuss the Merits of the election results - changed to + meet B's schedule +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:DECLINECOUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +COMMENT:Sorry\, I cannot change this meeting time +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +ATTENDEE;RSVP=TRUE; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED- + FROM="Mailto:C@example.com":Mailto:E@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED; + DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com +COMMENT:Sorry\, I will be out of town at that time. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DECLINED; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +SUMMARY:Phone Conference +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +DTSTAMP:19970614T200000Z +COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR + INVITATION +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +COMMENT:Mr. B cannot attend. It's raining. Lets cancel. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CANCELLED +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:mailto:B@example.com +COMMENT:You're off the hook for this meeting +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970613T193000Z +SEQUENCE:1 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +ATTENDEE;CUTYPE=ROOM:CR_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT; + RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:2 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +RRULE:FREQ=WEEKLY +SUMMARY:Phone Conference +UID:123456@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +METHOD:PUBLISH +BEGIN:VFREEBUSY +DTSTAMP:19980101T124100Z +ORGANIZER:MAILTO:A@Example.com +DTSTART:19980101T124200Z +DTEND:19980107T124200Z +FREEBUSY:19980101T180000Z/19980101T190000Z +FREEBUSY:19980103T020000Z/19980103T050000Z +FREEBUSY:19980107T020000Z/19980107T050000Z +FREEBUSY:19980113T000000Z/19980113T010000Z +FREEBUSY:19980115T190000Z/19980115T200000Z +FREEBUSY:19980115T220000Z/19980115T230000Z +FREEBUSY:19980116T013000Z/19980116T043000Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T080000Z +DTEND:19970701T200000 +UID:calsrv.example.com-873970198738777@example.com +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:A@example.com +ATTENDEE:Mailto:B@example.com +DTSTART:19970701T080000Z +DTEND:19970701T200000Z +UID:calsrv.example.com-873970198738777@example.com +FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M +DTSTAMP:19970613T190030Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-SanJose +TZURL:http://zones.stds_r_us.net/tz/America-SanJose +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:A@example.COM +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:B@example.fr +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:c@example.jp +DTSTAMP:19970613T190030Z +DTSTART;TZID=America-SanJose:19970701T140000 +DTEND;TZID=America-SanJose:19970701T150000 +RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU +RDATE;TZID=America-SanJose:19970910T140000 +EXDATE;TZID=America-SanJose:19970909T140000 +EXDATE;TZID=America-SanJose:19971028T140000 +SUMMARY:Weekly Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +LOCATION:Conference Call +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1com +RECURRENCE-ID:19970701T210000Z +SEQUENCE:1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970703T210000Z +DTEND:19970703T220000Z +LOCATION:Conference Call +DTSTAMP:19970626T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +RECURRENCE-ID:19970801T210000Z +SEQUENCE:2 +STATUS:CANCELLED +DTSTAMP:19970721T093000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DTSTAMP:19970721T103000Z +STATUS:CANCELLED +SEQUENCE:3 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID;RANGE=THISANDFUTURE:19970901T210000Z +SEQUENCE:3 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Discussion +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970901T210000Z +DTEND:19970901T220000Z +LOCATION:Building 32\, Microsoft\, Seattle\, WA +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T210000Z +DTEND:19970715T220000Z +LOCATION:Conference Call +DTSTAMP:19970629T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +LOCATION:The White Room +DTSTAMP:19980301T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The Usual conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU,TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The White Room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RDATE:19980304T180000Z +RDATE:19980311T180000Z +RDATE:19980318T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:1 +RECURRENCE-ID:19980311T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980311T180000Z +DTSTAMP:19980306T193000Z +LOCATION:The Small conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980315T180000Z +DTEND:19980315T200000Z +DTSTAMP:19980307T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +RDATE:19980304T180000Z +RDATE:19980311T160000Z +RDATE:19980315T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +SEQUENCE:2 +RECURRENCE-ID:19980311T160000Z +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980304T180000Z +DTSTAMP:19980306T193000Z +ORGANIZER:Mailto:A@example.com +LOCATION:The Small conference room +UID:guid-1@host1.com +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:COUNTER +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID:19970715T210000Z +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T220000Z +DTEND:19970715T230000Z +LOCATION:Conference Call +COMMENT:May we bump this by an hour? I have a conflict +DTSTAMP:19970629T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +DTSTAMP:19970602T094000Z +LOCATION:Conference Call +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single + event;RRULE +REQUEST-STATUS:3.0;Invalid Property Name;FOO +UID:guid-1@host1.com +SEQUENCE:0 +DTSTAMP:19970603T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:Needs Action +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +UID:calsrv.example.com-873970198738777-00@example.com +COMMENT:I'll send you my input by e-mail +SEQUENCE:0 +DTSTAMP:19970717T203000Z +REQUEST-STATUS:2.0;Success +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +SUMMARY:Create the requirements document +PRIORITY:1 +SEQUENCE:0 +STATUS:IN-PROCESS +DTSTART:19970701T170000Z +DTSTAMP:19970717T230000Z +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +REQUEST-STATUS:2.0 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +REQUEST-STATUS:2.0 +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;PARTSTAT=IN-PROCESS;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:1 +DTSTAMP:19970718T100000Z +STATUS:IN-PROGRESS +PERCENT-COMPLETE:40 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR +DTSTART:19980101T100000 +DUE:19980103T100000 +SUMMARY:Send Status Reports to Area Managers +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:NEEDS-ACTION +PRIORITY:1 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +RECURRENCE-ID:19980101T170000Z +SEQUENCE:1 +ORGANIZER:MAILTO:A@Example.com +REQUEST-STATUS:2.0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VJOURNAL +DTSTART:19971002T200000Z +DTSTAMP:19971002T200000Z +ORGANIZER:MAILTO:A@Example.com +SUMMARY:Phone conference minutes +DESCRIPTION:The editors meeting was held on October 1\, 1997. + Details are in the attached document. +UID:0981234-1234234-2410@example.com +RELATED-TO:0981234-1234234-2402-35@example.com +ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +UID: guid-1-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:acme-12345@host1.com +SEQUENCE:3 +RRULE:FREQ=WEEKLY +RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +DESCRIPTION:IETF-C&S Conference Call +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970801T210000Z +DTEND:19970801T220000Z +RECURRENCE-ID:19970809T210000Z +DTSTAMP:19970726T083000 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +UID:acme-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTART:19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +END:VEVENT +END:VCALENDAR + +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123402@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970401T163000Z +DTEND:19970402T010000Z +SUMMARY:Laurel is in sensitivity awareness class. +CLASS:PUBLIC +CATEGORIES:BUSINESS,HUMAN RESOURCES +TRANSP:TRANSPARENT +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123403@host.com +DTSTAMP:19970901T1300Z +DTSTART:19971102 +SUMMARY:Our Blissful Anniversary +CLASS:CONFIDENTIAL +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +RRULE:FREQ=YEARLY +END:VEVENT + +BEGIN:VTODO +UID:19970901T130000Z-123404@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970415T133000Z +DUE:19970416T045959Z +SUMMARY:1996 Income Tax Preparation +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +STATUS:NEEDS-ACTION +END:VTODO +BEGIN:VJOURNAL +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T1300Z +DTSTART;VALUE=DATE:19970317 +SUMMARY:Staff meeting minutes +DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa + and Bob. Aurora project plans were reviewed. There is currently + no budget reserves for this project. Lisa will escalate to + management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative called + to discuss new printer. Promised to get us a demo by Friday.\n + 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. + Is looking into a loaner car. 654-2323 (tel). +END:VJOURNAL +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +DTSTAMP:19970901T083000Z +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTAMP:19970901T100000Z +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M +URL:http://host2.com/pub/busy/jpublic-01.ifb +COMMENT:This iCalendar file contains busy time information for + the next three months. +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19971026T020000 +RDATE:19971026T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19971026T020000 +RDATE:19970406T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +BEGIN:DAYLIGHT +DTSTART:19990424T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +REPEAT:4 +DURATION:PT15M +ACTION:AUDIO +ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +REPEAT:2 +DURATION:PT15M +ACTION:DISPLAY +DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. +END:VALARM +BEGIN:VALARM +TRIGGER:-P2D +ACTION:EMAIL +ATTENDEE:MAILTO:john_doe@host.com +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. +ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen + da.doc +END:VALARM +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +REPEAT:23 +DURATION:PT1H +ACTION:PROCEDURE +ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- + procs/felizano.exe +END:VALARM +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + MAILTO:employee-A@host.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTART;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T1200Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ + conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER:19980403T120000 +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- + files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ, Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTART:19970701T200000Z +DTSTAMP:19970611T190000Z +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970612T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SEQUENCE:1 +UID:0981234-1234234-23@example.com +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +COMMENT:DUKES forfeit the game +SEQUENCE:2 +UID:0981234-1234234-23@example.com +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +CALSCALE:GREGORIAN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-Chicago +TZURL:http://zones.stds_r_us.net/tz/America-Chicago +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +ATTACH:http://www.dukes.com/ +CATEGORIES:SPORTS EVENT,ENTERTAINMENT +CLASS:PRIVATE +DESCRIPTION:MIDWAY STADIUM\n + Big time game. MUST see.\n + Expected duration:2 hours\n +DTEND;TZID=America-Chicago:19970701T180000 +DTSTART;TZID=America-Chicago:19970702T160000 +DTSTAMP:19970614T190000Z +STATUS:CONFIRMED +LOCATION;VALUE=URI:http://www.midwaystadium.com/ +PRIORITY:2 +RESOURCES:SCOREBOARD +SEQUENCE:3 +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +RELATED-TO:0981234-1234234-14@example.com +BEGIN:VALARM +TRIGGER:-PT2H +ACTION:DISPLAY +DESCRIPTION:You should be leaving for the game now. +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +ACTION:AUDIO +END:VALARM +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970614T190000Z +UID:0981234-1234234-23@example.com +DTSTART;VALUE=DATE:19970714 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY: Bastille Day +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T2000000Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE; + CUTYPE=ROOM:Mailto:Conf@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T190000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +DTSTAMP:19970613T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T190000Z +DTEND:19970701T200000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +DTSTAMP:19970611T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:COUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +DTSTAMP:19970612T190000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +COMMENT:This time works much better and I think the big conference + room is too big +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +SUMMARY:Discuss the Merits of the election results - changed to + meet B's schedule +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:DECLINECOUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +COMMENT:Sorry\, I cannot change this meeting time +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +ATTENDEE;RSVP=TRUE; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED- + FROM="Mailto:C@example.com":Mailto:E@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED; + DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com +COMMENT:Sorry\, I will be out of town at that time. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DECLINED; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +SUMMARY:Phone Conference +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +DTSTAMP:19970614T200000Z +COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR + INVITATION +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +COMMENT:Mr. B cannot attend. It's raining. Lets cancel. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CANCELLED +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:mailto:B@example.com +COMMENT:You're off the hook for this meeting +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970613T193000Z +SEQUENCE:1 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +ATTENDEE;CUTYPE=ROOM:CR_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT; + RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:2 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +RRULE:FREQ=WEEKLY +SUMMARY:Phone Conference +UID:123456@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +METHOD:PUBLISH +BEGIN:VFREEBUSY +DTSTAMP:19980101T124100Z +ORGANIZER:MAILTO:A@Example.com +DTSTART:19980101T124200Z +DTEND:19980107T124200Z +FREEBUSY:19980101T180000Z/19980101T190000Z +FREEBUSY:19980103T020000Z/19980103T050000Z +FREEBUSY:19980107T020000Z/19980107T050000Z +FREEBUSY:19980113T000000Z/19980113T010000Z +FREEBUSY:19980115T190000Z/19980115T200000Z +FREEBUSY:19980115T220000Z/19980115T230000Z +FREEBUSY:19980116T013000Z/19980116T043000Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T080000Z +DTEND:19970701T200000 +UID:calsrv.example.com-873970198738777@example.com +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:A@example.com +ATTENDEE:Mailto:B@example.com +DTSTART:19970701T080000Z +DTEND:19970701T200000Z +UID:calsrv.example.com-873970198738777@example.com +FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M +DTSTAMP:19970613T190030Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-SanJose +TZURL:http://zones.stds_r_us.net/tz/America-SanJose +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:A@example.COM +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:B@example.fr +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:c@example.jp +DTSTAMP:19970613T190030Z +DTSTART;TZID=America-SanJose:19970701T140000 +DTEND;TZID=America-SanJose:19970701T150000 +RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU +RDATE;TZID=America-SanJose:19970910T140000 +EXDATE;TZID=America-SanJose:19970909T140000 +EXDATE;TZID=America-SanJose:19971028T140000 +SUMMARY:Weekly Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +LOCATION:Conference Call +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1com +RECURRENCE-ID:19970701T210000Z +SEQUENCE:1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970703T210000Z +DTEND:19970703T220000Z +LOCATION:Conference Call +DTSTAMP:19970626T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +RECURRENCE-ID:19970801T210000Z +SEQUENCE:2 +STATUS:CANCELLED +DTSTAMP:19970721T093000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DTSTAMP:19970721T103000Z +STATUS:CANCELLED +SEQUENCE:3 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID;RANGE=THISANDFUTURE:19970901T210000Z +SEQUENCE:3 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Discussion +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970901T210000Z +DTEND:19970901T220000Z +LOCATION:Building 32\, Microsoft\, Seattle\, WA +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T210000Z +DTEND:19970715T220000Z +LOCATION:Conference Call +DTSTAMP:19970629T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +LOCATION:The White Room +DTSTAMP:19980301T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The Usual conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU,TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The White Room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RDATE:19980304T180000Z +RDATE:19980311T180000Z +RDATE:19980318T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:1 +RECURRENCE-ID:19980311T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980311T180000Z +DTSTAMP:19980306T193000Z +LOCATION:The Small conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980315T180000Z +DTEND:19980315T200000Z +DTSTAMP:19980307T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +RDATE:19980304T180000Z +RDATE:19980311T160000Z +RDATE:19980315T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +SEQUENCE:2 +RECURRENCE-ID:19980311T160000Z +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980304T180000Z +DTSTAMP:19980306T193000Z +ORGANIZER:Mailto:A@example.com +LOCATION:The Small conference room +UID:guid-1@host1.com +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:COUNTER +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID:19970715T210000Z +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T220000Z +DTEND:19970715T230000Z +LOCATION:Conference Call +COMMENT:May we bump this by an hour? I have a conflict +DTSTAMP:19970629T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +DTSTAMP:19970602T094000Z +LOCATION:Conference Call +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single + event;RRULE +REQUEST-STATUS:3.0;Invalid Property Name;FOO +UID:guid-1@host1.com +SEQUENCE:0 +DTSTAMP:19970603T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:Needs Action +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +UID:calsrv.example.com-873970198738777-00@example.com +COMMENT:I'll send you my input by e-mail +SEQUENCE:0 +DTSTAMP:19970717T203000Z +REQUEST-STATUS:2.0;Success +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +SUMMARY:Create the requirements document +PRIORITY:1 +SEQUENCE:0 +STATUS:IN-PROCESS +DTSTART:19970701T170000Z +DTSTAMP:19970717T230000Z +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +REQUEST-STATUS:2.0 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +REQUEST-STATUS:2.0 +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;PARTSTAT=IN-PROCESS;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:1 +DTSTAMP:19970718T100000Z +STATUS:IN-PROGRESS +PERCENT-COMPLETE:40 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR +DTSTART:19980101T100000 +DUE:19980103T100000 +SUMMARY:Send Status Reports to Area Managers +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:NEEDS-ACTION +PRIORITY:1 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +RECURRENCE-ID:19980101T170000Z +SEQUENCE:1 +ORGANIZER:MAILTO:A@Example.com +REQUEST-STATUS:2.0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VJOURNAL +DTSTART:19971002T200000Z +DTSTAMP:19971002T200000Z +ORGANIZER:MAILTO:A@Example.com +SUMMARY:Phone conference minutes +DESCRIPTION:The editors meeting was held on October 1\, 1997. + Details are in the attached document. +UID:0981234-1234234-2410@example.com +RELATED-TO:0981234-1234234-2402-35@example.com +ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +UID: guid-1-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:acme-12345@host1.com +SEQUENCE:3 +RRULE:FREQ=WEEKLY +RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +DESCRIPTION:IETF-C&S Conference Call +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970801T210000Z +DTEND:19970801T220000Z +RECURRENCE-ID:19970809T210000Z +DTSTAMP:19970726T083000 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +UID:acme-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTART:19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +END:VEVENT +END:VCALENDAR + +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123402@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970401T163000Z +DTEND:19970402T010000Z +SUMMARY:Laurel is in sensitivity awareness class. +CLASS:PUBLIC +CATEGORIES:BUSINESS,HUMAN RESOURCES +TRANSP:TRANSPARENT +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123403@host.com +DTSTAMP:19970901T1300Z +DTSTART:19971102 +SUMMARY:Our Blissful Anniversary +CLASS:CONFIDENTIAL +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +RRULE:FREQ=YEARLY +END:VEVENT + +BEGIN:VTODO +UID:19970901T130000Z-123404@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970415T133000Z +DUE:19970416T045959Z +SUMMARY:1996 Income Tax Preparation +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +STATUS:NEEDS-ACTION +END:VTODO +BEGIN:VJOURNAL +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T1300Z +DTSTART;VALUE=DATE:19970317 +SUMMARY:Staff meeting minutes +DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa + and Bob. Aurora project plans were reviewed. There is currently + no budget reserves for this project. Lisa will escalate to + management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative called + to discuss new printer. Promised to get us a demo by Friday.\n + 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. + Is looking into a loaner car. 654-2323 (tel). +END:VJOURNAL +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +DTSTAMP:19970901T083000Z +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTAMP:19970901T100000Z +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M +URL:http://host2.com/pub/busy/jpublic-01.ifb +COMMENT:This iCalendar file contains busy time information for + the next three months. +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19971026T020000 +RDATE:19971026T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19971026T020000 +RDATE:19970406T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +BEGIN:DAYLIGHT +DTSTART:19990424T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +REPEAT:4 +DURATION:PT15M +ACTION:AUDIO +ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +REPEAT:2 +DURATION:PT15M +ACTION:DISPLAY +DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. +END:VALARM +BEGIN:VALARM +TRIGGER:-P2D +ACTION:EMAIL +ATTENDEE:MAILTO:john_doe@host.com +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. +ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen + da.doc +END:VALARM +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +REPEAT:23 +DURATION:PT1H +ACTION:PROCEDURE +ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- + procs/felizano.exe +END:VALARM +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + MAILTO:employee-A@host.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTART;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T1200Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ + conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER:19980403T120000 +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- + files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ, Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTART:19970701T200000Z +DTSTAMP:19970611T190000Z +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970612T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SEQUENCE:1 +UID:0981234-1234234-23@example.com +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +COMMENT:DUKES forfeit the game +SEQUENCE:2 +UID:0981234-1234234-23@example.com +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +CALSCALE:GREGORIAN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-Chicago +TZURL:http://zones.stds_r_us.net/tz/America-Chicago +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +ATTACH:http://www.dukes.com/ +CATEGORIES:SPORTS EVENT,ENTERTAINMENT +CLASS:PRIVATE +DESCRIPTION:MIDWAY STADIUM\n + Big time game. MUST see.\n + Expected duration:2 hours\n +DTEND;TZID=America-Chicago:19970701T180000 +DTSTART;TZID=America-Chicago:19970702T160000 +DTSTAMP:19970614T190000Z +STATUS:CONFIRMED +LOCATION;VALUE=URI:http://www.midwaystadium.com/ +PRIORITY:2 +RESOURCES:SCOREBOARD +SEQUENCE:3 +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +RELATED-TO:0981234-1234234-14@example.com +BEGIN:VALARM +TRIGGER:-PT2H +ACTION:DISPLAY +DESCRIPTION:You should be leaving for the game now. +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +ACTION:AUDIO +END:VALARM +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970614T190000Z +UID:0981234-1234234-23@example.com +DTSTART;VALUE=DATE:19970714 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY: Bastille Day +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T2000000Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE; + CUTYPE=ROOM:Mailto:Conf@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T190000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +DTSTAMP:19970613T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T190000Z +DTEND:19970701T200000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +DTSTAMP:19970611T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:COUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +DTSTAMP:19970612T190000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +COMMENT:This time works much better and I think the big conference + room is too big +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +SUMMARY:Discuss the Merits of the election results - changed to + meet B's schedule +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:DECLINECOUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +COMMENT:Sorry\, I cannot change this meeting time +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +ATTENDEE;RSVP=TRUE; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED- + FROM="Mailto:C@example.com":Mailto:E@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED; + DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com +COMMENT:Sorry\, I will be out of town at that time. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DECLINED; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +SUMMARY:Phone Conference +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +DTSTAMP:19970614T200000Z +COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR + INVITATION +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +COMMENT:Mr. B cannot attend. It's raining. Lets cancel. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CANCELLED +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:mailto:B@example.com +COMMENT:You're off the hook for this meeting +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970613T193000Z +SEQUENCE:1 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +ATTENDEE;CUTYPE=ROOM:CR_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT; + RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:2 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +RRULE:FREQ=WEEKLY +SUMMARY:Phone Conference +UID:123456@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +METHOD:PUBLISH +BEGIN:VFREEBUSY +DTSTAMP:19980101T124100Z +ORGANIZER:MAILTO:A@Example.com +DTSTART:19980101T124200Z +DTEND:19980107T124200Z +FREEBUSY:19980101T180000Z/19980101T190000Z +FREEBUSY:19980103T020000Z/19980103T050000Z +FREEBUSY:19980107T020000Z/19980107T050000Z +FREEBUSY:19980113T000000Z/19980113T010000Z +FREEBUSY:19980115T190000Z/19980115T200000Z +FREEBUSY:19980115T220000Z/19980115T230000Z +FREEBUSY:19980116T013000Z/19980116T043000Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T080000Z +DTEND:19970701T200000 +UID:calsrv.example.com-873970198738777@example.com +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:A@example.com +ATTENDEE:Mailto:B@example.com +DTSTART:19970701T080000Z +DTEND:19970701T200000Z +UID:calsrv.example.com-873970198738777@example.com +FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M +DTSTAMP:19970613T190030Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-SanJose +TZURL:http://zones.stds_r_us.net/tz/America-SanJose +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:A@example.COM +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:B@example.fr +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:c@example.jp +DTSTAMP:19970613T190030Z +DTSTART;TZID=America-SanJose:19970701T140000 +DTEND;TZID=America-SanJose:19970701T150000 +RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU +RDATE;TZID=America-SanJose:19970910T140000 +EXDATE;TZID=America-SanJose:19970909T140000 +EXDATE;TZID=America-SanJose:19971028T140000 +SUMMARY:Weekly Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +LOCATION:Conference Call +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1com +RECURRENCE-ID:19970701T210000Z +SEQUENCE:1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970703T210000Z +DTEND:19970703T220000Z +LOCATION:Conference Call +DTSTAMP:19970626T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +RECURRENCE-ID:19970801T210000Z +SEQUENCE:2 +STATUS:CANCELLED +DTSTAMP:19970721T093000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DTSTAMP:19970721T103000Z +STATUS:CANCELLED +SEQUENCE:3 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID;RANGE=THISANDFUTURE:19970901T210000Z +SEQUENCE:3 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Discussion +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970901T210000Z +DTEND:19970901T220000Z +LOCATION:Building 32\, Microsoft\, Seattle\, WA +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T210000Z +DTEND:19970715T220000Z +LOCATION:Conference Call +DTSTAMP:19970629T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +LOCATION:The White Room +DTSTAMP:19980301T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The Usual conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU,TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The White Room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RDATE:19980304T180000Z +RDATE:19980311T180000Z +RDATE:19980318T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:1 +RECURRENCE-ID:19980311T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980311T180000Z +DTSTAMP:19980306T193000Z +LOCATION:The Small conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980315T180000Z +DTEND:19980315T200000Z +DTSTAMP:19980307T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +RDATE:19980304T180000Z +RDATE:19980311T160000Z +RDATE:19980315T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +SEQUENCE:2 +RECURRENCE-ID:19980311T160000Z +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980304T180000Z +DTSTAMP:19980306T193000Z +ORGANIZER:Mailto:A@example.com +LOCATION:The Small conference room +UID:guid-1@host1.com +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:COUNTER +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID:19970715T210000Z +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T220000Z +DTEND:19970715T230000Z +LOCATION:Conference Call +COMMENT:May we bump this by an hour? I have a conflict +DTSTAMP:19970629T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +DTSTAMP:19970602T094000Z +LOCATION:Conference Call +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single + event;RRULE +REQUEST-STATUS:3.0;Invalid Property Name;FOO +UID:guid-1@host1.com +SEQUENCE:0 +DTSTAMP:19970603T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:Needs Action +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +UID:calsrv.example.com-873970198738777-00@example.com +COMMENT:I'll send you my input by e-mail +SEQUENCE:0 +DTSTAMP:19970717T203000Z +REQUEST-STATUS:2.0;Success +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +SUMMARY:Create the requirements document +PRIORITY:1 +SEQUENCE:0 +STATUS:IN-PROCESS +DTSTART:19970701T170000Z +DTSTAMP:19970717T230000Z +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +REQUEST-STATUS:2.0 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +REQUEST-STATUS:2.0 +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;PARTSTAT=IN-PROCESS;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:1 +DTSTAMP:19970718T100000Z +STATUS:IN-PROGRESS +PERCENT-COMPLETE:40 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR +DTSTART:19980101T100000 +DUE:19980103T100000 +SUMMARY:Send Status Reports to Area Managers +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:NEEDS-ACTION +PRIORITY:1 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +RECURRENCE-ID:19980101T170000Z +SEQUENCE:1 +ORGANIZER:MAILTO:A@Example.com +REQUEST-STATUS:2.0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VJOURNAL +DTSTART:19971002T200000Z +DTSTAMP:19971002T200000Z +ORGANIZER:MAILTO:A@Example.com +SUMMARY:Phone conference minutes +DESCRIPTION:The editors meeting was held on October 1\, 1997. + Details are in the attached document. +UID:0981234-1234234-2410@example.com +RELATED-TO:0981234-1234234-2402-35@example.com +ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +UID: guid-1-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:acme-12345@host1.com +SEQUENCE:3 +RRULE:FREQ=WEEKLY +RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +DESCRIPTION:IETF-C&S Conference Call +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970801T210000Z +DTEND:19970801T220000Z +RECURRENCE-ID:19970809T210000Z +DTSTAMP:19970726T083000 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +UID:acme-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTART:19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +END:VEVENT +END:VCALENDAR + +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123402@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970401T163000Z +DTEND:19970402T010000Z +SUMMARY:Laurel is in sensitivity awareness class. +CLASS:PUBLIC +CATEGORIES:BUSINESS,HUMAN RESOURCES +TRANSP:TRANSPARENT +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123403@host.com +DTSTAMP:19970901T1300Z +DTSTART:19971102 +SUMMARY:Our Blissful Anniversary +CLASS:CONFIDENTIAL +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +RRULE:FREQ=YEARLY +END:VEVENT + +BEGIN:VTODO +UID:19970901T130000Z-123404@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970415T133000Z +DUE:19970416T045959Z +SUMMARY:1996 Income Tax Preparation +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +STATUS:NEEDS-ACTION +END:VTODO +BEGIN:VJOURNAL +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T1300Z +DTSTART;VALUE=DATE:19970317 +SUMMARY:Staff meeting minutes +DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa + and Bob. Aurora project plans were reviewed. There is currently + no budget reserves for this project. Lisa will escalate to + management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative called + to discuss new printer. Promised to get us a demo by Friday.\n + 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. + Is looking into a loaner car. 654-2323 (tel). +END:VJOURNAL +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +DTSTAMP:19970901T083000Z +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTAMP:19970901T100000Z +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M +URL:http://host2.com/pub/busy/jpublic-01.ifb +COMMENT:This iCalendar file contains busy time information for + the next three months. +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19971026T020000 +RDATE:19971026T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19971026T020000 +RDATE:19970406T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +BEGIN:DAYLIGHT +DTSTART:19990424T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +REPEAT:4 +DURATION:PT15M +ACTION:AUDIO +ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +REPEAT:2 +DURATION:PT15M +ACTION:DISPLAY +DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. +END:VALARM +BEGIN:VALARM +TRIGGER:-P2D +ACTION:EMAIL +ATTENDEE:MAILTO:john_doe@host.com +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. +ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen + da.doc +END:VALARM +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +REPEAT:23 +DURATION:PT1H +ACTION:PROCEDURE +ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- + procs/felizano.exe +END:VALARM +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + MAILTO:employee-A@host.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTART;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T1200Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ + conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER:19980403T120000 +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- + files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ, Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTART:19970701T200000Z +DTSTAMP:19970611T190000Z +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970612T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SEQUENCE:1 +UID:0981234-1234234-23@example.com +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +COMMENT:DUKES forfeit the game +SEQUENCE:2 +UID:0981234-1234234-23@example.com +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +CALSCALE:GREGORIAN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-Chicago +TZURL:http://zones.stds_r_us.net/tz/America-Chicago +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +ATTACH:http://www.dukes.com/ +CATEGORIES:SPORTS EVENT,ENTERTAINMENT +CLASS:PRIVATE +DESCRIPTION:MIDWAY STADIUM\n + Big time game. MUST see.\n + Expected duration:2 hours\n +DTEND;TZID=America-Chicago:19970701T180000 +DTSTART;TZID=America-Chicago:19970702T160000 +DTSTAMP:19970614T190000Z +STATUS:CONFIRMED +LOCATION;VALUE=URI:http://www.midwaystadium.com/ +PRIORITY:2 +RESOURCES:SCOREBOARD +SEQUENCE:3 +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +RELATED-TO:0981234-1234234-14@example.com +BEGIN:VALARM +TRIGGER:-PT2H +ACTION:DISPLAY +DESCRIPTION:You should be leaving for the game now. +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +ACTION:AUDIO +END:VALARM +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970614T190000Z +UID:0981234-1234234-23@example.com +DTSTART;VALUE=DATE:19970714 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY: Bastille Day +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T2000000Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE; + CUTYPE=ROOM:Mailto:Conf@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T190000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +DTSTAMP:19970613T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T190000Z +DTEND:19970701T200000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +DTSTAMP:19970611T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:COUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +DTSTAMP:19970612T190000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +COMMENT:This time works much better and I think the big conference + room is too big +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +SUMMARY:Discuss the Merits of the election results - changed to + meet B's schedule +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:DECLINECOUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +COMMENT:Sorry\, I cannot change this meeting time +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +ATTENDEE;RSVP=TRUE; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED- + FROM="Mailto:C@example.com":Mailto:E@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED; + DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com +COMMENT:Sorry\, I will be out of town at that time. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DECLINED; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +SUMMARY:Phone Conference +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +DTSTAMP:19970614T200000Z +COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR + INVITATION +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +COMMENT:Mr. B cannot attend. It's raining. Lets cancel. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CANCELLED +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:mailto:B@example.com +COMMENT:You're off the hook for this meeting +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970613T193000Z +SEQUENCE:1 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +ATTENDEE;CUTYPE=ROOM:CR_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT; + RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:2 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +RRULE:FREQ=WEEKLY +SUMMARY:Phone Conference +UID:123456@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +METHOD:PUBLISH +BEGIN:VFREEBUSY +DTSTAMP:19980101T124100Z +ORGANIZER:MAILTO:A@Example.com +DTSTART:19980101T124200Z +DTEND:19980107T124200Z +FREEBUSY:19980101T180000Z/19980101T190000Z +FREEBUSY:19980103T020000Z/19980103T050000Z +FREEBUSY:19980107T020000Z/19980107T050000Z +FREEBUSY:19980113T000000Z/19980113T010000Z +FREEBUSY:19980115T190000Z/19980115T200000Z +FREEBUSY:19980115T220000Z/19980115T230000Z +FREEBUSY:19980116T013000Z/19980116T043000Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T080000Z +DTEND:19970701T200000 +UID:calsrv.example.com-873970198738777@example.com +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:A@example.com +ATTENDEE:Mailto:B@example.com +DTSTART:19970701T080000Z +DTEND:19970701T200000Z +UID:calsrv.example.com-873970198738777@example.com +FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M +DTSTAMP:19970613T190030Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-SanJose +TZURL:http://zones.stds_r_us.net/tz/America-SanJose +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:A@example.COM +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:B@example.fr +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:c@example.jp +DTSTAMP:19970613T190030Z +DTSTART;TZID=America-SanJose:19970701T140000 +DTEND;TZID=America-SanJose:19970701T150000 +RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU +RDATE;TZID=America-SanJose:19970910T140000 +EXDATE;TZID=America-SanJose:19970909T140000 +EXDATE;TZID=America-SanJose:19971028T140000 +SUMMARY:Weekly Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +LOCATION:Conference Call +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1com +RECURRENCE-ID:19970701T210000Z +SEQUENCE:1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970703T210000Z +DTEND:19970703T220000Z +LOCATION:Conference Call +DTSTAMP:19970626T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +RECURRENCE-ID:19970801T210000Z +SEQUENCE:2 +STATUS:CANCELLED +DTSTAMP:19970721T093000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DTSTAMP:19970721T103000Z +STATUS:CANCELLED +SEQUENCE:3 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID;RANGE=THISANDFUTURE:19970901T210000Z +SEQUENCE:3 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Discussion +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970901T210000Z +DTEND:19970901T220000Z +LOCATION:Building 32\, Microsoft\, Seattle\, WA +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T210000Z +DTEND:19970715T220000Z +LOCATION:Conference Call +DTSTAMP:19970629T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +LOCATION:The White Room +DTSTAMP:19980301T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The Usual conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU,TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The White Room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RDATE:19980304T180000Z +RDATE:19980311T180000Z +RDATE:19980318T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:1 +RECURRENCE-ID:19980311T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980311T180000Z +DTSTAMP:19980306T193000Z +LOCATION:The Small conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980315T180000Z +DTEND:19980315T200000Z +DTSTAMP:19980307T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +RDATE:19980304T180000Z +RDATE:19980311T160000Z +RDATE:19980315T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +SEQUENCE:2 +RECURRENCE-ID:19980311T160000Z +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980304T180000Z +DTSTAMP:19980306T193000Z +ORGANIZER:Mailto:A@example.com +LOCATION:The Small conference room +UID:guid-1@host1.com +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:COUNTER +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID:19970715T210000Z +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T220000Z +DTEND:19970715T230000Z +LOCATION:Conference Call +COMMENT:May we bump this by an hour? I have a conflict +DTSTAMP:19970629T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +DTSTAMP:19970602T094000Z +LOCATION:Conference Call +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single + event;RRULE +REQUEST-STATUS:3.0;Invalid Property Name;FOO +UID:guid-1@host1.com +SEQUENCE:0 +DTSTAMP:19970603T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:Needs Action +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +UID:calsrv.example.com-873970198738777-00@example.com +COMMENT:I'll send you my input by e-mail +SEQUENCE:0 +DTSTAMP:19970717T203000Z +REQUEST-STATUS:2.0;Success +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +SUMMARY:Create the requirements document +PRIORITY:1 +SEQUENCE:0 +STATUS:IN-PROCESS +DTSTART:19970701T170000Z +DTSTAMP:19970717T230000Z +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +REQUEST-STATUS:2.0 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +REQUEST-STATUS:2.0 +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;PARTSTAT=IN-PROCESS;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:1 +DTSTAMP:19970718T100000Z +STATUS:IN-PROGRESS +PERCENT-COMPLETE:40 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR +DTSTART:19980101T100000 +DUE:19980103T100000 +SUMMARY:Send Status Reports to Area Managers +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:NEEDS-ACTION +PRIORITY:1 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +RECURRENCE-ID:19980101T170000Z +SEQUENCE:1 +ORGANIZER:MAILTO:A@Example.com +REQUEST-STATUS:2.0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VJOURNAL +DTSTART:19971002T200000Z +DTSTAMP:19971002T200000Z +ORGANIZER:MAILTO:A@Example.com +SUMMARY:Phone conference minutes +DESCRIPTION:The editors meeting was held on October 1\, 1997. + Details are in the attached document. +UID:0981234-1234234-2410@example.com +RELATED-TO:0981234-1234234-2402-35@example.com +ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +UID: guid-1-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:acme-12345@host1.com +SEQUENCE:3 +RRULE:FREQ=WEEKLY +RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +DESCRIPTION:IETF-C&S Conference Call +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970801T210000Z +DTEND:19970801T220000Z +RECURRENCE-ID:19970809T210000Z +DTSTAMP:19970726T083000 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +UID:acme-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTART:19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +END:VEVENT +END:VCALENDAR + +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123402@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970401T163000Z +DTEND:19970402T010000Z +SUMMARY:Laurel is in sensitivity awareness class. +CLASS:PUBLIC +CATEGORIES:BUSINESS,HUMAN RESOURCES +TRANSP:TRANSPARENT +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123403@host.com +DTSTAMP:19970901T1300Z +DTSTART:19971102 +SUMMARY:Our Blissful Anniversary +CLASS:CONFIDENTIAL +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +RRULE:FREQ=YEARLY +END:VEVENT + +BEGIN:VTODO +UID:19970901T130000Z-123404@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970415T133000Z +DUE:19970416T045959Z +SUMMARY:1996 Income Tax Preparation +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +STATUS:NEEDS-ACTION +END:VTODO +BEGIN:VJOURNAL +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T1300Z +DTSTART;VALUE=DATE:19970317 +SUMMARY:Staff meeting minutes +DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa + and Bob. Aurora project plans were reviewed. There is currently + no budget reserves for this project. Lisa will escalate to + management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative called + to discuss new printer. Promised to get us a demo by Friday.\n + 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. + Is looking into a loaner car. 654-2323 (tel). +END:VJOURNAL +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +DTSTAMP:19970901T083000Z +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTAMP:19970901T100000Z +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M +URL:http://host2.com/pub/busy/jpublic-01.ifb +COMMENT:This iCalendar file contains busy time information for + the next three months. +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19971026T020000 +RDATE:19971026T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19971026T020000 +RDATE:19970406T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +BEGIN:DAYLIGHT +DTSTART:19990424T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +REPEAT:4 +DURATION:PT15M +ACTION:AUDIO +ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +REPEAT:2 +DURATION:PT15M +ACTION:DISPLAY +DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. +END:VALARM +BEGIN:VALARM +TRIGGER:-P2D +ACTION:EMAIL +ATTENDEE:MAILTO:john_doe@host.com +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. +ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen + da.doc +END:VALARM +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +REPEAT:23 +DURATION:PT1H +ACTION:PROCEDURE +ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- + procs/felizano.exe +END:VALARM +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + MAILTO:employee-A@host.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTART;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T1200Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ + conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER:19980403T120000 +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- + files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ, Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTART:19970701T200000Z +DTSTAMP:19970611T190000Z +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970612T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SEQUENCE:1 +UID:0981234-1234234-23@example.com +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +COMMENT:DUKES forfeit the game +SEQUENCE:2 +UID:0981234-1234234-23@example.com +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +CALSCALE:GREGORIAN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-Chicago +TZURL:http://zones.stds_r_us.net/tz/America-Chicago +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +ATTACH:http://www.dukes.com/ +CATEGORIES:SPORTS EVENT,ENTERTAINMENT +CLASS:PRIVATE +DESCRIPTION:MIDWAY STADIUM\n + Big time game. MUST see.\n + Expected duration:2 hours\n +DTEND;TZID=America-Chicago:19970701T180000 +DTSTART;TZID=America-Chicago:19970702T160000 +DTSTAMP:19970614T190000Z +STATUS:CONFIRMED +LOCATION;VALUE=URI:http://www.midwaystadium.com/ +PRIORITY:2 +RESOURCES:SCOREBOARD +SEQUENCE:3 +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +RELATED-TO:0981234-1234234-14@example.com +BEGIN:VALARM +TRIGGER:-PT2H +ACTION:DISPLAY +DESCRIPTION:You should be leaving for the game now. +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +ACTION:AUDIO +END:VALARM +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970614T190000Z +UID:0981234-1234234-23@example.com +DTSTART;VALUE=DATE:19970714 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY: Bastille Day +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T2000000Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE; + CUTYPE=ROOM:Mailto:Conf@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T190000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +DTSTAMP:19970613T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T190000Z +DTEND:19970701T200000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +DTSTAMP:19970611T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:COUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +DTSTAMP:19970612T190000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +COMMENT:This time works much better and I think the big conference + room is too big +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +SUMMARY:Discuss the Merits of the election results - changed to + meet B's schedule +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:DECLINECOUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +COMMENT:Sorry\, I cannot change this meeting time +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +ATTENDEE;RSVP=TRUE; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED- + FROM="Mailto:C@example.com":Mailto:E@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED; + DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com +COMMENT:Sorry\, I will be out of town at that time. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DECLINED; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +SUMMARY:Phone Conference +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +DTSTAMP:19970614T200000Z +COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR + INVITATION +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +COMMENT:Mr. B cannot attend. It's raining. Lets cancel. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CANCELLED +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:mailto:B@example.com +COMMENT:You're off the hook for this meeting +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970613T193000Z +SEQUENCE:1 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +ATTENDEE;CUTYPE=ROOM:CR_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT; + RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:2 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +RRULE:FREQ=WEEKLY +SUMMARY:Phone Conference +UID:123456@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +METHOD:PUBLISH +BEGIN:VFREEBUSY +DTSTAMP:19980101T124100Z +ORGANIZER:MAILTO:A@Example.com +DTSTART:19980101T124200Z +DTEND:19980107T124200Z +FREEBUSY:19980101T180000Z/19980101T190000Z +FREEBUSY:19980103T020000Z/19980103T050000Z +FREEBUSY:19980107T020000Z/19980107T050000Z +FREEBUSY:19980113T000000Z/19980113T010000Z +FREEBUSY:19980115T190000Z/19980115T200000Z +FREEBUSY:19980115T220000Z/19980115T230000Z +FREEBUSY:19980116T013000Z/19980116T043000Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T080000Z +DTEND:19970701T200000 +UID:calsrv.example.com-873970198738777@example.com +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:A@example.com +ATTENDEE:Mailto:B@example.com +DTSTART:19970701T080000Z +DTEND:19970701T200000Z +UID:calsrv.example.com-873970198738777@example.com +FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M +DTSTAMP:19970613T190030Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-SanJose +TZURL:http://zones.stds_r_us.net/tz/America-SanJose +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:A@example.COM +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:B@example.fr +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:c@example.jp +DTSTAMP:19970613T190030Z +DTSTART;TZID=America-SanJose:19970701T140000 +DTEND;TZID=America-SanJose:19970701T150000 +RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU +RDATE;TZID=America-SanJose:19970910T140000 +EXDATE;TZID=America-SanJose:19970909T140000 +EXDATE;TZID=America-SanJose:19971028T140000 +SUMMARY:Weekly Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +LOCATION:Conference Call +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1com +RECURRENCE-ID:19970701T210000Z +SEQUENCE:1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970703T210000Z +DTEND:19970703T220000Z +LOCATION:Conference Call +DTSTAMP:19970626T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +RECURRENCE-ID:19970801T210000Z +SEQUENCE:2 +STATUS:CANCELLED +DTSTAMP:19970721T093000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DTSTAMP:19970721T103000Z +STATUS:CANCELLED +SEQUENCE:3 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID;RANGE=THISANDFUTURE:19970901T210000Z +SEQUENCE:3 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Discussion +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970901T210000Z +DTEND:19970901T220000Z +LOCATION:Building 32\, Microsoft\, Seattle\, WA +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T210000Z +DTEND:19970715T220000Z +LOCATION:Conference Call +DTSTAMP:19970629T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +LOCATION:The White Room +DTSTAMP:19980301T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The Usual conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU,TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The White Room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RDATE:19980304T180000Z +RDATE:19980311T180000Z +RDATE:19980318T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:1 +RECURRENCE-ID:19980311T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980311T180000Z +DTSTAMP:19980306T193000Z +LOCATION:The Small conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980315T180000Z +DTEND:19980315T200000Z +DTSTAMP:19980307T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +RDATE:19980304T180000Z +RDATE:19980311T160000Z +RDATE:19980315T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +SEQUENCE:2 +RECURRENCE-ID:19980311T160000Z +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980304T180000Z +DTSTAMP:19980306T193000Z +ORGANIZER:Mailto:A@example.com +LOCATION:The Small conference room +UID:guid-1@host1.com +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:COUNTER +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID:19970715T210000Z +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T220000Z +DTEND:19970715T230000Z +LOCATION:Conference Call +COMMENT:May we bump this by an hour? I have a conflict +DTSTAMP:19970629T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +DTSTAMP:19970602T094000Z +LOCATION:Conference Call +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single + event;RRULE +REQUEST-STATUS:3.0;Invalid Property Name;FOO +UID:guid-1@host1.com +SEQUENCE:0 +DTSTAMP:19970603T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:Needs Action +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +UID:calsrv.example.com-873970198738777-00@example.com +COMMENT:I'll send you my input by e-mail +SEQUENCE:0 +DTSTAMP:19970717T203000Z +REQUEST-STATUS:2.0;Success +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +SUMMARY:Create the requirements document +PRIORITY:1 +SEQUENCE:0 +STATUS:IN-PROCESS +DTSTART:19970701T170000Z +DTSTAMP:19970717T230000Z +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +REQUEST-STATUS:2.0 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +REQUEST-STATUS:2.0 +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;PARTSTAT=IN-PROCESS;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:1 +DTSTAMP:19970718T100000Z +STATUS:IN-PROGRESS +PERCENT-COMPLETE:40 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR +DTSTART:19980101T100000 +DUE:19980103T100000 +SUMMARY:Send Status Reports to Area Managers +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:NEEDS-ACTION +PRIORITY:1 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +RECURRENCE-ID:19980101T170000Z +SEQUENCE:1 +ORGANIZER:MAILTO:A@Example.com +REQUEST-STATUS:2.0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VJOURNAL +DTSTART:19971002T200000Z +DTSTAMP:19971002T200000Z +ORGANIZER:MAILTO:A@Example.com +SUMMARY:Phone conference minutes +DESCRIPTION:The editors meeting was held on October 1\, 1997. + Details are in the attached document. +UID:0981234-1234234-2410@example.com +RELATED-TO:0981234-1234234-2402-35@example.com +ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +UID: guid-1-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:acme-12345@host1.com +SEQUENCE:3 +RRULE:FREQ=WEEKLY +RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +DESCRIPTION:IETF-C&S Conference Call +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970801T210000Z +DTEND:19970801T220000Z +RECURRENCE-ID:19970809T210000Z +DTSTAMP:19970726T083000 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +UID:acme-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTART:19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +END:VEVENT +END:VCALENDAR + +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123402@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970401T163000Z +DTEND:19970402T010000Z +SUMMARY:Laurel is in sensitivity awareness class. +CLASS:PUBLIC +CATEGORIES:BUSINESS,HUMAN RESOURCES +TRANSP:TRANSPARENT +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123403@host.com +DTSTAMP:19970901T1300Z +DTSTART:19971102 +SUMMARY:Our Blissful Anniversary +CLASS:CONFIDENTIAL +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +RRULE:FREQ=YEARLY +END:VEVENT + +BEGIN:VTODO +UID:19970901T130000Z-123404@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970415T133000Z +DUE:19970416T045959Z +SUMMARY:1996 Income Tax Preparation +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +STATUS:NEEDS-ACTION +END:VTODO +BEGIN:VJOURNAL +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T1300Z +DTSTART;VALUE=DATE:19970317 +SUMMARY:Staff meeting minutes +DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa + and Bob. Aurora project plans were reviewed. There is currently + no budget reserves for this project. Lisa will escalate to + management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative called + to discuss new printer. Promised to get us a demo by Friday.\n + 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. + Is looking into a loaner car. 654-2323 (tel). +END:VJOURNAL +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +DTSTAMP:19970901T083000Z +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTAMP:19970901T100000Z +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M +URL:http://host2.com/pub/busy/jpublic-01.ifb +COMMENT:This iCalendar file contains busy time information for + the next three months. +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19971026T020000 +RDATE:19971026T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19971026T020000 +RDATE:19970406T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +BEGIN:DAYLIGHT +DTSTART:19990424T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +REPEAT:4 +DURATION:PT15M +ACTION:AUDIO +ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +REPEAT:2 +DURATION:PT15M +ACTION:DISPLAY +DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. +END:VALARM +BEGIN:VALARM +TRIGGER:-P2D +ACTION:EMAIL +ATTENDEE:MAILTO:john_doe@host.com +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. +ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen + da.doc +END:VALARM +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +REPEAT:23 +DURATION:PT1H +ACTION:PROCEDURE +ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- + procs/felizano.exe +END:VALARM +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + MAILTO:employee-A@host.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTART;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T1200Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ + conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER:19980403T120000 +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- + files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ, Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTART:19970701T200000Z +DTSTAMP:19970611T190000Z +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970612T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SEQUENCE:1 +UID:0981234-1234234-23@example.com +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +COMMENT:DUKES forfeit the game +SEQUENCE:2 +UID:0981234-1234234-23@example.com +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +CALSCALE:GREGORIAN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-Chicago +TZURL:http://zones.stds_r_us.net/tz/America-Chicago +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +ATTACH:http://www.dukes.com/ +CATEGORIES:SPORTS EVENT,ENTERTAINMENT +CLASS:PRIVATE +DESCRIPTION:MIDWAY STADIUM\n + Big time game. MUST see.\n + Expected duration:2 hours\n +DTEND;TZID=America-Chicago:19970701T180000 +DTSTART;TZID=America-Chicago:19970702T160000 +DTSTAMP:19970614T190000Z +STATUS:CONFIRMED +LOCATION;VALUE=URI:http://www.midwaystadium.com/ +PRIORITY:2 +RESOURCES:SCOREBOARD +SEQUENCE:3 +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +RELATED-TO:0981234-1234234-14@example.com +BEGIN:VALARM +TRIGGER:-PT2H +ACTION:DISPLAY +DESCRIPTION:You should be leaving for the game now. +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +ACTION:AUDIO +END:VALARM +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970614T190000Z +UID:0981234-1234234-23@example.com +DTSTART;VALUE=DATE:19970714 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY: Bastille Day +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T2000000Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE; + CUTYPE=ROOM:Mailto:Conf@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T190000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +DTSTAMP:19970613T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T190000Z +DTEND:19970701T200000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +DTSTAMP:19970611T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:COUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +DTSTAMP:19970612T190000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +COMMENT:This time works much better and I think the big conference + room is too big +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +SUMMARY:Discuss the Merits of the election results - changed to + meet B's schedule +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:DECLINECOUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +COMMENT:Sorry\, I cannot change this meeting time +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +ATTENDEE;RSVP=TRUE; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED- + FROM="Mailto:C@example.com":Mailto:E@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED; + DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com +COMMENT:Sorry\, I will be out of town at that time. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DECLINED; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +SUMMARY:Phone Conference +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +DTSTAMP:19970614T200000Z +COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR + INVITATION +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +COMMENT:Mr. B cannot attend. It's raining. Lets cancel. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CANCELLED +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:mailto:B@example.com +COMMENT:You're off the hook for this meeting +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970613T193000Z +SEQUENCE:1 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +ATTENDEE;CUTYPE=ROOM:CR_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT; + RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:2 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +RRULE:FREQ=WEEKLY +SUMMARY:Phone Conference +UID:123456@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +METHOD:PUBLISH +BEGIN:VFREEBUSY +DTSTAMP:19980101T124100Z +ORGANIZER:MAILTO:A@Example.com +DTSTART:19980101T124200Z +DTEND:19980107T124200Z +FREEBUSY:19980101T180000Z/19980101T190000Z +FREEBUSY:19980103T020000Z/19980103T050000Z +FREEBUSY:19980107T020000Z/19980107T050000Z +FREEBUSY:19980113T000000Z/19980113T010000Z +FREEBUSY:19980115T190000Z/19980115T200000Z +FREEBUSY:19980115T220000Z/19980115T230000Z +FREEBUSY:19980116T013000Z/19980116T043000Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T080000Z +DTEND:19970701T200000 +UID:calsrv.example.com-873970198738777@example.com +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:A@example.com +ATTENDEE:Mailto:B@example.com +DTSTART:19970701T080000Z +DTEND:19970701T200000Z +UID:calsrv.example.com-873970198738777@example.com +FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M +DTSTAMP:19970613T190030Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-SanJose +TZURL:http://zones.stds_r_us.net/tz/America-SanJose +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:A@example.COM +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:B@example.fr +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:c@example.jp +DTSTAMP:19970613T190030Z +DTSTART;TZID=America-SanJose:19970701T140000 +DTEND;TZID=America-SanJose:19970701T150000 +RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU +RDATE;TZID=America-SanJose:19970910T140000 +EXDATE;TZID=America-SanJose:19970909T140000 +EXDATE;TZID=America-SanJose:19971028T140000 +SUMMARY:Weekly Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +LOCATION:Conference Call +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1com +RECURRENCE-ID:19970701T210000Z +SEQUENCE:1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970703T210000Z +DTEND:19970703T220000Z +LOCATION:Conference Call +DTSTAMP:19970626T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +RECURRENCE-ID:19970801T210000Z +SEQUENCE:2 +STATUS:CANCELLED +DTSTAMP:19970721T093000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DTSTAMP:19970721T103000Z +STATUS:CANCELLED +SEQUENCE:3 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID;RANGE=THISANDFUTURE:19970901T210000Z +SEQUENCE:3 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Discussion +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970901T210000Z +DTEND:19970901T220000Z +LOCATION:Building 32\, Microsoft\, Seattle\, WA +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T210000Z +DTEND:19970715T220000Z +LOCATION:Conference Call +DTSTAMP:19970629T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +LOCATION:The White Room +DTSTAMP:19980301T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The Usual conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU,TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The White Room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RDATE:19980304T180000Z +RDATE:19980311T180000Z +RDATE:19980318T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:1 +RECURRENCE-ID:19980311T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980311T180000Z +DTSTAMP:19980306T193000Z +LOCATION:The Small conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980315T180000Z +DTEND:19980315T200000Z +DTSTAMP:19980307T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +RDATE:19980304T180000Z +RDATE:19980311T160000Z +RDATE:19980315T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +SEQUENCE:2 +RECURRENCE-ID:19980311T160000Z +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980304T180000Z +DTSTAMP:19980306T193000Z +ORGANIZER:Mailto:A@example.com +LOCATION:The Small conference room +UID:guid-1@host1.com +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:COUNTER +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID:19970715T210000Z +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T220000Z +DTEND:19970715T230000Z +LOCATION:Conference Call +COMMENT:May we bump this by an hour? I have a conflict +DTSTAMP:19970629T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +DTSTAMP:19970602T094000Z +LOCATION:Conference Call +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single + event;RRULE +REQUEST-STATUS:3.0;Invalid Property Name;FOO +UID:guid-1@host1.com +SEQUENCE:0 +DTSTAMP:19970603T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:Needs Action +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +UID:calsrv.example.com-873970198738777-00@example.com +COMMENT:I'll send you my input by e-mail +SEQUENCE:0 +DTSTAMP:19970717T203000Z +REQUEST-STATUS:2.0;Success +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +SUMMARY:Create the requirements document +PRIORITY:1 +SEQUENCE:0 +STATUS:IN-PROCESS +DTSTART:19970701T170000Z +DTSTAMP:19970717T230000Z +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +REQUEST-STATUS:2.0 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +REQUEST-STATUS:2.0 +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;PARTSTAT=IN-PROCESS;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:1 +DTSTAMP:19970718T100000Z +STATUS:IN-PROGRESS +PERCENT-COMPLETE:40 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR +DTSTART:19980101T100000 +DUE:19980103T100000 +SUMMARY:Send Status Reports to Area Managers +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:NEEDS-ACTION +PRIORITY:1 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +RECURRENCE-ID:19980101T170000Z +SEQUENCE:1 +ORGANIZER:MAILTO:A@Example.com +REQUEST-STATUS:2.0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VJOURNAL +DTSTART:19971002T200000Z +DTSTAMP:19971002T200000Z +ORGANIZER:MAILTO:A@Example.com +SUMMARY:Phone conference minutes +DESCRIPTION:The editors meeting was held on October 1\, 1997. + Details are in the attached document. +UID:0981234-1234234-2410@example.com +RELATED-TO:0981234-1234234-2402-35@example.com +ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +UID: guid-1-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:acme-12345@host1.com +SEQUENCE:3 +RRULE:FREQ=WEEKLY +RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +DESCRIPTION:IETF-C&S Conference Call +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970801T210000Z +DTEND:19970801T220000Z +RECURRENCE-ID:19970809T210000Z +DTSTAMP:19970726T083000 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +UID:acme-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTART:19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +END:VEVENT +END:VCALENDAR + +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123402@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970401T163000Z +DTEND:19970402T010000Z +SUMMARY:Laurel is in sensitivity awareness class. +CLASS:PUBLIC +CATEGORIES:BUSINESS,HUMAN RESOURCES +TRANSP:TRANSPARENT +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123403@host.com +DTSTAMP:19970901T1300Z +DTSTART:19971102 +SUMMARY:Our Blissful Anniversary +CLASS:CONFIDENTIAL +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +RRULE:FREQ=YEARLY +END:VEVENT + +BEGIN:VTODO +UID:19970901T130000Z-123404@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970415T133000Z +DUE:19970416T045959Z +SUMMARY:1996 Income Tax Preparation +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +STATUS:NEEDS-ACTION +END:VTODO +BEGIN:VJOURNAL +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T1300Z +DTSTART;VALUE=DATE:19970317 +SUMMARY:Staff meeting minutes +DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa + and Bob. Aurora project plans were reviewed. There is currently + no budget reserves for this project. Lisa will escalate to + management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative called + to discuss new printer. Promised to get us a demo by Friday.\n + 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. + Is looking into a loaner car. 654-2323 (tel). +END:VJOURNAL +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +DTSTAMP:19970901T083000Z +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTAMP:19970901T100000Z +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M +URL:http://host2.com/pub/busy/jpublic-01.ifb +COMMENT:This iCalendar file contains busy time information for + the next three months. +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19971026T020000 +RDATE:19971026T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19971026T020000 +RDATE:19970406T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +BEGIN:DAYLIGHT +DTSTART:19990424T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +REPEAT:4 +DURATION:PT15M +ACTION:AUDIO +ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +REPEAT:2 +DURATION:PT15M +ACTION:DISPLAY +DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. +END:VALARM +BEGIN:VALARM +TRIGGER:-P2D +ACTION:EMAIL +ATTENDEE:MAILTO:john_doe@host.com +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. +ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen + da.doc +END:VALARM +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +REPEAT:23 +DURATION:PT1H +ACTION:PROCEDURE +ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- + procs/felizano.exe +END:VALARM +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + MAILTO:employee-A@host.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTART;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T1200Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ + conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER:19980403T120000 +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- + files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ, Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTART:19970701T200000Z +DTSTAMP:19970611T190000Z +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970612T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SEQUENCE:1 +UID:0981234-1234234-23@example.com +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +COMMENT:DUKES forfeit the game +SEQUENCE:2 +UID:0981234-1234234-23@example.com +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +CALSCALE:GREGORIAN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-Chicago +TZURL:http://zones.stds_r_us.net/tz/America-Chicago +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +ATTACH:http://www.dukes.com/ +CATEGORIES:SPORTS EVENT,ENTERTAINMENT +CLASS:PRIVATE +DESCRIPTION:MIDWAY STADIUM\n + Big time game. MUST see.\n + Expected duration:2 hours\n +DTEND;TZID=America-Chicago:19970701T180000 +DTSTART;TZID=America-Chicago:19970702T160000 +DTSTAMP:19970614T190000Z +STATUS:CONFIRMED +LOCATION;VALUE=URI:http://www.midwaystadium.com/ +PRIORITY:2 +RESOURCES:SCOREBOARD +SEQUENCE:3 +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +RELATED-TO:0981234-1234234-14@example.com +BEGIN:VALARM +TRIGGER:-PT2H +ACTION:DISPLAY +DESCRIPTION:You should be leaving for the game now. +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +ACTION:AUDIO +END:VALARM +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970614T190000Z +UID:0981234-1234234-23@example.com +DTSTART;VALUE=DATE:19970714 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY: Bastille Day +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T2000000Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE; + CUTYPE=ROOM:Mailto:Conf@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T190000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +DTSTAMP:19970613T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T190000Z +DTEND:19970701T200000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +DTSTAMP:19970611T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:COUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +DTSTAMP:19970612T190000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +COMMENT:This time works much better and I think the big conference + room is too big +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +SUMMARY:Discuss the Merits of the election results - changed to + meet B's schedule +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:DECLINECOUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +COMMENT:Sorry\, I cannot change this meeting time +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +ATTENDEE;RSVP=TRUE; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED- + FROM="Mailto:C@example.com":Mailto:E@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED; + DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com +COMMENT:Sorry\, I will be out of town at that time. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DECLINED; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +SUMMARY:Phone Conference +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +DTSTAMP:19970614T200000Z +COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR + INVITATION +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +COMMENT:Mr. B cannot attend. It's raining. Lets cancel. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CANCELLED +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:mailto:B@example.com +COMMENT:You're off the hook for this meeting +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970613T193000Z +SEQUENCE:1 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +ATTENDEE;CUTYPE=ROOM:CR_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT; + RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:2 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +RRULE:FREQ=WEEKLY +SUMMARY:Phone Conference +UID:123456@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +METHOD:PUBLISH +BEGIN:VFREEBUSY +DTSTAMP:19980101T124100Z +ORGANIZER:MAILTO:A@Example.com +DTSTART:19980101T124200Z +DTEND:19980107T124200Z +FREEBUSY:19980101T180000Z/19980101T190000Z +FREEBUSY:19980103T020000Z/19980103T050000Z +FREEBUSY:19980107T020000Z/19980107T050000Z +FREEBUSY:19980113T000000Z/19980113T010000Z +FREEBUSY:19980115T190000Z/19980115T200000Z +FREEBUSY:19980115T220000Z/19980115T230000Z +FREEBUSY:19980116T013000Z/19980116T043000Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T080000Z +DTEND:19970701T200000 +UID:calsrv.example.com-873970198738777@example.com +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:A@example.com +ATTENDEE:Mailto:B@example.com +DTSTART:19970701T080000Z +DTEND:19970701T200000Z +UID:calsrv.example.com-873970198738777@example.com +FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M +DTSTAMP:19970613T190030Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-SanJose +TZURL:http://zones.stds_r_us.net/tz/America-SanJose +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:A@example.COM +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:B@example.fr +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:c@example.jp +DTSTAMP:19970613T190030Z +DTSTART;TZID=America-SanJose:19970701T140000 +DTEND;TZID=America-SanJose:19970701T150000 +RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU +RDATE;TZID=America-SanJose:19970910T140000 +EXDATE;TZID=America-SanJose:19970909T140000 +EXDATE;TZID=America-SanJose:19971028T140000 +SUMMARY:Weekly Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +LOCATION:Conference Call +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1com +RECURRENCE-ID:19970701T210000Z +SEQUENCE:1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970703T210000Z +DTEND:19970703T220000Z +LOCATION:Conference Call +DTSTAMP:19970626T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +RECURRENCE-ID:19970801T210000Z +SEQUENCE:2 +STATUS:CANCELLED +DTSTAMP:19970721T093000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DTSTAMP:19970721T103000Z +STATUS:CANCELLED +SEQUENCE:3 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID;RANGE=THISANDFUTURE:19970901T210000Z +SEQUENCE:3 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Discussion +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970901T210000Z +DTEND:19970901T220000Z +LOCATION:Building 32\, Microsoft\, Seattle\, WA +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T210000Z +DTEND:19970715T220000Z +LOCATION:Conference Call +DTSTAMP:19970629T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +LOCATION:The White Room +DTSTAMP:19980301T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The Usual conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU,TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The White Room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RDATE:19980304T180000Z +RDATE:19980311T180000Z +RDATE:19980318T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:1 +RECURRENCE-ID:19980311T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980311T180000Z +DTSTAMP:19980306T193000Z +LOCATION:The Small conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980315T180000Z +DTEND:19980315T200000Z +DTSTAMP:19980307T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +RDATE:19980304T180000Z +RDATE:19980311T160000Z +RDATE:19980315T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +SEQUENCE:2 +RECURRENCE-ID:19980311T160000Z +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980304T180000Z +DTSTAMP:19980306T193000Z +ORGANIZER:Mailto:A@example.com +LOCATION:The Small conference room +UID:guid-1@host1.com +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:COUNTER +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID:19970715T210000Z +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T220000Z +DTEND:19970715T230000Z +LOCATION:Conference Call +COMMENT:May we bump this by an hour? I have a conflict +DTSTAMP:19970629T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +DTSTAMP:19970602T094000Z +LOCATION:Conference Call +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single + event;RRULE +REQUEST-STATUS:3.0;Invalid Property Name;FOO +UID:guid-1@host1.com +SEQUENCE:0 +DTSTAMP:19970603T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:Needs Action +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +UID:calsrv.example.com-873970198738777-00@example.com +COMMENT:I'll send you my input by e-mail +SEQUENCE:0 +DTSTAMP:19970717T203000Z +REQUEST-STATUS:2.0;Success +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +SUMMARY:Create the requirements document +PRIORITY:1 +SEQUENCE:0 +STATUS:IN-PROCESS +DTSTART:19970701T170000Z +DTSTAMP:19970717T230000Z +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +REQUEST-STATUS:2.0 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +REQUEST-STATUS:2.0 +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;PARTSTAT=IN-PROCESS;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:1 +DTSTAMP:19970718T100000Z +STATUS:IN-PROGRESS +PERCENT-COMPLETE:40 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR +DTSTART:19980101T100000 +DUE:19980103T100000 +SUMMARY:Send Status Reports to Area Managers +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:NEEDS-ACTION +PRIORITY:1 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +RECURRENCE-ID:19980101T170000Z +SEQUENCE:1 +ORGANIZER:MAILTO:A@Example.com +REQUEST-STATUS:2.0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VJOURNAL +DTSTART:19971002T200000Z +DTSTAMP:19971002T200000Z +ORGANIZER:MAILTO:A@Example.com +SUMMARY:Phone conference minutes +DESCRIPTION:The editors meeting was held on October 1\, 1997. + Details are in the attached document. +UID:0981234-1234234-2410@example.com +RELATED-TO:0981234-1234234-2402-35@example.com +ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +UID: guid-1-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:acme-12345@host1.com +SEQUENCE:3 +RRULE:FREQ=WEEKLY +RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +DESCRIPTION:IETF-C&S Conference Call +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970801T210000Z +DTEND:19970801T220000Z +RECURRENCE-ID:19970809T210000Z +DTSTAMP:19970726T083000 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +UID:acme-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTART:19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +END:VEVENT +END:VCALENDAR + +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123402@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970401T163000Z +DTEND:19970402T010000Z +SUMMARY:Laurel is in sensitivity awareness class. +CLASS:PUBLIC +CATEGORIES:BUSINESS,HUMAN RESOURCES +TRANSP:TRANSPARENT +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123403@host.com +DTSTAMP:19970901T1300Z +DTSTART:19971102 +SUMMARY:Our Blissful Anniversary +CLASS:CONFIDENTIAL +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +RRULE:FREQ=YEARLY +END:VEVENT + +BEGIN:VTODO +UID:19970901T130000Z-123404@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970415T133000Z +DUE:19970416T045959Z +SUMMARY:1996 Income Tax Preparation +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +STATUS:NEEDS-ACTION +END:VTODO +BEGIN:VJOURNAL +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T1300Z +DTSTART;VALUE=DATE:19970317 +SUMMARY:Staff meeting minutes +DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa + and Bob. Aurora project plans were reviewed. There is currently + no budget reserves for this project. Lisa will escalate to + management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative called + to discuss new printer. Promised to get us a demo by Friday.\n + 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. + Is looking into a loaner car. 654-2323 (tel). +END:VJOURNAL +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +DTSTAMP:19970901T083000Z +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTAMP:19970901T100000Z +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M +URL:http://host2.com/pub/busy/jpublic-01.ifb +COMMENT:This iCalendar file contains busy time information for + the next three months. +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19971026T020000 +RDATE:19971026T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19971026T020000 +RDATE:19970406T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +BEGIN:DAYLIGHT +DTSTART:19990424T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +REPEAT:4 +DURATION:PT15M +ACTION:AUDIO +ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +REPEAT:2 +DURATION:PT15M +ACTION:DISPLAY +DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. +END:VALARM +BEGIN:VALARM +TRIGGER:-P2D +ACTION:EMAIL +ATTENDEE:MAILTO:john_doe@host.com +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. +ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen + da.doc +END:VALARM +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +REPEAT:23 +DURATION:PT1H +ACTION:PROCEDURE +ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- + procs/felizano.exe +END:VALARM +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + MAILTO:employee-A@host.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTART;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T1200Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ + conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER:19980403T120000 +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- + files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ, Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTART:19970701T200000Z +DTSTAMP:19970611T190000Z +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970612T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SEQUENCE:1 +UID:0981234-1234234-23@example.com +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +COMMENT:DUKES forfeit the game +SEQUENCE:2 +UID:0981234-1234234-23@example.com +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +CALSCALE:GREGORIAN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-Chicago +TZURL:http://zones.stds_r_us.net/tz/America-Chicago +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +ATTACH:http://www.dukes.com/ +CATEGORIES:SPORTS EVENT,ENTERTAINMENT +CLASS:PRIVATE +DESCRIPTION:MIDWAY STADIUM\n + Big time game. MUST see.\n + Expected duration:2 hours\n +DTEND;TZID=America-Chicago:19970701T180000 +DTSTART;TZID=America-Chicago:19970702T160000 +DTSTAMP:19970614T190000Z +STATUS:CONFIRMED +LOCATION;VALUE=URI:http://www.midwaystadium.com/ +PRIORITY:2 +RESOURCES:SCOREBOARD +SEQUENCE:3 +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +RELATED-TO:0981234-1234234-14@example.com +BEGIN:VALARM +TRIGGER:-PT2H +ACTION:DISPLAY +DESCRIPTION:You should be leaving for the game now. +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +ACTION:AUDIO +END:VALARM +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970614T190000Z +UID:0981234-1234234-23@example.com +DTSTART;VALUE=DATE:19970714 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY: Bastille Day +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T2000000Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE; + CUTYPE=ROOM:Mailto:Conf@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T190000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +DTSTAMP:19970613T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T190000Z +DTEND:19970701T200000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +DTSTAMP:19970611T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:COUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +DTSTAMP:19970612T190000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +COMMENT:This time works much better and I think the big conference + room is too big +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +SUMMARY:Discuss the Merits of the election results - changed to + meet B's schedule +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:DECLINECOUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +COMMENT:Sorry\, I cannot change this meeting time +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +ATTENDEE;RSVP=TRUE; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED- + FROM="Mailto:C@example.com":Mailto:E@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED; + DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com +COMMENT:Sorry\, I will be out of town at that time. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DECLINED; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +SUMMARY:Phone Conference +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +DTSTAMP:19970614T200000Z +COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR + INVITATION +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +COMMENT:Mr. B cannot attend. It's raining. Lets cancel. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CANCELLED +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:mailto:B@example.com +COMMENT:You're off the hook for this meeting +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970613T193000Z +SEQUENCE:1 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +ATTENDEE;CUTYPE=ROOM:CR_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT; + RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:2 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +RRULE:FREQ=WEEKLY +SUMMARY:Phone Conference +UID:123456@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +METHOD:PUBLISH +BEGIN:VFREEBUSY +DTSTAMP:19980101T124100Z +ORGANIZER:MAILTO:A@Example.com +DTSTART:19980101T124200Z +DTEND:19980107T124200Z +FREEBUSY:19980101T180000Z/19980101T190000Z +FREEBUSY:19980103T020000Z/19980103T050000Z +FREEBUSY:19980107T020000Z/19980107T050000Z +FREEBUSY:19980113T000000Z/19980113T010000Z +FREEBUSY:19980115T190000Z/19980115T200000Z +FREEBUSY:19980115T220000Z/19980115T230000Z +FREEBUSY:19980116T013000Z/19980116T043000Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T080000Z +DTEND:19970701T200000 +UID:calsrv.example.com-873970198738777@example.com +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:A@example.com +ATTENDEE:Mailto:B@example.com +DTSTART:19970701T080000Z +DTEND:19970701T200000Z +UID:calsrv.example.com-873970198738777@example.com +FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M +DTSTAMP:19970613T190030Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-SanJose +TZURL:http://zones.stds_r_us.net/tz/America-SanJose +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:A@example.COM +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:B@example.fr +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:c@example.jp +DTSTAMP:19970613T190030Z +DTSTART;TZID=America-SanJose:19970701T140000 +DTEND;TZID=America-SanJose:19970701T150000 +RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU +RDATE;TZID=America-SanJose:19970910T140000 +EXDATE;TZID=America-SanJose:19970909T140000 +EXDATE;TZID=America-SanJose:19971028T140000 +SUMMARY:Weekly Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +LOCATION:Conference Call +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1com +RECURRENCE-ID:19970701T210000Z +SEQUENCE:1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970703T210000Z +DTEND:19970703T220000Z +LOCATION:Conference Call +DTSTAMP:19970626T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +RECURRENCE-ID:19970801T210000Z +SEQUENCE:2 +STATUS:CANCELLED +DTSTAMP:19970721T093000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DTSTAMP:19970721T103000Z +STATUS:CANCELLED +SEQUENCE:3 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID;RANGE=THISANDFUTURE:19970901T210000Z +SEQUENCE:3 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Discussion +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970901T210000Z +DTEND:19970901T220000Z +LOCATION:Building 32\, Microsoft\, Seattle\, WA +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T210000Z +DTEND:19970715T220000Z +LOCATION:Conference Call +DTSTAMP:19970629T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +LOCATION:The White Room +DTSTAMP:19980301T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The Usual conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU,TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The White Room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RDATE:19980304T180000Z +RDATE:19980311T180000Z +RDATE:19980318T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:1 +RECURRENCE-ID:19980311T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980311T180000Z +DTSTAMP:19980306T193000Z +LOCATION:The Small conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980315T180000Z +DTEND:19980315T200000Z +DTSTAMP:19980307T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +RDATE:19980304T180000Z +RDATE:19980311T160000Z +RDATE:19980315T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +SEQUENCE:2 +RECURRENCE-ID:19980311T160000Z +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980304T180000Z +DTSTAMP:19980306T193000Z +ORGANIZER:Mailto:A@example.com +LOCATION:The Small conference room +UID:guid-1@host1.com +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:COUNTER +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID:19970715T210000Z +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T220000Z +DTEND:19970715T230000Z +LOCATION:Conference Call +COMMENT:May we bump this by an hour? I have a conflict +DTSTAMP:19970629T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +DTSTAMP:19970602T094000Z +LOCATION:Conference Call +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single + event;RRULE +REQUEST-STATUS:3.0;Invalid Property Name;FOO +UID:guid-1@host1.com +SEQUENCE:0 +DTSTAMP:19970603T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:Needs Action +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +UID:calsrv.example.com-873970198738777-00@example.com +COMMENT:I'll send you my input by e-mail +SEQUENCE:0 +DTSTAMP:19970717T203000Z +REQUEST-STATUS:2.0;Success +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +SUMMARY:Create the requirements document +PRIORITY:1 +SEQUENCE:0 +STATUS:IN-PROCESS +DTSTART:19970701T170000Z +DTSTAMP:19970717T230000Z +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +REQUEST-STATUS:2.0 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +REQUEST-STATUS:2.0 +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;PARTSTAT=IN-PROCESS;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:1 +DTSTAMP:19970718T100000Z +STATUS:IN-PROGRESS +PERCENT-COMPLETE:40 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR +DTSTART:19980101T100000 +DUE:19980103T100000 +SUMMARY:Send Status Reports to Area Managers +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:NEEDS-ACTION +PRIORITY:1 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +RECURRENCE-ID:19980101T170000Z +SEQUENCE:1 +ORGANIZER:MAILTO:A@Example.com +REQUEST-STATUS:2.0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VJOURNAL +DTSTART:19971002T200000Z +DTSTAMP:19971002T200000Z +ORGANIZER:MAILTO:A@Example.com +SUMMARY:Phone conference minutes +DESCRIPTION:The editors meeting was held on October 1\, 1997. + Details are in the attached document. +UID:0981234-1234234-2410@example.com +RELATED-TO:0981234-1234234-2402-35@example.com +ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +UID: guid-1-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:acme-12345@host1.com +SEQUENCE:3 +RRULE:FREQ=WEEKLY +RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +DESCRIPTION:IETF-C&S Conference Call +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970801T210000Z +DTEND:19970801T220000Z +RECURRENCE-ID:19970809T210000Z +DTSTAMP:19970726T083000 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +UID:acme-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTART:19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +END:VEVENT +END:VCALENDAR + +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123402@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970401T163000Z +DTEND:19970402T010000Z +SUMMARY:Laurel is in sensitivity awareness class. +CLASS:PUBLIC +CATEGORIES:BUSINESS,HUMAN RESOURCES +TRANSP:TRANSPARENT +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123403@host.com +DTSTAMP:19970901T1300Z +DTSTART:19971102 +SUMMARY:Our Blissful Anniversary +CLASS:CONFIDENTIAL +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +RRULE:FREQ=YEARLY +END:VEVENT + +BEGIN:VTODO +UID:19970901T130000Z-123404@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970415T133000Z +DUE:19970416T045959Z +SUMMARY:1996 Income Tax Preparation +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +STATUS:NEEDS-ACTION +END:VTODO +BEGIN:VJOURNAL +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T1300Z +DTSTART;VALUE=DATE:19970317 +SUMMARY:Staff meeting minutes +DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa + and Bob. Aurora project plans were reviewed. There is currently + no budget reserves for this project. Lisa will escalate to + management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative called + to discuss new printer. Promised to get us a demo by Friday.\n + 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. + Is looking into a loaner car. 654-2323 (tel). +END:VJOURNAL +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +DTSTAMP:19970901T083000Z +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTAMP:19970901T100000Z +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M +URL:http://host2.com/pub/busy/jpublic-01.ifb +COMMENT:This iCalendar file contains busy time information for + the next three months. +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19971026T020000 +RDATE:19971026T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19971026T020000 +RDATE:19970406T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +BEGIN:DAYLIGHT +DTSTART:19990424T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +REPEAT:4 +DURATION:PT15M +ACTION:AUDIO +ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +REPEAT:2 +DURATION:PT15M +ACTION:DISPLAY +DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. +END:VALARM +BEGIN:VALARM +TRIGGER:-P2D +ACTION:EMAIL +ATTENDEE:MAILTO:john_doe@host.com +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. +ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen + da.doc +END:VALARM +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +REPEAT:23 +DURATION:PT1H +ACTION:PROCEDURE +ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- + procs/felizano.exe +END:VALARM +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + MAILTO:employee-A@host.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTART;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T1200Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ + conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER:19980403T120000 +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- + files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ, Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTART:19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +END:VEVENT +END:VCALENDAR + +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123402@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970401T163000Z +DTEND:19970402T010000Z +SUMMARY:Laurel is in sensitivity awareness class. +CLASS:PUBLIC +CATEGORIES:BUSINESS,HUMAN RESOURCES +TRANSP:TRANSPARENT +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123403@host.com +DTSTAMP:19970901T1300Z +DTSTART:19971102 +SUMMARY:Our Blissful Anniversary +CLASS:CONFIDENTIAL +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +RRULE:FREQ=YEARLY +END:VEVENT + +BEGIN:VTODO +UID:19970901T130000Z-123404@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970415T133000Z +DUE:19970416T045959Z +SUMMARY:1996 Income Tax Preparation +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +STATUS:NEEDS-ACTION +END:VTODO +BEGIN:VJOURNAL +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T1300Z +DTSTART;VALUE=DATE:19970317 +SUMMARY:Staff meeting minutes +DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa + and Bob. Aurora project plans were reviewed. There is currently + no budget reserves for this project. Lisa will escalate to + management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative called + to discuss new printer. Promised to get us a demo by Friday.\n + 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. + Is looking into a loaner car. 654-2323 (tel). +END:VJOURNAL +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +DTSTAMP:19970901T083000Z +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTAMP:19970901T100000Z +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M +URL:http://host2.com/pub/busy/jpublic-01.ifb +COMMENT:This iCalendar file contains busy time information for + the next three months. +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19971026T020000 +RDATE:19971026T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19971026T020000 +RDATE:19970406T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +BEGIN:DAYLIGHT +DTSTART:19990424T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +REPEAT:4 +DURATION:PT15M +ACTION:AUDIO +ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +REPEAT:2 +DURATION:PT15M +ACTION:DISPLAY +DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. +END:VALARM +BEGIN:VALARM +TRIGGER:-P2D +ACTION:EMAIL +ATTENDEE:MAILTO:john_doe@host.com +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. +ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen + da.doc +END:VALARM +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +REPEAT:23 +DURATION:PT1H +ACTION:PROCEDURE +ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- + procs/felizano.exe +END:VALARM +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + MAILTO:employee-A@host.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTART;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T1200Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ + conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER:19980403T120000 +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- + files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ, Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTART:19970701T200000Z +DTSTAMP:19970611T190000Z +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970612T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SEQUENCE:1 +UID:0981234-1234234-23@example.com +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +COMMENT:DUKES forfeit the game +SEQUENCE:2 +UID:0981234-1234234-23@example.com +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +CALSCALE:GREGORIAN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-Chicago +TZURL:http://zones.stds_r_us.net/tz/America-Chicago +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +ATTACH:http://www.dukes.com/ +CATEGORIES:SPORTS EVENT,ENTERTAINMENT +CLASS:PRIVATE +DESCRIPTION:MIDWAY STADIUM\n + Big time game. MUST see.\n + Expected duration:2 hours\n +DTEND;TZID=America-Chicago:19970701T180000 +DTSTART;TZID=America-Chicago:19970702T160000 +DTSTAMP:19970614T190000Z +STATUS:CONFIRMED +LOCATION;VALUE=URI:http://www.midwaystadium.com/ +PRIORITY:2 +RESOURCES:SCOREBOARD +SEQUENCE:3 +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +RELATED-TO:0981234-1234234-14@example.com +BEGIN:VALARM +TRIGGER:-PT2H +ACTION:DISPLAY +DESCRIPTION:You should be leaving for the game now. +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +ACTION:AUDIO +END:VALARM +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970614T190000Z +UID:0981234-1234234-23@example.com +DTSTART;VALUE=DATE:19970714 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY: Bastille Day +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T2000000Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE; + CUTYPE=ROOM:Mailto:Conf@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T190000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +DTSTAMP:19970613T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T190000Z +DTEND:19970701T200000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +DTSTAMP:19970611T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:COUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +DTSTAMP:19970612T190000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +COMMENT:This time works much better and I think the big conference + room is too big +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +SUMMARY:Discuss the Merits of the election results - changed to + meet B's schedule +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:DECLINECOUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +COMMENT:Sorry\, I cannot change this meeting time +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +ATTENDEE;RSVP=TRUE; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED- + FROM="Mailto:C@example.com":Mailto:E@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED; + DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com +COMMENT:Sorry\, I will be out of town at that time. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DECLINED; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +SUMMARY:Phone Conference +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +DTSTAMP:19970614T200000Z +COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR + INVITATION +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +COMMENT:Mr. B cannot attend. It's raining. Lets cancel. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CANCELLED +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:mailto:B@example.com +COMMENT:You're off the hook for this meeting +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970613T193000Z +SEQUENCE:1 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +ATTENDEE;CUTYPE=ROOM:CR_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT; + RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:2 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +RRULE:FREQ=WEEKLY +SUMMARY:Phone Conference +UID:123456@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +METHOD:PUBLISH +BEGIN:VFREEBUSY +DTSTAMP:19980101T124100Z +ORGANIZER:MAILTO:A@Example.com +DTSTART:19980101T124200Z +DTEND:19980107T124200Z +FREEBUSY:19980101T180000Z/19980101T190000Z +FREEBUSY:19980103T020000Z/19980103T050000Z +FREEBUSY:19980107T020000Z/19980107T050000Z +FREEBUSY:19980113T000000Z/19980113T010000Z +FREEBUSY:19980115T190000Z/19980115T200000Z +FREEBUSY:19980115T220000Z/19980115T230000Z +FREEBUSY:19980116T013000Z/19980116T043000Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T080000Z +DTEND:19970701T200000 +UID:calsrv.example.com-873970198738777@example.com +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:A@example.com +ATTENDEE:Mailto:B@example.com +DTSTART:19970701T080000Z +DTEND:19970701T200000Z +UID:calsrv.example.com-873970198738777@example.com +FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M +DTSTAMP:19970613T190030Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-SanJose +TZURL:http://zones.stds_r_us.net/tz/America-SanJose +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:A@example.COM +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:B@example.fr +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:c@example.jp +DTSTAMP:19970613T190030Z +DTSTART;TZID=America-SanJose:19970701T140000 +DTEND;TZID=America-SanJose:19970701T150000 +RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU +RDATE;TZID=America-SanJose:19970910T140000 +EXDATE;TZID=America-SanJose:19970909T140000 +EXDATE;TZID=America-SanJose:19971028T140000 +SUMMARY:Weekly Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +LOCATION:Conference Call +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1com +RECURRENCE-ID:19970701T210000Z +SEQUENCE:1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970703T210000Z +DTEND:19970703T220000Z +LOCATION:Conference Call +DTSTAMP:19970626T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +RECURRENCE-ID:19970801T210000Z +SEQUENCE:2 +STATUS:CANCELLED +DTSTAMP:19970721T093000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DTSTAMP:19970721T103000Z +STATUS:CANCELLED +SEQUENCE:3 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID;RANGE=THISANDFUTURE:19970901T210000Z +SEQUENCE:3 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Discussion +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970901T210000Z +DTEND:19970901T220000Z +LOCATION:Building 32\, Microsoft\, Seattle\, WA +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T210000Z +DTEND:19970715T220000Z +LOCATION:Conference Call +DTSTAMP:19970629T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +LOCATION:The White Room +DTSTAMP:19980301T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The Usual conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU,TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The White Room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RDATE:19980304T180000Z +RDATE:19980311T180000Z +RDATE:19980318T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:1 +RECURRENCE-ID:19980311T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980311T180000Z +DTSTAMP:19980306T193000Z +LOCATION:The Small conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980315T180000Z +DTEND:19980315T200000Z +DTSTAMP:19980307T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +RDATE:19980304T180000Z +RDATE:19980311T160000Z +RDATE:19980315T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +SEQUENCE:2 +RECURRENCE-ID:19980311T160000Z +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980304T180000Z +DTSTAMP:19980306T193000Z +ORGANIZER:Mailto:A@example.com +LOCATION:The Small conference room +UID:guid-1@host1.com +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:COUNTER +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID:19970715T210000Z +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T220000Z +DTEND:19970715T230000Z +LOCATION:Conference Call +COMMENT:May we bump this by an hour? I have a conflict +DTSTAMP:19970629T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +DTSTAMP:19970602T094000Z +LOCATION:Conference Call +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single + event;RRULE +REQUEST-STATUS:3.0;Invalid Property Name;FOO +UID:guid-1@host1.com +SEQUENCE:0 +DTSTAMP:19970603T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:Needs Action +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +UID:calsrv.example.com-873970198738777-00@example.com +COMMENT:I'll send you my input by e-mail +SEQUENCE:0 +DTSTAMP:19970717T203000Z +REQUEST-STATUS:2.0;Success +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +SUMMARY:Create the requirements document +PRIORITY:1 +SEQUENCE:0 +STATUS:IN-PROCESS +DTSTART:19970701T170000Z +DTSTAMP:19970717T230000Z +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +REQUEST-STATUS:2.0 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +REQUEST-STATUS:2.0 +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;PARTSTAT=IN-PROCESS;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:1 +DTSTAMP:19970718T100000Z +STATUS:IN-PROGRESS +PERCENT-COMPLETE:40 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR +DTSTART:19980101T100000 +DUE:19980103T100000 +SUMMARY:Send Status Reports to Area Managers +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:NEEDS-ACTION +PRIORITY:1 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +RECURRENCE-ID:19980101T170000Z +SEQUENCE:1 +ORGANIZER:MAILTO:A@Example.com +REQUEST-STATUS:2.0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VJOURNAL +DTSTART:19971002T200000Z +DTSTAMP:19971002T200000Z +ORGANIZER:MAILTO:A@Example.com +SUMMARY:Phone conference minutes +DESCRIPTION:The editors meeting was held on October 1\, 1997. + Details are in the attached document. +UID:0981234-1234234-2410@example.com +RELATED-TO:0981234-1234234-2402-35@example.com +ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +UID: guid-1-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:acme-12345@host1.com +SEQUENCE:3 +RRULE:FREQ=WEEKLY +RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +DESCRIPTION:IETF-C&S Conference Call +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970801T210000Z +DTEND:19970801T220000Z +RECURRENCE-ID:19970809T210000Z +DTSTAMP:19970726T083000 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +UID:acme-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTART:19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +END:VEVENT +END:VCALENDAR + +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123402@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970401T163000Z +DTEND:19970402T010000Z +SUMMARY:Laurel is in sensitivity awareness class. +CLASS:PUBLIC +CATEGORIES:BUSINESS,HUMAN RESOURCES +TRANSP:TRANSPARENT +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123403@host.com +DTSTAMP:19970901T1300Z +DTSTART:19971102 +SUMMARY:Our Blissful Anniversary +CLASS:CONFIDENTIAL +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +RRULE:FREQ=YEARLY +END:VEVENT + +BEGIN:VTODO +UID:19970901T130000Z-123404@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970415T133000Z +DUE:19970416T045959Z +SUMMARY:1996 Income Tax Preparation +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +STATUS:NEEDS-ACTION +END:VTODO +BEGIN:VJOURNAL +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T1300Z +DTSTART;VALUE=DATE:19970317 +SUMMARY:Staff meeting minutes +DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa + and Bob. Aurora project plans were reviewed. There is currently + no budget reserves for this project. Lisa will escalate to + management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative called + to discuss new printer. Promised to get us a demo by Friday.\n + 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. + Is looking into a loaner car. 654-2323 (tel). +END:VJOURNAL +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +DTSTAMP:19970901T083000Z +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTAMP:19970901T100000Z +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M +URL:http://host2.com/pub/busy/jpublic-01.ifb +COMMENT:This iCalendar file contains busy time information for + the next three months. +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19971026T020000 +RDATE:19971026T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19971026T020000 +RDATE:19970406T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +BEGIN:DAYLIGHT +DTSTART:19990424T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +REPEAT:4 +DURATION:PT15M +ACTION:AUDIO +ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +REPEAT:2 +DURATION:PT15M +ACTION:DISPLAY +DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. +END:VALARM +BEGIN:VALARM +TRIGGER:-P2D +ACTION:EMAIL +ATTENDEE:MAILTO:john_doe@host.com +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. +ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen + da.doc +END:VALARM +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +REPEAT:23 +DURATION:PT1H +ACTION:PROCEDURE +ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- + procs/felizano.exe +END:VALARM +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + MAILTO:employee-A@host.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTART;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T1200Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ + conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER:19980403T120000 +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- + files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ, Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTART:19970701T200000Z +DTSTAMP:19970611T190000Z +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970612T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SEQUENCE:1 +UID:0981234-1234234-23@example.com +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +COMMENT:DUKES forfeit the game +SEQUENCE:2 +UID:0981234-1234234-23@example.com +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +CALSCALE:GREGORIAN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-Chicago +TZURL:http://zones.stds_r_us.net/tz/America-Chicago +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +ATTACH:http://www.dukes.com/ +CATEGORIES:SPORTS EVENT,ENTERTAINMENT +CLASS:PRIVATE +DESCRIPTION:MIDWAY STADIUM\n + Big time game. MUST see.\n + Expected duration:2 hours\n +DTEND;TZID=America-Chicago:19970701T180000 +DTSTART;TZID=America-Chicago:19970702T160000 +DTSTAMP:19970614T190000Z +STATUS:CONFIRMED +LOCATION;VALUE=URI:http://www.midwaystadium.com/ +PRIORITY:2 +RESOURCES:SCOREBOARD +SEQUENCE:3 +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +RELATED-TO:0981234-1234234-14@example.com +BEGIN:VALARM +TRIGGER:-PT2H +ACTION:DISPLAY +DESCRIPTION:You should be leaving for the game now. +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +ACTION:AUDIO +END:VALARM +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970614T190000Z +UID:0981234-1234234-23@example.com +DTSTART;VALUE=DATE:19970714 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY: Bastille Day +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T2000000Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE; + CUTYPE=ROOM:Mailto:Conf@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T190000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +DTSTAMP:19970613T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T190000Z +DTEND:19970701T200000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +DTSTAMP:19970611T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:COUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +DTSTAMP:19970612T190000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +COMMENT:This time works much better and I think the big conference + room is too big +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +SUMMARY:Discuss the Merits of the election results - changed to + meet B's schedule +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:DECLINECOUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +COMMENT:Sorry\, I cannot change this meeting time +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +ATTENDEE;RSVP=TRUE; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED- + FROM="Mailto:C@example.com":Mailto:E@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED; + DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com +COMMENT:Sorry\, I will be out of town at that time. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DECLINED; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +SUMMARY:Phone Conference +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +DTSTAMP:19970614T200000Z +COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR + INVITATION +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +COMMENT:Mr. B cannot attend. It's raining. Lets cancel. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CANCELLED +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:mailto:B@example.com +COMMENT:You're off the hook for this meeting +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970613T193000Z +SEQUENCE:1 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +ATTENDEE;CUTYPE=ROOM:CR_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT; + RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:2 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +RRULE:FREQ=WEEKLY +SUMMARY:Phone Conference +UID:123456@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +METHOD:PUBLISH +BEGIN:VFREEBUSY +DTSTAMP:19980101T124100Z +ORGANIZER:MAILTO:A@Example.com +DTSTART:19980101T124200Z +DTEND:19980107T124200Z +FREEBUSY:19980101T180000Z/19980101T190000Z +FREEBUSY:19980103T020000Z/19980103T050000Z +FREEBUSY:19980107T020000Z/19980107T050000Z +FREEBUSY:19980113T000000Z/19980113T010000Z +FREEBUSY:19980115T190000Z/19980115T200000Z +FREEBUSY:19980115T220000Z/19980115T230000Z +FREEBUSY:19980116T013000Z/19980116T043000Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T080000Z +DTEND:19970701T200000 +UID:calsrv.example.com-873970198738777@example.com +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:A@example.com +ATTENDEE:Mailto:B@example.com +DTSTART:19970701T080000Z +DTEND:19970701T200000Z +UID:calsrv.example.com-873970198738777@example.com +FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M +DTSTAMP:19970613T190030Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-SanJose +TZURL:http://zones.stds_r_us.net/tz/America-SanJose +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:A@example.COM +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:B@example.fr +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:c@example.jp +DTSTAMP:19970613T190030Z +DTSTART;TZID=America-SanJose:19970701T140000 +DTEND;TZID=America-SanJose:19970701T150000 +RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU +RDATE;TZID=America-SanJose:19970910T140000 +EXDATE;TZID=America-SanJose:19970909T140000 +EXDATE;TZID=America-SanJose:19971028T140000 +SUMMARY:Weekly Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +LOCATION:Conference Call +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1com +RECURRENCE-ID:19970701T210000Z +SEQUENCE:1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970703T210000Z +DTEND:19970703T220000Z +LOCATION:Conference Call +DTSTAMP:19970626T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +RECURRENCE-ID:19970801T210000Z +SEQUENCE:2 +STATUS:CANCELLED +DTSTAMP:19970721T093000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DTSTAMP:19970721T103000Z +STATUS:CANCELLED +SEQUENCE:3 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID;RANGE=THISANDFUTURE:19970901T210000Z +SEQUENCE:3 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Discussion +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970901T210000Z +DTEND:19970901T220000Z +LOCATION:Building 32\, Microsoft\, Seattle\, WA +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T210000Z +DTEND:19970715T220000Z +LOCATION:Conference Call +DTSTAMP:19970629T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +LOCATION:The White Room +DTSTAMP:19980301T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The Usual conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU,TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The White Room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RDATE:19980304T180000Z +RDATE:19980311T180000Z +RDATE:19980318T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:1 +RECURRENCE-ID:19980311T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980311T180000Z +DTSTAMP:19980306T193000Z +LOCATION:The Small conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980315T180000Z +DTEND:19980315T200000Z +DTSTAMP:19980307T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +RDATE:19980304T180000Z +RDATE:19980311T160000Z +RDATE:19980315T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +SEQUENCE:2 +RECURRENCE-ID:19980311T160000Z +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980304T180000Z +DTSTAMP:19980306T193000Z +ORGANIZER:Mailto:A@example.com +LOCATION:The Small conference room +UID:guid-1@host1.com +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:COUNTER +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID:19970715T210000Z +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T220000Z +DTEND:19970715T230000Z +LOCATION:Conference Call +COMMENT:May we bump this by an hour? I have a conflict +DTSTAMP:19970629T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +DTSTAMP:19970602T094000Z +LOCATION:Conference Call +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single + event;RRULE +REQUEST-STATUS:3.0;Invalid Property Name;FOO +UID:guid-1@host1.com +SEQUENCE:0 +DTSTAMP:19970603T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:Needs Action +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +UID:calsrv.example.com-873970198738777-00@example.com +COMMENT:I'll send you my input by e-mail +SEQUENCE:0 +DTSTAMP:19970717T203000Z +REQUEST-STATUS:2.0;Success +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +SUMMARY:Create the requirements document +PRIORITY:1 +SEQUENCE:0 +STATUS:IN-PROCESS +DTSTART:19970701T170000Z +DTSTAMP:19970717T230000Z +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +REQUEST-STATUS:2.0 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +REQUEST-STATUS:2.0 +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;PARTSTAT=IN-PROCESS;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:1 +DTSTAMP:19970718T100000Z +STATUS:IN-PROGRESS +PERCENT-COMPLETE:40 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR +DTSTART:19980101T100000 +DUE:19980103T100000 +SUMMARY:Send Status Reports to Area Managers +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:NEEDS-ACTION +PRIORITY:1 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +RECURRENCE-ID:19980101T170000Z +SEQUENCE:1 +ORGANIZER:MAILTO:A@Example.com +REQUEST-STATUS:2.0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VJOURNAL +DTSTART:19971002T200000Z +DTSTAMP:19971002T200000Z +ORGANIZER:MAILTO:A@Example.com +SUMMARY:Phone conference minutes +DESCRIPTION:The editors meeting was held on October 1\, 1997. + Details are in the attached document. +UID:0981234-1234234-2410@example.com +RELATED-TO:0981234-1234234-2402-35@example.com +ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +UID: guid-1-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:acme-12345@host1.com +SEQUENCE:3 +RRULE:FREQ=WEEKLY +RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +DESCRIPTION:IETF-C&S Conference Call +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970801T210000Z +DTEND:19970801T220000Z +RECURRENCE-ID:19970809T210000Z +DTSTAMP:19970726T083000 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +UID:acme-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTART:19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +END:VEVENT +END:VCALENDAR + +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123402@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970401T163000Z +DTEND:19970402T010000Z +SUMMARY:Laurel is in sensitivity awareness class. +CLASS:PUBLIC +CATEGORIES:BUSINESS,HUMAN RESOURCES +TRANSP:TRANSPARENT +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123403@host.com +DTSTAMP:19970901T1300Z +DTSTART:19971102 +SUMMARY:Our Blissful Anniversary +CLASS:CONFIDENTIAL +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +RRULE:FREQ=YEARLY +END:VEVENT + +BEGIN:VTODO +UID:19970901T130000Z-123404@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970415T133000Z +DUE:19970416T045959Z +SUMMARY:1996 Income Tax Preparation +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +STATUS:NEEDS-ACTION +END:VTODO +BEGIN:VJOURNAL +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T1300Z +DTSTART;VALUE=DATE:19970317 +SUMMARY:Staff meeting minutes +DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa + and Bob. Aurora project plans were reviewed. There is currently + no budget reserves for this project. Lisa will escalate to + management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative called + to discuss new printer. Promised to get us a demo by Friday.\n + 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. + Is looking into a loaner car. 654-2323 (tel). +END:VJOURNAL +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +DTSTAMP:19970901T083000Z +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTAMP:19970901T100000Z +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M +URL:http://host2.com/pub/busy/jpublic-01.ifb +COMMENT:This iCalendar file contains busy time information for + the next three months. +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19971026T020000 +RDATE:19971026T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19971026T020000 +RDATE:19970406T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +BEGIN:DAYLIGHT +DTSTART:19990424T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +REPEAT:4 +DURATION:PT15M +ACTION:AUDIO +ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +REPEAT:2 +DURATION:PT15M +ACTION:DISPLAY +DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. +END:VALARM +BEGIN:VALARM +TRIGGER:-P2D +ACTION:EMAIL +ATTENDEE:MAILTO:john_doe@host.com +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. +ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen + da.doc +END:VALARM +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +REPEAT:23 +DURATION:PT1H +ACTION:PROCEDURE +ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- + procs/felizano.exe +END:VALARM +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + MAILTO:employee-A@host.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTART;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T1200Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ + conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER:19980403T120000 +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- + files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ, Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTART:19970701T200000Z +DTSTAMP:19970611T190000Z +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970612T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SEQUENCE:1 +UID:0981234-1234234-23@example.com +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +COMMENT:DUKES forfeit the game +SEQUENCE:2 +UID:0981234-1234234-23@example.com +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +CALSCALE:GREGORIAN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-Chicago +TZURL:http://zones.stds_r_us.net/tz/America-Chicago +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +ATTACH:http://www.dukes.com/ +CATEGORIES:SPORTS EVENT,ENTERTAINMENT +CLASS:PRIVATE +DESCRIPTION:MIDWAY STADIUM\n + Big time game. MUST see.\n + Expected duration:2 hours\n +DTEND;TZID=America-Chicago:19970701T180000 +DTSTART;TZID=America-Chicago:19970702T160000 +DTSTAMP:19970614T190000Z +STATUS:CONFIRMED +LOCATION;VALUE=URI:http://www.midwaystadium.com/ +PRIORITY:2 +RESOURCES:SCOREBOARD +SEQUENCE:3 +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +RELATED-TO:0981234-1234234-14@example.com +BEGIN:VALARM +TRIGGER:-PT2H +ACTION:DISPLAY +DESCRIPTION:You should be leaving for the game now. +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +ACTION:AUDIO +END:VALARM +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970614T190000Z +UID:0981234-1234234-23@example.com +DTSTART;VALUE=DATE:19970714 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY: Bastille Day +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T2000000Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE; + CUTYPE=ROOM:Mailto:Conf@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T190000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +DTSTAMP:19970613T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T190000Z +DTEND:19970701T200000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +DTSTAMP:19970611T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:COUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +DTSTAMP:19970612T190000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +COMMENT:This time works much better and I think the big conference + room is too big +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +SUMMARY:Discuss the Merits of the election results - changed to + meet B's schedule +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:DECLINECOUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +COMMENT:Sorry\, I cannot change this meeting time +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +ATTENDEE;RSVP=TRUE; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED- + FROM="Mailto:C@example.com":Mailto:E@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED; + DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com +COMMENT:Sorry\, I will be out of town at that time. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DECLINED; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +SUMMARY:Phone Conference +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +DTSTAMP:19970614T200000Z +COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR + INVITATION +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +COMMENT:Mr. B cannot attend. It's raining. Lets cancel. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CANCELLED +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:mailto:B@example.com +COMMENT:You're off the hook for this meeting +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970613T193000Z +SEQUENCE:1 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +ATTENDEE;CUTYPE=ROOM:CR_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT; + RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:2 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +RRULE:FREQ=WEEKLY +SUMMARY:Phone Conference +UID:123456@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +METHOD:PUBLISH +BEGIN:VFREEBUSY +DTSTAMP:19980101T124100Z +ORGANIZER:MAILTO:A@Example.com +DTSTART:19980101T124200Z +DTEND:19980107T124200Z +FREEBUSY:19980101T180000Z/19980101T190000Z +FREEBUSY:19980103T020000Z/19980103T050000Z +FREEBUSY:19980107T020000Z/19980107T050000Z +FREEBUSY:19980113T000000Z/19980113T010000Z +FREEBUSY:19980115T190000Z/19980115T200000Z +FREEBUSY:19980115T220000Z/19980115T230000Z +FREEBUSY:19980116T013000Z/19980116T043000Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T080000Z +DTEND:19970701T200000 +UID:calsrv.example.com-873970198738777@example.com +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:A@example.com +ATTENDEE:Mailto:B@example.com +DTSTART:19970701T080000Z +DTEND:19970701T200000Z +UID:calsrv.example.com-873970198738777@example.com +FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M +DTSTAMP:19970613T190030Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-SanJose +TZURL:http://zones.stds_r_us.net/tz/America-SanJose +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:A@example.COM +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:B@example.fr +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:c@example.jp +DTSTAMP:19970613T190030Z +DTSTART;TZID=America-SanJose:19970701T140000 +DTEND;TZID=America-SanJose:19970701T150000 +RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU +RDATE;TZID=America-SanJose:19970910T140000 +EXDATE;TZID=America-SanJose:19970909T140000 +EXDATE;TZID=America-SanJose:19971028T140000 +SUMMARY:Weekly Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +LOCATION:Conference Call +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1com +RECURRENCE-ID:19970701T210000Z +SEQUENCE:1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970703T210000Z +DTEND:19970703T220000Z +LOCATION:Conference Call +DTSTAMP:19970626T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +RECURRENCE-ID:19970801T210000Z +SEQUENCE:2 +STATUS:CANCELLED +DTSTAMP:19970721T093000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DTSTAMP:19970721T103000Z +STATUS:CANCELLED +SEQUENCE:3 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID;RANGE=THISANDFUTURE:19970901T210000Z +SEQUENCE:3 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Discussion +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970901T210000Z +DTEND:19970901T220000Z +LOCATION:Building 32\, Microsoft\, Seattle\, WA +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T210000Z +DTEND:19970715T220000Z +LOCATION:Conference Call +DTSTAMP:19970629T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +LOCATION:The White Room +DTSTAMP:19980301T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The Usual conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU,TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The White Room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RDATE:19980304T180000Z +RDATE:19980311T180000Z +RDATE:19980318T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:1 +RECURRENCE-ID:19980311T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980311T180000Z +DTSTAMP:19980306T193000Z +LOCATION:The Small conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980315T180000Z +DTEND:19980315T200000Z +DTSTAMP:19980307T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +RDATE:19980304T180000Z +RDATE:19980311T160000Z +RDATE:19980315T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +SEQUENCE:2 +RECURRENCE-ID:19980311T160000Z +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980304T180000Z +DTSTAMP:19980306T193000Z +ORGANIZER:Mailto:A@example.com +LOCATION:The Small conference room +UID:guid-1@host1.com +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:COUNTER +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID:19970715T210000Z +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T220000Z +DTEND:19970715T230000Z +LOCATION:Conference Call +COMMENT:May we bump this by an hour? I have a conflict +DTSTAMP:19970629T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +DTSTAMP:19970602T094000Z +LOCATION:Conference Call +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single + event;RRULE +REQUEST-STATUS:3.0;Invalid Property Name;FOO +UID:guid-1@host1.com +SEQUENCE:0 +DTSTAMP:19970603T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:Needs Action +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +UID:calsrv.example.com-873970198738777-00@example.com +COMMENT:I'll send you my input by e-mail +SEQUENCE:0 +DTSTAMP:19970717T203000Z +REQUEST-STATUS:2.0;Success +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +SUMMARY:Create the requirements document +PRIORITY:1 +SEQUENCE:0 +STATUS:IN-PROCESS +DTSTART:19970701T170000Z +DTSTAMP:19970717T230000Z +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +REQUEST-STATUS:2.0 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +REQUEST-STATUS:2.0 +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;PARTSTAT=IN-PROCESS;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:1 +DTSTAMP:19970718T100000Z +STATUS:IN-PROGRESS +PERCENT-COMPLETE:40 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR +DTSTART:19980101T100000 +DUE:19980103T100000 +SUMMARY:Send Status Reports to Area Managers +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:NEEDS-ACTION +PRIORITY:1 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +RECURRENCE-ID:19980101T170000Z +SEQUENCE:1 +ORGANIZER:MAILTO:A@Example.com +REQUEST-STATUS:2.0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VJOURNAL +DTSTART:19971002T200000Z +DTSTAMP:19971002T200000Z +ORGANIZER:MAILTO:A@Example.com +SUMMARY:Phone conference minutes +DESCRIPTION:The editors meeting was held on October 1\, 1997. + Details are in the attached document. +UID:0981234-1234234-2410@example.com +RELATED-TO:0981234-1234234-2402-35@example.com +ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +UID: guid-1-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:acme-12345@host1.com +SEQUENCE:3 +RRULE:FREQ=WEEKLY +RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +DESCRIPTION:IETF-C&S Conference Call +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970801T210000Z +DTEND:19970801T220000Z +RECURRENCE-ID:19970809T210000Z +DTSTAMP:19970726T083000 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +UID:acme-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTART:19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +END:VEVENT +END:VCALENDAR + +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123402@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970401T163000Z +DTEND:19970402T010000Z +SUMMARY:Laurel is in sensitivity awareness class. +CLASS:PUBLIC +CATEGORIES:BUSINESS,HUMAN RESOURCES +TRANSP:TRANSPARENT +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123403@host.com +DTSTAMP:19970901T1300Z +DTSTART:19971102 +SUMMARY:Our Blissful Anniversary +CLASS:CONFIDENTIAL +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +RRULE:FREQ=YEARLY +END:VEVENT + +BEGIN:VTODO +UID:19970901T130000Z-123404@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970415T133000Z +DUE:19970416T045959Z +SUMMARY:1996 Income Tax Preparation +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +STATUS:NEEDS-ACTION +END:VTODO +BEGIN:VJOURNAL +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T1300Z +DTSTART;VALUE=DATE:19970317 +SUMMARY:Staff meeting minutes +DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa + and Bob. Aurora project plans were reviewed. There is currently + no budget reserves for this project. Lisa will escalate to + management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative called + to discuss new printer. Promised to get us a demo by Friday.\n + 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. + Is looking into a loaner car. 654-2323 (tel). +END:VJOURNAL +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +DTSTAMP:19970901T083000Z +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTAMP:19970901T100000Z +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M +URL:http://host2.com/pub/busy/jpublic-01.ifb +COMMENT:This iCalendar file contains busy time information for + the next three months. +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19971026T020000 +RDATE:19971026T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19971026T020000 +RDATE:19970406T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +BEGIN:DAYLIGHT +DTSTART:19990424T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +REPEAT:4 +DURATION:PT15M +ACTION:AUDIO +ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +REPEAT:2 +DURATION:PT15M +ACTION:DISPLAY +DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. +END:VALARM +BEGIN:VALARM +TRIGGER:-P2D +ACTION:EMAIL +ATTENDEE:MAILTO:john_doe@host.com +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. +ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen + da.doc +END:VALARM +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +REPEAT:23 +DURATION:PT1H +ACTION:PROCEDURE +ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- + procs/felizano.exe +END:VALARM +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + MAILTO:employee-A@host.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTART;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T1200Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ + conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER:19980403T120000 +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- + files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ, Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTART:19970701T200000Z +DTSTAMP:19970611T190000Z +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970612T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SEQUENCE:1 +UID:0981234-1234234-23@example.com +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +COMMENT:DUKES forfeit the game +SEQUENCE:2 +UID:0981234-1234234-23@example.com +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +CALSCALE:GREGORIAN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-Chicago +TZURL:http://zones.stds_r_us.net/tz/America-Chicago +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +ATTACH:http://www.dukes.com/ +CATEGORIES:SPORTS EVENT,ENTERTAINMENT +CLASS:PRIVATE +DESCRIPTION:MIDWAY STADIUM\n + Big time game. MUST see.\n + Expected duration:2 hours\n +DTEND;TZID=America-Chicago:19970701T180000 +DTSTART;TZID=America-Chicago:19970702T160000 +DTSTAMP:19970614T190000Z +STATUS:CONFIRMED +LOCATION;VALUE=URI:http://www.midwaystadium.com/ +PRIORITY:2 +RESOURCES:SCOREBOARD +SEQUENCE:3 +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +RELATED-TO:0981234-1234234-14@example.com +BEGIN:VALARM +TRIGGER:-PT2H +ACTION:DISPLAY +DESCRIPTION:You should be leaving for the game now. +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +ACTION:AUDIO +END:VALARM +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970614T190000Z +UID:0981234-1234234-23@example.com +DTSTART;VALUE=DATE:19970714 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY: Bastille Day +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T2000000Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE; + CUTYPE=ROOM:Mailto:Conf@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T190000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +DTSTAMP:19970613T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T190000Z +DTEND:19970701T200000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +DTSTAMP:19970611T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:COUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +DTSTAMP:19970612T190000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +COMMENT:This time works much better and I think the big conference + room is too big +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +SUMMARY:Discuss the Merits of the election results - changed to + meet B's schedule +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:DECLINECOUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +COMMENT:Sorry\, I cannot change this meeting time +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +ATTENDEE;RSVP=TRUE; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED- + FROM="Mailto:C@example.com":Mailto:E@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED; + DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com +COMMENT:Sorry\, I will be out of town at that time. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DECLINED; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +SUMMARY:Phone Conference +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +DTSTAMP:19970614T200000Z +COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR + INVITATION +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +COMMENT:Mr. B cannot attend. It's raining. Lets cancel. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CANCELLED +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:mailto:B@example.com +COMMENT:You're off the hook for this meeting +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970613T193000Z +SEQUENCE:1 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +ATTENDEE;CUTYPE=ROOM:CR_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT; + RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:2 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +RRULE:FREQ=WEEKLY +SUMMARY:Phone Conference +UID:123456@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +METHOD:PUBLISH +BEGIN:VFREEBUSY +DTSTAMP:19980101T124100Z +ORGANIZER:MAILTO:A@Example.com +DTSTART:19980101T124200Z +DTEND:19980107T124200Z +FREEBUSY:19980101T180000Z/19980101T190000Z +FREEBUSY:19980103T020000Z/19980103T050000Z +FREEBUSY:19980107T020000Z/19980107T050000Z +FREEBUSY:19980113T000000Z/19980113T010000Z +FREEBUSY:19980115T190000Z/19980115T200000Z +FREEBUSY:19980115T220000Z/19980115T230000Z +FREEBUSY:19980116T013000Z/19980116T043000Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T080000Z +DTEND:19970701T200000 +UID:calsrv.example.com-873970198738777@example.com +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:A@example.com +ATTENDEE:Mailto:B@example.com +DTSTART:19970701T080000Z +DTEND:19970701T200000Z +UID:calsrv.example.com-873970198738777@example.com +FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M +DTSTAMP:19970613T190030Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-SanJose +TZURL:http://zones.stds_r_us.net/tz/America-SanJose +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:A@example.COM +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:B@example.fr +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:c@example.jp +DTSTAMP:19970613T190030Z +DTSTART;TZID=America-SanJose:19970701T140000 +DTEND;TZID=America-SanJose:19970701T150000 +RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU +RDATE;TZID=America-SanJose:19970910T140000 +EXDATE;TZID=America-SanJose:19970909T140000 +EXDATE;TZID=America-SanJose:19971028T140000 +SUMMARY:Weekly Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +LOCATION:Conference Call +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1com +RECURRENCE-ID:19970701T210000Z +SEQUENCE:1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970703T210000Z +DTEND:19970703T220000Z +LOCATION:Conference Call +DTSTAMP:19970626T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +RECURRENCE-ID:19970801T210000Z +SEQUENCE:2 +STATUS:CANCELLED +DTSTAMP:19970721T093000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DTSTAMP:19970721T103000Z +STATUS:CANCELLED +SEQUENCE:3 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID;RANGE=THISANDFUTURE:19970901T210000Z +SEQUENCE:3 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Discussion +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970901T210000Z +DTEND:19970901T220000Z +LOCATION:Building 32\, Microsoft\, Seattle\, WA +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T210000Z +DTEND:19970715T220000Z +LOCATION:Conference Call +DTSTAMP:19970629T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +LOCATION:The White Room +DTSTAMP:19980301T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The Usual conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU,TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The White Room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RDATE:19980304T180000Z +RDATE:19980311T180000Z +RDATE:19980318T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:1 +RECURRENCE-ID:19980311T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980311T180000Z +DTSTAMP:19980306T193000Z +LOCATION:The Small conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980315T180000Z +DTEND:19980315T200000Z +DTSTAMP:19980307T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +RDATE:19980304T180000Z +RDATE:19980311T160000Z +RDATE:19980315T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +SEQUENCE:2 +RECURRENCE-ID:19980311T160000Z +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980304T180000Z +DTSTAMP:19980306T193000Z +ORGANIZER:Mailto:A@example.com +LOCATION:The Small conference room +UID:guid-1@host1.com +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:COUNTER +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID:19970715T210000Z +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T220000Z +DTEND:19970715T230000Z +LOCATION:Conference Call +COMMENT:May we bump this by an hour? I have a conflict +DTSTAMP:19970629T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +DTSTAMP:19970602T094000Z +LOCATION:Conference Call +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single + event;RRULE +REQUEST-STATUS:3.0;Invalid Property Name;FOO +UID:guid-1@host1.com +SEQUENCE:0 +DTSTAMP:19970603T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:Needs Action +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +UID:calsrv.example.com-873970198738777-00@example.com +COMMENT:I'll send you my input by e-mail +SEQUENCE:0 +DTSTAMP:19970717T203000Z +REQUEST-STATUS:2.0;Success +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +SUMMARY:Create the requirements document +PRIORITY:1 +SEQUENCE:0 +STATUS:IN-PROCESS +DTSTART:19970701T170000Z +DTSTAMP:19970717T230000Z +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +REQUEST-STATUS:2.0 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +REQUEST-STATUS:2.0 +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;PARTSTAT=IN-PROCESS;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:1 +DTSTAMP:19970718T100000Z +STATUS:IN-PROGRESS +PERCENT-COMPLETE:40 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR +DTSTART:19980101T100000 +DUE:19980103T100000 +SUMMARY:Send Status Reports to Area Managers +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:NEEDS-ACTION +PRIORITY:1 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +RECURRENCE-ID:19980101T170000Z +SEQUENCE:1 +ORGANIZER:MAILTO:A@Example.com +REQUEST-STATUS:2.0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VJOURNAL +DTSTART:19971002T200000Z +DTSTAMP:19971002T200000Z +ORGANIZER:MAILTO:A@Example.com +SUMMARY:Phone conference minutes +DESCRIPTION:The editors meeting was held on October 1\, 1997. + Details are in the attached document. +UID:0981234-1234234-2410@example.com +RELATED-TO:0981234-1234234-2402-35@example.com +ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +UID: guid-1-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:acme-12345@host1.com +SEQUENCE:3 +RRULE:FREQ=WEEKLY +RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +DESCRIPTION:IETF-C&S Conference Call +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970801T210000Z +DTEND:19970801T220000Z +RECURRENCE-ID:19970809T210000Z +DTSTAMP:19970726T083000 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +UID:acme-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTART:19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +END:VEVENT +END:VCALENDAR + +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123402@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970401T163000Z +DTEND:19970402T010000Z +SUMMARY:Laurel is in sensitivity awareness class. +CLASS:PUBLIC +CATEGORIES:BUSINESS,HUMAN RESOURCES +TRANSP:TRANSPARENT +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123403@host.com +DTSTAMP:19970901T1300Z +DTSTART:19971102 +SUMMARY:Our Blissful Anniversary +CLASS:CONFIDENTIAL +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +RRULE:FREQ=YEARLY +END:VEVENT + +BEGIN:VTODO +UID:19970901T130000Z-123404@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970415T133000Z +DUE:19970416T045959Z +SUMMARY:1996 Income Tax Preparation +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +STATUS:NEEDS-ACTION +END:VTODO +BEGIN:VJOURNAL +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T1300Z +DTSTART;VALUE=DATE:19970317 +SUMMARY:Staff meeting minutes +DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa + and Bob. Aurora project plans were reviewed. There is currently + no budget reserves for this project. Lisa will escalate to + management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative called + to discuss new printer. Promised to get us a demo by Friday.\n + 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. + Is looking into a loaner car. 654-2323 (tel). +END:VJOURNAL +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +DTSTAMP:19970901T083000Z +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTAMP:19970901T100000Z +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M +URL:http://host2.com/pub/busy/jpublic-01.ifb +COMMENT:This iCalendar file contains busy time information for + the next three months. +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19971026T020000 +RDATE:19971026T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19971026T020000 +RDATE:19970406T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +BEGIN:DAYLIGHT +DTSTART:19990424T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +REPEAT:4 +DURATION:PT15M +ACTION:AUDIO +ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +REPEAT:2 +DURATION:PT15M +ACTION:DISPLAY +DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. +END:VALARM +BEGIN:VALARM +TRIGGER:-P2D +ACTION:EMAIL +ATTENDEE:MAILTO:john_doe@host.com +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. +ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen + da.doc +END:VALARM +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +REPEAT:23 +DURATION:PT1H +ACTION:PROCEDURE +ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- + procs/felizano.exe +END:VALARM +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + MAILTO:employee-A@host.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTART;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T1200Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ + conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER:19980403T120000 +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- + files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ, Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTART:19970701T200000Z +DTSTAMP:19970611T190000Z +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970612T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SEQUENCE:1 +UID:0981234-1234234-23@example.com +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +COMMENT:DUKES forfeit the game +SEQUENCE:2 +UID:0981234-1234234-23@example.com +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +CALSCALE:GREGORIAN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-Chicago +TZURL:http://zones.stds_r_us.net/tz/America-Chicago +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +ATTACH:http://www.dukes.com/ +CATEGORIES:SPORTS EVENT,ENTERTAINMENT +CLASS:PRIVATE +DESCRIPTION:MIDWAY STADIUM\n + Big time game. MUST see.\n + Expected duration:2 hours\n +DTEND;TZID=America-Chicago:19970701T180000 +DTSTART;TZID=America-Chicago:19970702T160000 +DTSTAMP:19970614T190000Z +STATUS:CONFIRMED +LOCATION;VALUE=URI:http://www.midwaystadium.com/ +PRIORITY:2 +RESOURCES:SCOREBOARD +SEQUENCE:3 +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +RELATED-TO:0981234-1234234-14@example.com +BEGIN:VALARM +TRIGGER:-PT2H +ACTION:DISPLAY +DESCRIPTION:You should be leaving for the game now. +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +ACTION:AUDIO +END:VALARM +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970614T190000Z +UID:0981234-1234234-23@example.com +DTSTART;VALUE=DATE:19970714 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY: Bastille Day +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T2000000Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE; + CUTYPE=ROOM:Mailto:Conf@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T190000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +DTSTAMP:19970613T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T190000Z +DTEND:19970701T200000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +DTSTAMP:19970611T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:COUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +DTSTAMP:19970612T190000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +COMMENT:This time works much better and I think the big conference + room is too big +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +SUMMARY:Discuss the Merits of the election results - changed to + meet B's schedule +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:DECLINECOUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +COMMENT:Sorry\, I cannot change this meeting time +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +ATTENDEE;RSVP=TRUE; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED- + FROM="Mailto:C@example.com":Mailto:E@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED; + DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com +COMMENT:Sorry\, I will be out of town at that time. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DECLINED; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +SUMMARY:Phone Conference +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +DTSTAMP:19970614T200000Z +COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR + INVITATION +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +COMMENT:Mr. B cannot attend. It's raining. Lets cancel. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CANCELLED +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:mailto:B@example.com +COMMENT:You're off the hook for this meeting +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970613T193000Z +SEQUENCE:1 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +ATTENDEE;CUTYPE=ROOM:CR_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT; + RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:2 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +RRULE:FREQ=WEEKLY +SUMMARY:Phone Conference +UID:123456@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +METHOD:PUBLISH +BEGIN:VFREEBUSY +DTSTAMP:19980101T124100Z +ORGANIZER:MAILTO:A@Example.com +DTSTART:19980101T124200Z +DTEND:19980107T124200Z +FREEBUSY:19980101T180000Z/19980101T190000Z +FREEBUSY:19980103T020000Z/19980103T050000Z +FREEBUSY:19980107T020000Z/19980107T050000Z +FREEBUSY:19980113T000000Z/19980113T010000Z +FREEBUSY:19980115T190000Z/19980115T200000Z +FREEBUSY:19980115T220000Z/19980115T230000Z +FREEBUSY:19980116T013000Z/19980116T043000Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T080000Z +DTEND:19970701T200000 +UID:calsrv.example.com-873970198738777@example.com +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:A@example.com +ATTENDEE:Mailto:B@example.com +DTSTART:19970701T080000Z +DTEND:19970701T200000Z +UID:calsrv.example.com-873970198738777@example.com +FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M +DTSTAMP:19970613T190030Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-SanJose +TZURL:http://zones.stds_r_us.net/tz/America-SanJose +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:A@example.COM +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:B@example.fr +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:c@example.jp +DTSTAMP:19970613T190030Z +DTSTART;TZID=America-SanJose:19970701T140000 +DTEND;TZID=America-SanJose:19970701T150000 +RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU +RDATE;TZID=America-SanJose:19970910T140000 +EXDATE;TZID=America-SanJose:19970909T140000 +EXDATE;TZID=America-SanJose:19971028T140000 +SUMMARY:Weekly Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +LOCATION:Conference Call +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1com +RECURRENCE-ID:19970701T210000Z +SEQUENCE:1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970703T210000Z +DTEND:19970703T220000Z +LOCATION:Conference Call +DTSTAMP:19970626T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +RECURRENCE-ID:19970801T210000Z +SEQUENCE:2 +STATUS:CANCELLED +DTSTAMP:19970721T093000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DTSTAMP:19970721T103000Z +STATUS:CANCELLED +SEQUENCE:3 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID;RANGE=THISANDFUTURE:19970901T210000Z +SEQUENCE:3 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Discussion +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970901T210000Z +DTEND:19970901T220000Z +LOCATION:Building 32\, Microsoft\, Seattle\, WA +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T210000Z +DTEND:19970715T220000Z +LOCATION:Conference Call +DTSTAMP:19970629T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +LOCATION:The White Room +DTSTAMP:19980301T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The Usual conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU,TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The White Room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RDATE:19980304T180000Z +RDATE:19980311T180000Z +RDATE:19980318T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:1 +RECURRENCE-ID:19980311T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980311T180000Z +DTSTAMP:19980306T193000Z +LOCATION:The Small conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980315T180000Z +DTEND:19980315T200000Z +DTSTAMP:19980307T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +RDATE:19980304T180000Z +RDATE:19980311T160000Z +RDATE:19980315T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +SEQUENCE:2 +RECURRENCE-ID:19980311T160000Z +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980304T180000Z +DTSTAMP:19980306T193000Z +ORGANIZER:Mailto:A@example.com +LOCATION:The Small conference room +UID:guid-1@host1.com +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:COUNTER +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID:19970715T210000Z +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T220000Z +DTEND:19970715T230000Z +LOCATION:Conference Call +COMMENT:May we bump this by an hour? I have a conflict +DTSTAMP:19970629T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +DTSTAMP:19970602T094000Z +LOCATION:Conference Call +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single + event;RRULE +REQUEST-STATUS:3.0;Invalid Property Name;FOO +UID:guid-1@host1.com +SEQUENCE:0 +DTSTAMP:19970603T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:Needs Action +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +UID:calsrv.example.com-873970198738777-00@example.com +COMMENT:I'll send you my input by e-mail +SEQUENCE:0 +DTSTAMP:19970717T203000Z +REQUEST-STATUS:2.0;Success +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +SUMMARY:Create the requirements document +PRIORITY:1 +SEQUENCE:0 +STATUS:IN-PROCESS +DTSTART:19970701T170000Z +DTSTAMP:19970717T230000Z +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +REQUEST-STATUS:2.0 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +REQUEST-STATUS:2.0 +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;PARTSTAT=IN-PROCESS;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:1 +DTSTAMP:19970718T100000Z +STATUS:IN-PROGRESS +PERCENT-COMPLETE:40 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR +DTSTART:19980101T100000 +DUE:19980103T100000 +SUMMARY:Send Status Reports to Area Managers +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:NEEDS-ACTION +PRIORITY:1 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +RECURRENCE-ID:19980101T170000Z +SEQUENCE:1 +ORGANIZER:MAILTO:A@Example.com +REQUEST-STATUS:2.0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VJOURNAL +DTSTART:19971002T200000Z +DTSTAMP:19971002T200000Z +ORGANIZER:MAILTO:A@Example.com +SUMMARY:Phone conference minutes +DESCRIPTION:The editors meeting was held on October 1\, 1997. + Details are in the attached document. +UID:0981234-1234234-2410@example.com +RELATED-TO:0981234-1234234-2402-35@example.com +ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +UID: guid-1-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:acme-12345@host1.com +SEQUENCE:3 +RRULE:FREQ=WEEKLY +RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +DESCRIPTION:IETF-C&S Conference Call +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970801T210000Z +DTEND:19970801T220000Z +RECURRENCE-ID:19970809T210000Z +DTSTAMP:19970726T083000 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +UID:acme-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTART:19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +END:VEVENT +END:VCALENDAR + +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123402@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970401T163000Z +DTEND:19970402T010000Z +SUMMARY:Laurel is in sensitivity awareness class. +CLASS:PUBLIC +CATEGORIES:BUSINESS,HUMAN RESOURCES +TRANSP:TRANSPARENT +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123403@host.com +DTSTAMP:19970901T1300Z +DTSTART:19971102 +SUMMARY:Our Blissful Anniversary +CLASS:CONFIDENTIAL +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +RRULE:FREQ=YEARLY +END:VEVENT + +BEGIN:VTODO +UID:19970901T130000Z-123404@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970415T133000Z +DUE:19970416T045959Z +SUMMARY:1996 Income Tax Preparation +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +STATUS:NEEDS-ACTION +END:VTODO +BEGIN:VJOURNAL +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T1300Z +DTSTART;VALUE=DATE:19970317 +SUMMARY:Staff meeting minutes +DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa + and Bob. Aurora project plans were reviewed. There is currently + no budget reserves for this project. Lisa will escalate to + management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative called + to discuss new printer. Promised to get us a demo by Friday.\n + 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. + Is looking into a loaner car. 654-2323 (tel). +END:VJOURNAL +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +DTSTAMP:19970901T083000Z +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTAMP:19970901T100000Z +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M +URL:http://host2.com/pub/busy/jpublic-01.ifb +COMMENT:This iCalendar file contains busy time information for + the next three months. +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19971026T020000 +RDATE:19971026T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19971026T020000 +RDATE:19970406T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +BEGIN:DAYLIGHT +DTSTART:19990424T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +REPEAT:4 +DURATION:PT15M +ACTION:AUDIO +ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +REPEAT:2 +DURATION:PT15M +ACTION:DISPLAY +DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. +END:VALARM +BEGIN:VALARM +TRIGGER:-P2D +ACTION:EMAIL +ATTENDEE:MAILTO:john_doe@host.com +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. +ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen + da.doc +END:VALARM +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +REPEAT:23 +DURATION:PT1H +ACTION:PROCEDURE +ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- + procs/felizano.exe +END:VALARM +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + MAILTO:employee-A@host.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTART;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T1200Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ + conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER:19980403T120000 +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- + files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ, Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTART:19970701T200000Z +DTSTAMP:19970611T190000Z +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970612T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SEQUENCE:1 +UID:0981234-1234234-23@example.com +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +COMMENT:DUKES forfeit the game +SEQUENCE:2 +UID:0981234-1234234-23@example.com +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +CALSCALE:GREGORIAN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-Chicago +TZURL:http://zones.stds_r_us.net/tz/America-Chicago +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +ATTACH:http://www.dukes.com/ +CATEGORIES:SPORTS EVENT,ENTERTAINMENT +CLASS:PRIVATE +DESCRIPTION:MIDWAY STADIUM\n + Big time game. MUST see.\n + Expected duration:2 hours\n +DTEND;TZID=America-Chicago:19970701T180000 +DTSTART;TZID=America-Chicago:19970702T160000 +DTSTAMP:19970614T190000Z +STATUS:CONFIRMED +LOCATION;VALUE=URI:http://www.midwaystadium.com/ +PRIORITY:2 +RESOURCES:SCOREBOARD +SEQUENCE:3 +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +RELATED-TO:0981234-1234234-14@example.com +BEGIN:VALARM +TRIGGER:-PT2H +ACTION:DISPLAY +DESCRIPTION:You should be leaving for the game now. +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +ACTION:AUDIO +END:VALARM +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970614T190000Z +UID:0981234-1234234-23@example.com +DTSTART;VALUE=DATE:19970714 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY: Bastille Day +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T2000000Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE; + CUTYPE=ROOM:Mailto:Conf@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T190000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +DTSTAMP:19970613T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T190000Z +DTEND:19970701T200000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +DTSTAMP:19970611T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:COUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +DTSTAMP:19970612T190000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +COMMENT:This time works much better and I think the big conference + room is too big +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +SUMMARY:Discuss the Merits of the election results - changed to + meet B's schedule +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:DECLINECOUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +COMMENT:Sorry\, I cannot change this meeting time +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +ATTENDEE;RSVP=TRUE; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED- + FROM="Mailto:C@example.com":Mailto:E@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED; + DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com +COMMENT:Sorry\, I will be out of town at that time. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DECLINED; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +SUMMARY:Phone Conference +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +DTSTAMP:19970614T200000Z +COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR + INVITATION +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +COMMENT:Mr. B cannot attend. It's raining. Lets cancel. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CANCELLED +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:mailto:B@example.com +COMMENT:You're off the hook for this meeting +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970613T193000Z +SEQUENCE:1 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +ATTENDEE;CUTYPE=ROOM:CR_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT; + RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:2 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +RRULE:FREQ=WEEKLY +SUMMARY:Phone Conference +UID:123456@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +METHOD:PUBLISH +BEGIN:VFREEBUSY +DTSTAMP:19980101T124100Z +ORGANIZER:MAILTO:A@Example.com +DTSTART:19980101T124200Z +DTEND:19980107T124200Z +FREEBUSY:19980101T180000Z/19980101T190000Z +FREEBUSY:19980103T020000Z/19980103T050000Z +FREEBUSY:19980107T020000Z/19980107T050000Z +FREEBUSY:19980113T000000Z/19980113T010000Z +FREEBUSY:19980115T190000Z/19980115T200000Z +FREEBUSY:19980115T220000Z/19980115T230000Z +FREEBUSY:19980116T013000Z/19980116T043000Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T080000Z +DTEND:19970701T200000 +UID:calsrv.example.com-873970198738777@example.com +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:A@example.com +ATTENDEE:Mailto:B@example.com +DTSTART:19970701T080000Z +DTEND:19970701T200000Z +UID:calsrv.example.com-873970198738777@example.com +FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M +DTSTAMP:19970613T190030Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-SanJose +TZURL:http://zones.stds_r_us.net/tz/America-SanJose +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:A@example.COM +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:B@example.fr +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:c@example.jp +DTSTAMP:19970613T190030Z +DTSTART;TZID=America-SanJose:19970701T140000 +DTEND;TZID=America-SanJose:19970701T150000 +RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU +RDATE;TZID=America-SanJose:19970910T140000 +EXDATE;TZID=America-SanJose:19970909T140000 +EXDATE;TZID=America-SanJose:19971028T140000 +SUMMARY:Weekly Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +LOCATION:Conference Call +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1com +RECURRENCE-ID:19970701T210000Z +SEQUENCE:1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970703T210000Z +DTEND:19970703T220000Z +LOCATION:Conference Call +DTSTAMP:19970626T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +RECURRENCE-ID:19970801T210000Z +SEQUENCE:2 +STATUS:CANCELLED +DTSTAMP:19970721T093000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DTSTAMP:19970721T103000Z +STATUS:CANCELLED +SEQUENCE:3 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID;RANGE=THISANDFUTURE:19970901T210000Z +SEQUENCE:3 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Discussion +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970901T210000Z +DTEND:19970901T220000Z +LOCATION:Building 32\, Microsoft\, Seattle\, WA +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T210000Z +DTEND:19970715T220000Z +LOCATION:Conference Call +DTSTAMP:19970629T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +LOCATION:The White Room +DTSTAMP:19980301T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The Usual conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU,TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The White Room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RDATE:19980304T180000Z +RDATE:19980311T180000Z +RDATE:19980318T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:1 +RECURRENCE-ID:19980311T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980311T180000Z +DTSTAMP:19980306T193000Z +LOCATION:The Small conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980315T180000Z +DTEND:19980315T200000Z +DTSTAMP:19980307T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +RDATE:19980304T180000Z +RDATE:19980311T160000Z +RDATE:19980315T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +SEQUENCE:2 +RECURRENCE-ID:19980311T160000Z +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980304T180000Z +DTSTAMP:19980306T193000Z +ORGANIZER:Mailto:A@example.com +LOCATION:The Small conference room +UID:guid-1@host1.com +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:COUNTER +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID:19970715T210000Z +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T220000Z +DTEND:19970715T230000Z +LOCATION:Conference Call +COMMENT:May we bump this by an hour? I have a conflict +DTSTAMP:19970629T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +DTSTAMP:19970602T094000Z +LOCATION:Conference Call +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single + event;RRULE +REQUEST-STATUS:3.0;Invalid Property Name;FOO +UID:guid-1@host1.com +SEQUENCE:0 +DTSTAMP:19970603T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:Needs Action +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +UID:calsrv.example.com-873970198738777-00@example.com +COMMENT:I'll send you my input by e-mail +SEQUENCE:0 +DTSTAMP:19970717T203000Z +REQUEST-STATUS:2.0;Success +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +SUMMARY:Create the requirements document +PRIORITY:1 +SEQUENCE:0 +STATUS:IN-PROCESS +DTSTART:19970701T170000Z +DTSTAMP:19970717T230000Z +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +REQUEST-STATUS:2.0 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +REQUEST-STATUS:2.0 +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;PARTSTAT=IN-PROCESS;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:1 +DTSTAMP:19970718T100000Z +STATUS:IN-PROGRESS +PERCENT-COMPLETE:40 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR +DTSTART:19980101T100000 +DUE:19980103T100000 +SUMMARY:Send Status Reports to Area Managers +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:NEEDS-ACTION +PRIORITY:1 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +RECURRENCE-ID:19980101T170000Z +SEQUENCE:1 +ORGANIZER:MAILTO:A@Example.com +REQUEST-STATUS:2.0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VJOURNAL +DTSTART:19971002T200000Z +DTSTAMP:19971002T200000Z +ORGANIZER:MAILTO:A@Example.com +SUMMARY:Phone conference minutes +DESCRIPTION:The editors meeting was held on October 1\, 1997. + Details are in the attached document. +UID:0981234-1234234-2410@example.com +RELATED-TO:0981234-1234234-2402-35@example.com +ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +UID: guid-1-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:acme-12345@host1.com +SEQUENCE:3 +RRULE:FREQ=WEEKLY +RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +DESCRIPTION:IETF-C&S Conference Call +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970801T210000Z +DTEND:19970801T220000Z +RECURRENCE-ID:19970809T210000Z +DTSTAMP:19970726T083000 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +UID:acme-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTART:19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +END:VEVENT +END:VCALENDAR + +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123402@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970401T163000Z +DTEND:19970402T010000Z +SUMMARY:Laurel is in sensitivity awareness class. +CLASS:PUBLIC +CATEGORIES:BUSINESS,HUMAN RESOURCES +TRANSP:TRANSPARENT +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123403@host.com +DTSTAMP:19970901T1300Z +DTSTART:19971102 +SUMMARY:Our Blissful Anniversary +CLASS:CONFIDENTIAL +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +RRULE:FREQ=YEARLY +END:VEVENT + +BEGIN:VTODO +UID:19970901T130000Z-123404@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970415T133000Z +DUE:19970416T045959Z +SUMMARY:1996 Income Tax Preparation +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +STATUS:NEEDS-ACTION +END:VTODO +BEGIN:VJOURNAL +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T1300Z +DTSTART;VALUE=DATE:19970317 +SUMMARY:Staff meeting minutes +DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa + and Bob. Aurora project plans were reviewed. There is currently + no budget reserves for this project. Lisa will escalate to + management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative called + to discuss new printer. Promised to get us a demo by Friday.\n + 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. + Is looking into a loaner car. 654-2323 (tel). +END:VJOURNAL +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +DTSTAMP:19970901T083000Z +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTAMP:19970901T100000Z +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M +URL:http://host2.com/pub/busy/jpublic-01.ifb +COMMENT:This iCalendar file contains busy time information for + the next three months. +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19971026T020000 +RDATE:19971026T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19971026T020000 +RDATE:19970406T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +BEGIN:DAYLIGHT +DTSTART:19990424T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +REPEAT:4 +DURATION:PT15M +ACTION:AUDIO +ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +REPEAT:2 +DURATION:PT15M +ACTION:DISPLAY +DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. +END:VALARM +BEGIN:VALARM +TRIGGER:-P2D +ACTION:EMAIL +ATTENDEE:MAILTO:john_doe@host.com +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. +ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen + da.doc +END:VALARM +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +REPEAT:23 +DURATION:PT1H +ACTION:PROCEDURE +ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- + procs/felizano.exe +END:VALARM +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + MAILTO:employee-A@host.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTART;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T1200Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ + conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER:19980403T120000 +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- + files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ, Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTART:19970701T200000Z +DTSTAMP:19970611T190000Z +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970612T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SEQUENCE:1 +UID:0981234-1234234-23@example.com +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +COMMENT:DUKES forfeit the game +SEQUENCE:2 +UID:0981234-1234234-23@example.com +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +CALSCALE:GREGORIAN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-Chicago +TZURL:http://zones.stds_r_us.net/tz/America-Chicago +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +ATTACH:http://www.dukes.com/ +CATEGORIES:SPORTS EVENT,ENTERTAINMENT +CLASS:PRIVATE +DESCRIPTION:MIDWAY STADIUM\n + Big time game. MUST see.\n + Expected duration:2 hours\n +DTEND;TZID=America-Chicago:19970701T180000 +DTSTART;TZID=America-Chicago:19970702T160000 +DTSTAMP:19970614T190000Z +STATUS:CONFIRMED +LOCATION;VALUE=URI:http://www.midwaystadium.com/ +PRIORITY:2 +RESOURCES:SCOREBOARD +SEQUENCE:3 +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +RELATED-TO:0981234-1234234-14@example.com +BEGIN:VALARM +TRIGGER:-PT2H +ACTION:DISPLAY +DESCRIPTION:You should be leaving for the game now. +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +ACTION:AUDIO +END:VALARM +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970614T190000Z +UID:0981234-1234234-23@example.com +DTSTART;VALUE=DATE:19970714 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY: Bastille Day +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T2000000Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE; + CUTYPE=ROOM:Mailto:Conf@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T190000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +DTSTAMP:19970613T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T190000Z +DTEND:19970701T200000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +DTSTAMP:19970611T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:COUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +DTSTAMP:19970612T190000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +COMMENT:This time works much better and I think the big conference + room is too big +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +SUMMARY:Discuss the Merits of the election results - changed to + meet B's schedule +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:DECLINECOUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +COMMENT:Sorry\, I cannot change this meeting time +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +ATTENDEE;RSVP=TRUE; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED- + FROM="Mailto:C@example.com":Mailto:E@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED; + DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com +COMMENT:Sorry\, I will be out of town at that time. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DECLINED; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +SUMMARY:Phone Conference +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +DTSTAMP:19970614T200000Z +COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR + INVITATION +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +COMMENT:Mr. B cannot attend. It's raining. Lets cancel. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CANCELLED +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:mailto:B@example.com +COMMENT:You're off the hook for this meeting +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970613T193000Z +SEQUENCE:1 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +ATTENDEE;CUTYPE=ROOM:CR_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT; + RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:2 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +RRULE:FREQ=WEEKLY +SUMMARY:Phone Conference +UID:123456@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +METHOD:PUBLISH +BEGIN:VFREEBUSY +DTSTAMP:19980101T124100Z +ORGANIZER:MAILTO:A@Example.com +DTSTART:19980101T124200Z +DTEND:19980107T124200Z +FREEBUSY:19980101T180000Z/19980101T190000Z +FREEBUSY:19980103T020000Z/19980103T050000Z +FREEBUSY:19980107T020000Z/19980107T050000Z +FREEBUSY:19980113T000000Z/19980113T010000Z +FREEBUSY:19980115T190000Z/19980115T200000Z +FREEBUSY:19980115T220000Z/19980115T230000Z +FREEBUSY:19980116T013000Z/19980116T043000Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T080000Z +DTEND:19970701T200000 +UID:calsrv.example.com-873970198738777@example.com +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:A@example.com +ATTENDEE:Mailto:B@example.com +DTSTART:19970701T080000Z +DTEND:19970701T200000Z +UID:calsrv.example.com-873970198738777@example.com +FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M +DTSTAMP:19970613T190030Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-SanJose +TZURL:http://zones.stds_r_us.net/tz/America-SanJose +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:A@example.COM +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:B@example.fr +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:c@example.jp +DTSTAMP:19970613T190030Z +DTSTART;TZID=America-SanJose:19970701T140000 +DTEND;TZID=America-SanJose:19970701T150000 +RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU +RDATE;TZID=America-SanJose:19970910T140000 +EXDATE;TZID=America-SanJose:19970909T140000 +EXDATE;TZID=America-SanJose:19971028T140000 +SUMMARY:Weekly Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +LOCATION:Conference Call +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1com +RECURRENCE-ID:19970701T210000Z +SEQUENCE:1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970703T210000Z +DTEND:19970703T220000Z +LOCATION:Conference Call +DTSTAMP:19970626T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +RECURRENCE-ID:19970801T210000Z +SEQUENCE:2 +STATUS:CANCELLED +DTSTAMP:19970721T093000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DTSTAMP:19970721T103000Z +STATUS:CANCELLED +SEQUENCE:3 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID;RANGE=THISANDFUTURE:19970901T210000Z +SEQUENCE:3 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Discussion +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970901T210000Z +DTEND:19970901T220000Z +LOCATION:Building 32\, Microsoft\, Seattle\, WA +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T210000Z +DTEND:19970715T220000Z +LOCATION:Conference Call +DTSTAMP:19970629T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +LOCATION:The White Room +DTSTAMP:19980301T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The Usual conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU,TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The White Room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RDATE:19980304T180000Z +RDATE:19980311T180000Z +RDATE:19980318T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:1 +RECURRENCE-ID:19980311T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980311T180000Z +DTSTAMP:19980306T193000Z +LOCATION:The Small conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980315T180000Z +DTEND:19980315T200000Z +DTSTAMP:19980307T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +RDATE:19980304T180000Z +RDATE:19980311T160000Z +RDATE:19980315T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +SEQUENCE:2 +RECURRENCE-ID:19980311T160000Z +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980304T180000Z +DTSTAMP:19980306T193000Z +ORGANIZER:Mailto:A@example.com +LOCATION:The Small conference room +UID:guid-1@host1.com +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:COUNTER +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID:19970715T210000Z +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T220000Z +DTEND:19970715T230000Z +LOCATION:Conference Call +COMMENT:May we bump this by an hour? I have a conflict +DTSTAMP:19970629T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +DTSTAMP:19970602T094000Z +LOCATION:Conference Call +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single + event;RRULE +REQUEST-STATUS:3.0;Invalid Property Name;FOO +UID:guid-1@host1.com +SEQUENCE:0 +DTSTAMP:19970603T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:Needs Action +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +UID:calsrv.example.com-873970198738777-00@example.com +COMMENT:I'll send you my input by e-mail +SEQUENCE:0 +DTSTAMP:19970717T203000Z +REQUEST-STATUS:2.0;Success +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +SUMMARY:Create the requirements document +PRIORITY:1 +SEQUENCE:0 +STATUS:IN-PROCESS +DTSTART:19970701T170000Z +DTSTAMP:19970717T230000Z +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +REQUEST-STATUS:2.0 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +REQUEST-STATUS:2.0 +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;PARTSTAT=IN-PROCESS;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:1 +DTSTAMP:19970718T100000Z +STATUS:IN-PROGRESS +PERCENT-COMPLETE:40 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR +DTSTART:19980101T100000 +DUE:19980103T100000 +SUMMARY:Send Status Reports to Area Managers +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:NEEDS-ACTION +PRIORITY:1 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +RECURRENCE-ID:19980101T170000Z +SEQUENCE:1 +ORGANIZER:MAILTO:A@Example.com +REQUEST-STATUS:2.0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VJOURNAL +DTSTART:19971002T200000Z +DTSTAMP:19971002T200000Z +ORGANIZER:MAILTO:A@Example.com +SUMMARY:Phone conference minutes +DESCRIPTION:The editors meeting was held on October 1\, 1997. + Details are in the attached document. +UID:0981234-1234234-2410@example.com +RELATED-TO:0981234-1234234-2402-35@example.com +ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +UID: guid-1-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:acme-12345@host1.com +SEQUENCE:3 +RRULE:FREQ=WEEKLY +RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +DESCRIPTION:IETF-C&S Conference Call +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970801T210000Z +DTEND:19970801T220000Z +RECURRENCE-ID:19970809T210000Z +DTSTAMP:19970726T083000 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +UID:acme-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTART:19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +END:VEVENT +END:VCALENDAR + +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123402@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970401T163000Z +DTEND:19970402T010000Z +SUMMARY:Laurel is in sensitivity awareness class. +CLASS:PUBLIC +CATEGORIES:BUSINESS,HUMAN RESOURCES +TRANSP:TRANSPARENT +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123403@host.com +DTSTAMP:19970901T1300Z +DTSTART:19971102 +SUMMARY:Our Blissful Anniversary +CLASS:CONFIDENTIAL +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +RRULE:FREQ=YEARLY +END:VEVENT + +BEGIN:VTODO +UID:19970901T130000Z-123404@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970415T133000Z +DUE:19970416T045959Z +SUMMARY:1996 Income Tax Preparation +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +STATUS:NEEDS-ACTION +END:VTODO +BEGIN:VJOURNAL +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T1300Z +DTSTART;VALUE=DATE:19970317 +SUMMARY:Staff meeting minutes +DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa + and Bob. Aurora project plans were reviewed. There is currently + no budget reserves for this project. Lisa will escalate to + management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative called + to discuss new printer. Promised to get us a demo by Friday.\n + 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. + Is looking into a loaner car. 654-2323 (tel). +END:VJOURNAL +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +DTSTAMP:19970901T083000Z +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTAMP:19970901T100000Z +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M +URL:http://host2.com/pub/busy/jpublic-01.ifb +COMMENT:This iCalendar file contains busy time information for + the next three months. +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19971026T020000 +RDATE:19971026T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19971026T020000 +RDATE:19970406T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +BEGIN:DAYLIGHT +DTSTART:19990424T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +REPEAT:4 +DURATION:PT15M +ACTION:AUDIO +ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +REPEAT:2 +DURATION:PT15M +ACTION:DISPLAY +DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. +END:VALARM +BEGIN:VALARM +TRIGGER:-P2D +ACTION:EMAIL +ATTENDEE:MAILTO:john_doe@host.com +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. +ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen + da.doc +END:VALARM +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +REPEAT:23 +DURATION:PT1H +ACTION:PROCEDURE +ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- + procs/felizano.exe +END:VALARM +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + MAILTO:employee-A@host.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTART;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T1200Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ + conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER:19980403T120000 +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- + files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ, Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTART:19970701T200000Z +DTSTAMP:19970611T190000Z +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970612T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SEQUENCE:1 +UID:0981234-1234234-23@example.com +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +COMMENT:DUKES forfeit the game +SEQUENCE:2 +UID:0981234-1234234-23@example.com +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +CALSCALE:GREGORIAN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-Chicago +TZURL:http://zones.stds_r_us.net/tz/America-Chicago +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +ATTACH:http://www.dukes.com/ +CATEGORIES:SPORTS EVENT,ENTERTAINMENT +CLASS:PRIVATE +DESCRIPTION:MIDWAY STADIUM\n + Big time game. MUST see.\n + Expected duration:2 hours\n +DTEND;TZID=America-Chicago:19970701T180000 +DTSTART;TZID=America-Chicago:19970702T160000 +DTSTAMP:19970614T190000Z +STATUS:CONFIRMED +LOCATION;VALUE=URI:http://www.midwaystadium.com/ +PRIORITY:2 +RESOURCES:SCOREBOARD +SEQUENCE:3 +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +RELATED-TO:0981234-1234234-14@example.com +BEGIN:VALARM +TRIGGER:-PT2H +ACTION:DISPLAY +DESCRIPTION:You should be leaving for the game now. +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +ACTION:AUDIO +END:VALARM +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970614T190000Z +UID:0981234-1234234-23@example.com +DTSTART;VALUE=DATE:19970714 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY: Bastille Day +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T2000000Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE; + CUTYPE=ROOM:Mailto:Conf@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T190000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +DTSTAMP:19970613T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T190000Z +DTEND:19970701T200000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +DTSTAMP:19970611T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:COUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +DTSTAMP:19970612T190000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +COMMENT:This time works much better and I think the big conference + room is too big +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +SUMMARY:Discuss the Merits of the election results - changed to + meet B's schedule +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:DECLINECOUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +COMMENT:Sorry\, I cannot change this meeting time +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +ATTENDEE;RSVP=TRUE; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED- + FROM="Mailto:C@example.com":Mailto:E@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED; + DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com +COMMENT:Sorry\, I will be out of town at that time. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DECLINED; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +SUMMARY:Phone Conference +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +DTSTAMP:19970614T200000Z +COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR + INVITATION +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +COMMENT:Mr. B cannot attend. It's raining. Lets cancel. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CANCELLED +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:mailto:B@example.com +COMMENT:You're off the hook for this meeting +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970613T193000Z +SEQUENCE:1 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +ATTENDEE;CUTYPE=ROOM:CR_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT; + RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:2 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +RRULE:FREQ=WEEKLY +SUMMARY:Phone Conference +UID:123456@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +METHOD:PUBLISH +BEGIN:VFREEBUSY +DTSTAMP:19980101T124100Z +ORGANIZER:MAILTO:A@Example.com +DTSTART:19980101T124200Z +DTEND:19980107T124200Z +FREEBUSY:19980101T180000Z/19980101T190000Z +FREEBUSY:19980103T020000Z/19980103T050000Z +FREEBUSY:19980107T020000Z/19980107T050000Z +FREEBUSY:19980113T000000Z/19980113T010000Z +FREEBUSY:19980115T190000Z/19980115T200000Z +FREEBUSY:19980115T220000Z/19980115T230000Z +FREEBUSY:19980116T013000Z/19980116T043000Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T080000Z +DTEND:19970701T200000 +UID:calsrv.example.com-873970198738777@example.com +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:A@example.com +ATTENDEE:Mailto:B@example.com +DTSTART:19970701T080000Z +DTEND:19970701T200000Z +UID:calsrv.example.com-873970198738777@example.com +FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M +DTSTAMP:19970613T190030Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-SanJose +TZURL:http://zones.stds_r_us.net/tz/America-SanJose +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:A@example.COM +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:B@example.fr +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:c@example.jp +DTSTAMP:19970613T190030Z +DTSTART;TZID=America-SanJose:19970701T140000 +DTEND;TZID=America-SanJose:19970701T150000 +RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU +RDATE;TZID=America-SanJose:19970910T140000 +EXDATE;TZID=America-SanJose:19970909T140000 +EXDATE;TZID=America-SanJose:19971028T140000 +SUMMARY:Weekly Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +LOCATION:Conference Call +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1com +RECURRENCE-ID:19970701T210000Z +SEQUENCE:1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970703T210000Z +DTEND:19970703T220000Z +LOCATION:Conference Call +DTSTAMP:19970626T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +RECURRENCE-ID:19970801T210000Z +SEQUENCE:2 +STATUS:CANCELLED +DTSTAMP:19970721T093000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DTSTAMP:19970721T103000Z +STATUS:CANCELLED +SEQUENCE:3 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID;RANGE=THISANDFUTURE:19970901T210000Z +SEQUENCE:3 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Discussion +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970901T210000Z +DTEND:19970901T220000Z +LOCATION:Building 32\, Microsoft\, Seattle\, WA +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T210000Z +DTEND:19970715T220000Z +LOCATION:Conference Call +DTSTAMP:19970629T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +LOCATION:The White Room +DTSTAMP:19980301T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The Usual conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU,TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The White Room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RDATE:19980304T180000Z +RDATE:19980311T180000Z +RDATE:19980318T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:1 +RECURRENCE-ID:19980311T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980311T180000Z +DTSTAMP:19980306T193000Z +LOCATION:The Small conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980315T180000Z +DTEND:19980315T200000Z +DTSTAMP:19980307T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +RDATE:19980304T180000Z +RDATE:19980311T160000Z +RDATE:19980315T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +SEQUENCE:2 +RECURRENCE-ID:19980311T160000Z +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980304T180000Z +DTSTAMP:19980306T193000Z +ORGANIZER:Mailto:A@example.com +LOCATION:The Small conference room +UID:guid-1@host1.com +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:COUNTER +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID:19970715T210000Z +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T220000Z +DTEND:19970715T230000Z +LOCATION:Conference Call +COMMENT:May we bump this by an hour? I have a conflict +DTSTAMP:19970629T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +DTSTAMP:19970602T094000Z +LOCATION:Conference Call +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single + event;RRULE +REQUEST-STATUS:3.0;Invalid Property Name;FOO +UID:guid-1@host1.com +SEQUENCE:0 +DTSTAMP:19970603T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:Needs Action +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +UID:calsrv.example.com-873970198738777-00@example.com +COMMENT:I'll send you my input by e-mail +SEQUENCE:0 +DTSTAMP:19970717T203000Z +REQUEST-STATUS:2.0;Success +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +SUMMARY:Create the requirements document +PRIORITY:1 +SEQUENCE:0 +STATUS:IN-PROCESS +DTSTART:19970701T170000Z +DTSTAMP:19970717T230000Z +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +REQUEST-STATUS:2.0 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +REQUEST-STATUS:2.0 +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;PARTSTAT=IN-PROCESS;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:1 +DTSTAMP:19970718T100000Z +STATUS:IN-PROGRESS +PERCENT-COMPLETE:40 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR +DTSTART:19980101T100000 +DUE:19980103T100000 +SUMMARY:Send Status Reports to Area Managers +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:NEEDS-ACTION +PRIORITY:1 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +RECURRENCE-ID:19980101T170000Z +SEQUENCE:1 +ORGANIZER:MAILTO:A@Example.com +REQUEST-STATUS:2.0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VJOURNAL +DTSTART:19971002T200000Z +DTSTAMP:19971002T200000Z +ORGANIZER:MAILTO:A@Example.com +SUMMARY:Phone conference minutes +DESCRIPTION:The editors meeting was held on October 1\, 1997. + Details are in the attached document. +UID:0981234-1234234-2410@example.com +RELATED-TO:0981234-1234234-2402-35@example.com +ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +UID: guid-1-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:acme-12345@host1.com +SEQUENCE:3 +RRULE:FREQ=WEEKLY +RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +DESCRIPTION:IETF-C&S Conference Call +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970801T210000Z +DTEND:19970801T220000Z +RECURRENCE-ID:19970809T210000Z +DTSTAMP:19970726T083000 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +UID:acme-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTART:19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +END:VEVENT +END:VCALENDAR + +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123402@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970401T163000Z +DTEND:19970402T010000Z +SUMMARY:Laurel is in sensitivity awareness class. +CLASS:PUBLIC +CATEGORIES:BUSINESS,HUMAN RESOURCES +TRANSP:TRANSPARENT +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123403@host.com +DTSTAMP:19970901T1300Z +DTSTART:19971102 +SUMMARY:Our Blissful Anniversary +CLASS:CONFIDENTIAL +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +RRULE:FREQ=YEARLY +END:VEVENT + +BEGIN:VTODO +UID:19970901T130000Z-123404@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970415T133000Z +DUE:19970416T045959Z +SUMMARY:1996 Income Tax Preparation +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +STATUS:NEEDS-ACTION +END:VTODO +BEGIN:VJOURNAL +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T1300Z +DTSTART;VALUE=DATE:19970317 +SUMMARY:Staff meeting minutes +DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa + and Bob. Aurora project plans were reviewed. There is currently + no budget reserves for this project. Lisa will escalate to + management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative called + to discuss new printer. Promised to get us a demo by Friday.\n + 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. + Is looking into a loaner car. 654-2323 (tel). +END:VJOURNAL +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +DTSTAMP:19970901T083000Z +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTAMP:19970901T100000Z +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M +URL:http://host2.com/pub/busy/jpublic-01.ifb +COMMENT:This iCalendar file contains busy time information for + the next three months. +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19971026T020000 +RDATE:19971026T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19971026T020000 +RDATE:19970406T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +BEGIN:DAYLIGHT +DTSTART:19990424T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +REPEAT:4 +DURATION:PT15M +ACTION:AUDIO +ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +REPEAT:2 +DURATION:PT15M +ACTION:DISPLAY +DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. +END:VALARM +BEGIN:VALARM +TRIGGER:-P2D +ACTION:EMAIL +ATTENDEE:MAILTO:john_doe@host.com +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. +ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen + da.doc +END:VALARM +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +REPEAT:23 +DURATION:PT1H +ACTION:PROCEDURE +ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- + procs/felizano.exe +END:VALARM +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + MAILTO:employee-A@host.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTART;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T1200Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ + conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER:19980403T120000 +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- + files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ, Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTART:19970701T200000Z +DTSTAMP:19970611T190000Z +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970612T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SEQUENCE:1 +UID:0981234-1234234-23@example.com +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +COMMENT:DUKES forfeit the game +SEQUENCE:2 +UID:0981234-1234234-23@example.com +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +CALSCALE:GREGORIAN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-Chicago +TZURL:http://zones.stds_r_us.net/tz/America-Chicago +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +ATTACH:http://www.dukes.com/ +CATEGORIES:SPORTS EVENT,ENTERTAINMENT +CLASS:PRIVATE +DESCRIPTION:MIDWAY STADIUM\n + Big time game. MUST see.\n + Expected duration:2 hours\n +DTEND;TZID=America-Chicago:19970701T180000 +DTSTART;TZID=America-Chicago:19970702T160000 +DTSTAMP:19970614T190000Z +STATUS:CONFIRMED +LOCATION;VALUE=URI:http://www.midwaystadium.com/ +PRIORITY:2 +RESOURCES:SCOREBOARD +SEQUENCE:3 +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +RELATED-TO:0981234-1234234-14@example.com +BEGIN:VALARM +TRIGGER:-PT2H +ACTION:DISPLAY +DESCRIPTION:You should be leaving for the game now. +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +ACTION:AUDIO +END:VALARM +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970614T190000Z +UID:0981234-1234234-23@example.com +DTSTART;VALUE=DATE:19970714 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY: Bastille Day +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T2000000Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE; + CUTYPE=ROOM:Mailto:Conf@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T190000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +DTSTAMP:19970613T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T190000Z +DTEND:19970701T200000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +DTSTAMP:19970611T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:COUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +DTSTAMP:19970612T190000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +COMMENT:This time works much better and I think the big conference + room is too big +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +SUMMARY:Discuss the Merits of the election results - changed to + meet B's schedule +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:DECLINECOUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +COMMENT:Sorry\, I cannot change this meeting time +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +ATTENDEE;RSVP=TRUE; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED- + FROM="Mailto:C@example.com":Mailto:E@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED; + DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com +COMMENT:Sorry\, I will be out of town at that time. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DECLINED; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +SUMMARY:Phone Conference +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +DTSTAMP:19970614T200000Z +COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR + INVITATION +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +COMMENT:Mr. B cannot attend. It's raining. Lets cancel. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CANCELLED +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:mailto:B@example.com +COMMENT:You're off the hook for this meeting +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970613T193000Z +SEQUENCE:1 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +ATTENDEE;CUTYPE=ROOM:CR_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT; + RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:2 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +RRULE:FREQ=WEEKLY +SUMMARY:Phone Conference +UID:123456@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +METHOD:PUBLISH +BEGIN:VFREEBUSY +DTSTAMP:19980101T124100Z +ORGANIZER:MAILTO:A@Example.com +DTSTART:19980101T124200Z +DTEND:19980107T124200Z +FREEBUSY:19980101T180000Z/19980101T190000Z +FREEBUSY:19980103T020000Z/19980103T050000Z +FREEBUSY:19980107T020000Z/19980107T050000Z +FREEBUSY:19980113T000000Z/19980113T010000Z +FREEBUSY:19980115T190000Z/19980115T200000Z +FREEBUSY:19980115T220000Z/19980115T230000Z +FREEBUSY:19980116T013000Z/19980116T043000Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T080000Z +DTEND:19970701T200000 +UID:calsrv.example.com-873970198738777@example.com +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:A@example.com +ATTENDEE:Mailto:B@example.com +DTSTART:19970701T080000Z +DTEND:19970701T200000Z +UID:calsrv.example.com-873970198738777@example.com +FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M +DTSTAMP:19970613T190030Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-SanJose +TZURL:http://zones.stds_r_us.net/tz/America-SanJose +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:A@example.COM +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:B@example.fr +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:c@example.jp +DTSTAMP:19970613T190030Z +DTSTART;TZID=America-SanJose:19970701T140000 +DTEND;TZID=America-SanJose:19970701T150000 +RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU +RDATE;TZID=America-SanJose:19970910T140000 +EXDATE;TZID=America-SanJose:19970909T140000 +EXDATE;TZID=America-SanJose:19971028T140000 +SUMMARY:Weekly Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +LOCATION:Conference Call +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1com +RECURRENCE-ID:19970701T210000Z +SEQUENCE:1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970703T210000Z +DTEND:19970703T220000Z +LOCATION:Conference Call +DTSTAMP:19970626T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +RECURRENCE-ID:19970801T210000Z +SEQUENCE:2 +STATUS:CANCELLED +DTSTAMP:19970721T093000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DTSTAMP:19970721T103000Z +STATUS:CANCELLED +SEQUENCE:3 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID;RANGE=THISANDFUTURE:19970901T210000Z +SEQUENCE:3 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Discussion +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970901T210000Z +DTEND:19970901T220000Z +LOCATION:Building 32\, Microsoft\, Seattle\, WA +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T210000Z +DTEND:19970715T220000Z +LOCATION:Conference Call +DTSTAMP:19970629T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +LOCATION:The White Room +DTSTAMP:19980301T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The Usual conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU,TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The White Room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RDATE:19980304T180000Z +RDATE:19980311T180000Z +RDATE:19980318T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:1 +RECURRENCE-ID:19980311T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980311T180000Z +DTSTAMP:19980306T193000Z +LOCATION:The Small conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980315T180000Z +DTEND:19980315T200000Z +DTSTAMP:19980307T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +RDATE:19980304T180000Z +RDATE:19980311T160000Z +RDATE:19980315T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +SEQUENCE:2 +RECURRENCE-ID:19980311T160000Z +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980304T180000Z +DTSTAMP:19980306T193000Z +ORGANIZER:Mailto:A@example.com +LOCATION:The Small conference room +UID:guid-1@host1.com +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:COUNTER +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID:19970715T210000Z +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T220000Z +DTEND:19970715T230000Z +LOCATION:Conference Call +COMMENT:May we bump this by an hour? I have a conflict +DTSTAMP:19970629T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +DTSTAMP:19970602T094000Z +LOCATION:Conference Call +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single + event;RRULE +REQUEST-STATUS:3.0;Invalid Property Name;FOO +UID:guid-1@host1.com +SEQUENCE:0 +DTSTAMP:19970603T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:Needs Action +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +UID:calsrv.example.com-873970198738777-00@example.com +COMMENT:I'll send you my input by e-mail +SEQUENCE:0 +DTSTAMP:19970717T203000Z +REQUEST-STATUS:2.0;Success +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +SUMMARY:Create the requirements document +PRIORITY:1 +SEQUENCE:0 +STATUS:IN-PROCESS +DTSTART:19970701T170000Z +DTSTAMP:19970717T230000Z +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +REQUEST-STATUS:2.0 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +REQUEST-STATUS:2.0 +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;PARTSTAT=IN-PROCESS;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:1 +DTSTAMP:19970718T100000Z +STATUS:IN-PROGRESS +PERCENT-COMPLETE:40 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR +DTSTART:19980101T100000 +DUE:19980103T100000 +SUMMARY:Send Status Reports to Area Managers +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:NEEDS-ACTION +PRIORITY:1 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +RECURRENCE-ID:19980101T170000Z +SEQUENCE:1 +ORGANIZER:MAILTO:A@Example.com +REQUEST-STATUS:2.0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VJOURNAL +DTSTART:19971002T200000Z +DTSTAMP:19971002T200000Z +ORGANIZER:MAILTO:A@Example.com +SUMMARY:Phone conference minutes +DESCRIPTION:The editors meeting was held on October 1\, 1997. + Details are in the attached document. +UID:0981234-1234234-2410@example.com +RELATED-TO:0981234-1234234-2402-35@example.com +ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +UID: guid-1-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:acme-12345@host1.com +SEQUENCE:3 +RRULE:FREQ=WEEKLY +RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +DESCRIPTION:IETF-C&S Conference Call +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970801T210000Z +DTEND:19970801T220000Z +RECURRENCE-ID:19970809T210000Z +DTSTAMP:19970726T083000 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +UID:acme-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTART:19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +END:VEVENT +END:VCALENDAR + +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123402@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970401T163000Z +DTEND:19970402T010000Z +SUMMARY:Laurel is in sensitivity awareness class. +CLASS:PUBLIC +CATEGORIES:BUSINESS,HUMAN RESOURCES +TRANSP:TRANSPARENT +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123403@host.com +DTSTAMP:19970901T1300Z +DTSTART:19971102 +SUMMARY:Our Blissful Anniversary +CLASS:CONFIDENTIAL +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +RRULE:FREQ=YEARLY +END:VEVENT + +BEGIN:VTODO +UID:19970901T130000Z-123404@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970415T133000Z +DUE:19970416T045959Z +SUMMARY:1996 Income Tax Preparation +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +STATUS:NEEDS-ACTION +END:VTODO +BEGIN:VJOURNAL +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T1300Z +DTSTART;VALUE=DATE:19970317 +SUMMARY:Staff meeting minutes +DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa + and Bob. Aurora project plans were reviewed. There is currently + no budget reserves for this project. Lisa will escalate to + management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative called + to discuss new printer. Promised to get us a demo by Friday.\n + 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. + Is looking into a loaner car. 654-2323 (tel). +END:VJOURNAL +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +DTSTAMP:19970901T083000Z +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTAMP:19970901T100000Z +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M +URL:http://host2.com/pub/busy/jpublic-01.ifb +COMMENT:This iCalendar file contains busy time information for + the next three months. +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19971026T020000 +RDATE:19971026T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19971026T020000 +RDATE:19970406T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +BEGIN:DAYLIGHT +DTSTART:19990424T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +REPEAT:4 +DURATION:PT15M +ACTION:AUDIO +ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +REPEAT:2 +DURATION:PT15M +ACTION:DISPLAY +DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. +END:VALARM +BEGIN:VALARM +TRIGGER:-P2D +ACTION:EMAIL +ATTENDEE:MAILTO:john_doe@host.com +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. +ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen + da.doc +END:VALARM +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +REPEAT:23 +DURATION:PT1H +ACTION:PROCEDURE +ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- + procs/felizano.exe +END:VALARM +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + MAILTO:employee-A@host.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTART;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T1200Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ + conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER:19980403T120000 +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- + files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ, Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTART:19970701T200000Z +DTSTAMP:19970611T190000Z +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970612T190000Z +DTSTART:19970701T210000Z +DTEND:19970701T230000Z +SEQUENCE:1 +UID:0981234-1234234-23@example.com +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +VERSION:2.0 +PRODID:-//ACME/DesktopCalendar//EN +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +COMMENT:DUKES forfeit the game +SEQUENCE:2 +UID:0981234-1234234-23@example.com +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +CALSCALE:GREGORIAN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-Chicago +TZURL:http://zones.stds_r_us.net/tz/America-Chicago +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +ATTACH:http://www.dukes.com/ +CATEGORIES:SPORTS EVENT,ENTERTAINMENT +CLASS:PRIVATE +DESCRIPTION:MIDWAY STADIUM\n + Big time game. MUST see.\n + Expected duration:2 hours\n +DTEND;TZID=America-Chicago:19970701T180000 +DTSTART;TZID=America-Chicago:19970702T160000 +DTSTAMP:19970614T190000Z +STATUS:CONFIRMED +LOCATION;VALUE=URI:http://www.midwaystadium.com/ +PRIORITY:2 +RESOURCES:SCOREBOARD +SEQUENCE:3 +SUMMARY:ST. PAUL SAINTS -VS- DULUTH-SUPERIOR DUKES +UID:0981234-1234234-23@example.com +RELATED-TO:0981234-1234234-14@example.com +BEGIN:VALARM +TRIGGER:-PT2H +ACTION:DISPLAY +DESCRIPTION:You should be leaving for the game now. +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +ACTION:AUDIO +END:VALARM +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:PUBLISH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:mailto:a@example.com +DTSTAMP:19970614T190000Z +UID:0981234-1234234-23@example.com +DTSTART;VALUE=DATE:19970714 +RRULE:FREQ=YEARLY;INTERVAL=1 +SUMMARY: Bastille Day +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=B:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=C:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T2000000Z +SUMMARY:Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +ORGANIZER:MAILTO:A@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970612T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL;CN=Hal:Mailto:D@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE; + CUTYPE=ROOM:Mailto:Conf@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T190000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +DTSTAMP:19970613T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T190000Z +DTEND:19970701T200000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +DTSTAMP:19970611T190000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:COUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +DTSTAMP:19970612T190000Z +SUMMARY:Discuss the Merits of the election results +LOCATION:Green Conference Room +COMMENT:This time works much better and I think the big conference + room is too big +UID:calsrv.example.com-873970198738777a@example.com +SEQUENCE:0 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T160000Z +DTEND:19970701T190000Z +SUMMARY:Discuss the Merits of the election results - changed to + meet B's schedule +LOCATION:Green Conference Room +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:DECLINECOUNTER +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +COMMENT:Sorry\, I cannot change this meeting time +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +ATTENDEE;RSVP=TRUE; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=ACCEPTED;DELEGATED- + FROM="Mailto:C@example.com":Mailto:E@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED; + DELEGATED-TO="Mailto:E@example.com":Mailto:C@example.com +COMMENT:Sorry\, I will be out of town at that time. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +REQUEST-STATUS:2.0;Success +DTSTAMP:19970614T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DECLINED; + DELEGATED-FROM="Mailto:C@example.com":Mailto:E@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +SUMMARY:Phone Conference +DTSTART:19970701T180000Z +DTEND:19970701T200000Z +DTSTAMP:19970614T200000Z +COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR + INVITATION +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +COMMENT:Mr. B cannot attend. It's raining. Lets cancel. +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:1 +STATUS:CANCELLED +DTSTAMP:19970613T190000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:CANCEL +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:mailto:B@example.com +COMMENT:You're off the hook for this meeting +UID:calsrv.example.com-873970198738777@example.com +DTSTAMP:19970613T193000Z +SEQUENCE:1 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +ATTENDEE;CUTYPE=ROOM:CR_Big@example.com +ATTENDEE;ROLE=NON-PARTICIPANT; + RSVP=FALSE:Mailto:E@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +SUMMARY:Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:2 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:B@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:C@example.com +ATTENDEE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTAMP:19970611T190000Z +DTSTART:19970701T200000Z +DTEND:19970701T203000Z +RRULE:FREQ=WEEKLY +SUMMARY:Phone Conference +UID:123456@example.com +SEQUENCE:1 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +METHOD:PUBLISH +BEGIN:VFREEBUSY +DTSTAMP:19980101T124100Z +ORGANIZER:MAILTO:A@Example.com +DTSTART:19980101T124200Z +DTEND:19980107T124200Z +FREEBUSY:19980101T180000Z/19980101T190000Z +FREEBUSY:19980103T020000Z/19980103T050000Z +FREEBUSY:19980107T020000Z/19980107T050000Z +FREEBUSY:19980113T000000Z/19980113T010000Z +FREEBUSY:19980115T190000Z/19980115T200000Z +FREEBUSY:19980115T220000Z/19980115T230000Z +FREEBUSY:19980116T013000Z/19980116T043000Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +DTSTAMP:19970613T190000Z +DTSTART:19970701T080000Z +DTEND:19970701T200000 +UID:calsrv.example.com-873970198738777@example.com +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:A@example.com +ATTENDEE:Mailto:B@example.com +DTSTART:19970701T080000Z +DTEND:19970701T200000Z +UID:calsrv.example.com-873970198738777@example.com +FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M +DTSTAMP:19970613T190030Z +END:VFREEBUSY +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:America-SanJose +TZURL:http://zones.stds_r_us.net/tz/America-SanJose +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:A@example.COM +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:B@example.fr +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:c@example.jp +DTSTAMP:19970613T190030Z +DTSTART;TZID=America-SanJose:19970701T140000 +DTEND;TZID=America-SanJose:19970701T150000 +RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU +RDATE;TZID=America-SanJose:19970910T140000 +EXDATE;TZID=America-SanJose:19970909T140000 +EXDATE;TZID=America-SanJose:19971028T140000 +SUMMARY:Weekly Phone Conference +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +LOCATION:Conference Call +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1com +RECURRENCE-ID:19970701T210000Z +SEQUENCE:1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970703T210000Z +DTEND:19970703T220000Z +LOCATION:Conference Call +DTSTAMP:19970626T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +RECURRENCE-ID:19970801T210000Z +SEQUENCE:2 +STATUS:CANCELLED +DTSTAMP:19970721T093000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:CANCEL +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +ATTENDEE:Mailto:C@example.com +ATTENDEE:Mailto:D@example.com +DTSTAMP:19970721T103000Z +STATUS:CANCELLED +SEQUENCE:3 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID;RANGE=THISANDFUTURE:19970901T210000Z +SEQUENCE:3 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Discussion +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970901T210000Z +DTEND:19970901T220000Z +LOCATION:Building 32\, Microsoft\, Seattle\, WA +DTSTAMP:19970526T083000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T210000Z +DTEND:19970715T220000Z +LOCATION:Conference Call +DTSTAMP:19970629T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +LOCATION:The White Room +DTSTAMP:19980301T093000Z +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The Usual conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:7 +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU,TH +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980303T210000Z +DTEND:19980303T220000Z +DTSTAMP:19980303T193000Z +LOCATION:The White Room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:0 +RDATE:19980304T180000Z +RDATE:19980311T180000Z +RDATE:19980318T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:1 +RECURRENCE-ID:19980311T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980311T180000Z +DTSTAMP:19980306T193000Z +LOCATION:The Small conference room +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:ADD +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980315T180000Z +DTEND:19980315T200000Z +DTSTAMP:19980307T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:123456789@host1.com +SEQUENCE:2 +RDATE:19980304T180000Z +RDATE:19980311T160000Z +RDATE:19980315T180000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980304T180000Z +DTEND:19980304T200000Z +DTSTAMP:19980303T193000Z +LOCATION:Conference Room A +STATUS:CONFIRMED +END:VEVENT +BEGIN:VEVENT +SEQUENCE:2 +RECURRENCE-ID:19980311T160000Z +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +SUMMARY:Review Accounts +DTSTART:19980311T160000Z +DTEND:19980304T180000Z +DTSTAMP:19980306T193000Z +ORGANIZER:Mailto:A@example.com +LOCATION:The Small conference room +UID:guid-1@host1.com +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:COUNTER +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +RECURRENCE-ID:19970715T210000Z +SEQUENCE:4 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970715T220000Z +DTEND:19970715T230000Z +LOCATION:Conference Call +COMMENT:May we bump this by an hour? I have a conflict +DTSTAMP:19970629T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:guid-1@host1.com +SEQUENCE:0 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1 +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DESCRIPTION:IETF-C&S Conference Call +CLASS:PUBLIC +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970601T210000Z +DTEND:19970601T220000Z +DTSTAMP:19970602T094000Z +LOCATION:Conference Call +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single + event;RRULE +REQUEST-STATUS:3.0;Invalid Property Name;FOO +UID:guid-1@host1.com +SEQUENCE:0 +DTSTAMP:19970603T094000Z +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE:Mailto:B@example.com +ATTENDEE;RSVP=TRUE:Mailto:C@example.com +ATTENDEE;RSVP=TRUE:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:Needs Action +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED:Mailto:B@example.com +UID:calsrv.example.com-873970198738777-00@example.com +COMMENT:I'll send you my input by e-mail +SEQUENCE:0 +DTSTAMP:19970717T203000Z +REQUEST-STATUS:2.0;Success +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +SUMMARY:Create the requirements document +PRIORITY:1 +SEQUENCE:0 +STATUS:IN-PROCESS +DTSTART:19970701T170000Z +DTSTAMP:19970717T230000Z +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +REQUEST-STATUS:2.0 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:MAILTO:A@example.com +ATTENDEE;PARTSTAT=COMPLETED:Mailto:D@example.com +UID:calsrv.example.com-873970198738777-00@example.com +REQUEST-STATUS:2.0 +DTSTAMP:19970717T233000Z +SEQUENCE:0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;PARTSTAT=IN-PROCESS;CUTYPE=INDIVIDUAL:Mailto:D@example.com +DTSTART:19970701T170000Z +DUE:19970722T170000Z +PRIORITY:1 +SUMMARY:Create the requirements document +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:1 +DTSTAMP:19970718T100000Z +STATUS:IN-PROGRESS +PERCENT-COMPLETE:40 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REQUEST +VERSION:2.0 +BEGIN:VTODO +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:B@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:D@example.com +RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR +DTSTART:19980101T100000 +DUE:19980103T100000 +SUMMARY:Send Status Reports to Area Managers +UID:calsrv.example.com-873970198738777-00@example.com +SEQUENCE:0 +DTSTAMP:19970717T200000Z +STATUS:NEEDS-ACTION +PRIORITY:1 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VTODO +ATTENDEE;PARTSTAT=IN-PROCESS:Mailto:B@example.com +PERCENT-COMPLETE:75 +UID:calsrv.example.com-873970198738777-00@example.com +DTSTAMP:19970717T233000Z +RECURRENCE-ID:19980101T170000Z +SEQUENCE:1 +ORGANIZER:MAILTO:A@Example.com +REQUEST-STATUS:2.0 +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +BEGIN:VJOURNAL +DTSTART:19971002T200000Z +DTSTAMP:19971002T200000Z +ORGANIZER:MAILTO:A@Example.com +SUMMARY:Phone conference minutes +DESCRIPTION:The editors meeting was held on October 1\, 1997. + Details are in the attached document. +UID:0981234-1234234-2410@example.com +RELATED-TO:0981234-1234234-2402-35@example.com +ATTACH:ftp://ftp.example.com/pub/ed/minutes100197.txt +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +UID: guid-1-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:REQUEST +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VEVENT +UID:acme-12345@host1.com +SEQUENCE:3 +RRULE:FREQ=WEEKLY +RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z +ORGANIZER:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +DESCRIPTION:IETF-C&S Conference Call +SUMMARY:IETF Calendaring Working Group Meeting +DTSTART:19970801T210000Z +DTEND:19970801T220000Z +RECURRENCE-ID:19970809T210000Z +DTSTAMP:19970726T083000 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +METHOD:REFRESH +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:Mailto:A@example.com +ATTENDEE:Mailto:B@example.com +UID:acme-12345@host1.com +DTSTAMP:19970603T094000 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTART:19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +END:VEVENT +END:VCALENDAR + +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123402@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970401T163000Z +DTEND:19970402T010000Z +SUMMARY:Laurel is in sensitivity awareness class. +CLASS:PUBLIC +CATEGORIES:BUSINESS,HUMAN RESOURCES +TRANSP:TRANSPARENT +END:VEVENT + +BEGIN:VEVENT +UID:19970901T130000Z-123403@host.com +DTSTAMP:19970901T1300Z +DTSTART:19971102 +SUMMARY:Our Blissful Anniversary +CLASS:CONFIDENTIAL +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION +RRULE:FREQ=YEARLY +END:VEVENT + +BEGIN:VTODO +UID:19970901T130000Z-123404@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970415T133000Z +DUE:19970416T045959Z +SUMMARY:1996 Income Tax Preparation +CLASS:CONFIDENTIAL +CATEGORIES:FAMILY,FINANCE +PRIORITY:1 +STATUS:NEEDS-ACTION +END:VTODO +BEGIN:VJOURNAL +UID:19970901T130000Z-123405@host.com +DTSTAMP:19970901T1300Z +DTSTART;VALUE=DATE:19970317 +SUMMARY:Staff meeting minutes +DESCRIPTION:1. Staff meeting: Participants include Joe\, Lisa + and Bob. Aurora project plans were reviewed. There is currently + no budget reserves for this project. Lisa will escalate to + management. Next meeting on Tuesday.\n + 2. Telephone Conference: ABC Corp. sales representative called + to discuss new printer. Promised to get us a demo by Friday.\n + 3. Henry Miller (Handsoff Insurance): Car was totaled by tree. + Is looking into a loaner car. 654-2323 (tel). +END:VJOURNAL +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTART:19971015T050000Z +DTEND:19971016T050000Z +DTSTAMP:19970901T083000Z +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jane_doe@host1.com +ATTENDEE:MAILTO:john_public@host2.com +DTSTAMP:19970901T100000Z +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, + 19971015T160000Z/PT5H30M,19971015T223000Z/PT6H30M +URL:http://host2.com/pub/busy/jpublic-01.ifb +COMMENT:This iCalendar file contains busy time information for + the next three months. +END:VFREEBUSY +BEGIN:VFREEBUSY +ORGANIZER:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19971026T020000 +RDATE:19971026T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19971026T020000 +RDATE:19970406T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US-Eastern +LAST-MODIFIED:19870101T000000Z +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VTIMEZONE +TZID:US--Fictitious-Eastern +LAST-MODIFIED:19870101T000000Z +BEGIN:STANDARD +DTSTART:19671029T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +BEGIN:DAYLIGHT +DTSTART:19990424T020000 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +REPEAT:4 +DURATION:PT15M +ACTION:AUDIO +ATTACH;FMTTYPE=audio/basic:ftp://host.com/pub/sounds/bell-01.aud +END:VALARM +BEGIN:VALARM +TRIGGER:-PT30M +REPEAT:2 +DURATION:PT15M +ACTION:DISPLAY +DESCRIPTION:Breakfast meeting with executive\n + team at 8:30 AM EST. +END:VALARM +BEGIN:VALARM +TRIGGER:-P2D +ACTION:EMAIL +ATTENDEE:MAILTO:john_doe@host.com +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +DESCRIPTION:A draft agenda needs to be sent out to the attendees + to the weekly managers meeting (MGR-LIST). Attached is a + pointer the document template for the agenda file. +ATTACH;FMTTYPE=application/binary:http://host.com/templates/agen + da.doc +END:VALARM +BEGIN:VALARM +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +REPEAT:23 +DURATION:PT1H +ACTION:PROCEDURE +ATTACH;FMTTYPE=application/binary:ftp://host.com/novo- + procs/felizano.exe +END:VALARM +BEGIN:VCALENDAR +PRODID:-//RDU Software//NONSGML HandCal//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:US-Eastern +BEGIN:STANDARD +DTSTART:19981025T020000 +RDATE:19981025T020000 +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:19990404T020000 +RDATE:19990404T020000 +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +END:DAYLIGHT +END:VTIMEZONE +BEGIN:VEVENT +DTSTAMP:19980309T231000Z +UID:guid-1.host1.com +ORGANIZER;ROLE=CHAIR:MAILTO:mrbig@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP: + MAILTO:employee-A@host.com +DESCRIPTION:Project XYZ Review Meeting +CATEGORIES:MEETING +CLASS:PUBLIC +CREATED:19980309T130000Z +SUMMARY:XYZ Project Review +DTSTART;TZID=US-Eastern:19980312T083000 +DTEND;TZID=US-Eastern:19980312T093000 +LOCATION:1CP Conference Room 4350 +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VEVENT +DTSTAMP:19970324T1200Z +SEQUENCE:0 +UID:uid3@host1.com +ORGANIZER:MAILTO:jdoe@host1.com +DTSTART:19970324T123000Z +DTEND:19970324T210000Z +CATEGORIES:MEETING,PROJECT +CLASS:PUBLIC +SUMMARY:Calendaring Interoperability Planning Meeting +DESCRIPTION:Discuss how we can test c&s interoperability\n + using iCalendar and other IETF standards. +LOCATION:LDB Lobby +ATTACH;FMTTYPE=application/postscript:ftp://xyzCorp.com/pub/ + conf/bkgrnd.ps +END:VEVENT +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VTODO +DTSTAMP:19980130T134500Z +SEQUENCE:2 +UID:uid4@host1.com +ORGANIZER:MAILTO:unclesam@us.gov +ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com +DUE:19980415T235959 +STATUS:NEEDS-ACTION +SUMMARY:Submit Income Taxes +BEGIN:VALARM +ACTION:AUDIO +TRIGGER:19980403T120000 +ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio- + files/ssbanner.aud +REPEAT:4 +DURATION:PT1H +END:VALARM +END:VTODO +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//ABC Corporation//NONSGML My Product//EN +BEGIN:VJOURNAL +DTSTAMP:19970324T120000Z +UID:uid5@host1.com +ORGANIZER:MAILTO:jsmith@host.com +STATUS:DRAFT +CLASS:PUBLIC +CATEGORIES:Project Report, XYZ, Weekly Meeting +DESCRIPTION:Project xyz Review Meeting Minutes\n + Agenda\n1. Review of project version 1.0 requirements.\n2. + Definition + of project processes.\n3. Review of project schedule.\n + Participants: John Smith\, Jane Doe\, Jim Dandy\n-It was + decided that the requirements need to be signed off by + product marketing.\n-Project processes were accepted.\n + -Project schedule needs to account for scheduled holidays + and employee vacation time. Check with HR for specific + dates.\n-New schedule will be distributed by Friday.\n- + Next weeks meeting is cancelled. No meeting until 3/23. +END:VJOURNAL +END:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//RDU Software//NONSGML HandCal//EN +BEGIN:VFREEBUSY +ORGANIZER:MAILTO:jsmith@host.com +DTSTART:19980313T141711Z +DTEND:19980410T141711Z +FREEBUSY:19980314T233000Z/19980315T003000Z +FREEBUSY:19980316T153000Z/19980316T163000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +URL:http://www.host.com/calendar/busytime/jsmith.ifb +END:VFREEBUSY +END:VCALENDAR diff --git a/mozilla/calendar/libical/test-data/overlaps.ics b/mozilla/calendar/libical/test-data/overlaps.ics new file mode 100644 index 00000000000..57a5c57cc36 --- /dev/null +++ b/mozilla/calendar/libical/test-data/overlaps.ics @@ -0,0 +1,32 @@ +BEGIN:VEVENT +DTSTART + :20001104T150000 +DTEND + :20001104T160000 +END:VEVENT + +BEGIN:VEVENT +DTSTART + :20001104T153000 +DTEND + :20001104T163000 +END:VEVENT +BEGIN:VEVENT +DTSTART + :20001104T160000 +DTEND + :20001104T170000 +END:VEVENT +BEGIN:VEVENT +DTSTART + :20001104T163000 +DTEND + :20001104T173000 +END:VEVENT +BEGIN:VEVENT +DTSTART + :20001104T170000 +DTEND + :20001104T180000 +END:VEVENT + diff --git a/mozilla/calendar/libical/test-data/process-calendar.ics b/mozilla/calendar/libical/test-data/process-calendar.ics new file mode 100644 index 00000000000..e3099001a9c --- /dev/null +++ b/mozilla/calendar/libical/test-data/process-calendar.ics @@ -0,0 +1,108 @@ +BEGIN:VCALENDAR +X-LIC-NOTE: Slot 1\, 1200 to 1300 +METHOD + :REQUEST +VERSION + :2.0 +BEGIN:VEVENT +ORGANIZER + :Mailto:bob@cal.softwarestudio.org +ATTENDEE + ;ROLE=CHAIR + ;CUTYPE=INDIVIDUAL + ;CN=Alice + :Mailto:alice@cal.softwarestudio.org +ATTENDEE + ;RSVP=TRUE + ;CUTYPE=INDIVIDUAL + ;CN=B + :Mailto:B@example.com +DTSTAMP + :19970611T000000Z +DTSTART + :19970701T120000Z +DTEND + :19970701T1300Z +SUMMARY + : Event 1 +UID + :calsrv.example.com-873970198738700@example.com +SEQUENCE + :0 +STATUS + :CONFIRMED +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +X-LIC-NOTE: Slot 2\, 1300 to 1400 +METHOD + :REQUEST +VERSION + :2.0 +BEGIN:VEVENT +ORGANIZER + :Mailto:bob@cal.softwarestudio.org +ATTENDEE + ;ROLE=CHAIR + ;CUTYPE=INDIVIDUAL + ;CN=Alice + :Mailto:alice@cal.softwarestudio.org +ATTENDEE + ;RSVP=TRUE + ;CUTYPE=INDIVIDUAL + ;CN=B + :Mailto:B@example.com +DTSTAMP + :19970611T010000Z +DTSTART + :19970701T13000Z +DTEND + :19970701T140000Z +SUMMARY + : Event 2 +UID + :calsrv.example.com-873970198738701@example.com +SEQUENCE + :0 +STATUS + :CONFIRMED +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +X-LIC-NOTE: Slot 3\, 1400 to 1500 +METHOD + :REQUEST +VERSION + :2.0 +BEGIN:VEVENT +ORGANIZER + :Mailto:bob@cal.softwarestudio.org +ATTENDEE + ;ROLE=CHAIR + ;CUTYPE=INDIVIDUAL + ;CN=Alice + :Mailto:alice@cal.softwarestudio.org +ATTENDEE + ;RSVP=TRUE + ;CUTYPE=INDIVIDUAL + ;CN=B + :Mailto:B@example.com +DTSTAMP + :19970611T030000Z +DTSTART + :19970701T140000Z +DTEND + :19970701T150000Z +SUMMARY + :Event 3 +UID + :calsrv.example.com-873970198738702@example.com +SEQUENCE + :0 +STATUS + :CONFIRMED +END:VEVENT +END:VCALENDAR + diff --git a/mozilla/calendar/libical/test-data/process-incoming.ics b/mozilla/calendar/libical/test-data/process-incoming.ics new file mode 100644 index 00000000000..5f66fb69c75 --- /dev/null +++ b/mozilla/calendar/libical/test-data/process-incoming.ics @@ -0,0 +1,107 @@ +BEGIN:VCALENDAR +X-LIC-NOTE: Overlap with Slot 1\, 1200 to 1300\, should be delegated +METHOD + :REQUEST +VERSION + :2.0 +BEGIN:VEVENT +ORGANIZER + :Mailto:bob@cal.softwarestudio.org +ATTENDEE + ;ROLE=CHAIR + ;CUTYPE=INDIVIDUAL + ;CN=Alice + :Mailto:alice@cal.softwarestudio.org +ATTENDEE + ;RSVP=TRUE + ;CUTYPE=INDIVIDUAL + ;CN=B + :Mailto:B@example.com +DTSTAMP + :19970611T030000Z +DTSTART + :19970701T120000Z +DTEND + :19970701T1300Z +SUMMARY + : Overlap 1 +UID + :calsrv.example.com-873970198738703@example.com +SEQUENCE + :0 +STATUS + :CONFIRMED +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +X-LIC-NOTE: Overlap with Slot 2\, 1300 to 1400\, should be counterproposed +METHOD + :REQUEST +VERSION + :2.0 +BEGIN:VEVENT +ORGANIZER + :Mailto:bob@cal.softwarestudio.org +ATTENDEE + ;ROLE=CHAIR + ;CUTYPE=INDIVIDUAL + ;CN=Alice + :Mailto:alice@cal.softwarestudio.org +ATTENDEE + ;RSVP=TRUE + ;CUTYPE=INDIVIDUAL + ;CN=B + :Mailto:B@example.com +DTSTAMP + :19970611T040000Z +DTSTART + :19970701T13000Z +DTEND + :19970701T140000Z +SUMMARY + :Overlap 2 +UID + :calsrv.example.com-873970198738704@example.com +SEQUENCE + :0 +STATUS + :CONFIRMED +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +X-LIC-NOTE: Overlap with Slot 3\, 1400 to 1500\, should be declined +METHOD + :REQUEST +VERSION + :2.0 +BEGIN:VEVENT +ORGANIZER + :Mailto:bob@cal.softwarestudio.org +ATTENDEE + ;ROLE=CHAIR + ;CUTYPE=INDIVIDUAL + ;CN=Alice + :Mailto:alice@cal.softwarestudio.org +ATTENDEE + ;RSVP=TRUE + ;CUTYPE=INDIVIDUAL + ;CN=B + :Mailto:B@example.com +DTSTAMP + :19970611T050000Z +DTSTART + :19970701T140000Z +DTEND + :19970701T150000Z +SUMMARY + :Overlap 3 +UID + :calsrv.example.com-873970198738705@example.com +SEQUENCE + :0 +STATUS + :CONFIRMED +END:VEVENT +END:VCALENDAR diff --git a/mozilla/calendar/libical/test-data/recur-errors.txt b/mozilla/calendar/libical/test-data/recur-errors.txt new file mode 100644 index 00000000000..5d4812add9c --- /dev/null +++ b/mozilla/calendar/libical/test-data/recur-errors.txt @@ -0,0 +1,44 @@ +BEGIN:VEVENT +DESCRIPTION + :An example where the days generated makes a difference because of + WKST: +DTSTART + ;TZID=US-Eastern + :19970805T090000 +RRULE + :FREQ=WEEKLY;COUNT=4;INTERVAL=2;BYDAY=TU,SU +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :An example where the days generated makes a difference because of + WKST. Changing only WKST from MO to SU yields different results... +DTSTART + ;TZID=US-Eastern + :19970805T090000 +RRULE + :FREQ=WEEKLY;COUNT=4;INTERVAL=2;BYDAY=TU,SU +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :The 3rd instance into the month of one of Tuesday\, Wednesday or + Thursday\, for the next 6 months: +DTSTART + ;TZID=US-Eastern + :19970904T090000 +RRULE + :FREQ=MONTHLY;COUNT=6;INTERVAL=1;BYDAY=TU,WE,TH;BYSETPOS=3 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :The 2nd to last weekday of the month: +DTSTART + ;TZID=US-Eastern + :19970929T090000 +RRULE + :FREQ=MONTHLY;COUNT=10;INTERVAL=1;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-2 +END:VEVENT + + diff --git a/mozilla/calendar/libical/test-data/recur.txt b/mozilla/calendar/libical/test-data/recur.txt new file mode 100644 index 00000000000..e1b00a65a2b --- /dev/null +++ b/mozilla/calendar/libical/test-data/recur.txt @@ -0,0 +1,644 @@ +BEGIN:VEVENT +DESCRIPTION + :Repeat every tuesday and wednesday starting Tue 2nd April 2002 +RRULE + :FREQ=WEEKLY;INTERVAL=1;COUNT=6;BYDAY=TU,WE +DTSTART + :20020402T114500 +DTEND + :20020402T124500 +X-EXPECT-NUMEVENTS: 6 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Repeat every thursday starting Tue 2nd April 2002 +RRULE + :FREQ=WEEKLY;INTERVAL=1;COUNT=6;BYDAY=TH +DTSTART + :20020402T114500 +DTEND + :20020402T124500 +X-EXPECT-NUMEVENTS: 7 +END:VEVENT + + +BEGIN:VEVENT +DESCRIPTION + :Every year on the same day\, forever +RRULE + :FREQ=YEARLY;INTERVAL=1 +DTSTART + :19990201T172000 +DTEND + :19990201T182000 +X-EXPECT-NUMEVENTS: 39 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Monday of week number 20 (where the default start of the week is Monday)\, + forever: +DTSTART + ;TZID=America/Los_Angeles + :19970512T090000 +RRULE + :FREQ=YEARLY;INTERVAL=1;COUNT=10;BYDAY=MO;BYWEEKNO=20 +X-EXPECT-NUMEVENTS: 11 +END:VEVENT + + +BEGIN:VEVENT +DESCRIPTION + : Once a Year +DTSTART + ;TZID=America/Los_Angeles + :20010205T090000 +RRULE + :FREQ=YEARLY;INTERVAL=1 +X-EXPECT-NUMEVENTS: 37 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Recur every sunday and tuesday +RRULE + :FREQ=WEEKLY;COUNT=10;INTERVAL=1;BYDAY=SU,TU +DTSTART + :20011216T192500 +DTEND + :20011216T202500 +X-EXPECT-NUMEVENTS: 10 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Every first tuesday of the month +RRULE + :FREQ=MONTHLY;INTERVAL=1;COUNT=3;BYDAY=1TU +DTSTART + :20011204T153500 +DTEND + :20011204T163500 +X-EXPECT-NUMEVENTS: 3 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Daily for 10 occurrences: +DTSTART + ;TZID=America/Los_Angeles + :19970902T090000 +RRULE + :FREQ=DAILY;COUNT=10;INTERVAL=1 +X-EXPECT-NUMEVENTS: 10 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Daily until December 24\, 1997: +DTSTART + ;TZID=America/Los_Angeles + :19971215T090000 +RRULE + :FREQ=DAILY;UNTIL=19971224T000000Z;INTERVAL=1 +X-EXPECT-NUMEVENTS: 9 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Every other day - forever: +DTSTART + ;TZID=America/Los_Angeles + :19970902T090000 +RRULE + :FREQ=DAILY;COUNT=10;INTERVAL=2 +X-EXPECT-NUMEVENTS: 10 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Every 10 days\, 5 occurrences: +DTSTART + ;TZID=America/Los_Angeles + :19970902T090000 +RRULE + :FREQ=DAILY;COUNT=5;INTERVAL=10 +X-EXPECT-NUMEVENTS: 5 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Daily for 10 occurrences: +DTSTART + ;TZID=America/Los_Angeles + :19970902T090000 +RRULE + :FREQ=DAILY;COUNT=10;INTERVAL=1 +X-EXPECT-NUMEVENTS: 10 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Every day in January\, for 3 years +DTSTART + ;TZID=America/Los_Angeles + :19980101T090000 +RRULE + :FREQ=YEARLY;UNTIL=20000131T090000Z;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SA;BYMONTH=1 +X-EXPECT-NUMEVENTS: 93 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Everyday in January\, for 3 years: +DTSTART + ;TZID=America/Los_Angeles + :19980101T090000 +RRULE + :FREQ=DAILY;UNTIL=20000131T170000Z;INTERVAL=1;BYMONTH=1 +X-EXPECT-NUMEVENTS: 93 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Repeat every tuesday and wednesday starting Tue 2nd April 2002 +RRULE + :FREQ=WEEKLY;INTERVAL=1;COUNT=6;BYDAY=TU,WE +DTSTART + :20020402T114500 +DTEND + :20020402T124500 +X-EXPECT-NUMEVENTS: 6 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Every Day start the first day in January\, except saturday and sunday. This should be up to March. +RRULE + :FREQ=DAILY;COUNT=50;INTERVAL=1;BYDAY=MO,TU,WE,TH,FR +DTSTART + :20020101T090000Z +X-EXPECT-NUMEVENTS: 50 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Every Day in January\, but only in Tuesday\, Wednesday and Thursday +RRULE + :FREQ=DAILY;UNTIL=20020120T090000Z;INTERVAL=1;BYDAY=TU,WE,TH +DTSTART + :20020101T090000Z +X-EXPECT-NUMEVENTS: 9 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Every Day in January\, except saturday and sunday. This is MS Outlook every weekday case. +RRULE + :FREQ=DAILY;UNTIL=20020120T090000Z;INTERVAL=1;BYDAY=MO,TU,WE,TH,FR;WKST=SU +DTSTART + :20020101T090000Z +X-EXPECT-NUMEVENTS: 14 +END:VEVENT + + +BEGIN:VEVENT +DESCRIPTION + :Weekly for 10 occurrences +DTSTART + ;TZID=America/Los_Angeles + :19970902T090000 +RRULE + :FREQ=WEEKLY;COUNT=10;INTERVAL=1 +X-EXPECT-NUMEVENTS: 10 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Weekly until December 24\, 1997 +DTSTART + ;TZID=America/Los_Angeles + :19970902T090000 +RRULE + :FREQ=WEEKLY;UNTIL=19971224T000000Z;INTERVAL=1 +X-EXPECT-NUMEVENTS: 17 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Every other week - 10 times: +DTSTART + ;TZID=America/Los_Angeles + :19970902T090000 +RRULE + :FREQ=WEEKLY;INTERVAL=2;COUNT=10 +X-EXPECT-NUMEVENTS: 10 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Weekly on Tuesday and Thursday for 5 weeks: +DTSTART + ;TZID=America/Los_Angeles + :19970902T090000 +RRULE + :FREQ=WEEKLY;UNTIL=19971007T000000Z;INTERVAL=1;BYDAY=TU,TH +X-EXPECT-NUMEVENTS: 10 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Weekly on Tuesday and Thursday for 5 weeks: +DTSTART + ;TZID=America/Los_Angeles + :19970902T090000 +RRULE + :FREQ=WEEKLY;COUNT=10;INTERVAL=1;BYDAY=TU,TH +X-EXPECT-NUMEVENTS: 10 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Every other week on Monday\, Wednesday and Friday until December + 24\,1997\, but starting on Tuesday\, September 2\, 1997: +DTSTART + ;TZID=America/Los_Angeles + :19970902T090000 +RRULE + :FREQ=WEEKLY;INTERVAL=2;UNTIL=19971224T000000Z;BYDAY=MO,WE,FR;WKST=SU +X-EXPECT-NUMEVENTS: 25 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Every other week on Tuesday and Thursday\, for 8 occurrences: +DTSTART + ;TZID=America/Los_Angeles + :19970902T090000 +RRULE + :FREQ=WEEKLY;COUNT=8;INTERVAL=2;BYDAY=TU,TH +X-EXPECT-NUMEVENTS: 8 +END:VEVENT + + +BEGIN:VEVENT +DESCRIPTION + :Monthly on the 1st Friday for ten occurrences: +DTSTART + ;TZID=America/Los_Angeles + :19970905T090000 +RRULE + :FREQ=MONTHLY;COUNT=10;INTERVAL=1;BYDAY=FR +X-EXPECT-NUMEVENTS: 10 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Monthly on the 1st Friday until December 24\, 1997: +DTSTART + ;TZID=America/Los_Angeles + :19970905T090000 +RRULE + :FREQ=MONTHLY;UNTIL=19971224T000000Z;INTERVAL=1;BYDAY=1FR +X-EXPECT-NUMEVENTS: 4 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Every other month on the 1st and last Sunday of the month for 10 occurrences + : +DTSTART + ;TZID=America/Los_Angeles + :19970907T090000 +RRULE + :FREQ=MONTHLY;INTERVAL=2;COUNT=10;BYDAY=1SU,-1SU +X-EXPECT-NUMEVENTS: 10 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Monthly on the second to last Monday of the month for 6 months: +DTSTART + ;TZID=America/Los_Angeles + :19970922T090000 +RRULE + :FREQ=MONTHLY;COUNT=6;INTERVAL=1;BYDAY=-2MO +X-EXPECT-NUMEVENTS: 6 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Monthly on the third to the last day of the month\, forever: +DTSTART + ;TZID=America/Los_Angeles + :19970928T090000 +RRULE + :FREQ=MONTHLY;INTERVAL=1;COUNT=10;BYMONTHDAY=-3 +X-EXPECT-NUMEVENTS: 10 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Monthly on the 2nd and 15th of the month for 10 occurrences: +DTSTART + ;TZID=America/Los_Angeles + :19970902T090000 +RRULE + :FREQ=MONTHLY;COUNT=10;INTERVAL=1;BYMONTHDAY=2,15 +X-EXPECT-NUMEVENTS: 10 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Monthly on the first and last day of the month for 10 occurrences:\n +DTSTART + ;TZID=America/Los_Angeles + :19970930T090000 +RRULE + :FREQ=MONTHLY;COUNT=10;INTERVAL=1;BYMONTHDAY=1,-1 +X-EXPECT-NUMEVENTS: 10 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Every 18 months on the 10th thru 15th of the month for 10 occurrences: +DTSTART + ;TZID=America/Los_Angeles + :19970910T090000 +RRULE + :FREQ=MONTHLY;COUNT=10;INTERVAL=18;BYMONTHDAY=10,11,12,13,14,15 +X-EXPECT-NUMEVENTS: 10 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Every Tuesday\, every other month: +DTSTART + ;TZID=America/Los_Angeles + :19970902T090000 +RRULE + :FREQ=MONTHLY;INTERVAL=2;COUNT=10;BYDAY=TU +X-EXPECT-NUMEVENTS: 10 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Yearly in June and July for 10 occurrences: +DTSTART + ;TZID=America/Los_Angeles + :19970610T090000 +RRULE + :FREQ=YEARLY;COUNT=10;INTERVAL=1;BYMONTH=6,7 +X-EXPECT-NUMEVENTS: 10 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Every other year on January\, February\, and March for 10 occurrences: +DTSTART + ;TZID=America/Los_Angeles + :19970310T090000 +RRULE + :FREQ=YEARLY;COUNT=10;INTERVAL=2;BYMONTH=1,2,3 +X-EXPECT-NUMEVENTS: 10 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Every 3rd year on the 1st\, 100th and 200th day for 10 occurrences: +DTSTART + ;TZID=America/Los_Angeles + :19970101T090000 +RRULE + :FREQ=YEARLY;COUNT=10;INTERVAL=3;BYYEARDAY=1,100,200 +X-EXPECT-NUMEVENTS: 10 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Every 20th Monday of the year\, forever: +DTSTART + ;TZID=America/Los_Angeles + :19970519T090000 +RRULE + :FREQ=YEARLY;INTERVAL=1;COUNT=10;BYDAY=20MO +X-EXPECT-NUMEVENTS: 10 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Monday of week number 20 (where the default start of the week is Monday)\, + forever: +DTSTART + ;TZID=America/Los_Angeles + :19970512T090000 +RRULE + :FREQ=YEARLY;INTERVAL=1;COUNT=10;BYDAY=MO;BYWEEKNO=20 +X-EXPECT-NUMEVENTS: 11 +END:VEVENT + + +BEGIN:VEVENT +DESCRIPTION + :Every Thursday in March\, forever: +DTSTART + ;TZID=America/Los_Angeles + :19970313T090000 +RRULE + :FREQ=YEARLY;INTERVAL=1;COUNT=10;BYDAY=TH;BYMONTH=3 +X-EXPECT-NUMEVENTS: 10 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Every Thursday\, but only during June\, July\, and August\, forever: +DTSTART + ;TZID=America/Los_Angeles + :19970605T090000 +RRULE + :FREQ=YEARLY;INTERVAL=1;COUNT=10;BYDAY=TH;BYMONTH=6,7,8 +X-EXPECT-NUMEVENTS: 10 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Every Friday the 13th\, forever: +DTSTART + ;TZID=America/Los_Angeles + :19970902T090000 +RRULE + :FREQ=MONTHLY;INTERVAL=1;COUNT=10;BYDAY=FR;BYMONTHDAY=13 +X-EXPECT-NUMEVENTS: 10 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :The first Saturday that follows the first Sunday of the month\, +DTSTART + ;TZID=America/Los_Angeles + :19970913T090000 +RRULE + :FREQ=MONTHLY;INTERVAL=1;COUNT=10;BYDAY=SA;BYMONTHDAY=7,8,9,10,11,12,13 +X-EXPECT-NUMEVENTS: 10 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Every four years\, the first Tuesday after a Monday in November\, + forever (U.S. Presidential Election day): +DTSTART + ;TZID=America/Los_Angeles + :19961105T090000 +RRULE + :FREQ=YEARLY;INTERVAL=4;COUNT=10;BYDAY=TU;BYMONTHDAY=2,3,4,5,6,7,8;BYMONTH=11 +X-EXPECT-NUMEVENTS: 10 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :The 3rd instance into the month of one of Tuesday\, Wednesday or + Thursday\, for the next 3 months: +DTSTART + ;TZID=America/Los_Angeles + :19970904T090000 +RRULE + :FREQ=MONTHLY;COUNT=3;INTERVAL=1;BYDAY=TU,WE,TH;BYSETPOS=3 +X-EXPECT-NUMEVENTS: 3 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :The 2nd to last weekday of the month: +DTSTART + ;TZID=America/Los_Angeles + :19970929T090000 +RRULE + :FREQ=MONTHLY;INTERVAL=1;COUNT=10;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-2 +X-EXPECT-NUMEVENTS: 10 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Every 3 hours from 9:00 AM to 5:00 PM on a specific day: +DTSTART + :19970902T090000Z +RRULE + :FREQ=HOURLY;UNTIL=19970902T170000Z;INTERVAL=3 +X-EXPECT-NUMEVENTS: 3 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Every 15 minutes for 6 occurrences: +DTSTART + ;TZID=America/Los_Angeles + :19970902T090000 +RRULE + :FREQ=MINUTELY;COUNT=6;INTERVAL=15 +X-EXPECT-NUMEVENTS: 6 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Every hour and a half for 4 occurrences: +DTSTART + ;TZID=America/Los_Angeles + :19970902T090000 +RRULE + :FREQ=MINUTELY;COUNT=4;INTERVAL=90 +X-EXPECT-NUMEVENTS: 4 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Every 20 minutes from 9:00 AM to 4:40 PM every day: +DTSTART + ;TZID=America/Los_Angeles + :19970902T090000 +RRULE + :FREQ=DAILY;COUNT=20;INTERVAL=1;BYMINUTE=0,20,40;BYHOUR=9,10,11,12,13,14,15,16 +X-EXPECT-NUMEVENTS: 20 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Every 20 minutes from 9:00 AM to 4:40 PM every day: +DTSTART + ;TZID=America/Los_Angeles + :19970902T090000 +RRULE + :FREQ=MINUTELY;COUNT=20;INTERVAL=20;BYHOUR=9,10,11,12,13,14,15,16 +X-EXPECT-NUMEVENTS: 20 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :An example where the days generated makes a difference because of + WKST: +DTSTART + ;TZID=America/Los_Angeles + :19970805T090000 +RRULE + :FREQ=WEEKLY;COUNT=4;INTERVAL=2;BYDAY=TU,SU +X-EXPECT-NUMEVENTS: 4 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :An example where the days generated makes a difference because of + WKST. Changing only WKST from MO to SU yields different results... +DTSTART + ;TZID=America/Los_Angeles + :19970805T090000 +RRULE + :FREQ=WEEKLY;COUNT=4;INTERVAL=2;BYDAY=TU,SU +X-EXPECT-NUMEVENTS: 4 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Repeat every tuesday and wednesday starting 2 April 2002 +RRULE + :FREQ=WEEKLY;INTERVAL=1;COUNT=6;BYDAY=TU,WE +DTSTART + :20020402T114500 +X-EXPECT-NUMEVENTS: 6 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Use count=1 to repeat zero times. +RRULE + :FREQ=DAILY;COUNT=1 +DTSTART + :20020402T114500 +X-EXPECT-NUMEVENTS: 1 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Use EXDATE to eliminate the base event +RRULE + :FREQ=DAILY;COUNT=1 +DTSTART + :20020402T114500Z +EXDATE + :20020402T114500Z +X-EXPECT-NUMEVENTS: 0 +END:VEVENT + +BEGIN:VEVENT +DESCRIPTION + :Every Day in January\, except saturday and sunday\, using 2 EXRULEs. (NOT IMPLEMENTED) +RRULE + :FREQ=DAILY;INTERVAL=1;UNTIL=20020201T000000Z +EXRULE + :FREQ=WEEKLY;INTERVAL=1;UNTIL=20020201T000000Z;BYDAY=SU +EXRULE + :FREQ=WEEKLY;INTERVAL=1;UNTIL=20020201T000000Z;BYDAY=SA +DTSTART + :20020101T090000Z +X-EXPECT-NUMEVENTS: 23 +END:VEVENT + diff --git a/mozilla/calendar/libical/test-data/restriction.ics b/mozilla/calendar/libical/test-data/restriction.ics new file mode 100644 index 00000000000..b06493bbb32 --- /dev/null +++ b/mozilla/calendar/libical/test-data/restriction.ics @@ -0,0 +1,49 @@ +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +METHOD: REQUEST +BEGIN:VEVENT +UID:19970901T130000Z-123401@host.com +DTSTAMP:19970901T1300Z +DTSTART:19970903T163000Z +DTEND:19970903T190000Z +DURATION:PT15M +SUMMARY:Annual Employee Review +CLASS:PRIVATE +CATEGORIES:BUSINESS,HUMAN RESOURCES +STATUS:TENTATIVE +END:VEVENT +END:VCALENDAR + + +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +METHOD: PUBLISHca +BEGIN:VEVENT +RECURRENCE-ID:19970701T210000Z +RECURRENCE-ID:19970701T210000Z +SEQUENCE:0 +SEQUENCE:1 +CATEGORIES: A +CATEGORIES: B +CLASS: A +CLASS: B +ATTENDEE: BOB +REQUEST-STATUS: 3.0 +END:VEVENT +END:VCALENDAR + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +METHOD:REPLY +VERSION:2.0 +BEGIN:VEVENT +ORGANIZER:MAILTO:A@Example.com +ATTENDEE;PARTSTAT=DELEGATED;DELEGATED- + TO="Mailto:E@example.com":Mailto:C@example.com +UID:calsrv.example.com-873970198738777@example.com +SEQUENCE:0 +DTSTAMP:19970611T190000Z +END:VEVENT +END:VCALENDAR diff --git a/mozilla/calendar/libical/test-data/simple-mime.txt b/mozilla/calendar/libical/test-data/simple-mime.txt new file mode 100644 index 00000000000..db7f8a6c39d --- /dev/null +++ b/mozilla/calendar/libical/test-data/simple-mime.txt @@ -0,0 +1,27 @@ +From: foo1@example.com +MIME-Version: 1.0 +To: foo2@example.com,foo3@example.com +Subject: REQUEST - Phone Conference +Content-Type:text/calendar; method=REQUEST; charset=US-ASCII; + Component=vevent +Content-Transfer-Encoding: 7bit +Content-Disposition: attachment; filename="event.vcs" + +BEGIN:VCALENDAR +PRODID:-//ACME/DesktopCalendar//EN +VERSION:2.0 +METHOD:REQUEST +BEGIN:VEVENT +ORGANIZER:foo1@example.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:MAILTO:employee-A@host.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:mailto:Employee-B@HOST.com +ATTENDEE;RSVP=TRUE;ROLE=REQ-PARTICIPANT;CUTYPE=GROUP:MailTo:Eric@agony.busboom.org +DTSTAMP:19970611T190000Z +DTSTART:19970621T170000Z +DTEND:19970621T173000Z +SUMMARY:Let's discuss the attached document +UID:calsvr.example.com-873970198738777-8aa +SEQUENCE:0 +STATUS:CONFIRMED +END:VEVENT +END:VCALENDAR diff --git a/mozilla/calendar/libical/test-data/smallcluster.ics b/mozilla/calendar/libical/test-data/smallcluster.ics new file mode 100644 index 00000000000..2902136bab6 --- /dev/null +++ b/mozilla/calendar/libical/test-data/smallcluster.ics @@ -0,0 +1,13 @@ +BEGIN:VCALENDAR +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//hacksw/handcal//NONSGML v1.0//EN +BEGIN:VEVENT +DTSTART + :19970714T170000Z +DTEND:19970715T035959Z +SUMMARY:Bastille Day Party +RRULE:FREQ=YEARLY;UNTIL=123456T123456;BYSETPOS=-1,2,-3,4,-5,6,-7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,4,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54;BYSECOND=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,4,25,26 +END:VEVENT +END:VCALENDAR +END:VCALENDAR diff --git a/mozilla/calendar/libical/test-data/spanlist.ics b/mozilla/calendar/libical/test-data/spanlist.ics new file mode 100644 index 00000000000..792b535a56b --- /dev/null +++ b/mozilla/calendar/libical/test-data/spanlist.ics @@ -0,0 +1,35 @@ +BEGIN:VEVENT +DTSTART: + 19980101T000000Z +DTEND: + 19980101T010000Z +END:VEVENT + +BEGIN:VEVENT +DTSTART: + 19980102T010000Z +DTEND: + 19980103T020000Z +END:VEVENT + +BEGIN:VEVENT +DTSTART: + 19980103T030000Z +DTEND: + 19980103T040000Z +END:VEVENT + +BEGIN:VEVENT +DTSTART: + 19980104T040000Z +DTEND: + 19980105T050000Z +END:VEVENT + +BEGIN:VEVENT +DTSTART: + 19980106T060000Z +DTEND: + 19980106T070000Z +END:VEVENT + diff --git a/mozilla/calendar/libical/test-data/stresstest.ics b/mozilla/calendar/libical/test-data/stresstest.ics new file mode 100644 index 00000000000..f64cf6bbc9b --- /dev/null +++ b/mozilla/calendar/libical/test-data/stresstest.ics @@ -0,0 +1,178 @@ +BEGIN:VCALENDAR +ACTION:AUDIO +ACTION: +ACTION:~!@#$%^&*()_+}{:"<>?/., +ATTACH:ftp://ftp.example.com/~pub%eof/ed/minutes100197.txt +ATTACH:http://www.dukes.com/ +ATTENDEE:MAILTO:john_doe@host.com +ATTENDEE:;john_public@host2.com +ATTENDEE:MAILTO:john_public@host2.com +ATTENDEE:Mailto:B@example.com +ATTENDEE;PARTSTAT=ACCEPTED;PARTSTAT=DECLINED:Mailto:B@example.com +ATTENDEE;PARTSTAT=*&^*&:Mailto:B@example.com +ATTENDEE;ROLE=CHAIR:Mailto:A@example.com +ATTENDEE;ROLE=ATTENDEE:Mailto:A@example.com +ATTENDEE;ROLE=CHAIR;RSVP=TRUE:Mailto:A@example.com +ATTENDEE;ROLE=NONPARTICIPANT;RSVP=NO:Mailto:E@example.com +ATTENDEE;ROLE=NON-PARTICIPANT;RSVP=FALSE:Mailto:E@example.com +ATTENDEE;RSVP=FALSE;CUTYPE=ROOM:conf_Big@example.com +ATTENDEE;RSVP=TRUE;CUTYPE=INDIVIDUAL:Mailto:Bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb@example.com +CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION;ANNIVERSARY,PERSONAL,SPECIAL OCCASION;ANNIVERSARY,PERSONAL,SPECIAL OCCASION; +CATEGORIES;RSVP=TRUE;RSVP=FALSE:one,two +CLASS:PUBLIC +COMMENT:DELEGATE (ATTENDEE Mailto:E@example.com) DECLINED YOUR + DUKES forfeit the game + I'll send you my input by e-mail + May we bump this by an hour? I have a conflict + Mr. B cannot attend. It's raining. Lets cancel. +Sorry, I cannot change this meeting time +Sorry, I will be out of town at that time. +This iCalendar file contains busy time information for +COMMENT:This time works much better and I think the big conference +COMMENT:You're off the hook for this meeting +CREATED:19980309T130000Z +CREATED:19980309T130000 +CREATED:19980309T13000 +CREATED:19980309T1300 +CREATED:19980309T130 +CREATED:19980309T13 +CREATED:19980309T1 +CREATED:19980309T +CREATED:19980309 +CREATED:1998030 +CREATED:199803 +CREATED:19980 +CREATED:1998 +CREATED:199 +CREATED:19 +CREATED:1 +CREATED: +DTSTAMP:9999999T9999999X +DTSTART:T103012 +DTSTART;VALUE=DATE:19970317 +DTSTART;VALUE=TIME:19970714 +DUE:19980415T235959 +DUE:19980415T235959 +DURATION:P15DT5H0M20S +DURATION:P7W7W8w +DURATION:PT15M +DURATION:PT1H +FREEBUSY:19970701T090000Z/PT1H,19970701T140000Z/PT30M,19980101T180000Z/19980101T190000Z,19980103T020000Z/19980103T050000Z,19980107T020000Z/19980107T050000Z +FREEBUSY:19980318T030000Z/19980318T040000Z +FREEBUSY:19980318T030000Z/19980318T040000 +FREEBUSY;VALUE=PERIOD:19971015T050000Z/PT8H30M, +LOCATION;VALUE=URI:http://www.midwaystadium.com/ +METHOD:ADD +METHOD:DESTROY +METHOD:xyz +METHOD:X-LIC-METHOD +PERCENT-COMPLETE:40 +PERCENT-COMPLETE:.75 +PERCENT-COMPLETE:0 +PRIORITY:1 +PRIORITY:2 +PRIORITY:134645983456666098345624598726459872445897345987 +PRODID:"-//RDU Software//NONSGML HandCal//EN" +PRODID:'-//ABC Corporation//NONSGML ' +PRODID:-//ABC Corporation;foo//NONSGML My Product//EN +RDATE:19970406T020000 +RDATE:19971026T020000 +RDATE:19980304T180000Z +RDATE:19980304T180000Z +RDATE:19980311T160000Z +RDATE:19980311T180000Z +RDATE:19980315T180000Z +RDATE:19980318T180000Z +RDATE:19981025T020000 +RDATE:19981025T020000 +RDATE:19990404T020000 +RDATE:19990404T020000 +RDATE;VALUE=PERIOD:19970819T210000Z/199700819T220000Z +RECURRENCE-ID:19970701T210000Z +RECURRENCE-ID:19970715T210000Z +RECURRENCE-ID:19970801T210000Z +RECURRENCE-ID:19970809T210000Z +RECURRENCE-ID:19980101T170000Z +RECURRENCE-ID:19980311T160000Z +RECURRENCE-ID:19980311T180000Z +RECURRENCE-ID;RANGE=THISANDFUTURE:19970901T210000Z +RELATED-TO:0981234-1234234-14@example.com +RELATED-TO:0981234-1234234-2402-35@example.com +REPEAT:2 +REPEAT:23 +REPEAT:4 +REPEAT:4 +REPEAT:4 +REQUEST-STATUS:2.0;Success +REQUEST-STATUS:2.0;Success +REQUEST-STATUS:2.0;Success +REQUEST-STATUS:2.0;Success +REQUEST-STATUS:2.0;Success +REQUEST-STATUS:2.8;Repeating event ignored. Scheduled as a single +REQUEST-STATUS:3.0;Invalid Property Name;FOO +RESOURCES:SCOREBOARD +RRULE:FREQ=MONTHLY;BYMONTHDAY=1 +RRULE:FREQ=MONTHLY;BYMONTHDAY=1;UNTIL=19980901T210000Z +RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR +RRULE:FREQ=WEEKLY +RRULE:FREQ=WEEKLY +RRULE:FREQ=WEEKLY;INTERVAL=20;WKST=SU;BYDAY=TU +RRULE:FREQ=WEEKLY;WKST=SU;BYDAY=TU +RRULE:FREQ=YEARLY +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 +RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=4 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4 +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4;UNTIL=19980404T070000Z +RRULE:FREQ=YEARLY;INTERVAL=1 +RRULE:WKST=SU;BYDAY=TH;FREQ=WEEKLY +RRULE:WKST=SU;BYDAY=TU,TH;FREQ=WEEKLY +SCALE:GREGORIAN +SEQUENCE:0 +SEQUENCE:.03486 +SEQUENCE:dflkjhfg +SEQUENCE: +SEQUENCE:7 +STATUS:CANCELLED +STATUS:NEEDS-ACTION +STATUS:Needs Action +SUMMARY: Bastille Day +SUMMARY:"No Property" +SUMMARY:*** REMINDER: SEND AGENDA FOR WEEKLY STAFF MEETING *** +SUMMARY:1996 Income Tax Preparation +SUMMARY:Annual Employee Review +SUMMARY:Bastille Day Party +SUMMARY:Calendaring Interoperability Planning Meeting +SUMMARY:Calendaring Interoperability Planning Meeting +SUMMARY;RSVP=TRUE;RSVP=FALSE:Calendaring Interoperability Planning Meeting +TRANSP:TRANSPARENT +TRIGGER:-P2D +TRIGGER:-PT2H +TRIGGER:-PT30M +TRIGGER:-PT30M +TRIGGER;VALUE=DATE-TIME:19970317T133000Z +TRIGGER;VALUE=DATE-TIME:19980101T050000Z +TRIGGER;VALUE=DATE-TIME:19980403T120000 +TRIGGER;VALUE=DATE-TIME:19980403T120000Z +TZID:America-Chicago +TZID:America-SanJose +TZNAME:PST +TZOFFSETFROM:-0600 +TZOFFSETFROM:0700 +TZOFFSETFROM:4.56 +TZURL:http://zones.stds_r_us.net/tz/America-Chicago +TZURL:http://zones.stds_r_us.net/tz/America-SanJose +TZURL:http://zones.stds_r_us.net/tz/US-Eastern +UID:uid5@host1.com +URL:http://www.host.com/calendar/busytime/jsmith.ifb +VERSION:2.0 +VERSION:.0 +VERSION:2.0.0.0 +X-SKI-TITLE;RSVP=TRUE: This is an extension property +END:VCALENDAR \ No newline at end of file diff --git a/mozilla/calendar/libical/test-data/user-cal.vcf b/mozilla/calendar/libical/test-data/user-cal.vcf new file mode 100644 index 00000000000..3cf005fa21b --- /dev/null +++ b/mozilla/calendar/libical/test-data/user-cal.vcf @@ -0,0 +1,76 @@ +BEGIN:VCALENDAR +X-COMMENT: This file was contributed by Ola Lundqvist +PRODID:-//GNOME//NONSGML GnomeCalendar//EN +TZ:CEST +VERSION:1.1.4 +BEGIN:VEVENT +UID:20000511T125528-23888-500-1-494 +SEQUENCE:-1 +DTSTART:20000530T150000 +DTEND:20000530T170000 +DCREATED:20000524T125250 +LAST-MODIFIED:20000524T125250 +SUMMARY:Omphalic for ataraxia +STATUS:NEEDS ACTION +CLASS:PUBLIC +PRIORITY:0 +TRANSP:0 +ORGNAME:ola +X-PILOTID:4441126 +X-PILOTSTAT:0 +END:VEVENT + +BEGIN:VEVENT +UID:20000511T125528-23888-500-1-492 +SEQUENCE:-1 +DTSTART:20000529T130000 +DTEND:20000529T130000 +DCREATED:20000524T125250 +LAST-MODIFIED:20000524T125250 +SUMMARY:Eurphrates et filistu +STATUS:NEEDS ACTION +CLASS:PUBLIC +PRIORITY:0 +TRANSP:0 +ORGNAME:ola +X-PILOTID:4441124 +X-PILOTSTAT:0 +END:VEVENT + +BEGIN:VEVENT +UID:20000524T125250-1004-500-1-13 +SEQUENCE:-1 +DTSTART:20000528T000000 +DTEND:20000528T235900 +DCREATED:20000524T125250 +LAST-MODIFIED:20000524T125250 +SUMMARY:Calaphgyian, napiform malefactors +STATUS:NEEDS ACTION +CLASS:PUBLIC +PRIORITY:0 +TRANSP:0 +ORGNAME:ola +X-PILOTID:4441156 +X-PILOTSTAT:0 +END:VEVENT + +BEGIN:VEVENT +UID:20000524T125250-1004-500-1-12 +SEQUENCE:-1 +DTSTART:20000527T150000 +DTEND:20000527T160000 +DCREATED:20000524T125250 +LAST-MODIFIED:20000524T125250 +SUMMARY: aphasiac puntildictus +STATUS:NEEDS ACTION +CLASS:PUBLIC +PRIORITY:0 +TRANSP:0 +ORGNAME:ola +X-PILOTID:4441155 +X-PILOTSTAT:0 +END:VEVENT + + +END:VCALENDAR + diff --git a/mozilla/calendar/libical/ylwrap b/mozilla/calendar/libical/ylwrap new file mode 100644 index 00000000000..5ea68e4fcd3 --- /dev/null +++ b/mozilla/calendar/libical/ylwrap @@ -0,0 +1,143 @@ +#! /bin/sh +# ylwrap - wrapper for lex/yacc invocations. +# Copyright 1996, 1997, 1998, 1999 Free Software Foundation, Inc. +# Written by Tom Tromey . +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Usage: +# ylwrap INPUT [OUTPUT DESIRED]... -- PROGRAM [ARGS]... +# * INPUT is the input file +# * OUTPUT is file PROG generates +# * DESIRED is file we actually want +# * PROGRAM is program to run +# * ARGS are passed to PROG +# Any number of OUTPUT,DESIRED pairs may be used. + +# The input. +input="$1" +shift +case "$input" in + [\\/]* | ?:[\\/]*) + # Absolute path; do nothing. + ;; + *) + # Relative path. Make it absolute. + input="`pwd`/$input" + ;; +esac + +# The directory holding the input. +input_dir=`echo "$input" | sed -e 's,\([\\/]\)[^\\/]*$,\1,'` +# Quote $INPUT_DIR so we can use it in a regexp. +# FIXME: really we should care about more than `.' and `\'. +input_rx=`echo "$input_dir" | sed -e 's,\\\\,\\\\\\\\,g' -e 's,\\.,\\\\.,g'` + +echo "got $input_rx" + +pairlist= +while test "$#" -ne 0; do + if test "$1" = "--"; then + shift + break + fi + pairlist="$pairlist $1" + shift +done + +# The program to run. +prog="$1" +shift +# Make any relative path in $prog absolute. +case "$prog" in + [\\/]* | ?:[\\/]*) ;; + *[\\/]*) prog="`pwd`/$prog" ;; +esac + +# FIXME: add hostname here for parallel makes that run commands on +# other machines. But that might take us over the 14-char limit. +dirname=ylwrap$$ +trap "cd `pwd`; rm -rf $dirname > /dev/null 2>&1" 1 2 3 15 +mkdir $dirname || exit 1 + +cd $dirname + +$prog ${1+"$@"} "$input" +status=$? + +if test $status -eq 0; then + set X $pairlist + shift + first=yes + # Since DOS filename conventions don't allow two dots, + # the DOS version of Bison writes out y_tab.c instead of y.tab.c + # and y_tab.h instead of y.tab.h. Test to see if this is the case. + y_tab_nodot="no" + if test -f y_tab.c || test -f y_tab.h; then + y_tab_nodot="yes" + fi + + while test "$#" -ne 0; do + from="$1" + # Handle y_tab.c and y_tab.h output by DOS + if test $y_tab_nodot = "yes"; then + if test $from = "y.tab.c"; then + from="y_tab.c" + else + if test $from = "y.tab.h"; then + from="y_tab.h" + fi + fi + fi + if test -f "$from"; then + # If $2 is an absolute path name, then just use that, + # otherwise prepend `../'. + case "$2" in + [\\/]* | ?:[\\/]*) target="$2";; + *) target="../$2";; + esac + + # Edit out `#line' or `#' directives. We don't want the + # resulting debug information to point at an absolute srcdir; + # it is better for it to just mention the .y file with no + # path. + sed -e "/^#/ s,$input_rx,," "$from" > "$target" || status=$? + else + # A missing file is only an error for the first file. This + # is a blatant hack to let us support using "yacc -d". If -d + # is not specified, we don't want an error when the header + # file is "missing". + if test $first = yes; then + status=1 + fi + fi + shift + shift + first=no + done +else + status=$? +fi + +# Remove the directory. +cd .. +rm -rf $dirname + +exit $status diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Abidjan.ics b/mozilla/calendar/libical/zoneinfo/Africa/Abidjan.ics new file mode 100644 index 00000000000..cd17b2c2682 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Abidjan.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Abidjan +X-LIC-LOCATION:Africa/Abidjan +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-001608 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-001608 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:19120101T000000 +RDATE:19120101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Accra.ics b/mozilla/calendar/libical/zoneinfo/Africa/Accra.ics new file mode 100644 index 00000000000..de0fa1468af --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Accra.ics @@ -0,0 +1,48 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Accra +X-LIC-LOCATION:Africa/Accra +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-000052 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-000052 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:19180101T000000 +RDATE:19180101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0000 +TZOFFSETTO:+0020 +TZNAME:GHST +DTSTART:19360901T000000 +RDATE:19360901T000000 +RDATE:19370901T000000 +RDATE:19380901T000000 +RDATE:19390901T000000 +RDATE:19400901T000000 +RDATE:19410901T000000 +RDATE:19420901T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0020 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:19361231T000000 +RDATE:19361231T000000 +RDATE:19371231T000000 +RDATE:19381231T000000 +RDATE:19391231T000000 +RDATE:19401231T000000 +RDATE:19411231T000000 +RDATE:19421231T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Addis_Ababa.ics b/mozilla/calendar/libical/zoneinfo/Africa/Addis_Ababa.ics new file mode 100644 index 00000000000..352c86a6c6b --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Addis_Ababa.ics @@ -0,0 +1,29 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Addis_Ababa +X-LIC-LOCATION:Africa/Addis_Ababa +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+023448 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+023448 +TZOFFSETTO:+023520 +TZNAME:ADMT +DTSTART:18700101T000000 +RDATE:18700101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+023520 +TZOFFSETTO:+0300 +TZNAME:EAT +DTSTART:19360505T000000 +RDATE:19360505T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Algiers.ics b/mozilla/calendar/libical/zoneinfo/Africa/Algiers.ics new file mode 100644 index 00000000000..1caf216564a --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Algiers.ics @@ -0,0 +1,97 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Algiers +X-LIC-LOCATION:Africa/Algiers +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+001212 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+001212 +TZOFFSETTO:+000921 +TZNAME:PMT +DTSTART:18910315T000100 +RDATE:18910315T000100 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+000921 +TZOFFSETTO:+0000 +TZNAME:WET +DTSTART:19110311T000000 +RDATE:19110311T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +TZNAME:WEST +DTSTART:19160614T230000 +RDATE:19160614T230000 +RDATE:19170324T230000 +RDATE:19180309T230000 +RDATE:19190301T230000 +RDATE:19200214T230000 +RDATE:19210314T230000 +RDATE:19390911T230000 +RDATE:19710425T230000 +RDATE:19770506T000000 +RDATE:19800425T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0000 +TZNAME:WET +DTSTART:19161002T000000 +RDATE:19161002T000000 +RDATE:19171008T000000 +RDATE:19181007T000000 +RDATE:19191006T000000 +RDATE:19201024T000000 +RDATE:19210622T000000 +RDATE:19391119T010000 +RDATE:19461007T000000 +RDATE:19630414T000000 +RDATE:19710927T000000 +RDATE:19791026T000000 +RDATE:19801031T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19400225T020000 +RDATE:19400225T020000 +RDATE:19560129T000000 +RDATE:19810501T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19440403T020000 +RDATE:19440403T020000 +RDATE:19450402T020000 +RDATE:19780324T010000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19441008T020000 +RDATE:19441008T020000 +RDATE:19450916T010000 +RDATE:19780922T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19771021T000000 +RDATE:19771021T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Asmera.ics b/mozilla/calendar/libical/zoneinfo/Africa/Asmera.ics new file mode 100644 index 00000000000..e9c90ef0724 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Asmera.ics @@ -0,0 +1,36 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Asmera +X-LIC-LOCATION:Africa/Asmera +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+023532 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+023532 +TZOFFSETTO:+023532 +TZNAME:AMT +DTSTART:18700101T000000 +RDATE:18700101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+023532 +TZOFFSETTO:+023520 +TZNAME:ADMT +DTSTART:18900101T000000 +RDATE:18900101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+023520 +TZOFFSETTO:+0300 +TZNAME:EAT +DTSTART:19360505T000000 +RDATE:19360505T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Bamako.ics b/mozilla/calendar/libical/zoneinfo/Africa/Bamako.ics new file mode 100644 index 00000000000..42d73330300 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Bamako.ics @@ -0,0 +1,36 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Bamako +X-LIC-LOCATION:Africa/Bamako +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-0032 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0032 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:19120101T000000 +RDATE:19120101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-0100 +TZNAME:WAT +DTSTART:19340226T000000 +RDATE:19340226T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0100 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:19600620T000000 +RDATE:19600620T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Bangui.ics b/mozilla/calendar/libical/zoneinfo/Africa/Bangui.ics new file mode 100644 index 00000000000..1d4413221af --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Bangui.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Bangui +X-LIC-LOCATION:Africa/Bangui +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+011420 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+011420 +TZOFFSETTO:+0100 +TZNAME:WAT +DTSTART:19120101T000000 +RDATE:19120101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Banjul.ics b/mozilla/calendar/libical/zoneinfo/Africa/Banjul.ics new file mode 100644 index 00000000000..f32cc22e4e9 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Banjul.ics @@ -0,0 +1,36 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Banjul +X-LIC-LOCATION:Africa/Banjul +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-010636 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-010636 +TZOFFSETTO:-010636 +TZNAME:BMT +DTSTART:19120101T000000 +RDATE:19120101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-010636 +TZOFFSETTO:-0100 +TZNAME:WAT +DTSTART:19350101T000000 +RDATE:19350101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0100 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:19640101T000000 +RDATE:19640101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Bissau.ics b/mozilla/calendar/libical/zoneinfo/Africa/Bissau.ics new file mode 100644 index 00000000000..9c42cf007f3 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Bissau.ics @@ -0,0 +1,29 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Bissau +X-LIC-LOCATION:Africa/Bissau +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-010220 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-010220 +TZOFFSETTO:-0100 +TZNAME:WAT +DTSTART:19110526T000000 +RDATE:19110526T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0100 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:19750101T000000 +RDATE:19750101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Blantyre.ics b/mozilla/calendar/libical/zoneinfo/Africa/Blantyre.ics new file mode 100644 index 00000000000..edd8dcf8fb4 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Blantyre.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Blantyre +X-LIC-LOCATION:Africa/Blantyre +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0220 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0220 +TZOFFSETTO:+0200 +TZNAME:CAT +DTSTART:19030301T000000 +RDATE:19030301T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Brazzaville.ics b/mozilla/calendar/libical/zoneinfo/Africa/Brazzaville.ics new file mode 100644 index 00000000000..30001f17d9f --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Brazzaville.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Brazzaville +X-LIC-LOCATION:Africa/Brazzaville +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+010108 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+010108 +TZOFFSETTO:+0100 +TZNAME:WAT +DTSTART:19120101T000000 +RDATE:19120101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Bujumbura.ics b/mozilla/calendar/libical/zoneinfo/Africa/Bujumbura.ics new file mode 100644 index 00000000000..0e0031f5e89 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Bujumbura.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Bujumbura +X-LIC-LOCATION:Africa/Bujumbura +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+015728 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+015728 +TZOFFSETTO:+0200 +TZNAME:CAT +DTSTART:18900101T000000 +RDATE:18900101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Cairo.ics b/mozilla/calendar/libical/zoneinfo/Africa/Cairo.ics new file mode 100644 index 00000000000..330e121448e --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Cairo.ics @@ -0,0 +1,137 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Cairo +X-LIC-LOCATION:Africa/Cairo +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19950428T000000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=-1FR +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19950929T000000 +RRULE:FREQ=YEARLY;BYMONTH=9;BYMONTHDAY=25,26,27,28,29,30;BYDAY=FR +RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=1;BYDAY=FR +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0205 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0205 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19001001T000000 +RDATE:19001001T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19400715T000000 +RDATE:19400715T000000 +RDATE:19410415T000000 +RDATE:19420401T000000 +RDATE:19430401T000000 +RDATE:19440401T000000 +RDATE:19450416T000000 +RDATE:19570510T000000 +RDATE:19580501T000000 +RDATE:19590501T010000 +RDATE:19600501T010000 +RDATE:19610501T010000 +RDATE:19620501T010000 +RDATE:19630501T010000 +RDATE:19640501T010000 +RDATE:19650501T010000 +RDATE:19660501T010000 +RDATE:19670501T010000 +RDATE:19680501T010000 +RDATE:19690501T010000 +RDATE:19700501T010000 +RDATE:19710501T010000 +RDATE:19720501T010000 +RDATE:19730501T010000 +RDATE:19740501T010000 +RDATE:19750501T010000 +RDATE:19760501T010000 +RDATE:19770501T010000 +RDATE:19780501T010000 +RDATE:19790501T010000 +RDATE:19800501T010000 +RDATE:19810501T010000 +RDATE:19820725T010000 +RDATE:19830712T010000 +RDATE:19840501T010000 +RDATE:19850501T010000 +RDATE:19860501T010000 +RDATE:19870501T010000 +RDATE:19880501T010000 +RDATE:19890506T010000 +RDATE:19900501T010000 +RDATE:19910501T010000 +RDATE:19920501T010000 +RDATE:19930501T010000 +RDATE:19940501T010000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19401001T000000 +RDATE:19401001T000000 +RDATE:19410916T000000 +RDATE:19421027T000000 +RDATE:19431101T000000 +RDATE:19441101T000000 +RDATE:19451101T000000 +RDATE:19571001T000000 +RDATE:19581001T000000 +RDATE:19590930T030000 +RDATE:19600930T030000 +RDATE:19610930T030000 +RDATE:19620930T030000 +RDATE:19630930T030000 +RDATE:19640930T030000 +RDATE:19650930T030000 +RDATE:19661001T030000 +RDATE:19671001T030000 +RDATE:19681001T030000 +RDATE:19691001T030000 +RDATE:19701001T030000 +RDATE:19711001T030000 +RDATE:19721001T030000 +RDATE:19731001T030000 +RDATE:19741001T030000 +RDATE:19751001T030000 +RDATE:19761001T030000 +RDATE:19771001T030000 +RDATE:19781001T030000 +RDATE:19791001T030000 +RDATE:19801001T030000 +RDATE:19811001T030000 +RDATE:19821001T030000 +RDATE:19831001T030000 +RDATE:19841001T030000 +RDATE:19851001T030000 +RDATE:19861001T030000 +RDATE:19871001T030000 +RDATE:19881001T030000 +RDATE:19891001T030000 +RDATE:19901001T030000 +RDATE:19911001T030000 +RDATE:19921001T030000 +RDATE:19931001T030000 +RDATE:19941001T030000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Casablanca.ics b/mozilla/calendar/libical/zoneinfo/Africa/Casablanca.ics new file mode 100644 index 00000000000..378f1fb27cd --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Casablanca.ics @@ -0,0 +1,58 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Casablanca +X-LIC-LOCATION:Africa/Casablanca +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-003020 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-003020 +TZOFFSETTO:+0000 +TZNAME:WET +DTSTART:19131026T000000 +RDATE:19131026T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +TZNAME:WEST +DTSTART:19390912T000000 +RDATE:19390912T000000 +RDATE:19400225T000000 +RDATE:19500611T000000 +RDATE:19670603T120000 +RDATE:19740624T000000 +RDATE:19760501T000000 +RDATE:19770501T000000 +RDATE:19780601T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0000 +TZNAME:WET +DTSTART:19391119T000000 +RDATE:19391119T000000 +RDATE:19451118T000000 +RDATE:19501029T000000 +RDATE:19671001T000000 +RDATE:19740901T000000 +RDATE:19760801T000000 +RDATE:19770928T000000 +RDATE:19780804T000000 +RDATE:19860101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19840316T000000 +RDATE:19840316T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Ceuta.ics b/mozilla/calendar/libical/zoneinfo/Africa/Ceuta.ics new file mode 100644 index 00000000000..f1421f4f706 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Ceuta.ics @@ -0,0 +1,106 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Ceuta +X-LIC-LOCATION:Africa/Ceuta +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19860330T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-002116 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-002116 +TZOFFSETTO:+0000 +TZNAME:WET +DTSTART:19010101T000000 +RDATE:19010101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +TZNAME:WEST +DTSTART:19180506T230000 +RDATE:19180506T230000 +RDATE:19240416T230000 +RDATE:19260417T230000 +RDATE:19270409T230000 +RDATE:19280414T230000 +RDATE:19670603T120000 +RDATE:19740624T000000 +RDATE:19760501T000000 +RDATE:19770501T000000 +RDATE:19780601T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0000 +TZNAME:WET +DTSTART:19181007T230000 +RDATE:19181007T230000 +RDATE:19241005T000000 +RDATE:19261003T000000 +RDATE:19271002T000000 +RDATE:19281007T000000 +RDATE:19671001T000000 +RDATE:19740901T000000 +RDATE:19760801T000000 +RDATE:19770928T000000 +RDATE:19780804T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0000 +TZNAME:WET +DTSTART:19240101T000000 +RDATE:19240101T000000 +RDATE:19290101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19840316T000000 +RDATE:19840316T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19860101T000000 +RDATE:19860101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19860928T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Conakry.ics b/mozilla/calendar/libical/zoneinfo/Africa/Conakry.ics new file mode 100644 index 00000000000..8742216dbbf --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Conakry.ics @@ -0,0 +1,36 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Conakry +X-LIC-LOCATION:Africa/Conakry +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-005452 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-005452 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:19120101T000000 +RDATE:19120101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-0100 +TZNAME:WAT +DTSTART:19340226T000000 +RDATE:19340226T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0100 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:19600101T000000 +RDATE:19600101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Dakar.ics b/mozilla/calendar/libical/zoneinfo/Africa/Dakar.ics new file mode 100644 index 00000000000..fac3b5b3c2e --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Dakar.ics @@ -0,0 +1,29 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Dakar +X-LIC-LOCATION:Africa/Dakar +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-010944 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-010944 +TZOFFSETTO:-0100 +TZNAME:WAT +DTSTART:19120101T000000 +RDATE:19120101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0100 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:19410601T000000 +RDATE:19410601T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Dar_es_Salaam.ics b/mozilla/calendar/libical/zoneinfo/Africa/Dar_es_Salaam.ics new file mode 100644 index 00000000000..9df58090a19 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Dar_es_Salaam.ics @@ -0,0 +1,36 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Dar_es_Salaam +X-LIC-LOCATION:Africa/Dar_es_Salaam +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+023708 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+023708 +TZOFFSETTO:+0300 +TZNAME:EAT +DTSTART:19310101T000000 +RDATE:19310101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0245 +TZNAME:BEAUT +DTSTART:19480101T000000 +RDATE:19480101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0245 +TZOFFSETTO:+0300 +TZNAME:EAT +DTSTART:19610101T000000 +RDATE:19610101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Djibouti.ics b/mozilla/calendar/libical/zoneinfo/Africa/Djibouti.ics new file mode 100644 index 00000000000..95e18f093cb --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Djibouti.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Djibouti +X-LIC-LOCATION:Africa/Djibouti +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+025236 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+025236 +TZOFFSETTO:+0300 +TZNAME:EAT +DTSTART:19110701T000000 +RDATE:19110701T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Douala.ics b/mozilla/calendar/libical/zoneinfo/Africa/Douala.ics new file mode 100644 index 00000000000..37adaf437e7 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Douala.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Douala +X-LIC-LOCATION:Africa/Douala +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+003848 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+003848 +TZOFFSETTO:+0100 +TZNAME:WAT +DTSTART:19120101T000000 +RDATE:19120101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/El_Aaiun.ics b/mozilla/calendar/libical/zoneinfo/Africa/El_Aaiun.ics new file mode 100644 index 00000000000..5784b2377f5 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/El_Aaiun.ics @@ -0,0 +1,29 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/El_Aaiun +X-LIC-LOCATION:Africa/El_Aaiun +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-005248 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-005248 +TZOFFSETTO:-0100 +TZNAME:WAT +DTSTART:19340101T000000 +RDATE:19340101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0100 +TZOFFSETTO:+0000 +TZNAME:WET +DTSTART:19760414T000000 +RDATE:19760414T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Freetown.ics b/mozilla/calendar/libical/zoneinfo/Africa/Freetown.ics new file mode 100644 index 00000000000..47114489f27 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Freetown.ics @@ -0,0 +1,88 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Freetown +X-LIC-LOCATION:Africa/Freetown +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-0053 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0053 +TZOFFSETTO:-0053 +TZNAME:FMT +DTSTART:18820101T000000 +RDATE:18820101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0053 +TZOFFSETTO:-0100 +TZNAME:WAT +DTSTART:19130601T000000 +RDATE:19130601T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0100 +TZOFFSETTO:-0020 +TZNAME:SLST +DTSTART:19350601T000000 +RDATE:19350601T000000 +RDATE:19360601T000000 +RDATE:19370601T000000 +RDATE:19380601T000000 +RDATE:19390601T000000 +RDATE:19400601T000000 +RDATE:19410601T000000 +RDATE:19420601T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0020 +TZOFFSETTO:-0100 +TZNAME:WAT +DTSTART:19351001T000000 +RDATE:19351001T000000 +RDATE:19361001T000000 +RDATE:19371001T000000 +RDATE:19381001T000000 +RDATE:19391001T000000 +RDATE:19401001T000000 +RDATE:19411001T000000 +RDATE:19421001T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0100 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:19570101T000000 +RDATE:19570101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +TZNAME:SLST +DTSTART:19570601T000000 +RDATE:19570601T000000 +RDATE:19580601T000000 +RDATE:19590601T000000 +RDATE:19600601T000000 +RDATE:19610601T000000 +RDATE:19620601T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:19570901T000000 +RDATE:19570901T000000 +RDATE:19580901T000000 +RDATE:19590901T000000 +RDATE:19600901T000000 +RDATE:19610901T000000 +RDATE:19620901T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Gaborone.ics b/mozilla/calendar/libical/zoneinfo/Africa/Gaborone.ics new file mode 100644 index 00000000000..fab7968b392 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Gaborone.ics @@ -0,0 +1,36 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Gaborone +X-LIC-LOCATION:Africa/Gaborone +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+014340 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+014340 +TZOFFSETTO:+0200 +TZNAME:CAT +DTSTART:18850101T000000 +RDATE:18850101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:CAST +DTSTART:19430919T020000 +RDATE:19430919T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:CAT +DTSTART:19440319T020000 +RDATE:19440319T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Harare.ics b/mozilla/calendar/libical/zoneinfo/Africa/Harare.ics new file mode 100644 index 00000000000..2a8a0a4fd49 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Harare.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Harare +X-LIC-LOCATION:Africa/Harare +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+020412 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+020412 +TZOFFSETTO:+0200 +TZNAME:CAT +DTSTART:19030301T000000 +RDATE:19030301T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Johannesburg.ics b/mozilla/calendar/libical/zoneinfo/Africa/Johannesburg.ics new file mode 100644 index 00000000000..f3b1e2dbfd7 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Johannesburg.ics @@ -0,0 +1,45 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Johannesburg +X-LIC-LOCATION:Africa/Johannesburg +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0152 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0152 +TZOFFSETTO:+0130 +TZNAME:SAST +DTSTART:18920208T000000 +RDATE:18920208T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0130 +TZOFFSETTO:+0200 +TZNAME:SAST +DTSTART:19030301T000000 +RDATE:19030301T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:SAST +DTSTART:19420920T020000 +RDATE:19420920T020000 +RDATE:19430919T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:SAST +DTSTART:19430321T020000 +RDATE:19430321T020000 +RDATE:19440319T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Kampala.ics b/mozilla/calendar/libical/zoneinfo/Africa/Kampala.ics new file mode 100644 index 00000000000..6c8088cc0bb --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Kampala.ics @@ -0,0 +1,43 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Kampala +X-LIC-LOCATION:Africa/Kampala +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+020940 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+020940 +TZOFFSETTO:+0300 +TZNAME:EAT +DTSTART:19280701T000000 +RDATE:19280701T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0230 +TZNAME:BEAT +DTSTART:19300101T000000 +RDATE:19300101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0230 +TZOFFSETTO:+0245 +TZNAME:BEAUT +DTSTART:19480101T000000 +RDATE:19480101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0245 +TZOFFSETTO:+0300 +TZNAME:EAT +DTSTART:19570101T000000 +RDATE:19570101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Khartoum.ics b/mozilla/calendar/libical/zoneinfo/Africa/Khartoum.ics new file mode 100644 index 00000000000..7f44295d920 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Khartoum.ics @@ -0,0 +1,73 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Khartoum +X-LIC-LOCATION:Africa/Khartoum +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+021008 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+021008 +TZOFFSETTO:+0200 +TZNAME:CAT +DTSTART:19310101T000000 +RDATE:19310101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:CAST +DTSTART:19700501T000000 +RDATE:19700501T000000 +RDATE:19710430T000000 +RDATE:19720430T000000 +RDATE:19730429T000000 +RDATE:19740428T000000 +RDATE:19750427T000000 +RDATE:19760425T000000 +RDATE:19770424T000000 +RDATE:19780430T000000 +RDATE:19790429T000000 +RDATE:19800427T000000 +RDATE:19810426T000000 +RDATE:19820425T000000 +RDATE:19830424T000000 +RDATE:19840429T000000 +RDATE:19850428T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:CAT +DTSTART:19701015T000000 +RDATE:19701015T000000 +RDATE:19711015T000000 +RDATE:19721015T000000 +RDATE:19731015T000000 +RDATE:19741015T000000 +RDATE:19751015T000000 +RDATE:19761015T000000 +RDATE:19771015T000000 +RDATE:19781015T000000 +RDATE:19791015T000000 +RDATE:19801015T000000 +RDATE:19811015T000000 +RDATE:19821015T000000 +RDATE:19831015T000000 +RDATE:19841015T000000 +RDATE:19851015T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EAT +DTSTART:20000115T120000 +RDATE:20000115T120000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Kigali.ics b/mozilla/calendar/libical/zoneinfo/Africa/Kigali.ics new file mode 100644 index 00000000000..95089685f8e --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Kigali.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Kigali +X-LIC-LOCATION:Africa/Kigali +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+020016 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+020016 +TZOFFSETTO:+0200 +TZNAME:CAT +DTSTART:19350601T000000 +RDATE:19350601T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Kinshasa.ics b/mozilla/calendar/libical/zoneinfo/Africa/Kinshasa.ics new file mode 100644 index 00000000000..f02bc23731d --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Kinshasa.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Kinshasa +X-LIC-LOCATION:Africa/Kinshasa +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+010112 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+010112 +TZOFFSETTO:+0100 +TZNAME:WAT +DTSTART:18971109T000000 +RDATE:18971109T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Lagos.ics b/mozilla/calendar/libical/zoneinfo/Africa/Lagos.ics new file mode 100644 index 00000000000..49c7ec559ea --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Lagos.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Lagos +X-LIC-LOCATION:Africa/Lagos +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+001336 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+001336 +TZOFFSETTO:+0100 +TZNAME:WAT +DTSTART:19190901T000000 +RDATE:19190901T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Libreville.ics b/mozilla/calendar/libical/zoneinfo/Africa/Libreville.ics new file mode 100644 index 00000000000..0ec374449ab --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Libreville.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Libreville +X-LIC-LOCATION:Africa/Libreville +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+003748 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+003748 +TZOFFSETTO:+0100 +TZNAME:WAT +DTSTART:19120101T000000 +RDATE:19120101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Lome.ics b/mozilla/calendar/libical/zoneinfo/Africa/Lome.ics new file mode 100644 index 00000000000..22133bdfec7 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Lome.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Lome +X-LIC-LOCATION:Africa/Lome +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+000452 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+000452 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:18930101T000000 +RDATE:18930101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Luanda.ics b/mozilla/calendar/libical/zoneinfo/Africa/Luanda.ics new file mode 100644 index 00000000000..b4f49edce22 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Luanda.ics @@ -0,0 +1,29 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Luanda +X-LIC-LOCATION:Africa/Luanda +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+005256 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+005256 +TZOFFSETTO:+005204 +TZNAME:LMT +DTSTART:18920101T000000 +RDATE:18920101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+005204 +TZOFFSETTO:+0100 +TZNAME:WAT +DTSTART:19110526T000000 +RDATE:19110526T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Lubumbashi.ics b/mozilla/calendar/libical/zoneinfo/Africa/Lubumbashi.ics new file mode 100644 index 00000000000..b3350645d38 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Lubumbashi.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Lubumbashi +X-LIC-LOCATION:Africa/Lubumbashi +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+014952 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+014952 +TZOFFSETTO:+0200 +TZNAME:CAT +DTSTART:18971109T000000 +RDATE:18971109T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Lusaka.ics b/mozilla/calendar/libical/zoneinfo/Africa/Lusaka.ics new file mode 100644 index 00000000000..14ef32720f9 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Lusaka.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Lusaka +X-LIC-LOCATION:Africa/Lusaka +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+015308 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+015308 +TZOFFSETTO:+0200 +TZNAME:CAT +DTSTART:19030301T000000 +RDATE:19030301T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Malabo.ics b/mozilla/calendar/libical/zoneinfo/Africa/Malabo.ics new file mode 100644 index 00000000000..27978a435df --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Malabo.ics @@ -0,0 +1,29 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Malabo +X-LIC-LOCATION:Africa/Malabo +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+003508 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+003508 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:19120101T000000 +RDATE:19120101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +TZNAME:WAT +DTSTART:19631215T000000 +RDATE:19631215T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Maputo.ics b/mozilla/calendar/libical/zoneinfo/Africa/Maputo.ics new file mode 100644 index 00000000000..d071698caaa --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Maputo.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Maputo +X-LIC-LOCATION:Africa/Maputo +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+021020 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+021020 +TZOFFSETTO:+0200 +TZNAME:CAT +DTSTART:19030301T000000 +RDATE:19030301T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Maseru.ics b/mozilla/calendar/libical/zoneinfo/Africa/Maseru.ics new file mode 100644 index 00000000000..674f0e044b4 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Maseru.ics @@ -0,0 +1,36 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Maseru +X-LIC-LOCATION:Africa/Maseru +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0150 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0150 +TZOFFSETTO:+0200 +TZNAME:SAST +DTSTART:19030301T000000 +RDATE:19030301T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:SAST +DTSTART:19430919T020000 +RDATE:19430919T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:SAST +DTSTART:19440319T020000 +RDATE:19440319T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Mbabane.ics b/mozilla/calendar/libical/zoneinfo/Africa/Mbabane.ics new file mode 100644 index 00000000000..7eb3264d445 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Mbabane.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Mbabane +X-LIC-LOCATION:Africa/Mbabane +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+020424 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+020424 +TZOFFSETTO:+0200 +TZNAME:SAST +DTSTART:19030301T000000 +RDATE:19030301T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Mogadishu.ics b/mozilla/calendar/libical/zoneinfo/Africa/Mogadishu.ics new file mode 100644 index 00000000000..07572384f9a --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Mogadishu.ics @@ -0,0 +1,36 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Mogadishu +X-LIC-LOCATION:Africa/Mogadishu +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+030128 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+030128 +TZOFFSETTO:+0300 +TZNAME:EAT +DTSTART:18931101T000000 +RDATE:18931101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0230 +TZNAME:BEAT +DTSTART:19310101T000000 +RDATE:19310101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0230 +TZOFFSETTO:+0300 +TZNAME:EAT +DTSTART:19570101T000000 +RDATE:19570101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Monrovia.ics b/mozilla/calendar/libical/zoneinfo/Africa/Monrovia.ics new file mode 100644 index 00000000000..c4ce90fbb4e --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Monrovia.ics @@ -0,0 +1,36 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Monrovia +X-LIC-LOCATION:Africa/Monrovia +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-004308 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-004308 +TZOFFSETTO:-004308 +TZNAME:MMT +DTSTART:18820101T000000 +RDATE:18820101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-004308 +TZOFFSETTO:-004430 +TZNAME:LRT +DTSTART:19190301T000000 +RDATE:19190301T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-004430 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:19720501T000000 +RDATE:19720501T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Nairobi.ics b/mozilla/calendar/libical/zoneinfo/Africa/Nairobi.ics new file mode 100644 index 00000000000..ee76195558e --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Nairobi.ics @@ -0,0 +1,43 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Nairobi +X-LIC-LOCATION:Africa/Nairobi +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+022716 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+022716 +TZOFFSETTO:+0300 +TZNAME:EAT +DTSTART:19280701T000000 +RDATE:19280701T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0230 +TZNAME:BEAT +DTSTART:19300101T000000 +RDATE:19300101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0230 +TZOFFSETTO:+0245 +TZNAME:BEAUT +DTSTART:19400101T000000 +RDATE:19400101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0245 +TZOFFSETTO:+0300 +TZNAME:EAT +DTSTART:19600101T000000 +RDATE:19600101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Ndjamena.ics b/mozilla/calendar/libical/zoneinfo/Africa/Ndjamena.ics new file mode 100644 index 00000000000..e742c9c357b --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Ndjamena.ics @@ -0,0 +1,36 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Ndjamena +X-LIC-LOCATION:Africa/Ndjamena +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+010012 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+010012 +TZOFFSETTO:+0100 +TZNAME:WAT +DTSTART:19120101T000000 +RDATE:19120101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:WAST +DTSTART:19791014T000000 +RDATE:19791014T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:WAT +DTSTART:19800308T000000 +RDATE:19800308T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Niamey.ics b/mozilla/calendar/libical/zoneinfo/Africa/Niamey.ics new file mode 100644 index 00000000000..cb921cfaad4 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Niamey.ics @@ -0,0 +1,36 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Niamey +X-LIC-LOCATION:Africa/Niamey +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+000828 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+000828 +TZOFFSETTO:-0100 +TZNAME:WAT +DTSTART:19120101T000000 +RDATE:19120101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0100 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:19340226T000000 +RDATE:19340226T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +TZNAME:WAT +DTSTART:19600101T000000 +RDATE:19600101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Nouakchott.ics b/mozilla/calendar/libical/zoneinfo/Africa/Nouakchott.ics new file mode 100644 index 00000000000..01890cc99ef --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Nouakchott.ics @@ -0,0 +1,36 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Nouakchott +X-LIC-LOCATION:Africa/Nouakchott +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-010348 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-010348 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:19120101T000000 +RDATE:19120101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-0100 +TZNAME:WAT +DTSTART:19340226T000000 +RDATE:19340226T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0100 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:19601128T000000 +RDATE:19601128T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Ouagadougou.ics b/mozilla/calendar/libical/zoneinfo/Africa/Ouagadougou.ics new file mode 100644 index 00000000000..0c0781b7a3b --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Ouagadougou.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Ouagadougou +X-LIC-LOCATION:Africa/Ouagadougou +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-000604 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-000604 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:19120101T000000 +RDATE:19120101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Porto-Novo.ics b/mozilla/calendar/libical/zoneinfo/Africa/Porto-Novo.ics new file mode 100644 index 00000000000..a7e8f6b04e9 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Porto-Novo.ics @@ -0,0 +1,29 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Porto-Novo +X-LIC-LOCATION:Africa/Porto-Novo +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+001028 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+001028 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:19120101T000000 +RDATE:19120101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +TZNAME:WAT +DTSTART:19340226T000000 +RDATE:19340226T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Sao_Tome.ics b/mozilla/calendar/libical/zoneinfo/Africa/Sao_Tome.ics new file mode 100644 index 00000000000..d9da25497de --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Sao_Tome.ics @@ -0,0 +1,29 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Sao_Tome +X-LIC-LOCATION:Africa/Sao_Tome +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+002656 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+002656 +TZOFFSETTO:-003632 +TZNAME:LMT +DTSTART:18840101T000000 +RDATE:18840101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-003632 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:19120101T000000 +RDATE:19120101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Timbuktu.ics b/mozilla/calendar/libical/zoneinfo/Africa/Timbuktu.ics new file mode 100644 index 00000000000..b84b842675a --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Timbuktu.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Timbuktu +X-LIC-LOCATION:Africa/Timbuktu +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-001204 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-001204 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:19120101T000000 +RDATE:19120101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Tripoli.ics b/mozilla/calendar/libical/zoneinfo/Africa/Tripoli.ics new file mode 100644 index 00000000000..d10dce31dab --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Tripoli.ics @@ -0,0 +1,74 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Tripoli +X-LIC-LOCATION:Africa/Tripoli +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+005244 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+005244 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19200101T000000 +RDATE:19200101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19511014T020000 +RDATE:19511014T020000 +RDATE:19531009T020000 +RDATE:19550930T000000 +RDATE:19820401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850406T000000 +RDATE:19860404T000000 +RDATE:19870401T000000 +RDATE:19880401T000000 +RDATE:19890401T000000 +RDATE:19970404T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19520101T000000 +RDATE:19520101T000000 +RDATE:19540101T000000 +RDATE:19560101T000000 +RDATE:19820101T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19841001T000000 +RDATE:19851001T000000 +RDATE:19861003T000000 +RDATE:19871001T000000 +RDATE:19881001T000000 +RDATE:19891001T000000 +RDATE:19960930T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19590101T000000 +RDATE:19590101T000000 +RDATE:19900504T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19971004T000000 +RDATE:19971004T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Tunis.ics b/mozilla/calendar/libical/zoneinfo/Africa/Tunis.ics new file mode 100644 index 00000000000..f9ee09f1b2c --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Tunis.ics @@ -0,0 +1,65 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Tunis +X-LIC-LOCATION:Africa/Tunis +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+004044 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+004044 +TZOFFSETTO:+000921 +TZNAME:PMT +DTSTART:18810512T000000 +RDATE:18810512T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+000921 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19110311T000000 +RDATE:19110311T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19390415T230000 +RDATE:19390415T230000 +RDATE:19400225T230000 +RDATE:19420309T000000 +RDATE:19430329T020000 +RDATE:19430425T020000 +RDATE:19440403T020000 +RDATE:19450402T020000 +RDATE:19770430T000000 +RDATE:19780501T000000 +RDATE:19880601T000000 +RDATE:19890326T000000 +RDATE:19900501T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19391119T000000 +RDATE:19391119T000000 +RDATE:19411006T000000 +RDATE:19421102T030000 +RDATE:19430417T020000 +RDATE:19431004T020000 +RDATE:19441008T000000 +RDATE:19450916T000000 +RDATE:19770924T010000 +RDATE:19781001T010000 +RDATE:19880925T010000 +RDATE:19890924T010000 +RDATE:19900930T010000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Africa/Windhoek.ics b/mozilla/calendar/libical/zoneinfo/Africa/Windhoek.ics new file mode 100644 index 00000000000..82701f8937e --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Africa/Windhoek.ics @@ -0,0 +1,71 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Africa/Windhoek +X-LIC-LOCATION:Africa/Windhoek +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:WAST +DTSTART:19940904T020000 +RRULE:FREQ=YEARLY;BYMONTH=9;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:WAT +DTSTART:19950402T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+010824 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+010824 +TZOFFSETTO:+0130 +TZNAME:SWAT +DTSTART:18920208T000000 +RDATE:18920208T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0130 +TZOFFSETTO:+0200 +TZNAME:SAST +DTSTART:19030301T000000 +RDATE:19030301T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:SAST +DTSTART:19420920T020000 +RDATE:19420920T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:SAST +DTSTART:19430321T020000 +RDATE:19430321T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0200 +TZNAME:CAT +DTSTART:19900321T000000 +RDATE:19900321T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:WAT +DTSTART:19940403T000000 +RDATE:19940403T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Adak.ics b/mozilla/calendar/libical/zoneinfo/America/Adak.ics new file mode 100644 index 00000000000..cd4f663c4f9 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Adak.ics @@ -0,0 +1,137 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Adak +X-LIC-LOCATION:America/Adak +BEGIN:STANDARD +TZOFFSETFROM:-0900 +TZOFFSETTO:-1000 +TZNAME:HAST +DTSTART:19841028T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-1000 +TZOFFSETTO:-0900 +TZNAME:HADT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+121321 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+121321 +TZOFFSETTO:-114638 +TZNAME:LMT +DTSTART:18671018T000000 +RDATE:18671018T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-114638 +TZOFFSETTO:-1100 +TZNAME:NST +DTSTART:19000820T120000 +RDATE:19000820T120000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-1100 +TZOFFSETTO:-1100 +TZNAME:NST +DTSTART:19420101T000000 +RDATE:19420101T000000 +RDATE:19460101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-1100 +TZOFFSETTO:-1000 +TZNAME:NWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:-1000 +TZOFFSETTO:-1000 +TZNAME:NPT +DTSTART:19450814T130000 +RDATE:19450814T130000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-1000 +TZOFFSETTO:-1100 +TZNAME:NST +DTSTART:19450930T020000 +RDATE:19450930T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-1100 +TZOFFSETTO:-1100 +TZNAME:BST +DTSTART:19670401T000000 +RDATE:19670401T000000 +RDATE:19690101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-1100 +TZOFFSETTO:-1000 +TZNAME:BDT +DTSTART:19690427T020000 +RDATE:19690427T020000 +RDATE:19700426T020000 +RDATE:19710425T020000 +RDATE:19720430T020000 +RDATE:19730429T020000 +RDATE:19740106T020000 +RDATE:19750223T020000 +RDATE:19760425T020000 +RDATE:19770424T020000 +RDATE:19780430T020000 +RDATE:19790429T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-1000 +TZOFFSETTO:-1100 +TZNAME:BST +DTSTART:19691026T020000 +RDATE:19691026T020000 +RDATE:19701025T020000 +RDATE:19711031T020000 +RDATE:19721029T020000 +RDATE:19731028T020000 +RDATE:19741027T020000 +RDATE:19751026T020000 +RDATE:19761031T020000 +RDATE:19771030T020000 +RDATE:19781029T020000 +RDATE:19791028T020000 +RDATE:19801026T020000 +RDATE:19811025T020000 +RDATE:19821031T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-1000 +TZOFFSETTO:-1000 +TZNAME:HAST +DTSTART:19831030T020000 +RDATE:19831030T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-1000 +TZOFFSETTO:-0900 +TZNAME:HADT +DTSTART:19840429T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Anchorage.ics b/mozilla/calendar/libical/zoneinfo/America/Anchorage.ics new file mode 100644 index 00000000000..5bbfefea288 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Anchorage.ics @@ -0,0 +1,137 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Anchorage +X-LIC-LOCATION:America/Anchorage +BEGIN:STANDARD +TZOFFSETFROM:-0800 +TZOFFSETTO:-0900 +TZNAME:AKST +DTSTART:19841028T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0900 +TZOFFSETTO:-0800 +TZNAME:AKDT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+140024 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+140024 +TZOFFSETTO:-095936 +TZNAME:LMT +DTSTART:18671018T000000 +RDATE:18671018T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-095936 +TZOFFSETTO:-1000 +TZNAME:CAT +DTSTART:19000820T120000 +RDATE:19000820T120000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-1000 +TZOFFSETTO:-1000 +TZNAME:CAT +DTSTART:19420101T000000 +RDATE:19420101T000000 +RDATE:19460101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-1000 +TZOFFSETTO:-0900 +TZNAME:CAWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:-0900 +TZOFFSETTO:-0900 +TZNAME:CAWT +DTSTART:19450814T140000 +RDATE:19450814T140000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0900 +TZOFFSETTO:-1000 +TZNAME:CAT +DTSTART:19450930T020000 +RDATE:19450930T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-1000 +TZOFFSETTO:-1000 +TZNAME:AHST +DTSTART:19670401T000000 +RDATE:19670401T000000 +RDATE:19690101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-1000 +TZOFFSETTO:-0900 +TZNAME:AHDT +DTSTART:19690427T020000 +RDATE:19690427T020000 +RDATE:19700426T020000 +RDATE:19710425T020000 +RDATE:19720430T020000 +RDATE:19730429T020000 +RDATE:19740106T020000 +RDATE:19750223T020000 +RDATE:19760425T020000 +RDATE:19770424T020000 +RDATE:19780430T020000 +RDATE:19790429T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0900 +TZOFFSETTO:-1000 +TZNAME:AHST +DTSTART:19691026T020000 +RDATE:19691026T020000 +RDATE:19701025T020000 +RDATE:19711031T020000 +RDATE:19721029T020000 +RDATE:19731028T020000 +RDATE:19741027T020000 +RDATE:19751026T020000 +RDATE:19761031T020000 +RDATE:19771030T020000 +RDATE:19781029T020000 +RDATE:19791028T020000 +RDATE:19801026T020000 +RDATE:19811025T020000 +RDATE:19821031T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0900 +TZOFFSETTO:-0900 +TZNAME:AKST +DTSTART:19831030T020000 +RDATE:19831030T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0900 +TZOFFSETTO:-0800 +TZNAME:AKDT +DTSTART:19840429T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Anguilla.ics b/mozilla/calendar/libical/zoneinfo/America/Anguilla.ics new file mode 100644 index 00000000000..827282e4f36 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Anguilla.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Anguilla +X-LIC-LOCATION:America/Anguilla +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-041216 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-041216 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19120302T000000 +RDATE:19120302T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Antigua.ics b/mozilla/calendar/libical/zoneinfo/America/Antigua.ics new file mode 100644 index 00000000000..788e1127772 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Antigua.ics @@ -0,0 +1,29 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Antigua +X-LIC-LOCATION:America/Antigua +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-040712 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-040712 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19120302T000000 +RDATE:19120302T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19510101T000000 +RDATE:19510101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Araguaina.ics b/mozilla/calendar/libical/zoneinfo/America/Araguaina.ics new file mode 100644 index 00000000000..4309dfa0812 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Araguaina.ics @@ -0,0 +1,98 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Araguaina +X-LIC-LOCATION:America/Araguaina +BEGIN:DAYLIGHT +TZOFFSETFROM:-0300 +TZOFFSETTO:-0200 +TZNAME:BRST +DTSTART:20001008T000000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=8,9,10,11,12,13,14;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0200 +TZOFFSETTO:-0300 +TZNAME:BRT +DTSTART:20010218T000000 +RRULE:FREQ=YEARLY;BYMONTH=2;BYMONTHDAY=15,16,17,18,19,20,21;BYDAY=SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-031248 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-031248 +TZOFFSETTO:-0300 +TZNAME:BRT +DTSTART:19140101T000000 +RDATE:19140101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0300 +TZOFFSETTO:-0200 +TZNAME:BRST +DTSTART:19311003T110000 +RDATE:19311003T110000 +RDATE:19321003T000000 +RDATE:19491201T000000 +RDATE:19501201T000000 +RDATE:19511201T000000 +RDATE:19521201T000000 +RDATE:19631209T000000 +RDATE:19650131T000000 +RDATE:19651201T000000 +RDATE:19661101T000000 +RDATE:19671101T000000 +RDATE:19851102T000000 +RDATE:19861025T000000 +RDATE:19871025T000000 +RDATE:19881016T000000 +RDATE:19891015T000000 +RDATE:19951015T000000 +RDATE:19961006T000000 +RDATE:19971006T000000 +RDATE:19981011T000000 +RDATE:19991003T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0200 +TZOFFSETTO:-0300 +TZNAME:BRT +DTSTART:19320401T000000 +RDATE:19320401T000000 +RDATE:19330401T000000 +RDATE:19500416T010000 +RDATE:19510401T000000 +RDATE:19520401T000000 +RDATE:19530301T000000 +RDATE:19640301T000000 +RDATE:19650331T000000 +RDATE:19660301T000000 +RDATE:19670301T000000 +RDATE:19680301T000000 +RDATE:19860315T000000 +RDATE:19870214T000000 +RDATE:19880207T000000 +RDATE:19890129T000000 +RDATE:19900211T000000 +RDATE:19960211T000000 +RDATE:19970216T000000 +RDATE:19980301T000000 +RDATE:19990221T000000 +RDATE:20000227T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0300 +TZNAME:BRT +DTSTART:19900917T000000 +RDATE:19900917T000000 +RDATE:19950914T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Aruba.ics b/mozilla/calendar/libical/zoneinfo/America/Aruba.ics new file mode 100644 index 00000000000..1c8affa68d2 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Aruba.ics @@ -0,0 +1,29 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Aruba +X-LIC-LOCATION:America/Aruba +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-044024 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-044024 +TZOFFSETTO:-0430 +TZNAME:ANT +DTSTART:19120212T000000 +RDATE:19120212T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0430 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19650101T000000 +RDATE:19650101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Asuncion.ics b/mozilla/calendar/libical/zoneinfo/America/Asuncion.ics new file mode 100644 index 00000000000..43b7948b604 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Asuncion.ics @@ -0,0 +1,113 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Asuncion +X-LIC-LOCATION:America/Asuncion +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:PYST +DTSTART:19961006T000000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0400 +TZNAME:PYT +DTSTART:19980301T000000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-035040 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-035040 +TZOFFSETTO:-035040 +TZNAME:AMT +DTSTART:18900101T000000 +RDATE:18900101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-035040 +TZOFFSETTO:-0400 +TZNAME:PYT +DTSTART:19311010T000000 +RDATE:19311010T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:PYT +DTSTART:19721001T000000 +RDATE:19721001T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0400 +TZNAME:PYT +DTSTART:19740401T000000 +RDATE:19740401T000000 +RDATE:19760301T000000 +RDATE:19770301T000000 +RDATE:19780301T000000 +RDATE:19790401T000000 +RDATE:19800401T000000 +RDATE:19810401T000000 +RDATE:19820401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850401T000000 +RDATE:19860401T000000 +RDATE:19870401T000000 +RDATE:19880401T000000 +RDATE:19890401T000000 +RDATE:19900401T000000 +RDATE:19910401T000000 +RDATE:19920301T000000 +RDATE:19930331T000000 +RDATE:19940227T000000 +RDATE:19950226T000000 +RDATE:19960301T000000 +RDATE:19970223T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0400 +TZNAME:PYT +DTSTART:19750301T000000 +RDATE:19750301T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:PYST +DTSTART:19751001T000000 +RDATE:19751001T000000 +RDATE:19761001T000000 +RDATE:19771001T000000 +RDATE:19781001T000000 +RDATE:19791001T000000 +RDATE:19801001T000000 +RDATE:19811001T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19841001T000000 +RDATE:19851001T000000 +RDATE:19861001T000000 +RDATE:19871001T000000 +RDATE:19881001T000000 +RDATE:19891022T000000 +RDATE:19901001T000000 +RDATE:19911006T000000 +RDATE:19921005T000000 +RDATE:19931001T000000 +RDATE:19941001T000000 +RDATE:19951001T000000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Barbados.ics b/mozilla/calendar/libical/zoneinfo/America/Barbados.ics new file mode 100644 index 00000000000..2cc28f432e8 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Barbados.ics @@ -0,0 +1,49 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Barbados +X-LIC-LOCATION:America/Barbados +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-035828 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-035828 +TZOFFSETTO:-035828 +TZNAME:BMT +DTSTART:19240101T000000 +RDATE:19240101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-035828 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19320101T000000 +RDATE:19320101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:ADT +DTSTART:19770612T020000 +RDATE:19770612T020000 +RDATE:19780416T020000 +RDATE:19790415T020000 +RDATE:19800420T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19771002T020000 +RDATE:19771002T020000 +RDATE:19781001T020000 +RDATE:19790930T020000 +RDATE:19800925T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Belem.ics b/mozilla/calendar/libical/zoneinfo/America/Belem.ics new file mode 100644 index 00000000000..46d81974c21 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Belem.ics @@ -0,0 +1,69 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Belem +X-LIC-LOCATION:America/Belem +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-031356 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-031356 +TZOFFSETTO:-0300 +TZNAME:BRT +DTSTART:19140101T000000 +RDATE:19140101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0300 +TZOFFSETTO:-0200 +TZNAME:BRST +DTSTART:19311003T110000 +RDATE:19311003T110000 +RDATE:19321003T000000 +RDATE:19491201T000000 +RDATE:19501201T000000 +RDATE:19511201T000000 +RDATE:19521201T000000 +RDATE:19631209T000000 +RDATE:19650131T000000 +RDATE:19651201T000000 +RDATE:19661101T000000 +RDATE:19671101T000000 +RDATE:19851102T000000 +RDATE:19861025T000000 +RDATE:19871025T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0200 +TZOFFSETTO:-0300 +TZNAME:BRT +DTSTART:19320401T000000 +RDATE:19320401T000000 +RDATE:19330401T000000 +RDATE:19500416T010000 +RDATE:19510401T000000 +RDATE:19520401T000000 +RDATE:19530301T000000 +RDATE:19640301T000000 +RDATE:19650331T000000 +RDATE:19660301T000000 +RDATE:19670301T000000 +RDATE:19680301T000000 +RDATE:19860315T000000 +RDATE:19870214T000000 +RDATE:19880207T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0300 +TZNAME:BRT +DTSTART:19880912T000000 +RDATE:19880912T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Belize.ics b/mozilla/calendar/libical/zoneinfo/America/Belize.ics new file mode 100644 index 00000000000..660dacdfeef --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Belize.ics @@ -0,0 +1,100 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Belize +X-LIC-LOCATION:America/Belize +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-055248 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-055248 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19120401T000000 +RDATE:19120401T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0530 +TZNAME:CHDT +DTSTART:19181006T000000 +RDATE:19181006T000000 +RDATE:19191005T000000 +RDATE:19201003T000000 +RDATE:19211002T000000 +RDATE:19221008T000000 +RDATE:19231007T000000 +RDATE:19241005T000000 +RDATE:19251004T000000 +RDATE:19261003T000000 +RDATE:19271002T000000 +RDATE:19281007T000000 +RDATE:19291006T000000 +RDATE:19301005T000000 +RDATE:19311004T000000 +RDATE:19321002T000000 +RDATE:19331008T000000 +RDATE:19341007T000000 +RDATE:19351006T000000 +RDATE:19361004T000000 +RDATE:19371003T000000 +RDATE:19381002T000000 +RDATE:19391008T000000 +RDATE:19401006T000000 +RDATE:19411005T000000 +RDATE:19421004T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0530 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19190209T000000 +RDATE:19190209T000000 +RDATE:19200215T000000 +RDATE:19210213T000000 +RDATE:19220212T000000 +RDATE:19230211T000000 +RDATE:19240210T000000 +RDATE:19250215T000000 +RDATE:19260214T000000 +RDATE:19270213T000000 +RDATE:19280212T000000 +RDATE:19290210T000000 +RDATE:19300209T000000 +RDATE:19310215T000000 +RDATE:19320214T000000 +RDATE:19330212T000000 +RDATE:19340211T000000 +RDATE:19350210T000000 +RDATE:19360209T000000 +RDATE:19370214T000000 +RDATE:19380213T000000 +RDATE:19390212T000000 +RDATE:19400211T000000 +RDATE:19410209T000000 +RDATE:19420215T000000 +RDATE:19430214T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:19731205T000000 +RDATE:19731205T000000 +RDATE:19821218T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19740209T000000 +RDATE:19740209T000000 +RDATE:19830212T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Boa_Vista.ics b/mozilla/calendar/libical/zoneinfo/America/Boa_Vista.ics new file mode 100644 index 00000000000..4e00df4da58 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Boa_Vista.ics @@ -0,0 +1,74 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Boa_Vista +X-LIC-LOCATION:America/Boa_Vista +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-040240 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-040240 +TZOFFSETTO:-0400 +TZNAME:AMT +DTSTART:19140101T000000 +RDATE:19140101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:AMST +DTSTART:19311003T110000 +RDATE:19311003T110000 +RDATE:19321003T000000 +RDATE:19491201T000000 +RDATE:19501201T000000 +RDATE:19511201T000000 +RDATE:19521201T000000 +RDATE:19631209T000000 +RDATE:19650131T000000 +RDATE:19651201T000000 +RDATE:19661101T000000 +RDATE:19671101T000000 +RDATE:19851102T000000 +RDATE:19861025T000000 +RDATE:19871025T000000 +RDATE:19991003T000000 +RDATE:20001008T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0400 +TZNAME:AMT +DTSTART:19320401T000000 +RDATE:19320401T000000 +RDATE:19330401T000000 +RDATE:19500416T010000 +RDATE:19510401T000000 +RDATE:19520401T000000 +RDATE:19530301T000000 +RDATE:19640301T000000 +RDATE:19650331T000000 +RDATE:19660301T000000 +RDATE:19670301T000000 +RDATE:19680301T000000 +RDATE:19860315T000000 +RDATE:19870214T000000 +RDATE:19880207T000000 +RDATE:20000227T000000 +RDATE:20001015T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0400 +TZNAME:AMT +DTSTART:19880912T000000 +RDATE:19880912T000000 +RDATE:19990930T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Bogota.ics b/mozilla/calendar/libical/zoneinfo/America/Bogota.ics new file mode 100644 index 00000000000..22519f500fe --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Bogota.ics @@ -0,0 +1,43 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Bogota +X-LIC-LOCATION:America/Bogota +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-045620 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-045620 +TZOFFSETTO:-045620 +TZNAME:BMT +DTSTART:18840313T000000 +RDATE:18840313T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-045620 +TZOFFSETTO:-0500 +TZNAME:COT +DTSTART:19141123T000000 +RDATE:19141123T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:COST +DTSTART:19920502T000000 +RDATE:19920502T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:COT +DTSTART:19921231T000000 +RDATE:19921231T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Boise.ics b/mozilla/calendar/libical/zoneinfo/America/Boise.ics new file mode 100644 index 00000000000..3b5020f62d9 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Boise.ics @@ -0,0 +1,121 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Boise +X-LIC-LOCATION:America/Boise +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19751026T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:MDT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-074449 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-074449 +TZOFFSETTO:-0800 +TZNAME:PST +DTSTART:18831118T120000 +RDATE:18831118T120000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +DTSTART:19180331T020000 +RDATE:19180331T020000 +RDATE:19190330T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +DTSTART:19181027T020000 +RDATE:19181027T020000 +RDATE:19191026T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19230513T020000 +RDATE:19230513T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:MWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0600 +TZNAME:MPT +DTSTART:19450814T170000 +RDATE:19450814T170000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19450930T020000 +RDATE:19450930T020000 +RDATE:19671029T020000 +RDATE:19681027T020000 +RDATE:19691026T020000 +RDATE:19701025T020000 +RDATE:19711031T020000 +RDATE:19721029T020000 +RDATE:19731028T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:MDT +DTSTART:19670430T020000 +RDATE:19670430T020000 +RDATE:19680428T020000 +RDATE:19690427T020000 +RDATE:19700426T020000 +RDATE:19710425T020000 +RDATE:19720430T020000 +RDATE:19730429T020000 +RDATE:19750223T020000 +RDATE:19760425T020000 +RDATE:19770424T020000 +RDATE:19780430T020000 +RDATE:19790429T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0700 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19740101T000000 +RDATE:19740101T000000 +RDATE:19740203T020000 +RDATE:19741027T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Buenos_Aires.ics b/mozilla/calendar/libical/zoneinfo/America/Buenos_Aires.ics new file mode 100644 index 00000000000..6601bdfdc7d --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Buenos_Aires.ics @@ -0,0 +1,138 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Buenos_Aires +X-LIC-LOCATION:America/Buenos_Aires +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-035348 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-035348 +TZOFFSETTO:-041644 +TZNAME:CMT +DTSTART:18941101T000000 +RDATE:18941101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-041644 +TZOFFSETTO:-0400 +TZNAME:ART +DTSTART:19200501T000000 +RDATE:19200501T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:ARST +DTSTART:19301201T000000 +RDATE:19301201T000000 +RDATE:19311015T000000 +RDATE:19321101T000000 +RDATE:19331101T000000 +RDATE:19341101T000000 +RDATE:19351101T000000 +RDATE:19361101T000000 +RDATE:19371101T000000 +RDATE:19381101T000000 +RDATE:19391101T000000 +RDATE:19400701T000000 +RDATE:19411015T000000 +RDATE:19431015T000000 +RDATE:19461001T000000 +RDATE:19631215T000000 +RDATE:19641015T000000 +RDATE:19651015T000000 +RDATE:19661015T000000 +RDATE:19671001T000000 +RDATE:19681006T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0400 +TZNAME:ART +DTSTART:19310401T000000 +RDATE:19310401T000000 +RDATE:19320301T000000 +RDATE:19330301T000000 +RDATE:19340301T000000 +RDATE:19350301T000000 +RDATE:19360301T000000 +RDATE:19370301T000000 +RDATE:19380301T000000 +RDATE:19390301T000000 +RDATE:19400301T000000 +RDATE:19410615T000000 +RDATE:19430801T000000 +RDATE:19460301T000000 +RDATE:19631001T000000 +RDATE:19640301T000000 +RDATE:19650301T000000 +RDATE:19660301T000000 +RDATE:19670401T000000 +RDATE:19680407T000000 +RDATE:19690406T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:ART +DTSTART:19691005T000000 +RDATE:19691005T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0300 +TZOFFSETTO:-0200 +TZNAME:ARST +DTSTART:19740123T000000 +RDATE:19740123T000000 +RDATE:19741006T000000 +RDATE:19751005T000000 +RDATE:19761003T000000 +RDATE:19851102T000000 +RDATE:19861025T000000 +RDATE:19871025T000000 +RDATE:19881201T000000 +RDATE:19891015T000000 +RDATE:19901021T000000 +RDATE:19911020T000000 +RDATE:19921018T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0200 +TZOFFSETTO:-0300 +TZNAME:ART +DTSTART:19740501T000000 +RDATE:19740501T000000 +RDATE:19750406T000000 +RDATE:19760404T000000 +RDATE:19770403T000000 +RDATE:19860314T000000 +RDATE:19870213T000000 +RDATE:19880207T000000 +RDATE:19890305T000000 +RDATE:19900304T000000 +RDATE:19910303T000000 +RDATE:19920301T000000 +RDATE:19930307T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0300 +TZOFFSETTO:-0300 +TZNAME:ARST +DTSTART:19991003T000000 +RDATE:19991003T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0300 +TZNAME:ART +DTSTART:20000303T000000 +RDATE:20000303T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Cambridge_Bay.ics b/mozilla/calendar/libical/zoneinfo/America/Cambridge_Bay.ics new file mode 100644 index 00000000000..803d52dbe7c --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Cambridge_Bay.ics @@ -0,0 +1,149 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Cambridge_Bay +X-LIC-LOCATION:America/Cambridge_Bay +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:MDT +DTSTART:20020407T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:20021027T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-070020 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-070020 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:18840101T000000 +RDATE:18840101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:MDT +DTSTART:19180414T020000 +RDATE:19180414T020000 +RDATE:19190525T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +RDATE:19870405T020000 +RDATE:19880403T020000 +RDATE:19890402T020000 +RDATE:19900401T020000 +RDATE:19910407T020000 +RDATE:19920405T020000 +RDATE:19930404T020000 +RDATE:19940403T020000 +RDATE:19950402T020000 +RDATE:19960407T020000 +RDATE:19970406T020000 +RDATE:19980405T020000 +RDATE:19990404T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19181027T020000 +RDATE:19181027T020000 +RDATE:19191101T000000 +RDATE:19450930T020000 +RDATE:19801026T020000 +RDATE:19811025T020000 +RDATE:19821031T020000 +RDATE:19831030T020000 +RDATE:19841028T020000 +RDATE:19851027T020000 +RDATE:19861026T020000 +RDATE:19871025T020000 +RDATE:19881030T020000 +RDATE:19891029T020000 +RDATE:19901028T020000 +RDATE:19911027T020000 +RDATE:19921025T020000 +RDATE:19931031T020000 +RDATE:19941030T020000 +RDATE:19951029T020000 +RDATE:19961027T020000 +RDATE:19971026T020000 +RDATE:19981025T020000 +RDATE:20010401T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:MWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0500 +TZNAME:MDDT +DTSTART:19650425T000000 +RDATE:19650425T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19651031T020000 +RDATE:19651031T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19991031T020000 +RDATE:19991031T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:20000402T020000 +RDATE:20000402T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:20001029T020000 +RDATE:20001029T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:20001105T000000 +RDATE:20001105T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0700 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:20011028T020000 +RDATE:20011028T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Cancun.ics b/mozilla/calendar/libical/zoneinfo/America/Cancun.ics new file mode 100644 index 00000000000..d07558e947f --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Cancun.ics @@ -0,0 +1,90 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Cancun +X-LIC-LOCATION:America/Cancun +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:20010506T020000 +RRULE:FREQ=YEARLY;BYMONTH=5;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:20010930T020000 +RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-054704 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-054704 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19220101T001256 +RDATE:19220101T001256 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19811223T000000 +RDATE:19811223T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +DTSTART:19960407T020000 +RDATE:19960407T020000 +RDATE:19970406T020000 +RDATE:19980405T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19961027T020000 +RDATE:19961027T020000 +RDATE:19971026T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19980802T020000 +RDATE:19980802T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19981025T020000 +RDATE:19981025T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:19990404T020000 +RDATE:19990404T020000 +RDATE:20000402T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19991031T020000 +RDATE:19991031T020000 +RDATE:20001029T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Caracas.ics b/mozilla/calendar/libical/zoneinfo/America/Caracas.ics new file mode 100644 index 00000000000..6efc2c9af33 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Caracas.ics @@ -0,0 +1,36 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Caracas +X-LIC-LOCATION:America/Caracas +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-042744 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-042744 +TZOFFSETTO:-042744 +TZNAME:CMT +DTSTART:18900101T000000 +RDATE:18900101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-042744 +TZOFFSETTO:-0430 +TZNAME:VET +DTSTART:19120212T000000 +RDATE:19120212T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0430 +TZOFFSETTO:-0400 +TZNAME:VET +DTSTART:19650101T000000 +RDATE:19650101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Catamarca.ics b/mozilla/calendar/libical/zoneinfo/America/Catamarca.ics new file mode 100644 index 00000000000..f2b99821ee0 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Catamarca.ics @@ -0,0 +1,137 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Catamarca +X-LIC-LOCATION:America/Catamarca +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-042308 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-042308 +TZOFFSETTO:-041644 +TZNAME:CMT +DTSTART:18941101T000000 +RDATE:18941101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-041644 +TZOFFSETTO:-0400 +TZNAME:ART +DTSTART:19200501T000000 +RDATE:19200501T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:ARST +DTSTART:19301201T000000 +RDATE:19301201T000000 +RDATE:19311015T000000 +RDATE:19321101T000000 +RDATE:19331101T000000 +RDATE:19341101T000000 +RDATE:19351101T000000 +RDATE:19361101T000000 +RDATE:19371101T000000 +RDATE:19381101T000000 +RDATE:19391101T000000 +RDATE:19400701T000000 +RDATE:19411015T000000 +RDATE:19431015T000000 +RDATE:19461001T000000 +RDATE:19631215T000000 +RDATE:19641015T000000 +RDATE:19651015T000000 +RDATE:19661015T000000 +RDATE:19671001T000000 +RDATE:19681006T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0400 +TZNAME:ART +DTSTART:19310401T000000 +RDATE:19310401T000000 +RDATE:19320301T000000 +RDATE:19330301T000000 +RDATE:19340301T000000 +RDATE:19350301T000000 +RDATE:19360301T000000 +RDATE:19370301T000000 +RDATE:19380301T000000 +RDATE:19390301T000000 +RDATE:19400301T000000 +RDATE:19410615T000000 +RDATE:19430801T000000 +RDATE:19460301T000000 +RDATE:19631001T000000 +RDATE:19640301T000000 +RDATE:19650301T000000 +RDATE:19660301T000000 +RDATE:19670401T000000 +RDATE:19680407T000000 +RDATE:19690406T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:ART +DTSTART:19691005T000000 +RDATE:19691005T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0300 +TZOFFSETTO:-0200 +TZNAME:ARST +DTSTART:19740123T000000 +RDATE:19740123T000000 +RDATE:19741006T000000 +RDATE:19751005T000000 +RDATE:19761003T000000 +RDATE:19851102T000000 +RDATE:19861025T000000 +RDATE:19871025T000000 +RDATE:19881201T000000 +RDATE:19891015T000000 +RDATE:19911020T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0200 +TZOFFSETTO:-0300 +TZNAME:ART +DTSTART:19740501T000000 +RDATE:19740501T000000 +RDATE:19750406T000000 +RDATE:19760404T000000 +RDATE:19770403T000000 +RDATE:19860314T000000 +RDATE:19870213T000000 +RDATE:19880207T000000 +RDATE:19890305T000000 +RDATE:19900304T000000 +RDATE:19920301T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0300 +TZNAME:ART +DTSTART:19900701T000000 +RDATE:19900701T000000 +RDATE:19910701T000000 +RDATE:19920701T000000 +RDATE:20000303T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0300 +TZOFFSETTO:-0300 +TZNAME:ARST +DTSTART:19991003T000000 +RDATE:19991003T000000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Cayenne.ics b/mozilla/calendar/libical/zoneinfo/America/Cayenne.ics new file mode 100644 index 00000000000..56298a3072f --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Cayenne.ics @@ -0,0 +1,29 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Cayenne +X-LIC-LOCATION:America/Cayenne +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-032920 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-032920 +TZOFFSETTO:-0400 +TZNAME:GFT +DTSTART:19110701T000000 +RDATE:19110701T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:GFT +DTSTART:19671001T000000 +RDATE:19671001T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Cayman.ics b/mozilla/calendar/libical/zoneinfo/America/Cayman.ics new file mode 100644 index 00000000000..e8e21141cbe --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Cayman.ics @@ -0,0 +1,29 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Cayman +X-LIC-LOCATION:America/Cayman +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-052532 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-052532 +TZOFFSETTO:-050712 +TZNAME:KMT +DTSTART:18900101T000000 +RDATE:18900101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-050712 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19120201T000000 +RDATE:19120201T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Chicago.ics b/mozilla/calendar/libical/zoneinfo/America/Chicago.ics new file mode 100644 index 00000000000..c8fc0f79375 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Chicago.ics @@ -0,0 +1,177 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Chicago +X-LIC-LOCATION:America/Chicago +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19551030T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-055036 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-055036 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:18831118T120000 +RDATE:18831118T120000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:19180331T020000 +RDATE:19180331T020000 +RDATE:19190330T020000 +RDATE:19200613T020000 +RDATE:19210327T020000 +RDATE:19220430T020000 +RDATE:19230429T020000 +RDATE:19240427T020000 +RDATE:19250426T020000 +RDATE:19260425T020000 +RDATE:19270424T020000 +RDATE:19280429T020000 +RDATE:19290428T020000 +RDATE:19300427T020000 +RDATE:19310426T020000 +RDATE:19320424T020000 +RDATE:19330430T020000 +RDATE:19340429T020000 +RDATE:19350428T020000 +RDATE:19370425T020000 +RDATE:19380424T020000 +RDATE:19390430T020000 +RDATE:19400428T020000 +RDATE:19410427T020000 +RDATE:19460428T020000 +RDATE:19470427T020000 +RDATE:19480425T020000 +RDATE:19490424T020000 +RDATE:19500430T020000 +RDATE:19510429T020000 +RDATE:19520427T020000 +RDATE:19530426T020000 +RDATE:19540425T020000 +RDATE:19550424T020000 +RDATE:19560429T020000 +RDATE:19570428T020000 +RDATE:19580427T020000 +RDATE:19590426T020000 +RDATE:19600424T020000 +RDATE:19610430T020000 +RDATE:19620429T020000 +RDATE:19630428T020000 +RDATE:19640426T020000 +RDATE:19650425T020000 +RDATE:19660424T020000 +RDATE:19670430T020000 +RDATE:19680428T020000 +RDATE:19690427T020000 +RDATE:19700426T020000 +RDATE:19710425T020000 +RDATE:19720430T020000 +RDATE:19730429T020000 +RDATE:19740106T020000 +RDATE:19750223T020000 +RDATE:19760425T020000 +RDATE:19770424T020000 +RDATE:19780430T020000 +RDATE:19790429T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19181027T020000 +RDATE:19181027T020000 +RDATE:19191026T020000 +RDATE:19201031T020000 +RDATE:19211030T020000 +RDATE:19220924T020000 +RDATE:19230930T020000 +RDATE:19240928T020000 +RDATE:19250927T020000 +RDATE:19260926T020000 +RDATE:19270925T020000 +RDATE:19280930T020000 +RDATE:19290929T020000 +RDATE:19300928T020000 +RDATE:19310927T020000 +RDATE:19320925T020000 +RDATE:19330924T020000 +RDATE:19340930T020000 +RDATE:19350929T020000 +RDATE:19361115T020000 +RDATE:19370926T020000 +RDATE:19380925T020000 +RDATE:19390924T020000 +RDATE:19400929T020000 +RDATE:19410928T020000 +RDATE:19450930T020000 +RDATE:19460929T020000 +RDATE:19470928T020000 +RDATE:19480926T020000 +RDATE:19490925T020000 +RDATE:19500924T020000 +RDATE:19510930T020000 +RDATE:19520928T020000 +RDATE:19530927T020000 +RDATE:19540926T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19200101T000000 +RDATE:19200101T000000 +RDATE:19420101T000000 +RDATE:19460101T000000 +RDATE:19670101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19360301T020000 +RDATE:19360301T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0500 +TZNAME:CPT +DTSTART:19450814T180000 +RDATE:19450814T180000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Chihuahua.ics b/mozilla/calendar/libical/zoneinfo/America/Chihuahua.ics new file mode 100644 index 00000000000..0b266ac27f5 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Chihuahua.ics @@ -0,0 +1,95 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Chihuahua +X-LIC-LOCATION:America/Chihuahua +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:MDT +DTSTART:20010506T020000 +RRULE:FREQ=YEARLY;BYMONTH=5;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:20010930T020000 +RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-070420 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-070420 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19211231T235540 +RDATE:19211231T235540 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19270610T230000 +RDATE:19270610T230000 +RDATE:19310501T230000 +RDATE:19320401T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19301115T000000 +RDATE:19301115T000000 +RDATE:19311001T000000 +RDATE:19980405T030000 +RDATE:19991031T020000 +RDATE:20001029T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19960101T000000 +RDATE:19960101T000000 +RDATE:19980101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:19960407T020000 +RDATE:19960407T020000 +RDATE:19970406T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19961027T020000 +RDATE:19961027T020000 +RDATE:19971026T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0700 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19981025T020000 +RDATE:19981025T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:MDT +DTSTART:19990404T020000 +RDATE:19990404T020000 +RDATE:20000402T020000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Cordoba.ics b/mozilla/calendar/libical/zoneinfo/America/Cordoba.ics new file mode 100644 index 00000000000..e934d8bd941 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Cordoba.ics @@ -0,0 +1,133 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Cordoba +X-LIC-LOCATION:America/Cordoba +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-041644 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-041644 +TZOFFSETTO:-041644 +TZNAME:CMT +DTSTART:18941101T000000 +RDATE:18941101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-041644 +TZOFFSETTO:-0400 +TZNAME:ART +DTSTART:19200501T000000 +RDATE:19200501T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:ARST +DTSTART:19301201T000000 +RDATE:19301201T000000 +RDATE:19311015T000000 +RDATE:19321101T000000 +RDATE:19331101T000000 +RDATE:19341101T000000 +RDATE:19351101T000000 +RDATE:19361101T000000 +RDATE:19371101T000000 +RDATE:19381101T000000 +RDATE:19391101T000000 +RDATE:19400701T000000 +RDATE:19411015T000000 +RDATE:19431015T000000 +RDATE:19461001T000000 +RDATE:19631215T000000 +RDATE:19641015T000000 +RDATE:19651015T000000 +RDATE:19661015T000000 +RDATE:19671001T000000 +RDATE:19681006T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0400 +TZNAME:ART +DTSTART:19310401T000000 +RDATE:19310401T000000 +RDATE:19320301T000000 +RDATE:19330301T000000 +RDATE:19340301T000000 +RDATE:19350301T000000 +RDATE:19360301T000000 +RDATE:19370301T000000 +RDATE:19380301T000000 +RDATE:19390301T000000 +RDATE:19400301T000000 +RDATE:19410615T000000 +RDATE:19430801T000000 +RDATE:19460301T000000 +RDATE:19631001T000000 +RDATE:19640301T000000 +RDATE:19650301T000000 +RDATE:19660301T000000 +RDATE:19670401T000000 +RDATE:19680407T000000 +RDATE:19690406T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:ART +DTSTART:19691005T000000 +RDATE:19691005T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0300 +TZOFFSETTO:-0200 +TZNAME:ARST +DTSTART:19740123T000000 +RDATE:19740123T000000 +RDATE:19741006T000000 +RDATE:19751005T000000 +RDATE:19761003T000000 +RDATE:19851102T000000 +RDATE:19861025T000000 +RDATE:19871025T000000 +RDATE:19881201T000000 +RDATE:19891015T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0200 +TZOFFSETTO:-0300 +TZNAME:ART +DTSTART:19740501T000000 +RDATE:19740501T000000 +RDATE:19750406T000000 +RDATE:19760404T000000 +RDATE:19770403T000000 +RDATE:19860314T000000 +RDATE:19870213T000000 +RDATE:19880207T000000 +RDATE:19890305T000000 +RDATE:19900304T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0300 +TZNAME:ART +DTSTART:19900701T000000 +RDATE:19900701T000000 +RDATE:20000303T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0300 +TZOFFSETTO:-0300 +TZNAME:ARST +DTSTART:19991003T000000 +RDATE:19991003T000000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Costa_Rica.ics b/mozilla/calendar/libical/zoneinfo/America/Costa_Rica.ics new file mode 100644 index 00000000000..e722f739d5f --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Costa_Rica.ics @@ -0,0 +1,49 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Costa_Rica +X-LIC-LOCATION:America/Costa_Rica +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-053620 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-053620 +TZOFFSETTO:-053620 +TZNAME:SJMT +DTSTART:18900101T000000 +RDATE:18900101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-053620 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19210115T000000 +RDATE:19210115T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:19790225T000000 +RDATE:19790225T000000 +RDATE:19800224T000000 +RDATE:19910119T000000 +RDATE:19920118T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19790603T000000 +RDATE:19790603T000000 +RDATE:19800601T000000 +RDATE:19910701T000000 +RDATE:19920315T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Cuiaba.ics b/mozilla/calendar/libical/zoneinfo/America/Cuiaba.ics new file mode 100644 index 00000000000..de62202c54b --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Cuiaba.ics @@ -0,0 +1,100 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Cuiaba +X-LIC-LOCATION:America/Cuiaba +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:AMST +DTSTART:20001008T000000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=8,9,10,11,12,13,14;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0400 +TZNAME:AMT +DTSTART:20010218T000000 +RRULE:FREQ=YEARLY;BYMONTH=2;BYMONTHDAY=15,16,17,18,19,20,21;BYDAY=SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-034420 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-034420 +TZOFFSETTO:-0400 +TZNAME:AMT +DTSTART:19140101T000000 +RDATE:19140101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:AMST +DTSTART:19311003T110000 +RDATE:19311003T110000 +RDATE:19321003T000000 +RDATE:19491201T000000 +RDATE:19501201T000000 +RDATE:19511201T000000 +RDATE:19521201T000000 +RDATE:19631209T000000 +RDATE:19650131T000000 +RDATE:19651201T000000 +RDATE:19661101T000000 +RDATE:19671101T000000 +RDATE:19851102T000000 +RDATE:19861025T000000 +RDATE:19871025T000000 +RDATE:19881016T000000 +RDATE:19891015T000000 +RDATE:19901021T000000 +RDATE:19911020T000000 +RDATE:19921025T000000 +RDATE:19931017T000000 +RDATE:19941016T000000 +RDATE:19951015T000000 +RDATE:19961006T000000 +RDATE:19971006T000000 +RDATE:19981011T000000 +RDATE:19991003T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0400 +TZNAME:AMT +DTSTART:19320401T000000 +RDATE:19320401T000000 +RDATE:19330401T000000 +RDATE:19500416T010000 +RDATE:19510401T000000 +RDATE:19520401T000000 +RDATE:19530301T000000 +RDATE:19640301T000000 +RDATE:19650331T000000 +RDATE:19660301T000000 +RDATE:19670301T000000 +RDATE:19680301T000000 +RDATE:19860315T000000 +RDATE:19870214T000000 +RDATE:19880207T000000 +RDATE:19890129T000000 +RDATE:19900211T000000 +RDATE:19910217T000000 +RDATE:19920209T000000 +RDATE:19930131T000000 +RDATE:19940220T000000 +RDATE:19950219T000000 +RDATE:19960211T000000 +RDATE:19970216T000000 +RDATE:19980301T000000 +RDATE:19990221T000000 +RDATE:20000227T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Curacao.ics b/mozilla/calendar/libical/zoneinfo/America/Curacao.ics new file mode 100644 index 00000000000..d2c82ad0dec --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Curacao.ics @@ -0,0 +1,29 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Curacao +X-LIC-LOCATION:America/Curacao +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-043544 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-043544 +TZOFFSETTO:-0430 +TZNAME:ANT +DTSTART:19120212T000000 +RDATE:19120212T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0430 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19650101T000000 +RDATE:19650101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Dawson.ics b/mozilla/calendar/libical/zoneinfo/America/Dawson.ics new file mode 100644 index 00000000000..3fbb98034c7 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Dawson.ics @@ -0,0 +1,94 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Dawson +X-LIC-LOCATION:America/Dawson +BEGIN:STANDARD +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +DTSTART:19801026T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-091740 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-091740 +TZOFFSETTO:-0900 +TZNAME:YST +DTSTART:19000820T000000 +RDATE:19000820T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0900 +TZOFFSETTO:-0800 +TZNAME:YDT +DTSTART:19180414T020000 +RDATE:19180414T020000 +RDATE:19190525T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0800 +TZOFFSETTO:-0900 +TZNAME:YST +DTSTART:19181027T020000 +RDATE:19181027T020000 +RDATE:19191101T000000 +RDATE:19450930T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0900 +TZOFFSETTO:-0800 +TZNAME:YWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:-0900 +TZOFFSETTO:-0700 +TZNAME:YDDT +DTSTART:19650425T000000 +RDATE:19650425T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0700 +TZOFFSETTO:-0900 +TZNAME:YST +DTSTART:19651031T020000 +RDATE:19651031T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0900 +TZOFFSETTO:-0800 +TZNAME:PST +DTSTART:19731028T000000 +RDATE:19731028T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +DTSTART:19800427T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Dawson_Creek.ics b/mozilla/calendar/libical/zoneinfo/America/Dawson_Creek.ics new file mode 100644 index 00000000000..75a98c75315 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Dawson_Creek.ics @@ -0,0 +1,109 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Dawson_Creek +X-LIC-LOCATION:America/Dawson_Creek +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-080056 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-080056 +TZOFFSETTO:-0800 +TZNAME:PST +DTSTART:18840101T000000 +RDATE:18840101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +DTSTART:19180414T020000 +RDATE:19180414T020000 +RDATE:19470427T020000 +RDATE:19480425T020000 +RDATE:19490424T020000 +RDATE:19500430T020000 +RDATE:19510429T020000 +RDATE:19520427T020000 +RDATE:19530426T020000 +RDATE:19540425T020000 +RDATE:19550424T020000 +RDATE:19560429T020000 +RDATE:19570428T020000 +RDATE:19580427T020000 +RDATE:19590426T020000 +RDATE:19600424T020000 +RDATE:19610430T020000 +RDATE:19620429T020000 +RDATE:19630428T020000 +RDATE:19640426T020000 +RDATE:19650425T020000 +RDATE:19660424T020000 +RDATE:19670430T020000 +RDATE:19680428T020000 +RDATE:19690427T020000 +RDATE:19700426T020000 +RDATE:19710425T020000 +RDATE:19720430T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +DTSTART:19181031T020000 +RDATE:19181031T020000 +RDATE:19450930T020000 +RDATE:19470928T020000 +RDATE:19480926T020000 +RDATE:19490925T020000 +RDATE:19500924T020000 +RDATE:19510930T020000 +RDATE:19520928T020000 +RDATE:19530927T020000 +RDATE:19540926T020000 +RDATE:19550925T020000 +RDATE:19560930T020000 +RDATE:19570929T020000 +RDATE:19580928T020000 +RDATE:19590927T020000 +RDATE:19600925T020000 +RDATE:19610924T020000 +RDATE:19621028T020000 +RDATE:19631027T020000 +RDATE:19641025T020000 +RDATE:19651031T020000 +RDATE:19661030T020000 +RDATE:19671029T020000 +RDATE:19681027T020000 +RDATE:19691026T020000 +RDATE:19701025T020000 +RDATE:19711031T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0800 +TZOFFSETTO:-0800 +TZNAME:PST +DTSTART:19470101T000000 +RDATE:19470101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0700 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19720830T020000 +RDATE:19720830T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Denver.ics b/mozilla/calendar/libical/zoneinfo/America/Denver.ics new file mode 100644 index 00000000000..74a69a4610b --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Denver.ics @@ -0,0 +1,103 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Denver +X-LIC-LOCATION:America/Denver +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19651031T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:MDT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-065956 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-065956 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:18831118T120000 +RDATE:18831118T120000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:MDT +DTSTART:19180331T020000 +RDATE:19180331T020000 +RDATE:19190330T020000 +RDATE:19200328T020000 +RDATE:19210327T020000 +RDATE:19650425T020000 +RDATE:19660424T020000 +RDATE:19670430T020000 +RDATE:19680428T020000 +RDATE:19690427T020000 +RDATE:19700426T020000 +RDATE:19710425T020000 +RDATE:19720430T020000 +RDATE:19730429T020000 +RDATE:19740106T020000 +RDATE:19750223T020000 +RDATE:19760425T020000 +RDATE:19770424T020000 +RDATE:19780430T020000 +RDATE:19790429T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19181027T020000 +RDATE:19181027T020000 +RDATE:19191026T020000 +RDATE:19201031T020000 +RDATE:19210522T020000 +RDATE:19450930T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0700 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19200101T000000 +RDATE:19200101T000000 +RDATE:19420101T000000 +RDATE:19460101T000000 +RDATE:19670101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:MWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0600 +TZNAME:MPT +DTSTART:19450814T170000 +RDATE:19450814T170000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Detroit.ics b/mozilla/calendar/libical/zoneinfo/America/Detroit.ics new file mode 100644 index 00000000000..47ee2403cfc --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Detroit.ics @@ -0,0 +1,101 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Detroit +X-LIC-LOCATION:America/Detroit +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19761031T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-053211 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-053211 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19050101T000000 +RDATE:19050101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19150515T020000 +RDATE:19150515T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19420101T000000 +RDATE:19420101T000000 +RDATE:19460101T000000 +RDATE:19730101T000000 +RDATE:19750101T000000 +RDATE:19750427T020000 +RDATE:19751026T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0400 +TZNAME:EPT +DTSTART:19450814T190000 +RDATE:19450814T190000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19450930T020000 +RDATE:19450930T020000 +RDATE:19480926T020000 +RDATE:19671029T020000 +RDATE:19731028T020000 +RDATE:19741027T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +DTSTART:19480425T020000 +RDATE:19480425T020000 +RDATE:19670614T020000 +RDATE:19730429T020000 +RDATE:19740106T020000 +RDATE:19760425T020000 +RDATE:19770424T020000 +RDATE:19780430T020000 +RDATE:19790429T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Dominica.ics b/mozilla/calendar/libical/zoneinfo/America/Dominica.ics new file mode 100644 index 00000000000..1e7d1924160 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Dominica.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Dominica +X-LIC-LOCATION:America/Dominica +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-040536 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-040536 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19110701T000100 +RDATE:19110701T000100 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Edmonton.ics b/mozilla/calendar/libical/zoneinfo/America/Edmonton.ics new file mode 100644 index 00000000000..d473abd26d5 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Edmonton.ics @@ -0,0 +1,89 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Edmonton +X-LIC-LOCATION:America/Edmonton +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19721029T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:MDT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-073352 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-073352 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19060901T000000 +RDATE:19060901T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:MDT +DTSTART:19180414T020000 +RDATE:19180414T020000 +RDATE:19190413T020000 +RDATE:19200425T020000 +RDATE:19210424T020000 +RDATE:19220430T020000 +RDATE:19230429T020000 +RDATE:19470427T020000 +RDATE:19670430T020000 +RDATE:19690427T020000 +RDATE:19720430T020000 +RDATE:19730429T020000 +RDATE:19740428T020000 +RDATE:19750427T020000 +RDATE:19760425T020000 +RDATE:19770424T020000 +RDATE:19780430T020000 +RDATE:19790429T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19181031T020000 +RDATE:19181031T020000 +RDATE:19190527T020000 +RDATE:19201031T020000 +RDATE:19210925T020000 +RDATE:19220924T020000 +RDATE:19230930T020000 +RDATE:19450930T020000 +RDATE:19470928T020000 +RDATE:19671029T020000 +RDATE:19691026T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:MWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Eirunepe.ics b/mozilla/calendar/libical/zoneinfo/America/Eirunepe.ics new file mode 100644 index 00000000000..456e84ef52c --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Eirunepe.ics @@ -0,0 +1,73 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Eirunepe +X-LIC-LOCATION:America/Eirunepe +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-043928 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-043928 +TZOFFSETTO:-0500 +TZNAME:ACT +DTSTART:19140101T000000 +RDATE:19140101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:ACST +DTSTART:19311003T110000 +RDATE:19311003T110000 +RDATE:19321003T000000 +RDATE:19491201T000000 +RDATE:19501201T000000 +RDATE:19511201T000000 +RDATE:19521201T000000 +RDATE:19631209T000000 +RDATE:19650131T000000 +RDATE:19651201T000000 +RDATE:19661101T000000 +RDATE:19671101T000000 +RDATE:19851102T000000 +RDATE:19861025T000000 +RDATE:19871025T000000 +RDATE:19931017T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:ACT +DTSTART:19320401T000000 +RDATE:19320401T000000 +RDATE:19330401T000000 +RDATE:19500416T010000 +RDATE:19510401T000000 +RDATE:19520401T000000 +RDATE:19530301T000000 +RDATE:19640301T000000 +RDATE:19650331T000000 +RDATE:19660301T000000 +RDATE:19670301T000000 +RDATE:19680301T000000 +RDATE:19860315T000000 +RDATE:19870214T000000 +RDATE:19880207T000000 +RDATE:19940220T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0500 +TZNAME:ACT +DTSTART:19880912T000000 +RDATE:19880912T000000 +RDATE:19930928T000000 +RDATE:19940922T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/El_Salvador.ics b/mozilla/calendar/libical/zoneinfo/America/El_Salvador.ics new file mode 100644 index 00000000000..84aaf3f0b40 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/El_Salvador.ics @@ -0,0 +1,38 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/El_Salvador +X-LIC-LOCATION:America/El_Salvador +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-055648 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-055648 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19210101T000000 +RDATE:19210101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:19870503T000000 +RDATE:19870503T000000 +RDATE:19880501T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19870927T000000 +RDATE:19870927T000000 +RDATE:19880925T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Fortaleza.ics b/mozilla/calendar/libical/zoneinfo/America/Fortaleza.ics new file mode 100644 index 00000000000..25dc1fa7b66 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Fortaleza.ics @@ -0,0 +1,78 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Fortaleza +X-LIC-LOCATION:America/Fortaleza +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-0234 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0234 +TZOFFSETTO:-0300 +TZNAME:BRT +DTSTART:19140101T000000 +RDATE:19140101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0300 +TZOFFSETTO:-0200 +TZNAME:BRST +DTSTART:19311003T110000 +RDATE:19311003T110000 +RDATE:19321003T000000 +RDATE:19491201T000000 +RDATE:19501201T000000 +RDATE:19511201T000000 +RDATE:19521201T000000 +RDATE:19631209T000000 +RDATE:19650131T000000 +RDATE:19651201T000000 +RDATE:19661101T000000 +RDATE:19671101T000000 +RDATE:19851102T000000 +RDATE:19861025T000000 +RDATE:19871025T000000 +RDATE:19881016T000000 +RDATE:19891015T000000 +RDATE:19991003T000000 +RDATE:20001008T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0200 +TZOFFSETTO:-0300 +TZNAME:BRT +DTSTART:19320401T000000 +RDATE:19320401T000000 +RDATE:19330401T000000 +RDATE:19500416T010000 +RDATE:19510401T000000 +RDATE:19520401T000000 +RDATE:19530301T000000 +RDATE:19640301T000000 +RDATE:19650331T000000 +RDATE:19660301T000000 +RDATE:19670301T000000 +RDATE:19680301T000000 +RDATE:19860315T000000 +RDATE:19870214T000000 +RDATE:19880207T000000 +RDATE:19890129T000000 +RDATE:19900211T000000 +RDATE:20000227T000000 +RDATE:20001022T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0300 +TZNAME:BRT +DTSTART:19900917T000000 +RDATE:19900917T000000 +RDATE:19990930T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Glace_Bay.ics b/mozilla/calendar/libical/zoneinfo/America/Glace_Bay.ics new file mode 100644 index 00000000000..6a51fe56552 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Glace_Bay.ics @@ -0,0 +1,84 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Glace_Bay +X-LIC-LOCATION:America/Glace_Bay +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19721029T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:ADT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-035948 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-035948 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19020615T000000 +RDATE:19020615T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:ADT +DTSTART:19180414T020000 +RDATE:19180414T020000 +RDATE:19530426T020000 +RDATE:19720430T020000 +RDATE:19730429T020000 +RDATE:19740428T020000 +RDATE:19750427T020000 +RDATE:19760425T020000 +RDATE:19770424T020000 +RDATE:19780430T020000 +RDATE:19790429T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19181031T020000 +RDATE:19181031T020000 +RDATE:19450930T020000 +RDATE:19530927T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:AWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19530101T000000 +RDATE:19530101T000000 +RDATE:19540101T000000 +RDATE:19720101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Godthab.ics b/mozilla/calendar/libical/zoneinfo/America/Godthab.ics new file mode 100644 index 00000000000..8504ca8d8d6 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Godthab.ics @@ -0,0 +1,65 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Godthab +X-LIC-LOCATION:America/Godthab +BEGIN:DAYLIGHT +TZOFFSETFROM:-0300 +TZOFFSETTO:-0200 +TZNAME:WGST +DTSTART:19810328T220000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYMONTHDAY=24,25,26,27,28,29,30;BYDAY=SA +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0200 +TZOFFSETTO:-0300 +TZNAME:WGT +DTSTART:19961026T230000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=24,25,26,27,28,29,30;BYDAY=SA +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-032656 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-032656 +TZOFFSETTO:-0300 +TZNAME:WGT +DTSTART:19160728T000000 +RDATE:19160728T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0300 +TZNAME:WGT +DTSTART:19800406T020000 +RDATE:19800406T020000 +RDATE:19800927T220000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0200 +TZOFFSETTO:-0300 +TZNAME:WGT +DTSTART:19810926T230000 +RDATE:19810926T230000 +RDATE:19820925T230000 +RDATE:19830924T230000 +RDATE:19840929T230000 +RDATE:19850928T230000 +RDATE:19860927T230000 +RDATE:19870926T230000 +RDATE:19880924T230000 +RDATE:19890923T230000 +RDATE:19900929T230000 +RDATE:19910928T230000 +RDATE:19920926T230000 +RDATE:19930925T230000 +RDATE:19940924T230000 +RDATE:19950923T230000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Goose_Bay.ics b/mozilla/calendar/libical/zoneinfo/America/Goose_Bay.ics new file mode 100644 index 00000000000..3c6f8eae93b --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Goose_Bay.ics @@ -0,0 +1,228 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Goose_Bay +X-LIC-LOCATION:America/Goose_Bay +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:ADT +DTSTART:19890402T000100 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19891029T000100 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-040140 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-040140 +TZOFFSETTO:-033052 +TZNAME:NST +DTSTART:18840101T000000 +RDATE:18840101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-033052 +TZOFFSETTO:-023052 +TZNAME:NST +DTSTART:19170408T020000 +RDATE:19170408T020000 +RDATE:19180414T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-023052 +TZOFFSETTO:-033052 +TZNAME:NST +DTSTART:19170917T020000 +RDATE:19170917T020000 +RDATE:19181031T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-033052 +TZOFFSETTO:-033052 +TZNAME:NST +DTSTART:19190101T000000 +RDATE:19190101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-033052 +TZOFFSETTO:-0330 +TZNAME:NST +DTSTART:19350330T000000 +RDATE:19350330T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0330 +TZOFFSETTO:-0330 +TZNAME:NST +DTSTART:19360101T000000 +RDATE:19360101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0330 +TZOFFSETTO:-0230 +TZNAME:NDT +DTSTART:19360510T000000 +RDATE:19360510T000000 +RDATE:19370509T000000 +RDATE:19380508T000000 +RDATE:19390514T000000 +RDATE:19400512T000000 +RDATE:19410511T000000 +RDATE:19460512T020000 +RDATE:19470511T020000 +RDATE:19480509T020000 +RDATE:19490508T020000 +RDATE:19500514T020000 +RDATE:19510429T020000 +RDATE:19520427T020000 +RDATE:19530426T020000 +RDATE:19540425T020000 +RDATE:19550424T020000 +RDATE:19560429T020000 +RDATE:19570428T020000 +RDATE:19580427T020000 +RDATE:19590426T020000 +RDATE:19600424T020000 +RDATE:19610430T020000 +RDATE:19620429T020000 +RDATE:19630428T020000 +RDATE:19640426T020000 +RDATE:19650425T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0230 +TZOFFSETTO:-0330 +TZNAME:NST +DTSTART:19361004T000000 +RDATE:19361004T000000 +RDATE:19371003T000000 +RDATE:19381002T000000 +RDATE:19391001T000000 +RDATE:19401006T000000 +RDATE:19411005T000000 +RDATE:19421231T000000 +RDATE:19430905T000000 +RDATE:19440902T000000 +RDATE:19451007T020000 +RDATE:19461006T020000 +RDATE:19471005T020000 +RDATE:19481003T020000 +RDATE:19491002T020000 +RDATE:19501008T020000 +RDATE:19510930T020000 +RDATE:19520928T020000 +RDATE:19530927T020000 +RDATE:19540926T020000 +RDATE:19550925T020000 +RDATE:19560930T020000 +RDATE:19570929T020000 +RDATE:19580928T020000 +RDATE:19590927T020000 +RDATE:19601030T020000 +RDATE:19611029T020000 +RDATE:19621028T020000 +RDATE:19631027T020000 +RDATE:19641025T020000 +RDATE:19651031T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0330 +TZOFFSETTO:-0230 +TZNAME:NWT +DTSTART:19420301T000000 +RDATE:19420301T000000 +RDATE:19430530T000000 +RDATE:19440710T000000 +RDATE:19450101T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0330 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19660315T020000 +RDATE:19660315T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:ADT +DTSTART:19660424T020000 +RDATE:19660424T020000 +RDATE:19670430T020000 +RDATE:19680428T020000 +RDATE:19690427T020000 +RDATE:19700426T020000 +RDATE:19710425T020000 +RDATE:19720430T020000 +RDATE:19730429T020000 +RDATE:19740428T020000 +RDATE:19750427T020000 +RDATE:19760425T020000 +RDATE:19770424T020000 +RDATE:19780430T020000 +RDATE:19790429T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +RDATE:19870405T000100 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19661030T020000 +RDATE:19661030T020000 +RDATE:19671029T020000 +RDATE:19681027T020000 +RDATE:19691026T020000 +RDATE:19701025T020000 +RDATE:19711031T020000 +RDATE:19721029T020000 +RDATE:19731028T020000 +RDATE:19741027T020000 +RDATE:19751026T020000 +RDATE:19761031T020000 +RDATE:19771030T020000 +RDATE:19781029T020000 +RDATE:19791028T020000 +RDATE:19801026T020000 +RDATE:19811025T020000 +RDATE:19821031T020000 +RDATE:19831030T020000 +RDATE:19841028T020000 +RDATE:19851027T020000 +RDATE:19861026T020000 +RDATE:19871025T000100 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0200 +TZNAME:ADDT +DTSTART:19880403T000100 +RDATE:19880403T000100 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0200 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19881030T000100 +RDATE:19881030T000100 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Grand_Turk.ics b/mozilla/calendar/libical/zoneinfo/America/Grand_Turk.ics new file mode 100644 index 00000000000..c451ac103d5 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Grand_Turk.ics @@ -0,0 +1,57 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Grand_Turk +X-LIC-LOCATION:America/Grand_Turk +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19791028T000000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +DTSTART:19870405T000000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-044432 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-044432 +TZOFFSETTO:-050712 +TZNAME:KMT +DTSTART:18900101T000000 +RDATE:18900101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-050712 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19120201T000000 +RDATE:19120201T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +DTSTART:19790429T000000 +RDATE:19790429T000000 +RDATE:19800427T000000 +RDATE:19810426T000000 +RDATE:19820425T000000 +RDATE:19830424T000000 +RDATE:19840429T000000 +RDATE:19850428T000000 +RDATE:19860427T000000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Grenada.ics b/mozilla/calendar/libical/zoneinfo/America/Grenada.ics new file mode 100644 index 00000000000..6c5b9235642 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Grenada.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Grenada +X-LIC-LOCATION:America/Grenada +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-0407 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0407 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19110701T000000 +RDATE:19110701T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Guadeloupe.ics b/mozilla/calendar/libical/zoneinfo/America/Guadeloupe.ics new file mode 100644 index 00000000000..263a1055213 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Guadeloupe.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Guadeloupe +X-LIC-LOCATION:America/Guadeloupe +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-040608 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-040608 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19110608T000000 +RDATE:19110608T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Guatemala.ics b/mozilla/calendar/libical/zoneinfo/America/Guatemala.ics new file mode 100644 index 00000000000..e327d6978f9 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Guatemala.ics @@ -0,0 +1,40 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Guatemala +X-LIC-LOCATION:America/Guatemala +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-060204 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-060204 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19181005T000000 +RDATE:19181005T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:19731125T000000 +RDATE:19731125T000000 +RDATE:19830521T000000 +RDATE:19910323T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19740224T000000 +RDATE:19740224T000000 +RDATE:19830922T000000 +RDATE:19910907T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Guayaquil.ics b/mozilla/calendar/libical/zoneinfo/America/Guayaquil.ics new file mode 100644 index 00000000000..f1aefdf46e7 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Guayaquil.ics @@ -0,0 +1,29 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Guayaquil +X-LIC-LOCATION:America/Guayaquil +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-051920 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-051920 +TZOFFSETTO:-0514 +TZNAME:QMT +DTSTART:18900101T000000 +RDATE:18900101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0514 +TZOFFSETTO:-0500 +TZNAME:ECT +DTSTART:19310101T000000 +RDATE:19310101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Guyana.ics b/mozilla/calendar/libical/zoneinfo/America/Guyana.ics new file mode 100644 index 00000000000..c2fa1a984ae --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Guyana.ics @@ -0,0 +1,43 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Guyana +X-LIC-LOCATION:America/Guyana +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-035240 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-035240 +TZOFFSETTO:-0345 +TZNAME:GBGT +DTSTART:19150301T000000 +RDATE:19150301T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0345 +TZOFFSETTO:-0345 +TZNAME:GYT +DTSTART:19660526T000000 +RDATE:19660526T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0345 +TZOFFSETTO:-0300 +TZNAME:GYT +DTSTART:19750731T000000 +RDATE:19750731T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0400 +TZNAME:GYT +DTSTART:19910101T000000 +RDATE:19910101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Halifax.ics b/mozilla/calendar/libical/zoneinfo/America/Halifax.ics new file mode 100644 index 00000000000..1fa824f0598 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Halifax.ics @@ -0,0 +1,162 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Halifax +X-LIC-LOCATION:America/Halifax +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19621028T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:ADT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-041424 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-041424 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19020615T000000 +RDATE:19020615T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:ADT +DTSTART:19160401T000000 +RDATE:19160401T000000 +RDATE:19180414T020000 +RDATE:19200509T000000 +RDATE:19210506T000000 +RDATE:19220430T000000 +RDATE:19230506T000000 +RDATE:19240504T000000 +RDATE:19250503T000000 +RDATE:19260516T000000 +RDATE:19270501T000000 +RDATE:19280513T000000 +RDATE:19290512T000000 +RDATE:19300511T000000 +RDATE:19310510T000000 +RDATE:19330430T000000 +RDATE:19340520T000000 +RDATE:19350602T000000 +RDATE:19360601T000000 +RDATE:19370502T000000 +RDATE:19380501T000000 +RDATE:19390528T000000 +RDATE:19400505T000000 +RDATE:19410504T000000 +RDATE:19460428T020000 +RDATE:19470427T020000 +RDATE:19480425T020000 +RDATE:19490424T020000 +RDATE:19500430T020000 +RDATE:19510429T020000 +RDATE:19520427T020000 +RDATE:19530426T020000 +RDATE:19540425T020000 +RDATE:19550424T020000 +RDATE:19560429T020000 +RDATE:19570428T020000 +RDATE:19580427T020000 +RDATE:19590426T020000 +RDATE:19620429T020000 +RDATE:19630428T020000 +RDATE:19640426T020000 +RDATE:19650425T020000 +RDATE:19660424T020000 +RDATE:19670430T020000 +RDATE:19680428T020000 +RDATE:19690427T020000 +RDATE:19700426T020000 +RDATE:19710425T020000 +RDATE:19720430T020000 +RDATE:19730429T020000 +RDATE:19740428T020000 +RDATE:19750427T020000 +RDATE:19760425T020000 +RDATE:19770424T020000 +RDATE:19780430T020000 +RDATE:19790429T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19161001T000000 +RDATE:19161001T000000 +RDATE:19181031T020000 +RDATE:19200829T000000 +RDATE:19210905T000000 +RDATE:19220905T000000 +RDATE:19230904T000000 +RDATE:19240915T000000 +RDATE:19250928T000000 +RDATE:19260913T000000 +RDATE:19270926T000000 +RDATE:19280909T000000 +RDATE:19290903T000000 +RDATE:19300915T000000 +RDATE:19310928T000000 +RDATE:19331002T000000 +RDATE:19340916T000000 +RDATE:19350930T000000 +RDATE:19360914T000000 +RDATE:19370927T000000 +RDATE:19380926T000000 +RDATE:19390925T000000 +RDATE:19400930T000000 +RDATE:19410929T000000 +RDATE:19450930T020000 +RDATE:19460929T020000 +RDATE:19470928T020000 +RDATE:19480926T020000 +RDATE:19490925T020000 +RDATE:19500924T020000 +RDATE:19510930T020000 +RDATE:19520928T020000 +RDATE:19530927T020000 +RDATE:19540926T020000 +RDATE:19550925T020000 +RDATE:19560930T020000 +RDATE:19570929T020000 +RDATE:19580928T020000 +RDATE:19590927T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19320926T000000 +RDATE:19320926T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:AWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Havana.ics b/mozilla/calendar/libical/zoneinfo/America/Havana.ics new file mode 100644 index 00000000000..3e68532696b --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Havana.ics @@ -0,0 +1,135 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Havana +X-LIC-LOCATION:America/Havana +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:CST +DTSTART:19981025T010000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:CDT +DTSTART:20000402T000000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-052928 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-052928 +TZOFFSETTO:-052936 +TZNAME:HMT +DTSTART:18900101T000000 +RDATE:18900101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-052936 +TZOFFSETTO:-0500 +TZNAME:CST +DTSTART:19250719T120000 +RDATE:19250719T120000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:CDT +DTSTART:19280610T000000 +RDATE:19280610T000000 +RDATE:19400602T000000 +RDATE:19410601T000000 +RDATE:19420607T000000 +RDATE:19450603T000000 +RDATE:19460602T000000 +RDATE:19650601T000000 +RDATE:19660529T000000 +RDATE:19670408T000000 +RDATE:19680414T000000 +RDATE:19690427T000000 +RDATE:19700426T000000 +RDATE:19710425T000000 +RDATE:19720430T000000 +RDATE:19730429T000000 +RDATE:19740428T000000 +RDATE:19750427T000000 +RDATE:19760425T000000 +RDATE:19770424T000000 +RDATE:19780507T000000 +RDATE:19790318T000000 +RDATE:19800316T000000 +RDATE:19810510T000000 +RDATE:19820509T000000 +RDATE:19830508T000000 +RDATE:19840506T000000 +RDATE:19850505T000000 +RDATE:19860316T000000 +RDATE:19870315T000000 +RDATE:19880320T000000 +RDATE:19890319T000000 +RDATE:19900401T000000 +RDATE:19910407T000000 +RDATE:19920405T000000 +RDATE:19930404T000000 +RDATE:19940403T000000 +RDATE:19950402T000000 +RDATE:19960407T000000 +RDATE:19970406T000000 +RDATE:19980329T000000 +RDATE:19990328T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:CST +DTSTART:19281010T000000 +RDATE:19281010T000000 +RDATE:19400901T000000 +RDATE:19410907T000000 +RDATE:19420906T000000 +RDATE:19450902T000000 +RDATE:19460901T000000 +RDATE:19650930T000000 +RDATE:19661002T000000 +RDATE:19670910T000000 +RDATE:19680908T000000 +RDATE:19691026T000000 +RDATE:19701025T000000 +RDATE:19711031T000000 +RDATE:19721008T000000 +RDATE:19731008T000000 +RDATE:19741008T000000 +RDATE:19751026T000000 +RDATE:19761031T000000 +RDATE:19771030T000000 +RDATE:19781008T000000 +RDATE:19791014T000000 +RDATE:19801012T000000 +RDATE:19811011T000000 +RDATE:19821010T000000 +RDATE:19831009T000000 +RDATE:19841014T000000 +RDATE:19851013T000000 +RDATE:19861012T000000 +RDATE:19871011T000000 +RDATE:19881009T000000 +RDATE:19891008T000000 +RDATE:19901014T000000 +RDATE:19911013T010000 +RDATE:19921011T010000 +RDATE:19931010T010000 +RDATE:19941009T010000 +RDATE:19951008T010000 +RDATE:19961006T010000 +RDATE:19971012T010000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Hermosillo.ics b/mozilla/calendar/libical/zoneinfo/America/Hermosillo.ics new file mode 100644 index 00000000000..195d0ae6410 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Hermosillo.ics @@ -0,0 +1,73 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Hermosillo +X-LIC-LOCATION:America/Hermosillo +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-072352 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-072352 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19211231T233608 +RDATE:19211231T233608 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19270610T230000 +RDATE:19270610T230000 +RDATE:19310501T230000 +RDATE:19320401T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19301115T000000 +RDATE:19301115T000000 +RDATE:19311001T000000 +RDATE:19420424T000000 +RDATE:19961027T020000 +RDATE:19971026T020000 +RDATE:19981025T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +DTSTART:19490114T000000 +RDATE:19490114T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19700101T000000 +RDATE:19700101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:MDT +DTSTART:19960407T020000 +RDATE:19960407T020000 +RDATE:19970406T020000 +RDATE:19980405T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0700 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19990101T000000 +RDATE:19990101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Indiana/Indianapolis.ics b/mozilla/calendar/libical/zoneinfo/America/Indiana/Indianapolis.ics new file mode 100644 index 00000000000..4a0ca905728 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Indiana/Indianapolis.ics @@ -0,0 +1,115 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Indiana/Indianapolis +X-LIC-LOCATION:America/Indiana/Indianapolis +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-054438 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-054438 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:18831118T120000 +RDATE:18831118T120000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:19180331T020000 +RDATE:19180331T020000 +RDATE:19190330T020000 +RDATE:19410622T020000 +RDATE:19460428T020000 +RDATE:19470427T020000 +RDATE:19480425T020000 +RDATE:19490424T020000 +RDATE:19500430T020000 +RDATE:19510429T020000 +RDATE:19520427T020000 +RDATE:19530426T020000 +RDATE:19540425T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19181027T020000 +RDATE:19181027T020000 +RDATE:19191026T020000 +RDATE:19410928T020000 +RDATE:19450930T020000 +RDATE:19460929T020000 +RDATE:19470928T020000 +RDATE:19480926T020000 +RDATE:19490925T020000 +RDATE:19500924T020000 +RDATE:19510930T020000 +RDATE:19520928T020000 +RDATE:19530927T020000 +RDATE:19540926T020000 +RDATE:19570929T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19200101T000000 +RDATE:19200101T000000 +RDATE:19420101T000000 +RDATE:19460101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0500 +TZNAME:CPT +DTSTART:19450814T180000 +RDATE:19450814T180000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19550424T020000 +RDATE:19550424T020000 +RDATE:19580427T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19690101T000000 +RDATE:19690101T000000 +RDATE:19710101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +DTSTART:19690427T020000 +RDATE:19690427T020000 +RDATE:19700426T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19691026T020000 +RDATE:19691026T020000 +RDATE:19701025T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Indiana/Knox.ics b/mozilla/calendar/libical/zoneinfo/America/Indiana/Knox.ics new file mode 100644 index 00000000000..11b1070875f --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Indiana/Knox.ics @@ -0,0 +1,154 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Indiana/Knox +X-LIC-LOCATION:America/Indiana/Knox +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-054630 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-054630 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:18831118T120000 +RDATE:18831118T120000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:19180331T020000 +RDATE:19180331T020000 +RDATE:19190330T020000 +RDATE:19470427T020000 +RDATE:19480425T020000 +RDATE:19490424T020000 +RDATE:19500430T020000 +RDATE:19510429T020000 +RDATE:19520427T020000 +RDATE:19530426T020000 +RDATE:19540425T020000 +RDATE:19550424T020000 +RDATE:19560429T020000 +RDATE:19570428T020000 +RDATE:19580427T020000 +RDATE:19590426T020000 +RDATE:19600424T020000 +RDATE:19610430T020000 +RDATE:19670430T020000 +RDATE:19680428T020000 +RDATE:19690427T020000 +RDATE:19700426T020000 +RDATE:19710425T020000 +RDATE:19720430T020000 +RDATE:19730429T020000 +RDATE:19740106T020000 +RDATE:19750223T020000 +RDATE:19760425T020000 +RDATE:19770424T020000 +RDATE:19780430T020000 +RDATE:19790429T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +RDATE:19870405T020000 +RDATE:19880403T020000 +RDATE:19890402T020000 +RDATE:19900401T020000 +RDATE:19910407T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19181027T020000 +RDATE:19181027T020000 +RDATE:19191026T020000 +RDATE:19450930T020000 +RDATE:19470928T020000 +RDATE:19480926T020000 +RDATE:19490925T020000 +RDATE:19500924T020000 +RDATE:19510930T020000 +RDATE:19520928T020000 +RDATE:19530927T020000 +RDATE:19540926T020000 +RDATE:19551030T020000 +RDATE:19561028T020000 +RDATE:19570929T020000 +RDATE:19580928T020000 +RDATE:19591025T020000 +RDATE:19601030T020000 +RDATE:19611029T020000 +RDATE:19631027T020000 +RDATE:19671029T020000 +RDATE:19681027T020000 +RDATE:19691026T020000 +RDATE:19701025T020000 +RDATE:19711031T020000 +RDATE:19721029T020000 +RDATE:19731028T020000 +RDATE:19741027T020000 +RDATE:19751026T020000 +RDATE:19761031T020000 +RDATE:19771030T020000 +RDATE:19781029T020000 +RDATE:19791028T020000 +RDATE:19801026T020000 +RDATE:19811025T020000 +RDATE:19821031T020000 +RDATE:19831030T020000 +RDATE:19841028T020000 +RDATE:19851027T020000 +RDATE:19861026T020000 +RDATE:19871025T020000 +RDATE:19881030T020000 +RDATE:19891029T020000 +RDATE:19901028T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0500 +TZNAME:CPT +DTSTART:19450814T180000 +RDATE:19450814T180000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19470101T000000 +RDATE:19470101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19620429T020000 +RDATE:19620429T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19911027T020000 +RDATE:19911027T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Indiana/Marengo.ics b/mozilla/calendar/libical/zoneinfo/America/Indiana/Marengo.ics new file mode 100644 index 00000000000..5fd01d742c2 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Indiana/Marengo.ics @@ -0,0 +1,123 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Indiana/Marengo +X-LIC-LOCATION:America/Indiana/Marengo +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-054523 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-054523 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:18831118T120000 +RDATE:18831118T120000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:19180331T020000 +RDATE:19180331T020000 +RDATE:19190330T020000 +RDATE:19510429T020000 +RDATE:19540425T020000 +RDATE:19550424T020000 +RDATE:19560429T020000 +RDATE:19570428T020000 +RDATE:19580427T020000 +RDATE:19590426T020000 +RDATE:19600424T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19181027T020000 +RDATE:19181027T020000 +RDATE:19191026T020000 +RDATE:19450930T020000 +RDATE:19510930T020000 +RDATE:19540926T020000 +RDATE:19550925T020000 +RDATE:19560930T020000 +RDATE:19570929T020000 +RDATE:19580928T020000 +RDATE:19590927T020000 +RDATE:19600925T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0500 +TZNAME:CPT +DTSTART:19450814T180000 +RDATE:19450814T180000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19510101T000000 +RDATE:19510101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19610430T020000 +RDATE:19610430T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19690101T000000 +RDATE:19690101T000000 +RDATE:19741027T020000 +RDATE:19760101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +DTSTART:19690427T020000 +RDATE:19690427T020000 +RDATE:19700426T020000 +RDATE:19710425T020000 +RDATE:19720430T020000 +RDATE:19730429T020000 +RDATE:19750223T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19691026T020000 +RDATE:19691026T020000 +RDATE:19701025T020000 +RDATE:19711031T020000 +RDATE:19721029T020000 +RDATE:19731028T020000 +RDATE:19751026T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:19740106T020000 +RDATE:19740106T020000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Indiana/Vevay.ics b/mozilla/calendar/libical/zoneinfo/America/Indiana/Vevay.ics new file mode 100644 index 00000000000..ec888f8290a --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Indiana/Vevay.ics @@ -0,0 +1,88 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Indiana/Vevay +X-LIC-LOCATION:America/Indiana/Vevay +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-054016 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-054016 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:18831118T120000 +RDATE:18831118T120000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:19180331T020000 +RDATE:19180331T020000 +RDATE:19190330T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19181027T020000 +RDATE:19181027T020000 +RDATE:19191026T020000 +RDATE:19450930T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0500 +TZNAME:CPT +DTSTART:19450814T180000 +RDATE:19450814T180000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19540425T020000 +RDATE:19540425T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19690101T000000 +RDATE:19690101T000000 +RDATE:19730101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +DTSTART:19690427T020000 +RDATE:19690427T020000 +RDATE:19700426T020000 +RDATE:19710425T020000 +RDATE:19720430T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19691026T020000 +RDATE:19691026T020000 +RDATE:19701025T020000 +RDATE:19711031T020000 +RDATE:19721029T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Indianapolis.ics b/mozilla/calendar/libical/zoneinfo/America/Indianapolis.ics new file mode 100644 index 00000000000..8c68fc7e11c --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Indianapolis.ics @@ -0,0 +1,115 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Indianapolis +X-LIC-LOCATION:America/Indianapolis +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-054438 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-054438 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:18831118T120000 +RDATE:18831118T120000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:19180331T020000 +RDATE:19180331T020000 +RDATE:19190330T020000 +RDATE:19410622T020000 +RDATE:19460428T020000 +RDATE:19470427T020000 +RDATE:19480425T020000 +RDATE:19490424T020000 +RDATE:19500430T020000 +RDATE:19510429T020000 +RDATE:19520427T020000 +RDATE:19530426T020000 +RDATE:19540425T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19181027T020000 +RDATE:19181027T020000 +RDATE:19191026T020000 +RDATE:19410928T020000 +RDATE:19450930T020000 +RDATE:19460929T020000 +RDATE:19470928T020000 +RDATE:19480926T020000 +RDATE:19490925T020000 +RDATE:19500924T020000 +RDATE:19510930T020000 +RDATE:19520928T020000 +RDATE:19530927T020000 +RDATE:19540926T020000 +RDATE:19570929T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19200101T000000 +RDATE:19200101T000000 +RDATE:19420101T000000 +RDATE:19460101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0500 +TZNAME:CPT +DTSTART:19450814T180000 +RDATE:19450814T180000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19550424T020000 +RDATE:19550424T020000 +RDATE:19580427T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19690101T000000 +RDATE:19690101T000000 +RDATE:19710101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +DTSTART:19690427T020000 +RDATE:19690427T020000 +RDATE:19700426T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19691026T020000 +RDATE:19691026T020000 +RDATE:19701025T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Inuvik.ics b/mozilla/calendar/libical/zoneinfo/America/Inuvik.ics new file mode 100644 index 00000000000..5b90688d1af --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Inuvik.ics @@ -0,0 +1,94 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Inuvik +X-LIC-LOCATION:America/Inuvik +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19801026T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:MDT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-0854 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0854 +TZOFFSETTO:-0800 +TZNAME:PST +DTSTART:18840101T000000 +RDATE:18840101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +DTSTART:19180414T020000 +RDATE:19180414T020000 +RDATE:19190525T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +DTSTART:19181027T020000 +RDATE:19181027T020000 +RDATE:19191101T000000 +RDATE:19450930T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:-0800 +TZOFFSETTO:-0600 +TZNAME:PDDT +DTSTART:19650425T000000 +RDATE:19650425T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0800 +TZNAME:PST +DTSTART:19651031T020000 +RDATE:19651031T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19790429T020000 +RDATE:19790429T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:MDT +DTSTART:19800427T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Iqaluit.ics b/mozilla/calendar/libical/zoneinfo/America/Iqaluit.ics new file mode 100644 index 00000000000..4dbd087b00c --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Iqaluit.ics @@ -0,0 +1,134 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Iqaluit +X-LIC-LOCATION:America/Iqaluit +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +DTSTART:20010401T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:20011028T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-043352 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-043352 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:18840101T000000 +RDATE:18840101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +DTSTART:19180414T020000 +RDATE:19180414T020000 +RDATE:19190525T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +RDATE:19870405T020000 +RDATE:19880403T020000 +RDATE:19890402T020000 +RDATE:19900401T020000 +RDATE:19910407T020000 +RDATE:19920405T020000 +RDATE:19930404T020000 +RDATE:19940403T020000 +RDATE:19950402T020000 +RDATE:19960407T020000 +RDATE:19970406T020000 +RDATE:19980405T020000 +RDATE:19990404T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19181027T020000 +RDATE:19181027T020000 +RDATE:19191101T000000 +RDATE:19450930T020000 +RDATE:19801026T020000 +RDATE:19811025T020000 +RDATE:19821031T020000 +RDATE:19831030T020000 +RDATE:19841028T020000 +RDATE:19851027T020000 +RDATE:19861026T020000 +RDATE:19871025T020000 +RDATE:19881030T020000 +RDATE:19891029T020000 +RDATE:19901028T020000 +RDATE:19911027T020000 +RDATE:19921025T020000 +RDATE:19931031T020000 +RDATE:19941030T020000 +RDATE:19951029T020000 +RDATE:19961027T020000 +RDATE:19971026T020000 +RDATE:19981025T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0300 +TZNAME:EDDT +DTSTART:19650425T000000 +RDATE:19650425T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19651031T020000 +RDATE:19651031T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19991031T020000 +RDATE:19991031T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:20000402T020000 +RDATE:20000402T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:20001029T020000 +RDATE:20001029T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Jamaica.ics b/mozilla/calendar/libical/zoneinfo/America/Jamaica.ics new file mode 100644 index 00000000000..f05814989e3 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Jamaica.ics @@ -0,0 +1,68 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Jamaica +X-LIC-LOCATION:America/Jamaica +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-050712 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-050712 +TZOFFSETTO:-050712 +TZNAME:KMT +DTSTART:18900101T000000 +RDATE:18900101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-050712 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19120201T000000 +RDATE:19120201T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19740428T020000 +RDATE:19740428T020000 +RDATE:19741027T020000 +RDATE:19840101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +DTSTART:19750223T020000 +RDATE:19750223T020000 +RDATE:19760425T020000 +RDATE:19770424T020000 +RDATE:19780430T020000 +RDATE:19790429T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19751026T020000 +RDATE:19751026T020000 +RDATE:19761031T020000 +RDATE:19771030T020000 +RDATE:19781029T020000 +RDATE:19791028T020000 +RDATE:19801026T020000 +RDATE:19811025T020000 +RDATE:19821031T020000 +RDATE:19831030T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Jujuy.ics b/mozilla/calendar/libical/zoneinfo/America/Jujuy.ics new file mode 100644 index 00000000000..33b12db8f07 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Jujuy.ics @@ -0,0 +1,155 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Jujuy +X-LIC-LOCATION:America/Jujuy +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-042112 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-042112 +TZOFFSETTO:-041644 +TZNAME:CMT +DTSTART:18941101T000000 +RDATE:18941101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-041644 +TZOFFSETTO:-0400 +TZNAME:ART +DTSTART:19200501T000000 +RDATE:19200501T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:ARST +DTSTART:19301201T000000 +RDATE:19301201T000000 +RDATE:19311015T000000 +RDATE:19321101T000000 +RDATE:19331101T000000 +RDATE:19341101T000000 +RDATE:19351101T000000 +RDATE:19361101T000000 +RDATE:19371101T000000 +RDATE:19381101T000000 +RDATE:19391101T000000 +RDATE:19400701T000000 +RDATE:19411015T000000 +RDATE:19431015T000000 +RDATE:19461001T000000 +RDATE:19631215T000000 +RDATE:19641015T000000 +RDATE:19651015T000000 +RDATE:19661015T000000 +RDATE:19671001T000000 +RDATE:19681006T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0400 +TZNAME:ART +DTSTART:19310401T000000 +RDATE:19310401T000000 +RDATE:19320301T000000 +RDATE:19330301T000000 +RDATE:19340301T000000 +RDATE:19350301T000000 +RDATE:19360301T000000 +RDATE:19370301T000000 +RDATE:19380301T000000 +RDATE:19390301T000000 +RDATE:19400301T000000 +RDATE:19410615T000000 +RDATE:19430801T000000 +RDATE:19460301T000000 +RDATE:19631001T000000 +RDATE:19640301T000000 +RDATE:19650301T000000 +RDATE:19660301T000000 +RDATE:19670401T000000 +RDATE:19680407T000000 +RDATE:19690406T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:ART +DTSTART:19691005T000000 +RDATE:19691005T000000 +RDATE:19921018T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0300 +TZOFFSETTO:-0200 +TZNAME:ARST +DTSTART:19740123T000000 +RDATE:19740123T000000 +RDATE:19741006T000000 +RDATE:19751005T000000 +RDATE:19761003T000000 +RDATE:19851102T000000 +RDATE:19861025T000000 +RDATE:19871025T000000 +RDATE:19881201T000000 +RDATE:19891015T000000 +RDATE:19901021T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0200 +TZOFFSETTO:-0300 +TZNAME:ART +DTSTART:19740501T000000 +RDATE:19740501T000000 +RDATE:19750406T000000 +RDATE:19760404T000000 +RDATE:19770403T000000 +RDATE:19860314T000000 +RDATE:19870213T000000 +RDATE:19880207T000000 +RDATE:19890305T000000 +RDATE:19900304T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0200 +TZOFFSETTO:-0400 +TZNAME:WART +DTSTART:19910303T000000 +RDATE:19910303T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:WARST +DTSTART:19911006T000000 +RDATE:19911006T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0400 +TZNAME:WART +DTSTART:19920315T000000 +RDATE:19920315T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0300 +TZOFFSETTO:-0300 +TZNAME:ARST +DTSTART:19991003T000000 +RDATE:19991003T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0300 +TZNAME:ART +DTSTART:20000303T000000 +RDATE:20000303T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Juneau.ics b/mozilla/calendar/libical/zoneinfo/America/Juneau.ics new file mode 100644 index 00000000000..337c3790dcd --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Juneau.ics @@ -0,0 +1,124 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Juneau +X-LIC-LOCATION:America/Juneau +BEGIN:STANDARD +TZOFFSETFROM:-0800 +TZOFFSETTO:-0900 +TZNAME:AKST +DTSTART:19841028T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0900 +TZOFFSETTO:-0800 +TZNAME:AKDT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+150219 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+150219 +TZOFFSETTO:-085741 +TZNAME:LMT +DTSTART:18671018T000000 +RDATE:18671018T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-085741 +TZOFFSETTO:-0800 +TZNAME:PST +DTSTART:19000820T120000 +RDATE:19000820T120000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0800 +TZOFFSETTO:-0800 +TZNAME:PST +DTSTART:19420101T000000 +RDATE:19420101T000000 +RDATE:19460101T000000 +RDATE:19690101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0700 +TZNAME:PPT +DTSTART:19450814T160000 +RDATE:19450814T160000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +DTSTART:19450930T020000 +RDATE:19450930T020000 +RDATE:19691026T020000 +RDATE:19701025T020000 +RDATE:19711031T020000 +RDATE:19721029T020000 +RDATE:19731028T020000 +RDATE:19741027T020000 +RDATE:19751026T020000 +RDATE:19761031T020000 +RDATE:19771030T020000 +RDATE:19781029T020000 +RDATE:19791028T020000 +RDATE:19801026T020000 +RDATE:19811025T020000 +RDATE:19821031T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +DTSTART:19690427T020000 +RDATE:19690427T020000 +RDATE:19700426T020000 +RDATE:19710425T020000 +RDATE:19720430T020000 +RDATE:19730429T020000 +RDATE:19740106T020000 +RDATE:19750223T020000 +RDATE:19760425T020000 +RDATE:19770424T020000 +RDATE:19780430T020000 +RDATE:19790429T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0700 +TZOFFSETTO:-0900 +TZNAME:AKST +DTSTART:19831030T020000 +RDATE:19831030T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0900 +TZOFFSETTO:-0800 +TZNAME:AKDT +DTSTART:19840429T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Kentucky/Louisville.ics b/mozilla/calendar/libical/zoneinfo/America/Kentucky/Louisville.ics new file mode 100644 index 00000000000..1c68285e7a2 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Kentucky/Louisville.ics @@ -0,0 +1,160 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Kentucky/Louisville +X-LIC-LOCATION:America/Kentucky/Louisville +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19751026T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-054302 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-054302 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:18831118T120000 +RDATE:18831118T120000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:19180331T020000 +RDATE:19180331T020000 +RDATE:19190330T020000 +RDATE:19210501T020000 +RDATE:19410427T020000 +RDATE:19460428T020000 +RDATE:19470427T020000 +RDATE:19510429T020000 +RDATE:19520427T020000 +RDATE:19530426T020000 +RDATE:19540425T020000 +RDATE:19550424T020000 +RDATE:19560429T020000 +RDATE:19570428T020000 +RDATE:19580427T020000 +RDATE:19590426T020000 +RDATE:19600424T020000 +RDATE:19610430T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19181027T020000 +RDATE:19181027T020000 +RDATE:19191026T020000 +RDATE:19210901T020000 +RDATE:19410928T020000 +RDATE:19450930T020000 +RDATE:19460602T020000 +RDATE:19500924T020000 +RDATE:19510930T020000 +RDATE:19520928T020000 +RDATE:19530927T020000 +RDATE:19540926T020000 +RDATE:19550925T020000 +RDATE:19561028T020000 +RDATE:19571027T020000 +RDATE:19581026T020000 +RDATE:19591025T020000 +RDATE:19601030T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19210101T000000 +RDATE:19210101T000000 +RDATE:19420101T000000 +RDATE:19460101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0500 +TZNAME:CPT +DTSTART:19450814T180000 +RDATE:19450814T180000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:19480425T020000 +RDATE:19480425T020000 +RDATE:19490424T020000 +RDATE:19500430T020000 +RDATE:19740106T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19610723T020000 +RDATE:19610723T020000 +RDATE:19680101T000000 +RDATE:19741027T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +DTSTART:19680428T020000 +RDATE:19680428T020000 +RDATE:19690427T020000 +RDATE:19700426T020000 +RDATE:19710425T020000 +RDATE:19720430T020000 +RDATE:19730429T020000 +RDATE:19750223T020000 +RDATE:19760425T020000 +RDATE:19770424T020000 +RDATE:19780430T020000 +RDATE:19790429T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19681027T020000 +RDATE:19681027T020000 +RDATE:19691026T020000 +RDATE:19701025T020000 +RDATE:19711031T020000 +RDATE:19721029T020000 +RDATE:19731028T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Kentucky/Monticello.ics b/mozilla/calendar/libical/zoneinfo/America/Kentucky/Monticello.ics new file mode 100644 index 00000000000..7ee42c75703 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Kentucky/Monticello.ics @@ -0,0 +1,147 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Kentucky/Monticello +X-LIC-LOCATION:America/Kentucky/Monticello +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +DTSTART:20010401T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:20011028T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-053924 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-053924 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:18831118T120000 +RDATE:18831118T120000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:19180331T020000 +RDATE:19180331T020000 +RDATE:19190330T020000 +RDATE:19680428T020000 +RDATE:19690427T020000 +RDATE:19700426T020000 +RDATE:19710425T020000 +RDATE:19720430T020000 +RDATE:19730429T020000 +RDATE:19740106T020000 +RDATE:19750223T020000 +RDATE:19760425T020000 +RDATE:19770424T020000 +RDATE:19780430T020000 +RDATE:19790429T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +RDATE:19870405T020000 +RDATE:19880403T020000 +RDATE:19890402T020000 +RDATE:19900401T020000 +RDATE:19910407T020000 +RDATE:19920405T020000 +RDATE:19930404T020000 +RDATE:19940403T020000 +RDATE:19950402T020000 +RDATE:19960407T020000 +RDATE:19970406T020000 +RDATE:19980405T020000 +RDATE:19990404T020000 +RDATE:20000402T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19181027T020000 +RDATE:19181027T020000 +RDATE:19191026T020000 +RDATE:19450930T020000 +RDATE:19681027T020000 +RDATE:19691026T020000 +RDATE:19701025T020000 +RDATE:19711031T020000 +RDATE:19721029T020000 +RDATE:19731028T020000 +RDATE:19741027T020000 +RDATE:19751026T020000 +RDATE:19761031T020000 +RDATE:19771030T020000 +RDATE:19781029T020000 +RDATE:19791028T020000 +RDATE:19801026T020000 +RDATE:19811025T020000 +RDATE:19821031T020000 +RDATE:19831030T020000 +RDATE:19841028T020000 +RDATE:19851027T020000 +RDATE:19861026T020000 +RDATE:19871025T020000 +RDATE:19881030T020000 +RDATE:19891029T020000 +RDATE:19901028T020000 +RDATE:19911027T020000 +RDATE:19921025T020000 +RDATE:19931031T020000 +RDATE:19941030T020000 +RDATE:19951029T020000 +RDATE:19961027T020000 +RDATE:19971026T020000 +RDATE:19981025T020000 +RDATE:19991031T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0500 +TZNAME:CPT +DTSTART:19450814T180000 +RDATE:19450814T180000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19460101T000000 +RDATE:19460101T000000 +RDATE:19680101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:20001029T020000 +RDATE:20001029T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/La_Paz.ics b/mozilla/calendar/libical/zoneinfo/America/La_Paz.ics new file mode 100644 index 00000000000..5d91750c5a0 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/La_Paz.ics @@ -0,0 +1,36 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/La_Paz +X-LIC-LOCATION:America/La_Paz +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-043236 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-043236 +TZOFFSETTO:-043236 +TZNAME:LPMT +DTSTART:18900101T000000 +RDATE:18900101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-043236 +TZOFFSETTO:-033236 +TZNAME:BOST +DTSTART:19311015T000000 +RDATE:19311015T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-033236 +TZOFFSETTO:-0400 +TZNAME:BOT +DTSTART:19320321T000000 +RDATE:19320321T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Lima.ics b/mozilla/calendar/libical/zoneinfo/America/Lima.ics new file mode 100644 index 00000000000..6dfa4c8f2cf --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Lima.ics @@ -0,0 +1,53 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Lima +X-LIC-LOCATION:America/Lima +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-050812 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-050812 +TZOFFSETTO:-0509 +TZNAME:LMT +DTSTART:18900101T000000 +RDATE:18900101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0509 +TZOFFSETTO:-0500 +TZNAME:PET +DTSTART:19080728T000000 +RDATE:19080728T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:PEST +DTSTART:19380101T000000 +RDATE:19380101T000000 +RDATE:19380925T000000 +RDATE:19390924T000000 +RDATE:19870101T000000 +RDATE:19900101T000000 +RDATE:19940101T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:PET +DTSTART:19380401T000000 +RDATE:19380401T000000 +RDATE:19390326T000000 +RDATE:19400324T000000 +RDATE:19870401T000000 +RDATE:19900401T000000 +RDATE:19940401T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Los_Angeles.ics b/mozilla/calendar/libical/zoneinfo/America/Los_Angeles.ics new file mode 100644 index 00000000000..c4394527365 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Los_Angeles.ics @@ -0,0 +1,126 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Los_Angeles +X-LIC-LOCATION:America/Los_Angeles +BEGIN:STANDARD +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +DTSTART:19621028T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-075258 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-075258 +TZOFFSETTO:-0800 +TZNAME:PST +DTSTART:18831118T120000 +RDATE:18831118T120000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +DTSTART:19180331T020000 +RDATE:19180331T020000 +RDATE:19190330T020000 +RDATE:19480314T020000 +RDATE:19500430T020000 +RDATE:19510429T020000 +RDATE:19520427T020000 +RDATE:19530426T020000 +RDATE:19540425T020000 +RDATE:19550424T020000 +RDATE:19560429T020000 +RDATE:19570428T020000 +RDATE:19580427T020000 +RDATE:19590426T020000 +RDATE:19600424T020000 +RDATE:19610430T020000 +RDATE:19620429T020000 +RDATE:19630428T020000 +RDATE:19640426T020000 +RDATE:19650425T020000 +RDATE:19660424T020000 +RDATE:19670430T020000 +RDATE:19680428T020000 +RDATE:19690427T020000 +RDATE:19700426T020000 +RDATE:19710425T020000 +RDATE:19720430T020000 +RDATE:19730429T020000 +RDATE:19740106T020000 +RDATE:19750223T020000 +RDATE:19760425T020000 +RDATE:19770424T020000 +RDATE:19780430T020000 +RDATE:19790429T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +DTSTART:19181027T020000 +RDATE:19181027T020000 +RDATE:19191026T020000 +RDATE:19450930T020000 +RDATE:19490101T020000 +RDATE:19500924T020000 +RDATE:19510930T020000 +RDATE:19520928T020000 +RDATE:19530927T020000 +RDATE:19540926T020000 +RDATE:19550925T020000 +RDATE:19560930T020000 +RDATE:19570929T020000 +RDATE:19580928T020000 +RDATE:19590927T020000 +RDATE:19600925T020000 +RDATE:19610924T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0700 +TZNAME:PPT +DTSTART:19450814T160000 +RDATE:19450814T160000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0800 +TZOFFSETTO:-0800 +TZNAME:PST +DTSTART:19460101T000000 +RDATE:19460101T000000 +RDATE:19670101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Louisville.ics b/mozilla/calendar/libical/zoneinfo/America/Louisville.ics new file mode 100644 index 00000000000..d7cca66337b --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Louisville.ics @@ -0,0 +1,160 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Louisville +X-LIC-LOCATION:America/Louisville +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19751026T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-054302 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-054302 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:18831118T120000 +RDATE:18831118T120000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:19180331T020000 +RDATE:19180331T020000 +RDATE:19190330T020000 +RDATE:19210501T020000 +RDATE:19410427T020000 +RDATE:19460428T020000 +RDATE:19470427T020000 +RDATE:19510429T020000 +RDATE:19520427T020000 +RDATE:19530426T020000 +RDATE:19540425T020000 +RDATE:19550424T020000 +RDATE:19560429T020000 +RDATE:19570428T020000 +RDATE:19580427T020000 +RDATE:19590426T020000 +RDATE:19600424T020000 +RDATE:19610430T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19181027T020000 +RDATE:19181027T020000 +RDATE:19191026T020000 +RDATE:19210901T020000 +RDATE:19410928T020000 +RDATE:19450930T020000 +RDATE:19460602T020000 +RDATE:19500924T020000 +RDATE:19510930T020000 +RDATE:19520928T020000 +RDATE:19530927T020000 +RDATE:19540926T020000 +RDATE:19550925T020000 +RDATE:19561028T020000 +RDATE:19571027T020000 +RDATE:19581026T020000 +RDATE:19591025T020000 +RDATE:19601030T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19210101T000000 +RDATE:19210101T000000 +RDATE:19420101T000000 +RDATE:19460101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0500 +TZNAME:CPT +DTSTART:19450814T180000 +RDATE:19450814T180000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:19480425T020000 +RDATE:19480425T020000 +RDATE:19490424T020000 +RDATE:19500430T020000 +RDATE:19740106T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19610723T020000 +RDATE:19610723T020000 +RDATE:19680101T000000 +RDATE:19741027T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +DTSTART:19680428T020000 +RDATE:19680428T020000 +RDATE:19690427T020000 +RDATE:19700426T020000 +RDATE:19710425T020000 +RDATE:19720430T020000 +RDATE:19730429T020000 +RDATE:19750223T020000 +RDATE:19760425T020000 +RDATE:19770424T020000 +RDATE:19780430T020000 +RDATE:19790429T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19681027T020000 +RDATE:19681027T020000 +RDATE:19691026T020000 +RDATE:19701025T020000 +RDATE:19711031T020000 +RDATE:19721029T020000 +RDATE:19731028T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Maceio.ics b/mozilla/calendar/libical/zoneinfo/America/Maceio.ics new file mode 100644 index 00000000000..1716d295d24 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Maceio.ics @@ -0,0 +1,82 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Maceio +X-LIC-LOCATION:America/Maceio +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-022252 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-022252 +TZOFFSETTO:-0300 +TZNAME:BRT +DTSTART:19140101T000000 +RDATE:19140101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0300 +TZOFFSETTO:-0200 +TZNAME:BRST +DTSTART:19311003T110000 +RDATE:19311003T110000 +RDATE:19321003T000000 +RDATE:19491201T000000 +RDATE:19501201T000000 +RDATE:19511201T000000 +RDATE:19521201T000000 +RDATE:19631209T000000 +RDATE:19650131T000000 +RDATE:19651201T000000 +RDATE:19661101T000000 +RDATE:19671101T000000 +RDATE:19851102T000000 +RDATE:19861025T000000 +RDATE:19871025T000000 +RDATE:19881016T000000 +RDATE:19891015T000000 +RDATE:19951015T000000 +RDATE:19991003T000000 +RDATE:20001008T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0200 +TZOFFSETTO:-0300 +TZNAME:BRT +DTSTART:19320401T000000 +RDATE:19320401T000000 +RDATE:19330401T000000 +RDATE:19500416T010000 +RDATE:19510401T000000 +RDATE:19520401T000000 +RDATE:19530301T000000 +RDATE:19640301T000000 +RDATE:19650331T000000 +RDATE:19660301T000000 +RDATE:19670301T000000 +RDATE:19680301T000000 +RDATE:19860315T000000 +RDATE:19870214T000000 +RDATE:19880207T000000 +RDATE:19890129T000000 +RDATE:19900211T000000 +RDATE:19960211T000000 +RDATE:20000227T000000 +RDATE:20001022T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0300 +TZNAME:BRT +DTSTART:19900917T000000 +RDATE:19900917T000000 +RDATE:19951013T000000 +RDATE:19960904T000000 +RDATE:19990930T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Managua.ics b/mozilla/calendar/libical/zoneinfo/America/Managua.ics new file mode 100644 index 00000000000..bd663b7f0d3 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Managua.ics @@ -0,0 +1,57 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Managua +X-LIC-LOCATION:America/Managua +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-054508 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-054508 +TZOFFSETTO:-0545 +TZNAME:MMT +DTSTART:18900101T000000 +RDATE:18900101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0545 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19340623T000000 +RDATE:19340623T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19730501T000000 +RDATE:19730501T000000 +RDATE:19930101T040000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19750216T000000 +RDATE:19750216T000000 +RDATE:19790625T000000 +RDATE:19800623T000000 +RDATE:19920924T000000 +RDATE:19981201T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:19790318T000000 +RDATE:19790318T000000 +RDATE:19800316T000000 +RDATE:19920101T040000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Manaus.ics b/mozilla/calendar/libical/zoneinfo/America/Manaus.ics new file mode 100644 index 00000000000..5878b821b93 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Manaus.ics @@ -0,0 +1,73 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Manaus +X-LIC-LOCATION:America/Manaus +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-040004 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-040004 +TZOFFSETTO:-0400 +TZNAME:AMT +DTSTART:19140101T000000 +RDATE:19140101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:AMST +DTSTART:19311003T110000 +RDATE:19311003T110000 +RDATE:19321003T000000 +RDATE:19491201T000000 +RDATE:19501201T000000 +RDATE:19511201T000000 +RDATE:19521201T000000 +RDATE:19631209T000000 +RDATE:19650131T000000 +RDATE:19651201T000000 +RDATE:19661101T000000 +RDATE:19671101T000000 +RDATE:19851102T000000 +RDATE:19861025T000000 +RDATE:19871025T000000 +RDATE:19931017T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0400 +TZNAME:AMT +DTSTART:19320401T000000 +RDATE:19320401T000000 +RDATE:19330401T000000 +RDATE:19500416T010000 +RDATE:19510401T000000 +RDATE:19520401T000000 +RDATE:19530301T000000 +RDATE:19640301T000000 +RDATE:19650331T000000 +RDATE:19660301T000000 +RDATE:19670301T000000 +RDATE:19680301T000000 +RDATE:19860315T000000 +RDATE:19870214T000000 +RDATE:19880207T000000 +RDATE:19940220T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0400 +TZNAME:AMT +DTSTART:19880912T000000 +RDATE:19880912T000000 +RDATE:19930928T000000 +RDATE:19940922T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Martinique.ics b/mozilla/calendar/libical/zoneinfo/America/Martinique.ics new file mode 100644 index 00000000000..e3cc8b62cad --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Martinique.ics @@ -0,0 +1,43 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Martinique +X-LIC-LOCATION:America/Martinique +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-040420 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-040420 +TZOFFSETTO:-0404 +TZNAME:FFMT +DTSTART:18900101T000000 +RDATE:18900101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0404 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19110501T000000 +RDATE:19110501T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:ADT +DTSTART:19800406T000000 +RDATE:19800406T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19800928T000000 +RDATE:19800928T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Mazatlan.ics b/mozilla/calendar/libical/zoneinfo/America/Mazatlan.ics new file mode 100644 index 00000000000..bddae378726 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Mazatlan.ics @@ -0,0 +1,84 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Mazatlan +X-LIC-LOCATION:America/Mazatlan +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:MDT +DTSTART:20010506T020000 +RRULE:FREQ=YEARLY;BYMONTH=5;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:20010930T020000 +RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-070540 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-070540 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19211231T235420 +RDATE:19211231T235420 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19270610T230000 +RDATE:19270610T230000 +RDATE:19310501T230000 +RDATE:19320401T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19301115T000000 +RDATE:19301115T000000 +RDATE:19311001T000000 +RDATE:19420424T000000 +RDATE:19961027T020000 +RDATE:19971026T020000 +RDATE:19981025T020000 +RDATE:19991031T020000 +RDATE:20001029T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +DTSTART:19490114T000000 +RDATE:19490114T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19700101T000000 +RDATE:19700101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:MDT +DTSTART:19960407T020000 +RDATE:19960407T020000 +RDATE:19970406T020000 +RDATE:19980405T020000 +RDATE:19990404T020000 +RDATE:20000402T020000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Mendoza.ics b/mozilla/calendar/libical/zoneinfo/America/Mendoza.ics new file mode 100644 index 00000000000..233e9ee8af4 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Mendoza.ics @@ -0,0 +1,155 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Mendoza +X-LIC-LOCATION:America/Mendoza +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-043516 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-043516 +TZOFFSETTO:-041644 +TZNAME:CMT +DTSTART:18941101T000000 +RDATE:18941101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-041644 +TZOFFSETTO:-0400 +TZNAME:ART +DTSTART:19200501T000000 +RDATE:19200501T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:ARST +DTSTART:19301201T000000 +RDATE:19301201T000000 +RDATE:19311015T000000 +RDATE:19321101T000000 +RDATE:19331101T000000 +RDATE:19341101T000000 +RDATE:19351101T000000 +RDATE:19361101T000000 +RDATE:19371101T000000 +RDATE:19381101T000000 +RDATE:19391101T000000 +RDATE:19400701T000000 +RDATE:19411015T000000 +RDATE:19431015T000000 +RDATE:19461001T000000 +RDATE:19631215T000000 +RDATE:19641015T000000 +RDATE:19651015T000000 +RDATE:19661015T000000 +RDATE:19671001T000000 +RDATE:19681006T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0400 +TZNAME:ART +DTSTART:19310401T000000 +RDATE:19310401T000000 +RDATE:19320301T000000 +RDATE:19330301T000000 +RDATE:19340301T000000 +RDATE:19350301T000000 +RDATE:19360301T000000 +RDATE:19370301T000000 +RDATE:19380301T000000 +RDATE:19390301T000000 +RDATE:19400301T000000 +RDATE:19410615T000000 +RDATE:19430801T000000 +RDATE:19460301T000000 +RDATE:19631001T000000 +RDATE:19640301T000000 +RDATE:19650301T000000 +RDATE:19660301T000000 +RDATE:19670401T000000 +RDATE:19680407T000000 +RDATE:19690406T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:ART +DTSTART:19691005T000000 +RDATE:19691005T000000 +RDATE:19921018T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0300 +TZOFFSETTO:-0200 +TZNAME:ARST +DTSTART:19740123T000000 +RDATE:19740123T000000 +RDATE:19741006T000000 +RDATE:19751005T000000 +RDATE:19761003T000000 +RDATE:19851102T000000 +RDATE:19861025T000000 +RDATE:19871025T000000 +RDATE:19881201T000000 +RDATE:19891015T000000 +RDATE:19901021T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0200 +TZOFFSETTO:-0300 +TZNAME:ART +DTSTART:19740501T000000 +RDATE:19740501T000000 +RDATE:19750406T000000 +RDATE:19760404T000000 +RDATE:19770403T000000 +RDATE:19860314T000000 +RDATE:19870213T000000 +RDATE:19880207T000000 +RDATE:19890305T000000 +RDATE:19900304T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0200 +TZOFFSETTO:-0400 +TZNAME:WART +DTSTART:19910303T000000 +RDATE:19910303T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:WARST +DTSTART:19911015T000000 +RDATE:19911015T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0400 +TZNAME:WART +DTSTART:19920301T000000 +RDATE:19920301T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0300 +TZOFFSETTO:-0300 +TZNAME:ARST +DTSTART:19991003T000000 +RDATE:19991003T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0300 +TZNAME:ART +DTSTART:20000303T000000 +RDATE:20000303T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Menominee.ics b/mozilla/calendar/libical/zoneinfo/America/Menominee.ics new file mode 100644 index 00000000000..f39eec2b54d --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Menominee.ics @@ -0,0 +1,105 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Menominee +X-LIC-LOCATION:America/Menominee +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19731028T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-055027 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-055027 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:18850918T120000 +RDATE:18850918T120000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:19180331T020000 +RDATE:19180331T020000 +RDATE:19190330T020000 +RDATE:19460428T020000 +RDATE:19660424T020000 +RDATE:19740106T020000 +RDATE:19750223T020000 +RDATE:19760425T020000 +RDATE:19770424T020000 +RDATE:19780430T020000 +RDATE:19790429T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19181027T020000 +RDATE:19181027T020000 +RDATE:19191026T020000 +RDATE:19450930T020000 +RDATE:19460929T020000 +RDATE:19661030T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0500 +TZNAME:CPT +DTSTART:19450814T180000 +RDATE:19450814T180000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19460101T000000 +RDATE:19460101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19690427T020000 +RDATE:19690427T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:19730429T020000 +RDATE:19730429T020000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Merida.ics b/mozilla/calendar/libical/zoneinfo/America/Merida.ics new file mode 100644 index 00000000000..ccd0a5065f9 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Merida.ics @@ -0,0 +1,66 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Merida +X-LIC-LOCATION:America/Merida +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:20010506T020000 +RRULE:FREQ=YEARLY;BYMONTH=5;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:20010930T020000 +RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-055828 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-055828 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19220101T000132 +RDATE:19220101T000132 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19811223T000000 +RDATE:19811223T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19821202T000000 +RDATE:19821202T000000 +RDATE:19961027T020000 +RDATE:19971026T020000 +RDATE:19981025T020000 +RDATE:19991031T020000 +RDATE:20001029T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:19960407T020000 +RDATE:19960407T020000 +RDATE:19970406T020000 +RDATE:19980405T020000 +RDATE:19990404T020000 +RDATE:20000402T020000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Mexico_City.ics b/mozilla/calendar/libical/zoneinfo/America/Mexico_City.ics new file mode 100644 index 00000000000..a2a4dda1d80 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Mexico_City.ics @@ -0,0 +1,89 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Mexico_City +X-LIC-LOCATION:America/Mexico_City +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:20010506T020000 +RRULE:FREQ=YEARLY;BYMONTH=5;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:20010930T020000 +RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-063636 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-063636 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19220101T002324 +RDATE:19220101T002324 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19270610T230000 +RDATE:19270610T230000 +RDATE:19310501T230000 +RDATE:19320401T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19301115T000000 +RDATE:19301115T000000 +RDATE:19311001T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:19390205T000000 +RDATE:19390205T000000 +RDATE:19401209T000000 +RDATE:19500212T000000 +RDATE:19960407T020000 +RDATE:19970406T020000 +RDATE:19980405T020000 +RDATE:19990404T020000 +RDATE:20000402T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19390625T000000 +RDATE:19390625T000000 +RDATE:19410401T000000 +RDATE:19440501T000000 +RDATE:19500730T000000 +RDATE:19961027T020000 +RDATE:19971026T020000 +RDATE:19981025T020000 +RDATE:19991031T020000 +RDATE:20001029T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CWT +DTSTART:19431216T000000 +RDATE:19431216T000000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Miquelon.ics b/mozilla/calendar/libical/zoneinfo/America/Miquelon.ics new file mode 100644 index 00000000000..5807e442029 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Miquelon.ics @@ -0,0 +1,62 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Miquelon +X-LIC-LOCATION:America/Miquelon +BEGIN:STANDARD +TZOFFSETFROM:-0200 +TZOFFSETTO:-0300 +TZNAME:PMST +DTSTART:19811025T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0300 +TZOFFSETTO:-0200 +TZNAME:PMDT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-034440 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-034440 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19110515T000000 +RDATE:19110515T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:PMST +DTSTART:19800501T000000 +RDATE:19800501T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0300 +TZNAME:PMST +DTSTART:19801026T020000 +RDATE:19801026T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0300 +TZOFFSETTO:-0200 +TZNAME:PMDT +DTSTART:19810426T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Monterrey.ics b/mozilla/calendar/libical/zoneinfo/America/Monterrey.ics new file mode 100644 index 00000000000..824e90d99cb --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Monterrey.ics @@ -0,0 +1,68 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Monterrey +X-LIC-LOCATION:America/Monterrey +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:20010506T020000 +RRULE:FREQ=YEARLY;BYMONTH=5;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:20010930T020000 +RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-064116 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-064116 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19211231T231844 +RDATE:19211231T231844 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19880101T000000 +RDATE:19880101T000000 +RDATE:19890101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:19880403T020000 +RDATE:19880403T020000 +RDATE:19960407T020000 +RDATE:19970406T020000 +RDATE:19980405T020000 +RDATE:19990404T020000 +RDATE:20000402T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19881030T020000 +RDATE:19881030T020000 +RDATE:19961027T020000 +RDATE:19971026T020000 +RDATE:19981025T020000 +RDATE:19991031T020000 +RDATE:20001029T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Montevideo.ics b/mozilla/calendar/libical/zoneinfo/America/Montevideo.ics new file mode 100644 index 00000000000..6038665c0e4 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Montevideo.ics @@ -0,0 +1,140 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Montevideo +X-LIC-LOCATION:America/Montevideo +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-034444 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-034444 +TZOFFSETTO:-034444 +TZNAME:MMT +DTSTART:18980628T000000 +RDATE:18980628T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-034444 +TZOFFSETTO:-0330 +TZNAME:UYT +DTSTART:19200501T000000 +RDATE:19200501T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0330 +TZOFFSETTO:-0300 +TZNAME:UYHST +DTSTART:19231002T000000 +RDATE:19231002T000000 +RDATE:19241001T000000 +RDATE:19251001T000000 +RDATE:19331029T000000 +RDATE:19341028T000000 +RDATE:19351027T000000 +RDATE:19361101T000000 +RDATE:19371031T000000 +RDATE:19381030T000000 +RDATE:19391029T000000 +RDATE:19401027T000000 +RDATE:19420101T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0330 +TZNAME:UYT +DTSTART:19240401T000000 +RDATE:19240401T000000 +RDATE:19250401T000000 +RDATE:19260401T000000 +RDATE:19340401T000000 +RDATE:19350331T000000 +RDATE:19360329T000000 +RDATE:19370328T000000 +RDATE:19380327T000000 +RDATE:19390326T000000 +RDATE:19400331T000000 +RDATE:19410330T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0330 +TZOFFSETTO:-0330 +TZNAME:UYT +DTSTART:19410801T000000 +RDATE:19410801T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0300 +TZOFFSETTO:-0200 +TZNAME:UYST +DTSTART:19421214T000000 +RDATE:19421214T000000 +RDATE:19590524T000000 +RDATE:19600117T000000 +RDATE:19650404T000000 +RDATE:19660403T000000 +RDATE:19670402T000000 +RDATE:19720424T000000 +RDATE:19771204T000000 +RDATE:19791001T000000 +RDATE:19871214T000000 +RDATE:19881211T000000 +RDATE:19891029T000000 +RDATE:19901021T000000 +RDATE:19911027T000000 +RDATE:19921018T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0200 +TZOFFSETTO:-0300 +TZNAME:UYT +DTSTART:19430314T000000 +RDATE:19430314T000000 +RDATE:19591115T000000 +RDATE:19600306T000000 +RDATE:19650926T000000 +RDATE:19661031T000000 +RDATE:19671031T000000 +RDATE:19720815T000000 +RDATE:19761001T000000 +RDATE:19780401T000000 +RDATE:19800501T000000 +RDATE:19880314T000000 +RDATE:19890312T000000 +RDATE:19900304T000000 +RDATE:19910303T000000 +RDATE:19920301T000000 +RDATE:19930228T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0300 +TZOFFSETTO:-0230 +TZNAME:UYHST +DTSTART:19680527T000000 +RDATE:19680527T000000 +RDATE:19690527T000000 +RDATE:19700527T000000 +RDATE:19740310T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0230 +TZOFFSETTO:-0300 +TZNAME:UYT +DTSTART:19681202T000000 +RDATE:19681202T000000 +RDATE:19691202T000000 +RDATE:19701202T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0230 +TZOFFSETTO:-0200 +TZNAME:UYST +DTSTART:19741222T000000 +RDATE:19741222T000000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Montreal.ics b/mozilla/calendar/libical/zoneinfo/America/Montreal.ics new file mode 100644 index 00000000000..221ff9bd47f --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Montreal.ics @@ -0,0 +1,146 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Montreal +X-LIC-LOCATION:America/Montreal +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19571027T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-045416 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-045416 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:18840101T000000 +RDATE:18840101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +DTSTART:19170325T020000 +RDATE:19170325T020000 +RDATE:19180414T020000 +RDATE:19190331T023000 +RDATE:19200502T023000 +RDATE:19210501T020000 +RDATE:19220430T020000 +RDATE:19240517T020000 +RDATE:19250503T020000 +RDATE:19260502T020000 +RDATE:19270501T000000 +RDATE:19280429T000000 +RDATE:19290428T000000 +RDATE:19300427T000000 +RDATE:19310426T000000 +RDATE:19320501T000000 +RDATE:19330430T000000 +RDATE:19340429T000000 +RDATE:19350428T000000 +RDATE:19360426T000000 +RDATE:19370425T000000 +RDATE:19380424T000000 +RDATE:19390430T000000 +RDATE:19400428T000000 +RDATE:19460428T020000 +RDATE:19470427T020000 +RDATE:19480425T020000 +RDATE:19490424T020000 +RDATE:19500430T020000 +RDATE:19510429T020000 +RDATE:19520427T020000 +RDATE:19530426T020000 +RDATE:19540425T020000 +RDATE:19550424T020000 +RDATE:19560429T020000 +RDATE:19570428T020000 +RDATE:19580427T020000 +RDATE:19590426T020000 +RDATE:19600424T020000 +RDATE:19610430T020000 +RDATE:19620429T020000 +RDATE:19630428T020000 +RDATE:19640426T020000 +RDATE:19650425T020000 +RDATE:19660424T020000 +RDATE:19670430T020000 +RDATE:19680428T020000 +RDATE:19690427T020000 +RDATE:19700426T020000 +RDATE:19710425T020000 +RDATE:19720430T020000 +RDATE:19730429T020000 +RDATE:19740428T020000 +RDATE:19750427T020000 +RDATE:19760425T020000 +RDATE:19770424T020000 +RDATE:19780430T020000 +RDATE:19790429T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19170424T000000 +RDATE:19170424T000000 +RDATE:19181031T020000 +RDATE:19191025T023000 +RDATE:19201003T023000 +RDATE:19211002T023000 +RDATE:19221001T023000 +RDATE:19240928T023000 +RDATE:19250927T023000 +RDATE:19260926T023000 +RDATE:19270925T000000 +RDATE:19280930T000000 +RDATE:19290929T000000 +RDATE:19300928T000000 +RDATE:19310927T000000 +RDATE:19320925T000000 +RDATE:19331001T000000 +RDATE:19340930T000000 +RDATE:19350929T000000 +RDATE:19360927T000000 +RDATE:19370926T000000 +RDATE:19380925T000000 +RDATE:19390924T000000 +RDATE:19450930T020000 +RDATE:19460929T020000 +RDATE:19470928T020000 +RDATE:19480926T020000 +RDATE:19491030T020000 +RDATE:19501029T020000 +RDATE:19510930T020000 +RDATE:19520928T020000 +RDATE:19530927T020000 +RDATE:19540926T020000 +RDATE:19550925T020000 +RDATE:19560930T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Montserrat.ics b/mozilla/calendar/libical/zoneinfo/America/Montserrat.ics new file mode 100644 index 00000000000..6dbed7b6fce --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Montserrat.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Montserrat +X-LIC-LOCATION:America/Montserrat +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-040852 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-040852 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19110701T000100 +RDATE:19110701T000100 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Nassau.ics b/mozilla/calendar/libical/zoneinfo/America/Nassau.ics new file mode 100644 index 00000000000..8738a578481 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Nassau.ics @@ -0,0 +1,65 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Nassau +X-LIC-LOCATION:America/Nassau +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19641025T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-050924 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-050924 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19120302T000000 +RDATE:19120302T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +DTSTART:19640426T020000 +RDATE:19640426T020000 +RDATE:19650425T020000 +RDATE:19660424T020000 +RDATE:19670430T020000 +RDATE:19680428T020000 +RDATE:19690427T020000 +RDATE:19700426T020000 +RDATE:19710425T020000 +RDATE:19720430T020000 +RDATE:19730429T020000 +RDATE:19740428T020000 +RDATE:19750427T020000 +RDATE:19760425T020000 +RDATE:19770424T020000 +RDATE:19780430T020000 +RDATE:19790429T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/New_York.ics b/mozilla/calendar/libical/zoneinfo/America/New_York.ics new file mode 100644 index 00000000000..db22337f2d4 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/New_York.ics @@ -0,0 +1,171 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/New_York +X-LIC-LOCATION:America/New_York +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19551030T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-045602 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-045602 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:18831118T120000 +RDATE:18831118T120000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +DTSTART:19180331T020000 +RDATE:19180331T020000 +RDATE:19190330T020000 +RDATE:19200328T020000 +RDATE:19210424T020000 +RDATE:19220430T020000 +RDATE:19230429T020000 +RDATE:19240427T020000 +RDATE:19250426T020000 +RDATE:19260425T020000 +RDATE:19270424T020000 +RDATE:19280429T020000 +RDATE:19290428T020000 +RDATE:19300427T020000 +RDATE:19310426T020000 +RDATE:19320424T020000 +RDATE:19330430T020000 +RDATE:19340429T020000 +RDATE:19350428T020000 +RDATE:19360426T020000 +RDATE:19370425T020000 +RDATE:19380424T020000 +RDATE:19390430T020000 +RDATE:19400428T020000 +RDATE:19410427T020000 +RDATE:19460428T020000 +RDATE:19470427T020000 +RDATE:19480425T020000 +RDATE:19490424T020000 +RDATE:19500430T020000 +RDATE:19510429T020000 +RDATE:19520427T020000 +RDATE:19530426T020000 +RDATE:19540425T020000 +RDATE:19550424T020000 +RDATE:19560429T020000 +RDATE:19570428T020000 +RDATE:19580427T020000 +RDATE:19590426T020000 +RDATE:19600424T020000 +RDATE:19610430T020000 +RDATE:19620429T020000 +RDATE:19630428T020000 +RDATE:19640426T020000 +RDATE:19650425T020000 +RDATE:19660424T020000 +RDATE:19670430T020000 +RDATE:19680428T020000 +RDATE:19690427T020000 +RDATE:19700426T020000 +RDATE:19710425T020000 +RDATE:19720430T020000 +RDATE:19730429T020000 +RDATE:19740106T020000 +RDATE:19750223T020000 +RDATE:19760425T020000 +RDATE:19770424T020000 +RDATE:19780430T020000 +RDATE:19790429T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19181027T020000 +RDATE:19181027T020000 +RDATE:19191026T020000 +RDATE:19201031T020000 +RDATE:19210925T020000 +RDATE:19220924T020000 +RDATE:19230930T020000 +RDATE:19240928T020000 +RDATE:19250927T020000 +RDATE:19260926T020000 +RDATE:19270925T020000 +RDATE:19280930T020000 +RDATE:19290929T020000 +RDATE:19300928T020000 +RDATE:19310927T020000 +RDATE:19320925T020000 +RDATE:19330924T020000 +RDATE:19340930T020000 +RDATE:19350929T020000 +RDATE:19360927T020000 +RDATE:19370926T020000 +RDATE:19380925T020000 +RDATE:19390924T020000 +RDATE:19400929T020000 +RDATE:19410928T020000 +RDATE:19450930T020000 +RDATE:19460929T020000 +RDATE:19470928T020000 +RDATE:19480926T020000 +RDATE:19490925T020000 +RDATE:19500924T020000 +RDATE:19510930T020000 +RDATE:19520928T020000 +RDATE:19530927T020000 +RDATE:19540926T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19200101T000000 +RDATE:19200101T000000 +RDATE:19420101T000000 +RDATE:19460101T000000 +RDATE:19670101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0400 +TZNAME:EPT +DTSTART:19450814T190000 +RDATE:19450814T190000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Nipigon.ics b/mozilla/calendar/libical/zoneinfo/America/Nipigon.ics new file mode 100644 index 00000000000..f8272478e4c --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Nipigon.ics @@ -0,0 +1,71 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Nipigon +X-LIC-LOCATION:America/Nipigon +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19741027T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-055304 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-055304 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:18950101T000000 +RDATE:18950101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +DTSTART:19180414T020000 +RDATE:19180414T020000 +RDATE:19740428T020000 +RDATE:19750427T020000 +RDATE:19760425T020000 +RDATE:19770424T020000 +RDATE:19780430T020000 +RDATE:19790429T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19181031T020000 +RDATE:19181031T020000 +RDATE:19450930T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Nome.ics b/mozilla/calendar/libical/zoneinfo/America/Nome.ics new file mode 100644 index 00000000000..268af0f810a --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Nome.ics @@ -0,0 +1,137 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Nome +X-LIC-LOCATION:America/Nome +BEGIN:STANDARD +TZOFFSETFROM:-0800 +TZOFFSETTO:-0900 +TZNAME:AKST +DTSTART:19841028T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0900 +TZOFFSETTO:-0800 +TZNAME:AKDT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+125821 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+125821 +TZOFFSETTO:-110138 +TZNAME:LMT +DTSTART:18671018T000000 +RDATE:18671018T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-110138 +TZOFFSETTO:-1100 +TZNAME:NST +DTSTART:19000820T120000 +RDATE:19000820T120000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-1100 +TZOFFSETTO:-1100 +TZNAME:NST +DTSTART:19420101T000000 +RDATE:19420101T000000 +RDATE:19460101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-1100 +TZOFFSETTO:-1000 +TZNAME:NWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:-1000 +TZOFFSETTO:-1000 +TZNAME:NPT +DTSTART:19450814T130000 +RDATE:19450814T130000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-1000 +TZOFFSETTO:-1100 +TZNAME:NST +DTSTART:19450930T020000 +RDATE:19450930T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-1100 +TZOFFSETTO:-1100 +TZNAME:BST +DTSTART:19670401T000000 +RDATE:19670401T000000 +RDATE:19690101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-1100 +TZOFFSETTO:-1000 +TZNAME:BDT +DTSTART:19690427T020000 +RDATE:19690427T020000 +RDATE:19700426T020000 +RDATE:19710425T020000 +RDATE:19720430T020000 +RDATE:19730429T020000 +RDATE:19740106T020000 +RDATE:19750223T020000 +RDATE:19760425T020000 +RDATE:19770424T020000 +RDATE:19780430T020000 +RDATE:19790429T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-1000 +TZOFFSETTO:-1100 +TZNAME:BST +DTSTART:19691026T020000 +RDATE:19691026T020000 +RDATE:19701025T020000 +RDATE:19711031T020000 +RDATE:19721029T020000 +RDATE:19731028T020000 +RDATE:19741027T020000 +RDATE:19751026T020000 +RDATE:19761031T020000 +RDATE:19771030T020000 +RDATE:19781029T020000 +RDATE:19791028T020000 +RDATE:19801026T020000 +RDATE:19811025T020000 +RDATE:19821031T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-1000 +TZOFFSETTO:-0900 +TZNAME:AKST +DTSTART:19831030T020000 +RDATE:19831030T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0900 +TZOFFSETTO:-0800 +TZNAME:AKDT +DTSTART:19840429T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Noronha.ics b/mozilla/calendar/libical/zoneinfo/America/Noronha.ics new file mode 100644 index 00000000000..d5bc5c8bd7d --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Noronha.ics @@ -0,0 +1,73 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Noronha +X-LIC-LOCATION:America/Noronha +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-020940 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-020940 +TZOFFSETTO:-0200 +TZNAME:FNT +DTSTART:19140101T000000 +RDATE:19140101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0200 +TZOFFSETTO:-0100 +TZNAME:FNST +DTSTART:19311003T110000 +RDATE:19311003T110000 +RDATE:19321003T000000 +RDATE:19491201T000000 +RDATE:19501201T000000 +RDATE:19511201T000000 +RDATE:19521201T000000 +RDATE:19631209T000000 +RDATE:19650131T000000 +RDATE:19651201T000000 +RDATE:19661101T000000 +RDATE:19671101T000000 +RDATE:19851102T000000 +RDATE:19861025T000000 +RDATE:19871025T000000 +RDATE:19881016T000000 +RDATE:19891015T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0100 +TZOFFSETTO:-0200 +TZNAME:FNT +DTSTART:19320401T000000 +RDATE:19320401T000000 +RDATE:19330401T000000 +RDATE:19500416T010000 +RDATE:19510401T000000 +RDATE:19520401T000000 +RDATE:19530301T000000 +RDATE:19640301T000000 +RDATE:19650331T000000 +RDATE:19660301T000000 +RDATE:19670301T000000 +RDATE:19680301T000000 +RDATE:19860315T000000 +RDATE:19870214T000000 +RDATE:19880207T000000 +RDATE:19890129T000000 +RDATE:19900211T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0200 +TZOFFSETTO:-0200 +TZNAME:FNT +DTSTART:19900917T000000 +RDATE:19900917T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Panama.ics b/mozilla/calendar/libical/zoneinfo/America/Panama.ics new file mode 100644 index 00000000000..8f9e76ad6be --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Panama.ics @@ -0,0 +1,29 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Panama +X-LIC-LOCATION:America/Panama +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-051808 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-051808 +TZOFFSETTO:-0520 +TZNAME:PMT +DTSTART:18900101T000000 +RDATE:18900101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0520 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19080422T000000 +RDATE:19080422T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Pangnirtung.ics b/mozilla/calendar/libical/zoneinfo/America/Pangnirtung.ics new file mode 100644 index 00000000000..03fb2d7730d --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Pangnirtung.ics @@ -0,0 +1,152 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Pangnirtung +X-LIC-LOCATION:America/Pangnirtung +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +DTSTART:20010401T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:20011028T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-042256 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-042256 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:18840101T000000 +RDATE:18840101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:ADT +DTSTART:19180414T020000 +RDATE:19180414T020000 +RDATE:19190525T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +RDATE:19870405T020000 +RDATE:19880403T020000 +RDATE:19890402T020000 +RDATE:19900401T020000 +RDATE:19910407T020000 +RDATE:19920405T020000 +RDATE:19930404T020000 +RDATE:19940403T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19181027T020000 +RDATE:19181027T020000 +RDATE:19191101T000000 +RDATE:19450930T020000 +RDATE:19801026T020000 +RDATE:19811025T020000 +RDATE:19821031T020000 +RDATE:19831030T020000 +RDATE:19841028T020000 +RDATE:19851027T020000 +RDATE:19861026T020000 +RDATE:19871025T020000 +RDATE:19881030T020000 +RDATE:19891029T020000 +RDATE:19901028T020000 +RDATE:19911027T020000 +RDATE:19921025T020000 +RDATE:19931031T020000 +RDATE:19941030T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:AWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0200 +TZNAME:ADDT +DTSTART:19650425T000000 +RDATE:19650425T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0200 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19651031T020000 +RDATE:19651031T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0400 +TZNAME:EDT +DTSTART:19950402T020000 +RDATE:19950402T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19951029T020000 +RDATE:19951029T020000 +RDATE:19961027T020000 +RDATE:19971026T020000 +RDATE:19981025T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +DTSTART:19960407T020000 +RDATE:19960407T020000 +RDATE:19970406T020000 +RDATE:19980405T020000 +RDATE:19990404T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19991031T020000 +RDATE:19991031T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:20000402T020000 +RDATE:20000402T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:20001029T020000 +RDATE:20001029T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Paramaribo.ics b/mozilla/calendar/libical/zoneinfo/America/Paramaribo.ics new file mode 100644 index 00000000000..152b3885268 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Paramaribo.ics @@ -0,0 +1,50 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Paramaribo +X-LIC-LOCATION:America/Paramaribo +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-034040 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-034040 +TZOFFSETTO:-034052 +TZNAME:PMT +DTSTART:19110101T000000 +RDATE:19110101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-034052 +TZOFFSETTO:-034036 +TZNAME:PMT +DTSTART:19350101T000000 +RDATE:19350101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-034036 +TZOFFSETTO:-0330 +TZNAME:NEGT +DTSTART:19451001T000000 +RDATE:19451001T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0330 +TZOFFSETTO:-0330 +TZNAME:SRT +DTSTART:19751120T000000 +RDATE:19751120T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0330 +TZOFFSETTO:-0300 +TZNAME:SRT +DTSTART:19841001T000000 +RDATE:19841001T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Phoenix.ics b/mozilla/calendar/libical/zoneinfo/America/Phoenix.ics new file mode 100644 index 00000000000..a8cb513798c --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Phoenix.ics @@ -0,0 +1,58 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Phoenix +X-LIC-LOCATION:America/Phoenix +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-072818 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-072818 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:18831118T120000 +RDATE:18831118T120000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:MDT +DTSTART:19180331T020000 +RDATE:19180331T020000 +RDATE:19190330T020000 +RDATE:19670430T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19181027T020000 +RDATE:19181027T020000 +RDATE:19191026T020000 +RDATE:19440101T000100 +RDATE:19671029T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:MWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0700 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19440317T000100 +RDATE:19440317T000100 +RDATE:19441001T000100 +RDATE:19670101T000000 +RDATE:19680101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Port-au-Prince.ics b/mozilla/calendar/libical/zoneinfo/America/Port-au-Prince.ics new file mode 100644 index 00000000000..bb6b2970f79 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Port-au-Prince.ics @@ -0,0 +1,71 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Port-au-Prince +X-LIC-LOCATION:America/Port-au-Prince +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-044920 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-044920 +TZOFFSETTO:-0449 +TZNAME:PPMT +DTSTART:18900101T000000 +RDATE:18900101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0449 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19170124T120000 +RDATE:19170124T120000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +DTSTART:19830508T000000 +RDATE:19830508T000000 +RDATE:19840429T000000 +RDATE:19850428T000000 +RDATE:19860427T000000 +RDATE:19870426T000000 +RDATE:19880403T010000 +RDATE:19890402T010000 +RDATE:19900401T010000 +RDATE:19910407T010000 +RDATE:19920405T010000 +RDATE:19930404T010000 +RDATE:19940403T010000 +RDATE:19950402T010000 +RDATE:19960407T010000 +RDATE:19970406T010000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19831030T000000 +RDATE:19831030T000000 +RDATE:19841028T000000 +RDATE:19851027T000000 +RDATE:19861026T000000 +RDATE:19871025T000000 +RDATE:19881030T020000 +RDATE:19891029T020000 +RDATE:19901028T020000 +RDATE:19911027T020000 +RDATE:19921025T020000 +RDATE:19931031T020000 +RDATE:19941030T020000 +RDATE:19951029T020000 +RDATE:19961027T020000 +RDATE:19971026T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Port_of_Spain.ics b/mozilla/calendar/libical/zoneinfo/America/Port_of_Spain.ics new file mode 100644 index 00000000000..4f05142f13b --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Port_of_Spain.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Port_of_Spain +X-LIC-LOCATION:America/Port_of_Spain +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-040604 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-040604 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19120302T000000 +RDATE:19120302T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Porto_Velho.ics b/mozilla/calendar/libical/zoneinfo/America/Porto_Velho.ics new file mode 100644 index 00000000000..806766bd64d --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Porto_Velho.ics @@ -0,0 +1,69 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Porto_Velho +X-LIC-LOCATION:America/Porto_Velho +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-041536 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-041536 +TZOFFSETTO:-0400 +TZNAME:AMT +DTSTART:19140101T000000 +RDATE:19140101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:AMST +DTSTART:19311003T110000 +RDATE:19311003T110000 +RDATE:19321003T000000 +RDATE:19491201T000000 +RDATE:19501201T000000 +RDATE:19511201T000000 +RDATE:19521201T000000 +RDATE:19631209T000000 +RDATE:19650131T000000 +RDATE:19651201T000000 +RDATE:19661101T000000 +RDATE:19671101T000000 +RDATE:19851102T000000 +RDATE:19861025T000000 +RDATE:19871025T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0400 +TZNAME:AMT +DTSTART:19320401T000000 +RDATE:19320401T000000 +RDATE:19330401T000000 +RDATE:19500416T010000 +RDATE:19510401T000000 +RDATE:19520401T000000 +RDATE:19530301T000000 +RDATE:19640301T000000 +RDATE:19650331T000000 +RDATE:19660301T000000 +RDATE:19670301T000000 +RDATE:19680301T000000 +RDATE:19860315T000000 +RDATE:19870214T000000 +RDATE:19880207T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0400 +TZNAME:AMT +DTSTART:19880912T000000 +RDATE:19880912T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Puerto_Rico.ics b/mozilla/calendar/libical/zoneinfo/America/Puerto_Rico.ics new file mode 100644 index 00000000000..074fb0f314d --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Puerto_Rico.ics @@ -0,0 +1,36 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Puerto_Rico +X-LIC-LOCATION:America/Puerto_Rico +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-042425 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-042425 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:18990328T120000 +RDATE:18990328T120000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:AWT +DTSTART:19420503T000000 +RDATE:19420503T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19450930T020000 +RDATE:19450930T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Rainy_River.ics b/mozilla/calendar/libical/zoneinfo/America/Rainy_River.ics new file mode 100644 index 00000000000..2ba102d7347 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Rainy_River.ics @@ -0,0 +1,71 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Rainy_River +X-LIC-LOCATION:America/Rainy_River +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19741027T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-061756 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-061756 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:18950101T000000 +RDATE:18950101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:19180414T020000 +RDATE:19180414T020000 +RDATE:19740428T020000 +RDATE:19750427T020000 +RDATE:19760425T020000 +RDATE:19770424T020000 +RDATE:19780430T020000 +RDATE:19790429T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19181031T020000 +RDATE:19181031T020000 +RDATE:19450930T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Rankin_Inlet.ics b/mozilla/calendar/libical/zoneinfo/America/Rankin_Inlet.ics new file mode 100644 index 00000000000..91360946c34 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Rankin_Inlet.ics @@ -0,0 +1,130 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Rankin_Inlet +X-LIC-LOCATION:America/Rankin_Inlet +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:20020407T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:20021027T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-060840 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-060840 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:18840101T000000 +RDATE:18840101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:19180414T020000 +RDATE:19180414T020000 +RDATE:19190525T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +RDATE:19870405T020000 +RDATE:19880403T020000 +RDATE:19890402T020000 +RDATE:19900401T020000 +RDATE:19910407T020000 +RDATE:19920405T020000 +RDATE:19930404T020000 +RDATE:19940403T020000 +RDATE:19950402T020000 +RDATE:19960407T020000 +RDATE:19970406T020000 +RDATE:19980405T020000 +RDATE:19990404T020000 +RDATE:20000402T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19181027T020000 +RDATE:19181027T020000 +RDATE:19191101T000000 +RDATE:19450930T020000 +RDATE:19801026T020000 +RDATE:19811025T020000 +RDATE:19821031T020000 +RDATE:19831030T020000 +RDATE:19841028T020000 +RDATE:19851027T020000 +RDATE:19861026T020000 +RDATE:19871025T020000 +RDATE:19881030T020000 +RDATE:19891029T020000 +RDATE:19901028T020000 +RDATE:19911027T020000 +RDATE:19921025T020000 +RDATE:19931031T020000 +RDATE:19941030T020000 +RDATE:19951029T020000 +RDATE:19961027T020000 +RDATE:19971026T020000 +RDATE:19981025T020000 +RDATE:19991031T020000 +RDATE:20010401T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0400 +TZNAME:CDDT +DTSTART:19650425T000000 +RDATE:19650425T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19651031T020000 +RDATE:19651031T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:20001029T020000 +RDATE:20001029T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:20011028T020000 +RDATE:20011028T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Recife.ics b/mozilla/calendar/libical/zoneinfo/America/Recife.ics new file mode 100644 index 00000000000..d671dd9ba02 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Recife.ics @@ -0,0 +1,78 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Recife +X-LIC-LOCATION:America/Recife +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-021936 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-021936 +TZOFFSETTO:-0300 +TZNAME:BRT +DTSTART:19140101T000000 +RDATE:19140101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0300 +TZOFFSETTO:-0200 +TZNAME:BRST +DTSTART:19311003T110000 +RDATE:19311003T110000 +RDATE:19321003T000000 +RDATE:19491201T000000 +RDATE:19501201T000000 +RDATE:19511201T000000 +RDATE:19521201T000000 +RDATE:19631209T000000 +RDATE:19650131T000000 +RDATE:19651201T000000 +RDATE:19661101T000000 +RDATE:19671101T000000 +RDATE:19851102T000000 +RDATE:19861025T000000 +RDATE:19871025T000000 +RDATE:19881016T000000 +RDATE:19891015T000000 +RDATE:19991003T000000 +RDATE:20001008T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0200 +TZOFFSETTO:-0300 +TZNAME:BRT +DTSTART:19320401T000000 +RDATE:19320401T000000 +RDATE:19330401T000000 +RDATE:19500416T010000 +RDATE:19510401T000000 +RDATE:19520401T000000 +RDATE:19530301T000000 +RDATE:19640301T000000 +RDATE:19650331T000000 +RDATE:19660301T000000 +RDATE:19670301T000000 +RDATE:19680301T000000 +RDATE:19860315T000000 +RDATE:19870214T000000 +RDATE:19880207T000000 +RDATE:19890129T000000 +RDATE:19900211T000000 +RDATE:20000227T000000 +RDATE:20001015T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0300 +TZNAME:BRT +DTSTART:19900917T000000 +RDATE:19900917T000000 +RDATE:19990930T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Regina.ics b/mozilla/calendar/libical/zoneinfo/America/Regina.ics new file mode 100644 index 00000000000..e7792a13d9c --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Regina.ics @@ -0,0 +1,99 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Regina +X-LIC-LOCATION:America/Regina +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-065836 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-065836 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19050901T000000 +RDATE:19050901T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:MDT +DTSTART:19180414T020000 +RDATE:19180414T020000 +RDATE:19300504T000000 +RDATE:19310503T000000 +RDATE:19320501T000000 +RDATE:19330507T000000 +RDATE:19340506T000000 +RDATE:19370411T000000 +RDATE:19380410T000000 +RDATE:19390409T000000 +RDATE:19400414T000000 +RDATE:19410413T000000 +RDATE:19460414T020000 +RDATE:19470427T020000 +RDATE:19480425T020000 +RDATE:19490424T020000 +RDATE:19500430T020000 +RDATE:19510429T020000 +RDATE:19520427T020000 +RDATE:19530426T020000 +RDATE:19540425T020000 +RDATE:19550424T020000 +RDATE:19560429T020000 +RDATE:19570428T020000 +RDATE:19580427T020000 +RDATE:19590426T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19181031T020000 +RDATE:19181031T020000 +RDATE:19301005T000000 +RDATE:19311004T000000 +RDATE:19321002T000000 +RDATE:19331001T000000 +RDATE:19341007T000000 +RDATE:19371010T000000 +RDATE:19381002T000000 +RDATE:19391008T000000 +RDATE:19401013T000000 +RDATE:19411012T000000 +RDATE:19450930T020000 +RDATE:19461013T020000 +RDATE:19470928T020000 +RDATE:19480926T020000 +RDATE:19490925T020000 +RDATE:19500924T020000 +RDATE:19510930T020000 +RDATE:19520928T020000 +RDATE:19530927T020000 +RDATE:19540926T020000 +RDATE:19550925T020000 +RDATE:19560930T020000 +RDATE:19570929T020000 +RDATE:19580928T020000 +RDATE:19591025T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:MWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19600424T020000 +RDATE:19600424T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Rio_Branco.ics b/mozilla/calendar/libical/zoneinfo/America/Rio_Branco.ics new file mode 100644 index 00000000000..5fdd418b72c --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Rio_Branco.ics @@ -0,0 +1,69 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Rio_Branco +X-LIC-LOCATION:America/Rio_Branco +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-043112 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-043112 +TZOFFSETTO:-0500 +TZNAME:ACT +DTSTART:19140101T000000 +RDATE:19140101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:ACST +DTSTART:19311003T110000 +RDATE:19311003T110000 +RDATE:19321003T000000 +RDATE:19491201T000000 +RDATE:19501201T000000 +RDATE:19511201T000000 +RDATE:19521201T000000 +RDATE:19631209T000000 +RDATE:19650131T000000 +RDATE:19651201T000000 +RDATE:19661101T000000 +RDATE:19671101T000000 +RDATE:19851102T000000 +RDATE:19861025T000000 +RDATE:19871025T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:ACT +DTSTART:19320401T000000 +RDATE:19320401T000000 +RDATE:19330401T000000 +RDATE:19500416T010000 +RDATE:19510401T000000 +RDATE:19520401T000000 +RDATE:19530301T000000 +RDATE:19640301T000000 +RDATE:19650331T000000 +RDATE:19660301T000000 +RDATE:19670301T000000 +RDATE:19680301T000000 +RDATE:19860315T000000 +RDATE:19870214T000000 +RDATE:19880207T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0500 +TZNAME:ACT +DTSTART:19880912T000000 +RDATE:19880912T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Rosario.ics b/mozilla/calendar/libical/zoneinfo/America/Rosario.ics new file mode 100644 index 00000000000..9a93ebbca92 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Rosario.ics @@ -0,0 +1,135 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Rosario +X-LIC-LOCATION:America/Rosario +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-040240 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-040240 +TZOFFSETTO:-041644 +TZNAME:CMT +DTSTART:18941101T000000 +RDATE:18941101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-041644 +TZOFFSETTO:-0400 +TZNAME:ART +DTSTART:19200501T000000 +RDATE:19200501T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:ARST +DTSTART:19301201T000000 +RDATE:19301201T000000 +RDATE:19311015T000000 +RDATE:19321101T000000 +RDATE:19331101T000000 +RDATE:19341101T000000 +RDATE:19351101T000000 +RDATE:19361101T000000 +RDATE:19371101T000000 +RDATE:19381101T000000 +RDATE:19391101T000000 +RDATE:19400701T000000 +RDATE:19411015T000000 +RDATE:19431015T000000 +RDATE:19461001T000000 +RDATE:19631215T000000 +RDATE:19641015T000000 +RDATE:19651015T000000 +RDATE:19661015T000000 +RDATE:19671001T000000 +RDATE:19681006T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0400 +TZNAME:ART +DTSTART:19310401T000000 +RDATE:19310401T000000 +RDATE:19320301T000000 +RDATE:19330301T000000 +RDATE:19340301T000000 +RDATE:19350301T000000 +RDATE:19360301T000000 +RDATE:19370301T000000 +RDATE:19380301T000000 +RDATE:19390301T000000 +RDATE:19400301T000000 +RDATE:19410615T000000 +RDATE:19430801T000000 +RDATE:19460301T000000 +RDATE:19631001T000000 +RDATE:19640301T000000 +RDATE:19650301T000000 +RDATE:19660301T000000 +RDATE:19670401T000000 +RDATE:19680407T000000 +RDATE:19690406T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:ART +DTSTART:19691005T000000 +RDATE:19691005T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0300 +TZOFFSETTO:-0200 +TZNAME:ARST +DTSTART:19740123T000000 +RDATE:19740123T000000 +RDATE:19741006T000000 +RDATE:19751005T000000 +RDATE:19761003T000000 +RDATE:19851102T000000 +RDATE:19861025T000000 +RDATE:19871025T000000 +RDATE:19881201T000000 +RDATE:19891015T000000 +RDATE:19901021T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0200 +TZOFFSETTO:-0300 +TZNAME:ART +DTSTART:19740501T000000 +RDATE:19740501T000000 +RDATE:19750406T000000 +RDATE:19760404T000000 +RDATE:19770403T000000 +RDATE:19860314T000000 +RDATE:19870213T000000 +RDATE:19880207T000000 +RDATE:19890305T000000 +RDATE:19900304T000000 +RDATE:19910303T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0300 +TZNAME:ART +DTSTART:19910701T000000 +RDATE:19910701T000000 +RDATE:20000303T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0300 +TZOFFSETTO:-0300 +TZNAME:ARST +DTSTART:19991003T000000 +RDATE:19991003T000000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Santiago.ics b/mozilla/calendar/libical/zoneinfo/America/Santiago.ics new file mode 100644 index 00000000000..d53f4ddb5c4 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Santiago.ics @@ -0,0 +1,152 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Santiago +X-LIC-LOCATION:America/Santiago +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:CLST +DTSTART:19991010T000000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=9,10,11,12,13,14,15;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0400 +TZNAME:CLT +DTSTART:20000312T000000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYMONTHDAY=9,10,11,12,13,14,15;BYDAY=SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-044240 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-044240 +TZOFFSETTO:-044240 +TZNAME:SMT +DTSTART:18900101T000000 +RDATE:18900101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-044240 +TZOFFSETTO:-0500 +TZNAME:CLT +DTSTART:19100101T000000 +RDATE:19100101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:CLST +DTSTART:19180901T000000 +RDATE:19180901T000000 +RDATE:19270901T000000 +RDATE:19280901T000000 +RDATE:19290901T000000 +RDATE:19300901T000000 +RDATE:19310901T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:CLT +DTSTART:19190702T000000 +RDATE:19190702T000000 +RDATE:19280401T000000 +RDATE:19290401T000000 +RDATE:19300401T000000 +RDATE:19310401T000000 +RDATE:19320401T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:CLT +DTSTART:19320901T000000 +RDATE:19320901T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:CLST +DTSTART:19661009T000000 +RDATE:19661009T000000 +RDATE:19671015T000000 +RDATE:19681013T000000 +RDATE:19691012T000000 +RDATE:19701011T000000 +RDATE:19711010T000000 +RDATE:19721015T000000 +RDATE:19731014T000000 +RDATE:19741013T000000 +RDATE:19751012T000000 +RDATE:19761010T000000 +RDATE:19771009T000000 +RDATE:19781015T000000 +RDATE:19791014T000000 +RDATE:19801012T000000 +RDATE:19811011T000000 +RDATE:19821010T000000 +RDATE:19831009T000000 +RDATE:19841014T000000 +RDATE:19851013T000000 +RDATE:19861012T000000 +RDATE:19871011T000000 +RDATE:19881009T000000 +RDATE:19891015T000000 +RDATE:19901014T000000 +RDATE:19911013T000000 +RDATE:19921011T000000 +RDATE:19931010T000000 +RDATE:19941009T000000 +RDATE:19951015T000000 +RDATE:19961013T000000 +RDATE:19971012T000000 +RDATE:19980927T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0400 +TZNAME:CLT +DTSTART:19670312T000000 +RDATE:19670312T000000 +RDATE:19680310T000000 +RDATE:19690309T000000 +RDATE:19700315T000000 +RDATE:19710314T000000 +RDATE:19720312T000000 +RDATE:19730311T000000 +RDATE:19740310T000000 +RDATE:19750309T000000 +RDATE:19760314T000000 +RDATE:19770313T000000 +RDATE:19780312T000000 +RDATE:19790311T000000 +RDATE:19800309T000000 +RDATE:19810315T000000 +RDATE:19820314T000000 +RDATE:19830313T000000 +RDATE:19840311T000000 +RDATE:19850310T000000 +RDATE:19860309T000000 +RDATE:19870315T000000 +RDATE:19880313T000000 +RDATE:19890312T000000 +RDATE:19900311T000000 +RDATE:19910310T000000 +RDATE:19920315T000000 +RDATE:19930314T000000 +RDATE:19940313T000000 +RDATE:19950312T000000 +RDATE:19960310T000000 +RDATE:19970309T000000 +RDATE:19980315T000000 +RDATE:19990404T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Santo_Domingo.ics b/mozilla/calendar/libical/zoneinfo/America/Santo_Domingo.ics new file mode 100644 index 00000000000..98ff2047a74 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Santo_Domingo.ics @@ -0,0 +1,74 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Santo_Domingo +X-LIC-LOCATION:America/Santo_Domingo +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-043936 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-043936 +TZOFFSETTO:-0440 +TZNAME:SDMT +DTSTART:18900101T000000 +RDATE:18900101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0440 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19330401T120000 +RDATE:19330401T120000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +DTSTART:19661030T000000 +RDATE:19661030T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19670228T000000 +RDATE:19670228T000000 +RDATE:20001029T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0430 +TZNAME:EHDT +DTSTART:19691026T000000 +RDATE:19691026T000000 +RDATE:19701025T000000 +RDATE:19711031T000000 +RDATE:19721029T000000 +RDATE:19731028T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0430 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19700221T000000 +RDATE:19700221T000000 +RDATE:19710120T000000 +RDATE:19720121T000000 +RDATE:19730121T000000 +RDATE:19740121T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19741027T000000 +RDATE:19741027T000000 +RDATE:20001203T010000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Sao_Paulo.ics b/mozilla/calendar/libical/zoneinfo/America/Sao_Paulo.ics new file mode 100644 index 00000000000..c33a6e7f2aa --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Sao_Paulo.ics @@ -0,0 +1,107 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Sao_Paulo +X-LIC-LOCATION:America/Sao_Paulo +BEGIN:DAYLIGHT +TZOFFSETFROM:-0300 +TZOFFSETTO:-0200 +TZNAME:BRST +DTSTART:20001008T000000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=8,9,10,11,12,13,14;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0200 +TZOFFSETTO:-0300 +TZNAME:BRT +DTSTART:20010218T000000 +RRULE:FREQ=YEARLY;BYMONTH=2;BYMONTHDAY=15,16,17,18,19,20,21;BYDAY=SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-030628 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-030628 +TZOFFSETTO:-0300 +TZNAME:BRT +DTSTART:19140101T000000 +RDATE:19140101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0300 +TZOFFSETTO:-0200 +TZNAME:BRST +DTSTART:19311003T110000 +RDATE:19311003T110000 +RDATE:19321003T000000 +RDATE:19491201T000000 +RDATE:19501201T000000 +RDATE:19511201T000000 +RDATE:19521201T000000 +RDATE:19631023T000000 +RDATE:19650131T000000 +RDATE:19651201T000000 +RDATE:19661101T000000 +RDATE:19671101T000000 +RDATE:19851102T000000 +RDATE:19861025T000000 +RDATE:19871025T000000 +RDATE:19881016T000000 +RDATE:19891015T000000 +RDATE:19901021T000000 +RDATE:19911020T000000 +RDATE:19921025T000000 +RDATE:19931017T000000 +RDATE:19941016T000000 +RDATE:19951015T000000 +RDATE:19961006T000000 +RDATE:19971006T000000 +RDATE:19981011T000000 +RDATE:19991003T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0200 +TZOFFSETTO:-0300 +TZNAME:BRT +DTSTART:19320401T000000 +RDATE:19320401T000000 +RDATE:19330401T000000 +RDATE:19500416T010000 +RDATE:19510401T000000 +RDATE:19520401T000000 +RDATE:19530301T000000 +RDATE:19640101T000000 +RDATE:19650331T000000 +RDATE:19660301T000000 +RDATE:19670301T000000 +RDATE:19680301T000000 +RDATE:19860315T000000 +RDATE:19870214T000000 +RDATE:19880207T000000 +RDATE:19890129T000000 +RDATE:19900211T000000 +RDATE:19910217T000000 +RDATE:19920209T000000 +RDATE:19930131T000000 +RDATE:19940220T000000 +RDATE:19950219T000000 +RDATE:19960211T000000 +RDATE:19970216T000000 +RDATE:19980301T000000 +RDATE:19990221T000000 +RDATE:20000227T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0300 +TZNAME:BRT +DTSTART:19640301T000000 +RDATE:19640301T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Scoresbysund.ics b/mozilla/calendar/libical/zoneinfo/America/Scoresbysund.ics new file mode 100644 index 00000000000..101248e6153 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Scoresbysund.ics @@ -0,0 +1,78 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Scoresbysund +X-LIC-LOCATION:America/Scoresbysund +BEGIN:DAYLIGHT +TZOFFSETFROM:-0100 +TZOFFSETTO:+0000 +TZNAME:EGST +DTSTART:19820328T000000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-0100 +TZNAME:EGT +DTSTART:19961027T010000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-0129 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0129 +TZOFFSETTO:-0200 +TZNAME:CGT +DTSTART:19160728T000000 +RDATE:19160728T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0200 +TZOFFSETTO:-0100 +TZNAME:CGST +DTSTART:19800406T020000 +RDATE:19800406T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0100 +TZOFFSETTO:-0200 +TZNAME:CGT +DTSTART:19800928T030000 +RDATE:19800928T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0200 +TZOFFSETTO:+0000 +TZNAME:EGST +DTSTART:19810328T230000 +RDATE:19810328T230000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-0100 +TZNAME:EGT +DTSTART:19810927T010000 +RDATE:19810927T010000 +RDATE:19820926T010000 +RDATE:19830925T010000 +RDATE:19840930T010000 +RDATE:19850929T010000 +RDATE:19860928T010000 +RDATE:19870927T010000 +RDATE:19880925T010000 +RDATE:19890924T010000 +RDATE:19900930T010000 +RDATE:19910929T010000 +RDATE:19920927T010000 +RDATE:19930926T010000 +RDATE:19940925T010000 +RDATE:19950924T010000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Shiprock.ics b/mozilla/calendar/libical/zoneinfo/America/Shiprock.ics new file mode 100644 index 00000000000..dcaa4900001 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Shiprock.ics @@ -0,0 +1,103 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Shiprock +X-LIC-LOCATION:America/Shiprock +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19651031T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:MDT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-065956 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-065956 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:18831118T120000 +RDATE:18831118T120000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:MDT +DTSTART:19180331T020000 +RDATE:19180331T020000 +RDATE:19190330T020000 +RDATE:19200328T020000 +RDATE:19210327T020000 +RDATE:19650425T020000 +RDATE:19660424T020000 +RDATE:19670430T020000 +RDATE:19680428T020000 +RDATE:19690427T020000 +RDATE:19700426T020000 +RDATE:19710425T020000 +RDATE:19720430T020000 +RDATE:19730429T020000 +RDATE:19740106T020000 +RDATE:19750223T020000 +RDATE:19760425T020000 +RDATE:19770424T020000 +RDATE:19780430T020000 +RDATE:19790429T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19181027T020000 +RDATE:19181027T020000 +RDATE:19191026T020000 +RDATE:19201031T020000 +RDATE:19210522T020000 +RDATE:19450930T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0700 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19200101T000000 +RDATE:19200101T000000 +RDATE:19420101T000000 +RDATE:19460101T000000 +RDATE:19670101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:MWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0600 +TZNAME:MPT +DTSTART:19450814T170000 +RDATE:19450814T170000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/St_Johns.ics b/mozilla/calendar/libical/zoneinfo/America/St_Johns.ics new file mode 100644 index 00000000000..21631d4100b --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/St_Johns.ics @@ -0,0 +1,229 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/St_Johns +X-LIC-LOCATION:America/St_Johns +BEGIN:DAYLIGHT +TZOFFSETFROM:-0330 +TZOFFSETTO:-0230 +TZNAME:NDT +DTSTART:19890402T000100 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0230 +TZOFFSETTO:-0330 +TZNAME:NST +DTSTART:19891029T000100 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-033052 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-033052 +TZOFFSETTO:-033052 +TZNAME:NST +DTSTART:18840101T000000 +RDATE:18840101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-033052 +TZOFFSETTO:-023052 +TZNAME:NDT +DTSTART:19170408T020000 +RDATE:19170408T020000 +RDATE:19180414T020000 +RDATE:19190505T230000 +RDATE:19200502T230000 +RDATE:19210501T230000 +RDATE:19220507T230000 +RDATE:19230506T230000 +RDATE:19240504T230000 +RDATE:19250503T230000 +RDATE:19260502T230000 +RDATE:19270501T230000 +RDATE:19280506T230000 +RDATE:19290505T230000 +RDATE:19300504T230000 +RDATE:19310503T230000 +RDATE:19320501T230000 +RDATE:19330507T230000 +RDATE:19340506T230000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-023052 +TZOFFSETTO:-033052 +TZNAME:NST +DTSTART:19170917T020000 +RDATE:19170917T020000 +RDATE:19181031T020000 +RDATE:19190812T230000 +RDATE:19201031T230000 +RDATE:19211030T230000 +RDATE:19221029T230000 +RDATE:19231028T230000 +RDATE:19241026T230000 +RDATE:19251025T230000 +RDATE:19261031T230000 +RDATE:19271030T230000 +RDATE:19281028T230000 +RDATE:19291027T230000 +RDATE:19301026T230000 +RDATE:19311025T230000 +RDATE:19321030T230000 +RDATE:19331029T230000 +RDATE:19341028T230000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-033052 +TZOFFSETTO:-0330 +TZNAME:NST +DTSTART:19350330T000000 +RDATE:19350330T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0330 +TZOFFSETTO:-0230 +TZNAME:NDT +DTSTART:19350505T230000 +RDATE:19350505T230000 +RDATE:19360510T000000 +RDATE:19370509T000000 +RDATE:19380508T000000 +RDATE:19390514T000000 +RDATE:19400512T000000 +RDATE:19410511T000000 +RDATE:19460512T020000 +RDATE:19470511T020000 +RDATE:19480509T020000 +RDATE:19490508T020000 +RDATE:19500514T020000 +RDATE:19510429T020000 +RDATE:19520427T020000 +RDATE:19530426T020000 +RDATE:19540425T020000 +RDATE:19550424T020000 +RDATE:19560429T020000 +RDATE:19570428T020000 +RDATE:19580427T020000 +RDATE:19590426T020000 +RDATE:19600424T020000 +RDATE:19610430T020000 +RDATE:19620429T020000 +RDATE:19630428T020000 +RDATE:19640426T020000 +RDATE:19650425T020000 +RDATE:19660424T020000 +RDATE:19670430T020000 +RDATE:19680428T020000 +RDATE:19690427T020000 +RDATE:19700426T020000 +RDATE:19710425T020000 +RDATE:19720430T020000 +RDATE:19730429T020000 +RDATE:19740428T020000 +RDATE:19750427T020000 +RDATE:19760425T020000 +RDATE:19770424T020000 +RDATE:19780430T020000 +RDATE:19790429T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +RDATE:19870405T000100 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0230 +TZOFFSETTO:-0330 +TZNAME:NST +DTSTART:19351027T230000 +RDATE:19351027T230000 +RDATE:19361004T000000 +RDATE:19371003T000000 +RDATE:19381002T000000 +RDATE:19391001T000000 +RDATE:19401006T000000 +RDATE:19411005T000000 +RDATE:19421231T000000 +RDATE:19430905T000000 +RDATE:19440902T000000 +RDATE:19451007T020000 +RDATE:19461006T020000 +RDATE:19471005T020000 +RDATE:19481003T020000 +RDATE:19491002T020000 +RDATE:19501008T020000 +RDATE:19510930T020000 +RDATE:19520928T020000 +RDATE:19530927T020000 +RDATE:19540926T020000 +RDATE:19550925T020000 +RDATE:19560930T020000 +RDATE:19570929T020000 +RDATE:19580928T020000 +RDATE:19590927T020000 +RDATE:19601030T020000 +RDATE:19611029T020000 +RDATE:19621028T020000 +RDATE:19631027T020000 +RDATE:19641025T020000 +RDATE:19651031T020000 +RDATE:19661030T020000 +RDATE:19671029T020000 +RDATE:19681027T020000 +RDATE:19691026T020000 +RDATE:19701025T020000 +RDATE:19711031T020000 +RDATE:19721029T020000 +RDATE:19731028T020000 +RDATE:19741027T020000 +RDATE:19751026T020000 +RDATE:19761031T020000 +RDATE:19771030T020000 +RDATE:19781029T020000 +RDATE:19791028T020000 +RDATE:19801026T020000 +RDATE:19811025T020000 +RDATE:19821031T020000 +RDATE:19831030T020000 +RDATE:19841028T020000 +RDATE:19851027T020000 +RDATE:19861026T020000 +RDATE:19871025T000100 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0330 +TZOFFSETTO:-0230 +TZNAME:NWT +DTSTART:19420301T000000 +RDATE:19420301T000000 +RDATE:19430530T000000 +RDATE:19440710T000000 +RDATE:19450101T000000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:-0330 +TZOFFSETTO:-0130 +TZNAME:NDDT +DTSTART:19880403T000100 +RDATE:19880403T000100 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0130 +TZOFFSETTO:-0330 +TZNAME:NST +DTSTART:19881030T000100 +RDATE:19881030T000100 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/St_Kitts.ics b/mozilla/calendar/libical/zoneinfo/America/St_Kitts.ics new file mode 100644 index 00000000000..c131b5456bc --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/St_Kitts.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/St_Kitts +X-LIC-LOCATION:America/St_Kitts +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-041052 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-041052 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19120302T000000 +RDATE:19120302T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/St_Lucia.ics b/mozilla/calendar/libical/zoneinfo/America/St_Lucia.ics new file mode 100644 index 00000000000..e7aa4a80fd9 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/St_Lucia.ics @@ -0,0 +1,29 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/St_Lucia +X-LIC-LOCATION:America/St_Lucia +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-0404 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0404 +TZOFFSETTO:-0404 +TZNAME:CMT +DTSTART:18900101T000000 +RDATE:18900101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0404 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19120101T000000 +RDATE:19120101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/St_Thomas.ics b/mozilla/calendar/libical/zoneinfo/America/St_Thomas.ics new file mode 100644 index 00000000000..a7a7425feec --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/St_Thomas.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/St_Thomas +X-LIC-LOCATION:America/St_Thomas +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-041944 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-041944 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19110701T000000 +RDATE:19110701T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/St_Vincent.ics b/mozilla/calendar/libical/zoneinfo/America/St_Vincent.ics new file mode 100644 index 00000000000..844c278dbf0 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/St_Vincent.ics @@ -0,0 +1,29 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/St_Vincent +X-LIC-LOCATION:America/St_Vincent +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-040456 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-040456 +TZOFFSETTO:-040456 +TZNAME:KMT +DTSTART:18900101T000000 +RDATE:18900101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-040456 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19120101T000000 +RDATE:19120101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Swift_Current.ics b/mozilla/calendar/libical/zoneinfo/America/Swift_Current.ics new file mode 100644 index 00000000000..179589e07ea --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Swift_Current.ics @@ -0,0 +1,74 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Swift_Current +X-LIC-LOCATION:America/Swift_Current +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-071120 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-071120 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19050901T000000 +RDATE:19050901T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:MDT +DTSTART:19180414T020000 +RDATE:19180414T020000 +RDATE:19470427T020000 +RDATE:19480425T020000 +RDATE:19490424T020000 +RDATE:19570428T020000 +RDATE:19590426T020000 +RDATE:19600424T020000 +RDATE:19610430T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19181031T020000 +RDATE:19181031T020000 +RDATE:19450930T020000 +RDATE:19470928T020000 +RDATE:19480926T020000 +RDATE:19490925T020000 +RDATE:19571027T020000 +RDATE:19591025T020000 +RDATE:19600925T020000 +RDATE:19610924T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:MWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0700 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19460428T020000 +RDATE:19460428T020000 +RDATE:19461013T020000 +RDATE:19500101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19720430T020000 +RDATE:19720430T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Tegucigalpa.ics b/mozilla/calendar/libical/zoneinfo/America/Tegucigalpa.ics new file mode 100644 index 00000000000..b2143540544 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Tegucigalpa.ics @@ -0,0 +1,38 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Tegucigalpa +X-LIC-LOCATION:America/Tegucigalpa +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-054852 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-054852 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19210401T000000 +RDATE:19210401T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:19870503T000000 +RDATE:19870503T000000 +RDATE:19880501T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19870927T000000 +RDATE:19870927T000000 +RDATE:19880925T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Thule.ics b/mozilla/calendar/libical/zoneinfo/America/Thule.ics new file mode 100644 index 00000000000..becad38b445 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Thule.ics @@ -0,0 +1,36 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Thule +X-LIC-LOCATION:America/Thule +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:ADT +DTSTART:19930404T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19931031T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-043508 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-043508 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19160728T000000 +RDATE:19160728T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Thunder_Bay.ics b/mozilla/calendar/libical/zoneinfo/America/Thunder_Bay.ics new file mode 100644 index 00000000000..e747cc88e8c --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Thunder_Bay.ics @@ -0,0 +1,86 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Thunder_Bay +X-LIC-LOCATION:America/Thunder_Bay +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19741027T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-0557 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0557 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:18950101T000000 +RDATE:18950101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EDT +DTSTART:19180414T020000 +RDATE:19180414T020000 +RDATE:19700426T020000 +RDATE:19710425T020000 +RDATE:19720430T020000 +RDATE:19740428T020000 +RDATE:19750427T020000 +RDATE:19760425T020000 +RDATE:19770424T020000 +RDATE:19780430T020000 +RDATE:19790429T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19181031T020000 +RDATE:19181031T020000 +RDATE:19450930T020000 +RDATE:19701025T020000 +RDATE:19711031T020000 +RDATE:19721029T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0500 +TZOFFSETTO:-0400 +TZNAME:EWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0500 +TZNAME:EST +DTSTART:19700101T000000 +RDATE:19700101T000000 +RDATE:19730101T000000 +RDATE:19740101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Tijuana.ics b/mozilla/calendar/libical/zoneinfo/America/Tijuana.ics new file mode 100644 index 00000000000..21713b5f63b --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Tijuana.ics @@ -0,0 +1,105 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Tijuana +X-LIC-LOCATION:America/Tijuana +BEGIN:STANDARD +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +DTSTART:19761031T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-074804 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-074804 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19220101T001156 +RDATE:19220101T001156 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +DTSTART:19240101T000000 +RDATE:19240101T000000 +RDATE:19301115T000000 +RDATE:19310930T000000 +RDATE:19451112T000000 +RDATE:19490114T000000 +RDATE:19540926T020000 +RDATE:19550925T020000 +RDATE:19560930T020000 +RDATE:19570929T020000 +RDATE:19580928T020000 +RDATE:19590927T020000 +RDATE:19600925T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19270610T230000 +RDATE:19270610T230000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +DTSTART:19310401T000000 +RDATE:19310401T000000 +RDATE:19480405T000000 +RDATE:19540425T020000 +RDATE:19550424T020000 +RDATE:19560429T020000 +RDATE:19570428T020000 +RDATE:19580427T020000 +RDATE:19590426T020000 +RDATE:19600424T020000 +RDATE:19760425T020000 +RDATE:19770424T020000 +RDATE:19780430T020000 +RDATE:19790429T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PWT +DTSTART:19420424T000000 +RDATE:19420424T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0800 +TZOFFSETTO:-0800 +TZNAME:PST +DTSTART:19540101T000000 +RDATE:19540101T000000 +RDATE:19610101T000000 +RDATE:19760101T000000 +RDATE:19960101T000000 +RDATE:20010101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Tortola.ics b/mozilla/calendar/libical/zoneinfo/America/Tortola.ics new file mode 100644 index 00000000000..e1ee946ad80 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Tortola.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Tortola +X-LIC-LOCATION:America/Tortola +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-041828 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-041828 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19110701T000000 +RDATE:19110701T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Vancouver.ics b/mozilla/calendar/libical/zoneinfo/America/Vancouver.ics new file mode 100644 index 00000000000..8ebc1b95ecb --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Vancouver.ics @@ -0,0 +1,115 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Vancouver +X-LIC-LOCATION:America/Vancouver +BEGIN:STANDARD +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +DTSTART:19621028T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-081228 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-081228 +TZOFFSETTO:-0800 +TZNAME:PST +DTSTART:18840101T000000 +RDATE:18840101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +DTSTART:19180414T020000 +RDATE:19180414T020000 +RDATE:19460428T020000 +RDATE:19470427T020000 +RDATE:19480425T020000 +RDATE:19490424T020000 +RDATE:19500430T020000 +RDATE:19510429T020000 +RDATE:19520427T020000 +RDATE:19530426T020000 +RDATE:19540425T020000 +RDATE:19550424T020000 +RDATE:19560429T020000 +RDATE:19570428T020000 +RDATE:19580427T020000 +RDATE:19590426T020000 +RDATE:19600424T020000 +RDATE:19610430T020000 +RDATE:19620429T020000 +RDATE:19630428T020000 +RDATE:19640426T020000 +RDATE:19650425T020000 +RDATE:19660424T020000 +RDATE:19670430T020000 +RDATE:19680428T020000 +RDATE:19690427T020000 +RDATE:19700426T020000 +RDATE:19710425T020000 +RDATE:19720430T020000 +RDATE:19730429T020000 +RDATE:19740428T020000 +RDATE:19750427T020000 +RDATE:19760425T020000 +RDATE:19770424T020000 +RDATE:19780430T020000 +RDATE:19790429T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +DTSTART:19181031T020000 +RDATE:19181031T020000 +RDATE:19450930T020000 +RDATE:19461013T020000 +RDATE:19470928T020000 +RDATE:19480926T020000 +RDATE:19490925T020000 +RDATE:19500924T020000 +RDATE:19510930T020000 +RDATE:19520928T020000 +RDATE:19530927T020000 +RDATE:19540926T020000 +RDATE:19550925T020000 +RDATE:19560930T020000 +RDATE:19570929T020000 +RDATE:19580928T020000 +RDATE:19590927T020000 +RDATE:19600925T020000 +RDATE:19610924T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Whitehorse.ics b/mozilla/calendar/libical/zoneinfo/America/Whitehorse.ics new file mode 100644 index 00000000000..20a0abecdc7 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Whitehorse.ics @@ -0,0 +1,94 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Whitehorse +X-LIC-LOCATION:America/Whitehorse +BEGIN:STANDARD +TZOFFSETFROM:-0700 +TZOFFSETTO:-0800 +TZNAME:PST +DTSTART:19801026T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-090012 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-090012 +TZOFFSETTO:-0900 +TZNAME:YST +DTSTART:19000820T000000 +RDATE:19000820T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0900 +TZOFFSETTO:-0800 +TZNAME:YDT +DTSTART:19180414T020000 +RDATE:19180414T020000 +RDATE:19190525T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0800 +TZOFFSETTO:-0900 +TZNAME:YST +DTSTART:19181027T020000 +RDATE:19181027T020000 +RDATE:19191101T000000 +RDATE:19450930T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0900 +TZOFFSETTO:-0800 +TZNAME:YWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:-0900 +TZOFFSETTO:-0700 +TZNAME:YDDT +DTSTART:19650425T000000 +RDATE:19650425T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0700 +TZOFFSETTO:-0900 +TZNAME:YST +DTSTART:19651031T020000 +RDATE:19651031T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0900 +TZOFFSETTO:-0800 +TZNAME:PST +DTSTART:19660701T020000 +RDATE:19660701T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0800 +TZOFFSETTO:-0700 +TZNAME:PDT +DTSTART:19800427T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Winnipeg.ics b/mozilla/calendar/libical/zoneinfo/America/Winnipeg.ics new file mode 100644 index 00000000000..f263d192878 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Winnipeg.ics @@ -0,0 +1,136 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Winnipeg +X-LIC-LOCATION:America/Winnipeg +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19871025T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-062836 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-062836 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:18870716T000000 +RDATE:18870716T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CDT +DTSTART:19160423T000000 +RDATE:19160423T000000 +RDATE:19180414T020000 +RDATE:19370516T020000 +RDATE:19460512T020000 +RDATE:19470427T020000 +RDATE:19480425T020000 +RDATE:19490424T020000 +RDATE:19500501T020000 +RDATE:19510429T020000 +RDATE:19520427T020000 +RDATE:19530426T020000 +RDATE:19540425T020000 +RDATE:19550424T020000 +RDATE:19560429T020000 +RDATE:19570428T020000 +RDATE:19580427T020000 +RDATE:19590426T020000 +RDATE:19600424T020000 +RDATE:19630428T020000 +RDATE:19660424T020000 +RDATE:19670430T020000 +RDATE:19680428T020000 +RDATE:19690427T020000 +RDATE:19700426T020000 +RDATE:19710425T020000 +RDATE:19720430T020000 +RDATE:19730429T020000 +RDATE:19740428T020000 +RDATE:19750427T020000 +RDATE:19760425T020000 +RDATE:19770424T020000 +RDATE:19780430T020000 +RDATE:19790429T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:CST +DTSTART:19160917T000000 +RDATE:19160917T000000 +RDATE:19181031T020000 +RDATE:19370926T020000 +RDATE:19450930T020000 +RDATE:19461013T020000 +RDATE:19470928T020000 +RDATE:19480926T020000 +RDATE:19490925T020000 +RDATE:19500930T020000 +RDATE:19510930T020000 +RDATE:19520928T020000 +RDATE:19530927T020000 +RDATE:19540926T020000 +RDATE:19550925T020000 +RDATE:19560930T020000 +RDATE:19570929T020000 +RDATE:19580928T020000 +RDATE:19591025T020000 +RDATE:19600925T020000 +RDATE:19630922T020000 +RDATE:19661030T020000 +RDATE:19671029T020000 +RDATE:19681027T020000 +RDATE:19691026T020000 +RDATE:19701025T020000 +RDATE:19711031T020000 +RDATE:19721029T020000 +RDATE:19731028T020000 +RDATE:19741027T020000 +RDATE:19751026T020000 +RDATE:19761031T020000 +RDATE:19771030T020000 +RDATE:19781029T020000 +RDATE:19791028T020000 +RDATE:19801026T020000 +RDATE:19811025T020000 +RDATE:19821031T020000 +RDATE:19831030T020000 +RDATE:19841028T020000 +RDATE:19851027T020000 +RDATE:19861026T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:CWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Yakutat.ics b/mozilla/calendar/libical/zoneinfo/America/Yakutat.ics new file mode 100644 index 00000000000..8b56274563a --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Yakutat.ics @@ -0,0 +1,117 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Yakutat +X-LIC-LOCATION:America/Yakutat +BEGIN:STANDARD +TZOFFSETFROM:-0800 +TZOFFSETTO:-0900 +TZNAME:AKST +DTSTART:19831030T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0900 +TZOFFSETTO:-0800 +TZNAME:AKDT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+144105 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+144105 +TZOFFSETTO:-091855 +TZNAME:LMT +DTSTART:18671018T000000 +RDATE:18671018T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-091855 +TZOFFSETTO:-0900 +TZNAME:YST +DTSTART:19000820T120000 +RDATE:19000820T120000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0900 +TZOFFSETTO:-0900 +TZNAME:YST +DTSTART:19420101T000000 +RDATE:19420101T000000 +RDATE:19460101T000000 +RDATE:19690101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0900 +TZOFFSETTO:-0800 +TZNAME:YWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:-0800 +TZOFFSETTO:-0800 +TZNAME:YPT +DTSTART:19450814T150000 +RDATE:19450814T150000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0800 +TZOFFSETTO:-0900 +TZNAME:YST +DTSTART:19450930T020000 +RDATE:19450930T020000 +RDATE:19691026T020000 +RDATE:19701025T020000 +RDATE:19711031T020000 +RDATE:19721029T020000 +RDATE:19731028T020000 +RDATE:19741027T020000 +RDATE:19751026T020000 +RDATE:19761031T020000 +RDATE:19771030T020000 +RDATE:19781029T020000 +RDATE:19791028T020000 +RDATE:19801026T020000 +RDATE:19811025T020000 +RDATE:19821031T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0900 +TZOFFSETTO:-0800 +TZNAME:YDT +DTSTART:19690427T020000 +RDATE:19690427T020000 +RDATE:19700426T020000 +RDATE:19710425T020000 +RDATE:19720430T020000 +RDATE:19730429T020000 +RDATE:19740106T020000 +RDATE:19750223T020000 +RDATE:19760425T020000 +RDATE:19770424T020000 +RDATE:19780430T020000 +RDATE:19790429T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:-0900 +TZOFFSETTO:-0800 +TZNAME:AKDT +DTSTART:19840429T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/America/Yellowknife.ics b/mozilla/calendar/libical/zoneinfo/America/Yellowknife.ics new file mode 100644 index 00000000000..c2ca3a4f943 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/America/Yellowknife.ics @@ -0,0 +1,81 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/America/Yellowknife +X-LIC-LOCATION:America/Yellowknife +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19801026T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:MDT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-073724 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-073724 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:18840101T000000 +RDATE:18840101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:MDT +DTSTART:19180414T020000 +RDATE:19180414T020000 +RDATE:19190525T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19181027T020000 +RDATE:19181027T020000 +RDATE:19191101T000000 +RDATE:19450930T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:MWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0500 +TZNAME:MDDT +DTSTART:19650425T000000 +RDATE:19650425T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0700 +TZNAME:MST +DTSTART:19651031T020000 +RDATE:19651031T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Antarctica/Casey.ics b/mozilla/calendar/libical/zoneinfo/Antarctica/Casey.ics new file mode 100644 index 00000000000..59180bacad1 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Antarctica/Casey.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Antarctica/Casey +X-LIC-LOCATION:Antarctica/Casey +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0000 +TZNAME:zzz +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0800 +TZNAME:WST +DTSTART:19690101T000000 +RDATE:19690101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Antarctica/Davis.ics b/mozilla/calendar/libical/zoneinfo/Antarctica/Davis.ics new file mode 100644 index 00000000000..5f8d6066de4 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Antarctica/Davis.ics @@ -0,0 +1,30 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Antarctica/Davis +X-LIC-LOCATION:Antarctica/Davis +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0000 +TZNAME:zzz +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0700 +TZNAME:DAVT +DTSTART:19570113T000000 +RDATE:19570113T000000 +RDATE:19690201T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0700 +TZOFFSETTO:+0000 +TZNAME:zzz +DTSTART:19641101T000000 +RDATE:19641101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Antarctica/DumontDUrville.ics b/mozilla/calendar/libical/zoneinfo/Antarctica/DumontDUrville.ics new file mode 100644 index 00000000000..bb31dad546a --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Antarctica/DumontDUrville.ics @@ -0,0 +1,36 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Antarctica/DumontDUrville +X-LIC-LOCATION:Antarctica/DumontDUrville +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0000 +TZNAME:zzz +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+1000 +TZNAME:PMT +DTSTART:19470101T000000 +RDATE:19470101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+1000 +TZOFFSETTO:+0000 +TZNAME:zzz +DTSTART:19520114T000000 +RDATE:19520114T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+1000 +TZNAME:DDUT +DTSTART:19561101T000000 +RDATE:19561101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Antarctica/Mawson.ics b/mozilla/calendar/libical/zoneinfo/Antarctica/Mawson.ics new file mode 100644 index 00000000000..6847c41c10c --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Antarctica/Mawson.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Antarctica/Mawson +X-LIC-LOCATION:Antarctica/Mawson +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0000 +TZNAME:zzz +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0600 +TZNAME:MAWT +DTSTART:19540213T000000 +RDATE:19540213T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Antarctica/McMurdo.ics b/mozilla/calendar/libical/zoneinfo/Antarctica/McMurdo.ics new file mode 100644 index 00000000000..550262a8bca --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Antarctica/McMurdo.ics @@ -0,0 +1,79 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Antarctica/McMurdo +X-LIC-LOCATION:Antarctica/McMurdo +BEGIN:STANDARD +TZOFFSETFROM:+1300 +TZOFFSETTO:+1200 +TZNAME:NZST +DTSTART:19900318T030000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYMONTHDAY=15,16,17,18,19,20,21;BYDAY=SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1200 +TZOFFSETTO:+1300 +TZNAME:NZDT +DTSTART:19901007T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0000 +TZNAME:zzz +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+1200 +TZNAME:NZST +DTSTART:19560101T000000 +RDATE:19560101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1200 +TZOFFSETTO:+1300 +TZNAME:NZDT +DTSTART:19741103T020000 +RDATE:19741103T020000 +RDATE:19751026T020000 +RDATE:19761031T020000 +RDATE:19771030T020000 +RDATE:19781029T020000 +RDATE:19791028T020000 +RDATE:19801026T020000 +RDATE:19811025T020000 +RDATE:19821031T020000 +RDATE:19831030T020000 +RDATE:19841028T020000 +RDATE:19851027T020000 +RDATE:19861026T020000 +RDATE:19871025T020000 +RDATE:19881030T020000 +RDATE:19891008T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1300 +TZOFFSETTO:+1200 +TZNAME:NZST +DTSTART:19750223T030000 +RDATE:19750223T030000 +RDATE:19760307T030000 +RDATE:19770306T030000 +RDATE:19780305T030000 +RDATE:19790304T030000 +RDATE:19800302T030000 +RDATE:19810301T030000 +RDATE:19820307T030000 +RDATE:19830306T030000 +RDATE:19840304T030000 +RDATE:19850303T030000 +RDATE:19860302T030000 +RDATE:19870301T030000 +RDATE:19880306T030000 +RDATE:19890305T030000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Antarctica/Palmer.ics b/mozilla/calendar/libical/zoneinfo/Antarctica/Palmer.ics new file mode 100644 index 00000000000..5a653132ccf --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Antarctica/Palmer.ics @@ -0,0 +1,137 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Antarctica/Palmer +X-LIC-LOCATION:Antarctica/Palmer +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:CLST +DTSTART:19991010T000000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=9,10,11,12,13,14,15;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0400 +TZNAME:CLT +DTSTART:20000312T000000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYMONTHDAY=9,10,11,12,13,14,15;BYDAY=SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0000 +TZNAME:zzz +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-0400 +TZNAME:ART +DTSTART:19650101T000000 +RDATE:19650101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0400 +TZNAME:ART +DTSTART:19650301T000000 +RDATE:19650301T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:ARST +DTSTART:19651015T000000 +RDATE:19651015T000000 +RDATE:19661015T000000 +RDATE:19671001T000000 +RDATE:19681006T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0400 +TZNAME:ART +DTSTART:19660301T000000 +RDATE:19660301T000000 +RDATE:19670401T000000 +RDATE:19680407T000000 +RDATE:19690406T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:ART +DTSTART:19691005T000000 +RDATE:19691005T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0300 +TZOFFSETTO:-0200 +TZNAME:ARST +DTSTART:19740123T000000 +RDATE:19740123T000000 +RDATE:19741006T000000 +RDATE:19751005T000000 +RDATE:19761003T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0200 +TZOFFSETTO:-0300 +TZNAME:ART +DTSTART:19740501T000000 +RDATE:19740501T000000 +RDATE:19750406T000000 +RDATE:19760404T000000 +RDATE:19770403T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0400 +TZNAME:CLT +DTSTART:19820501T000000 +RDATE:19820501T000000 +RDATE:19830313T000000 +RDATE:19840311T000000 +RDATE:19850310T000000 +RDATE:19860309T000000 +RDATE:19870315T000000 +RDATE:19880313T000000 +RDATE:19890312T000000 +RDATE:19900311T000000 +RDATE:19910310T000000 +RDATE:19920315T000000 +RDATE:19930314T000000 +RDATE:19940313T000000 +RDATE:19950312T000000 +RDATE:19960310T000000 +RDATE:19970309T000000 +RDATE:19980315T000000 +RDATE:19990404T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:CLST +DTSTART:19821010T000000 +RDATE:19821010T000000 +RDATE:19831009T000000 +RDATE:19841014T000000 +RDATE:19851013T000000 +RDATE:19861012T000000 +RDATE:19871011T000000 +RDATE:19881009T000000 +RDATE:19891015T000000 +RDATE:19901014T000000 +RDATE:19911013T000000 +RDATE:19921011T000000 +RDATE:19931010T000000 +RDATE:19941009T000000 +RDATE:19951015T000000 +RDATE:19961013T000000 +RDATE:19971012T000000 +RDATE:19980927T000000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Antarctica/South_Pole.ics b/mozilla/calendar/libical/zoneinfo/Antarctica/South_Pole.ics new file mode 100644 index 00000000000..08d17227f4f --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Antarctica/South_Pole.ics @@ -0,0 +1,79 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Antarctica/South_Pole +X-LIC-LOCATION:Antarctica/South_Pole +BEGIN:STANDARD +TZOFFSETFROM:+1300 +TZOFFSETTO:+1200 +TZNAME:NZST +DTSTART:19900318T030000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYMONTHDAY=15,16,17,18,19,20,21;BYDAY=SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1200 +TZOFFSETTO:+1300 +TZNAME:NZDT +DTSTART:19901007T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0000 +TZNAME:zzz +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+1200 +TZNAME:NZST +DTSTART:19560101T000000 +RDATE:19560101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1200 +TZOFFSETTO:+1300 +TZNAME:NZDT +DTSTART:19741103T020000 +RDATE:19741103T020000 +RDATE:19751026T020000 +RDATE:19761031T020000 +RDATE:19771030T020000 +RDATE:19781029T020000 +RDATE:19791028T020000 +RDATE:19801026T020000 +RDATE:19811025T020000 +RDATE:19821031T020000 +RDATE:19831030T020000 +RDATE:19841028T020000 +RDATE:19851027T020000 +RDATE:19861026T020000 +RDATE:19871025T020000 +RDATE:19881030T020000 +RDATE:19891008T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1300 +TZOFFSETTO:+1200 +TZNAME:NZST +DTSTART:19750223T030000 +RDATE:19750223T030000 +RDATE:19760307T030000 +RDATE:19770306T030000 +RDATE:19780305T030000 +RDATE:19790304T030000 +RDATE:19800302T030000 +RDATE:19810301T030000 +RDATE:19820307T030000 +RDATE:19830306T030000 +RDATE:19840304T030000 +RDATE:19850303T030000 +RDATE:19860302T030000 +RDATE:19870301T030000 +RDATE:19880306T030000 +RDATE:19890305T030000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Antarctica/Syowa.ics b/mozilla/calendar/libical/zoneinfo/Antarctica/Syowa.ics new file mode 100644 index 00000000000..b9e1d5d1978 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Antarctica/Syowa.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Antarctica/Syowa +X-LIC-LOCATION:Antarctica/Syowa +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0000 +TZNAME:zzz +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0300 +TZNAME:SYOT +DTSTART:19570129T000000 +RDATE:19570129T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Antarctica/Vostok.ics b/mozilla/calendar/libical/zoneinfo/Antarctica/Vostok.ics new file mode 100644 index 00000000000..6d7a08b3e4f --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Antarctica/Vostok.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Antarctica/Vostok +X-LIC-LOCATION:Antarctica/Vostok +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0000 +TZNAME:zzz +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0600 +TZNAME:VOST +DTSTART:19571216T000000 +RDATE:19571216T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Arctic/Longyearbyen.ics b/mozilla/calendar/libical/zoneinfo/Arctic/Longyearbyen.ics new file mode 100644 index 00000000000..9b8e3981c70 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Arctic/Longyearbyen.ics @@ -0,0 +1,96 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Arctic/Longyearbyen +X-LIC-LOCATION:Arctic/Longyearbyen +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19810329T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0043 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0043 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:18950101T000000 +RDATE:18950101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19160522T010000 +RDATE:19160522T010000 +RDATE:19430329T020000 +RDATE:19440403T020000 +RDATE:19450402T020000 +RDATE:19590315T020000 +RDATE:19600320T020000 +RDATE:19610319T020000 +RDATE:19620318T020000 +RDATE:19630317T020000 +RDATE:19640315T020000 +RDATE:19650425T020000 +RDATE:19800406T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19160930T000000 +RDATE:19160930T000000 +RDATE:19431004T030000 +RDATE:19441002T030000 +RDATE:19451001T030000 +RDATE:19590920T030000 +RDATE:19600918T030000 +RDATE:19610917T030000 +RDATE:19620916T030000 +RDATE:19630915T030000 +RDATE:19640920T030000 +RDATE:19650919T030000 +RDATE:19800928T030000 +RDATE:19810927T030000 +RDATE:19820926T030000 +RDATE:19830925T030000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19400810T230000 +RDATE:19400810T230000 +RDATE:19421102T020000 +RDATE:19800101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Aden.ics b/mozilla/calendar/libical/zoneinfo/Asia/Aden.ics new file mode 100644 index 00000000000..db342807b01 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Aden.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Aden +X-LIC-LOCATION:Asia/Aden +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+030048 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+030048 +TZOFFSETTO:+0300 +TZNAME:AST +DTSTART:19500101T000000 +RDATE:19500101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Almaty.ics b/mozilla/calendar/libical/zoneinfo/Asia/Almaty.ics new file mode 100644 index 00000000000..bcb8c4da7b3 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Almaty.ics @@ -0,0 +1,94 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Almaty +X-LIC-LOCATION:Asia/Almaty +BEGIN:DAYLIGHT +TZOFFSETFROM:+0600 +TZOFFSETTO:+0700 +TZNAME:ALMST +DTSTART:19920329T000000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0700 +TZOFFSETTO:+0600 +TZNAME:ALMT +DTSTART:19961027T000000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+050748 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+050748 +TZOFFSETTO:+0500 +TZNAME:ALMT +DTSTART:19240502T000000 +RDATE:19240502T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0500 +TZOFFSETTO:+0600 +TZNAME:ALMT +DTSTART:19570301T000000 +RDATE:19570301T000000 +RDATE:19920119T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0600 +TZOFFSETTO:+0700 +TZNAME:ALMST +DTSTART:19810401T000000 +RDATE:19810401T000000 +RDATE:19820401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +RDATE:19900325T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0700 +TZOFFSETTO:+0600 +TZNAME:ALMT +DTSTART:19811001T000000 +RDATE:19811001T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19920927T000000 +RDATE:19930926T000000 +RDATE:19940925T000000 +RDATE:19950924T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0600 +TZOFFSETTO:+0600 +TZNAME:ALMST +DTSTART:19910331T020000 +RDATE:19910331T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0600 +TZOFFSETTO:+0500 +TZNAME:ALMT +DTSTART:19910929T030000 +RDATE:19910929T030000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Amman.ics b/mozilla/calendar/libical/zoneinfo/Asia/Amman.ics new file mode 100644 index 00000000000..afea520b197 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Amman.ics @@ -0,0 +1,89 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Amman +X-LIC-LOCATION:Asia/Amman +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19990930T010000 +RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1TH +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:20000330T000000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1TH +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+022344 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+022344 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19310101T000000 +RDATE:19310101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19730606T000000 +RDATE:19730606T000000 +RDATE:19740501T000000 +RDATE:19750501T000000 +RDATE:19760501T000000 +RDATE:19770501T000000 +RDATE:19780430T000000 +RDATE:19850401T000000 +RDATE:19860404T000000 +RDATE:19870403T000000 +RDATE:19880401T000000 +RDATE:19890508T000000 +RDATE:19900427T000000 +RDATE:19910417T000000 +RDATE:19920410T000000 +RDATE:19930402T000000 +RDATE:19940401T000000 +RDATE:19950407T000000 +RDATE:19960405T000000 +RDATE:19970404T000000 +RDATE:19980403T000000 +RDATE:19990701T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19731001T000000 +RDATE:19731001T000000 +RDATE:19741001T000000 +RDATE:19751001T000000 +RDATE:19761101T000000 +RDATE:19771001T000000 +RDATE:19780930T000000 +RDATE:19851001T000000 +RDATE:19861003T000000 +RDATE:19871002T000000 +RDATE:19881007T000000 +RDATE:19891006T000000 +RDATE:19901005T000000 +RDATE:19910927T000000 +RDATE:19921002T000000 +RDATE:19931001T000000 +RDATE:19940916T000000 +RDATE:19950915T010000 +RDATE:19960920T010000 +RDATE:19970919T010000 +RDATE:19980918T010000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Anadyr.ics b/mozilla/calendar/libical/zoneinfo/Asia/Anadyr.ics new file mode 100644 index 00000000000..8ca9d3c7a1e --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Anadyr.ics @@ -0,0 +1,119 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Anadyr +X-LIC-LOCATION:Asia/Anadyr +BEGIN:DAYLIGHT +TZOFFSETFROM:+1200 +TZOFFSETTO:+1300 +TZNAME:ANAST +DTSTART:19930328T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1300 +TZOFFSETTO:+1200 +TZNAME:ANAT +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+114956 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+114956 +TZOFFSETTO:+1200 +TZNAME:ANAT +DTSTART:19240502T000000 +RDATE:19240502T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+1200 +TZOFFSETTO:+1300 +TZNAME:ANAT +DTSTART:19300621T000000 +RDATE:19300621T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1300 +TZOFFSETTO:+1400 +TZNAME:ANAST +DTSTART:19810401T000000 +RDATE:19810401T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1400 +TZOFFSETTO:+1300 +TZNAME:ANAT +DTSTART:19811001T000000 +RDATE:19811001T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1300 +TZOFFSETTO:+1300 +TZNAME:ANAST +DTSTART:19820401T000000 +RDATE:19820401T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1300 +TZOFFSETTO:+1200 +TZNAME:ANAT +DTSTART:19821001T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19920926T230000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1200 +TZOFFSETTO:+1300 +TZNAME:ANAST +DTSTART:19830401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +RDATE:19900325T020000 +RDATE:19920328T230000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:+1200 +TZOFFSETTO:+1200 +TZNAME:ANAST +DTSTART:19910331T020000 +RDATE:19910331T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1200 +TZOFFSETTO:+1100 +TZNAME:ANAT +DTSTART:19910929T030000 +RDATE:19910929T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+1100 +TZOFFSETTO:+1200 +TZNAME:ANAT +DTSTART:19920119T020000 +RDATE:19920119T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Aqtau.ics b/mozilla/calendar/libical/zoneinfo/Asia/Aqtau.ics new file mode 100644 index 00000000000..d05b20026d0 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Aqtau.ics @@ -0,0 +1,122 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Aqtau +X-LIC-LOCATION:Asia/Aqtau +BEGIN:DAYLIGHT +TZOFFSETFROM:+0400 +TZOFFSETTO:+0500 +TZNAME:AQTST +DTSTART:19960331T000000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0500 +TZOFFSETTO:+0400 +TZNAME:AQTT +DTSTART:19961027T000000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+032104 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+032104 +TZOFFSETTO:+0400 +TZNAME:SHET +DTSTART:19240502T000000 +RDATE:19240502T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0500 +TZNAME:SHET +DTSTART:19570301T000000 +RDATE:19570301T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0500 +TZOFFSETTO:+0600 +TZNAME:SHEST +DTSTART:19810401T000000 +RDATE:19810401T000000 +RDATE:19820401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +RDATE:19900325T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0600 +TZOFFSETTO:+0500 +TZNAME:SHET +DTSTART:19811001T000000 +RDATE:19811001T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0500 +TZOFFSETTO:+0500 +TZNAME:AQTST +DTSTART:19910331T020000 +RDATE:19910331T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0500 +TZOFFSETTO:+0400 +TZNAME:AQTT +DTSTART:19910929T030000 +RDATE:19910929T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0500 +TZNAME:AQTT +DTSTART:19920119T020000 +RDATE:19920119T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0500 +TZOFFSETTO:+0600 +TZNAME:AQTST +DTSTART:19920329T000000 +RDATE:19920329T000000 +RDATE:19930328T000000 +RDATE:19940327T000000 +RDATE:19950326T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0600 +TZOFFSETTO:+0500 +TZNAME:AQTT +DTSTART:19920927T000000 +RDATE:19920927T000000 +RDATE:19930926T000000 +RDATE:19940925T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0600 +TZOFFSETTO:+0400 +TZNAME:AQTT +DTSTART:19950924T000000 +RDATE:19950924T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Aqtobe.ics b/mozilla/calendar/libical/zoneinfo/Asia/Aqtobe.ics new file mode 100644 index 00000000000..b50aeb945d0 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Aqtobe.ics @@ -0,0 +1,106 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Aqtobe +X-LIC-LOCATION:Asia/Aqtobe +BEGIN:DAYLIGHT +TZOFFSETFROM:+0500 +TZOFFSETTO:+0600 +TZNAME:AQTST +DTSTART:19920329T000000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0600 +TZOFFSETTO:+0500 +TZNAME:AQTT +DTSTART:19961027T000000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+034840 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+034840 +TZOFFSETTO:+0400 +TZNAME:AKT +DTSTART:19240502T000000 +RDATE:19240502T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0500 +TZNAME:AKT +DTSTART:19570301T000000 +RDATE:19570301T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0500 +TZOFFSETTO:+0600 +TZNAME:AKST +DTSTART:19810401T000000 +RDATE:19810401T000000 +RDATE:19820401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +RDATE:19900325T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0600 +TZOFFSETTO:+0500 +TZNAME:AKT +DTSTART:19811001T000000 +RDATE:19811001T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0500 +TZOFFSETTO:+0500 +TZNAME:AKTST +DTSTART:19910331T020000 +RDATE:19910331T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0500 +TZOFFSETTO:+0400 +TZNAME:AQTT +DTSTART:19910929T030000 +RDATE:19910929T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0500 +TZNAME:AQTT +DTSTART:19920119T020000 +RDATE:19920119T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0600 +TZOFFSETTO:+0500 +TZNAME:AQTT +DTSTART:19920927T000000 +RDATE:19920927T000000 +RDATE:19930926T000000 +RDATE:19940925T000000 +RDATE:19950924T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Ashgabat.ics b/mozilla/calendar/libical/zoneinfo/Asia/Ashgabat.ics new file mode 100644 index 00000000000..45eb76e641a --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Ashgabat.ics @@ -0,0 +1,89 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Ashgabat +X-LIC-LOCATION:Asia/Ashgabat +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+035332 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+035332 +TZOFFSETTO:+0400 +TZNAME:ASHT +DTSTART:19240502T000000 +RDATE:19240502T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0500 +TZNAME:ASHT +DTSTART:19300621T000000 +RDATE:19300621T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0500 +TZOFFSETTO:+0600 +TZNAME:ASHST +DTSTART:19810401T000000 +RDATE:19810401T000000 +RDATE:19820401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +RDATE:19900325T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0600 +TZOFFSETTO:+0500 +TZNAME:ASHT +DTSTART:19811001T000000 +RDATE:19811001T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0500 +TZOFFSETTO:+0500 +TZNAME:ASHST +DTSTART:19910331T020000 +RDATE:19910331T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0500 +TZOFFSETTO:+0400 +TZNAME:ASHT +DTSTART:19910929T030000 +RDATE:19910929T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0400 +TZNAME:TMT +DTSTART:19911027T000000 +RDATE:19911027T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0500 +TZNAME:TMT +DTSTART:19920119T020000 +RDATE:19920119T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Baghdad.ics b/mozilla/calendar/libical/zoneinfo/Asia/Baghdad.ics new file mode 100644 index 00000000000..4700a0335ae --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Baghdad.ics @@ -0,0 +1,73 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Baghdad +X-LIC-LOCATION:Asia/Baghdad +BEGIN:DAYLIGHT +TZOFFSETFROM:+0300 +TZOFFSETTO:+0400 +TZNAME:ADT +DTSTART:19910401T030000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0300 +TZNAME:AST +DTSTART:19911001T040000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=1 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+025740 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+025740 +TZOFFSETTO:+025736 +TZNAME:BMT +DTSTART:18900101T000000 +RDATE:18900101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+025736 +TZOFFSETTO:+0300 +TZNAME:AST +DTSTART:19180101T000000 +RDATE:19180101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0300 +TZOFFSETTO:+0400 +TZNAME:ADT +DTSTART:19820501T000000 +RDATE:19820501T000000 +RDATE:19830331T000000 +RDATE:19840401T000000 +RDATE:19850401T000000 +RDATE:19860330T010000 +RDATE:19870329T010000 +RDATE:19880327T010000 +RDATE:19890326T010000 +RDATE:19900325T010000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0300 +TZNAME:AST +DTSTART:19821001T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19841001T000000 +RDATE:19850929T020000 +RDATE:19860928T020000 +RDATE:19870927T020000 +RDATE:19880925T020000 +RDATE:19890924T020000 +RDATE:19900930T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Bahrain.ics b/mozilla/calendar/libical/zoneinfo/Asia/Bahrain.ics new file mode 100644 index 00000000000..f32d459b24c --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Bahrain.ics @@ -0,0 +1,29 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Bahrain +X-LIC-LOCATION:Asia/Bahrain +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+032220 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+032220 +TZOFFSETTO:+0400 +TZNAME:GST +DTSTART:19200101T000000 +RDATE:19200101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0300 +TZNAME:AST +DTSTART:19720601T000000 +RDATE:19720601T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Baku.ics b/mozilla/calendar/libical/zoneinfo/Asia/Baku.ics new file mode 100644 index 00000000000..4d50cf1b409 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Baku.ics @@ -0,0 +1,133 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Baku +X-LIC-LOCATION:Asia/Baku +BEGIN:DAYLIGHT +TZOFFSETFROM:+0400 +TZOFFSETTO:+0500 +TZNAME:AZST +DTSTART:19970330T010000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0500 +TZOFFSETTO:+0400 +TZNAME:AZT +DTSTART:19971026T010000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+031924 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+031924 +TZOFFSETTO:+0300 +TZNAME:BAKT +DTSTART:19240502T000000 +RDATE:19240502T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0400 +TZNAME:BAKT +DTSTART:19570301T000000 +RDATE:19570301T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0400 +TZOFFSETTO:+0500 +TZNAME:BAKST +DTSTART:19810401T000000 +RDATE:19810401T000000 +RDATE:19820401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +RDATE:19900325T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0500 +TZOFFSETTO:+0400 +TZNAME:BAKT +DTSTART:19811001T000000 +RDATE:19811001T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0400 +TZOFFSETTO:+0400 +TZNAME:BAKST +DTSTART:19910331T020000 +RDATE:19910331T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0300 +TZNAME:AZT +DTSTART:19910830T000000 +RDATE:19910830T000000 +RDATE:19920926T230000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0300 +TZNAME:AZT +DTSTART:19910929T020000 +RDATE:19910929T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0300 +TZOFFSETTO:+0400 +TZNAME:AZST +DTSTART:19920328T230000 +RDATE:19920328T230000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0400 +TZNAME:AZT +DTSTART:19920927T020000 +RDATE:19920927T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0400 +TZNAME:AZT +DTSTART:19960101T000000 +RDATE:19960101T000000 +RDATE:19970101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0400 +TZOFFSETTO:+0500 +TZNAME:AZST +DTSTART:19960331T050000 +RDATE:19960331T050000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0500 +TZOFFSETTO:+0400 +TZNAME:AZT +DTSTART:19961027T060000 +RDATE:19961027T060000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Bangkok.ics b/mozilla/calendar/libical/zoneinfo/Asia/Bangkok.ics new file mode 100644 index 00000000000..a1c65a5f306 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Bangkok.ics @@ -0,0 +1,29 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Bangkok +X-LIC-LOCATION:Asia/Bangkok +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+064204 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+064204 +TZOFFSETTO:+064204 +TZNAME:BMT +DTSTART:18800101T000000 +RDATE:18800101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+064204 +TZOFFSETTO:+0700 +TZNAME:ICT +DTSTART:19200401T000000 +RDATE:19200401T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Beirut.ics b/mozilla/calendar/libical/zoneinfo/Asia/Beirut.ics new file mode 100644 index 00000000000..d92c69a6ed7 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Beirut.ics @@ -0,0 +1,104 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Beirut +X-LIC-LOCATION:Asia/Beirut +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19930328T000000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19991031T000000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0222 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0222 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:18800101T000000 +RDATE:18800101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19200328T000000 +RDATE:19200328T000000 +RDATE:19210403T000000 +RDATE:19220326T000000 +RDATE:19230422T000000 +RDATE:19570501T000000 +RDATE:19580501T000000 +RDATE:19590501T000000 +RDATE:19600501T000000 +RDATE:19610501T000000 +RDATE:19720622T000000 +RDATE:19730501T000000 +RDATE:19740501T000000 +RDATE:19750501T000000 +RDATE:19760501T000000 +RDATE:19770501T000000 +RDATE:19780430T000000 +RDATE:19840501T000000 +RDATE:19850501T000000 +RDATE:19860501T000000 +RDATE:19870501T000000 +RDATE:19880601T000000 +RDATE:19890510T000000 +RDATE:19900501T000000 +RDATE:19910501T000000 +RDATE:19920501T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19201025T000000 +RDATE:19201025T000000 +RDATE:19211003T000000 +RDATE:19221008T000000 +RDATE:19230916T000000 +RDATE:19571001T000000 +RDATE:19581001T000000 +RDATE:19591001T000000 +RDATE:19601001T000000 +RDATE:19611001T000000 +RDATE:19721001T000000 +RDATE:19731001T000000 +RDATE:19741001T000000 +RDATE:19751001T000000 +RDATE:19761001T000000 +RDATE:19771001T000000 +RDATE:19780930T000000 +RDATE:19841016T000000 +RDATE:19851016T000000 +RDATE:19861016T000000 +RDATE:19871016T000000 +RDATE:19881016T000000 +RDATE:19891016T000000 +RDATE:19901016T000000 +RDATE:19911016T000000 +RDATE:19921004T000000 +RDATE:19930926T000000 +RDATE:19940925T000000 +RDATE:19950924T000000 +RDATE:19960929T000000 +RDATE:19970928T000000 +RDATE:19980927T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Bishkek.ics b/mozilla/calendar/libical/zoneinfo/Asia/Bishkek.ics new file mode 100644 index 00000000000..957109ba16d --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Bishkek.ics @@ -0,0 +1,105 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Bishkek +X-LIC-LOCATION:Asia/Bishkek +BEGIN:DAYLIGHT +TZOFFSETFROM:+0500 +TZOFFSETTO:+0600 +TZNAME:KGST +DTSTART:19970330T023000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0600 +TZOFFSETTO:+0500 +TZNAME:KGT +DTSTART:19971026T023000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+045824 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+045824 +TZOFFSETTO:+0500 +TZNAME:FRUT +DTSTART:19240502T000000 +RDATE:19240502T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0500 +TZOFFSETTO:+0600 +TZNAME:FRUT +DTSTART:19300621T000000 +RDATE:19300621T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0600 +TZOFFSETTO:+0700 +TZNAME:FRUST +DTSTART:19810401T000000 +RDATE:19810401T000000 +RDATE:19820401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +RDATE:19900325T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0700 +TZOFFSETTO:+0600 +TZNAME:FRUT +DTSTART:19811001T000000 +RDATE:19811001T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0600 +TZOFFSETTO:+0600 +TZNAME:FRUST +DTSTART:19910331T020000 +RDATE:19910331T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0600 +TZOFFSETTO:+0500 +TZNAME:KGT +DTSTART:19910831T020000 +RDATE:19910831T020000 +RDATE:19920927T000000 +RDATE:19930926T000000 +RDATE:19940925T000000 +RDATE:19950924T000000 +RDATE:19960929T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0500 +TZOFFSETTO:+0600 +TZNAME:KGST +DTSTART:19920412T000000 +RDATE:19920412T000000 +RDATE:19930411T000000 +RDATE:19940410T000000 +RDATE:19950409T000000 +RDATE:19960407T000000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Brunei.ics b/mozilla/calendar/libical/zoneinfo/Asia/Brunei.ics new file mode 100644 index 00000000000..fc960dc0b21 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Brunei.ics @@ -0,0 +1,29 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Brunei +X-LIC-LOCATION:Asia/Brunei +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+073940 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+073940 +TZOFFSETTO:+0730 +TZNAME:BNT +DTSTART:19260301T000000 +RDATE:19260301T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0730 +TZOFFSETTO:+0800 +TZNAME:BNT +DTSTART:19330101T000000 +RDATE:19330101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Calcutta.ics b/mozilla/calendar/libical/zoneinfo/Asia/Calcutta.ics new file mode 100644 index 00000000000..4253ba239ad --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Calcutta.ics @@ -0,0 +1,44 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Calcutta +X-LIC-LOCATION:Asia/Calcutta +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+055328 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+055328 +TZOFFSETTO:+055320 +TZNAME:HMT +DTSTART:18800101T000000 +RDATE:18800101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+055320 +TZOFFSETTO:+0630 +TZNAME:BURT +DTSTART:19411001T000000 +RDATE:19411001T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0630 +TZOFFSETTO:+0530 +TZNAME:IST +DTSTART:19420515T000000 +RDATE:19420515T000000 +RDATE:19451015T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0530 +TZOFFSETTO:+0630 +TZNAME:IST +DTSTART:19420901T000000 +RDATE:19420901T000000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Chungking.ics b/mozilla/calendar/libical/zoneinfo/Asia/Chungking.ics new file mode 100644 index 00000000000..e7160da96bf --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Chungking.ics @@ -0,0 +1,53 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Chungking +X-LIC-LOCATION:Asia/Chungking +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+070620 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+070620 +TZOFFSETTO:+0700 +TZNAME:CHUT +DTSTART:19280101T000000 +RDATE:19280101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0700 +TZOFFSETTO:+0800 +TZNAME:CST +DTSTART:19800501T000000 +RDATE:19800501T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0800 +TZOFFSETTO:+0900 +TZNAME:CDT +DTSTART:19860504T000000 +RDATE:19860504T000000 +RDATE:19870412T000000 +RDATE:19880410T000000 +RDATE:19890416T000000 +RDATE:19900415T000000 +RDATE:19910414T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+0800 +TZNAME:CST +DTSTART:19860914T000000 +RDATE:19860914T000000 +RDATE:19870913T000000 +RDATE:19880911T000000 +RDATE:19890917T000000 +RDATE:19900916T000000 +RDATE:19910915T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Colombo.ics b/mozilla/calendar/libical/zoneinfo/Asia/Colombo.ics new file mode 100644 index 00000000000..5bf92f5395d --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Colombo.ics @@ -0,0 +1,64 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Colombo +X-LIC-LOCATION:Asia/Colombo +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+051924 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+051924 +TZOFFSETTO:+051932 +TZNAME:MMT +DTSTART:18800101T000000 +RDATE:18800101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+051932 +TZOFFSETTO:+0530 +TZNAME:IST +DTSTART:19060101T000000 +RDATE:19060101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0530 +TZOFFSETTO:+0600 +TZNAME:IHST +DTSTART:19420105T000000 +RDATE:19420105T000000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:+0600 +TZOFFSETTO:+0630 +TZNAME:IST +DTSTART:19420901T000000 +RDATE:19420901T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0630 +TZOFFSETTO:+0530 +TZNAME:IST +DTSTART:19451016T020000 +RDATE:19451016T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0530 +TZOFFSETTO:+0630 +TZNAME:LKT +DTSTART:19960525T000000 +RDATE:19960525T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0630 +TZOFFSETTO:+0600 +TZNAME:LKT +DTSTART:19961026T003000 +RDATE:19961026T003000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Damascus.ics b/mozilla/calendar/libical/zoneinfo/Asia/Damascus.ics new file mode 100644 index 00000000000..d11bf0121f6 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Damascus.ics @@ -0,0 +1,115 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Damascus +X-LIC-LOCATION:Asia/Damascus +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19941001T000000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=1 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19990401T000000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+022512 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+022512 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19200101T000000 +RDATE:19200101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19200418T020000 +RDATE:19200418T020000 +RDATE:19210417T020000 +RDATE:19220416T020000 +RDATE:19230415T020000 +RDATE:19620429T020000 +RDATE:19630501T020000 +RDATE:19640501T020000 +RDATE:19650501T020000 +RDATE:19660424T020000 +RDATE:19670501T020000 +RDATE:19680501T020000 +RDATE:19690501T020000 +RDATE:19700501T020000 +RDATE:19710501T020000 +RDATE:19720501T020000 +RDATE:19730501T020000 +RDATE:19740501T020000 +RDATE:19750501T020000 +RDATE:19760501T020000 +RDATE:19770501T020000 +RDATE:19780501T020000 +RDATE:19830409T020000 +RDATE:19840409T020000 +RDATE:19860216T020000 +RDATE:19870301T020000 +RDATE:19880315T020000 +RDATE:19890331T020000 +RDATE:19900401T020000 +RDATE:19910401T000000 +RDATE:19920408T000000 +RDATE:19930326T000000 +RDATE:19940401T000000 +RDATE:19950401T000000 +RDATE:19960401T000000 +RDATE:19970331T000000 +RDATE:19980330T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19201003T020000 +RDATE:19201003T020000 +RDATE:19211002T020000 +RDATE:19221001T020000 +RDATE:19231007T020000 +RDATE:19621001T020000 +RDATE:19630930T020000 +RDATE:19641001T020000 +RDATE:19650930T020000 +RDATE:19661001T020000 +RDATE:19671001T020000 +RDATE:19681001T020000 +RDATE:19691001T020000 +RDATE:19701001T020000 +RDATE:19711001T020000 +RDATE:19721001T020000 +RDATE:19731001T020000 +RDATE:19741001T020000 +RDATE:19751001T020000 +RDATE:19761001T020000 +RDATE:19770901T020000 +RDATE:19780901T020000 +RDATE:19831001T020000 +RDATE:19841001T020000 +RDATE:19861009T020000 +RDATE:19871031T020000 +RDATE:19881031T020000 +RDATE:19891001T020000 +RDATE:19900930T020000 +RDATE:19911001T000000 +RDATE:19921001T000000 +RDATE:19930925T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Dhaka.ics b/mozilla/calendar/libical/zoneinfo/Asia/Dhaka.ics new file mode 100644 index 00000000000..d61b7e26242 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Dhaka.ics @@ -0,0 +1,57 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Dhaka +X-LIC-LOCATION:Asia/Dhaka +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+060140 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+060140 +TZOFFSETTO:+055320 +TZNAME:HMT +DTSTART:18900101T000000 +RDATE:18900101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+055320 +TZOFFSETTO:+0630 +TZNAME:BURT +DTSTART:19411001T000000 +RDATE:19411001T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0630 +TZOFFSETTO:+0530 +TZNAME:IST +DTSTART:19420515T000000 +RDATE:19420515T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0530 +TZOFFSETTO:+0630 +TZNAME:BURT +DTSTART:19420901T000000 +RDATE:19420901T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0630 +TZOFFSETTO:+0600 +TZNAME:DACT +DTSTART:19510930T000000 +RDATE:19510930T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0600 +TZOFFSETTO:+0600 +TZNAME:BDT +DTSTART:19710326T000000 +RDATE:19710326T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Dili.ics b/mozilla/calendar/libical/zoneinfo/Asia/Dili.ics new file mode 100644 index 00000000000..b8141f55838 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Dili.ics @@ -0,0 +1,50 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Dili +X-LIC-LOCATION:Asia/Dili +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+082220 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+082220 +TZOFFSETTO:+0800 +TZNAME:TPT +DTSTART:19120101T000000 +RDATE:19120101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0800 +TZOFFSETTO:+0900 +TZNAME:JST +DTSTART:19420221T230000 +RDATE:19420221T230000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+0900 +TZNAME:TPT +DTSTART:19450801T000000 +RDATE:19450801T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+0800 +TZNAME:CIT +DTSTART:19760503T000000 +RDATE:19760503T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0800 +TZOFFSETTO:+0900 +TZNAME:TPT +DTSTART:20000917T000000 +RDATE:20000917T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Dubai.ics b/mozilla/calendar/libical/zoneinfo/Asia/Dubai.ics new file mode 100644 index 00000000000..32776916829 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Dubai.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Dubai +X-LIC-LOCATION:Asia/Dubai +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+034112 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+034112 +TZOFFSETTO:+0400 +TZNAME:GST +DTSTART:19200101T000000 +RDATE:19200101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Dushanbe.ics b/mozilla/calendar/libical/zoneinfo/Asia/Dushanbe.ics new file mode 100644 index 00000000000..04df6880531 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Dushanbe.ics @@ -0,0 +1,75 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Dushanbe +X-LIC-LOCATION:Asia/Dushanbe +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+043512 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+043512 +TZOFFSETTO:+0500 +TZNAME:DUST +DTSTART:19240502T000000 +RDATE:19240502T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0500 +TZOFFSETTO:+0600 +TZNAME:DUST +DTSTART:19300621T000000 +RDATE:19300621T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0600 +TZOFFSETTO:+0700 +TZNAME:DUSST +DTSTART:19810401T000000 +RDATE:19810401T000000 +RDATE:19820401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +RDATE:19900325T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0700 +TZOFFSETTO:+0600 +TZNAME:DUST +DTSTART:19811001T000000 +RDATE:19811001T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0600 +TZOFFSETTO:+0600 +TZNAME:DUSST +DTSTART:19910331T020000 +RDATE:19910331T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0600 +TZOFFSETTO:+0500 +TZNAME:TJT +DTSTART:19910909T030000 +RDATE:19910909T030000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Gaza.ics b/mozilla/calendar/libical/zoneinfo/Asia/Gaza.ics new file mode 100644 index 00000000000..55d05fc27dd --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Gaza.ics @@ -0,0 +1,139 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Gaza +X-LIC-LOCATION:Asia/Gaza +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19990416T000000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=15,16,17,18,19,20,21;BYDAY=FR +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19991015T000000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=15,16,17,18,19,20,21;BYDAY=FR +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+021752 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+021752 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19001001T000000 +RDATE:19001001T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EET +DTSTART:19400601T000000 +RDATE:19400601T000000 +RDATE:19430401T020000 +RDATE:19440401T000000 +RDATE:19450416T000000 +RDATE:19460416T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19421101T000000 +RDATE:19421101T000000 +RDATE:19431101T000000 +RDATE:19441101T000000 +RDATE:19451101T020000 +RDATE:19461101T000000 +RDATE:19571001T000000 +RDATE:19581001T000000 +RDATE:19590930T030000 +RDATE:19600930T030000 +RDATE:19610930T030000 +RDATE:19620930T030000 +RDATE:19630930T030000 +RDATE:19640930T030000 +RDATE:19650930T030000 +RDATE:19661001T030000 +RDATE:19960920T010000 +RDATE:19970919T010000 +RDATE:19980918T010000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19480515T000000 +RDATE:19480515T000000 +RDATE:19960101T000000 +RDATE:19990101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19570510T000000 +RDATE:19570510T000000 +RDATE:19580501T000000 +RDATE:19590501T010000 +RDATE:19600501T010000 +RDATE:19610501T010000 +RDATE:19620501T010000 +RDATE:19630501T010000 +RDATE:19640501T010000 +RDATE:19650501T010000 +RDATE:19660501T010000 +RDATE:19670501T010000 +RDATE:19960405T000000 +RDATE:19970404T000000 +RDATE:19980403T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:IST +DTSTART:19670605T000000 +RDATE:19670605T000000 +RDATE:19741013T000000 +RDATE:19750831T000000 +RDATE:19850915T000000 +RDATE:19860907T000000 +RDATE:19870913T000000 +RDATE:19880903T000000 +RDATE:19890903T000000 +RDATE:19900826T000000 +RDATE:19910901T000000 +RDATE:19920906T000000 +RDATE:19930905T000000 +RDATE:19940828T000000 +RDATE:19950903T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:IDT +DTSTART:19740707T000000 +RDATE:19740707T000000 +RDATE:19750420T000000 +RDATE:19850414T000000 +RDATE:19860518T000000 +RDATE:19870415T000000 +RDATE:19880409T000000 +RDATE:19890430T000000 +RDATE:19900325T000000 +RDATE:19910324T000000 +RDATE:19920329T000000 +RDATE:19930402T000000 +RDATE:19940401T000000 +RDATE:19950331T000000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Harbin.ics b/mozilla/calendar/libical/zoneinfo/Asia/Harbin.ics new file mode 100644 index 00000000000..43749b268fd --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Harbin.ics @@ -0,0 +1,68 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Harbin +X-LIC-LOCATION:Asia/Harbin +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+082644 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+082644 +TZOFFSETTO:+0830 +TZNAME:HART +DTSTART:19280101T000000 +RDATE:19280101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0830 +TZOFFSETTO:+0800 +TZNAME:CST +DTSTART:19320301T000000 +RDATE:19320301T000000 +RDATE:19800501T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0800 +TZOFFSETTO:+0900 +TZNAME:HART +DTSTART:19400101T000000 +RDATE:19400101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+0830 +TZNAME:HART +DTSTART:19660501T000000 +RDATE:19660501T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0800 +TZOFFSETTO:+0900 +TZNAME:CDT +DTSTART:19860504T000000 +RDATE:19860504T000000 +RDATE:19870412T000000 +RDATE:19880410T000000 +RDATE:19890416T000000 +RDATE:19900415T000000 +RDATE:19910414T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+0800 +TZNAME:CST +DTSTART:19860914T000000 +RDATE:19860914T000000 +RDATE:19870913T000000 +RDATE:19880911T000000 +RDATE:19890917T000000 +RDATE:19900916T000000 +RDATE:19910915T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Hong_Kong.ics b/mozilla/calendar/libical/zoneinfo/Asia/Hong_Kong.ics new file mode 100644 index 00000000000..b448275aa61 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Hong_Kong.ics @@ -0,0 +1,102 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Hong_Kong +X-LIC-LOCATION:Asia/Hong_Kong +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+073636 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+073636 +TZOFFSETTO:+0800 +TZNAME:HKT +DTSTART:19041030T000000 +RDATE:19041030T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0800 +TZOFFSETTO:+0900 +TZNAME:HKST +DTSTART:19460420T033000 +RDATE:19460420T033000 +RDATE:19470413T033000 +RDATE:19480502T033000 +RDATE:19490403T033000 +RDATE:19500402T033000 +RDATE:19510401T033000 +RDATE:19520406T033000 +RDATE:19530405T033000 +RDATE:19540321T033000 +RDATE:19550320T033000 +RDATE:19560318T033000 +RDATE:19570324T033000 +RDATE:19580323T033000 +RDATE:19590322T033000 +RDATE:19600320T033000 +RDATE:19610319T033000 +RDATE:19620318T033000 +RDATE:19630324T033000 +RDATE:19640322T033000 +RDATE:19650418T033000 +RDATE:19660417T033000 +RDATE:19670416T033000 +RDATE:19680421T033000 +RDATE:19690420T033000 +RDATE:19700419T033000 +RDATE:19710418T033000 +RDATE:19720416T033000 +RDATE:19730422T033000 +RDATE:19740421T033000 +RDATE:19750420T033000 +RDATE:19760418T033000 +RDATE:19770417T033000 +RDATE:19790513T033000 +RDATE:19800511T033000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+0800 +TZNAME:HKT +DTSTART:19461201T033000 +RDATE:19461201T033000 +RDATE:19471230T033000 +RDATE:19481031T033000 +RDATE:19491030T033000 +RDATE:19501029T033000 +RDATE:19511028T033000 +RDATE:19521026T033000 +RDATE:19531101T033000 +RDATE:19541031T033000 +RDATE:19551106T033000 +RDATE:19561104T033000 +RDATE:19571103T033000 +RDATE:19581102T033000 +RDATE:19591101T033000 +RDATE:19601106T033000 +RDATE:19611105T033000 +RDATE:19621104T033000 +RDATE:19631103T033000 +RDATE:19641101T033000 +RDATE:19651017T033000 +RDATE:19661016T033000 +RDATE:19671022T033000 +RDATE:19681020T033000 +RDATE:19691019T033000 +RDATE:19701018T033000 +RDATE:19711017T033000 +RDATE:19721022T033000 +RDATE:19731021T033000 +RDATE:19741020T033000 +RDATE:19751019T033000 +RDATE:19761017T033000 +RDATE:19771016T033000 +RDATE:19791021T033000 +RDATE:19801019T033000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Hovd.ics b/mozilla/calendar/libical/zoneinfo/Asia/Hovd.ics new file mode 100644 index 00000000000..dc8f2445627 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Hovd.ics @@ -0,0 +1,75 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Hovd +X-LIC-LOCATION:Asia/Hovd +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+060636 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+060636 +TZOFFSETTO:+0600 +TZNAME:HOVT +DTSTART:19050801T000000 +RDATE:19050801T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0600 +TZOFFSETTO:+0700 +TZNAME:HOVT +DTSTART:19780101T000000 +RDATE:19780101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0700 +TZOFFSETTO:+0800 +TZNAME:HOVST +DTSTART:19830401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +RDATE:19900325T020000 +RDATE:19910331T020000 +RDATE:19920329T020000 +RDATE:19930328T020000 +RDATE:19940327T020000 +RDATE:19950326T020000 +RDATE:19960331T020000 +RDATE:19970330T020000 +RDATE:19980329T020000 +RDATE:20010427T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0800 +TZOFFSETTO:+0700 +TZNAME:HOVT +DTSTART:19831001T000000 +RDATE:19831001T000000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +RDATE:19960929T030000 +RDATE:19970928T030000 +RDATE:19980927T030000 +RDATE:20010928T030000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Irkutsk.ics b/mozilla/calendar/libical/zoneinfo/Asia/Irkutsk.ics new file mode 100644 index 00000000000..4578626678c --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Irkutsk.ics @@ -0,0 +1,102 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Irkutsk +X-LIC-LOCATION:Asia/Irkutsk +BEGIN:DAYLIGHT +TZOFFSETFROM:+0800 +TZOFFSETTO:+0900 +TZNAME:IRKST +DTSTART:19930328T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+0800 +TZNAME:IRKT +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+065720 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+065720 +TZOFFSETTO:+065720 +TZNAME:IMT +DTSTART:18800101T000000 +RDATE:18800101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+065720 +TZOFFSETTO:+0700 +TZNAME:IRKT +DTSTART:19200125T000000 +RDATE:19200125T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0700 +TZOFFSETTO:+0800 +TZNAME:IRKT +DTSTART:19300621T000000 +RDATE:19300621T000000 +RDATE:19920119T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0800 +TZOFFSETTO:+0900 +TZNAME:IRKST +DTSTART:19810401T000000 +RDATE:19810401T000000 +RDATE:19820401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +RDATE:19900325T020000 +RDATE:19920328T230000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+0800 +TZNAME:IRKT +DTSTART:19811001T000000 +RDATE:19811001T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19920926T230000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0800 +TZOFFSETTO:+0800 +TZNAME:IRKST +DTSTART:19910331T020000 +RDATE:19910331T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0800 +TZOFFSETTO:+0700 +TZNAME:IRKT +DTSTART:19910929T030000 +RDATE:19910929T030000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Istanbul.ics b/mozilla/calendar/libical/zoneinfo/Asia/Istanbul.ics new file mode 100644 index 00000000000..e1b9f532118 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Istanbul.ics @@ -0,0 +1,168 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Istanbul +X-LIC-LOCATION:Asia/Istanbul +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19910331T030000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19961027T040000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+015552 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+015552 +TZOFFSETTO:+015656 +TZNAME:IMT +DTSTART:18800101T000000 +RDATE:18800101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+015656 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19101001T000000 +RDATE:19101001T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19160501T000000 +RDATE:19160501T000000 +RDATE:19200328T000000 +RDATE:19210403T000000 +RDATE:19220326T000000 +RDATE:19240513T000000 +RDATE:19250501T000000 +RDATE:19400630T000000 +RDATE:19401201T000000 +RDATE:19420401T000000 +RDATE:19450402T000000 +RDATE:19460601T000000 +RDATE:19470420T000000 +RDATE:19480418T000000 +RDATE:19490410T000000 +RDATE:19500419T000000 +RDATE:19510422T000000 +RDATE:19620715T000000 +RDATE:19640515T000000 +RDATE:19700503T000000 +RDATE:19710502T000000 +RDATE:19720507T000000 +RDATE:19730603T010000 +RDATE:19740331T020000 +RDATE:19750330T000000 +RDATE:19760601T000000 +RDATE:19770403T000000 +RDATE:19780402T000000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +RDATE:19900325T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19161001T000000 +RDATE:19161001T000000 +RDATE:19201025T000000 +RDATE:19211003T000000 +RDATE:19221008T000000 +RDATE:19241001T000000 +RDATE:19251001T000000 +RDATE:19401005T000000 +RDATE:19410921T000000 +RDATE:19421101T000000 +RDATE:19451008T000000 +RDATE:19461001T000000 +RDATE:19471005T000000 +RDATE:19481003T000000 +RDATE:19491002T000000 +RDATE:19501008T000000 +RDATE:19511008T000000 +RDATE:19621008T000000 +RDATE:19641001T000000 +RDATE:19701004T000000 +RDATE:19711003T000000 +RDATE:19721008T000000 +RDATE:19731104T030000 +RDATE:19741103T050000 +RDATE:19751026T000000 +RDATE:19761031T000000 +RDATE:19771016T000000 +RDATE:19850928T000000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T040000 +RDATE:19920927T040000 +RDATE:19930926T040000 +RDATE:19940925T040000 +RDATE:19950924T040000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0300 +TZNAME:TRT +DTSTART:19781015T000000 +RDATE:19781015T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0300 +TZOFFSETTO:+0400 +TZNAME:TRST +DTSTART:19790401T030000 +RDATE:19790401T030000 +RDATE:19800406T030000 +RDATE:19810329T030000 +RDATE:19820328T030000 +RDATE:19830731T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0300 +TZNAME:TRT +DTSTART:19791015T000000 +RDATE:19791015T000000 +RDATE:19801013T000000 +RDATE:19811012T000000 +RDATE:19821011T000000 +RDATE:19831002T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0300 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19850420T000000 +RDATE:19850420T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19860101T000000 +RDATE:19860101T000000 +RDATE:19910101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Jakarta.ics b/mozilla/calendar/libical/zoneinfo/Asia/Jakarta.ics new file mode 100644 index 00000000000..8a332d634aa --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Jakarta.ics @@ -0,0 +1,71 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Jakarta +X-LIC-LOCATION:Asia/Jakarta +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+070712 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+070712 +TZOFFSETTO:+070712 +TZNAME:JMT +DTSTART:18670810T000000 +RDATE:18670810T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+070712 +TZOFFSETTO:+0720 +TZNAME:JAVT +DTSTART:19231231T234712 +RDATE:19231231T234712 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0720 +TZOFFSETTO:+0730 +TZNAME:WIT +DTSTART:19321101T000000 +RDATE:19321101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0730 +TZOFFSETTO:+0900 +TZNAME:JST +DTSTART:19420323T000000 +RDATE:19420323T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+0730 +TZNAME:WIT +DTSTART:19450801T000000 +RDATE:19450801T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0730 +TZOFFSETTO:+0800 +TZNAME:WIT +DTSTART:19480501T000000 +RDATE:19480501T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0800 +TZOFFSETTO:+0730 +TZNAME:WIT +DTSTART:19500501T000000 +RDATE:19500501T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0730 +TZOFFSETTO:+0700 +TZNAME:WIT +DTSTART:19640101T000000 +RDATE:19640101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Jayapura.ics b/mozilla/calendar/libical/zoneinfo/Asia/Jayapura.ics new file mode 100644 index 00000000000..2df4c4811f6 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Jayapura.ics @@ -0,0 +1,36 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Jayapura +X-LIC-LOCATION:Asia/Jayapura +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+092248 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+092248 +TZOFFSETTO:+0900 +TZNAME:EIT +DTSTART:19321101T000000 +RDATE:19321101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+0930 +TZNAME:CST +DTSTART:19440101T000000 +RDATE:19440101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0930 +TZOFFSETTO:+0900 +TZNAME:EIT +DTSTART:19640101T000000 +RDATE:19640101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Jerusalem.ics b/mozilla/calendar/libical/zoneinfo/Asia/Jerusalem.ics new file mode 100644 index 00000000000..8373e975d8b --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Jerusalem.ics @@ -0,0 +1,142 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Jerusalem +X-LIC-LOCATION:Asia/Jerusalem +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:IDT +DTSTART:20050401T010000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:IST +DTSTART:20051001T010000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=1 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+022056 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+022056 +TZOFFSETTO:+022040 +TZNAME:JMT +DTSTART:18800101T000000 +RDATE:18800101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+022040 +TZOFFSETTO:+0200 +TZNAME:IST +DTSTART:19180101T000000 +RDATE:19180101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:IDT +DTSTART:19400601T000000 +RDATE:19400601T000000 +RDATE:19430401T020000 +RDATE:19440401T000000 +RDATE:19450416T000000 +RDATE:19460416T020000 +RDATE:19490501T000000 +RDATE:19500416T000000 +RDATE:19510401T000000 +RDATE:19520420T020000 +RDATE:19530412T020000 +RDATE:19540613T000000 +RDATE:19550611T020000 +RDATE:19560603T000000 +RDATE:19570429T020000 +RDATE:19740707T000000 +RDATE:19750420T000000 +RDATE:19850414T000000 +RDATE:19860518T000000 +RDATE:19870415T000000 +RDATE:19880409T000000 +RDATE:19890430T000000 +RDATE:19900325T000000 +RDATE:19910324T000000 +RDATE:19920329T000000 +RDATE:19930402T000000 +RDATE:19940401T000000 +RDATE:19950331T000000 +RDATE:19960315T000000 +RDATE:19970321T000000 +RDATE:19980320T000000 +RDATE:19990402T020000 +RDATE:20000414T020000 +RDATE:20010409T010000 +RDATE:20020329T010000 +RDATE:20030328T010000 +RDATE:20040407T010000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:IST +DTSTART:19421101T000000 +RDATE:19421101T000000 +RDATE:19431101T000000 +RDATE:19441101T000000 +RDATE:19451101T020000 +RDATE:19461101T000000 +RDATE:19481101T020000 +RDATE:19491101T020000 +RDATE:19500915T030000 +RDATE:19511111T030000 +RDATE:19521019T030000 +RDATE:19530913T030000 +RDATE:19540912T000000 +RDATE:19550911T000000 +RDATE:19560930T030000 +RDATE:19570922T000000 +RDATE:19741013T000000 +RDATE:19750831T000000 +RDATE:19850915T000000 +RDATE:19860907T000000 +RDATE:19870913T000000 +RDATE:19880903T000000 +RDATE:19890903T000000 +RDATE:19900826T000000 +RDATE:19910901T000000 +RDATE:19920906T000000 +RDATE:19930905T000000 +RDATE:19940828T000000 +RDATE:19950903T000000 +RDATE:19960916T000000 +RDATE:19970914T000000 +RDATE:19980906T000000 +RDATE:19990903T020000 +RDATE:20001006T010000 +RDATE:20010924T010000 +RDATE:20021007T010000 +RDATE:20031003T010000 +RDATE:20040922T010000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0400 +TZNAME:IDDT +DTSTART:19480523T000000 +RDATE:19480523T000000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:+0400 +TZOFFSETTO:+0300 +TZNAME:IDT +DTSTART:19480901T000000 +RDATE:19480901T000000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Kabul.ics b/mozilla/calendar/libical/zoneinfo/Asia/Kabul.ics new file mode 100644 index 00000000000..c3421356ed5 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Kabul.ics @@ -0,0 +1,29 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Kabul +X-LIC-LOCATION:Asia/Kabul +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+043648 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+043648 +TZOFFSETTO:+0400 +TZNAME:AFT +DTSTART:18900101T000000 +RDATE:18900101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0430 +TZNAME:AFT +DTSTART:19450101T000000 +RDATE:19450101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Kamchatka.ics b/mozilla/calendar/libical/zoneinfo/Asia/Kamchatka.ics new file mode 100644 index 00000000000..72c85b6a664 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Kamchatka.ics @@ -0,0 +1,95 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Kamchatka +X-LIC-LOCATION:Asia/Kamchatka +BEGIN:DAYLIGHT +TZOFFSETFROM:+1200 +TZOFFSETTO:+1300 +TZNAME:PETST +DTSTART:19930328T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1300 +TZOFFSETTO:+1200 +TZNAME:PETT +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+103436 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+103436 +TZOFFSETTO:+1100 +TZNAME:PETT +DTSTART:19221110T000000 +RDATE:19221110T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+1100 +TZOFFSETTO:+1200 +TZNAME:PETT +DTSTART:19300621T000000 +RDATE:19300621T000000 +RDATE:19920119T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1200 +TZOFFSETTO:+1300 +TZNAME:PETST +DTSTART:19810401T000000 +RDATE:19810401T000000 +RDATE:19820401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +RDATE:19900325T020000 +RDATE:19920328T230000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1300 +TZOFFSETTO:+1200 +TZNAME:PETT +DTSTART:19811001T000000 +RDATE:19811001T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19920926T230000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1200 +TZOFFSETTO:+1200 +TZNAME:PETST +DTSTART:19910331T020000 +RDATE:19910331T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1200 +TZOFFSETTO:+1100 +TZNAME:PETT +DTSTART:19910929T030000 +RDATE:19910929T030000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Karachi.ics b/mozilla/calendar/libical/zoneinfo/Asia/Karachi.ics new file mode 100644 index 00000000000..c9602402524 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Karachi.ics @@ -0,0 +1,50 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Karachi +X-LIC-LOCATION:Asia/Karachi +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+042812 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+042812 +TZOFFSETTO:+0530 +TZNAME:IST +DTSTART:19070101T000000 +RDATE:19070101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0530 +TZOFFSETTO:+0630 +TZNAME:IST +DTSTART:19420901T000000 +RDATE:19420901T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0630 +TZOFFSETTO:+0530 +TZNAME:IST +DTSTART:19451015T000000 +RDATE:19451015T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0530 +TZOFFSETTO:+0500 +TZNAME:KART +DTSTART:19510930T000000 +RDATE:19510930T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0500 +TZOFFSETTO:+0500 +TZNAME:PKT +DTSTART:19710326T000000 +RDATE:19710326T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Kashgar.ics b/mozilla/calendar/libical/zoneinfo/Asia/Kashgar.ics new file mode 100644 index 00000000000..4d86e53d7fd --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Kashgar.ics @@ -0,0 +1,60 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Kashgar +X-LIC-LOCATION:Asia/Kashgar +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+050356 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+050356 +TZOFFSETTO:+0530 +TZNAME:KAST +DTSTART:19280101T000000 +RDATE:19280101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0530 +TZOFFSETTO:+0500 +TZNAME:KAST +DTSTART:19400101T000000 +RDATE:19400101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0500 +TZOFFSETTO:+0800 +TZNAME:CST +DTSTART:19800501T000000 +RDATE:19800501T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0800 +TZOFFSETTO:+0900 +TZNAME:CDT +DTSTART:19860504T000000 +RDATE:19860504T000000 +RDATE:19870412T000000 +RDATE:19880410T000000 +RDATE:19890416T000000 +RDATE:19900415T000000 +RDATE:19910414T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+0800 +TZNAME:CST +DTSTART:19860914T000000 +RDATE:19860914T000000 +RDATE:19870913T000000 +RDATE:19880911T000000 +RDATE:19890917T000000 +RDATE:19900916T000000 +RDATE:19910915T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Katmandu.ics b/mozilla/calendar/libical/zoneinfo/Asia/Katmandu.ics new file mode 100644 index 00000000000..6e5813e6c1f --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Katmandu.ics @@ -0,0 +1,29 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Katmandu +X-LIC-LOCATION:Asia/Katmandu +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+054116 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+054116 +TZOFFSETTO:+0530 +TZNAME:IST +DTSTART:19200101T000000 +RDATE:19200101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0530 +TZOFFSETTO:+0545 +TZNAME:NPT +DTSTART:19860101T000000 +RDATE:19860101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Krasnoyarsk.ics b/mozilla/calendar/libical/zoneinfo/Asia/Krasnoyarsk.ics new file mode 100644 index 00000000000..44c32337377 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Krasnoyarsk.ics @@ -0,0 +1,95 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Krasnoyarsk +X-LIC-LOCATION:Asia/Krasnoyarsk +BEGIN:DAYLIGHT +TZOFFSETFROM:+0700 +TZOFFSETTO:+0800 +TZNAME:KRAST +DTSTART:19930328T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0800 +TZOFFSETTO:+0700 +TZNAME:KRAT +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+061120 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+061120 +TZOFFSETTO:+0600 +TZNAME:KRAT +DTSTART:19200106T000000 +RDATE:19200106T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0600 +TZOFFSETTO:+0700 +TZNAME:KRAT +DTSTART:19300621T000000 +RDATE:19300621T000000 +RDATE:19920119T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0700 +TZOFFSETTO:+0800 +TZNAME:KRAST +DTSTART:19810401T000000 +RDATE:19810401T000000 +RDATE:19820401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +RDATE:19900325T020000 +RDATE:19920328T230000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0800 +TZOFFSETTO:+0700 +TZNAME:KRAT +DTSTART:19811001T000000 +RDATE:19811001T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19920926T230000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0700 +TZOFFSETTO:+0700 +TZNAME:KRAST +DTSTART:19910331T020000 +RDATE:19910331T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0700 +TZOFFSETTO:+0600 +TZNAME:KRAT +DTSTART:19910929T030000 +RDATE:19910929T030000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Kuala_Lumpur.ics b/mozilla/calendar/libical/zoneinfo/Asia/Kuala_Lumpur.ics new file mode 100644 index 00000000000..e9538d14828 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Kuala_Lumpur.ics @@ -0,0 +1,64 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Kuala_Lumpur +X-LIC-LOCATION:Asia/Kuala_Lumpur +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+064648 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+064648 +TZOFFSETTO:+065524 +TZNAME:SMT +DTSTART:18800101T000000 +RDATE:18800101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+065524 +TZOFFSETTO:+0700 +TZNAME:MALT +DTSTART:19050601T000000 +RDATE:19050601T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0700 +TZOFFSETTO:+0720 +TZNAME:MALT +DTSTART:19330101T000000 +RDATE:19330101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0720 +TZOFFSETTO:+0900 +TZNAME:JST +DTSTART:19420215T000000 +RDATE:19420215T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+0720 +TZNAME:MALT +DTSTART:19450902T000000 +RDATE:19450902T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0720 +TZOFFSETTO:+0730 +TZNAME:MALT +DTSTART:19500101T000000 +RDATE:19500101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0730 +TZOFFSETTO:+0800 +TZNAME:MYT +DTSTART:19820501T000000 +RDATE:19820501T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Kuching.ics b/mozilla/calendar/libical/zoneinfo/Asia/Kuching.ics new file mode 100644 index 00000000000..abaae564cae --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Kuching.ics @@ -0,0 +1,76 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Kuching +X-LIC-LOCATION:Asia/Kuching +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+072120 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+072120 +TZOFFSETTO:+0730 +TZNAME:BORT +DTSTART:19260301T000000 +RDATE:19260301T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0730 +TZOFFSETTO:+0800 +TZNAME:BORT +DTSTART:19330101T000000 +RDATE:19330101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0800 +TZOFFSETTO:+0820 +TZNAME:BORTST +DTSTART:19350914T000000 +RDATE:19350914T000000 +RDATE:19360914T000000 +RDATE:19370914T000000 +RDATE:19380914T000000 +RDATE:19390914T000000 +RDATE:19400914T000000 +RDATE:19410914T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0820 +TZOFFSETTO:+0800 +TZNAME:BORT +DTSTART:19351214T000000 +RDATE:19351214T000000 +RDATE:19361214T000000 +RDATE:19371214T000000 +RDATE:19381214T000000 +RDATE:19391214T000000 +RDATE:19401214T000000 +RDATE:19411214T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0800 +TZOFFSETTO:+0900 +TZNAME:JST +DTSTART:19420101T000000 +RDATE:19420101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+0800 +TZNAME:BORT +DTSTART:19450902T000000 +RDATE:19450902T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0800 +TZOFFSETTO:+0800 +TZNAME:MYT +DTSTART:19820501T000000 +RDATE:19820501T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Kuwait.ics b/mozilla/calendar/libical/zoneinfo/Asia/Kuwait.ics new file mode 100644 index 00000000000..b9939e52f43 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Kuwait.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Kuwait +X-LIC-LOCATION:Asia/Kuwait +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+031156 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+031156 +TZOFFSETTO:+0300 +TZNAME:AST +DTSTART:19500101T000000 +RDATE:19500101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Macao.ics b/mozilla/calendar/libical/zoneinfo/Asia/Macao.ics new file mode 100644 index 00000000000..5ab7b5c71b7 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Macao.ics @@ -0,0 +1,81 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Macao +X-LIC-LOCATION:Asia/Macao +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+073420 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+073420 +TZOFFSETTO:+0800 +TZNAME:MOT +DTSTART:19120101T000000 +RDATE:19120101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0800 +TZOFFSETTO:+0900 +TZNAME:MOST +DTSTART:19610319T033000 +RDATE:19610319T033000 +RDATE:19620318T033000 +RDATE:19630317T000000 +RDATE:19640322T033000 +RDATE:19650321T000000 +RDATE:19660417T033000 +RDATE:19670416T033000 +RDATE:19680421T033000 +RDATE:19690420T033000 +RDATE:19700419T033000 +RDATE:19710418T033000 +RDATE:19720416T000000 +RDATE:19730415T000000 +RDATE:19740421T000000 +RDATE:19750420T033000 +RDATE:19760418T033000 +RDATE:19770417T033000 +RDATE:19780416T000000 +RDATE:19790415T000000 +RDATE:19800420T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+0800 +TZNAME:MOT +DTSTART:19611105T033000 +RDATE:19611105T033000 +RDATE:19621104T033000 +RDATE:19631103T033000 +RDATE:19641101T033000 +RDATE:19651031T000000 +RDATE:19661016T033000 +RDATE:19671022T033000 +RDATE:19681020T033000 +RDATE:19691019T033000 +RDATE:19701018T033000 +RDATE:19711017T033000 +RDATE:19721015T000000 +RDATE:19731021T000000 +RDATE:19741020T033000 +RDATE:19751019T033000 +RDATE:19761017T033000 +RDATE:19771016T033000 +RDATE:19781015T000000 +RDATE:19791021T000000 +RDATE:19801019T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0800 +TZOFFSETTO:+0800 +TZNAME:CST +DTSTART:19991220T000000 +RDATE:19991220T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Magadan.ics b/mozilla/calendar/libical/zoneinfo/Asia/Magadan.ics new file mode 100644 index 00000000000..33e2d5f6b39 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Magadan.ics @@ -0,0 +1,95 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Magadan +X-LIC-LOCATION:Asia/Magadan +BEGIN:DAYLIGHT +TZOFFSETFROM:+1100 +TZOFFSETTO:+1200 +TZNAME:MAGST +DTSTART:19930328T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1200 +TZOFFSETTO:+1100 +TZNAME:MAGT +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+100312 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+100312 +TZOFFSETTO:+1000 +TZNAME:MAGT +DTSTART:19240502T000000 +RDATE:19240502T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+1000 +TZOFFSETTO:+1100 +TZNAME:MAGT +DTSTART:19300621T000000 +RDATE:19300621T000000 +RDATE:19920119T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1100 +TZOFFSETTO:+1200 +TZNAME:MAGST +DTSTART:19810401T000000 +RDATE:19810401T000000 +RDATE:19820401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +RDATE:19900325T020000 +RDATE:19920328T230000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1200 +TZOFFSETTO:+1100 +TZNAME:MAGT +DTSTART:19811001T000000 +RDATE:19811001T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19920926T230000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1100 +TZOFFSETTO:+1100 +TZNAME:MAGST +DTSTART:19910331T020000 +RDATE:19910331T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1100 +TZOFFSETTO:+1000 +TZNAME:MAGT +DTSTART:19910929T030000 +RDATE:19910929T030000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Manila.ics b/mozilla/calendar/libical/zoneinfo/Asia/Manila.ics new file mode 100644 index 00000000000..a6f73dbc8d8 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Manila.ics @@ -0,0 +1,55 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Manila +X-LIC-LOCATION:Asia/Manila +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-1556 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-1556 +TZOFFSETTO:+0804 +TZNAME:LMT +DTSTART:18441231T000000 +RDATE:18441231T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0804 +TZOFFSETTO:+0800 +TZNAME:PHT +DTSTART:18990511T000000 +RDATE:18990511T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0800 +TZOFFSETTO:+0900 +TZNAME:PHST +DTSTART:19361101T000000 +RDATE:19361101T000000 +RDATE:19540412T000000 +RDATE:19780322T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+0800 +TZNAME:PHT +DTSTART:19370201T000000 +RDATE:19370201T000000 +RDATE:19441101T000000 +RDATE:19540701T000000 +RDATE:19780921T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0800 +TZOFFSETTO:+0900 +TZNAME:JST +DTSTART:19420501T000000 +RDATE:19420501T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Muscat.ics b/mozilla/calendar/libical/zoneinfo/Asia/Muscat.ics new file mode 100644 index 00000000000..f739fc2c11a --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Muscat.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Muscat +X-LIC-LOCATION:Asia/Muscat +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+035420 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+035420 +TZOFFSETTO:+0400 +TZNAME:GST +DTSTART:19200101T000000 +RDATE:19200101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Nicosia.ics b/mozilla/calendar/libical/zoneinfo/Asia/Nicosia.ics new file mode 100644 index 00000000000..c707221fb19 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Nicosia.ics @@ -0,0 +1,103 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Nicosia +X-LIC-LOCATION:Asia/Nicosia +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19990328T030000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19991031T040000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+021328 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+021328 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19211114T000000 +RDATE:19211114T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19750413T000000 +RDATE:19750413T000000 +RDATE:19760515T000000 +RDATE:19770403T000000 +RDATE:19780402T000000 +RDATE:19790401T000000 +RDATE:19800406T000000 +RDATE:19810329T000000 +RDATE:19820328T000000 +RDATE:19830327T000000 +RDATE:19840325T000000 +RDATE:19850331T000000 +RDATE:19860330T000000 +RDATE:19870329T000000 +RDATE:19880327T000000 +RDATE:19890326T000000 +RDATE:19900325T000000 +RDATE:19910331T000000 +RDATE:19920329T000000 +RDATE:19930328T000000 +RDATE:19940327T000000 +RDATE:19950326T000000 +RDATE:19960331T000000 +RDATE:19970330T000000 +RDATE:19980329T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19751012T000000 +RDATE:19751012T000000 +RDATE:19761011T000000 +RDATE:19770925T000000 +RDATE:19781002T000000 +RDATE:19790930T000000 +RDATE:19800928T000000 +RDATE:19810927T000000 +RDATE:19820926T000000 +RDATE:19830925T000000 +RDATE:19840930T000000 +RDATE:19850929T000000 +RDATE:19860928T000000 +RDATE:19870927T000000 +RDATE:19880925T000000 +RDATE:19890924T000000 +RDATE:19900930T000000 +RDATE:19910929T000000 +RDATE:19920927T000000 +RDATE:19930926T000000 +RDATE:19940925T000000 +RDATE:19950924T000000 +RDATE:19960929T000000 +RDATE:19970928T000000 +RDATE:19980901T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19981025T030000 +RDATE:19981025T030000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Novosibirsk.ics b/mozilla/calendar/libical/zoneinfo/Asia/Novosibirsk.ics new file mode 100644 index 00000000000..dc08d6eea5b --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Novosibirsk.ics @@ -0,0 +1,109 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Novosibirsk +X-LIC-LOCATION:Asia/Novosibirsk +BEGIN:DAYLIGHT +TZOFFSETFROM:+0600 +TZOFFSETTO:+0700 +TZNAME:NOVST +DTSTART:19940327T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0700 +TZOFFSETTO:+0600 +TZNAME:NOVT +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+053140 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+053140 +TZOFFSETTO:+0600 +TZNAME:NOVT +DTSTART:19191214T060000 +RDATE:19191214T060000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0600 +TZOFFSETTO:+0700 +TZNAME:NOVT +DTSTART:19300621T000000 +RDATE:19300621T000000 +RDATE:19920119T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0700 +TZOFFSETTO:+0800 +TZNAME:NOVST +DTSTART:19810401T000000 +RDATE:19810401T000000 +RDATE:19820401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +RDATE:19900325T020000 +RDATE:19920328T230000 +RDATE:19930328T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0800 +TZOFFSETTO:+0700 +TZNAME:NOVT +DTSTART:19811001T000000 +RDATE:19811001T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19920926T230000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0700 +TZOFFSETTO:+0700 +TZNAME:NOVST +DTSTART:19910331T020000 +RDATE:19910331T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0700 +TZOFFSETTO:+0600 +TZNAME:NOVT +DTSTART:19910929T030000 +RDATE:19910929T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0800 +TZOFFSETTO:+0600 +TZNAME:NOVT +DTSTART:19930523T000000 +RDATE:19930523T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0600 +TZOFFSETTO:+0600 +TZNAME:NOVT +DTSTART:19930926T020000 +RDATE:19930926T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Omsk.ics b/mozilla/calendar/libical/zoneinfo/Asia/Omsk.ics new file mode 100644 index 00000000000..cef8ad7d75d --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Omsk.ics @@ -0,0 +1,95 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Omsk +X-LIC-LOCATION:Asia/Omsk +BEGIN:DAYLIGHT +TZOFFSETFROM:+0600 +TZOFFSETTO:+0700 +TZNAME:OMSST +DTSTART:19930328T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0700 +TZOFFSETTO:+0600 +TZNAME:OMST +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+045336 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+045336 +TZOFFSETTO:+0500 +TZNAME:OMST +DTSTART:19191114T000000 +RDATE:19191114T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0500 +TZOFFSETTO:+0600 +TZNAME:OMST +DTSTART:19300621T000000 +RDATE:19300621T000000 +RDATE:19920119T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0600 +TZOFFSETTO:+0700 +TZNAME:OMSST +DTSTART:19810401T000000 +RDATE:19810401T000000 +RDATE:19820401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +RDATE:19900325T020000 +RDATE:19920328T230000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0700 +TZOFFSETTO:+0600 +TZNAME:OMST +DTSTART:19811001T000000 +RDATE:19811001T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19920926T230000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0600 +TZOFFSETTO:+0600 +TZNAME:OMSST +DTSTART:19910331T020000 +RDATE:19910331T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0600 +TZOFFSETTO:+0500 +TZNAME:OMST +DTSTART:19910929T030000 +RDATE:19910929T030000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Phnom_Penh.ics b/mozilla/calendar/libical/zoneinfo/Asia/Phnom_Penh.ics new file mode 100644 index 00000000000..961d2d7591f --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Phnom_Penh.ics @@ -0,0 +1,43 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Phnom_Penh +X-LIC-LOCATION:Asia/Phnom_Penh +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+065940 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+065940 +TZOFFSETTO:+070620 +TZNAME:SMT +DTSTART:19060609T000000 +RDATE:19060609T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+070620 +TZOFFSETTO:+0700 +TZNAME:ICT +DTSTART:19110311T000100 +RDATE:19110311T000100 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0700 +TZOFFSETTO:+0800 +TZNAME:ICT +DTSTART:19120501T000000 +RDATE:19120501T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0800 +TZOFFSETTO:+0700 +TZNAME:ICT +DTSTART:19310501T000000 +RDATE:19310501T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Pontianak.ics b/mozilla/calendar/libical/zoneinfo/Asia/Pontianak.ics new file mode 100644 index 00000000000..961ea325652 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Pontianak.ics @@ -0,0 +1,71 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Pontianak +X-LIC-LOCATION:Asia/Pontianak +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+071720 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+071720 +TZOFFSETTO:+071720 +TZNAME:PMT +DTSTART:19080501T000000 +RDATE:19080501T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+071720 +TZOFFSETTO:+0730 +TZNAME:WIT +DTSTART:19321101T000000 +RDATE:19321101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0730 +TZOFFSETTO:+0900 +TZNAME:JST +DTSTART:19420129T000000 +RDATE:19420129T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+0730 +TZNAME:WIT +DTSTART:19450801T000000 +RDATE:19450801T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0730 +TZOFFSETTO:+0800 +TZNAME:WIT +DTSTART:19480501T000000 +RDATE:19480501T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0800 +TZOFFSETTO:+0730 +TZNAME:WIT +DTSTART:19500501T000000 +RDATE:19500501T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0730 +TZOFFSETTO:+0800 +TZNAME:CIT +DTSTART:19640101T000000 +RDATE:19640101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0800 +TZOFFSETTO:+0700 +TZNAME:WIT +DTSTART:19880101T000000 +RDATE:19880101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Pyongyang.ics b/mozilla/calendar/libical/zoneinfo/Asia/Pyongyang.ics new file mode 100644 index 00000000000..5dc01308c3e --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Pyongyang.ics @@ -0,0 +1,51 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Pyongyang +X-LIC-LOCATION:Asia/Pyongyang +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0823 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0823 +TZOFFSETTO:+0830 +TZNAME:KST +DTSTART:18900101T000000 +RDATE:18900101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0830 +TZOFFSETTO:+0900 +TZNAME:KST +DTSTART:19041201T000000 +RDATE:19041201T000000 +RDATE:19320101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+0830 +TZNAME:KST +DTSTART:19280101T000000 +RDATE:19280101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+0800 +TZNAME:KST +DTSTART:19540321T000000 +RDATE:19540321T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0800 +TZOFFSETTO:+0900 +TZNAME:KST +DTSTART:19610810T000000 +RDATE:19610810T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Qatar.ics b/mozilla/calendar/libical/zoneinfo/Asia/Qatar.ics new file mode 100644 index 00000000000..9b9d625d1d1 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Qatar.ics @@ -0,0 +1,29 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Qatar +X-LIC-LOCATION:Asia/Qatar +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+032608 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+032608 +TZOFFSETTO:+0400 +TZNAME:GST +DTSTART:19200101T000000 +RDATE:19200101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0300 +TZNAME:AST +DTSTART:19720601T000000 +RDATE:19720601T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Rangoon.ics b/mozilla/calendar/libical/zoneinfo/Asia/Rangoon.ics new file mode 100644 index 00000000000..081a2b541e2 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Rangoon.ics @@ -0,0 +1,43 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Rangoon +X-LIC-LOCATION:Asia/Rangoon +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+062440 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+062440 +TZOFFSETTO:+062436 +TZNAME:RMT +DTSTART:18800101T000000 +RDATE:18800101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+062436 +TZOFFSETTO:+0630 +TZNAME:BURT +DTSTART:19200101T000000 +RDATE:19200101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0630 +TZOFFSETTO:+0900 +TZNAME:JST +DTSTART:19420501T000000 +RDATE:19420501T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+0630 +TZNAME:MMT +DTSTART:19450503T000000 +RDATE:19450503T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Riyadh.ics b/mozilla/calendar/libical/zoneinfo/Asia/Riyadh.ics new file mode 100644 index 00000000000..123b053a4d8 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Riyadh.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Riyadh +X-LIC-LOCATION:Asia/Riyadh +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+030652 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+030652 +TZOFFSETTO:+0300 +TZNAME:AST +DTSTART:19500101T000000 +RDATE:19500101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Saigon.ics b/mozilla/calendar/libical/zoneinfo/Asia/Saigon.ics new file mode 100644 index 00000000000..c7f65ce3989 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Saigon.ics @@ -0,0 +1,43 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Saigon +X-LIC-LOCATION:Asia/Saigon +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+070640 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+070640 +TZOFFSETTO:+070620 +TZNAME:SMT +DTSTART:19060609T000000 +RDATE:19060609T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+070620 +TZOFFSETTO:+0700 +TZNAME:ICT +DTSTART:19110311T000100 +RDATE:19110311T000100 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0700 +TZOFFSETTO:+0800 +TZNAME:ICT +DTSTART:19120501T000000 +RDATE:19120501T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0800 +TZOFFSETTO:+0700 +TZNAME:ICT +DTSTART:19310501T000000 +RDATE:19310501T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Samarkand.ics b/mozilla/calendar/libical/zoneinfo/Asia/Samarkand.ics new file mode 100644 index 00000000000..c7594df4525 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Samarkand.ics @@ -0,0 +1,104 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Samarkand +X-LIC-LOCATION:Asia/Samarkand +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+042712 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+042712 +TZOFFSETTO:+0400 +TZNAME:SAMT +DTSTART:19240502T000000 +RDATE:19240502T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0500 +TZNAME:SAMT +DTSTART:19300621T000000 +RDATE:19300621T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0500 +TZOFFSETTO:+0600 +TZNAME:SAMST +DTSTART:19810401T000000 +RDATE:19810401T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0600 +TZOFFSETTO:+0600 +TZNAME:TAST +DTSTART:19811001T000000 +RDATE:19811001T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0600 +TZOFFSETTO:+0700 +TZNAME:TASST +DTSTART:19820401T000000 +RDATE:19820401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +RDATE:19900325T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0700 +TZOFFSETTO:+0600 +TZNAME:TAST +DTSTART:19821001T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0600 +TZOFFSETTO:+0600 +TZNAME:TASST +DTSTART:19910331T020000 +RDATE:19910331T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0600 +TZOFFSETTO:+0500 +TZNAME:UZT +DTSTART:19910901T000000 +RDATE:19910901T000000 +RDATE:19920926T230000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0500 +TZOFFSETTO:+0500 +TZNAME:UZT +DTSTART:19910929T020000 +RDATE:19910929T020000 +RDATE:19920101T000000 +RDATE:19930101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0500 +TZOFFSETTO:+0600 +TZNAME:UZST +DTSTART:19920328T230000 +RDATE:19920328T230000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Seoul.ics b/mozilla/calendar/libical/zoneinfo/Asia/Seoul.ics new file mode 100644 index 00000000000..4ff82d7a2f9 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Seoul.ics @@ -0,0 +1,76 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Seoul +X-LIC-LOCATION:Asia/Seoul +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+082752 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+082752 +TZOFFSETTO:+0830 +TZNAME:KST +DTSTART:18900101T000000 +RDATE:18900101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0830 +TZOFFSETTO:+0900 +TZNAME:KST +DTSTART:19041201T000000 +RDATE:19041201T000000 +RDATE:19320101T000000 +RDATE:19681001T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+0830 +TZNAME:KST +DTSTART:19280101T000000 +RDATE:19280101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+0800 +TZNAME:KST +DTSTART:19540321T000000 +RDATE:19540321T000000 +RDATE:19600913T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0800 +TZOFFSETTO:+0900 +TZNAME:KDT +DTSTART:19600515T000000 +RDATE:19600515T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0800 +TZOFFSETTO:+0830 +TZNAME:KST +DTSTART:19610810T000000 +RDATE:19610810T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0900 +TZOFFSETTO:+1000 +TZNAME:KDT +DTSTART:19870510T000000 +RDATE:19870510T000000 +RDATE:19880508T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1000 +TZOFFSETTO:+0900 +TZNAME:KST +DTSTART:19871011T000000 +RDATE:19871011T000000 +RDATE:19881009T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Shanghai.ics b/mozilla/calendar/libical/zoneinfo/Asia/Shanghai.ics new file mode 100644 index 00000000000..8db361e135e --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Shanghai.ics @@ -0,0 +1,57 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Shanghai +X-LIC-LOCATION:Asia/Shanghai +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+080552 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+080552 +TZOFFSETTO:+0800 +TZNAME:CST +DTSTART:19280101T000000 +RDATE:19280101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0800 +TZOFFSETTO:+0900 +TZNAME:CDT +DTSTART:19400603T000000 +RDATE:19400603T000000 +RDATE:19410316T000000 +RDATE:19860504T000000 +RDATE:19870412T000000 +RDATE:19880410T000000 +RDATE:19890416T000000 +RDATE:19900415T000000 +RDATE:19910414T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+0800 +TZNAME:CST +DTSTART:19401001T000000 +RDATE:19401001T000000 +RDATE:19411001T000000 +RDATE:19860914T000000 +RDATE:19870913T000000 +RDATE:19880911T000000 +RDATE:19890917T000000 +RDATE:19900916T000000 +RDATE:19910915T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0800 +TZOFFSETTO:+0800 +TZNAME:CST +DTSTART:19490101T000000 +RDATE:19490101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Singapore.ics b/mozilla/calendar/libical/zoneinfo/Asia/Singapore.ics new file mode 100644 index 00000000000..ba31913ff52 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Singapore.ics @@ -0,0 +1,71 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Singapore +X-LIC-LOCATION:Asia/Singapore +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+065524 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+065524 +TZOFFSETTO:+065524 +TZNAME:SMT +DTSTART:18800101T000000 +RDATE:18800101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+065524 +TZOFFSETTO:+0700 +TZNAME:MALT +DTSTART:19050601T000000 +RDATE:19050601T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0700 +TZOFFSETTO:+0720 +TZNAME:MALT +DTSTART:19330101T000000 +RDATE:19330101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0720 +TZOFFSETTO:+0900 +TZNAME:JST +DTSTART:19420215T000000 +RDATE:19420215T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+0720 +TZNAME:MALT +DTSTART:19450902T000000 +RDATE:19450902T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0720 +TZOFFSETTO:+0730 +TZNAME:MALT +DTSTART:19500101T000000 +RDATE:19500101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0730 +TZOFFSETTO:+0730 +TZNAME:SGT +DTSTART:19650809T000000 +RDATE:19650809T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0730 +TZOFFSETTO:+0800 +TZNAME:SGT +DTSTART:19820501T000000 +RDATE:19820501T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Taipei.ics b/mozilla/calendar/libical/zoneinfo/Asia/Taipei.ics new file mode 100644 index 00000000000..1b62a61acfb --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Taipei.ics @@ -0,0 +1,74 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Taipei +X-LIC-LOCATION:Asia/Taipei +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0806 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0806 +TZOFFSETTO:+0800 +TZNAME:CST +DTSTART:18960101T000000 +RDATE:18960101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0800 +TZOFFSETTO:+0900 +TZNAME:CDT +DTSTART:19450501T000000 +RDATE:19450501T000000 +RDATE:19460501T000000 +RDATE:19470501T000000 +RDATE:19480501T000000 +RDATE:19490501T000000 +RDATE:19500501T000000 +RDATE:19510501T000000 +RDATE:19520301T000000 +RDATE:19530401T000000 +RDATE:19540401T000000 +RDATE:19550401T000000 +RDATE:19560401T000000 +RDATE:19570401T000000 +RDATE:19580401T000000 +RDATE:19590401T000000 +RDATE:19600601T000000 +RDATE:19610601T000000 +RDATE:19740401T000000 +RDATE:19750401T000000 +RDATE:19800630T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+0800 +TZNAME:CST +DTSTART:19451001T000000 +RDATE:19451001T000000 +RDATE:19461001T000000 +RDATE:19471001T000000 +RDATE:19481001T000000 +RDATE:19491001T000000 +RDATE:19501001T000000 +RDATE:19511001T000000 +RDATE:19521101T000000 +RDATE:19531101T000000 +RDATE:19541101T000000 +RDATE:19551001T000000 +RDATE:19561001T000000 +RDATE:19571001T000000 +RDATE:19581001T000000 +RDATE:19591001T000000 +RDATE:19601001T000000 +RDATE:19611001T000000 +RDATE:19741001T000000 +RDATE:19751001T000000 +RDATE:19800930T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Tashkent.ics b/mozilla/calendar/libical/zoneinfo/Asia/Tashkent.ics new file mode 100644 index 00000000000..5fa6e3c507b --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Tashkent.ics @@ -0,0 +1,92 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Tashkent +X-LIC-LOCATION:Asia/Tashkent +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+043712 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+043712 +TZOFFSETTO:+0500 +TZNAME:TAST +DTSTART:19240502T000000 +RDATE:19240502T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0500 +TZOFFSETTO:+0600 +TZNAME:TAST +DTSTART:19300621T000000 +RDATE:19300621T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0600 +TZOFFSETTO:+0700 +TZNAME:TASST +DTSTART:19810401T000000 +RDATE:19810401T000000 +RDATE:19820401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +RDATE:19900325T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0700 +TZOFFSETTO:+0600 +TZNAME:TAST +DTSTART:19811001T000000 +RDATE:19811001T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0600 +TZOFFSETTO:+0600 +TZNAME:TASST +DTSTART:19910331T020000 +RDATE:19910331T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0600 +TZOFFSETTO:+0500 +TZNAME:UZT +DTSTART:19910901T000000 +RDATE:19910901T000000 +RDATE:19920926T230000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0500 +TZOFFSETTO:+0500 +TZNAME:UZT +DTSTART:19910929T020000 +RDATE:19910929T020000 +RDATE:19920101T000000 +RDATE:19930101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0500 +TZOFFSETTO:+0600 +TZNAME:UZST +DTSTART:19920328T230000 +RDATE:19920328T230000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Tbilisi.ics b/mozilla/calendar/libical/zoneinfo/Asia/Tbilisi.ics new file mode 100644 index 00000000000..c3309c6d341 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Tbilisi.ics @@ -0,0 +1,145 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Tbilisi +X-LIC-LOCATION:Asia/Tbilisi +BEGIN:STANDARD +TZOFFSETFROM:+0500 +TZOFFSETTO:+0400 +TZNAME:GET +DTSTART:19971026T000000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0400 +TZOFFSETTO:+0500 +TZNAME:GEST +DTSTART:19980329T000000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+025916 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+025916 +TZOFFSETTO:+025916 +TZNAME:TBMT +DTSTART:18800101T000000 +RDATE:18800101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+025916 +TZOFFSETTO:+0300 +TZNAME:TBIT +DTSTART:19240502T000000 +RDATE:19240502T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0400 +TZNAME:TBIT +DTSTART:19570301T000000 +RDATE:19570301T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0400 +TZOFFSETTO:+0500 +TZNAME:TBIST +DTSTART:19810401T000000 +RDATE:19810401T000000 +RDATE:19820401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +RDATE:19900325T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0500 +TZOFFSETTO:+0400 +TZNAME:TBIT +DTSTART:19811001T000000 +RDATE:19811001T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0400 +TZOFFSETTO:+0400 +TZNAME:TBIST +DTSTART:19910331T020000 +RDATE:19910331T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0300 +TZNAME:GET +DTSTART:19910409T000000 +RDATE:19910409T000000 +RDATE:19920927T000000 +RDATE:19930926T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0300 +TZNAME:GET +DTSTART:19910929T020000 +RDATE:19910929T020000 +RDATE:19920101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0300 +TZOFFSETTO:+0400 +TZNAME:GEST +DTSTART:19920329T000000 +RDATE:19920329T000000 +RDATE:19930328T000000 +RDATE:19940327T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0400 +TZNAME:GET +DTSTART:19940925T000000 +RDATE:19940925T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0400 +TZOFFSETTO:+0500 +TZNAME:GEST +DTSTART:19950326T000000 +RDATE:19950326T000000 +RDATE:19960331T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0500 +TZOFFSETTO:+0400 +TZNAME:GET +DTSTART:19950924T000000 +RDATE:19950924T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0500 +TZOFFSETTO:+0500 +TZNAME:GEST +DTSTART:19961027T000000 +RDATE:19961027T000000 +RDATE:19970330T000000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Tehran.ics b/mozilla/calendar/libical/zoneinfo/Asia/Tehran.ics new file mode 100644 index 00000000000..1eaae29f859 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Tehran.ics @@ -0,0 +1,167 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Tehran +X-LIC-LOCATION:Asia/Tehran +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+032544 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+032544 +TZOFFSETTO:+032544 +TZNAME:TMT +DTSTART:19160101T000000 +RDATE:19160101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+032544 +TZOFFSETTO:+0330 +TZNAME:IRT +DTSTART:19460101T000000 +RDATE:19460101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0330 +TZOFFSETTO:+0400 +TZNAME:IRT +DTSTART:19771101T000000 +RDATE:19771101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0400 +TZOFFSETTO:+0500 +TZNAME:IRST +DTSTART:19780321T000000 +RDATE:19780321T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0500 +TZOFFSETTO:+0400 +TZNAME:IRT +DTSTART:19781021T000000 +RDATE:19781021T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0330 +TZNAME:IRT +DTSTART:19790101T000000 +RDATE:19790101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0330 +TZOFFSETTO:+0430 +TZNAME:IRST +DTSTART:19790321T000000 +RDATE:19790321T000000 +RDATE:19800321T000000 +RDATE:19910503T000000 +RDATE:19920321T000000 +RDATE:19930321T000000 +RDATE:19940321T000000 +RDATE:19950321T000000 +RDATE:19960320T000000 +RDATE:19970321T000000 +RDATE:19980321T000000 +RDATE:19990321T000000 +RDATE:20000320T000000 +RDATE:20010321T000000 +RDATE:20020321T000000 +RDATE:20030321T000000 +RDATE:20040320T000000 +RDATE:20050321T000000 +RDATE:20060321T000000 +RDATE:20070321T000000 +RDATE:20080320T000000 +RDATE:20090321T000000 +RDATE:20100321T000000 +RDATE:20110321T000000 +RDATE:20120320T000000 +RDATE:20130321T000000 +RDATE:20140321T000000 +RDATE:20150321T000000 +RDATE:20160320T000000 +RDATE:20170321T000000 +RDATE:20180321T000000 +RDATE:20190321T000000 +RDATE:20200320T000000 +RDATE:20210321T000000 +RDATE:20220321T000000 +RDATE:20230321T000000 +RDATE:20240320T000000 +RDATE:20250320T000000 +RDATE:20260321T000000 +RDATE:20270321T000000 +RDATE:20280320T000000 +RDATE:20290320T000000 +RDATE:20300321T000000 +RDATE:20310321T000000 +RDATE:20320320T000000 +RDATE:20330320T000000 +RDATE:20340321T000000 +RDATE:20350321T000000 +RDATE:20360320T000000 +RDATE:20370320T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0430 +TZOFFSETTO:+0330 +TZNAME:IRT +DTSTART:19790919T000000 +RDATE:19790919T000000 +RDATE:19800923T000000 +RDATE:19910920T010000 +RDATE:19920923T000000 +RDATE:19930923T000000 +RDATE:19940923T000000 +RDATE:19950923T000000 +RDATE:19960922T000000 +RDATE:19970923T000000 +RDATE:19980923T000000 +RDATE:19990923T000000 +RDATE:20000922T000000 +RDATE:20010923T000000 +RDATE:20020923T000000 +RDATE:20030923T000000 +RDATE:20040922T000000 +RDATE:20050923T000000 +RDATE:20060923T000000 +RDATE:20070923T000000 +RDATE:20080922T000000 +RDATE:20090923T000000 +RDATE:20100923T000000 +RDATE:20110923T000000 +RDATE:20120922T000000 +RDATE:20130923T000000 +RDATE:20140923T000000 +RDATE:20150923T000000 +RDATE:20160922T000000 +RDATE:20170923T000000 +RDATE:20180923T000000 +RDATE:20190923T000000 +RDATE:20200922T000000 +RDATE:20210923T000000 +RDATE:20220923T000000 +RDATE:20230923T000000 +RDATE:20240922T000000 +RDATE:20250922T000000 +RDATE:20260923T000000 +RDATE:20270923T000000 +RDATE:20280922T000000 +RDATE:20290922T000000 +RDATE:20300923T000000 +RDATE:20310923T000000 +RDATE:20320922T000000 +RDATE:20330922T000000 +RDATE:20340923T000000 +RDATE:20350923T000000 +RDATE:20360922T000000 +RDATE:20370922T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Thimphu.ics b/mozilla/calendar/libical/zoneinfo/Asia/Thimphu.ics new file mode 100644 index 00000000000..995413296b0 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Thimphu.ics @@ -0,0 +1,29 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Thimphu +X-LIC-LOCATION:Asia/Thimphu +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+055836 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+055836 +TZOFFSETTO:+0530 +TZNAME:IST +DTSTART:19470815T000000 +RDATE:19470815T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0530 +TZOFFSETTO:+0600 +TZNAME:BTT +DTSTART:19871001T000000 +RDATE:19871001T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Tokyo.ics b/mozilla/calendar/libical/zoneinfo/Asia/Tokyo.ics new file mode 100644 index 00000000000..ede1cce75ab --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Tokyo.ics @@ -0,0 +1,36 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Tokyo +X-LIC-LOCATION:Asia/Tokyo +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+091859 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+091859 +TZOFFSETTO:+0900 +TZNAME:JST +DTSTART:18880101T001859 +RDATE:18880101T001859 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+0900 +TZNAME:CJT +DTSTART:18960101T000000 +RDATE:18960101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+0900 +TZNAME:JST +DTSTART:19380101T000000 +RDATE:19380101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Ujung_Pandang.ics b/mozilla/calendar/libical/zoneinfo/Asia/Ujung_Pandang.ics new file mode 100644 index 00000000000..45e64426654 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Ujung_Pandang.ics @@ -0,0 +1,43 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Ujung_Pandang +X-LIC-LOCATION:Asia/Ujung_Pandang +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+075736 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+075736 +TZOFFSETTO:+075736 +TZNAME:MMT +DTSTART:19200101T000000 +RDATE:19200101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+075736 +TZOFFSETTO:+0800 +TZNAME:CIT +DTSTART:19321101T000000 +RDATE:19321101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0800 +TZOFFSETTO:+0900 +TZNAME:JST +DTSTART:19420209T000000 +RDATE:19420209T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+0800 +TZNAME:CIT +DTSTART:19450801T000000 +RDATE:19450801T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Ulaanbaatar.ics b/mozilla/calendar/libical/zoneinfo/Asia/Ulaanbaatar.ics new file mode 100644 index 00000000000..ecd9a71fdb1 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Ulaanbaatar.ics @@ -0,0 +1,75 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Ulaanbaatar +X-LIC-LOCATION:Asia/Ulaanbaatar +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+070732 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+070732 +TZOFFSETTO:+0700 +TZNAME:ULAT +DTSTART:19050801T000000 +RDATE:19050801T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0700 +TZOFFSETTO:+0800 +TZNAME:ULAT +DTSTART:19780101T000000 +RDATE:19780101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0800 +TZOFFSETTO:+0900 +TZNAME:ULAST +DTSTART:19830401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +RDATE:19900325T020000 +RDATE:19910331T020000 +RDATE:19920329T020000 +RDATE:19930328T020000 +RDATE:19940327T020000 +RDATE:19950326T020000 +RDATE:19960331T020000 +RDATE:19970330T020000 +RDATE:19980329T020000 +RDATE:20010427T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+0800 +TZNAME:ULAT +DTSTART:19831001T000000 +RDATE:19831001T000000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +RDATE:19960929T030000 +RDATE:19970928T030000 +RDATE:19980927T030000 +RDATE:20010928T030000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Urumqi.ics b/mozilla/calendar/libical/zoneinfo/Asia/Urumqi.ics new file mode 100644 index 00000000000..71ace07055a --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Urumqi.ics @@ -0,0 +1,53 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Urumqi +X-LIC-LOCATION:Asia/Urumqi +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+055020 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+055020 +TZOFFSETTO:+0600 +TZNAME:URUT +DTSTART:19280101T000000 +RDATE:19280101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0600 +TZOFFSETTO:+0800 +TZNAME:CST +DTSTART:19800501T000000 +RDATE:19800501T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0800 +TZOFFSETTO:+0900 +TZNAME:CDT +DTSTART:19860504T000000 +RDATE:19860504T000000 +RDATE:19870412T000000 +RDATE:19880410T000000 +RDATE:19890416T000000 +RDATE:19900415T000000 +RDATE:19910414T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+0800 +TZNAME:CST +DTSTART:19860914T000000 +RDATE:19860914T000000 +RDATE:19870913T000000 +RDATE:19880911T000000 +RDATE:19890917T000000 +RDATE:19900916T000000 +RDATE:19910915T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Vientiane.ics b/mozilla/calendar/libical/zoneinfo/Asia/Vientiane.ics new file mode 100644 index 00000000000..e36f4b1f801 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Vientiane.ics @@ -0,0 +1,43 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Vientiane +X-LIC-LOCATION:Asia/Vientiane +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+065024 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+065024 +TZOFFSETTO:+070620 +TZNAME:SMT +DTSTART:19060609T000000 +RDATE:19060609T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+070620 +TZOFFSETTO:+0700 +TZNAME:ICT +DTSTART:19110311T000100 +RDATE:19110311T000100 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0700 +TZOFFSETTO:+0800 +TZNAME:ICT +DTSTART:19120501T000000 +RDATE:19120501T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0800 +TZOFFSETTO:+0700 +TZNAME:ICT +DTSTART:19310501T000000 +RDATE:19310501T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Vladivostok.ics b/mozilla/calendar/libical/zoneinfo/Asia/Vladivostok.ics new file mode 100644 index 00000000000..c63d6063983 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Vladivostok.ics @@ -0,0 +1,95 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Vladivostok +X-LIC-LOCATION:Asia/Vladivostok +BEGIN:DAYLIGHT +TZOFFSETFROM:+1000 +TZOFFSETTO:+1100 +TZNAME:VLAST +DTSTART:19930328T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1100 +TZOFFSETTO:+1000 +TZNAME:VLAT +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+084744 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+084744 +TZOFFSETTO:+0900 +TZNAME:VLAT +DTSTART:19221115T000000 +RDATE:19221115T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+1000 +TZNAME:VLAT +DTSTART:19300621T000000 +RDATE:19300621T000000 +RDATE:19920119T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1000 +TZOFFSETTO:+1100 +TZNAME:VLAST +DTSTART:19810401T000000 +RDATE:19810401T000000 +RDATE:19820401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +RDATE:19900325T020000 +RDATE:19920328T230000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1100 +TZOFFSETTO:+1000 +TZNAME:VLAT +DTSTART:19811001T000000 +RDATE:19811001T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19920926T230000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1000 +TZOFFSETTO:+1000 +TZNAME:VLASST +DTSTART:19910331T020000 +RDATE:19910331T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1000 +TZOFFSETTO:+0900 +TZNAME:VLAST +DTSTART:19910929T030000 +RDATE:19910929T030000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Yakutsk.ics b/mozilla/calendar/libical/zoneinfo/Asia/Yakutsk.ics new file mode 100644 index 00000000000..849a866f619 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Yakutsk.ics @@ -0,0 +1,95 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Yakutsk +X-LIC-LOCATION:Asia/Yakutsk +BEGIN:DAYLIGHT +TZOFFSETFROM:+0900 +TZOFFSETTO:+1000 +TZNAME:YAKST +DTSTART:19930328T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1000 +TZOFFSETTO:+0900 +TZNAME:YAKT +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+083840 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+083840 +TZOFFSETTO:+0800 +TZNAME:YAKT +DTSTART:19191215T000000 +RDATE:19191215T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0800 +TZOFFSETTO:+0900 +TZNAME:YAKT +DTSTART:19300621T000000 +RDATE:19300621T000000 +RDATE:19920119T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0900 +TZOFFSETTO:+1000 +TZNAME:YAKST +DTSTART:19810401T000000 +RDATE:19810401T000000 +RDATE:19820401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +RDATE:19900325T020000 +RDATE:19920328T230000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1000 +TZOFFSETTO:+0900 +TZNAME:YAKT +DTSTART:19811001T000000 +RDATE:19811001T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19920926T230000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0900 +TZOFFSETTO:+0900 +TZNAME:YAKST +DTSTART:19910331T020000 +RDATE:19910331T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+0800 +TZNAME:YAKT +DTSTART:19910929T030000 +RDATE:19910929T030000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Yekaterinburg.ics b/mozilla/calendar/libical/zoneinfo/Asia/Yekaterinburg.ics new file mode 100644 index 00000000000..b2c76000958 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Yekaterinburg.ics @@ -0,0 +1,113 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Yekaterinburg +X-LIC-LOCATION:Asia/Yekaterinburg +BEGIN:DAYLIGHT +TZOFFSETFROM:+0500 +TZOFFSETTO:+0600 +TZNAME:YEKST +DTSTART:19930328T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0600 +TZOFFSETTO:+0500 +TZNAME:YEKT +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+040224 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+040224 +TZOFFSETTO:+0400 +TZNAME:SVET +DTSTART:19190715T040000 +RDATE:19190715T040000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0500 +TZNAME:SVET +DTSTART:19300621T000000 +RDATE:19300621T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0500 +TZOFFSETTO:+0600 +TZNAME:SVEST +DTSTART:19810401T000000 +RDATE:19810401T000000 +RDATE:19820401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +RDATE:19900325T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0600 +TZOFFSETTO:+0500 +TZNAME:SVET +DTSTART:19811001T000000 +RDATE:19811001T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0500 +TZOFFSETTO:+0500 +TZNAME:SVEST +DTSTART:19910331T020000 +RDATE:19910331T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0500 +TZOFFSETTO:+0400 +TZNAME:SVET +DTSTART:19910929T030000 +RDATE:19910929T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0500 +TZNAME:YEKT +DTSTART:19920119T020000 +RDATE:19920119T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0500 +TZOFFSETTO:+0600 +TZNAME:YEKST +DTSTART:19920328T230000 +RDATE:19920328T230000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0600 +TZOFFSETTO:+0500 +TZNAME:YEKT +DTSTART:19920926T230000 +RDATE:19920926T230000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Asia/Yerevan.ics b/mozilla/calendar/libical/zoneinfo/Asia/Yerevan.ics new file mode 100644 index 00000000000..036f51c8d42 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Asia/Yerevan.ics @@ -0,0 +1,117 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Asia/Yerevan +X-LIC-LOCATION:Asia/Yerevan +BEGIN:DAYLIGHT +TZOFFSETFROM:+0400 +TZOFFSETTO:+0500 +TZNAME:AMST +DTSTART:19970330T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0500 +TZOFFSETTO:+0400 +TZNAME:AMT +DTSTART:19971026T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0258 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0258 +TZOFFSETTO:+0300 +TZNAME:YERT +DTSTART:19240502T000000 +RDATE:19240502T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0400 +TZNAME:YERT +DTSTART:19570301T000000 +RDATE:19570301T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0400 +TZOFFSETTO:+0500 +TZNAME:YERST +DTSTART:19810401T000000 +RDATE:19810401T000000 +RDATE:19820401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +RDATE:19900325T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0500 +TZOFFSETTO:+0400 +TZNAME:YERT +DTSTART:19811001T000000 +RDATE:19811001T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0400 +TZOFFSETTO:+0400 +TZNAME:YERST +DTSTART:19910331T020000 +RDATE:19910331T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0300 +TZNAME:AMT +DTSTART:19910923T000000 +RDATE:19910923T000000 +RDATE:19920926T230000 +RDATE:19930926T030000 +RDATE:19940925T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0300 +TZNAME:AMT +DTSTART:19910929T020000 +RDATE:19910929T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0300 +TZOFFSETTO:+0400 +TZNAME:AMST +DTSTART:19920328T230000 +RDATE:19920328T230000 +RDATE:19930328T020000 +RDATE:19940327T020000 +RDATE:19950326T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0400 +TZNAME:AMT +DTSTART:19950924T030000 +RDATE:19950924T030000 +RDATE:19970101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Atlantic/Azores.ics b/mozilla/calendar/libical/zoneinfo/Atlantic/Azores.ics new file mode 100644 index 00000000000..597fc8dab7f --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Atlantic/Azores.ics @@ -0,0 +1,230 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Atlantic/Azores +X-LIC-LOCATION:Atlantic/Azores +BEGIN:DAYLIGHT +TZOFFSETFROM:-0100 +TZOFFSETTO:+0000 +TZNAME:AZOST +DTSTART:19940327T000000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-0100 +TZNAME:AZOT +DTSTART:19961027T010000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-014240 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-014240 +TZOFFSETTO:-0155 +TZNAME:HMT +DTSTART:18840101T000000 +RDATE:18840101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0155 +TZOFFSETTO:-0200 +TZNAME:AZOT +DTSTART:19110524T000000 +RDATE:19110524T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0200 +TZOFFSETTO:-0100 +TZNAME:AZOST +DTSTART:19160617T230000 +RDATE:19160617T230000 +RDATE:19170228T230000 +RDATE:19180301T230000 +RDATE:19190228T230000 +RDATE:19200229T230000 +RDATE:19210228T230000 +RDATE:19240416T230000 +RDATE:19260417T230000 +RDATE:19270409T230000 +RDATE:19280414T230000 +RDATE:19290420T230000 +RDATE:19310418T230000 +RDATE:19320402T230000 +RDATE:19340407T230000 +RDATE:19350330T230000 +RDATE:19360418T230000 +RDATE:19370403T230000 +RDATE:19380326T230000 +RDATE:19390415T230000 +RDATE:19400224T230000 +RDATE:19410405T230000 +RDATE:19420314T230000 +RDATE:19430313T230000 +RDATE:19440311T230000 +RDATE:19450310T230000 +RDATE:19460406T230000 +RDATE:19470406T020000 +RDATE:19480404T020000 +RDATE:19490403T020000 +RDATE:19510401T020000 +RDATE:19520406T020000 +RDATE:19530405T020000 +RDATE:19540404T020000 +RDATE:19550403T020000 +RDATE:19560401T020000 +RDATE:19570407T020000 +RDATE:19580406T020000 +RDATE:19590405T020000 +RDATE:19600403T020000 +RDATE:19610402T020000 +RDATE:19620401T020000 +RDATE:19630407T020000 +RDATE:19640405T020000 +RDATE:19650404T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0100 +TZOFFSETTO:-0200 +TZNAME:AZOT +DTSTART:19161101T010000 +RDATE:19161101T010000 +RDATE:19171015T000000 +RDATE:19181015T000000 +RDATE:19191015T000000 +RDATE:19201015T000000 +RDATE:19211015T000000 +RDATE:19241015T000000 +RDATE:19261003T000000 +RDATE:19271002T000000 +RDATE:19281007T000000 +RDATE:19291006T000000 +RDATE:19311004T000000 +RDATE:19321002T000000 +RDATE:19341007T000000 +RDATE:19351006T000000 +RDATE:19361004T000000 +RDATE:19371003T000000 +RDATE:19381002T000000 +RDATE:19391119T000000 +RDATE:19401006T000000 +RDATE:19411006T000000 +RDATE:19421025T000000 +RDATE:19431031T000000 +RDATE:19441029T000000 +RDATE:19451028T000000 +RDATE:19461006T000000 +RDATE:19471005T030000 +RDATE:19481003T030000 +RDATE:19491002T030000 +RDATE:19511007T030000 +RDATE:19521005T030000 +RDATE:19531004T030000 +RDATE:19541003T030000 +RDATE:19551002T030000 +RDATE:19561007T030000 +RDATE:19571006T030000 +RDATE:19581005T030000 +RDATE:19591004T030000 +RDATE:19601002T030000 +RDATE:19611001T030000 +RDATE:19621007T030000 +RDATE:19631006T030000 +RDATE:19641004T030000 +RDATE:19651003T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0100 +TZOFFSETTO:+0000 +TZNAME:AZOMT +DTSTART:19420425T230000 +RDATE:19420425T230000 +RDATE:19430417T230000 +RDATE:19440422T230000 +RDATE:19450421T230000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:+0000 +TZOFFSETTO:-0100 +TZNAME:AZOST +DTSTART:19420816T000000 +RDATE:19420816T000000 +RDATE:19430829T000000 +RDATE:19440827T000000 +RDATE:19450826T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0200 +TZOFFSETTO:-0100 +TZNAME:AZOT +DTSTART:19660403T020000 +RDATE:19660403T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0100 +TZOFFSETTO:+0000 +TZNAME:AZOST +DTSTART:19770327T000000 +RDATE:19770327T000000 +RDATE:19780402T000000 +RDATE:19790401T000000 +RDATE:19800330T000000 +RDATE:19810329T010000 +RDATE:19820328T010000 +RDATE:19830327T020000 +RDATE:19840325T010000 +RDATE:19850331T010000 +RDATE:19860330T010000 +RDATE:19870329T010000 +RDATE:19880327T010000 +RDATE:19890326T010000 +RDATE:19900325T010000 +RDATE:19910331T010000 +RDATE:19920329T010000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-0100 +TZNAME:AZOT +DTSTART:19770925T010000 +RDATE:19770925T010000 +RDATE:19781001T010000 +RDATE:19790930T020000 +RDATE:19800928T020000 +RDATE:19810927T020000 +RDATE:19820926T020000 +RDATE:19830925T020000 +RDATE:19840930T020000 +RDATE:19850929T020000 +RDATE:19860928T020000 +RDATE:19870927T020000 +RDATE:19880925T020000 +RDATE:19890924T020000 +RDATE:19900930T020000 +RDATE:19910929T020000 +RDATE:19930328T010000 +RDATE:19940925T010000 +RDATE:19950924T010000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0000 +TZNAME:WET +DTSTART:19920927T020000 +RDATE:19920927T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0100 +TZOFFSETTO:-0100 +TZNAME:AZOT +DTSTART:19930926T000000 +RDATE:19930926T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Atlantic/Bermuda.ics b/mozilla/calendar/libical/zoneinfo/Atlantic/Bermuda.ics new file mode 100644 index 00000000000..ef9e7702fb3 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Atlantic/Bermuda.ics @@ -0,0 +1,55 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Atlantic/Bermuda +X-LIC-LOCATION:Atlantic/Bermuda +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19741027T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:ADT +DTSTART:19870405T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-041904 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-041904 +TZOFFSETTO:-0400 +TZNAME:AST +DTSTART:19300101T020000 +RDATE:19300101T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:ADT +DTSTART:19740428T020000 +RDATE:19740428T020000 +RDATE:19750427T020000 +RDATE:19760425T020000 +RDATE:19770424T020000 +RDATE:19780430T020000 +RDATE:19790429T020000 +RDATE:19800427T020000 +RDATE:19810426T020000 +RDATE:19820425T020000 +RDATE:19830424T020000 +RDATE:19840429T020000 +RDATE:19850428T020000 +RDATE:19860427T020000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Atlantic/Canary.ics b/mozilla/calendar/libical/zoneinfo/Atlantic/Canary.ics new file mode 100644 index 00000000000..2cfe8c5d408 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Atlantic/Canary.ics @@ -0,0 +1,72 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Atlantic/Canary +X-LIC-LOCATION:Atlantic/Canary +BEGIN:DAYLIGHT +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +TZNAME:WEST +DTSTART:19810329T010000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0000 +TZNAME:WET +DTSTART:19961027T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-010136 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-010136 +TZOFFSETTO:-0100 +TZNAME:CANT +DTSTART:19220301T000000 +RDATE:19220301T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0100 +TZOFFSETTO:+0000 +TZNAME:WET +DTSTART:19460930T010000 +RDATE:19460930T010000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +TZNAME:WEST +DTSTART:19800406T000000 +RDATE:19800406T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0000 +TZNAME:WET +DTSTART:19800928T020000 +RDATE:19800928T020000 +RDATE:19810927T020000 +RDATE:19820926T020000 +RDATE:19830925T020000 +RDATE:19840930T020000 +RDATE:19850929T020000 +RDATE:19860928T020000 +RDATE:19870927T020000 +RDATE:19880925T020000 +RDATE:19890924T020000 +RDATE:19900930T020000 +RDATE:19910929T020000 +RDATE:19920927T020000 +RDATE:19930926T020000 +RDATE:19940925T020000 +RDATE:19950924T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Atlantic/Cape_Verde.ics b/mozilla/calendar/libical/zoneinfo/Atlantic/Cape_Verde.ics new file mode 100644 index 00000000000..46bbe3ff7dd --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Atlantic/Cape_Verde.ics @@ -0,0 +1,43 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Atlantic/Cape_Verde +X-LIC-LOCATION:Atlantic/Cape_Verde +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-013404 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-013404 +TZOFFSETTO:-0200 +TZNAME:CVT +DTSTART:19070101T000000 +RDATE:19070101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0200 +TZOFFSETTO:-0100 +TZNAME:CVST +DTSTART:19420901T000000 +RDATE:19420901T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0100 +TZOFFSETTO:-0200 +TZNAME:CVT +DTSTART:19451015T000000 +RDATE:19451015T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0200 +TZOFFSETTO:-0100 +TZNAME:CVT +DTSTART:19751125T020000 +RDATE:19751125T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Atlantic/Faeroe.ics b/mozilla/calendar/libical/zoneinfo/Atlantic/Faeroe.ics new file mode 100644 index 00000000000..4e6cfd0f501 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Atlantic/Faeroe.ics @@ -0,0 +1,64 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Atlantic/Faeroe +X-LIC-LOCATION:Atlantic/Faeroe +BEGIN:DAYLIGHT +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +TZNAME:WEST +DTSTART:19810329T010000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0000 +TZNAME:WET +DTSTART:19961027T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-002704 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-002704 +TZOFFSETTO:+0000 +TZNAME:WET +DTSTART:19080111T000000 +RDATE:19080111T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0000 +TZNAME:WET +DTSTART:19810101T000000 +RDATE:19810101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0000 +TZNAME:WET +DTSTART:19810927T020000 +RDATE:19810927T020000 +RDATE:19820926T020000 +RDATE:19830925T020000 +RDATE:19840930T020000 +RDATE:19850929T020000 +RDATE:19860928T020000 +RDATE:19870927T020000 +RDATE:19880925T020000 +RDATE:19890924T020000 +RDATE:19900930T020000 +RDATE:19910929T020000 +RDATE:19920927T020000 +RDATE:19930926T020000 +RDATE:19940925T020000 +RDATE:19950924T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Atlantic/Jan_Mayen.ics b/mozilla/calendar/libical/zoneinfo/Atlantic/Jan_Mayen.ics new file mode 100644 index 00000000000..dfae8458327 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Atlantic/Jan_Mayen.ics @@ -0,0 +1,96 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Atlantic/Jan_Mayen +X-LIC-LOCATION:Atlantic/Jan_Mayen +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19810329T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0043 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0043 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:18950101T000000 +RDATE:18950101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19160522T010000 +RDATE:19160522T010000 +RDATE:19430329T020000 +RDATE:19440403T020000 +RDATE:19450402T020000 +RDATE:19590315T020000 +RDATE:19600320T020000 +RDATE:19610319T020000 +RDATE:19620318T020000 +RDATE:19630317T020000 +RDATE:19640315T020000 +RDATE:19650425T020000 +RDATE:19800406T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19160930T000000 +RDATE:19160930T000000 +RDATE:19431004T030000 +RDATE:19441002T030000 +RDATE:19451001T030000 +RDATE:19590920T030000 +RDATE:19600918T030000 +RDATE:19610917T030000 +RDATE:19620916T030000 +RDATE:19630915T030000 +RDATE:19640920T030000 +RDATE:19650919T030000 +RDATE:19800928T030000 +RDATE:19810927T030000 +RDATE:19820926T030000 +RDATE:19830925T030000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19400810T230000 +RDATE:19400810T230000 +RDATE:19421102T020000 +RDATE:19800101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Atlantic/Madeira.ics b/mozilla/calendar/libical/zoneinfo/Atlantic/Madeira.ics new file mode 100644 index 00000000000..8e54096499d --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Atlantic/Madeira.ics @@ -0,0 +1,208 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Atlantic/Madeira +X-LIC-LOCATION:Atlantic/Madeira +BEGIN:DAYLIGHT +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +TZNAME:WEST +DTSTART:19840325T010000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0000 +TZNAME:WET +DTSTART:19961027T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-010736 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-010736 +TZOFFSETTO:-0108 +TZNAME:FMT +DTSTART:18840101T000000 +RDATE:18840101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0108 +TZOFFSETTO:-0100 +TZNAME:MADT +DTSTART:19110524T000000 +RDATE:19110524T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0100 +TZOFFSETTO:+0000 +TZNAME:MADST +DTSTART:19160617T230000 +RDATE:19160617T230000 +RDATE:19170228T230000 +RDATE:19180301T230000 +RDATE:19190228T230000 +RDATE:19200229T230000 +RDATE:19210228T230000 +RDATE:19240416T230000 +RDATE:19260417T230000 +RDATE:19270409T230000 +RDATE:19280414T230000 +RDATE:19290420T230000 +RDATE:19310418T230000 +RDATE:19320402T230000 +RDATE:19340407T230000 +RDATE:19350330T230000 +RDATE:19360418T230000 +RDATE:19370403T230000 +RDATE:19380326T230000 +RDATE:19390415T230000 +RDATE:19400224T230000 +RDATE:19410405T230000 +RDATE:19420314T230000 +RDATE:19430313T230000 +RDATE:19440311T230000 +RDATE:19450310T230000 +RDATE:19460406T230000 +RDATE:19470406T020000 +RDATE:19480404T020000 +RDATE:19490403T020000 +RDATE:19510401T020000 +RDATE:19520406T020000 +RDATE:19530405T020000 +RDATE:19540404T020000 +RDATE:19550403T020000 +RDATE:19560401T020000 +RDATE:19570407T020000 +RDATE:19580406T020000 +RDATE:19590405T020000 +RDATE:19600403T020000 +RDATE:19610402T020000 +RDATE:19620401T020000 +RDATE:19630407T020000 +RDATE:19640405T020000 +RDATE:19650404T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-0100 +TZNAME:MADT +DTSTART:19161101T010000 +RDATE:19161101T010000 +RDATE:19171015T000000 +RDATE:19181015T000000 +RDATE:19191015T000000 +RDATE:19201015T000000 +RDATE:19211015T000000 +RDATE:19241015T000000 +RDATE:19261003T000000 +RDATE:19271002T000000 +RDATE:19281007T000000 +RDATE:19291006T000000 +RDATE:19311004T000000 +RDATE:19321002T000000 +RDATE:19341007T000000 +RDATE:19351006T000000 +RDATE:19361004T000000 +RDATE:19371003T000000 +RDATE:19381002T000000 +RDATE:19391119T000000 +RDATE:19401006T000000 +RDATE:19411006T000000 +RDATE:19421025T000000 +RDATE:19431031T000000 +RDATE:19441029T000000 +RDATE:19451028T000000 +RDATE:19461006T000000 +RDATE:19471005T030000 +RDATE:19481003T030000 +RDATE:19491002T030000 +RDATE:19511007T030000 +RDATE:19521005T030000 +RDATE:19531004T030000 +RDATE:19541003T030000 +RDATE:19551002T030000 +RDATE:19561007T030000 +RDATE:19571006T030000 +RDATE:19581005T030000 +RDATE:19591004T030000 +RDATE:19601002T030000 +RDATE:19611001T030000 +RDATE:19621007T030000 +RDATE:19631006T030000 +RDATE:19641004T030000 +RDATE:19651003T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +TZNAME:MADMT +DTSTART:19420425T230000 +RDATE:19420425T230000 +RDATE:19430417T230000 +RDATE:19440422T230000 +RDATE:19450421T230000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0000 +TZNAME:MADST +DTSTART:19420816T000000 +RDATE:19420816T000000 +RDATE:19430829T000000 +RDATE:19440827T000000 +RDATE:19450826T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0100 +TZOFFSETTO:+0000 +TZNAME:WET +DTSTART:19660403T020000 +RDATE:19660403T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +TZNAME:WEST +DTSTART:19770327T000000 +RDATE:19770327T000000 +RDATE:19780402T000000 +RDATE:19790401T000000 +RDATE:19800330T000000 +RDATE:19810329T010000 +RDATE:19820328T010000 +RDATE:19830327T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0000 +TZNAME:WET +DTSTART:19770925T010000 +RDATE:19770925T010000 +RDATE:19781001T010000 +RDATE:19790930T020000 +RDATE:19800928T020000 +RDATE:19810927T020000 +RDATE:19820926T020000 +RDATE:19830925T020000 +RDATE:19840930T020000 +RDATE:19850929T020000 +RDATE:19860928T020000 +RDATE:19870927T020000 +RDATE:19880925T020000 +RDATE:19890924T020000 +RDATE:19900930T020000 +RDATE:19910929T020000 +RDATE:19920927T020000 +RDATE:19930926T020000 +RDATE:19940925T020000 +RDATE:19950924T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Atlantic/Reykjavik.ics b/mozilla/calendar/libical/zoneinfo/Atlantic/Reykjavik.ics new file mode 100644 index 00000000000..985c72c5de9 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Atlantic/Reykjavik.ics @@ -0,0 +1,110 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Atlantic/Reykjavik +X-LIC-LOCATION:Atlantic/Reykjavik +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-012724 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-012724 +TZOFFSETTO:-012748 +TZNAME:RMT +DTSTART:18370101T000000 +RDATE:18370101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-012748 +TZOFFSETTO:-0100 +TZNAME:IST +DTSTART:19080101T000000 +RDATE:19080101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0100 +TZOFFSETTO:+0000 +TZNAME:ISST +DTSTART:19170219T230000 +RDATE:19170219T230000 +RDATE:19180219T230000 +RDATE:19390429T230000 +RDATE:19400225T020000 +RDATE:19410302T010000 +RDATE:19420308T010000 +RDATE:19430307T010000 +RDATE:19440305T010000 +RDATE:19450304T010000 +RDATE:19460303T010000 +RDATE:19470406T010000 +RDATE:19480404T010000 +RDATE:19490403T010000 +RDATE:19500402T010000 +RDATE:19510401T010000 +RDATE:19520406T010000 +RDATE:19530405T010000 +RDATE:19540404T010000 +RDATE:19550403T010000 +RDATE:19560401T010000 +RDATE:19570407T010000 +RDATE:19580406T010000 +RDATE:19590405T010000 +RDATE:19600403T010000 +RDATE:19610402T010000 +RDATE:19620401T010000 +RDATE:19630407T010000 +RDATE:19640405T010000 +RDATE:19650404T010000 +RDATE:19660403T010000 +RDATE:19670402T010000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-0100 +TZNAME:IST +DTSTART:19171021T010000 +RDATE:19171021T010000 +RDATE:19181116T010000 +RDATE:19391129T020000 +RDATE:19401103T020000 +RDATE:19411102T020000 +RDATE:19421025T020000 +RDATE:19431024T020000 +RDATE:19441022T020000 +RDATE:19451028T020000 +RDATE:19461027T020000 +RDATE:19471026T020000 +RDATE:19481024T020000 +RDATE:19491030T020000 +RDATE:19501022T020000 +RDATE:19511028T020000 +RDATE:19521026T020000 +RDATE:19531025T020000 +RDATE:19541024T020000 +RDATE:19551023T020000 +RDATE:19561028T020000 +RDATE:19571027T020000 +RDATE:19581026T020000 +RDATE:19591025T020000 +RDATE:19601023T020000 +RDATE:19611022T020000 +RDATE:19621028T020000 +RDATE:19631027T020000 +RDATE:19641025T020000 +RDATE:19651024T020000 +RDATE:19661023T020000 +RDATE:19671029T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0100 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:19680407T010000 +RDATE:19680407T010000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Atlantic/South_Georgia.ics b/mozilla/calendar/libical/zoneinfo/Atlantic/South_Georgia.ics new file mode 100644 index 00000000000..41c79f1781f --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Atlantic/South_Georgia.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Atlantic/South_Georgia +X-LIC-LOCATION:Atlantic/South_Georgia +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-022608 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-022608 +TZOFFSETTO:-0200 +TZNAME:GST +DTSTART:18900101T000000 +RDATE:18900101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Atlantic/St_Helena.ics b/mozilla/calendar/libical/zoneinfo/Atlantic/St_Helena.ics new file mode 100644 index 00000000000..084fe4138b3 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Atlantic/St_Helena.ics @@ -0,0 +1,29 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Atlantic/St_Helena +X-LIC-LOCATION:Atlantic/St_Helena +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-002248 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-002248 +TZOFFSETTO:-002248 +TZNAME:JMT +DTSTART:18900101T000000 +RDATE:18900101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-002248 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:19510101T000000 +RDATE:19510101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Atlantic/Stanley.ics b/mozilla/calendar/libical/zoneinfo/Atlantic/Stanley.ics new file mode 100644 index 00000000000..eb997da4add --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Atlantic/Stanley.ics @@ -0,0 +1,127 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Atlantic/Stanley +X-LIC-LOCATION:Atlantic/Stanley +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0400 +TZNAME:FKT +DTSTART:20010415T020000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYMONTHDAY=15,16,17,18,19,20,21;BYDAY=SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:FKST +DTSTART:20010902T020000 +RRULE:FREQ=YEARLY;BYMONTH=9;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-035124 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-035124 +TZOFFSETTO:-035124 +TZNAME:SMT +DTSTART:18900101T000000 +RDATE:18900101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-035124 +TZOFFSETTO:-0400 +TZNAME:FKT +DTSTART:19120312T000000 +RDATE:19120312T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:FKST +DTSTART:19370926T000000 +RDATE:19370926T000000 +RDATE:19380925T000000 +RDATE:19391001T000000 +RDATE:19400929T000000 +RDATE:19410928T000000 +RDATE:19420927T000000 +RDATE:19860914T000000 +RDATE:19870913T000000 +RDATE:19880911T000000 +RDATE:19890910T000000 +RDATE:19900909T000000 +RDATE:19910915T000000 +RDATE:19920913T000000 +RDATE:19930912T000000 +RDATE:19940911T000000 +RDATE:19950910T000000 +RDATE:19960915T000000 +RDATE:19970914T000000 +RDATE:19980913T000000 +RDATE:19990912T000000 +RDATE:20000910T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0300 +TZOFFSETTO:-0400 +TZNAME:FKT +DTSTART:19380320T000000 +RDATE:19380320T000000 +RDATE:19390319T000000 +RDATE:19400324T000000 +RDATE:19410323T000000 +RDATE:19420322T000000 +RDATE:19430101T000000 +RDATE:19860420T000000 +RDATE:19870419T000000 +RDATE:19880417T000000 +RDATE:19890416T000000 +RDATE:19900422T000000 +RDATE:19910421T000000 +RDATE:19920419T000000 +RDATE:19930418T000000 +RDATE:19940417T000000 +RDATE:19950416T000000 +RDATE:19960421T000000 +RDATE:19970420T000000 +RDATE:19980419T000000 +RDATE:19990418T000000 +RDATE:20000416T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0400 +TZOFFSETTO:-0300 +TZNAME:FKT +DTSTART:19830501T000000 +RDATE:19830501T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0300 +TZOFFSETTO:-0200 +TZNAME:FKST +DTSTART:19830925T000000 +RDATE:19830925T000000 +RDATE:19840916T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0200 +TZOFFSETTO:-0300 +TZNAME:FKT +DTSTART:19840429T000000 +RDATE:19840429T000000 +RDATE:19850428T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0300 +TZOFFSETTO:-0300 +TZNAME:FKST +DTSTART:19850915T000000 +RDATE:19850915T000000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Australia/Adelaide.ics b/mozilla/calendar/libical/zoneinfo/Australia/Adelaide.ics new file mode 100644 index 00000000000..1faed54543c --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Australia/Adelaide.ics @@ -0,0 +1,109 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Australia/Adelaide +X-LIC-LOCATION:Australia/Adelaide +BEGIN:DAYLIGHT +TZOFFSETFROM:+0930 +TZOFFSETTO:+1030 +TZNAME:CST +DTSTART:19871025T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1030 +TZOFFSETTO:+0930 +TZNAME:CST +DTSTART:19950326T030000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+091420 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+091420 +TZOFFSETTO:+0900 +TZNAME:CST +DTSTART:18950201T000000 +RDATE:18950201T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+0930 +TZNAME:CST +DTSTART:18990501T000000 +RDATE:18990501T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0930 +TZOFFSETTO:+1030 +TZNAME:CST +DTSTART:19170101T000100 +RDATE:19170101T000100 +RDATE:19420101T020000 +RDATE:19420927T020000 +RDATE:19431003T020000 +RDATE:19711031T020000 +RDATE:19721029T020000 +RDATE:19731028T020000 +RDATE:19741027T020000 +RDATE:19751026T020000 +RDATE:19761031T020000 +RDATE:19771030T020000 +RDATE:19781029T020000 +RDATE:19791028T020000 +RDATE:19801026T020000 +RDATE:19811025T020000 +RDATE:19821031T020000 +RDATE:19831030T020000 +RDATE:19841028T020000 +RDATE:19851027T020000 +RDATE:19861019T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1030 +TZOFFSETTO:+0930 +TZNAME:CST +DTSTART:19170325T020000 +RDATE:19170325T020000 +RDATE:19420329T020000 +RDATE:19430328T020000 +RDATE:19440326T020000 +RDATE:19720227T030000 +RDATE:19730304T030000 +RDATE:19740303T030000 +RDATE:19750302T030000 +RDATE:19760307T030000 +RDATE:19770306T030000 +RDATE:19780305T030000 +RDATE:19790304T030000 +RDATE:19800302T030000 +RDATE:19810301T030000 +RDATE:19820307T030000 +RDATE:19830306T030000 +RDATE:19840304T030000 +RDATE:19850303T030000 +RDATE:19860316T030000 +RDATE:19870315T030000 +RDATE:19880320T030000 +RDATE:19890319T030000 +RDATE:19900318T030000 +RDATE:19910303T030000 +RDATE:19920322T030000 +RDATE:19930307T030000 +RDATE:19940320T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0930 +TZOFFSETTO:+0930 +TZNAME:CST +DTSTART:19710101T000000 +RDATE:19710101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Australia/Brisbane.ics b/mozilla/calendar/libical/zoneinfo/Australia/Brisbane.ics new file mode 100644 index 00000000000..7cbc9ca9aed --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Australia/Brisbane.ics @@ -0,0 +1,57 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Australia/Brisbane +X-LIC-LOCATION:Australia/Brisbane +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+101208 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+101208 +TZOFFSETTO:+1000 +TZNAME:EST +DTSTART:18950101T000000 +RDATE:18950101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1000 +TZOFFSETTO:+1100 +TZNAME:EST +DTSTART:19170101T000100 +RDATE:19170101T000100 +RDATE:19420101T020000 +RDATE:19420927T020000 +RDATE:19431003T020000 +RDATE:19711031T020000 +RDATE:19891029T020000 +RDATE:19901028T020000 +RDATE:19911027T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1100 +TZOFFSETTO:+1000 +TZNAME:EST +DTSTART:19170325T020000 +RDATE:19170325T020000 +RDATE:19420329T020000 +RDATE:19430328T020000 +RDATE:19440326T020000 +RDATE:19720227T030000 +RDATE:19900304T030000 +RDATE:19910303T030000 +RDATE:19920301T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+1000 +TZOFFSETTO:+1000 +TZNAME:EST +DTSTART:19710101T000000 +RDATE:19710101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Australia/Broken_Hill.ics b/mozilla/calendar/libical/zoneinfo/Australia/Broken_Hill.ics new file mode 100644 index 00000000000..ad7b12f1e74 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Australia/Broken_Hill.ics @@ -0,0 +1,123 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Australia/Broken_Hill +X-LIC-LOCATION:Australia/Broken_Hill +BEGIN:DAYLIGHT +TZOFFSETFROM:+0930 +TZOFFSETTO:+1030 +TZNAME:CST +DTSTART:19871025T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1030 +TZOFFSETTO:+0930 +TZNAME:CST +DTSTART:20010325T030000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+092548 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+092548 +TZOFFSETTO:+1000 +TZNAME:EST +DTSTART:18950201T000000 +RDATE:18950201T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+1000 +TZOFFSETTO:+0900 +TZNAME:CST +DTSTART:18960823T000000 +RDATE:18960823T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+0930 +TZNAME:CST +DTSTART:18990501T000000 +RDATE:18990501T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0930 +TZOFFSETTO:+1030 +TZNAME:CST +DTSTART:19170101T000100 +RDATE:19170101T000100 +RDATE:19420101T020000 +RDATE:19420927T020000 +RDATE:19431003T020000 +RDATE:19711031T020000 +RDATE:19721029T020000 +RDATE:19731028T020000 +RDATE:19741027T020000 +RDATE:19751026T020000 +RDATE:19761031T020000 +RDATE:19771030T020000 +RDATE:19781029T020000 +RDATE:19791028T020000 +RDATE:19801026T020000 +RDATE:19811025T020000 +RDATE:19821031T020000 +RDATE:19831030T020000 +RDATE:19841028T020000 +RDATE:19851027T020000 +RDATE:19861019T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1030 +TZOFFSETTO:+0930 +TZNAME:CST +DTSTART:19170325T020000 +RDATE:19170325T020000 +RDATE:19420329T020000 +RDATE:19430328T020000 +RDATE:19440326T020000 +RDATE:19720227T030000 +RDATE:19730304T030000 +RDATE:19740303T030000 +RDATE:19750302T030000 +RDATE:19760307T030000 +RDATE:19770306T030000 +RDATE:19780305T030000 +RDATE:19790304T030000 +RDATE:19800302T030000 +RDATE:19810301T030000 +RDATE:19820404T030000 +RDATE:19830306T030000 +RDATE:19840304T030000 +RDATE:19850303T030000 +RDATE:19860316T030000 +RDATE:19870315T030000 +RDATE:19880320T030000 +RDATE:19890319T030000 +RDATE:19900304T030000 +RDATE:19910303T030000 +RDATE:19920301T030000 +RDATE:19930307T030000 +RDATE:19940306T030000 +RDATE:19950305T030000 +RDATE:19960331T030000 +RDATE:19970330T030000 +RDATE:19980329T030000 +RDATE:19990328T030000 +RDATE:20000101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0930 +TZOFFSETTO:+0930 +TZNAME:CST +DTSTART:19710101T000000 +RDATE:19710101T000000 +RDATE:20000326T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Australia/Darwin.ics b/mozilla/calendar/libical/zoneinfo/Australia/Darwin.ics new file mode 100644 index 00000000000..95b3d8e3f5d --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Australia/Darwin.ics @@ -0,0 +1,49 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Australia/Darwin +X-LIC-LOCATION:Australia/Darwin +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+084320 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+084320 +TZOFFSETTO:+0900 +TZNAME:CST +DTSTART:18950201T000000 +RDATE:18950201T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+0930 +TZNAME:CST +DTSTART:18990501T000000 +RDATE:18990501T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0930 +TZOFFSETTO:+1030 +TZNAME:CST +DTSTART:19170101T000100 +RDATE:19170101T000100 +RDATE:19420101T020000 +RDATE:19420927T020000 +RDATE:19431003T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1030 +TZOFFSETTO:+0930 +TZNAME:CST +DTSTART:19170325T020000 +RDATE:19170325T020000 +RDATE:19420329T020000 +RDATE:19430328T020000 +RDATE:19440326T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Australia/Hobart.ics b/mozilla/calendar/libical/zoneinfo/Australia/Hobart.ics new file mode 100644 index 00000000000..8fea60afab3 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Australia/Hobart.ics @@ -0,0 +1,121 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Australia/Hobart +X-LIC-LOCATION:Australia/Hobart +BEGIN:STANDARD +TZOFFSETFROM:+1100 +TZOFFSETTO:+1000 +TZNAME:EST +DTSTART:19910331T030000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1000 +TZOFFSETTO:+1100 +TZNAME:EST +DTSTART:20011007T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+094916 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+094916 +TZOFFSETTO:+1000 +TZNAME:EST +DTSTART:18950901T000000 +RDATE:18950901T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1000 +TZOFFSETTO:+1100 +TZNAME:EST +DTSTART:19161001T020000 +RDATE:19161001T020000 +RDATE:19420101T020000 +RDATE:19420927T020000 +RDATE:19431003T020000 +RDATE:19671001T020000 +RDATE:19681027T020000 +RDATE:19691026T020000 +RDATE:19701025T020000 +RDATE:19711031T020000 +RDATE:19721029T020000 +RDATE:19731028T020000 +RDATE:19741027T020000 +RDATE:19751026T020000 +RDATE:19761031T020000 +RDATE:19771030T020000 +RDATE:19781029T020000 +RDATE:19791028T020000 +RDATE:19801026T020000 +RDATE:19811025T020000 +RDATE:19821031T020000 +RDATE:19831030T020000 +RDATE:19841028T020000 +RDATE:19851027T020000 +RDATE:19861019T020000 +RDATE:19871025T020000 +RDATE:19881030T020000 +RDATE:19891029T020000 +RDATE:19901028T020000 +RDATE:19911006T020000 +RDATE:19921004T020000 +RDATE:19931003T020000 +RDATE:19941002T020000 +RDATE:19951001T020000 +RDATE:19961006T020000 +RDATE:19971005T020000 +RDATE:19981004T020000 +RDATE:19991003T020000 +RDATE:20000827T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1100 +TZOFFSETTO:+1000 +TZNAME:EST +DTSTART:19170201T000000 +RDATE:19170201T000000 +RDATE:19420329T020000 +RDATE:19430328T020000 +RDATE:19440326T020000 +RDATE:19680331T030000 +RDATE:19690309T030000 +RDATE:19700308T030000 +RDATE:19710314T030000 +RDATE:19720227T030000 +RDATE:19730304T030000 +RDATE:19740303T030000 +RDATE:19750302T030000 +RDATE:19760307T030000 +RDATE:19770306T030000 +RDATE:19780305T030000 +RDATE:19790304T030000 +RDATE:19800302T030000 +RDATE:19810301T030000 +RDATE:19820328T030000 +RDATE:19830327T030000 +RDATE:19840304T030000 +RDATE:19850303T030000 +RDATE:19860302T030000 +RDATE:19870315T030000 +RDATE:19880320T030000 +RDATE:19890319T030000 +RDATE:19900318T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+1000 +TZOFFSETTO:+1000 +TZNAME:EST +DTSTART:19170325T020000 +RDATE:19170325T020000 +RDATE:19670101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Australia/Lindeman.ics b/mozilla/calendar/libical/zoneinfo/Australia/Lindeman.ics new file mode 100644 index 00000000000..d9f7623376a --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Australia/Lindeman.ics @@ -0,0 +1,62 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Australia/Lindeman +X-LIC-LOCATION:Australia/Lindeman +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+095556 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+095556 +TZOFFSETTO:+1000 +TZNAME:EST +DTSTART:18950101T000000 +RDATE:18950101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1000 +TZOFFSETTO:+1100 +TZNAME:EST +DTSTART:19170101T000100 +RDATE:19170101T000100 +RDATE:19420101T020000 +RDATE:19420927T020000 +RDATE:19431003T020000 +RDATE:19711031T020000 +RDATE:19891029T020000 +RDATE:19901028T020000 +RDATE:19911027T020000 +RDATE:19921025T020000 +RDATE:19931031T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1100 +TZOFFSETTO:+1000 +TZNAME:EST +DTSTART:19170325T020000 +RDATE:19170325T020000 +RDATE:19420329T020000 +RDATE:19430328T020000 +RDATE:19440326T020000 +RDATE:19720227T030000 +RDATE:19900304T030000 +RDATE:19910303T030000 +RDATE:19920301T030000 +RDATE:19930307T030000 +RDATE:19940306T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+1000 +TZOFFSETTO:+1000 +TZNAME:EST +DTSTART:19710101T000000 +RDATE:19710101T000000 +RDATE:19920701T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Australia/Lord_Howe.ics b/mozilla/calendar/libical/zoneinfo/Australia/Lord_Howe.ics new file mode 100644 index 00000000000..d812f9c8abc --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Australia/Lord_Howe.ics @@ -0,0 +1,101 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Australia/Lord_Howe +X-LIC-LOCATION:Australia/Lord_Howe +BEGIN:STANDARD +TZOFFSETFROM:+1100 +TZOFFSETTO:+1030 +TZNAME:LHST +DTSTART:19960331T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1030 +TZOFFSETTO:+1100 +TZNAME:LHST +DTSTART:20011028T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+103620 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+103620 +TZOFFSETTO:+1000 +TZNAME:EST +DTSTART:18950201T000000 +RDATE:18950201T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+1000 +TZOFFSETTO:+1030 +TZNAME:LHST +DTSTART:19810301T000000 +RDATE:19810301T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1030 +TZOFFSETTO:+1130 +TZNAME:LHST +DTSTART:19811025T020000 +RDATE:19811025T020000 +RDATE:19821031T020000 +RDATE:19831030T020000 +RDATE:19841028T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1130 +TZOFFSETTO:+1030 +TZNAME:LHST +DTSTART:19820307T020000 +RDATE:19820307T020000 +RDATE:19830306T020000 +RDATE:19840304T020000 +RDATE:19850303T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1030 +TZOFFSETTO:+1100 +TZNAME:LHST +DTSTART:19851027T020000 +RDATE:19851027T020000 +RDATE:19861019T020000 +RDATE:19871025T020000 +RDATE:19881030T020000 +RDATE:19891029T020000 +RDATE:19901028T020000 +RDATE:19911027T020000 +RDATE:19921025T020000 +RDATE:19931031T020000 +RDATE:19941030T020000 +RDATE:19951029T020000 +RDATE:19961027T020000 +RDATE:19971026T020000 +RDATE:19981025T020000 +RDATE:19991031T020000 +RDATE:20000827T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1100 +TZOFFSETTO:+1030 +TZNAME:LHST +DTSTART:19860316T020000 +RDATE:19860316T020000 +RDATE:19870315T020000 +RDATE:19880320T020000 +RDATE:19890319T020000 +RDATE:19900304T020000 +RDATE:19910303T020000 +RDATE:19920301T020000 +RDATE:19930307T020000 +RDATE:19940306T020000 +RDATE:19950305T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Australia/Melbourne.ics b/mozilla/calendar/libical/zoneinfo/Australia/Melbourne.ics new file mode 100644 index 00000000000..cf826755689 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Australia/Melbourne.ics @@ -0,0 +1,116 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Australia/Melbourne +X-LIC-LOCATION:Australia/Melbourne +BEGIN:STANDARD +TZOFFSETFROM:+1100 +TZOFFSETTO:+1000 +TZNAME:EST +DTSTART:19950326T030000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1000 +TZOFFSETTO:+1100 +TZNAME:EST +DTSTART:20011028T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+093952 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+093952 +TZOFFSETTO:+1000 +TZNAME:EST +DTSTART:18950201T000000 +RDATE:18950201T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1000 +TZOFFSETTO:+1100 +TZNAME:EST +DTSTART:19170101T000100 +RDATE:19170101T000100 +RDATE:19420101T020000 +RDATE:19420927T020000 +RDATE:19431003T020000 +RDATE:19711031T020000 +RDATE:19721029T020000 +RDATE:19731028T020000 +RDATE:19741027T020000 +RDATE:19751026T020000 +RDATE:19761031T020000 +RDATE:19771030T020000 +RDATE:19781029T020000 +RDATE:19791028T020000 +RDATE:19801026T020000 +RDATE:19811025T020000 +RDATE:19821031T020000 +RDATE:19831030T020000 +RDATE:19841028T020000 +RDATE:19851027T020000 +RDATE:19861019T020000 +RDATE:19871018T020000 +RDATE:19881030T020000 +RDATE:19891029T020000 +RDATE:19901028T020000 +RDATE:19911027T020000 +RDATE:19921025T020000 +RDATE:19931031T020000 +RDATE:19941030T020000 +RDATE:19951029T020000 +RDATE:19961027T020000 +RDATE:19971026T020000 +RDATE:19981025T020000 +RDATE:19991031T020000 +RDATE:20000827T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1100 +TZOFFSETTO:+1000 +TZNAME:EST +DTSTART:19170325T020000 +RDATE:19170325T020000 +RDATE:19420329T020000 +RDATE:19430328T020000 +RDATE:19440326T020000 +RDATE:19720227T030000 +RDATE:19730304T030000 +RDATE:19740303T030000 +RDATE:19750302T030000 +RDATE:19760307T030000 +RDATE:19770306T030000 +RDATE:19780305T030000 +RDATE:19790304T030000 +RDATE:19800302T030000 +RDATE:19810301T030000 +RDATE:19820307T030000 +RDATE:19830306T030000 +RDATE:19840304T030000 +RDATE:19850303T030000 +RDATE:19860316T030000 +RDATE:19870315T030000 +RDATE:19880320T030000 +RDATE:19890319T030000 +RDATE:19900318T030000 +RDATE:19910303T030000 +RDATE:19920301T030000 +RDATE:19930307T030000 +RDATE:19940306T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+1000 +TZOFFSETTO:+1000 +TZNAME:EST +DTSTART:19710101T000000 +RDATE:19710101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Australia/Perth.ics b/mozilla/calendar/libical/zoneinfo/Australia/Perth.ics new file mode 100644 index 00000000000..7ba692d11a6 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Australia/Perth.ics @@ -0,0 +1,53 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Australia/Perth +X-LIC-LOCATION:Australia/Perth +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+074324 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+074324 +TZOFFSETTO:+0800 +TZNAME:WST +DTSTART:18951201T000000 +RDATE:18951201T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0800 +TZOFFSETTO:+0900 +TZNAME:WST +DTSTART:19170101T000100 +RDATE:19170101T000100 +RDATE:19420101T020000 +RDATE:19420927T020000 +RDATE:19741027T020000 +RDATE:19831030T020000 +RDATE:19911117T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+0800 +TZNAME:WST +DTSTART:19170325T020000 +RDATE:19170325T020000 +RDATE:19420329T020000 +RDATE:19430328T020000 +RDATE:19750302T030000 +RDATE:19840304T030000 +RDATE:19920301T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0800 +TZOFFSETTO:+0800 +TZNAME:WST +DTSTART:19430701T000000 +RDATE:19430701T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Australia/Sydney.ics b/mozilla/calendar/libical/zoneinfo/Australia/Sydney.ics new file mode 100644 index 00000000000..f39c11ed350 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Australia/Sydney.ics @@ -0,0 +1,117 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Australia/Sydney +X-LIC-LOCATION:Australia/Sydney +BEGIN:STANDARD +TZOFFSETFROM:+1100 +TZOFFSETTO:+1000 +TZNAME:EST +DTSTART:19960331T030000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1000 +TZOFFSETTO:+1100 +TZNAME:EST +DTSTART:20011028T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+100452 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+100452 +TZOFFSETTO:+1000 +TZNAME:EST +DTSTART:18950201T000000 +RDATE:18950201T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1000 +TZOFFSETTO:+1100 +TZNAME:EST +DTSTART:19170101T000100 +RDATE:19170101T000100 +RDATE:19420101T020000 +RDATE:19420927T020000 +RDATE:19431003T020000 +RDATE:19711031T020000 +RDATE:19721029T020000 +RDATE:19731028T020000 +RDATE:19741027T020000 +RDATE:19751026T020000 +RDATE:19761031T020000 +RDATE:19771030T020000 +RDATE:19781029T020000 +RDATE:19791028T020000 +RDATE:19801026T020000 +RDATE:19811025T020000 +RDATE:19821031T020000 +RDATE:19831030T020000 +RDATE:19841028T020000 +RDATE:19851027T020000 +RDATE:19861019T020000 +RDATE:19871025T020000 +RDATE:19881030T020000 +RDATE:19891029T020000 +RDATE:19901028T020000 +RDATE:19911027T020000 +RDATE:19921025T020000 +RDATE:19931031T020000 +RDATE:19941030T020000 +RDATE:19951029T020000 +RDATE:19961027T020000 +RDATE:19971026T020000 +RDATE:19981025T020000 +RDATE:19991031T020000 +RDATE:20000827T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1100 +TZOFFSETTO:+1000 +TZNAME:EST +DTSTART:19170325T020000 +RDATE:19170325T020000 +RDATE:19420329T020000 +RDATE:19430328T020000 +RDATE:19440326T020000 +RDATE:19720227T030000 +RDATE:19730304T030000 +RDATE:19740303T030000 +RDATE:19750302T030000 +RDATE:19760307T030000 +RDATE:19770306T030000 +RDATE:19780305T030000 +RDATE:19790304T030000 +RDATE:19800302T030000 +RDATE:19810301T030000 +RDATE:19820404T030000 +RDATE:19830306T030000 +RDATE:19840304T030000 +RDATE:19850303T030000 +RDATE:19860316T030000 +RDATE:19870315T030000 +RDATE:19880320T030000 +RDATE:19890319T030000 +RDATE:19900304T030000 +RDATE:19910303T030000 +RDATE:19920301T030000 +RDATE:19930307T030000 +RDATE:19940306T030000 +RDATE:19950305T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+1000 +TZOFFSETTO:+1000 +TZNAME:EST +DTSTART:19710101T000000 +RDATE:19710101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Amsterdam.ics b/mozilla/calendar/libical/zoneinfo/Europe/Amsterdam.ics new file mode 100644 index 00000000000..9d493197cc4 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Amsterdam.ics @@ -0,0 +1,171 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Amsterdam +X-LIC-LOCATION:Europe/Amsterdam +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19810329T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+001932 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+001932 +TZOFFSETTO:+001932 +TZNAME:AMT +DTSTART:18350101T000000 +RDATE:18350101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+001932 +TZOFFSETTO:+011932 +TZNAME:NST +DTSTART:19160501T000000 +RDATE:19160501T000000 +RDATE:19170416T020000 +RDATE:19180401T020000 +RDATE:19190407T020000 +RDATE:19200405T020000 +RDATE:19210404T020000 +RDATE:19220326T020000 +RDATE:19230601T020000 +RDATE:19240330T020000 +RDATE:19250605T020000 +RDATE:19260515T020000 +RDATE:19270515T020000 +RDATE:19280515T020000 +RDATE:19290515T020000 +RDATE:19300515T020000 +RDATE:19310515T020000 +RDATE:19320522T020000 +RDATE:19330515T020000 +RDATE:19340515T020000 +RDATE:19350515T020000 +RDATE:19360515T020000 +RDATE:19370522T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+011932 +TZOFFSETTO:+001932 +TZNAME:AMT +DTSTART:19161001T000000 +RDATE:19161001T000000 +RDATE:19170917T030000 +RDATE:19180930T030000 +RDATE:19190929T030000 +RDATE:19200927T030000 +RDATE:19210926T030000 +RDATE:19221008T030000 +RDATE:19231007T030000 +RDATE:19241005T030000 +RDATE:19251004T030000 +RDATE:19261003T030000 +RDATE:19271002T030000 +RDATE:19281007T030000 +RDATE:19291006T030000 +RDATE:19301005T030000 +RDATE:19311004T030000 +RDATE:19321002T030000 +RDATE:19331008T030000 +RDATE:19341007T030000 +RDATE:19351006T030000 +RDATE:19361004T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+011932 +TZOFFSETTO:+0120 +TZNAME:NEST +DTSTART:19370701T000000 +RDATE:19370701T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0120 +TZOFFSETTO:+0020 +TZNAME:NET +DTSTART:19371003T030000 +RDATE:19371003T030000 +RDATE:19381002T030000 +RDATE:19391008T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0020 +TZOFFSETTO:+0120 +TZNAME:NEST +DTSTART:19380515T020000 +RDATE:19380515T020000 +RDATE:19390515T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0020 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19400517T000000 +RDATE:19400517T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19421102T020000 +RDATE:19421102T020000 +RDATE:19770101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19430329T020000 +RDATE:19430329T020000 +RDATE:19440403T020000 +RDATE:19450402T020000 +RDATE:19770403T020000 +RDATE:19780402T020000 +RDATE:19790401T020000 +RDATE:19800406T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19431004T030000 +RDATE:19431004T030000 +RDATE:19441002T030000 +RDATE:19450916T030000 +RDATE:19770925T030000 +RDATE:19781001T030000 +RDATE:19790930T030000 +RDATE:19800928T030000 +RDATE:19810927T030000 +RDATE:19820926T030000 +RDATE:19830925T030000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Andorra.ics b/mozilla/calendar/libical/zoneinfo/Europe/Andorra.ics new file mode 100644 index 00000000000..6a6723c6bcb --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Andorra.ics @@ -0,0 +1,60 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Andorra +X-LIC-LOCATION:Europe/Andorra +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19850331T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+000604 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+000604 +TZOFFSETTO:+0000 +TZNAME:WET +DTSTART:19010101T000000 +RDATE:19010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19460930T000000 +RDATE:19460930T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19850929T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Athens.ics b/mozilla/calendar/libical/zoneinfo/Europe/Athens.ics new file mode 100644 index 00000000000..bd011f469bc --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Athens.ics @@ -0,0 +1,129 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Athens +X-LIC-LOCATION:Europe/Athens +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19810329T030000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19961027T040000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+013452 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+013452 +TZOFFSETTO:+013452 +TZNAME:AMT +DTSTART:18950914T000000 +RDATE:18950914T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+013452 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19160728T000100 +RDATE:19160728T000100 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19320707T000000 +RDATE:19320707T000000 +RDATE:19410407T000000 +RDATE:19520701T000000 +RDATE:19750412T000000 +RDATE:19760411T020000 +RDATE:19770403T020000 +RDATE:19780402T020000 +RDATE:19790401T090000 +RDATE:19800401T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19320901T000000 +RDATE:19320901T000000 +RDATE:19521102T000000 +RDATE:19751126T010000 +RDATE:19761010T030000 +RDATE:19770926T030000 +RDATE:19780924T040000 +RDATE:19790929T020000 +RDATE:19800928T000000 +RDATE:19810927T040000 +RDATE:19820926T040000 +RDATE:19830925T040000 +RDATE:19840930T040000 +RDATE:19850929T040000 +RDATE:19860928T040000 +RDATE:19870927T040000 +RDATE:19880925T040000 +RDATE:19890924T040000 +RDATE:19900930T040000 +RDATE:19910929T040000 +RDATE:19920927T040000 +RDATE:19930926T040000 +RDATE:19940925T040000 +RDATE:19950924T040000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19410430T000000 +RDATE:19410430T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19421102T030000 +RDATE:19421102T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19430330T000000 +RDATE:19430330T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19431004T000000 +RDATE:19431004T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19440404T000000 +RDATE:19440404T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19810101T000000 +RDATE:19810101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Belfast.ics b/mozilla/calendar/libical/zoneinfo/Europe/Belfast.ics new file mode 100644 index 00000000000..92273099df8 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Belfast.ics @@ -0,0 +1,227 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Belfast +X-LIC-LOCATION:Europe/Belfast +BEGIN:DAYLIGHT +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +TZNAME:BST +DTSTART:19810329T010000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:19961027T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-002340 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-002340 +TZOFFSETTO:-002521 +TZNAME:DMT +DTSTART:18800802T000000 +RDATE:18800802T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-002521 +TZOFFSETTO:+003439 +TZNAME:IST +DTSTART:19160521T020000 +RDATE:19160521T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+003439 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:19161001T030000 +RDATE:19161001T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +TZNAME:BST +DTSTART:19170408T020000 +RDATE:19170408T020000 +RDATE:19180324T020000 +RDATE:19190330T020000 +RDATE:19200328T020000 +RDATE:19210403T020000 +RDATE:19220326T020000 +RDATE:19230422T020000 +RDATE:19240413T020000 +RDATE:19250419T020000 +RDATE:19260418T020000 +RDATE:19270410T020000 +RDATE:19280422T020000 +RDATE:19290421T020000 +RDATE:19300413T020000 +RDATE:19310419T020000 +RDATE:19320417T020000 +RDATE:19330409T020000 +RDATE:19340422T020000 +RDATE:19350414T020000 +RDATE:19360419T020000 +RDATE:19370418T020000 +RDATE:19380410T020000 +RDATE:19390416T020000 +RDATE:19400225T020000 +RDATE:19460414T020000 +RDATE:19470316T020000 +RDATE:19480314T020000 +RDATE:19490403T020000 +RDATE:19500416T020000 +RDATE:19510415T020000 +RDATE:19520420T020000 +RDATE:19530419T020000 +RDATE:19540411T020000 +RDATE:19550417T020000 +RDATE:19560422T020000 +RDATE:19570414T020000 +RDATE:19580420T020000 +RDATE:19590419T020000 +RDATE:19600410T020000 +RDATE:19610326T020000 +RDATE:19620325T020000 +RDATE:19630331T020000 +RDATE:19640322T020000 +RDATE:19650321T020000 +RDATE:19660320T020000 +RDATE:19670319T020000 +RDATE:19680218T020000 +RDATE:19720319T020000 +RDATE:19730318T020000 +RDATE:19740317T020000 +RDATE:19750316T020000 +RDATE:19760321T020000 +RDATE:19770320T020000 +RDATE:19780319T020000 +RDATE:19790318T020000 +RDATE:19800316T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:19170917T030000 +RDATE:19170917T030000 +RDATE:19180930T030000 +RDATE:19190929T030000 +RDATE:19201025T030000 +RDATE:19211003T030000 +RDATE:19221008T030000 +RDATE:19230916T030000 +RDATE:19240921T030000 +RDATE:19251004T030000 +RDATE:19261003T030000 +RDATE:19271002T030000 +RDATE:19281007T030000 +RDATE:19291006T030000 +RDATE:19301005T030000 +RDATE:19311004T030000 +RDATE:19321002T030000 +RDATE:19331008T030000 +RDATE:19341007T030000 +RDATE:19351006T030000 +RDATE:19361004T030000 +RDATE:19371003T030000 +RDATE:19381002T030000 +RDATE:19391119T030000 +RDATE:19451007T030000 +RDATE:19461006T030000 +RDATE:19471102T030000 +RDATE:19481031T030000 +RDATE:19491030T030000 +RDATE:19501022T030000 +RDATE:19511021T030000 +RDATE:19521026T030000 +RDATE:19531004T030000 +RDATE:19541003T030000 +RDATE:19551002T030000 +RDATE:19561007T030000 +RDATE:19571006T030000 +RDATE:19581005T030000 +RDATE:19591004T030000 +RDATE:19601002T030000 +RDATE:19611029T030000 +RDATE:19621028T030000 +RDATE:19631027T030000 +RDATE:19641025T030000 +RDATE:19651024T030000 +RDATE:19661023T030000 +RDATE:19671029T030000 +RDATE:19711031T030000 +RDATE:19721029T030000 +RDATE:19731028T030000 +RDATE:19741027T030000 +RDATE:19751026T030000 +RDATE:19761024T030000 +RDATE:19771023T030000 +RDATE:19781029T030000 +RDATE:19791028T030000 +RDATE:19801026T030000 +RDATE:19811025T020000 +RDATE:19821024T020000 +RDATE:19831023T020000 +RDATE:19841028T020000 +RDATE:19851027T020000 +RDATE:19861026T020000 +RDATE:19871025T020000 +RDATE:19881023T020000 +RDATE:19891029T020000 +RDATE:19901028T020000 +RDATE:19911027T020000 +RDATE:19921025T020000 +RDATE:19931024T020000 +RDATE:19941023T020000 +RDATE:19951022T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:BDST +DTSTART:19410504T020000 +RDATE:19410504T020000 +RDATE:19420405T020000 +RDATE:19430404T020000 +RDATE:19440402T020000 +RDATE:19450402T020000 +RDATE:19470413T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:BST +DTSTART:19410810T030000 +RDATE:19410810T030000 +RDATE:19420809T030000 +RDATE:19430815T030000 +RDATE:19440917T030000 +RDATE:19450715T030000 +RDATE:19470810T030000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:BST +DTSTART:19681027T000000 +RDATE:19681027T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:19960101T000000 +RDATE:19960101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Belgrade.ics b/mozilla/calendar/libical/zoneinfo/Europe/Belgrade.ics new file mode 100644 index 00000000000..424e9c80b86 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Belgrade.ics @@ -0,0 +1,76 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Belgrade +X-LIC-LOCATION:Europe/Belgrade +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19830327T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0122 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0122 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:18840101T000000 +RDATE:18840101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19410418T230000 +RDATE:19410418T230000 +RDATE:19421102T020000 +RDATE:19821127T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19430329T020000 +RDATE:19430329T020000 +RDATE:19440403T020000 +RDATE:19450508T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19431004T030000 +RDATE:19431004T030000 +RDATE:19441002T030000 +RDATE:19450916T030000 +RDATE:19830925T030000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Berlin.ics b/mozilla/calendar/libical/zoneinfo/Europe/Berlin.ics new file mode 100644 index 00000000000..ab248fa9e23 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Berlin.ics @@ -0,0 +1,110 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Berlin +X-LIC-LOCATION:Europe/Berlin +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19810329T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+005328 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+005328 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:18930401T000000 +RDATE:18930401T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19160430T230000 +RDATE:19160430T230000 +RDATE:19170416T020000 +RDATE:19180415T020000 +RDATE:19400401T020000 +RDATE:19430329T020000 +RDATE:19440403T020000 +RDATE:19450402T020000 +RDATE:19460414T020000 +RDATE:19470406T020000 +RDATE:19480418T020000 +RDATE:19490410T020000 +RDATE:19800406T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19161001T010000 +RDATE:19161001T010000 +RDATE:19170917T030000 +RDATE:19180916T030000 +RDATE:19421102T030000 +RDATE:19431004T030000 +RDATE:19441002T030000 +RDATE:19451118T030000 +RDATE:19461007T030000 +RDATE:19471005T030000 +RDATE:19481003T030000 +RDATE:19491002T030000 +RDATE:19800928T030000 +RDATE:19810927T030000 +RDATE:19820926T030000 +RDATE:19830925T030000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:CEMT +DTSTART:19450531T030000 +RDATE:19450531T030000 +RDATE:19470511T030000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19450923T030000 +RDATE:19450923T030000 +RDATE:19470629T030000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19800101T000000 +RDATE:19800101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Bratislava.ics b/mozilla/calendar/libical/zoneinfo/Europe/Bratislava.ics new file mode 100644 index 00000000000..bc80103dc0f --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Bratislava.ics @@ -0,0 +1,103 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Bratislava +X-LIC-LOCATION:Europe/Bratislava +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19810329T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+005744 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+005744 +TZOFFSETTO:+005744 +TZNAME:PMT +DTSTART:18500101T000000 +RDATE:18500101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+005744 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:18911001T000000 +RDATE:18911001T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19160430T230000 +RDATE:19160430T230000 +RDATE:19170416T020000 +RDATE:19180415T020000 +RDATE:19400401T020000 +RDATE:19430329T020000 +RDATE:19440403T020000 +RDATE:19450408T020000 +RDATE:19460506T020000 +RDATE:19470420T020000 +RDATE:19480418T020000 +RDATE:19490409T020000 +RDATE:19790401T020000 +RDATE:19800406T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19161001T010000 +RDATE:19161001T010000 +RDATE:19170917T030000 +RDATE:19180916T030000 +RDATE:19421102T030000 +RDATE:19431004T030000 +RDATE:19440917T030000 +RDATE:19451118T030000 +RDATE:19461006T030000 +RDATE:19471005T030000 +RDATE:19481003T030000 +RDATE:19491002T030000 +RDATE:19790930T030000 +RDATE:19800928T030000 +RDATE:19810927T030000 +RDATE:19820926T030000 +RDATE:19830925T030000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19790101T000000 +RDATE:19790101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Brussels.ics b/mozilla/calendar/libical/zoneinfo/Europe/Brussels.ics new file mode 100644 index 00000000000..3f5c4b23b8c --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Brussels.ics @@ -0,0 +1,165 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Brussels +X-LIC-LOCATION:Europe/Brussels +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19810329T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+001730 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+001730 +TZOFFSETTO:+001730 +TZNAME:BMT +DTSTART:18800101T000000 +RDATE:18800101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+001730 +TZOFFSETTO:+0000 +TZNAME:WET +DTSTART:18920501T120000 +RDATE:18920501T120000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19141108T000000 +RDATE:19141108T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19160501T000000 +RDATE:19160501T000000 +RDATE:19161001T010000 +RDATE:19400520T030000 +RDATE:19421102T020000 +RDATE:19440917T020000 +RDATE:19770101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19170416T020000 +RDATE:19170416T020000 +RDATE:19180415T020000 +RDATE:19430329T020000 +RDATE:19440403T020000 +RDATE:19450402T020000 +RDATE:19460519T020000 +RDATE:19770403T020000 +RDATE:19780402T020000 +RDATE:19790401T020000 +RDATE:19800406T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19170917T030000 +RDATE:19170917T030000 +RDATE:19180916T030000 +RDATE:19431004T030000 +RDATE:19440903T000000 +RDATE:19450916T030000 +RDATE:19461007T030000 +RDATE:19770925T030000 +RDATE:19781001T030000 +RDATE:19790930T030000 +RDATE:19800928T030000 +RDATE:19810927T030000 +RDATE:19820926T030000 +RDATE:19830925T030000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0000 +TZNAME:WET +DTSTART:19181111T120000 +RDATE:19181111T120000 +RDATE:19191005T000000 +RDATE:19201024T000000 +RDATE:19211026T000000 +RDATE:19221008T000000 +RDATE:19231007T000000 +RDATE:19241005T000000 +RDATE:19251004T000000 +RDATE:19261003T000000 +RDATE:19271002T000000 +RDATE:19281007T030000 +RDATE:19291006T030000 +RDATE:19301005T030000 +RDATE:19311004T030000 +RDATE:19321002T030000 +RDATE:19331008T030000 +RDATE:19341007T030000 +RDATE:19351006T030000 +RDATE:19361004T030000 +RDATE:19371003T030000 +RDATE:19381002T030000 +RDATE:19391119T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +TZNAME:WEST +DTSTART:19190301T230000 +RDATE:19190301T230000 +RDATE:19200214T230000 +RDATE:19210314T230000 +RDATE:19220325T230000 +RDATE:19230421T230000 +RDATE:19240329T230000 +RDATE:19250404T230000 +RDATE:19260417T230000 +RDATE:19270409T230000 +RDATE:19280414T230000 +RDATE:19290421T020000 +RDATE:19300413T020000 +RDATE:19310419T020000 +RDATE:19320403T020000 +RDATE:19330326T020000 +RDATE:19340408T020000 +RDATE:19350331T020000 +RDATE:19360419T020000 +RDATE:19370404T020000 +RDATE:19380327T020000 +RDATE:19390416T020000 +RDATE:19400225T020000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Bucharest.ics b/mozilla/calendar/libical/zoneinfo/Europe/Bucharest.ics new file mode 100644 index 00000000000..942fab9ce36 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Bucharest.ics @@ -0,0 +1,116 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Bucharest +X-LIC-LOCATION:Europe/Bucharest +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19970330T030000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19971026T040000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+014424 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+014424 +TZOFFSETTO:+014424 +TZNAME:BMT +DTSTART:18911001T000000 +RDATE:18911001T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+014424 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19310724T000000 +RDATE:19310724T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19320521T000000 +RDATE:19320521T000000 +RDATE:19330402T000000 +RDATE:19340408T000000 +RDATE:19350407T000000 +RDATE:19360405T000000 +RDATE:19370404T000000 +RDATE:19380403T000000 +RDATE:19390402T000000 +RDATE:19790527T000000 +RDATE:19800405T230000 +RDATE:19810329T020000 +RDATE:19820328T020000 +RDATE:19830327T020000 +RDATE:19840325T020000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +RDATE:19900325T020000 +RDATE:19910331T000000 +RDATE:19920329T000000 +RDATE:19930328T000000 +RDATE:19940327T000000 +RDATE:19950326T000000 +RDATE:19960331T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19321002T010000 +RDATE:19321002T010000 +RDATE:19331001T010000 +RDATE:19341007T010000 +RDATE:19351006T010000 +RDATE:19361004T010000 +RDATE:19371003T010000 +RDATE:19381002T010000 +RDATE:19391001T010000 +RDATE:19790930T000000 +RDATE:19800928T010000 +RDATE:19810927T030000 +RDATE:19820926T030000 +RDATE:19830925T030000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T010000 +RDATE:19920927T010000 +RDATE:19930926T010000 +RDATE:19940925T000000 +RDATE:19950924T000000 +RDATE:19961027T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19910101T000000 +RDATE:19910101T000000 +RDATE:19940101T000000 +RDATE:19970101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Budapest.ics b/mozilla/calendar/libical/zoneinfo/Europe/Budapest.ics new file mode 100644 index 00000000000..3a72403996f --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Budapest.ics @@ -0,0 +1,108 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Budapest +X-LIC-LOCATION:Europe/Budapest +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19810329T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+011620 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+011620 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:18901001T000000 +RDATE:18901001T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19160430T230000 +RDATE:19160430T230000 +RDATE:19170416T020000 +RDATE:19180401T030000 +RDATE:19190415T030000 +RDATE:19200405T030000 +RDATE:19430329T020000 +RDATE:19440403T020000 +RDATE:19450501T230000 +RDATE:19460331T020000 +RDATE:19470406T020000 +RDATE:19480404T020000 +RDATE:19490410T020000 +RDATE:19500417T020000 +RDATE:19540523T000000 +RDATE:19550523T000000 +RDATE:19560603T000000 +RDATE:19570602T010000 +RDATE:19800406T010000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19161001T010000 +RDATE:19161001T010000 +RDATE:19170917T030000 +RDATE:19180929T030000 +RDATE:19190915T030000 +RDATE:19200930T030000 +RDATE:19431004T030000 +RDATE:19441002T030000 +RDATE:19451103T000000 +RDATE:19461006T030000 +RDATE:19471005T030000 +RDATE:19481003T030000 +RDATE:19491002T030000 +RDATE:19501023T030000 +RDATE:19541003T000000 +RDATE:19551003T000000 +RDATE:19560930T000000 +RDATE:19570929T030000 +RDATE:19800928T030000 +RDATE:19810927T030000 +RDATE:19820926T030000 +RDATE:19830925T030000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19180101T000000 +RDATE:19180101T000000 +RDATE:19410406T020000 +RDATE:19421102T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Chisinau.ics b/mozilla/calendar/libical/zoneinfo/Europe/Chisinau.ics new file mode 100644 index 00000000000..d2e16f81abc --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Chisinau.ics @@ -0,0 +1,174 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Chisinau +X-LIC-LOCATION:Europe/Chisinau +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19970330T030000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19971026T040000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+015520 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+015520 +TZOFFSETTO:+0155 +TZNAME:CMT +DTSTART:18800101T000000 +RDATE:18800101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0155 +TZOFFSETTO:+014424 +TZNAME:BMT +DTSTART:19180215T000000 +RDATE:19180215T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+014424 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19310724T000000 +RDATE:19310724T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19320521T000000 +RDATE:19320521T000000 +RDATE:19330402T000000 +RDATE:19340408T000000 +RDATE:19350407T000000 +RDATE:19360405T000000 +RDATE:19370404T000000 +RDATE:19380403T000000 +RDATE:19390402T000000 +RDATE:19400815T000000 +RDATE:19910331T020000 +RDATE:19920329T000000 +RDATE:19930328T000000 +RDATE:19940327T000000 +RDATE:19950326T000000 +RDATE:19960331T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19321002T010000 +RDATE:19321002T010000 +RDATE:19331001T010000 +RDATE:19341007T010000 +RDATE:19351006T010000 +RDATE:19361004T010000 +RDATE:19371003T010000 +RDATE:19381002T010000 +RDATE:19391001T010000 +RDATE:19900506T000000 +RDATE:19910929T030000 +RDATE:19920927T000000 +RDATE:19930926T000000 +RDATE:19940925T000000 +RDATE:19950924T000000 +RDATE:19961027T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19410717T000000 +RDATE:19410717T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19421102T020000 +RDATE:19421102T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19430329T020000 +RDATE:19430329T020000 +RDATE:19440403T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19431004T030000 +RDATE:19431004T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:MSK +DTSTART:19440824T000000 +RDATE:19440824T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0300 +TZOFFSETTO:+0400 +TZNAME:MSD +DTSTART:19810401T000000 +RDATE:19810401T000000 +RDATE:19820401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0300 +TZNAME:MSK +DTSTART:19811001T000000 +RDATE:19811001T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0300 +TZNAME:MSK +DTSTART:19900101T000000 +RDATE:19900101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19910101T000000 +RDATE:19910101T000000 +RDATE:19920101T000000 +RDATE:19970101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Copenhagen.ics b/mozilla/calendar/libical/zoneinfo/Europe/Copenhagen.ics new file mode 100644 index 00000000000..e8cde97d162 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Copenhagen.ics @@ -0,0 +1,95 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Copenhagen +X-LIC-LOCATION:Europe/Copenhagen +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19810329T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+005020 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+005020 +TZOFFSETTO:+005020 +TZNAME:CMT +DTSTART:18900101T000000 +RDATE:18900101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+005020 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:18940401T000000 +RDATE:18940401T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19160514T230000 +RDATE:19160514T230000 +RDATE:19400515T000000 +RDATE:19430329T020000 +RDATE:19440403T020000 +RDATE:19450402T020000 +RDATE:19460501T020000 +RDATE:19470504T020000 +RDATE:19480509T020000 +RDATE:19800406T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19160930T230000 +RDATE:19160930T230000 +RDATE:19421102T030000 +RDATE:19431004T030000 +RDATE:19441002T030000 +RDATE:19450815T030000 +RDATE:19460901T030000 +RDATE:19470810T030000 +RDATE:19480808T030000 +RDATE:19800928T030000 +RDATE:19810927T030000 +RDATE:19820926T030000 +RDATE:19830925T030000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19800101T000000 +RDATE:19800101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Dublin.ics b/mozilla/calendar/libical/zoneinfo/Europe/Dublin.ics new file mode 100644 index 00000000000..48d116cdb7c --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Dublin.ics @@ -0,0 +1,208 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Dublin +X-LIC-LOCATION:Europe/Dublin +BEGIN:DAYLIGHT +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +TZNAME:IST +DTSTART:19810329T010000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:19961027T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-002521 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-002521 +TZOFFSETTO:-002521 +TZNAME:DMT +DTSTART:18800802T000000 +RDATE:18800802T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-002521 +TZOFFSETTO:+003439 +TZNAME:IST +DTSTART:19160521T020000 +RDATE:19160521T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+003439 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:19161001T030000 +RDATE:19161001T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +TZNAME:BST +DTSTART:19170408T020000 +RDATE:19170408T020000 +RDATE:19180324T020000 +RDATE:19190330T020000 +RDATE:19200328T020000 +RDATE:19210403T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:19170917T030000 +RDATE:19170917T030000 +RDATE:19180930T030000 +RDATE:19190929T030000 +RDATE:19201025T030000 +RDATE:19211003T030000 +RDATE:19221008T030000 +RDATE:19230916T030000 +RDATE:19240921T030000 +RDATE:19251004T030000 +RDATE:19261003T030000 +RDATE:19271002T030000 +RDATE:19281007T030000 +RDATE:19291006T030000 +RDATE:19301005T030000 +RDATE:19311004T030000 +RDATE:19321002T030000 +RDATE:19331008T030000 +RDATE:19341007T030000 +RDATE:19351006T030000 +RDATE:19361004T030000 +RDATE:19371003T030000 +RDATE:19381002T030000 +RDATE:19391119T030000 +RDATE:19461006T020000 +RDATE:19471102T020000 +RDATE:19491030T030000 +RDATE:19501022T030000 +RDATE:19511021T030000 +RDATE:19521026T030000 +RDATE:19531004T030000 +RDATE:19541003T030000 +RDATE:19551002T030000 +RDATE:19561007T030000 +RDATE:19571006T030000 +RDATE:19581005T030000 +RDATE:19591004T030000 +RDATE:19601002T030000 +RDATE:19611029T030000 +RDATE:19621028T030000 +RDATE:19631027T030000 +RDATE:19641025T030000 +RDATE:19651024T030000 +RDATE:19661023T030000 +RDATE:19671029T030000 +RDATE:19711031T030000 +RDATE:19721029T030000 +RDATE:19731028T030000 +RDATE:19741027T030000 +RDATE:19751026T030000 +RDATE:19761024T030000 +RDATE:19771023T030000 +RDATE:19781029T030000 +RDATE:19791028T030000 +RDATE:19801026T030000 +RDATE:19811025T020000 +RDATE:19821024T020000 +RDATE:19831023T020000 +RDATE:19841028T020000 +RDATE:19851027T020000 +RDATE:19861026T020000 +RDATE:19871025T020000 +RDATE:19881023T020000 +RDATE:19891029T020000 +RDATE:19901028T020000 +RDATE:19911027T020000 +RDATE:19921025T020000 +RDATE:19931024T020000 +RDATE:19941023T020000 +RDATE:19951022T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:19211206T000000 +RDATE:19211206T000000 +RDATE:19480418T020000 +RDATE:19481031T020000 +RDATE:19960101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +TZNAME:IST +DTSTART:19220326T020000 +RDATE:19220326T020000 +RDATE:19230422T020000 +RDATE:19240413T020000 +RDATE:19250419T020000 +RDATE:19260418T020000 +RDATE:19270410T020000 +RDATE:19280422T020000 +RDATE:19290421T020000 +RDATE:19300413T020000 +RDATE:19310419T020000 +RDATE:19320417T020000 +RDATE:19330409T020000 +RDATE:19340422T020000 +RDATE:19350414T020000 +RDATE:19360419T020000 +RDATE:19370418T020000 +RDATE:19380410T020000 +RDATE:19390416T020000 +RDATE:19400225T020000 +RDATE:19470316T020000 +RDATE:19490403T020000 +RDATE:19500416T020000 +RDATE:19510415T020000 +RDATE:19520420T020000 +RDATE:19530419T020000 +RDATE:19540411T020000 +RDATE:19550417T020000 +RDATE:19560422T020000 +RDATE:19570414T020000 +RDATE:19580420T020000 +RDATE:19590419T020000 +RDATE:19600410T020000 +RDATE:19610326T020000 +RDATE:19620325T020000 +RDATE:19630331T020000 +RDATE:19640322T020000 +RDATE:19650321T020000 +RDATE:19660320T020000 +RDATE:19670319T020000 +RDATE:19680218T020000 +RDATE:19720319T020000 +RDATE:19730318T020000 +RDATE:19740317T020000 +RDATE:19750316T020000 +RDATE:19760321T020000 +RDATE:19770320T020000 +RDATE:19780319T020000 +RDATE:19790318T020000 +RDATE:19800316T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:IST +DTSTART:19681027T000000 +RDATE:19681027T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Gibraltar.ics b/mozilla/calendar/libical/zoneinfo/Europe/Gibraltar.ics new file mode 100644 index 00000000000..9330fd03530 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Gibraltar.ics @@ -0,0 +1,178 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Gibraltar +X-LIC-LOCATION:Europe/Gibraltar +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19820328T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-002124 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-002124 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:18800802T000000 +RDATE:18800802T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +TZNAME:BST +DTSTART:19160521T020000 +RDATE:19160521T020000 +RDATE:19170408T020000 +RDATE:19180324T020000 +RDATE:19190330T020000 +RDATE:19200328T020000 +RDATE:19210403T020000 +RDATE:19220326T020000 +RDATE:19230422T020000 +RDATE:19240413T020000 +RDATE:19250419T020000 +RDATE:19260418T020000 +RDATE:19270410T020000 +RDATE:19280422T020000 +RDATE:19290421T020000 +RDATE:19300413T020000 +RDATE:19310419T020000 +RDATE:19320417T020000 +RDATE:19330409T020000 +RDATE:19340422T020000 +RDATE:19350414T020000 +RDATE:19360419T020000 +RDATE:19370418T020000 +RDATE:19380410T020000 +RDATE:19390416T020000 +RDATE:19400225T020000 +RDATE:19460414T020000 +RDATE:19470316T020000 +RDATE:19480314T020000 +RDATE:19490403T020000 +RDATE:19500416T020000 +RDATE:19510415T020000 +RDATE:19520420T020000 +RDATE:19530419T020000 +RDATE:19540411T020000 +RDATE:19550417T020000 +RDATE:19560422T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:19161001T030000 +RDATE:19161001T030000 +RDATE:19170917T030000 +RDATE:19180930T030000 +RDATE:19190929T030000 +RDATE:19201025T030000 +RDATE:19211003T030000 +RDATE:19221008T030000 +RDATE:19230916T030000 +RDATE:19240921T030000 +RDATE:19251004T030000 +RDATE:19261003T030000 +RDATE:19271002T030000 +RDATE:19281007T030000 +RDATE:19291006T030000 +RDATE:19301005T030000 +RDATE:19311004T030000 +RDATE:19321002T030000 +RDATE:19331008T030000 +RDATE:19341007T030000 +RDATE:19351006T030000 +RDATE:19361004T030000 +RDATE:19371003T030000 +RDATE:19381002T030000 +RDATE:19391119T030000 +RDATE:19451007T030000 +RDATE:19461006T030000 +RDATE:19471102T030000 +RDATE:19481031T030000 +RDATE:19491030T030000 +RDATE:19501022T030000 +RDATE:19511021T030000 +RDATE:19521026T030000 +RDATE:19531004T030000 +RDATE:19541003T030000 +RDATE:19551002T030000 +RDATE:19561007T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:BDST +DTSTART:19410504T020000 +RDATE:19410504T020000 +RDATE:19420405T020000 +RDATE:19430404T020000 +RDATE:19440402T020000 +RDATE:19450402T020000 +RDATE:19470413T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:BST +DTSTART:19410810T030000 +RDATE:19410810T030000 +RDATE:19420809T030000 +RDATE:19430815T030000 +RDATE:19440917T030000 +RDATE:19450715T030000 +RDATE:19470810T030000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19570414T020000 +RDATE:19570414T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19820101T000000 +RDATE:19820101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19820926T030000 +RDATE:19820926T030000 +RDATE:19830925T030000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Helsinki.ics b/mozilla/calendar/libical/zoneinfo/Europe/Helsinki.ics new file mode 100644 index 00000000000..6e30d326fc8 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Helsinki.ics @@ -0,0 +1,79 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Helsinki +X-LIC-LOCATION:Europe/Helsinki +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19810329T030000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19961027T040000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+013952 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+013952 +TZOFFSETTO:+013952 +TZNAME:HMT +DTSTART:18780531T000000 +RDATE:18780531T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+013952 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19210501T000000 +RDATE:19210501T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19420403T000000 +RDATE:19420403T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19421003T000000 +RDATE:19421003T000000 +RDATE:19810927T040000 +RDATE:19820926T040000 +RDATE:19830925T040000 +RDATE:19840930T040000 +RDATE:19850929T040000 +RDATE:19860928T040000 +RDATE:19870927T040000 +RDATE:19880925T040000 +RDATE:19890924T040000 +RDATE:19900930T040000 +RDATE:19910929T040000 +RDATE:19920927T040000 +RDATE:19930926T040000 +RDATE:19940925T040000 +RDATE:19950924T040000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19810329T020000 +RDATE:19810329T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Istanbul.ics b/mozilla/calendar/libical/zoneinfo/Europe/Istanbul.ics new file mode 100644 index 00000000000..ca7bec10c40 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Istanbul.ics @@ -0,0 +1,168 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Istanbul +X-LIC-LOCATION:Europe/Istanbul +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19910331T030000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19961027T040000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+015552 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+015552 +TZOFFSETTO:+015656 +TZNAME:IMT +DTSTART:18800101T000000 +RDATE:18800101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+015656 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19101001T000000 +RDATE:19101001T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19160501T000000 +RDATE:19160501T000000 +RDATE:19200328T000000 +RDATE:19210403T000000 +RDATE:19220326T000000 +RDATE:19240513T000000 +RDATE:19250501T000000 +RDATE:19400630T000000 +RDATE:19401201T000000 +RDATE:19420401T000000 +RDATE:19450402T000000 +RDATE:19460601T000000 +RDATE:19470420T000000 +RDATE:19480418T000000 +RDATE:19490410T000000 +RDATE:19500419T000000 +RDATE:19510422T000000 +RDATE:19620715T000000 +RDATE:19640515T000000 +RDATE:19700503T000000 +RDATE:19710502T000000 +RDATE:19720507T000000 +RDATE:19730603T010000 +RDATE:19740331T020000 +RDATE:19750330T000000 +RDATE:19760601T000000 +RDATE:19770403T000000 +RDATE:19780402T000000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +RDATE:19900325T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19161001T000000 +RDATE:19161001T000000 +RDATE:19201025T000000 +RDATE:19211003T000000 +RDATE:19221008T000000 +RDATE:19241001T000000 +RDATE:19251001T000000 +RDATE:19401005T000000 +RDATE:19410921T000000 +RDATE:19421101T000000 +RDATE:19451008T000000 +RDATE:19461001T000000 +RDATE:19471005T000000 +RDATE:19481003T000000 +RDATE:19491002T000000 +RDATE:19501008T000000 +RDATE:19511008T000000 +RDATE:19621008T000000 +RDATE:19641001T000000 +RDATE:19701004T000000 +RDATE:19711003T000000 +RDATE:19721008T000000 +RDATE:19731104T030000 +RDATE:19741103T050000 +RDATE:19751026T000000 +RDATE:19761031T000000 +RDATE:19771016T000000 +RDATE:19850928T000000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T040000 +RDATE:19920927T040000 +RDATE:19930926T040000 +RDATE:19940925T040000 +RDATE:19950924T040000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0300 +TZNAME:TRT +DTSTART:19781015T000000 +RDATE:19781015T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0300 +TZOFFSETTO:+0400 +TZNAME:TRST +DTSTART:19790401T030000 +RDATE:19790401T030000 +RDATE:19800406T030000 +RDATE:19810329T030000 +RDATE:19820328T030000 +RDATE:19830731T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0300 +TZNAME:TRT +DTSTART:19791015T000000 +RDATE:19791015T000000 +RDATE:19801013T000000 +RDATE:19811012T000000 +RDATE:19821011T000000 +RDATE:19831002T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0300 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19850420T000000 +RDATE:19850420T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19860101T000000 +RDATE:19860101T000000 +RDATE:19910101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Kaliningrad.ics b/mozilla/calendar/libical/zoneinfo/Europe/Kaliningrad.ics new file mode 100644 index 00000000000..e83fde1128f --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Kaliningrad.ics @@ -0,0 +1,145 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Kaliningrad +X-LIC-LOCATION:Europe/Kaliningrad +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19930328T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0122 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0122 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:18930401T000000 +RDATE:18930401T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19160430T230000 +RDATE:19160430T230000 +RDATE:19170416T020000 +RDATE:19180415T020000 +RDATE:19400401T020000 +RDATE:19430329T020000 +RDATE:19440403T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19161001T010000 +RDATE:19161001T010000 +RDATE:19170917T030000 +RDATE:19180916T030000 +RDATE:19421102T030000 +RDATE:19431004T030000 +RDATE:19441002T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CET +DTSTART:19450101T000000 +RDATE:19450101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:CEST +DTSTART:19450429T000000 +RDATE:19450429T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:CET +DTSTART:19451101T000000 +RDATE:19451101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:MSK +DTSTART:19460101T000000 +RDATE:19460101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0300 +TZOFFSETTO:+0400 +TZNAME:MSD +DTSTART:19810401T000000 +RDATE:19810401T000000 +RDATE:19820401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +RDATE:19900325T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0300 +TZNAME:MSK +DTSTART:19811001T000000 +RDATE:19811001T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0300 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19910331T020000 +RDATE:19910331T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19910929T030000 +RDATE:19910929T030000 +RDATE:19920926T230000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19920328T230000 +RDATE:19920328T230000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Kiev.ics b/mozilla/calendar/libical/zoneinfo/Europe/Kiev.ics new file mode 100644 index 00000000000..e8cc1635eae --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Kiev.ics @@ -0,0 +1,150 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Kiev +X-LIC-LOCATION:Europe/Kiev +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19950326T030000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19961027T040000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+020204 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+020204 +TZOFFSETTO:+020204 +TZNAME:KMT +DTSTART:18800101T000000 +RDATE:18800101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+020204 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19240502T000000 +RDATE:19240502T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:MSK +DTSTART:19300621T000000 +RDATE:19300621T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19410920T000000 +RDATE:19410920T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19421102T020000 +RDATE:19421102T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19430329T020000 +RDATE:19430329T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19431004T030000 +RDATE:19431004T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0300 +TZNAME:MSK +DTSTART:19431106T000000 +RDATE:19431106T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0300 +TZOFFSETTO:+0400 +TZNAME:MSD +DTSTART:19810401T000000 +RDATE:19810401T000000 +RDATE:19820401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0300 +TZNAME:MSK +DTSTART:19811001T000000 +RDATE:19811001T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0300 +TZNAME:MSK +DTSTART:19900101T000000 +RDATE:19900101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19900701T020000 +RDATE:19900701T020000 +RDATE:19920927T000000 +RDATE:19930926T000000 +RDATE:19940925T000000 +RDATE:19950924T040000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19920101T000000 +RDATE:19920101T000000 +RDATE:19950101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19920329T000000 +RDATE:19920329T000000 +RDATE:19930328T000000 +RDATE:19940327T000000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Lisbon.ics b/mozilla/calendar/libical/zoneinfo/Europe/Lisbon.ics new file mode 100644 index 00000000000..cd30d2b36b6 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Lisbon.ics @@ -0,0 +1,235 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Lisbon +X-LIC-LOCATION:Europe/Lisbon +BEGIN:DAYLIGHT +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +TZNAME:WEST +DTSTART:19970330T010000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0000 +TZNAME:WET +DTSTART:19971026T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-003632 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-003632 +TZOFFSETTO:-003632 +TZNAME:LMT +DTSTART:18840101T000000 +RDATE:18840101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-003632 +TZOFFSETTO:+0000 +TZNAME:WET +DTSTART:19110524T000000 +RDATE:19110524T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +TZNAME:WEST +DTSTART:19160617T230000 +RDATE:19160617T230000 +RDATE:19170228T230000 +RDATE:19180301T230000 +RDATE:19190228T230000 +RDATE:19200229T230000 +RDATE:19210228T230000 +RDATE:19240416T230000 +RDATE:19260417T230000 +RDATE:19270409T230000 +RDATE:19280414T230000 +RDATE:19290420T230000 +RDATE:19310418T230000 +RDATE:19320402T230000 +RDATE:19340407T230000 +RDATE:19350330T230000 +RDATE:19360418T230000 +RDATE:19370403T230000 +RDATE:19380326T230000 +RDATE:19390415T230000 +RDATE:19400224T230000 +RDATE:19410405T230000 +RDATE:19420314T230000 +RDATE:19430313T230000 +RDATE:19440311T230000 +RDATE:19450310T230000 +RDATE:19460406T230000 +RDATE:19470406T020000 +RDATE:19480404T020000 +RDATE:19490403T020000 +RDATE:19510401T020000 +RDATE:19520406T020000 +RDATE:19530405T020000 +RDATE:19540404T020000 +RDATE:19550403T020000 +RDATE:19560401T020000 +RDATE:19570407T020000 +RDATE:19580406T020000 +RDATE:19590405T020000 +RDATE:19600403T020000 +RDATE:19610402T020000 +RDATE:19620401T020000 +RDATE:19630407T020000 +RDATE:19640405T020000 +RDATE:19650404T020000 +RDATE:19770327T000000 +RDATE:19780402T000000 +RDATE:19790401T000000 +RDATE:19800330T000000 +RDATE:19810329T010000 +RDATE:19820328T010000 +RDATE:19830327T020000 +RDATE:19840325T010000 +RDATE:19850331T010000 +RDATE:19860330T010000 +RDATE:19870329T010000 +RDATE:19880327T010000 +RDATE:19890326T010000 +RDATE:19900325T010000 +RDATE:19910331T010000 +RDATE:19920329T010000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0000 +TZNAME:WET +DTSTART:19161101T010000 +RDATE:19161101T010000 +RDATE:19171015T000000 +RDATE:19181015T000000 +RDATE:19191015T000000 +RDATE:19201015T000000 +RDATE:19211015T000000 +RDATE:19241015T000000 +RDATE:19261003T000000 +RDATE:19271002T000000 +RDATE:19281007T000000 +RDATE:19291006T000000 +RDATE:19311004T000000 +RDATE:19321002T000000 +RDATE:19341007T000000 +RDATE:19351006T000000 +RDATE:19361004T000000 +RDATE:19371003T000000 +RDATE:19381002T000000 +RDATE:19391119T000000 +RDATE:19401006T000000 +RDATE:19411006T000000 +RDATE:19421025T000000 +RDATE:19431031T000000 +RDATE:19441029T000000 +RDATE:19451028T000000 +RDATE:19461006T000000 +RDATE:19471005T030000 +RDATE:19481003T030000 +RDATE:19491002T030000 +RDATE:19511007T030000 +RDATE:19521005T030000 +RDATE:19531004T030000 +RDATE:19541003T030000 +RDATE:19551002T030000 +RDATE:19561007T030000 +RDATE:19571006T030000 +RDATE:19581005T030000 +RDATE:19591004T030000 +RDATE:19601002T030000 +RDATE:19611001T030000 +RDATE:19621007T030000 +RDATE:19631006T030000 +RDATE:19641004T030000 +RDATE:19651003T030000 +RDATE:19760926T010000 +RDATE:19770925T010000 +RDATE:19781001T010000 +RDATE:19790930T020000 +RDATE:19800928T020000 +RDATE:19810927T020000 +RDATE:19820926T020000 +RDATE:19830925T020000 +RDATE:19840930T020000 +RDATE:19850929T020000 +RDATE:19860928T020000 +RDATE:19870927T020000 +RDATE:19880925T020000 +RDATE:19890924T020000 +RDATE:19900930T020000 +RDATE:19910929T020000 +RDATE:19960331T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:WEMT +DTSTART:19420425T230000 +RDATE:19420425T230000 +RDATE:19430417T230000 +RDATE:19440422T230000 +RDATE:19450421T230000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:WEST +DTSTART:19420816T000000 +RDATE:19420816T000000 +RDATE:19430829T000000 +RDATE:19440827T000000 +RDATE:19450826T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19660403T020000 +RDATE:19660403T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19920927T020000 +RDATE:19920927T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19930328T020000 +RDATE:19930328T020000 +RDATE:19940327T020000 +RDATE:19950326T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19930926T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0000 +TZNAME:WET +DTSTART:19961027T010000 +RDATE:19961027T010000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Ljubljana.ics b/mozilla/calendar/libical/zoneinfo/Europe/Ljubljana.ics new file mode 100644 index 00000000000..3941a350e70 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Ljubljana.ics @@ -0,0 +1,76 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Ljubljana +X-LIC-LOCATION:Europe/Ljubljana +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19830327T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0122 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0122 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:18840101T000000 +RDATE:18840101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19410418T230000 +RDATE:19410418T230000 +RDATE:19421102T020000 +RDATE:19821127T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19430329T020000 +RDATE:19430329T020000 +RDATE:19440403T020000 +RDATE:19450508T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19431004T030000 +RDATE:19431004T030000 +RDATE:19441002T030000 +RDATE:19450916T030000 +RDATE:19830925T030000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/London.ics b/mozilla/calendar/libical/zoneinfo/Europe/London.ics new file mode 100644 index 00000000000..fcc8dc9dfcf --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/London.ics @@ -0,0 +1,215 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/London +X-LIC-LOCATION:Europe/London +BEGIN:DAYLIGHT +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +TZNAME:BST +DTSTART:19810329T010000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:19961027T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-000115 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-000115 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:18471201T000000 +RDATE:18471201T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +TZNAME:BST +DTSTART:19160521T020000 +RDATE:19160521T020000 +RDATE:19170408T020000 +RDATE:19180324T020000 +RDATE:19190330T020000 +RDATE:19200328T020000 +RDATE:19210403T020000 +RDATE:19220326T020000 +RDATE:19230422T020000 +RDATE:19240413T020000 +RDATE:19250419T020000 +RDATE:19260418T020000 +RDATE:19270410T020000 +RDATE:19280422T020000 +RDATE:19290421T020000 +RDATE:19300413T020000 +RDATE:19310419T020000 +RDATE:19320417T020000 +RDATE:19330409T020000 +RDATE:19340422T020000 +RDATE:19350414T020000 +RDATE:19360419T020000 +RDATE:19370418T020000 +RDATE:19380410T020000 +RDATE:19390416T020000 +RDATE:19400225T020000 +RDATE:19460414T020000 +RDATE:19470316T020000 +RDATE:19480314T020000 +RDATE:19490403T020000 +RDATE:19500416T020000 +RDATE:19510415T020000 +RDATE:19520420T020000 +RDATE:19530419T020000 +RDATE:19540411T020000 +RDATE:19550417T020000 +RDATE:19560422T020000 +RDATE:19570414T020000 +RDATE:19580420T020000 +RDATE:19590419T020000 +RDATE:19600410T020000 +RDATE:19610326T020000 +RDATE:19620325T020000 +RDATE:19630331T020000 +RDATE:19640322T020000 +RDATE:19650321T020000 +RDATE:19660320T020000 +RDATE:19670319T020000 +RDATE:19680218T020000 +RDATE:19720319T020000 +RDATE:19730318T020000 +RDATE:19740317T020000 +RDATE:19750316T020000 +RDATE:19760321T020000 +RDATE:19770320T020000 +RDATE:19780319T020000 +RDATE:19790318T020000 +RDATE:19800316T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:19161001T030000 +RDATE:19161001T030000 +RDATE:19170917T030000 +RDATE:19180930T030000 +RDATE:19190929T030000 +RDATE:19201025T030000 +RDATE:19211003T030000 +RDATE:19221008T030000 +RDATE:19230916T030000 +RDATE:19240921T030000 +RDATE:19251004T030000 +RDATE:19261003T030000 +RDATE:19271002T030000 +RDATE:19281007T030000 +RDATE:19291006T030000 +RDATE:19301005T030000 +RDATE:19311004T030000 +RDATE:19321002T030000 +RDATE:19331008T030000 +RDATE:19341007T030000 +RDATE:19351006T030000 +RDATE:19361004T030000 +RDATE:19371003T030000 +RDATE:19381002T030000 +RDATE:19391119T030000 +RDATE:19451007T030000 +RDATE:19461006T030000 +RDATE:19471102T030000 +RDATE:19481031T030000 +RDATE:19491030T030000 +RDATE:19501022T030000 +RDATE:19511021T030000 +RDATE:19521026T030000 +RDATE:19531004T030000 +RDATE:19541003T030000 +RDATE:19551002T030000 +RDATE:19561007T030000 +RDATE:19571006T030000 +RDATE:19581005T030000 +RDATE:19591004T030000 +RDATE:19601002T030000 +RDATE:19611029T030000 +RDATE:19621028T030000 +RDATE:19631027T030000 +RDATE:19641025T030000 +RDATE:19651024T030000 +RDATE:19661023T030000 +RDATE:19671029T030000 +RDATE:19711031T030000 +RDATE:19721029T030000 +RDATE:19731028T030000 +RDATE:19741027T030000 +RDATE:19751026T030000 +RDATE:19761024T030000 +RDATE:19771023T030000 +RDATE:19781029T030000 +RDATE:19791028T030000 +RDATE:19801026T030000 +RDATE:19811025T020000 +RDATE:19821024T020000 +RDATE:19831023T020000 +RDATE:19841028T020000 +RDATE:19851027T020000 +RDATE:19861026T020000 +RDATE:19871025T020000 +RDATE:19881023T020000 +RDATE:19891029T020000 +RDATE:19901028T020000 +RDATE:19911027T020000 +RDATE:19921025T020000 +RDATE:19931024T020000 +RDATE:19941023T020000 +RDATE:19951022T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:BDST +DTSTART:19410504T020000 +RDATE:19410504T020000 +RDATE:19420405T020000 +RDATE:19430404T020000 +RDATE:19440402T020000 +RDATE:19450402T020000 +RDATE:19470413T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:BST +DTSTART:19410810T030000 +RDATE:19410810T030000 +RDATE:19420809T030000 +RDATE:19430815T030000 +RDATE:19440917T030000 +RDATE:19450715T030000 +RDATE:19470810T030000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:BST +DTSTART:19681027T000000 +RDATE:19681027T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0000 +TZNAME:GMT +DTSTART:19960101T000000 +RDATE:19960101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Luxembourg.ics b/mozilla/calendar/libical/zoneinfo/Europe/Luxembourg.ics new file mode 100644 index 00000000000..eeea81fddd1 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Luxembourg.ics @@ -0,0 +1,168 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Luxembourg +X-LIC-LOCATION:Europe/Luxembourg +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19810329T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+002436 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+002436 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19040601T000000 +RDATE:19040601T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19160514T230000 +RDATE:19160514T230000 +RDATE:19170428T230000 +RDATE:19180415T020000 +RDATE:19450402T020000 +RDATE:19460519T020000 +RDATE:19770403T020000 +RDATE:19780402T020000 +RDATE:19790401T020000 +RDATE:19800406T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19161001T010000 +RDATE:19161001T010000 +RDATE:19170917T010000 +RDATE:19180916T030000 +RDATE:19440918T030000 +RDATE:19450916T030000 +RDATE:19461007T030000 +RDATE:19770925T030000 +RDATE:19781001T030000 +RDATE:19790930T030000 +RDATE:19800928T030000 +RDATE:19810927T030000 +RDATE:19820926T030000 +RDATE:19830925T030000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0000 +TZNAME:WET +DTSTART:19181125T000000 +RDATE:19181125T000000 +RDATE:19191005T030000 +RDATE:19201024T020000 +RDATE:19211026T020000 +RDATE:19221008T010000 +RDATE:19231007T020000 +RDATE:19241005T010000 +RDATE:19251004T010000 +RDATE:19261003T010000 +RDATE:19271002T010000 +RDATE:19281007T010000 +RDATE:19291006T030000 +RDATE:19301005T030000 +RDATE:19311004T030000 +RDATE:19321002T030000 +RDATE:19331008T030000 +RDATE:19341007T030000 +RDATE:19351006T030000 +RDATE:19361004T030000 +RDATE:19371003T030000 +RDATE:19381002T030000 +RDATE:19391119T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +TZNAME:WEST +DTSTART:19190301T230000 +RDATE:19190301T230000 +RDATE:19200214T230000 +RDATE:19210314T230000 +RDATE:19220325T230000 +RDATE:19230421T230000 +RDATE:19240329T230000 +RDATE:19250405T230000 +RDATE:19260417T230000 +RDATE:19270409T230000 +RDATE:19280414T230000 +RDATE:19290420T230000 +RDATE:19300413T020000 +RDATE:19310419T020000 +RDATE:19320403T020000 +RDATE:19330326T020000 +RDATE:19340408T020000 +RDATE:19350331T020000 +RDATE:19360419T020000 +RDATE:19370404T020000 +RDATE:19380327T020000 +RDATE:19390416T020000 +RDATE:19400225T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:WET +DTSTART:19400514T030000 +RDATE:19400514T030000 +RDATE:19421102T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:WEST +DTSTART:19430329T020000 +RDATE:19430329T020000 +RDATE:19440403T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:WET +DTSTART:19431004T030000 +RDATE:19431004T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19770101T000000 +RDATE:19770101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Madrid.ics b/mozilla/calendar/libical/zoneinfo/Europe/Madrid.ics new file mode 100644 index 00000000000..1c48c5b0a9f --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Madrid.ics @@ -0,0 +1,143 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Madrid +X-LIC-LOCATION:Europe/Madrid +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19810329T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-001444 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-001444 +TZOFFSETTO:+0000 +TZNAME:WET +DTSTART:19010101T000000 +RDATE:19010101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +TZNAME:WEST +DTSTART:19170505T230000 +RDATE:19170505T230000 +RDATE:19180415T230000 +RDATE:19190405T230000 +RDATE:19240416T230000 +RDATE:19260417T230000 +RDATE:19270409T230000 +RDATE:19280414T230000 +RDATE:19290420T230000 +RDATE:19370522T230000 +RDATE:19380322T230000 +RDATE:19390415T230000 +RDATE:19400316T230000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0000 +TZNAME:WET +DTSTART:19171007T000000 +RDATE:19171007T000000 +RDATE:19181007T000000 +RDATE:19191007T000000 +RDATE:19241005T000000 +RDATE:19261003T000000 +RDATE:19271002T000000 +RDATE:19281007T000000 +RDATE:19291006T000000 +RDATE:19371003T000000 +RDATE:19381002T000000 +RDATE:19391008T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:WEMT +DTSTART:19420502T230000 +RDATE:19420502T230000 +RDATE:19430417T230000 +RDATE:19440415T230000 +RDATE:19450414T230000 +RDATE:19460413T230000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:WEST +DTSTART:19420902T000000 +RDATE:19420902T000000 +RDATE:19431004T000000 +RDATE:19441011T000000 +RDATE:19450930T010000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19460930T000000 +RDATE:19460930T000000 +RDATE:19490930T010000 +RDATE:19741006T010000 +RDATE:19751005T010000 +RDATE:19760926T010000 +RDATE:19770925T010000 +RDATE:19781001T010000 +RDATE:19790930T030000 +RDATE:19800928T030000 +RDATE:19810927T030000 +RDATE:19820926T030000 +RDATE:19830925T030000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19490430T230000 +RDATE:19490430T230000 +RDATE:19740413T230000 +RDATE:19750419T230000 +RDATE:19760327T230000 +RDATE:19770402T230000 +RDATE:19780402T230000 +RDATE:19790401T020000 +RDATE:19800406T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19790101T000000 +RDATE:19790101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Malta.ics b/mozilla/calendar/libical/zoneinfo/Europe/Malta.ics new file mode 100644 index 00000000000..c13a8f45f8a --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Malta.ics @@ -0,0 +1,124 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Malta +X-LIC-LOCATION:Europe/Malta +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19810329T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+005804 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+005804 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:18931102T000000 +RDATE:18931102T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19160603T000000 +RDATE:19160603T000000 +RDATE:19170401T000000 +RDATE:19180310T000000 +RDATE:19190302T000000 +RDATE:19200321T000000 +RDATE:19400615T000000 +RDATE:19430329T020000 +RDATE:19440403T020000 +RDATE:19450402T020000 +RDATE:19460317T020000 +RDATE:19470316T000000 +RDATE:19480229T020000 +RDATE:19660522T000000 +RDATE:19670528T000000 +RDATE:19680526T000000 +RDATE:19690601T000000 +RDATE:19700531T000000 +RDATE:19710523T000000 +RDATE:19720528T000000 +RDATE:19730331T000000 +RDATE:19740421T000000 +RDATE:19750420T020000 +RDATE:19760418T020000 +RDATE:19770417T020000 +RDATE:19780416T020000 +RDATE:19790415T020000 +RDATE:19800331T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19161001T010000 +RDATE:19161001T010000 +RDATE:19170930T010000 +RDATE:19181006T010000 +RDATE:19191005T010000 +RDATE:19200919T010000 +RDATE:19421102T030000 +RDATE:19431004T030000 +RDATE:19441002T030000 +RDATE:19450915T010000 +RDATE:19461006T030000 +RDATE:19471005T010000 +RDATE:19481003T030000 +RDATE:19660925T000000 +RDATE:19670924T000000 +RDATE:19680922T000000 +RDATE:19690928T000000 +RDATE:19700927T000000 +RDATE:19710926T010000 +RDATE:19721001T000000 +RDATE:19730929T010000 +RDATE:19740916T010000 +RDATE:19750921T020000 +RDATE:19760919T020000 +RDATE:19770918T020000 +RDATE:19780917T020000 +RDATE:19790916T020000 +RDATE:19800921T020000 +RDATE:19810927T030000 +RDATE:19820926T030000 +RDATE:19830925T030000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19810101T000000 +RDATE:19810101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Minsk.ics b/mozilla/calendar/libical/zoneinfo/Europe/Minsk.ics new file mode 100644 index 00000000000..f025ace2042 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Minsk.ics @@ -0,0 +1,142 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Minsk +X-LIC-LOCATION:Europe/Minsk +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19930328T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+015016 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+015016 +TZOFFSETTO:+0150 +TZNAME:MMT +DTSTART:18800101T000000 +RDATE:18800101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0150 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19240502T000000 +RDATE:19240502T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:MSK +DTSTART:19300621T000000 +RDATE:19300621T000000 +RDATE:19440703T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19410628T000000 +RDATE:19410628T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19421102T020000 +RDATE:19421102T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19430329T020000 +RDATE:19430329T020000 +RDATE:19440403T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19431004T030000 +RDATE:19431004T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0300 +TZOFFSETTO:+0400 +TZNAME:MSD +DTSTART:19810401T000000 +RDATE:19810401T000000 +RDATE:19820401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0300 +TZNAME:MSK +DTSTART:19811001T000000 +RDATE:19811001T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0300 +TZNAME:MSK +DTSTART:19900101T000000 +RDATE:19900101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0300 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19910331T020000 +RDATE:19910331T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19910929T030000 +RDATE:19910929T030000 +RDATE:19920927T010000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19920329T000000 +RDATE:19920329T000000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Monaco.ics b/mozilla/calendar/libical/zoneinfo/Europe/Monaco.ics new file mode 100644 index 00000000000..0b8051ea8d2 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Monaco.ics @@ -0,0 +1,170 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Monaco +X-LIC-LOCATION:Europe/Monaco +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19810329T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+002932 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+002932 +TZOFFSETTO:+000921 +TZNAME:PMT +DTSTART:18910315T000000 +RDATE:18910315T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+000921 +TZOFFSETTO:+0000 +TZNAME:WET +DTSTART:19110311T000000 +RDATE:19110311T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +TZNAME:WEST +DTSTART:19160614T230000 +RDATE:19160614T230000 +RDATE:19170324T230000 +RDATE:19180309T230000 +RDATE:19190301T230000 +RDATE:19200214T230000 +RDATE:19210314T230000 +RDATE:19220325T230000 +RDATE:19230526T230000 +RDATE:19240329T230000 +RDATE:19250404T230000 +RDATE:19260417T230000 +RDATE:19270409T230000 +RDATE:19280414T230000 +RDATE:19290420T230000 +RDATE:19300412T230000 +RDATE:19310418T230000 +RDATE:19320402T230000 +RDATE:19330325T230000 +RDATE:19340407T230000 +RDATE:19350330T230000 +RDATE:19360418T230000 +RDATE:19370403T230000 +RDATE:19380326T230000 +RDATE:19390415T230000 +RDATE:19400225T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0000 +TZNAME:WET +DTSTART:19161002T000000 +RDATE:19161002T000000 +RDATE:19171008T000000 +RDATE:19181007T000000 +RDATE:19191006T000000 +RDATE:19201024T000000 +RDATE:19211026T000000 +RDATE:19221008T000000 +RDATE:19231007T000000 +RDATE:19241005T000000 +RDATE:19251004T000000 +RDATE:19261003T000000 +RDATE:19271002T000000 +RDATE:19281007T000000 +RDATE:19291006T000000 +RDATE:19301005T000000 +RDATE:19311004T000000 +RDATE:19321002T000000 +RDATE:19331008T000000 +RDATE:19341007T000000 +RDATE:19351006T000000 +RDATE:19361004T000000 +RDATE:19371003T000000 +RDATE:19381002T000000 +RDATE:19391119T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:WEMT +DTSTART:19410505T000000 +RDATE:19410505T000000 +RDATE:19420309T000000 +RDATE:19430329T020000 +RDATE:19440403T020000 +RDATE:19450402T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:WEST +DTSTART:19411006T000000 +RDATE:19411006T000000 +RDATE:19421102T030000 +RDATE:19431004T030000 +RDATE:19441008T010000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19450916T030000 +RDATE:19450916T030000 +RDATE:19760926T010000 +RDATE:19770925T030000 +RDATE:19781001T030000 +RDATE:19790930T030000 +RDATE:19800928T030000 +RDATE:19810927T030000 +RDATE:19820926T030000 +RDATE:19830925T030000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19760328T010000 +RDATE:19760328T010000 +RDATE:19770403T020000 +RDATE:19780402T020000 +RDATE:19790401T020000 +RDATE:19800406T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19770101T000000 +RDATE:19770101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Moscow.ics b/mozilla/calendar/libical/zoneinfo/Europe/Moscow.ics new file mode 100644 index 00000000000..512c4aedc5c --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Moscow.ics @@ -0,0 +1,162 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Moscow +X-LIC-LOCATION:Europe/Moscow +BEGIN:DAYLIGHT +TZOFFSETFROM:+0300 +TZOFFSETTO:+0400 +TZNAME:MSD +DTSTART:19930328T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0300 +TZNAME:MSK +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+023020 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+023020 +TZOFFSETTO:+0230 +TZNAME:MMT +DTSTART:18800101T000000 +RDATE:18800101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0230 +TZOFFSETTO:+023048 +TZNAME:MMT +DTSTART:19160703T000000 +RDATE:19160703T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+023048 +TZOFFSETTO:+033048 +TZNAME:MST +DTSTART:19170701T230000 +RDATE:19170701T230000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+033048 +TZOFFSETTO:+023048 +TZNAME:MMT +DTSTART:19171228T000000 +RDATE:19171228T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+023048 +TZOFFSETTO:+043048 +TZNAME:MDST +DTSTART:19180531T220000 +RDATE:19180531T220000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:+043048 +TZOFFSETTO:+033048 +TZNAME:MST +DTSTART:19180916T010000 +RDATE:19180916T010000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:+033048 +TZOFFSETTO:+043048 +TZNAME:MDST +DTSTART:19190531T230000 +RDATE:19190531T230000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:+043048 +TZOFFSETTO:+0400 +TZNAME:MSD +DTSTART:19190701T020000 +RDATE:19190701T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0300 +TZNAME:MSK +DTSTART:19190816T000000 +RDATE:19190816T000000 +RDATE:19211001T000000 +RDATE:19811001T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19920926T230000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0300 +TZOFFSETTO:+0400 +TZNAME:MSD +DTSTART:19210214T230000 +RDATE:19210214T230000 +RDATE:19810401T000000 +RDATE:19820401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +RDATE:19900325T020000 +RDATE:19920328T230000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:+0400 +TZOFFSETTO:+0500 +TZNAME:MSD +DTSTART:19210320T230000 +RDATE:19210320T230000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:+0500 +TZOFFSETTO:+0400 +TZNAME:MSD +DTSTART:19210901T000000 +RDATE:19210901T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19221001T000000 +RDATE:19221001T000000 +RDATE:19910929T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:MSK +DTSTART:19300621T000000 +RDATE:19300621T000000 +RDATE:19920119T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0300 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19910331T020000 +RDATE:19910331T020000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Nicosia.ics b/mozilla/calendar/libical/zoneinfo/Europe/Nicosia.ics new file mode 100644 index 00000000000..58673071241 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Nicosia.ics @@ -0,0 +1,103 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Nicosia +X-LIC-LOCATION:Europe/Nicosia +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19990328T030000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19991031T040000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+021328 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+021328 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19211114T000000 +RDATE:19211114T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19750413T000000 +RDATE:19750413T000000 +RDATE:19760515T000000 +RDATE:19770403T000000 +RDATE:19780402T000000 +RDATE:19790401T000000 +RDATE:19800406T000000 +RDATE:19810329T000000 +RDATE:19820328T000000 +RDATE:19830327T000000 +RDATE:19840325T000000 +RDATE:19850331T000000 +RDATE:19860330T000000 +RDATE:19870329T000000 +RDATE:19880327T000000 +RDATE:19890326T000000 +RDATE:19900325T000000 +RDATE:19910331T000000 +RDATE:19920329T000000 +RDATE:19930328T000000 +RDATE:19940327T000000 +RDATE:19950326T000000 +RDATE:19960331T000000 +RDATE:19970330T000000 +RDATE:19980329T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19751012T000000 +RDATE:19751012T000000 +RDATE:19761011T000000 +RDATE:19770925T000000 +RDATE:19781002T000000 +RDATE:19790930T000000 +RDATE:19800928T000000 +RDATE:19810927T000000 +RDATE:19820926T000000 +RDATE:19830925T000000 +RDATE:19840930T000000 +RDATE:19850929T000000 +RDATE:19860928T000000 +RDATE:19870927T000000 +RDATE:19880925T000000 +RDATE:19890924T000000 +RDATE:19900930T000000 +RDATE:19910929T000000 +RDATE:19920927T000000 +RDATE:19930926T000000 +RDATE:19940925T000000 +RDATE:19950924T000000 +RDATE:19960929T000000 +RDATE:19970928T000000 +RDATE:19980901T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19981025T030000 +RDATE:19981025T030000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Oslo.ics b/mozilla/calendar/libical/zoneinfo/Europe/Oslo.ics new file mode 100644 index 00000000000..8c94de65ac5 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Oslo.ics @@ -0,0 +1,96 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Oslo +X-LIC-LOCATION:Europe/Oslo +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19810329T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0043 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0043 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:18950101T000000 +RDATE:18950101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19160522T010000 +RDATE:19160522T010000 +RDATE:19430329T020000 +RDATE:19440403T020000 +RDATE:19450402T020000 +RDATE:19590315T020000 +RDATE:19600320T020000 +RDATE:19610319T020000 +RDATE:19620318T020000 +RDATE:19630317T020000 +RDATE:19640315T020000 +RDATE:19650425T020000 +RDATE:19800406T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19160930T000000 +RDATE:19160930T000000 +RDATE:19431004T030000 +RDATE:19441002T030000 +RDATE:19451001T030000 +RDATE:19590920T030000 +RDATE:19600918T030000 +RDATE:19610917T030000 +RDATE:19620916T030000 +RDATE:19630915T030000 +RDATE:19640920T030000 +RDATE:19650919T030000 +RDATE:19800928T030000 +RDATE:19810927T030000 +RDATE:19820926T030000 +RDATE:19830925T030000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19400810T230000 +RDATE:19400810T230000 +RDATE:19421102T020000 +RDATE:19800101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Paris.ics b/mozilla/calendar/libical/zoneinfo/Europe/Paris.ics new file mode 100644 index 00000000000..d644971f6a6 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Paris.ics @@ -0,0 +1,169 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Paris +X-LIC-LOCATION:Europe/Paris +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19810329T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+000921 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+000921 +TZOFFSETTO:+000921 +TZNAME:PMT +DTSTART:18910315T000100 +RDATE:18910315T000100 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+000921 +TZOFFSETTO:+0000 +TZNAME:WET +DTSTART:19110311T000100 +RDATE:19110311T000100 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0000 +TZOFFSETTO:+0100 +TZNAME:WEST +DTSTART:19160614T230000 +RDATE:19160614T230000 +RDATE:19170324T230000 +RDATE:19180309T230000 +RDATE:19190301T230000 +RDATE:19200214T230000 +RDATE:19210314T230000 +RDATE:19220325T230000 +RDATE:19230526T230000 +RDATE:19240329T230000 +RDATE:19250404T230000 +RDATE:19260417T230000 +RDATE:19270409T230000 +RDATE:19280414T230000 +RDATE:19290420T230000 +RDATE:19300412T230000 +RDATE:19310418T230000 +RDATE:19320402T230000 +RDATE:19330325T230000 +RDATE:19340407T230000 +RDATE:19350330T230000 +RDATE:19360418T230000 +RDATE:19370403T230000 +RDATE:19380326T230000 +RDATE:19390415T230000 +RDATE:19400225T020000 +RDATE:19441008T010000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0000 +TZNAME:WET +DTSTART:19161002T000000 +RDATE:19161002T000000 +RDATE:19171008T000000 +RDATE:19181007T000000 +RDATE:19191006T000000 +RDATE:19201024T000000 +RDATE:19211026T000000 +RDATE:19221008T000000 +RDATE:19231007T000000 +RDATE:19241005T000000 +RDATE:19251004T000000 +RDATE:19261003T000000 +RDATE:19271002T000000 +RDATE:19281007T000000 +RDATE:19291006T000000 +RDATE:19301005T000000 +RDATE:19311004T000000 +RDATE:19321002T000000 +RDATE:19331008T000000 +RDATE:19341007T000000 +RDATE:19351006T000000 +RDATE:19361004T000000 +RDATE:19371003T000000 +RDATE:19381002T000000 +RDATE:19391119T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19400614T230000 +RDATE:19400614T230000 +RDATE:19421102T020000 +RDATE:19770101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19430329T020000 +RDATE:19430329T020000 +RDATE:19440403T020000 +RDATE:19760328T010000 +RDATE:19770403T020000 +RDATE:19780402T020000 +RDATE:19790401T020000 +RDATE:19800406T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19431004T030000 +RDATE:19431004T030000 +RDATE:19450916T030000 +RDATE:19760926T010000 +RDATE:19770925T030000 +RDATE:19781001T030000 +RDATE:19790930T030000 +RDATE:19800928T030000 +RDATE:19810927T030000 +RDATE:19820926T030000 +RDATE:19830925T030000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0000 +TZNAME:WET +DTSTART:19440825T000000 +RDATE:19440825T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:WEMT +DTSTART:19450402T020000 +RDATE:19450402T020000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Prague.ics b/mozilla/calendar/libical/zoneinfo/Europe/Prague.ics new file mode 100644 index 00000000000..2f414a1094e --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Prague.ics @@ -0,0 +1,103 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Prague +X-LIC-LOCATION:Europe/Prague +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19810329T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+005744 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+005744 +TZOFFSETTO:+005744 +TZNAME:PMT +DTSTART:18500101T000000 +RDATE:18500101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+005744 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:18911001T000000 +RDATE:18911001T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19160430T230000 +RDATE:19160430T230000 +RDATE:19170416T020000 +RDATE:19180415T020000 +RDATE:19400401T020000 +RDATE:19430329T020000 +RDATE:19440403T020000 +RDATE:19450408T020000 +RDATE:19460506T020000 +RDATE:19470420T020000 +RDATE:19480418T020000 +RDATE:19490409T020000 +RDATE:19790401T020000 +RDATE:19800406T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19161001T010000 +RDATE:19161001T010000 +RDATE:19170917T030000 +RDATE:19180916T030000 +RDATE:19421102T030000 +RDATE:19431004T030000 +RDATE:19440917T030000 +RDATE:19451118T030000 +RDATE:19461006T030000 +RDATE:19471005T030000 +RDATE:19481003T030000 +RDATE:19491002T030000 +RDATE:19790930T030000 +RDATE:19800928T030000 +RDATE:19810927T030000 +RDATE:19820926T030000 +RDATE:19830925T030000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19790101T000000 +RDATE:19790101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Riga.ics b/mozilla/calendar/libical/zoneinfo/Europe/Riga.ics new file mode 100644 index 00000000000..17f03aab846 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Riga.ics @@ -0,0 +1,180 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Riga +X-LIC-LOCATION:Europe/Riga +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:20010325T030000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:20011028T040000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+013624 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+013624 +TZOFFSETTO:+013624 +TZNAME:RMT +DTSTART:18800101T000000 +RDATE:18800101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+013624 +TZOFFSETTO:+023624 +TZNAME:LST +DTSTART:19180415T020000 +RDATE:19180415T020000 +RDATE:19190401T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+023624 +TZOFFSETTO:+013624 +TZNAME:RMT +DTSTART:19180916T030000 +RDATE:19180916T030000 +RDATE:19190522T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+013624 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19260511T000000 +RDATE:19260511T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:MSK +DTSTART:19400805T000000 +RDATE:19400805T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19410701T000000 +RDATE:19410701T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19421102T020000 +RDATE:19421102T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19430329T020000 +RDATE:19430329T020000 +RDATE:19440403T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19431004T030000 +RDATE:19431004T030000 +RDATE:19441002T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0300 +TZNAME:MSK +DTSTART:19441013T000000 +RDATE:19441013T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0300 +TZOFFSETTO:+0400 +TZNAME:MSD +DTSTART:19810401T000000 +RDATE:19810401T000000 +RDATE:19820401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0300 +TZNAME:MSK +DTSTART:19811001T000000 +RDATE:19811001T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0300 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19890326T020000 +RDATE:19890326T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19890924T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +RDATE:19960929T030000 +RDATE:19971026T040000 +RDATE:19981025T040000 +RDATE:19991031T040000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19900325T020000 +RDATE:19900325T020000 +RDATE:19910331T020000 +RDATE:19920329T020000 +RDATE:19930328T020000 +RDATE:19940327T020000 +RDATE:19950326T020000 +RDATE:19960331T020000 +RDATE:19970330T030000 +RDATE:19980329T030000 +RDATE:19990328T030000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19970121T000000 +RDATE:19970121T000000 +RDATE:20000229T000000 +RDATE:20010101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Rome.ics b/mozilla/calendar/libical/zoneinfo/Europe/Rome.ics new file mode 100644 index 00000000000..dcb4dc72ee1 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Rome.ics @@ -0,0 +1,132 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Rome +X-LIC-LOCATION:Europe/Rome +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19810329T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+004956 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+004956 +TZOFFSETTO:+004956 +TZNAME:RMT +DTSTART:18660922T000000 +RDATE:18660922T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+004956 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:18931101T000000 +RDATE:18931101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19160603T000000 +RDATE:19160603T000000 +RDATE:19170401T000000 +RDATE:19180310T000000 +RDATE:19190302T000000 +RDATE:19200321T000000 +RDATE:19400615T000000 +RDATE:19430329T020000 +RDATE:19440403T020000 +RDATE:19450402T020000 +RDATE:19460317T020000 +RDATE:19470316T000000 +RDATE:19480229T020000 +RDATE:19660522T000000 +RDATE:19670528T000000 +RDATE:19680526T000000 +RDATE:19690601T000000 +RDATE:19700531T000000 +RDATE:19710523T000000 +RDATE:19720528T000000 +RDATE:19730603T000000 +RDATE:19740526T000000 +RDATE:19750601T000000 +RDATE:19760530T000000 +RDATE:19770522T000000 +RDATE:19780528T000000 +RDATE:19790527T000000 +RDATE:19800406T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19161001T010000 +RDATE:19161001T010000 +RDATE:19170930T010000 +RDATE:19181006T010000 +RDATE:19191005T010000 +RDATE:19200919T010000 +RDATE:19421102T030000 +RDATE:19431004T030000 +RDATE:19440701T000000 +RDATE:19450915T010000 +RDATE:19461006T030000 +RDATE:19471005T010000 +RDATE:19481003T030000 +RDATE:19660925T000000 +RDATE:19670924T000000 +RDATE:19680922T000000 +RDATE:19690928T000000 +RDATE:19700927T000000 +RDATE:19710926T010000 +RDATE:19721001T000000 +RDATE:19730930T000000 +RDATE:19740929T000000 +RDATE:19750928T010000 +RDATE:19760926T010000 +RDATE:19770925T010000 +RDATE:19781001T010000 +RDATE:19790930T010000 +RDATE:19800928T030000 +RDATE:19810927T030000 +RDATE:19820926T030000 +RDATE:19830925T030000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19440917T000000 +RDATE:19440917T000000 +RDATE:19800101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Samara.ics b/mozilla/calendar/libical/zoneinfo/Europe/Samara.ics new file mode 100644 index 00000000000..90a8558eb1d --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Samara.ics @@ -0,0 +1,131 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Samara +X-LIC-LOCATION:Europe/Samara +BEGIN:DAYLIGHT +TZOFFSETFROM:+0400 +TZOFFSETTO:+0500 +TZNAME:SAMST +DTSTART:19930328T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0500 +TZOFFSETTO:+0400 +TZNAME:SAMT +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+032036 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+032036 +TZOFFSETTO:+0300 +TZNAME:KUYT +DTSTART:19190701T020000 +RDATE:19190701T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0400 +TZNAME:KUYT +DTSTART:19300621T000000 +RDATE:19300621T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0400 +TZOFFSETTO:+0500 +TZNAME:KUYST +DTSTART:19810401T000000 +RDATE:19810401T000000 +RDATE:19820401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0500 +TZOFFSETTO:+0400 +TZNAME:KUYT +DTSTART:19811001T000000 +RDATE:19811001T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0400 +TZOFFSETTO:+0400 +TZNAME:KUYST +DTSTART:19890326T020000 +RDATE:19890326T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0300 +TZNAME:KUYT +DTSTART:19890924T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0300 +TZOFFSETTO:+0400 +TZNAME:KUYST +DTSTART:19900325T020000 +RDATE:19900325T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:+0300 +TZOFFSETTO:+0300 +TZNAME:KUYST +DTSTART:19910331T020000 +RDATE:19910331T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0300 +TZNAME:KUYT +DTSTART:19910929T030000 +RDATE:19910929T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0400 +TZNAME:SAMT +DTSTART:19911020T030000 +RDATE:19911020T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0400 +TZOFFSETTO:+0500 +TZNAME:SAMST +DTSTART:19920328T230000 +RDATE:19920328T230000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0500 +TZOFFSETTO:+0400 +TZNAME:SAMT +DTSTART:19920926T230000 +RDATE:19920926T230000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/San_Marino.ics b/mozilla/calendar/libical/zoneinfo/Europe/San_Marino.ics new file mode 100644 index 00000000000..a5ef740bf3a --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/San_Marino.ics @@ -0,0 +1,132 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/San_Marino +X-LIC-LOCATION:Europe/San_Marino +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19810329T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+004956 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+004956 +TZOFFSETTO:+004956 +TZNAME:RMT +DTSTART:18660922T000000 +RDATE:18660922T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+004956 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:18931101T000000 +RDATE:18931101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19160603T000000 +RDATE:19160603T000000 +RDATE:19170401T000000 +RDATE:19180310T000000 +RDATE:19190302T000000 +RDATE:19200321T000000 +RDATE:19400615T000000 +RDATE:19430329T020000 +RDATE:19440403T020000 +RDATE:19450402T020000 +RDATE:19460317T020000 +RDATE:19470316T000000 +RDATE:19480229T020000 +RDATE:19660522T000000 +RDATE:19670528T000000 +RDATE:19680526T000000 +RDATE:19690601T000000 +RDATE:19700531T000000 +RDATE:19710523T000000 +RDATE:19720528T000000 +RDATE:19730603T000000 +RDATE:19740526T000000 +RDATE:19750601T000000 +RDATE:19760530T000000 +RDATE:19770522T000000 +RDATE:19780528T000000 +RDATE:19790527T000000 +RDATE:19800406T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19161001T010000 +RDATE:19161001T010000 +RDATE:19170930T010000 +RDATE:19181006T010000 +RDATE:19191005T010000 +RDATE:19200919T010000 +RDATE:19421102T030000 +RDATE:19431004T030000 +RDATE:19440701T000000 +RDATE:19450915T010000 +RDATE:19461006T030000 +RDATE:19471005T010000 +RDATE:19481003T030000 +RDATE:19660925T000000 +RDATE:19670924T000000 +RDATE:19680922T000000 +RDATE:19690928T000000 +RDATE:19700927T000000 +RDATE:19710926T010000 +RDATE:19721001T000000 +RDATE:19730930T000000 +RDATE:19740929T000000 +RDATE:19750928T010000 +RDATE:19760926T010000 +RDATE:19770925T010000 +RDATE:19781001T010000 +RDATE:19790930T010000 +RDATE:19800928T030000 +RDATE:19810927T030000 +RDATE:19820926T030000 +RDATE:19830925T030000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19440917T000000 +RDATE:19440917T000000 +RDATE:19800101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Sarajevo.ics b/mozilla/calendar/libical/zoneinfo/Europe/Sarajevo.ics new file mode 100644 index 00000000000..bc722a6d300 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Sarajevo.ics @@ -0,0 +1,76 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Sarajevo +X-LIC-LOCATION:Europe/Sarajevo +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19830327T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0122 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0122 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:18840101T000000 +RDATE:18840101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19410418T230000 +RDATE:19410418T230000 +RDATE:19421102T020000 +RDATE:19821127T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19430329T020000 +RDATE:19430329T020000 +RDATE:19440403T020000 +RDATE:19450508T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19431004T030000 +RDATE:19431004T030000 +RDATE:19441002T030000 +RDATE:19450916T030000 +RDATE:19830925T030000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Simferopol.ics b/mozilla/calendar/libical/zoneinfo/Europe/Simferopol.ics new file mode 100644 index 00000000000..725c0c3671c --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Simferopol.ics @@ -0,0 +1,158 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Simferopol +X-LIC-LOCATION:Europe/Simferopol +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19980329T030000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19981025T040000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+021624 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+021624 +TZOFFSETTO:+0216 +TZNAME:SMT +DTSTART:18800101T000000 +RDATE:18800101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0216 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19240502T000000 +RDATE:19240502T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:MSK +DTSTART:19300621T000000 +RDATE:19300621T000000 +RDATE:19440413T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19411101T000000 +RDATE:19411101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19421102T020000 +RDATE:19421102T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19430329T020000 +RDATE:19430329T020000 +RDATE:19440403T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19431004T030000 +RDATE:19431004T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0300 +TZOFFSETTO:+0400 +TZNAME:MSD +DTSTART:19810401T000000 +RDATE:19810401T000000 +RDATE:19820401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +RDATE:19950326T000000 +RDATE:19960331T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0300 +TZNAME:MSK +DTSTART:19811001T000000 +RDATE:19811001T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19950924T000000 +RDATE:19961027T040000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0300 +TZNAME:MSK +DTSTART:19900101T000000 +RDATE:19900101T000000 +RDATE:19940501T000000 +RDATE:19940925T000000 +RDATE:19970101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19900701T020000 +RDATE:19900701T020000 +RDATE:19920927T000000 +RDATE:19930926T000000 +RDATE:19970330T040000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19920101T000000 +RDATE:19920101T000000 +RDATE:19971026T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19920329T000000 +RDATE:19920329T000000 +RDATE:19930328T000000 +RDATE:19940327T000000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:+0400 +TZOFFSETTO:+0400 +TZNAME:MSD +DTSTART:19960331T040000 +RDATE:19960331T040000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Skopje.ics b/mozilla/calendar/libical/zoneinfo/Europe/Skopje.ics new file mode 100644 index 00000000000..e00bb19243b --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Skopje.ics @@ -0,0 +1,76 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Skopje +X-LIC-LOCATION:Europe/Skopje +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19830327T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0122 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0122 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:18840101T000000 +RDATE:18840101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19410418T230000 +RDATE:19410418T230000 +RDATE:19421102T020000 +RDATE:19821127T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19430329T020000 +RDATE:19430329T020000 +RDATE:19440403T020000 +RDATE:19450508T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19431004T030000 +RDATE:19431004T030000 +RDATE:19441002T030000 +RDATE:19450916T030000 +RDATE:19830925T030000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Sofia.ics b/mozilla/calendar/libical/zoneinfo/Europe/Sofia.ics new file mode 100644 index 00000000000..8eb1bffea46 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Sofia.ics @@ -0,0 +1,123 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Sofia +X-LIC-LOCATION:Europe/Sofia +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19970330T030000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19971026T040000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+013316 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+013316 +TZOFFSETTO:+015656 +TZNAME:IMT +DTSTART:18800101T000000 +RDATE:18800101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+015656 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:18941130T000000 +RDATE:18941130T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19421102T030000 +RDATE:19421102T030000 +RDATE:19431004T030000 +RDATE:19441002T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19430329T020000 +RDATE:19430329T020000 +RDATE:19440403T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19450402T030000 +RDATE:19450402T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19790331T230000 +RDATE:19790331T230000 +RDATE:19800405T230000 +RDATE:19810404T230000 +RDATE:19820403T230000 +RDATE:19830327T020000 +RDATE:19840325T020000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +RDATE:19900325T020000 +RDATE:19910331T000000 +RDATE:19920329T000000 +RDATE:19930328T000000 +RDATE:19940327T000000 +RDATE:19950326T000000 +RDATE:19960331T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19791001T010000 +RDATE:19791001T010000 +RDATE:19800929T010000 +RDATE:19810927T020000 +RDATE:19820926T030000 +RDATE:19830925T030000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T000000 +RDATE:19920927T000000 +RDATE:19930926T000000 +RDATE:19940925T000000 +RDATE:19950924T000000 +RDATE:19961027T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19910101T000000 +RDATE:19910101T000000 +RDATE:19970101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Stockholm.ics b/mozilla/calendar/libical/zoneinfo/Europe/Stockholm.ics new file mode 100644 index 00000000000..4ff76ff7d70 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Stockholm.ics @@ -0,0 +1,81 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Stockholm +X-LIC-LOCATION:Europe/Stockholm +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19810329T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+011212 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+011212 +TZOFFSETTO:+010014 +TZNAME:SET +DTSTART:18790101T000000 +RDATE:18790101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+010014 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19000101T000000 +RDATE:19000101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19160514T230000 +RDATE:19160514T230000 +RDATE:19800406T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19161001T010000 +RDATE:19161001T010000 +RDATE:19800928T030000 +RDATE:19810927T030000 +RDATE:19820926T030000 +RDATE:19830925T030000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19800101T000000 +RDATE:19800101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Tallinn.ics b/mozilla/calendar/libical/zoneinfo/Europe/Tallinn.ics new file mode 100644 index 00000000000..d7e270f585b --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Tallinn.ics @@ -0,0 +1,158 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Tallinn +X-LIC-LOCATION:Europe/Tallinn +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0139 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0139 +TZOFFSETTO:+0139 +TZNAME:TMT +DTSTART:18800101T000000 +RDATE:18800101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0139 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19180201T000000 +RDATE:19180201T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19180415T020000 +RDATE:19180415T020000 +RDATE:19430329T020000 +RDATE:19440403T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19180916T030000 +RDATE:19180916T030000 +RDATE:19431004T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0139 +TZNAME:TMT +DTSTART:19190701T000000 +RDATE:19190701T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0139 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19210501T000000 +RDATE:19210501T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:MSK +DTSTART:19400806T000000 +RDATE:19400806T000000 +RDATE:19440922T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19410915T000000 +RDATE:19410915T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19421102T020000 +RDATE:19421102T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0300 +TZOFFSETTO:+0400 +TZNAME:MSD +DTSTART:19810401T000000 +RDATE:19810401T000000 +RDATE:19820401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0300 +TZNAME:MSK +DTSTART:19811001T000000 +RDATE:19811001T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0300 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19890326T020000 +RDATE:19890326T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19890924T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +RDATE:19961027T030000 +RDATE:19971026T030000 +RDATE:19980922T000000 +RDATE:19991031T040000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19900325T020000 +RDATE:19900325T020000 +RDATE:19910331T020000 +RDATE:19920329T020000 +RDATE:19930328T020000 +RDATE:19940327T020000 +RDATE:19950326T020000 +RDATE:19960331T020000 +RDATE:19970330T020000 +RDATE:19980329T020000 +RDATE:19990328T030000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19981025T030000 +RDATE:19981025T030000 +RDATE:19991101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Tirane.ics b/mozilla/calendar/libical/zoneinfo/Europe/Tirane.ics new file mode 100644 index 00000000000..8ccb54f58ce --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Tirane.ics @@ -0,0 +1,92 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Tirane +X-LIC-LOCATION:Europe/Tirane +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19850331T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+011920 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+011920 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19140101T000000 +RDATE:19140101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19400616T000000 +RDATE:19400616T000000 +RDATE:19430329T020000 +RDATE:19740504T000000 +RDATE:19750501T000000 +RDATE:19760502T000000 +RDATE:19770508T000000 +RDATE:19780506T000000 +RDATE:19790505T000000 +RDATE:19800503T000000 +RDATE:19810426T000000 +RDATE:19820502T000000 +RDATE:19830418T000000 +RDATE:19840401T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19421102T030000 +RDATE:19421102T030000 +RDATE:19430410T030000 +RDATE:19741002T000000 +RDATE:19751002T000000 +RDATE:19761003T000000 +RDATE:19771002T000000 +RDATE:19781001T000000 +RDATE:19790930T000000 +RDATE:19801004T000000 +RDATE:19810927T000000 +RDATE:19821003T000000 +RDATE:19831001T000000 +RDATE:19840701T000000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19840930T020000 +RDATE:19840930T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Uzhgorod.ics b/mozilla/calendar/libical/zoneinfo/Europe/Uzhgorod.ics new file mode 100644 index 00000000000..eae3a7a8f23 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Uzhgorod.ics @@ -0,0 +1,153 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Uzhgorod +X-LIC-LOCATION:Europe/Uzhgorod +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19950326T030000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19961027T040000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+012912 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+012912 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:18901001T000000 +RDATE:18901001T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19400101T000000 +RDATE:19400101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19400401T020000 +RDATE:19400401T020000 +RDATE:19430329T020000 +RDATE:19440403T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19421102T030000 +RDATE:19421102T030000 +RDATE:19431004T030000 +RDATE:19441026T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19441001T000000 +RDATE:19441001T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0300 +TZNAME:MSK +DTSTART:19450629T000000 +RDATE:19450629T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0300 +TZOFFSETTO:+0400 +TZNAME:MSD +DTSTART:19810401T000000 +RDATE:19810401T000000 +RDATE:19820401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0300 +TZNAME:MSK +DTSTART:19811001T000000 +RDATE:19811001T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0300 +TZNAME:MSK +DTSTART:19900101T000000 +RDATE:19900101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19900701T020000 +RDATE:19900701T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19910331T030000 +RDATE:19910331T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19920101T000000 +RDATE:19920101T000000 +RDATE:19950101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19920329T000000 +RDATE:19920329T000000 +RDATE:19930328T000000 +RDATE:19940327T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19920927T000000 +RDATE:19920927T000000 +RDATE:19930926T000000 +RDATE:19940925T000000 +RDATE:19950924T040000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Vaduz.ics b/mozilla/calendar/libical/zoneinfo/Europe/Vaduz.ics new file mode 100644 index 00000000000..c7f759e474e --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Vaduz.ics @@ -0,0 +1,64 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Vaduz +X-LIC-LOCATION:Europe/Vaduz +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19810329T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+003804 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+003804 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:18940601T000000 +RDATE:18940601T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19810101T000000 +RDATE:19810101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19810927T030000 +RDATE:19810927T030000 +RDATE:19820926T030000 +RDATE:19830925T030000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Vatican.ics b/mozilla/calendar/libical/zoneinfo/Europe/Vatican.ics new file mode 100644 index 00000000000..ab82faca3c4 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Vatican.ics @@ -0,0 +1,132 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Vatican +X-LIC-LOCATION:Europe/Vatican +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19810329T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+004956 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+004956 +TZOFFSETTO:+004956 +TZNAME:RMT +DTSTART:18660922T000000 +RDATE:18660922T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+004956 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:18931101T000000 +RDATE:18931101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19160603T000000 +RDATE:19160603T000000 +RDATE:19170401T000000 +RDATE:19180310T000000 +RDATE:19190302T000000 +RDATE:19200321T000000 +RDATE:19400615T000000 +RDATE:19430329T020000 +RDATE:19440403T020000 +RDATE:19450402T020000 +RDATE:19460317T020000 +RDATE:19470316T000000 +RDATE:19480229T020000 +RDATE:19660522T000000 +RDATE:19670528T000000 +RDATE:19680526T000000 +RDATE:19690601T000000 +RDATE:19700531T000000 +RDATE:19710523T000000 +RDATE:19720528T000000 +RDATE:19730603T000000 +RDATE:19740526T000000 +RDATE:19750601T000000 +RDATE:19760530T000000 +RDATE:19770522T000000 +RDATE:19780528T000000 +RDATE:19790527T000000 +RDATE:19800406T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19161001T010000 +RDATE:19161001T010000 +RDATE:19170930T010000 +RDATE:19181006T010000 +RDATE:19191005T010000 +RDATE:19200919T010000 +RDATE:19421102T030000 +RDATE:19431004T030000 +RDATE:19440701T000000 +RDATE:19450915T010000 +RDATE:19461006T030000 +RDATE:19471005T010000 +RDATE:19481003T030000 +RDATE:19660925T000000 +RDATE:19670924T000000 +RDATE:19680922T000000 +RDATE:19690928T000000 +RDATE:19700927T000000 +RDATE:19710926T010000 +RDATE:19721001T000000 +RDATE:19730930T000000 +RDATE:19740929T000000 +RDATE:19750928T010000 +RDATE:19760926T010000 +RDATE:19770925T010000 +RDATE:19781001T010000 +RDATE:19790930T010000 +RDATE:19800928T030000 +RDATE:19810927T030000 +RDATE:19820926T030000 +RDATE:19830925T030000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19440917T000000 +RDATE:19440917T000000 +RDATE:19800101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Vienna.ics b/mozilla/calendar/libical/zoneinfo/Europe/Vienna.ics new file mode 100644 index 00000000000..c52ea2abc90 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Vienna.ics @@ -0,0 +1,92 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Vienna +X-LIC-LOCATION:Europe/Vienna +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19810329T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+010520 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+010520 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:18930401T000000 +RDATE:18930401T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19160430T230000 +RDATE:19160430T230000 +RDATE:19170416T020000 +RDATE:19180415T020000 +RDATE:19200405T020000 +RDATE:19400401T020000 +RDATE:19430329T020000 +RDATE:19440403T020000 +RDATE:19450402T020000 +RDATE:19460414T020000 +RDATE:19470406T020000 +RDATE:19480418T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19161001T010000 +RDATE:19161001T010000 +RDATE:19170917T030000 +RDATE:19180616T030000 +RDATE:19200913T030000 +RDATE:19421102T030000 +RDATE:19431004T030000 +RDATE:19441002T030000 +RDATE:19451118T030000 +RDATE:19461006T030000 +RDATE:19471005T030000 +RDATE:19481003T030000 +RDATE:19810927T030000 +RDATE:19820926T030000 +RDATE:19830925T030000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19810101T000000 +RDATE:19810101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Vilnius.ics b/mozilla/calendar/libical/zoneinfo/Europe/Vilnius.ics new file mode 100644 index 00000000000..0dcaa8c20be --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Vilnius.ics @@ -0,0 +1,162 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Vilnius +X-LIC-LOCATION:Europe/Vilnius +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+014116 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+014116 +TZOFFSETTO:+0124 +TZNAME:WMT +DTSTART:18800101T000000 +RDATE:18800101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0124 +TZOFFSETTO:+013536 +TZNAME:KMT +DTSTART:19170101T000000 +RDATE:19170101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+013536 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19191010T000000 +RDATE:19191010T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19200712T000000 +RDATE:19200712T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19201009T000000 +RDATE:19201009T000000 +RDATE:19431004T030000 +RDATE:19980329T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0300 +TZNAME:MSK +DTSTART:19400803T000000 +RDATE:19400803T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19410624T000000 +RDATE:19410624T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19421102T020000 +RDATE:19421102T020000 +RDATE:19981025T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19430329T020000 +RDATE:19430329T020000 +RDATE:19440403T020000 +RDATE:19990328T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:MSK +DTSTART:19440801T000000 +RDATE:19440801T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0300 +TZOFFSETTO:+0400 +TZNAME:MSD +DTSTART:19810401T000000 +RDATE:19810401T000000 +RDATE:19820401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +RDATE:19900325T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0300 +TZNAME:MSK +DTSTART:19811001T000000 +RDATE:19811001T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0300 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19910331T020000 +RDATE:19910331T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19910929T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +RDATE:19961027T030000 +RDATE:19971026T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19920329T020000 +RDATE:19920329T020000 +RDATE:19930328T020000 +RDATE:19940327T020000 +RDATE:19950326T020000 +RDATE:19960331T020000 +RDATE:19970330T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19980101T000000 +RDATE:19980101T000000 +RDATE:19991031T030000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Warsaw.ics b/mozilla/calendar/libical/zoneinfo/Europe/Warsaw.ics new file mode 100644 index 00000000000..f8c0b987a34 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Warsaw.ics @@ -0,0 +1,164 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Warsaw +X-LIC-LOCATION:Europe/Warsaw +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19990328T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19991031T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0124 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0124 +TZOFFSETTO:+0124 +TZNAME:WMT +DTSTART:18800101T000000 +RDATE:18800101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0124 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19150805T000000 +RDATE:19150805T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19160430T230000 +RDATE:19160430T230000 +RDATE:19170416T020000 +RDATE:19180415T020000 +RDATE:19430329T020000 +RDATE:19440403T020000 +RDATE:19450429T000000 +RDATE:19460414T000000 +RDATE:19470504T000000 +RDATE:19480418T000000 +RDATE:19570602T010000 +RDATE:19580330T010000 +RDATE:19590531T010000 +RDATE:19600403T010000 +RDATE:19610528T010000 +RDATE:19620527T010000 +RDATE:19630526T010000 +RDATE:19640531T010000 +RDATE:19770403T010000 +RDATE:19780402T010000 +RDATE:19790401T010000 +RDATE:19800406T010000 +RDATE:19810329T010000 +RDATE:19820328T010000 +RDATE:19830327T010000 +RDATE:19840325T010000 +RDATE:19850331T010000 +RDATE:19860330T010000 +RDATE:19870329T010000 +RDATE:19880327T010000 +RDATE:19890326T010000 +RDATE:19900325T010000 +RDATE:19910331T010000 +RDATE:19920329T010000 +RDATE:19930328T010000 +RDATE:19940327T010000 +RDATE:19950326T010000 +RDATE:19960331T010000 +RDATE:19970330T010000 +RDATE:19980329T010000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19161001T010000 +RDATE:19161001T010000 +RDATE:19170917T030000 +RDATE:19220601T000000 +RDATE:19431004T030000 +RDATE:19441001T000000 +RDATE:19451101T000000 +RDATE:19460907T000000 +RDATE:19471005T000000 +RDATE:19481003T000000 +RDATE:19570929T020000 +RDATE:19580928T020000 +RDATE:19591004T020000 +RDATE:19601002T020000 +RDATE:19611001T020000 +RDATE:19620930T020000 +RDATE:19630929T020000 +RDATE:19640927T020000 +RDATE:19770925T020000 +RDATE:19781001T020000 +RDATE:19790930T020000 +RDATE:19800928T020000 +RDATE:19810927T020000 +RDATE:19820926T020000 +RDATE:19830925T020000 +RDATE:19840930T020000 +RDATE:19850929T020000 +RDATE:19860928T020000 +RDATE:19870927T020000 +RDATE:19880925T020000 +RDATE:19890924T020000 +RDATE:19900930T020000 +RDATE:19910929T020000 +RDATE:19920927T020000 +RDATE:19930926T020000 +RDATE:19940925T020000 +RDATE:19950924T020000 +RDATE:19961027T020000 +RDATE:19971026T020000 +RDATE:19981025T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19180916T030000 +RDATE:19180916T030000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19190415T020000 +RDATE:19190415T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19190916T030000 +RDATE:19190916T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19400623T020000 +RDATE:19400623T020000 +RDATE:19421102T020000 +RDATE:19441004T020000 +RDATE:19990101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Zagreb.ics b/mozilla/calendar/libical/zoneinfo/Europe/Zagreb.ics new file mode 100644 index 00000000000..da8c0290f65 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Zagreb.ics @@ -0,0 +1,76 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Zagreb +X-LIC-LOCATION:Europe/Zagreb +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19830327T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0122 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0122 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:18840101T000000 +RDATE:18840101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19410418T230000 +RDATE:19410418T230000 +RDATE:19421102T020000 +RDATE:19821127T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19430329T020000 +RDATE:19430329T020000 +RDATE:19440403T020000 +RDATE:19450508T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19431004T030000 +RDATE:19431004T030000 +RDATE:19441002T030000 +RDATE:19450916T030000 +RDATE:19830925T030000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Zaporozhye.ics b/mozilla/calendar/libical/zoneinfo/Europe/Zaporozhye.ics new file mode 100644 index 00000000000..767cef42fc3 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Zaporozhye.ics @@ -0,0 +1,145 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Zaporozhye +X-LIC-LOCATION:Europe/Zaporozhye +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19950326T030000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19961027T040000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+022040 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+022040 +TZOFFSETTO:+0220 +TZNAME:CUT +DTSTART:18800101T000000 +RDATE:18800101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0220 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19240502T000000 +RDATE:19240502T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:MSK +DTSTART:19300621T000000 +RDATE:19300621T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19410825T000000 +RDATE:19410825T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19421102T020000 +RDATE:19421102T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19430329T020000 +RDATE:19430329T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19431004T030000 +RDATE:19431004T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0300 +TZNAME:MSK +DTSTART:19431025T000000 +RDATE:19431025T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0300 +TZOFFSETTO:+0400 +TZNAME:MSD +DTSTART:19810401T000000 +RDATE:19810401T000000 +RDATE:19820401T000000 +RDATE:19830401T000000 +RDATE:19840401T000000 +RDATE:19850331T020000 +RDATE:19860330T020000 +RDATE:19870329T020000 +RDATE:19880327T020000 +RDATE:19890326T020000 +RDATE:19900325T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0300 +TZNAME:MSK +DTSTART:19811001T000000 +RDATE:19811001T000000 +RDATE:19821001T000000 +RDATE:19831001T000000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0300 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19910331T020000 +RDATE:19910331T020000 +RDATE:19920927T000000 +RDATE:19930926T000000 +RDATE:19940925T000000 +RDATE:19950924T040000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0200 +TZNAME:EET +DTSTART:19910929T000000 +RDATE:19910929T000000 +RDATE:19950101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0200 +TZOFFSETTO:+0300 +TZNAME:EEST +DTSTART:19920329T000000 +RDATE:19920329T000000 +RDATE:19930328T000000 +RDATE:19940327T000000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Europe/Zurich.ics b/mozilla/calendar/libical/zoneinfo/Europe/Zurich.ics new file mode 100644 index 00000000000..8bf1d163603 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Europe/Zurich.ics @@ -0,0 +1,83 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Europe/Zurich +X-LIC-LOCATION:Europe/Zurich +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19810329T020000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19961027T030000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+003408 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+003408 +TZOFFSETTO:+002944 +TZNAME:BMT +DTSTART:18480912T000000 +RDATE:18480912T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+002944 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:18940601T000000 +RDATE:18940601T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +DTSTART:19401102T000000 +RDATE:19401102T000000 +RDATE:19410504T020000 +RDATE:19420503T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19401231T000000 +RDATE:19401231T000000 +RDATE:19411005T000000 +RDATE:19421004T000000 +RDATE:19810927T030000 +RDATE:19820926T030000 +RDATE:19830925T030000 +RDATE:19840930T030000 +RDATE:19850929T030000 +RDATE:19860928T030000 +RDATE:19870927T030000 +RDATE:19880925T030000 +RDATE:19890924T030000 +RDATE:19900930T030000 +RDATE:19910929T030000 +RDATE:19920927T030000 +RDATE:19930926T030000 +RDATE:19940925T030000 +RDATE:19950924T030000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0100 +TZOFFSETTO:+0100 +TZNAME:CET +DTSTART:19810101T000000 +RDATE:19810101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Indian/Antananarivo.ics b/mozilla/calendar/libical/zoneinfo/Indian/Antananarivo.ics new file mode 100644 index 00000000000..13f62cacef6 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Indian/Antananarivo.ics @@ -0,0 +1,36 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Indian/Antananarivo +X-LIC-LOCATION:Indian/Antananarivo +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+031004 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+031004 +TZOFFSETTO:+0300 +TZNAME:EAT +DTSTART:19110701T000000 +RDATE:19110701T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+0300 +TZOFFSETTO:+0400 +TZNAME:EAST +DTSTART:19540227T230000 +RDATE:19540227T230000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0400 +TZOFFSETTO:+0300 +TZNAME:EAT +DTSTART:19540530T000000 +RDATE:19540530T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Indian/Chagos.ics b/mozilla/calendar/libical/zoneinfo/Indian/Chagos.ics new file mode 100644 index 00000000000..fcadb8ba926 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Indian/Chagos.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Indian/Chagos +X-LIC-LOCATION:Indian/Chagos +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0500 +TZNAME:IOT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0500 +TZOFFSETTO:+0600 +TZNAME:IOT +DTSTART:19960101T000000 +RDATE:19960101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Indian/Christmas.ics b/mozilla/calendar/libical/zoneinfo/Indian/Christmas.ics new file mode 100644 index 00000000000..ef2d7d30a4c --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Indian/Christmas.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Indian/Christmas +X-LIC-LOCATION:Indian/Christmas +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+070252 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+070252 +TZOFFSETTO:+0700 +TZNAME:CXT +DTSTART:18950201T000000 +RDATE:18950201T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Indian/Cocos.ics b/mozilla/calendar/libical/zoneinfo/Indian/Cocos.ics new file mode 100644 index 00000000000..0a2ba4786b1 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Indian/Cocos.ics @@ -0,0 +1,15 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Indian/Cocos +X-LIC-LOCATION:Indian/Cocos +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0630 +TZNAME:CCT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Indian/Comoro.ics b/mozilla/calendar/libical/zoneinfo/Indian/Comoro.ics new file mode 100644 index 00000000000..085a725468d --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Indian/Comoro.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Indian/Comoro +X-LIC-LOCATION:Indian/Comoro +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+025304 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+025304 +TZOFFSETTO:+0300 +TZNAME:EAT +DTSTART:19110701T000000 +RDATE:19110701T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Indian/Kerguelen.ics b/mozilla/calendar/libical/zoneinfo/Indian/Kerguelen.ics new file mode 100644 index 00000000000..0443e82c569 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Indian/Kerguelen.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Indian/Kerguelen +X-LIC-LOCATION:Indian/Kerguelen +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0000 +TZNAME:zzz +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0500 +TZNAME:TFT +DTSTART:19500101T000000 +RDATE:19500101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Indian/Mahe.ics b/mozilla/calendar/libical/zoneinfo/Indian/Mahe.ics new file mode 100644 index 00000000000..c4f77ca9044 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Indian/Mahe.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Indian/Mahe +X-LIC-LOCATION:Indian/Mahe +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+034148 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+034148 +TZOFFSETTO:+0400 +TZNAME:SCT +DTSTART:19060601T000000 +RDATE:19060601T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Indian/Maldives.ics b/mozilla/calendar/libical/zoneinfo/Indian/Maldives.ics new file mode 100644 index 00000000000..241cda1462f --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Indian/Maldives.ics @@ -0,0 +1,29 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Indian/Maldives +X-LIC-LOCATION:Indian/Maldives +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0454 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0454 +TZOFFSETTO:+0454 +TZNAME:MMT +DTSTART:18800101T000000 +RDATE:18800101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0454 +TZOFFSETTO:+0500 +TZNAME:MVT +DTSTART:19600101T000000 +RDATE:19600101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Indian/Mauritius.ics b/mozilla/calendar/libical/zoneinfo/Indian/Mauritius.ics new file mode 100644 index 00000000000..906e4448cfd --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Indian/Mauritius.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Indian/Mauritius +X-LIC-LOCATION:Indian/Mauritius +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+0350 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0350 +TZOFFSETTO:+0400 +TZNAME:MUT +DTSTART:19070101T000000 +RDATE:19070101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Indian/Mayotte.ics b/mozilla/calendar/libical/zoneinfo/Indian/Mayotte.ics new file mode 100644 index 00000000000..5720e21734f --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Indian/Mayotte.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Indian/Mayotte +X-LIC-LOCATION:Indian/Mayotte +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+030056 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+030056 +TZOFFSETTO:+0300 +TZNAME:EAT +DTSTART:19110701T000000 +RDATE:19110701T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Indian/Reunion.ics b/mozilla/calendar/libical/zoneinfo/Indian/Reunion.ics new file mode 100644 index 00000000000..0f0b72ee98b --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Indian/Reunion.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Indian/Reunion +X-LIC-LOCATION:Indian/Reunion +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+034152 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+034152 +TZOFFSETTO:+0400 +TZNAME:RET +DTSTART:19110601T000000 +RDATE:19110601T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Makefile.am b/mozilla/calendar/libical/zoneinfo/Makefile.am new file mode 100644 index 00000000000..662a0b9f4e9 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Makefile.am @@ -0,0 +1,38 @@ + +zoneinfodatadir = $(datadir)/$(PACKAGE)/zoneinfo + +zoneinfodata_DATA = zones.tab + +DIRS = \ + Africa \ + America \ + America/Indiana \ + America/Kentucky \ + Antarctica \ + Arctic \ + Asia \ + Atlantic \ + Australia \ + Europe \ + Indian \ + Pacific + + +install-data-local: + @$(NORMAL_INSTALL) + for dir in $(DIRS); do \ + $(mkinstalldirs) $(DESTDIR)$(datadir)/$(PACKAGE)/zoneinfo/$$dir; \ + for tzfile in $(srcdir)/$$dir/*.ics; do \ + $(INSTALL_DATA) $$tzfile $(DESTDIR)$(datadir)/$(PACKAGE)/zoneinfo/$$dir; \ + done \ + done + +dist-hook: + for dir in $(DIRS); do \ + mkdir $(distdir)/$$dir; \ + for tzfile in $(srcdir)/$$dir/*.ics; do \ + cp -p $$tzfile $(distdir)/$$dir; \ + done \ + done + +EXTRA_DIST = $(zoneinfodata_DATA) diff --git a/mozilla/calendar/libical/zoneinfo/Makefile.in b/mozilla/calendar/libical/zoneinfo/Makefile.in new file mode 100644 index 00000000000..26bb8db8e6d --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Makefile.in @@ -0,0 +1,296 @@ +# Makefile.in generated automatically by automake 1.5 from Makefile.am. + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_HEADER = $(INSTALL_DATA) +transform = @program_transform_name@ +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_alias = @build_alias@ +build_triplet = @build@ +host_alias = @host_alias@ +host_triplet = @host@ +target_alias = @target_alias@ +target_triplet = @target@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AWK = @AWK@ +BDB_DIR = @BDB_DIR@ +BDB_DIR_INCLUDE = @BDB_DIR_INCLUDE@ +BDB_DIR_LIB = @BDB_DIR_LIB@ +BDB_LIB = @BDB_LIB@ +BDB_VERSION = @BDB_VERSION@ +CC = @CC@ +CXX = @CXX@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +EXEEXT = @EXEEXT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +JAR = @JAR@ +JAVA = @JAVA@ +JAVAC = @JAVAC@ +JAVAH = @JAVAH@ +JAVA_PLATFORM = @JAVA_PLATFORM@ +LEX = @LEX@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +MAINT = @MAINT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PERL = @PERL@ +PKG_CONFIG = @PKG_CONFIG@ +PTHREAD_LIBS = @PTHREAD_LIBS@ +PY_CFLAGS = @PY_CFLAGS@ +PY_EXTRA_LIBS = @PY_EXTRA_LIBS@ +PY_LIBS = @PY_LIBS@ +PY_LIB_LOC = @PY_LIB_LOC@ +RANLIB = @RANLIB@ +RRCAP_CFLAGS = @RRCAP_CFLAGS@ +RRCAP_LIBS = @RRCAP_LIBS@ +VERSION = @VERSION@ +YACC = @YACC@ +am__include = @am__include@ +am__quote = @am__quote@ +install_sh = @install_sh@ +python_val = @python_val@ + +zoneinfodatadir = $(datadir)/$(PACKAGE)/zoneinfo + +zoneinfodata_DATA = zones.tab + +DIRS = \ + Africa \ + America \ + America/Indiana \ + America/Kentucky \ + Antarctica \ + Arctic \ + Asia \ + Atlantic \ + Australia \ + Europe \ + Indian \ + Pacific + + +EXTRA_DIST = $(zoneinfodata_DATA) +subdir = zoneinfo +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +DATA = $(zoneinfodata_DATA) + +DIST_COMMON = Makefile.am Makefile.in +all: all-am + +.SUFFIXES: + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu zoneinfo/Makefile +Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && \ + CONFIG_HEADERS= CONFIG_LINKS= \ + CONFIG_FILES=$(subdir)/$@ $(SHELL) ./config.status +uninstall-info-am: +install-zoneinfodataDATA: $(zoneinfodata_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(zoneinfodatadir) + @list='$(zoneinfodata_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(zoneinfodatadir)/$$f"; \ + $(INSTALL_DATA) $$d$$p $(DESTDIR)$(zoneinfodatadir)/$$f; \ + done + +uninstall-zoneinfodataDATA: + @$(NORMAL_UNINSTALL) + @list='$(zoneinfodata_DATA)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(zoneinfodatadir)/$$f"; \ + rm -f $(DESTDIR)$(zoneinfodatadir)/$$f; \ + done +tags: TAGS +TAGS: + + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + if test -f $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + $(mkinstalldirs) "$(distdir)/$$dir"; \ + fi; \ + if test -d $$d/$$file; then \ + cp -pR $$d/$$file $(distdir) \ + || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="${top_distdir}" distdir="$(distdir)" \ + dist-hook +check-am: all-am +check: check-am +all-am: Makefile $(DATA) + +installdirs: + $(mkinstalldirs) $(DESTDIR)$(zoneinfodatadir) + +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]* + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: install-data-local install-zoneinfodataDATA + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +uninstall-am: uninstall-info-am uninstall-zoneinfodataDATA + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-data-local install-exec install-exec-am \ + install-info install-info-am install-man install-strip \ + install-zoneinfodataDATA installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool uninstall \ + uninstall-am uninstall-info-am uninstall-zoneinfodataDATA + + +install-data-local: + @$(NORMAL_INSTALL) + for dir in $(DIRS); do \ + $(mkinstalldirs) $(DESTDIR)$(datadir)/$(PACKAGE)/zoneinfo/$$dir; \ + for tzfile in $(srcdir)/$$dir/*.ics; do \ + $(INSTALL_DATA) $$tzfile $(DESTDIR)$(datadir)/$(PACKAGE)/zoneinfo/$$dir; \ + done \ + done + +dist-hook: + for dir in $(DIRS); do \ + mkdir $(distdir)/$$dir; \ + for tzfile in $(srcdir)/$$dir/*.ics; do \ + cp -p $$tzfile $(distdir)/$$dir; \ + done \ + done +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Apia.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Apia.ics new file mode 100644 index 00000000000..16cd181ad8a --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Apia.ics @@ -0,0 +1,36 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Apia +X-LIC-LOCATION:Pacific/Apia +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+123304 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+123304 +TZOFFSETTO:-112656 +TZNAME:LMT +DTSTART:18790705T000000 +RDATE:18790705T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-112656 +TZOFFSETTO:-1130 +TZNAME:SAMT +DTSTART:19110101T000000 +RDATE:19110101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-1130 +TZOFFSETTO:-1100 +TZNAME:WST +DTSTART:19500101T000000 +RDATE:19500101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Auckland.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Auckland.ics new file mode 100644 index 00000000000..0e74e28aa0e --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Auckland.ics @@ -0,0 +1,124 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Auckland +X-LIC-LOCATION:Pacific/Auckland +BEGIN:STANDARD +TZOFFSETFROM:+1300 +TZOFFSETTO:+1200 +TZNAME:NZST +DTSTART:19900318T030000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYMONTHDAY=15,16,17,18,19,20,21;BYDAY=SU +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1200 +TZOFFSETTO:+1300 +TZNAME:NZDT +DTSTART:19901007T020000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+113904 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+113904 +TZOFFSETTO:+1130 +TZNAME:NZST +DTSTART:18680101T000000 +RDATE:18680101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1130 +TZOFFSETTO:+1200 +TZNAME:NZHDT +DTSTART:19271126T020000 +RDATE:19271126T020000 +RDATE:19281104T020000 +RDATE:19291030T020000 +RDATE:19301012T020000 +RDATE:19311011T020000 +RDATE:19321009T020000 +RDATE:19331008T020000 +RDATE:19340930T020000 +RDATE:19350929T020000 +RDATE:19360927T020000 +RDATE:19370926T020000 +RDATE:19380925T020000 +RDATE:19390924T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1200 +TZOFFSETTO:+1130 +TZNAME:NZST +DTSTART:19280304T020000 +RDATE:19280304T020000 +RDATE:19290303T020000 +RDATE:19300316T020000 +RDATE:19310315T020000 +RDATE:19320320T020000 +RDATE:19330319T020000 +RDATE:19340429T020000 +RDATE:19350428T020000 +RDATE:19360426T020000 +RDATE:19370425T020000 +RDATE:19380424T020000 +RDATE:19390430T020000 +RDATE:19400428T020000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+1130 +TZOFFSETTO:+1200 +TZNAME:NZST +DTSTART:19400929T020000 +RDATE:19400929T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1200 +TZOFFSETTO:+1300 +TZNAME:NZDT +DTSTART:19741103T020000 +RDATE:19741103T020000 +RDATE:19751026T020000 +RDATE:19761031T020000 +RDATE:19771030T020000 +RDATE:19781029T020000 +RDATE:19791028T020000 +RDATE:19801026T020000 +RDATE:19811025T020000 +RDATE:19821031T020000 +RDATE:19831030T020000 +RDATE:19841028T020000 +RDATE:19851027T020000 +RDATE:19861026T020000 +RDATE:19871025T020000 +RDATE:19881030T020000 +RDATE:19891008T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1300 +TZOFFSETTO:+1200 +TZNAME:NZST +DTSTART:19750223T030000 +RDATE:19750223T030000 +RDATE:19760307T030000 +RDATE:19770306T030000 +RDATE:19780305T030000 +RDATE:19790304T030000 +RDATE:19800302T030000 +RDATE:19810301T030000 +RDATE:19820307T030000 +RDATE:19830306T030000 +RDATE:19840304T030000 +RDATE:19850303T030000 +RDATE:19860302T030000 +RDATE:19870301T030000 +RDATE:19880306T030000 +RDATE:19890305T030000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Chatham.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Chatham.ics new file mode 100644 index 00000000000..99f0672b904 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Chatham.ics @@ -0,0 +1,29 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Chatham +X-LIC-LOCATION:Pacific/Chatham +BEGIN:DAYLIGHT +TZOFFSETFROM:+1245 +TZOFFSETTO:+1345 +TZNAME:CHADT +DTSTART:19901007T024500 +RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=1,2,3,4,5,6,7;BYDAY=SU +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1345 +TZOFFSETTO:+1245 +TZNAME:CHAST +DTSTART:19910317T034500 +RRULE:FREQ=YEARLY;BYMONTH=3;BYMONTHDAY=15,16,17,18,19,20,21;BYDAY=SU +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+1245 +TZNAME:CHAST +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Easter.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Easter.ics new file mode 100644 index 00000000000..a1823930ce3 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Easter.ics @@ -0,0 +1,140 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Easter +X-LIC-LOCATION:Pacific/Easter +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:EASST +DTSTART:19991009T220000 +RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=8,9,10,11,12,13,14;BYDAY=SA +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:EAST +DTSTART:20000311T220000 +RRULE:FREQ=YEARLY;BYMONTH=3;BYMONTHDAY=8,9,10,11,12,13,14;BYDAY=SA +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-071728 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-071728 +TZOFFSETTO:-071728 +TZNAME:MMT +DTSTART:18900101T000000 +RDATE:18900101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-071728 +TZOFFSETTO:-0700 +TZNAME:EAST +DTSTART:19320901T000000 +RDATE:19320901T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:EASST +DTSTART:19661008T210000 +RDATE:19661008T210000 +RDATE:19671014T210000 +RDATE:19681012T210000 +RDATE:19691011T210000 +RDATE:19701010T210000 +RDATE:19711009T210000 +RDATE:19721014T210000 +RDATE:19731013T210000 +RDATE:19741012T210000 +RDATE:19751011T210000 +RDATE:19761009T210000 +RDATE:19771008T210000 +RDATE:19781014T210000 +RDATE:19791013T210000 +RDATE:19801011T210000 +RDATE:19811010T210000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0600 +TZOFFSETTO:-0700 +TZNAME:EAST +DTSTART:19670311T210000 +RDATE:19670311T210000 +RDATE:19680309T210000 +RDATE:19690308T210000 +RDATE:19700314T210000 +RDATE:19710313T210000 +RDATE:19720311T210000 +RDATE:19730310T210000 +RDATE:19740309T210000 +RDATE:19750308T210000 +RDATE:19760313T210000 +RDATE:19770312T210000 +RDATE:19780311T210000 +RDATE:19790310T210000 +RDATE:19800308T210000 +RDATE:19810314T210000 +RDATE:19820313T210000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0700 +TZOFFSETTO:-0600 +TZNAME:EAST +DTSTART:19820314T000000 +RDATE:19820314T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-0600 +TZOFFSETTO:-0500 +TZNAME:EASST +DTSTART:19821009T220000 +RDATE:19821009T220000 +RDATE:19831008T220000 +RDATE:19841013T220000 +RDATE:19851012T220000 +RDATE:19861011T220000 +RDATE:19871010T220000 +RDATE:19881008T220000 +RDATE:19891014T220000 +RDATE:19901013T220000 +RDATE:19911012T220000 +RDATE:19921010T220000 +RDATE:19931009T220000 +RDATE:19941008T220000 +RDATE:19951014T220000 +RDATE:19961012T220000 +RDATE:19971011T220000 +RDATE:19980926T220000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:EAST +DTSTART:19830312T220000 +RDATE:19830312T220000 +RDATE:19840310T220000 +RDATE:19850309T220000 +RDATE:19860308T220000 +RDATE:19870314T220000 +RDATE:19880312T220000 +RDATE:19890311T220000 +RDATE:19900310T220000 +RDATE:19910309T220000 +RDATE:19920314T220000 +RDATE:19930313T220000 +RDATE:19940312T220000 +RDATE:19950311T220000 +RDATE:19960309T220000 +RDATE:19970308T220000 +RDATE:19980314T220000 +RDATE:19990403T220000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Efate.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Efate.ics new file mode 100644 index 00000000000..33e06fc8bd1 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Efate.ics @@ -0,0 +1,54 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Efate +X-LIC-LOCATION:Pacific/Efate +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+111316 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+111316 +TZOFFSETTO:+1100 +TZNAME:VUT +DTSTART:19120113T000000 +RDATE:19120113T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1100 +TZOFFSETTO:+1200 +TZNAME:VUST +DTSTART:19830925T000000 +RDATE:19830925T000000 +RDATE:19841023T000000 +RDATE:19850929T000000 +RDATE:19860928T000000 +RDATE:19870927T000000 +RDATE:19880925T000000 +RDATE:19890924T000000 +RDATE:19900923T000000 +RDATE:19910929T000000 +RDATE:19921025T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1200 +TZOFFSETTO:+1100 +TZNAME:VUT +DTSTART:19840325T000000 +RDATE:19840325T000000 +RDATE:19850324T000000 +RDATE:19860323T000000 +RDATE:19870329T000000 +RDATE:19880327T000000 +RDATE:19890326T000000 +RDATE:19900325T000000 +RDATE:19910324T000000 +RDATE:19920126T000000 +RDATE:19930124T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Enderbury.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Enderbury.ics new file mode 100644 index 00000000000..4049f7c83b8 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Enderbury.ics @@ -0,0 +1,36 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Enderbury +X-LIC-LOCATION:Pacific/Enderbury +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-112420 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-112420 +TZOFFSETTO:-1200 +TZNAME:PHOT +DTSTART:19010101T000000 +RDATE:19010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-1200 +TZOFFSETTO:-1100 +TZNAME:PHOT +DTSTART:19791001T000000 +RDATE:19791001T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-1100 +TZOFFSETTO:+1300 +TZNAME:PHOT +DTSTART:19950101T000000 +RDATE:19950101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Fakaofo.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Fakaofo.ics new file mode 100644 index 00000000000..a37d70e4d57 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Fakaofo.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Fakaofo +X-LIC-LOCATION:Pacific/Fakaofo +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-112456 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-112456 +TZOFFSETTO:-1000 +TZNAME:TKT +DTSTART:19010101T000000 +RDATE:19010101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Fiji.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Fiji.ics new file mode 100644 index 00000000000..8eaa299dc57 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Fiji.ics @@ -0,0 +1,38 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Fiji +X-LIC-LOCATION:Pacific/Fiji +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+115340 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+115340 +TZOFFSETTO:+1200 +TZNAME:FJT +DTSTART:19151026T000000 +RDATE:19151026T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1200 +TZOFFSETTO:+1300 +TZNAME:FJST +DTSTART:19981101T020000 +RDATE:19981101T020000 +RDATE:19991107T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1300 +TZOFFSETTO:+1200 +TZNAME:FJT +DTSTART:19990228T030000 +RDATE:19990228T030000 +RDATE:20000227T030000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Funafuti.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Funafuti.ics new file mode 100644 index 00000000000..6f5fe65ae7b --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Funafuti.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Funafuti +X-LIC-LOCATION:Pacific/Funafuti +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+115652 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+115652 +TZOFFSETTO:+1200 +TZNAME:TVT +DTSTART:19010101T000000 +RDATE:19010101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Galapagos.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Galapagos.ics new file mode 100644 index 00000000000..18e93aa761c --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Galapagos.ics @@ -0,0 +1,29 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Galapagos +X-LIC-LOCATION:Pacific/Galapagos +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-055824 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-055824 +TZOFFSETTO:-0500 +TZNAME:ECT +DTSTART:19310101T000000 +RDATE:19310101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0500 +TZOFFSETTO:-0600 +TZNAME:GALT +DTSTART:19860101T000000 +RDATE:19860101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Gambier.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Gambier.ics new file mode 100644 index 00000000000..02c583168d0 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Gambier.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Gambier +X-LIC-LOCATION:Pacific/Gambier +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-085948 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-085948 +TZOFFSETTO:-0900 +TZNAME:GAMT +DTSTART:19121001T000000 +RDATE:19121001T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Guadalcanal.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Guadalcanal.ics new file mode 100644 index 00000000000..8f8b9198c6c --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Guadalcanal.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Guadalcanal +X-LIC-LOCATION:Pacific/Guadalcanal +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+103948 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+103948 +TZOFFSETTO:+1100 +TZNAME:SBT +DTSTART:19121001T000000 +RDATE:19121001T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Guam.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Guam.ics new file mode 100644 index 00000000000..02b080b65f1 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Guam.ics @@ -0,0 +1,36 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Guam +X-LIC-LOCATION:Pacific/Guam +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-1421 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-1421 +TZOFFSETTO:+0939 +TZNAME:LMT +DTSTART:18441231T000000 +RDATE:18441231T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0939 +TZOFFSETTO:+1000 +TZNAME:GST +DTSTART:19010101T000000 +RDATE:19010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+1000 +TZOFFSETTO:+1000 +TZNAME:ChST +DTSTART:20001223T000000 +RDATE:20001223T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Honolulu.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Honolulu.ics new file mode 100644 index 00000000000..16c124d1ae3 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Honolulu.ics @@ -0,0 +1,58 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Honolulu +X-LIC-LOCATION:Pacific/Honolulu +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-103126 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-103126 +TZOFFSETTO:-1030 +TZNAME:HST +DTSTART:19000101T120000 +RDATE:19000101T120000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-1030 +TZOFFSETTO:-0930 +TZNAME:HDT +DTSTART:19330430T020000 +RDATE:19330430T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0930 +TZOFFSETTO:-1030 +TZNAME:HST +DTSTART:19330521T020000 +RDATE:19330521T020000 +RDATE:19450930T020000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-1030 +TZOFFSETTO:-0930 +TZNAME:HWT +DTSTART:19420209T020000 +RDATE:19420209T020000 +END:DAYLIGHT +BEGIN:DAYLIGHT +TZOFFSETFROM:-0930 +TZOFFSETTO:-0930 +TZNAME:HPT +DTSTART:19450814T133000 +RDATE:19450814T133000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-1030 +TZOFFSETTO:-1000 +TZNAME:HST +DTSTART:19470608T020000 +RDATE:19470608T020000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Johnston.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Johnston.ics new file mode 100644 index 00000000000..1ba7640633c --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Johnston.ics @@ -0,0 +1,15 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Johnston +X-LIC-LOCATION:Pacific/Johnston +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-1000 +TZNAME:HST +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Kiritimati.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Kiritimati.ics new file mode 100644 index 00000000000..8cdc601482b --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Kiritimati.ics @@ -0,0 +1,36 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Kiritimati +X-LIC-LOCATION:Pacific/Kiritimati +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-102920 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-102920 +TZOFFSETTO:-1040 +TZNAME:LINT +DTSTART:19010101T000000 +RDATE:19010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-1040 +TZOFFSETTO:-1000 +TZNAME:LINT +DTSTART:19791001T000000 +RDATE:19791001T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-1000 +TZOFFSETTO:+1400 +TZNAME:LINT +DTSTART:19950101T000000 +RDATE:19950101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Kosrae.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Kosrae.ics new file mode 100644 index 00000000000..078ab1f8348 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Kosrae.ics @@ -0,0 +1,36 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Kosrae +X-LIC-LOCATION:Pacific/Kosrae +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+105156 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+105156 +TZOFFSETTO:+1100 +TZNAME:KOST +DTSTART:19010101T000000 +RDATE:19010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+1100 +TZOFFSETTO:+1200 +TZNAME:KOST +DTSTART:19691001T000000 +RDATE:19691001T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+1200 +TZOFFSETTO:+1100 +TZNAME:KOST +DTSTART:19990101T000000 +RDATE:19990101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Kwajalein.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Kwajalein.ics new file mode 100644 index 00000000000..0ad857b8a37 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Kwajalein.ics @@ -0,0 +1,36 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Kwajalein +X-LIC-LOCATION:Pacific/Kwajalein +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+110920 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+110920 +TZOFFSETTO:+1100 +TZNAME:MHT +DTSTART:19010101T000000 +RDATE:19010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+1100 +TZOFFSETTO:-1200 +TZNAME:KWAT +DTSTART:19691001T000000 +RDATE:19691001T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-1200 +TZOFFSETTO:+1200 +TZNAME:MHT +DTSTART:19930820T000000 +RDATE:19930820T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Majuro.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Majuro.ics new file mode 100644 index 00000000000..18b5e2da2d1 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Majuro.ics @@ -0,0 +1,29 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Majuro +X-LIC-LOCATION:Pacific/Majuro +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+112448 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+112448 +TZOFFSETTO:+1100 +TZNAME:MHT +DTSTART:19010101T000000 +RDATE:19010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+1100 +TZOFFSETTO:+1200 +TZNAME:MHT +DTSTART:19691001T000000 +RDATE:19691001T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Marquesas.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Marquesas.ics new file mode 100644 index 00000000000..82ac55cd5e6 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Marquesas.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Marquesas +X-LIC-LOCATION:Pacific/Marquesas +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-0918 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0918 +TZOFFSETTO:-0930 +TZNAME:MART +DTSTART:19121001T000000 +RDATE:19121001T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Midway.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Midway.ics new file mode 100644 index 00000000000..4edda6c918b --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Midway.ics @@ -0,0 +1,36 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Midway +X-LIC-LOCATION:Pacific/Midway +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-114928 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-114928 +TZOFFSETTO:-1100 +TZNAME:NST +DTSTART:19010101T000000 +RDATE:19010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-1100 +TZOFFSETTO:-1100 +TZNAME:BST +DTSTART:19670401T000000 +RDATE:19670401T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-1100 +TZOFFSETTO:-1100 +TZNAME:SST +DTSTART:19831130T000000 +RDATE:19831130T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Nauru.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Nauru.ics new file mode 100644 index 00000000000..02a970fee80 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Nauru.ics @@ -0,0 +1,43 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Nauru +X-LIC-LOCATION:Pacific/Nauru +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+110740 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+110740 +TZOFFSETTO:+1130 +TZNAME:NRT +DTSTART:19210115T000000 +RDATE:19210115T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+1130 +TZOFFSETTO:+0900 +TZNAME:JST +DTSTART:19420315T000000 +RDATE:19420315T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+1130 +TZNAME:NRT +DTSTART:19440815T000000 +RDATE:19440815T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+1130 +TZOFFSETTO:+1200 +TZNAME:NRT +DTSTART:19790501T000000 +RDATE:19790501T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Niue.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Niue.ics new file mode 100644 index 00000000000..3d1bf8a413e --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Niue.ics @@ -0,0 +1,36 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Niue +X-LIC-LOCATION:Pacific/Niue +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-111940 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-111940 +TZOFFSETTO:-1120 +TZNAME:NUT +DTSTART:19010101T000000 +RDATE:19010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-1120 +TZOFFSETTO:-1130 +TZNAME:NUT +DTSTART:19510101T000000 +RDATE:19510101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-1130 +TZOFFSETTO:-1100 +TZNAME:NUT +DTSTART:19781001T000000 +RDATE:19781001T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Norfolk.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Norfolk.ics new file mode 100644 index 00000000000..211b2cbd6b6 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Norfolk.ics @@ -0,0 +1,29 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Norfolk +X-LIC-LOCATION:Pacific/Norfolk +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+111152 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+111152 +TZOFFSETTO:+1112 +TZNAME:NMT +DTSTART:19010101T000000 +RDATE:19010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+1112 +TZOFFSETTO:+1130 +TZNAME:NFT +DTSTART:19510101T000000 +RDATE:19510101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Noumea.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Noumea.ics new file mode 100644 index 00000000000..a51b2498c26 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Noumea.ics @@ -0,0 +1,40 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Noumea +X-LIC-LOCATION:Pacific/Noumea +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+110548 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+110548 +TZOFFSETTO:+1100 +TZNAME:NCT +DTSTART:19120113T000000 +RDATE:19120113T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1100 +TZOFFSETTO:+1200 +TZNAME:NCST +DTSTART:19771204T000000 +RDATE:19771204T000000 +RDATE:19781203T000000 +RDATE:19961201T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1200 +TZOFFSETTO:+1100 +TZNAME:NCT +DTSTART:19780227T000000 +RDATE:19780227T000000 +RDATE:19790227T000000 +RDATE:19970302T030000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Pago_Pago.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Pago_Pago.ics new file mode 100644 index 00000000000..ea01f5fa87b --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Pago_Pago.ics @@ -0,0 +1,50 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Pago_Pago +X-LIC-LOCATION:Pacific/Pago_Pago +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+123712 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+123712 +TZOFFSETTO:-112248 +TZNAME:LMT +DTSTART:18790705T000000 +RDATE:18790705T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-112248 +TZOFFSETTO:-1130 +TZNAME:SAMT +DTSTART:19110101T000000 +RDATE:19110101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-1130 +TZOFFSETTO:-1100 +TZNAME:NST +DTSTART:19500101T000000 +RDATE:19500101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-1100 +TZOFFSETTO:-1100 +TZNAME:BST +DTSTART:19670401T000000 +RDATE:19670401T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-1100 +TZOFFSETTO:-1100 +TZNAME:SST +DTSTART:19831130T000000 +RDATE:19831130T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Palau.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Palau.ics new file mode 100644 index 00000000000..8e27f0b433a --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Palau.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Palau +X-LIC-LOCATION:Pacific/Palau +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+085756 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+085756 +TZOFFSETTO:+0900 +TZNAME:PWT +DTSTART:19010101T000000 +RDATE:19010101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Pitcairn.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Pitcairn.ics new file mode 100644 index 00000000000..bc4e3096ac5 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Pitcairn.ics @@ -0,0 +1,29 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Pitcairn +X-LIC-LOCATION:Pacific/Pitcairn +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-084020 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-084020 +TZOFFSETTO:-0830 +TZNAME:PNT +DTSTART:19010101T000000 +RDATE:19010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-0830 +TZOFFSETTO:-0800 +TZNAME:PST +DTSTART:19980427T000000 +RDATE:19980427T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Ponape.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Ponape.ics new file mode 100644 index 00000000000..784a63afc30 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Ponape.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Ponape +X-LIC-LOCATION:Pacific/Ponape +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+103252 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+103252 +TZOFFSETTO:+1100 +TZNAME:PONT +DTSTART:19010101T000000 +RDATE:19010101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Port_Moresby.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Port_Moresby.ics new file mode 100644 index 00000000000..1d57091443f --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Port_Moresby.ics @@ -0,0 +1,29 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Port_Moresby +X-LIC-LOCATION:Pacific/Port_Moresby +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+094840 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+094840 +TZOFFSETTO:+094840 +TZNAME:PMMT +DTSTART:18800101T000000 +RDATE:18800101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+094840 +TZOFFSETTO:+1000 +TZNAME:PGT +DTSTART:18950101T000000 +RDATE:18950101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Rarotonga.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Rarotonga.ics new file mode 100644 index 00000000000..a32b4def67c --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Rarotonga.ics @@ -0,0 +1,66 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Rarotonga +X-LIC-LOCATION:Pacific/Rarotonga +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-103904 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-103904 +TZOFFSETTO:-1030 +TZNAME:CKT +DTSTART:19010101T000000 +RDATE:19010101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-1030 +TZOFFSETTO:-0930 +TZNAME:CKHST +DTSTART:19781112T000000 +RDATE:19781112T000000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:-0930 +TZOFFSETTO:-1000 +TZNAME:CKT +DTSTART:19790304T000000 +RDATE:19790304T000000 +RDATE:19800302T000000 +RDATE:19810301T000000 +RDATE:19820307T000000 +RDATE:19830306T000000 +RDATE:19840304T000000 +RDATE:19850303T000000 +RDATE:19860302T000000 +RDATE:19870301T000000 +RDATE:19880306T000000 +RDATE:19890305T000000 +RDATE:19900304T000000 +RDATE:19910303T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:-1000 +TZOFFSETTO:-0930 +TZNAME:CKHST +DTSTART:19791028T000000 +RDATE:19791028T000000 +RDATE:19801026T000000 +RDATE:19811025T000000 +RDATE:19821031T000000 +RDATE:19831030T000000 +RDATE:19841028T000000 +RDATE:19851027T000000 +RDATE:19861026T000000 +RDATE:19871025T000000 +RDATE:19881030T000000 +RDATE:19891029T000000 +RDATE:19901028T000000 +END:DAYLIGHT +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Saipan.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Saipan.ics new file mode 100644 index 00000000000..8a91f7d1faf --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Saipan.ics @@ -0,0 +1,43 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Saipan +X-LIC-LOCATION:Pacific/Saipan +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-1417 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-1417 +TZOFFSETTO:+0943 +TZNAME:LMT +DTSTART:18441231T000000 +RDATE:18441231T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0943 +TZOFFSETTO:+0900 +TZNAME:MPT +DTSTART:19010101T000000 +RDATE:19010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+1000 +TZNAME:MPT +DTSTART:19691001T000000 +RDATE:19691001T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+1000 +TZOFFSETTO:+1000 +TZNAME:ChST +DTSTART:20001223T000000 +RDATE:20001223T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Tahiti.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Tahiti.ics new file mode 100644 index 00000000000..c6a152432d9 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Tahiti.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Tahiti +X-LIC-LOCATION:Pacific/Tahiti +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:-095816 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:-095816 +TZOFFSETTO:-1000 +TZNAME:TAHT +DTSTART:19121001T000000 +RDATE:19121001T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Tarawa.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Tarawa.ics new file mode 100644 index 00000000000..27c9bc7da89 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Tarawa.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Tarawa +X-LIC-LOCATION:Pacific/Tarawa +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+113204 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+113204 +TZOFFSETTO:+1200 +TZNAME:GILT +DTSTART:19010101T000000 +RDATE:19010101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Tongatapu.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Tongatapu.ics new file mode 100644 index 00000000000..daa104617b7 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Tongatapu.ics @@ -0,0 +1,52 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Tongatapu +X-LIC-LOCATION:Pacific/Tongatapu +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+121920 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+121920 +TZOFFSETTO:+1220 +TZNAME:TOT +DTSTART:19010101T000000 +RDATE:19010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+1220 +TZOFFSETTO:+1300 +TZNAME:TOT +DTSTART:19410101T000000 +RDATE:19410101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+1300 +TZOFFSETTO:+1300 +TZNAME:TOT +DTSTART:19990101T000000 +RDATE:19990101T000000 +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1300 +TZOFFSETTO:+1400 +TZNAME:TOST +DTSTART:19991007T020000 +RDATE:19991007T020000 +RDATE:20001104T020000 +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1400 +TZOFFSETTO:+1300 +TZNAME:TOT +DTSTART:20000319T030000 +RDATE:20000319T030000 +RDATE:20010127T030000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Truk.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Truk.ics new file mode 100644 index 00000000000..d243253f5ff --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Truk.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Truk +X-LIC-LOCATION:Pacific/Truk +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+100708 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+100708 +TZOFFSETTO:+1000 +TZNAME:TRUT +DTSTART:19010101T000000 +RDATE:19010101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Wake.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Wake.ics new file mode 100644 index 00000000000..d36c2f5f7ff --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Wake.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Wake +X-LIC-LOCATION:Pacific/Wake +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+110628 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+110628 +TZOFFSETTO:+1200 +TZNAME:WAKT +DTSTART:19010101T000000 +RDATE:19010101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Wallis.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Wallis.ics new file mode 100644 index 00000000000..f0f5b04d844 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Wallis.ics @@ -0,0 +1,22 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Wallis +X-LIC-LOCATION:Pacific/Wallis +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+121520 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+121520 +TZOFFSETTO:+1200 +TZNAME:WFT +DTSTART:19010101T000000 +RDATE:19010101T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/Pacific/Yap.ics b/mozilla/calendar/libical/zoneinfo/Pacific/Yap.ics new file mode 100644 index 00000000000..e0ea08bd624 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/Pacific/Yap.ics @@ -0,0 +1,29 @@ +BEGIN:VCALENDAR +PRODID:-//Ximian//NONSGML Evolution Olson-VTIMEZONE Converter//EN +VERSION:2.0 +BEGIN:VTIMEZONE +TZID:/softwarestudio.org/Olson_20010626_2/Pacific/Yap +X-LIC-LOCATION:Pacific/Yap +BEGIN:STANDARD +TZOFFSETFROM:+0000 +TZOFFSETTO:+091232 +TZNAME:LMT +DTSTART:00010101T000000 +RDATE:00010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+091232 +TZOFFSETTO:+0900 +TZNAME:YAPT +DTSTART:19010101T000000 +RDATE:19010101T000000 +END:STANDARD +BEGIN:STANDARD +TZOFFSETFROM:+0900 +TZOFFSETTO:+1000 +TZNAME:YAPT +DTSTART:19691001T000000 +RDATE:19691001T000000 +END:STANDARD +END:VTIMEZONE +END:VCALENDAR diff --git a/mozilla/calendar/libical/zoneinfo/zones.tab b/mozilla/calendar/libical/zoneinfo/zones.tab new file mode 100644 index 00000000000..5c35c4c06c5 --- /dev/null +++ b/mozilla/calendar/libical/zoneinfo/zones.tab @@ -0,0 +1,373 @@ ++0051900 -0040200 Africa/Abidjan ++0053300 +0001300 Africa/Accra ++0090200 +0384200 Africa/Addis_Ababa ++0364700 +0030300 Africa/Algiers ++0152000 +0385300 Africa/Asmera ++0123900 -0080000 Africa/Bamako ++0042200 +0183500 Africa/Bangui ++0132800 -0163900 Africa/Banjul ++0115100 -0153500 Africa/Bissau +-0154700 +0350000 Africa/Blantyre +-0041600 +0151700 Africa/Brazzaville +-0032300 +0292200 Africa/Bujumbura ++0300300 +0311500 Africa/Cairo ++0333900 -0073500 Africa/Casablanca ++0355300 -0051900 Africa/Ceuta ++0093100 -0134300 Africa/Conakry ++0144000 -0172600 Africa/Dakar +-0064800 +0391700 Africa/Dar_es_Salaam ++0113600 +0430900 Africa/Djibouti ++0040300 +0094200 Africa/Douala ++0270900 -0131200 Africa/El_Aaiun ++0083000 -0131500 Africa/Freetown +-0254500 +0255500 Africa/Gaborone +-0175000 +0310300 Africa/Harare +-0261500 +0280000 Africa/Johannesburg ++0001900 +0322500 Africa/Kampala ++0153600 +0323200 Africa/Khartoum +-0015700 +0300400 Africa/Kigali +-0041800 +0151800 Africa/Kinshasa ++0062700 +0032400 Africa/Lagos ++0002300 +0092700 Africa/Libreville ++0060800 +0011300 Africa/Lome +-0084800 +0131400 Africa/Luanda +-0114000 +0272800 Africa/Lubumbashi +-0152500 +0281700 Africa/Lusaka ++0034500 +0084700 Africa/Malabo +-0255800 +0323500 Africa/Maputo +-0292800 +0273000 Africa/Maseru +-0261800 +0310600 Africa/Mbabane ++0020400 +0452200 Africa/Mogadishu ++0061800 -0104700 Africa/Monrovia +-0011700 +0364900 Africa/Nairobi ++0120700 +0150300 Africa/Ndjamena ++0133100 +0020700 Africa/Niamey ++0180600 -0155700 Africa/Nouakchott ++0122200 -0013100 Africa/Ouagadougou ++0062900 +0023700 Africa/Porto-Novo ++0002000 +0064400 Africa/Sao_Tome ++0144600 -0030100 Africa/Timbuktu ++0325400 +0131100 Africa/Tripoli ++0364800 +0101100 Africa/Tunis +-0223400 +0170600 Africa/Windhoek ++0515248 -1763929 America/Adak ++0611305 -1495401 America/Anchorage ++0181200 -0630400 America/Anguilla ++0170300 -0614800 America/Antigua +-0071200 -0481200 America/Araguaina ++0123000 -0685800 America/Aruba +-0251600 -0574000 America/Asuncion ++0130600 -0593700 America/Barbados +-0012700 -0482900 America/Belem ++0173000 -0881200 America/Belize ++0024900 -0604000 America/Boa_Vista ++0043600 -0740500 America/Bogota ++0433649 -1161209 America/Boise +-0343600 -0582700 America/Buenos_Aires ++0690300 -1050500 America/Cambridge_Bay ++0210500 -0864600 America/Cancun ++0103000 -0665600 America/Caracas +-0282800 -0654700 America/Catamarca ++0045600 -0522000 America/Cayenne ++0191800 -0812300 America/Cayman ++0415100 -0873900 America/Chicago ++0283800 -1060500 America/Chihuahua +-0312400 -0641100 America/Cordoba ++0095600 -0840500 America/Costa_Rica +-0153500 -0560500 America/Cuiaba ++0121100 -0690000 America/Curacao ++0640400 -1392500 America/Dawson ++0594600 -1201400 America/Dawson_Creek ++0394421 -1045903 America/Denver ++0421953 -0830245 America/Detroit ++0151800 -0612400 America/Dominica ++0533300 -1132800 America/Edmonton +-0064000 -0695200 America/Eirunepe ++0134200 -0891200 America/El_Salvador +-0034300 -0383000 America/Fortaleza ++0461200 -0595700 America/Glace_Bay ++0641100 -0514400 America/Godthab ++0532000 -0602500 America/Goose_Bay ++0212800 -0710800 America/Grand_Turk ++0120300 -0614500 America/Grenada ++0161400 -0613200 America/Guadeloupe ++0143800 -0903100 America/Guatemala +-0021000 -0795000 America/Guayaquil ++0064800 -0581000 America/Guyana ++0443900 -0633600 America/Halifax ++0230800 -0822200 America/Havana ++0290400 -1105800 America/Hermosillo ++0394606 -0860929 America/Indiana/Indianapolis ++0411745 -0863730 America/Indiana/Knox ++0382232 -0862041 America/Indiana/Marengo ++0384452 -0850402 America/Indiana/Vevay ++0394606 -0860929 America/Indianapolis ++0682500 -1133000 America/Inuvik ++0634400 -0682800 America/Iqaluit ++0180000 -0764800 America/Jamaica +-0241100 -0651800 America/Jujuy ++0581807 -1342511 America/Juneau ++0381515 -0854534 America/Kentucky/Louisville ++0364947 -0845057 America/Kentucky/Monticello +-0163000 -0680900 America/La_Paz +-0120300 -0770300 America/Lima ++0340308 -1181434 America/Los_Angeles ++0381515 -0854534 America/Louisville +-0094000 -0354300 America/Maceio ++0120900 -0861700 America/Managua +-0030800 -0600100 America/Manaus ++0143600 -0610500 America/Martinique ++0231300 -1062500 America/Mazatlan +-0325300 -0684900 America/Mendoza ++0450628 -0873651 America/Menominee ++0205800 -0893700 America/Merida ++0192400 -0990900 America/Mexico_City ++0470300 -0562000 America/Miquelon ++0254000 -1001900 America/Monterrey +-0345300 -0561100 America/Montevideo ++0453100 -0733400 America/Montreal ++0164400 -0621300 America/Montserrat ++0250500 -0772100 America/Nassau ++0404251 -0740023 America/New_York ++0490100 -0881600 America/Nipigon ++0643004 -1652423 America/Nome +-0035100 -0322500 America/Noronha ++0085800 -0793200 America/Panama ++0660800 -0654400 America/Pangnirtung ++0055000 -0551000 America/Paramaribo ++0332654 -1120424 America/Phoenix ++0183200 -0722000 America/Port-au-Prince ++0103900 -0613100 America/Port_of_Spain +-0084600 -0635400 America/Porto_Velho ++0182806 -0660622 America/Puerto_Rico ++0484300 -0942900 America/Rainy_River ++0624500 -0921000 America/Rankin_Inlet +-0080300 -0345400 America/Recife ++0502400 -1043900 America/Regina +-0095800 -0674800 America/Rio_Branco +-0325700 -0604000 America/Rosario +-0332700 -0704000 America/Santiago ++0182800 -0695400 America/Santo_Domingo +-0233200 -0463700 America/Sao_Paulo ++0703000 -0221500 America/Scoresbysund ++0364708 -1084111 America/Shiprock ++0473400 -0524300 America/St_Johns ++0171800 -0624300 America/St_Kitts ++0140100 -0610000 America/St_Lucia ++0182100 -0645600 America/St_Thomas ++0130900 -0611400 America/St_Vincent ++0501700 -1075000 America/Swift_Current ++0140600 -0871300 America/Tegucigalpa ++0763400 -0684700 America/Thule ++0482300 -0891500 America/Thunder_Bay ++0323200 -1170100 America/Tijuana ++0182700 -0643700 America/Tortola ++0491600 -1230700 America/Vancouver ++0604300 -1350300 America/Whitehorse ++0495300 -0970900 America/Winnipeg ++0593249 -1394338 America/Yakutat ++0622700 -1142100 America/Yellowknife +-0661700 +1103100 Antarctica/Casey +-0683500 +0775800 Antarctica/Davis +-0664000 +1400100 Antarctica/DumontDUrville +-0673600 +0625300 Antarctica/Mawson +-0775000 +1663600 Antarctica/McMurdo +-0644800 -0640600 Antarctica/Palmer +-0900000 +0000000 Antarctica/South_Pole +-0690022 +0393524 Antarctica/Syowa +-0782400 +1065400 Antarctica/Vostok ++0780000 +0160000 Arctic/Longyearbyen ++0124500 +0451200 Asia/Aden ++0431500 +0765700 Asia/Almaty ++0315700 +0355600 Asia/Amman ++0644500 +1772900 Asia/Anadyr ++0443100 +0501600 Asia/Aqtau ++0501700 +0571000 Asia/Aqtobe ++0375700 +0582300 Asia/Ashgabat ++0332100 +0442500 Asia/Baghdad ++0262300 +0503500 Asia/Bahrain ++0402300 +0495100 Asia/Baku ++0134500 +1003100 Asia/Bangkok ++0335300 +0353000 Asia/Beirut ++0425400 +0743600 Asia/Bishkek ++0045600 +1145500 Asia/Brunei ++0223200 +0882200 Asia/Calcutta ++0293400 +1063500 Asia/Chungking ++0065600 +0795100 Asia/Colombo ++0333000 +0361800 Asia/Damascus ++0234300 +0902500 Asia/Dhaka +-0083300 +1253500 Asia/Dili ++0251800 +0551800 Asia/Dubai ++0383500 +0684800 Asia/Dushanbe ++0313000 +0342800 Asia/Gaza ++0454500 +1264100 Asia/Harbin ++0221700 +1140900 Asia/Hong_Kong ++0480100 +0913900 Asia/Hovd ++0521600 +1042000 Asia/Irkutsk ++0410100 +0285800 Asia/Istanbul +-0061000 +1064800 Asia/Jakarta +-0023200 +1404200 Asia/Jayapura ++0314600 +0351400 Asia/Jerusalem ++0343100 +0691200 Asia/Kabul ++0530100 +1583900 Asia/Kamchatka ++0245200 +0670300 Asia/Karachi ++0392900 +0755900 Asia/Kashgar ++0274300 +0851900 Asia/Katmandu ++0560100 +0925000 Asia/Krasnoyarsk ++0031000 +1014200 Asia/Kuala_Lumpur ++0013300 +1102000 Asia/Kuching ++0292000 +0475900 Asia/Kuwait ++0221400 +1133500 Asia/Macao ++0593400 +1504800 Asia/Magadan ++0143500 +1210000 Asia/Manila ++0233600 +0583500 Asia/Muscat ++0351000 +0332200 Asia/Nicosia ++0550200 +0825500 Asia/Novosibirsk ++0550000 +0732400 Asia/Omsk ++0113300 +1045500 Asia/Phnom_Penh ++0000200 +1092000 Asia/Pontianak ++0390100 +1254500 Asia/Pyongyang ++0251700 +0513200 Asia/Qatar ++0164700 +0961000 Asia/Rangoon ++0243800 +0464300 Asia/Riyadh ++0104500 +1064000 Asia/Saigon ++0394000 +0664800 Asia/Samarkand ++0373300 +1265800 Asia/Seoul ++0311400 +1212800 Asia/Shanghai ++0011700 +1035100 Asia/Singapore ++0250300 +1213000 Asia/Taipei ++0412000 +0691800 Asia/Tashkent ++0414300 +0444900 Asia/Tbilisi ++0354000 +0512600 Asia/Tehran ++0272800 +0893900 Asia/Thimphu ++0353916 +1394441 Asia/Tokyo +-0050700 +1192400 Asia/Ujung_Pandang ++0475500 +1065300 Asia/Ulaanbaatar ++0434800 +0873500 Asia/Urumqi ++0175800 +1023600 Asia/Vientiane ++0431000 +1315600 Asia/Vladivostok ++0620000 +1294000 Asia/Yakutsk ++0565100 +0603600 Asia/Yekaterinburg ++0401100 +0443000 Asia/Yerevan ++0374400 -0254000 Atlantic/Azores ++0321700 -0644600 Atlantic/Bermuda ++0280600 -0152400 Atlantic/Canary ++0145500 -0233100 Atlantic/Cape_Verde ++0620100 -0064600 Atlantic/Faeroe ++0705900 -0080500 Atlantic/Jan_Mayen ++0323800 -0165400 Atlantic/Madeira ++0640900 -0215100 Atlantic/Reykjavik +-0541600 -0363200 Atlantic/South_Georgia +-0155500 -0054200 Atlantic/St_Helena +-0514200 -0575100 Atlantic/Stanley +-0345500 +1383500 Australia/Adelaide +-0272800 +1530200 Australia/Brisbane +-0315700 +1412700 Australia/Broken_Hill +-0122800 +1305000 Australia/Darwin +-0425300 +1471900 Australia/Hobart +-0201600 +1490000 Australia/Lindeman +-0313300 +1590500 Australia/Lord_Howe +-0374900 +1445800 Australia/Melbourne +-0315700 +1155100 Australia/Perth +-0335200 +1511300 Australia/Sydney ++0522200 +0045400 Europe/Amsterdam ++0423000 +0013100 Europe/Andorra ++0375800 +0234300 Europe/Athens ++0543500 -0055500 Europe/Belfast ++0445000 +0203000 Europe/Belgrade ++0523000 +0132200 Europe/Berlin ++0480900 +0170700 Europe/Bratislava ++0505000 +0042000 Europe/Brussels ++0442600 +0260600 Europe/Bucharest ++0473000 +0190500 Europe/Budapest ++0470000 +0285000 Europe/Chisinau ++0554000 +0123500 Europe/Copenhagen ++0532000 -0061500 Europe/Dublin ++0360800 -0052100 Europe/Gibraltar ++0601000 +0245800 Europe/Helsinki ++0410100 +0285800 Europe/Istanbul ++0544300 +0203000 Europe/Kaliningrad ++0502600 +0303100 Europe/Kiev ++0384300 -0090800 Europe/Lisbon ++0460300 +0143100 Europe/Ljubljana ++0512830 +0001845 Europe/London ++0493600 +0060900 Europe/Luxembourg ++0402400 -0034100 Europe/Madrid ++0355400 +0143100 Europe/Malta ++0535400 +0273400 Europe/Minsk ++0434200 +0072300 Europe/Monaco ++0554500 +0373500 Europe/Moscow ++0351000 +0332200 Europe/Nicosia ++0595500 +0104500 Europe/Oslo ++0485200 +0022000 Europe/Paris ++0500500 +0142600 Europe/Prague ++0565700 +0240600 Europe/Riga ++0415400 +0122900 Europe/Rome ++0531200 +0500900 Europe/Samara ++0435500 +0122800 Europe/San_Marino ++0435200 +0182500 Europe/Sarajevo ++0445700 +0340600 Europe/Simferopol ++0415900 +0212600 Europe/Skopje ++0424100 +0231900 Europe/Sofia ++0592000 +0180300 Europe/Stockholm ++0592500 +0244500 Europe/Tallinn ++0412000 +0195000 Europe/Tirane ++0483700 +0221800 Europe/Uzhgorod ++0470900 +0093100 Europe/Vaduz ++0415400 +0122700 Europe/Vatican ++0481300 +0162000 Europe/Vienna ++0544100 +0251900 Europe/Vilnius ++0521500 +0210000 Europe/Warsaw ++0454800 +0155800 Europe/Zagreb ++0475000 +0351000 Europe/Zaporozhye ++0472300 +0083200 Europe/Zurich +-0185500 +0473100 Indian/Antananarivo +-0072000 +0722500 Indian/Chagos +-0102500 +1054300 Indian/Christmas +-0121000 +0965500 Indian/Cocos +-0114100 +0431600 Indian/Comoro +-0492110 +0701303 Indian/Kerguelen +-0044000 +0552800 Indian/Mahe ++0041000 +0733000 Indian/Maldives +-0201000 +0573000 Indian/Mauritius +-0124700 +0451400 Indian/Mayotte +-0205200 +0552800 Indian/Reunion +-0135000 -1714400 Pacific/Apia +-0365200 +1744600 Pacific/Auckland +-0435500 -1763000 Pacific/Chatham +-0271000 -1092700 Pacific/Easter +-0174000 +1682500 Pacific/Efate +-0030800 -1710500 Pacific/Enderbury +-0092200 -1711400 Pacific/Fakaofo +-0180800 +1782500 Pacific/Fiji +-0083100 +1791300 Pacific/Funafuti ++0005400 -0893600 Pacific/Galapagos +-0230800 -1345700 Pacific/Gambier +-0093200 +1601200 Pacific/Guadalcanal ++0132800 +1444500 Pacific/Guam ++0211825 -1575130 Pacific/Honolulu ++0170000 -1683000 Pacific/Johnston ++0015200 -1572000 Pacific/Kiritimati ++0051900 +1625900 Pacific/Kosrae ++0090500 +1672000 Pacific/Kwajalein ++0070900 +1711200 Pacific/Majuro +-0090000 -1393000 Pacific/Marquesas ++0281300 -1772200 Pacific/Midway ++0003100 +1665500 Pacific/Nauru +-0190100 +1695500 Pacific/Niue +-0290300 +1675800 Pacific/Norfolk +-0221600 +1653000 Pacific/Noumea +-0141600 -1704200 Pacific/Pago_Pago ++0072000 +1342900 Pacific/Palau +-0250400 -1300500 Pacific/Pitcairn ++0065800 +1581300 Pacific/Ponape +-0093000 +1471000 Pacific/Port_Moresby +-0211400 -1594600 Pacific/Rarotonga ++0151200 +1454500 Pacific/Saipan +-0173200 -1493400 Pacific/Tahiti ++0012500 +1730000 Pacific/Tarawa +-0211000 +1751000 Pacific/Tongatapu ++0072500 +1514700 Pacific/Truk ++0191700 +1663700 Pacific/Wake +-0131800 -1761000 Pacific/Wallis ++0093100 +1380800 Pacific/Yap