diff --git a/inc/RRule-v2.php b/inc/RRule-v2.php
index b42605eb..a59c2061 100644
--- a/inc/RRule-v2.php
+++ b/inc/RRule-v2.php
@@ -11,27 +11,8 @@
if ( !class_exists('DateTime') ) return;
-$rrule_expand_limit = array(
- 'YEARLY' => array( 'bymonth' => 'expand', 'byweekno' => 'expand', 'byyearday' => 'expand', 'bymonthday' => 'expand',
- 'byday' => 'expand', 'byhour' => 'expand', 'byminute' => 'expand', 'bysecond' => 'expand' ),
- 'MONTHLY' => array( 'bymonth' => 'limit', 'bymonthday' => 'expand',
- 'byday' => 'expand', 'byhour' => 'expand', 'byminute' => 'expand', 'bysecond' => 'expand' ),
- 'WEEKLY' => array( 'bymonth' => 'limit',
- 'byday' => 'expand', 'byhour' => 'expand', 'byminute' => 'expand', 'bysecond' => 'expand' ),
- 'DAILY' => array( 'bymonth' => 'limit', 'bymonthday' => 'limit',
- 'byday' => 'limit', 'byhour' => 'expand', 'byminute' => 'expand', 'bysecond' => 'expand' ),
- 'HOURLY' => array( 'bymonth' => 'limit', 'bymonthday' => 'limit',
- 'byday' => 'limit', 'byhour' => 'limit', 'byminute' => 'expand', 'bysecond' => 'expand' ),
- 'MINUTELY'=> array( 'bymonth' => 'limit', 'bymonthday' => 'limit',
- 'byday' => 'limit', 'byhour' => 'limit', 'byminute' => 'limit', 'bysecond' => 'expand' ),
- 'SECONDLY'=> array( 'bymonth' => 'limit', 'bymonthday' => 'limit',
- 'byday' => 'limit', 'byhour' => 'limit', 'byminute' => 'limit', 'bysecond' => 'limit' ),
-);
-
-$rrule_day_numbers = array( 'SU' => 0, 'MO' => 1, 'TU' => 2, 'WE' => 3, 'TH' => 4, 'FR' => 5, 'SA' => 6 );
-
-define( 'DEBUG_RRULE', false );
// define( 'DEBUG_RRULE', true);
+define( 'DEBUG_RRULE', false );
/**
* Wrap the DateTimeZone class to allow parsing some iCalendar TZID strangenesses
@@ -84,16 +65,17 @@ class RepeatRuleDateTime extends DateTime {
private $tzid;
private $is_date;
- public function __construct($date = null, $dtz = null) {
+ public function __construct($date = null, $dtz = null, $is_date = null ) {
if ( !isset(self::$UTCzone) ) self::$UTCzone = new RepeatRuleTimeZone('UTC');
$this->is_date = false;
+ if ( isset($is_date) ) $this->is_date = $is_date;
if ( !isset($date) ) {
$date = date('Ymd\THis');
// Floating
$dtz = self::$UTCzone;
- $this->tzid = null;
}
-
+ $this->tzid = null;
+
if ( is_object($date) && method_exists($date,'GetParameterValue') ) {
$tzid = $date->GetParameterValue('TZID');
$actual_date = $date->Value();
@@ -110,8 +92,10 @@ class RepeatRuleDateTime extends DateTime {
}
if ( strlen($actual_date) == 8 ) {
// We allow dates without VALUE=DATE parameter, but we don't create them like that
- $this->is_date;
+ $this->is_date = true;
}
+// $value_type = $date->GetParameterValue('VALUE');
+// if ( isset($value_type) && $value_type == 'DATE' ) $this->is_date = true;
$date = $actual_date;
if ( DEBUG_RRULE ) printf( "Date%s property%s: %s%s\n", ($this->is_date ? "" : "Time"),
(isset($this->tzid) ? ' with timezone' : ''), $date,
@@ -167,7 +151,8 @@ class RepeatRuleDateTime extends DateTime {
}
parent::__construct($date, $dtz);
-
+ if ( isset($is_date) ) $this->is_date = $is_date;
+
return $this;
}
@@ -187,7 +172,12 @@ class RepeatRuleDateTime extends DateTime {
}
public function isDate() {
- return !isset($this->is_date);
+ return $this->is_date;
+ }
+
+
+ public function setAsDate() {
+ $this->is_date = true;
}
@@ -210,14 +200,19 @@ class RepeatRuleDateTime extends DateTime {
}
- public function UTC() {
+ public function UTC( $force_utc=false ) {
$gmt = clone($this);
- if ( isset($this->tzid) && $this->tzid != 'UTC' ) {
- $dtz = parent::getTimezone();
+ if ( ($force_utc && !isset($this->tzid)) || (isset($this->tzid) && $this->tzid != 'UTC') ) {
+ if ( isset($this->tzid)) {
+ $dtz = parent::getTimezone();
+ }
+ else {
+ $dtz = new DateTimeZone(date_default_timezone_get());
+ }
$offset = 0 - $dtz->getOffset($gmt);
$gmt->modify( $offset . ' seconds' );
}
- if ( $this->is_date ) return $gmt->format('Ymd');
+ if ( $this->is_date && !$force_utc ) return $gmt->format('Ymd');
return $gmt->format('Ymd\THis\Z');
}
@@ -230,9 +225,7 @@ class RepeatRuleDateTime extends DateTime {
$gmt->modify( $offset . ' seconds' );
}
if ( $this->is_date ) return $gmt->format('Ymd');
- $result = $gmt->format('Ymd\THis');
- if ( isset($this->tzid) ) $result .= 'Z';
- return $result;
+ return $gmt->format('Ymd\THis') . (isset($this->tzid) ? 'Z' : '');
}
@@ -269,6 +262,11 @@ class RepeatRuleDateTime extends DateTime {
}
+ public function getTimeZone() {
+ return $this->tzid;
+ }
+
+
function setDate( $year=null, $month=null, $day=null ) {
if ( !isset($year) ) $year = parent::format('Y');
if ( !isset($month) ) $month = parent::format('m');
@@ -277,6 +275,21 @@ class RepeatRuleDateTime extends DateTime {
return $this;
}
+ function setYearDay( $yearday ) {
+ if ( $yearday > 0 ) {
+ $current_yearday = parent::format('z') + 1;
+ }
+ else {
+ $current_yearday = (parent::format('z') - (365 + parent::format('L')));
+ }
+ $diff = $yearday - $current_yearday;
+ if ( $diff < 0 ) $this->modify('-P'.-$diff.'D');
+ else if ( $diff > 0 ) $this->modify('P'.$diff.'D');
+// printf( "Current: %d, Looking for: %d, Diff: %d, What we got: %s (%d,%d)\n", $current_yearday, $yearday, $diff,
+// parent::format('Y-m-d'), (parent::format('z')+1), ((parent::format('z') - (365 + parent::format('L')))) );
+ return $this;
+ }
+
function year() {
return parent::format('Y');
}
@@ -329,22 +342,28 @@ class RepeatRule {
private $position;
private $finished;
private $current_base;
+ private $original_rule;
- public function __construct( $basedate, $rrule ) {
- $this->base = ( is_object($basedate) ? $basedate : new RepeatRuleDateTime($basedate) );
+ public function __construct( $basedate, $rrule, $is_date=null ) {
+ $this->base = (is_object($basedate) ? $basedate : new RepeatRuleDateTime($basedate) );
+ $this->original_rule = $rrule;
if ( DEBUG_RRULE ) {
printf( "Constructing RRULE based on: '%s', rrule: '%s'\n", $basedate, $rrule );
}
if ( preg_match('{FREQ=([A-Z]+)(;|$)}', $rrule, $m) ) $this->freq = $m[1];
- if ( preg_match('{UNTIL=([0-9TZ]+)(;|$)}', $rrule, $m) ) $this->until = new RepeatRuleDateTime($m[1]);
+
+ if ( preg_match('{UNTIL=([0-9TZ]+)(;|$)}', $rrule, $m) )
+ $this->until = new RepeatRuleDateTime($m[1],$this->base->getTimeZone(),$is_date);
if ( preg_match('{COUNT=([0-9]+)(;|$)}', $rrule, $m) ) $this->count = $m[1];
if ( preg_match('{INTERVAL=([0-9]+)(;|$)}', $rrule, $m) ) $this->interval = $m[1];
+
if ( preg_match('{WKST=(MO|TU|WE|TH|FR|SA|SU)(;|$)}', $rrule, $m) ) $this->wkst = $m[1];
- if ( preg_match('{BYDAY=(([+-]?[0-9]{0,2}(MO|TU|WE|TH|FR|SA|SU),?)+)(;|$)}', $rrule, $m) ) $this->byday = explode(',',$m[1]);
+ if ( preg_match('{BYDAY=(([+-]?[0-9]{0,2}(MO|TU|WE|TH|FR|SA|SU),?)+)(;|$)}', $rrule, $m) )
+ $this->byday = explode(',',$m[1]);
if ( preg_match('{BYYEARDAY=([0-9,+-]+)(;|$)}', $rrule, $m) ) $this->byyearday = explode(',',$m[1]);
if ( preg_match('{BYWEEKNO=([0-9,+-]+)(;|$)}', $rrule, $m) ) $this->byweekno = explode(',',$m[1]);
@@ -402,7 +421,8 @@ class RepeatRule {
if ( !$this->valid() ) return null;
if ( !isset($this->instances[$this->position]) ) $this->GetMoreInstances();
if ( !$this->valid() ) return null;
- if ( DEBUG_RRULE ) printf( "Returning date from position %d: %s (%s)\n", $this->position, $this->instances[$this->position]->format('c'), $this->instances[$this->position]->UTC() );
+ if ( DEBUG_RRULE ) printf( "Returning date from position %d: %s (%s)\n", $this->position,
+ $this->instances[$this->position]->format('c'), $this->instances[$this->position]->UTC() );
return $this->instances[$this->position];
}
@@ -422,10 +442,41 @@ class RepeatRule {
return false;
}
-
+ /**
+ * This function returns an array which lists the order of processing, and whether the processing is
+ * to expand or limit based on this component.
+ *
+ * Note that yearly-byday and monthly-byday have special handling which is coded within the
+ * expand_byday() method
+ * @param $freq a string indicating the frequency.
+ */
+ final private static function rrule_expand_limit( $freq ) {
+ switch( $freq ) {
+ case 'YEARLY':
+ return array( 'bymonth' => 'expand', 'byweekno' => 'expand', 'byyearday' => 'expand', 'bymonthday' => 'expand',
+ 'byday' => 'expand', 'byhour' => 'expand', 'byminute' => 'expand', 'bysecond' => 'expand' );
+ case 'MONTHLY':
+ return array( 'bymonth' => 'limit', 'bymonthday' => 'expand',
+ 'byday' => 'expand', 'byhour' => 'expand', 'byminute' => 'expand', 'bysecond' => 'expand' );
+ case 'WEEKLY':
+ return array( 'bymonth' => 'limit',
+ 'byday' => 'expand', 'byhour' => 'expand', 'byminute' => 'expand', 'bysecond' => 'expand' );
+ case 'DAILY':
+ return array( 'bymonth' => 'limit', 'bymonthday' => 'limit',
+ 'byday' => 'limit', 'byhour' => 'expand', 'byminute' => 'expand', 'bysecond' => 'expand' );
+ case 'HOURLY':
+ return array( 'bymonth' => 'limit', 'bymonthday' => 'limit',
+ 'byday' => 'limit', 'byhour' => 'limit', 'byminute' => 'expand', 'bysecond' => 'expand' );
+ case 'MINUTELY':
+ return array( 'bymonth' => 'limit', 'bymonthday' => 'limit',
+ 'byday' => 'limit', 'byhour' => 'limit', 'byminute' => 'limit', 'bysecond' => 'expand' );
+ case 'SECONDLY':
+ return array( 'bymonth' => 'limit', 'bymonthday' => 'limit',
+ 'byday' => 'limit', 'byhour' => 'limit', 'byminute' => 'limit', 'bysecond' => 'limit' );
+ }
+ }
+
private function GetMoreInstances() {
- global $rrule_expand_limit;
-
if ( $this->finished ) return;
$got_more = false;
$loop_limit = 10;
@@ -439,10 +490,13 @@ class RepeatRule {
}
if ( DEBUG_RRULE ) printf( "Getting more instances from: '%s' - %d\n", $this->current_base->format('c'), count($this->instances) );
$this->current_set = array( clone($this->current_base) );
- foreach( $rrule_expand_limit[$this->freq] AS $bytype => $action ) {
- if ( isset($this->{$bytype}) ) $this->{$action.'_'.$bytype}();
- if ( !isset($this->current_set[0]) ) break;
+ foreach( self::rrule_expand_limit($this->freq) AS $bytype => $action ) {
+ if ( isset($this->{$bytype}) ) {
+ $this->{$action.'_'.$bytype}();
+ if ( !isset($this->current_set[0]) ) break;
+ }
}
+
sort($this->current_set);
if ( isset($this->bysetpos) ) $this->limit_bysetpos();
@@ -465,11 +519,24 @@ class RepeatRule {
}
}
-
+
+ final private static function rrule_day_number( $day ) {
+ switch( $day ) {
+ case 'SU': return 0;
+ case 'MO': return 1;
+ case 'TU': return 2;
+ case 'WE': return 3;
+ case 'TH': return 4;
+ case 'FR': return 5;
+ case 'SA': return 6;
+ }
+ return false;
+ }
+
+
static public function date_mask( $date, $y, $mo, $d, $h, $mi, $s ) {
$date_parts = explode(',',$date->format('Y,m,d,H,i,s'));
- $tz = $date->getTimezone();
if ( isset($y) || isset($mo) || isset($d) ) {
if ( isset($y) ) $date_parts[0] = $y;
if ( isset($mo) ) $date_parts[1] = $mo;
@@ -508,9 +575,22 @@ class RepeatRule {
}
}
-
+ private function expand_byyearday() {
+ $instances = $this->current_set;
+ $this->current_set = array();
+ $days_set = array();
+ foreach( $instances AS $k => $instance ) {
+ foreach( $this->byyearday AS $k => $yearday ) {
+ $on_yearday = clone($instance);
+ $on_yearday->setYearDay($yearday);
+ if ( isset($days_set[$on_yearday->UTC()]) ) continue;
+ $this->current_set[] = $on_yearday;
+ $days_set[$on_yearday->UTC()] = true;
+ }
+ }
+ }
+
private function expand_byday_in_week( $day_in_week ) {
- global $rrule_day_numbers;
/**
* @TODO: This should really allow for WKST, since if we start a series
@@ -519,7 +599,7 @@ class RepeatRule {
*/
$dow_of_instance = $day_in_week->format('w'); // 0 == Sunday
foreach( $this->byday AS $k => $weekday ) {
- $dow = $rrule_day_numbers[$weekday];
+ $dow = self::rrule_day_number($weekday);
$offset = $dow - $dow_of_instance;
if ( $offset < 0 ) $offset += 7;
$expanded = clone($day_in_week);
@@ -531,14 +611,13 @@ class RepeatRule {
private function expand_byday_in_month( $day_in_month ) {
- global $rrule_day_numbers;
$first_of_month = $this->date_mask( clone($day_in_month), null, null, 1, null, null, null);
$dow_of_first = $first_of_month->format('w'); // 0 == Sunday
$days_in_month = cal_days_in_month(CAL_GREGORIAN, $first_of_month->format('m'), $first_of_month->format('Y'));
foreach( $this->byday AS $k => $weekday ) {
if ( preg_match('{([+-])?(\d)?(MO|TU|WE|TH|FR|SA|SU)}', $weekday, $matches ) ) {
- $dow = $rrule_day_numbers[$matches[3]];
+ $dow = self::rrule_day_number($matches[3]);
$first_dom = 1 + $dow - $dow_of_first; if ( $first_dom < 1 ) $first_dom +=7; // e.g. 1st=WE, dow=MO => 1+1-3=-1 => MO is 6th, etc.
$whichweek = intval($matches[2]);
if ( DEBUG_RRULE ) printf( "Expanding BYDAY(M) $weekday in month of %s\n", $first_of_month->format('c') );
@@ -572,7 +651,6 @@ class RepeatRule {
private function expand_byday_in_year( $day_in_year ) {
- global $rrule_day_numbers;
$first_of_year = $this->date_mask( clone($day_in_year), null, 1, 1, null, null, null);
$dow_of_first = $first_of_year->format('w'); // 0 == Sunday
@@ -580,7 +658,7 @@ class RepeatRule {
foreach( $this->byday AS $k => $weekday ) {
if ( preg_match('{([+-])?(\d)?(MO|TU|WE|TH|FR|SA|SU)}', $weekday, $matches ) ) {
$expanded = clone($first_of_year);
- $dow = $rrule_day_numbers[$matches[3]];
+ $dow = self::rrule_day_number($matches[3]);
$first_doy = 1 + $dow - $dow_of_first; if ( $first_doy < 1 ) $first_doy +=7; // e.g. 1st=WE, dow=MO => 1+1-3=-1 => MO is 6th, etc.
$whichweek = intval($matches[2]);
if ( DEBUG_RRULE ) printf( "Expanding BYDAY(Y) $weekday from date %s\n", $instance->format('c') );
@@ -689,13 +767,11 @@ class RepeatRule {
}
private function limit_byday() {
- global $rrule_day_numbers;
-
$fmt_char = 'w';
$instances = $this->current_set;
$this->current_set = array();
foreach( $this->byday AS $k => $weekday ) {
- $dow = $rrule_day_numbers[$weekday];
+ $dow = self::rrule_day_number($weekday);
foreach( $instances AS $k => $instance ) {
if ( DEBUG_RRULE ) printf( "Limiting '$fmt_char' on '%s' => '%s' ?=? '%s' (%d) ? %s\n", $instance->format('c'), $instance->format($fmt_char), $weekday, $dow, ($instance->format($fmt_char) == $dow ? 'Yes' : 'No') );
if ( $instance->format($fmt_char) == $dow ) $this->current_set[] = $instance;
@@ -741,7 +817,7 @@ require_once("vComponent.php");
*
* @return array An array keyed on the UTC dates, referring to the component
*/
-function rdate_expand( $dtstart, $property, $component, $range_end = null ) {
+function rdate_expand( $dtstart, $property, $component, $range_end = null, $is_date=null ) {
$properties = $component->GetProperties($property);
$expansion = array();
foreach( $properties AS $p ) {
@@ -749,8 +825,8 @@ function rdate_expand( $dtstart, $property, $component, $range_end = null ) {
$rdate = $p->Value();
$rdates = explode( ',', $rdate );
foreach( $rdates AS $k => $v ) {
- $rdate = new RepeatRuleDateTime( $v, $timezone);
- $expansion[$rdate->UTC()] = $component;
+ $rdate = new RepeatRuleDateTime( $v, $timezone, $is_date);
+ $expansion[$rdate->FloatOrUTC()] = $component;
if ( $rdate > $range_end ) break;
}
}
@@ -768,7 +844,7 @@ function rdate_expand( $dtstart, $property, $component, $range_end = null ) {
*
* @return array An array keyed on the UTC dates, referring to the component
*/
-function rrule_expand( $dtstart, $property, $component, $range_end ) {
+function rrule_expand( $dtstart, $property, $component, $range_end, $is_date=null ) {
$expansion = array();
$recur = $component->GetProperty($property);
@@ -777,24 +853,23 @@ function rrule_expand( $dtstart, $property, $component, $range_end ) {
$this_start = $component->GetProperty('DTSTART');
if ( isset($this_start) ) {
- $timezone = $this_start->GetParameterValue('TZID');
- $this_start = new RepeatRuleDateTime($this_start->Value(),$timezone);
+ $this_start = new RepeatRuleDateTime($this_start);
}
else {
$this_start = clone($dtstart);
}
-// print_r( $this_start );
-// printf( "RRULE: %s\n", $recur );
- $rule = new RepeatRule( $this_start, $recur );
+// if ( DEBUG_RRULE ) print_r( $this_start );
+// if ( DEBUG_RRULE ) printf( "RRULE: %s\n", $recur );
+ $rule = new RepeatRule( $this_start, $recur, $is_date );
$i = 0;
$result_limit = 1000;
while( $date = $rule->next() ) {
-// printf( "[%3d] %s\n", $i, $date->UTC() );
- $expansion[$date->UTC()] = $component;
+// if ( DEBUG_RRULE ) printf( "[%3d] %s\n", $i, $date->UTC() );
+ $expansion[$date->FloatOrUTC()] = $component;
if ( $i++ >= $result_limit || $date > $range_end ) break;
}
-// print_r( $expansion );
+// if ( DEBUG_RRULE ) print_r( $expansion );
return $expansion;
}
@@ -821,21 +896,24 @@ function expand_event_instances( $vResource, $range_start = null, $range_end = n
$instances = array();
$expand = false;
$dtstart = null;
+ $is_date = false;
foreach( $components AS $k => $comp ) {
if ( $comp->GetType() != 'VEVENT' && $comp->GetType() != 'VTODO' && $comp->GetType() != 'VJOURNAL' ) {
if ( $comp->GetType() != 'VTIMEZONE' ) $new_components[] = $comp;
continue;
}
if ( !isset($dtstart) ) {
- $dtstart = $comp->GetProperty('DTSTART');
- $dtstart = new RepeatRuleDateTime( $dtstart );
- $instances[$dtstart->UTC()] = $comp;
+ $dtstart_prop = $comp->GetProperty('DTSTART');
+ $dtstart = new RepeatRuleDateTime( $dtstart_prop );
+ $is_date = $dtstart->isDate();
+ $instances[$dtstart->FloatOrUTC()] = $comp;
}
$p = $comp->GetProperty('RECURRENCE-ID');
if ( isset($p) && $p->Value() != '' ) {
$range = $p->GetParameterValue('RANGE');
$recur_utc = new RepeatRuleDateTime($p);
- $recur_utc = $recur_utc->UTC();
+ if ( $is_date ) $recur_utc->setAsDate();
+ $recur_utc = $recur_utc->FloatOrUTC();
if ( isset($range) && $range == 'THISANDFUTURE' ) {
foreach( $instances AS $k => $v ) {
if ( DEBUG_RRULE ) printf( "Removing overridden instance at: $k\n" );
@@ -843,7 +921,7 @@ function expand_event_instances( $vResource, $range_start = null, $range_end = n
}
}
else {
- unset($instances[$recur_utc]);
+ unset($instances['x'.$recur_utc]);
}
}
else if ( DEBUG_RRULE ) {
@@ -852,14 +930,14 @@ function expand_event_instances( $vResource, $range_start = null, $range_end = n
$p = $comp->GetProperty('UID');
$uid = ( isset($p) ? $p->Value() : 'not set');
printf( "Processing event '%s' with UID '%s' starting on %s\n",
- $summary, $uid, $dtstart->UTC() );
+ $summary, $uid, $dtstart->FloatOrUTC() );
print( "Instances at start");
foreach( $instances AS $k => $v ) {
print ' : '.$k;
}
print "\n";
}
- $instances = array_merge( $instances, rrule_expand($dtstart, 'RRULE', $comp, $range_end) );
+ $instances += rrule_expand($dtstart, 'RRULE', $comp, $range_end);
if ( DEBUG_RRULE ) {
print( "After rrule_expand");
foreach( $instances AS $k => $v ) {
@@ -867,7 +945,7 @@ function expand_event_instances( $vResource, $range_start = null, $range_end = n
}
print "\n";
}
- $instances = array_merge( $instances, rdate_expand($dtstart, 'RDATE', $comp, $range_end) );
+ $instances += rdate_expand($dtstart, 'RDATE', $comp, $range_end);
if ( DEBUG_RRULE ) {
print( "After rdate_expand");
foreach( $instances AS $k => $v ) {
@@ -890,10 +968,13 @@ function expand_event_instances( $vResource, $range_start = null, $range_end = n
$last_duration = null;
$early_start = null;
$new_components = array();
- $start_utc = $range_start->UTC();
- $end_utc = $range_end->UTC();
+ $start_utc = $range_start->FloatOrUTC();
+ $end_utc = $range_end->FloatOrUTC();
foreach( $instances AS $utc => $comp ) {
- if ( $utc > $end_utc ) break;
+ if ( $utc > $end_utc ) {
+ if ( DEBUG_RRULE ) printf( "We're done: $utc is out of the range.\n");
+ break;
+ }
$end_type = ($comp->GetType() == 'VTODO' ? 'DUE' : 'DTEND');
$duration = $comp->GetProperty('DURATION');
@@ -920,20 +1001,29 @@ function expand_event_instances( $vResource, $range_start = null, $range_end = n
if ( $utc < $start_utc ) {
if ( isset($early_start) && isset($last_duration) && $duration == $last_duration) {
- if ( $utc < $early_start ) continue;
+ if ( $utc < $early_start ) {
+ if ( DEBUG_RRULE ) printf( "Next please: $utc is before $early_start and before $start_utc.\n");
+ continue;
+ }
}
else {
/** Calculate the latest possible start date when this event would overlap our range start */
$latest_start = clone($range_start);
$latest_start->modify('-'.$duration);
- $early_start = $latest_start->UTC();
+ $early_start = $latest_start->FloatOrUTC();
$last_duration = $duration;
- if ( $utc < $early_start ) continue;
+ if ( $utc < $early_start ) {
+ if ( DEBUG_RRULE ) printf( "Another please: $utc is before $early_start and before $start_utc.\n");
+ continue;
+ }
}
}
$component = clone($comp);
- $component->ClearProperties( array('DTSTART'=> true, 'DUE' => true, 'DTEND' => true) );
- $component->AddProperty('DTSTART', $utc );
+ $component->ClearProperties( array('DTSTART'=> true, 'DUE' => true, 'DTEND' => true,
+ 'RRULE' => true, 'RDATE' => true, 'EXDATE' => true) );
+ $component->AddProperty('DTSTART', $utc, ($is_date ? array('VALUE' => 'DATE') : null) );
+ if ( $utc != $dtstart->FloatOrUTC() )
+ $component->AddProperty('RECURRENCE-ID', $utc, ($is_date ? array('VALUE' => 'DATE') : null) );
$component->AddProperty('DURATION', $duration );
$new_components[] = $component;
}
diff --git a/testing/tests/regression-suite/0000-Setup-PUT-collection-nz_holidays.result b/testing/tests/regression-suite/0000-Setup-PUT-collection-nz_holidays.result
new file mode 100644
index 00000000..f2f5bdb6
--- /dev/null
+++ b/testing/tests/regression-suite/0000-Setup-PUT-collection-nz_holidays.result
@@ -0,0 +1,9 @@
+HTTP/1.1 100 Continue
+
+HTTP/1.1 200 OK
+Date: Dow, 01 Jan 2000 00:00:00 GMT
+DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
+DAV: extended-mkcol, calendar-proxy, bind, addressbook
+Content-Length: 0
+Content-Type: text/plain; charset="utf-8"
+
diff --git a/testing/tests/regression-suite/0000-Setup-PUT-collection-nz_holidays.test b/testing/tests/regression-suite/0000-Setup-PUT-collection-nz_holidays.test
new file mode 100644
index 00000000..30cc2bad
--- /dev/null
+++ b/testing/tests/regression-suite/0000-Setup-PUT-collection-nz_holidays.test
@@ -0,0 +1,13 @@
+#
+# A collection of NZ holidays for some years (incomplete, sadly)
+#
+#
+TYPE=PUT
+URL=http://mycaldav/caldav.php/user4/nz_holidays/
+HEADER=User-Agent: RSCDS Testing/0.9.x
+HEADER=Content-Type: text/calendar; charset=utf-8
+AUTH=user4:user4
+
+HEAD
+
+DATA=nz_holidays.ics
diff --git a/testing/tests/regression-suite/2000-REPORT-expanded-nz-holidays-2005.result b/testing/tests/regression-suite/2000-REPORT-expanded-nz-holidays-2005.result
new file mode 100644
index 00000000..14eda2ed
--- /dev/null
+++ b/testing/tests/regression-suite/2000-REPORT-expanded-nz-holidays-2005.result
@@ -0,0 +1,635 @@
+HTTP/1.1 207 Multi-Status
+Date: Dow, 01 Jan 2000 00:00:00 GMT
+DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
+DAV: extended-mkcol, calendar-proxy, bind, addressbook
+ETag: "1ede6102fc1fe7d9d94f0e8f11fe6e42"
+Content-Length: 13870
+Content-Type: text/xml; charset="utf-8"
+
+
+
+
+ /caldav.php/user4/nz_holidays/20081226-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T225121Z
+LAST-MODIFIED:20081117T225144Z
+DTSTAMP:20081117T225121Z
+UID:20081226-1-all-publicholidays-dol.govt.nz
+SUMMARY:Boxing Day
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20051226
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090101-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T225212Z
+LAST-MODIFIED:20081117T230337Z
+DTSTAMP:20081117T225212Z
+UID:20090101-1-all-publicholidays-dol.govt.nz
+SUMMARY:New Year's Day
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:1
+DTSTART;VALUE=DATE:20050101
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20081225-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T224951Z
+LAST-MODIFIED:20081117T235108Z
+DTSTAMP:20081117T224951Z
+UID:20081225-1-all-publicholidays-dol.govt.nz
+SUMMARY:Christmas Day
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:2
+DTSTART;VALUE=DATE:20051225
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090206-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T235224Z
+LAST-MODIFIED:20081120T002639Z
+DTSTAMP:20081117T235224Z
+UID:20090206-1-all-publicholidays-dol.govt.nz
+SUMMARY:Waitangi Day
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:4
+DTSTART;VALUE=DATE:20050206
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090425-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T011910Z
+LAST-MODIFIED:20081120T001537Z
+DTSTAMP:20081118T011910Z
+UID:20090425-1-all-publicholidays-dol.govt.nz
+SUMMARY:ANZAC Day
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:2
+DTSTART;VALUE=DATE:20050425
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090601-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T011947Z
+LAST-MODIFIED:20081118T012009Z
+DTSTAMP:20081118T011947Z
+UID:20090601-1-all-publicholidays-dol.govt.nz
+SUMMARY:Queen's Birthday
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20050606
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091026-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T012125Z
+LAST-MODIFIED:20081118T012150Z
+DTSTAMP:20081118T012125Z
+UID:20091026-1-all-publicholidays-dol.govt.nz
+SUMMARY:Labour Day
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20051024
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090102-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T235121Z
+LAST-MODIFIED:20081118T012314Z
+DTSTAMP:20081117T235121Z
+UID:20090102-1-all-publicholidays-dol.govt.nz
+SUMMARY:Day after New Year's Day
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20050102
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091226-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T012344Z
+LAST-MODIFIED:20081118T012529Z
+DTSTAMP:20081118T012344Z
+UID:20091226-1-all-publicholidays-dol.govt.nz
+SUMMARY:Boxing Day Holiday
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:1
+DTSTART;VALUE=DATE:20051227
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091228-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T012537Z
+LAST-MODIFIED:20081118T012606Z
+DTSTAMP:20081118T012537Z
+UID:20091228-1-all-publicholidays-dol.govt.nz
+SUMMARY:Christmas Day Holiday
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20051226
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20100101-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T012634Z
+LAST-MODIFIED:20081118T012657Z
+DTSTAMP:20081118T012634Z
+UID:20100101-1-all-publicholidays-dol.govt.nz
+SUMMARY:New Year's Day Holiday
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20050103
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20100607-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T013050Z
+LAST-MODIFIED:20081118T013102Z
+DTSTAMP:20081118T013050Z
+UID:20100607-1-all-publicholidays-dol.govt.nz
+SUMMARY:Day after New Year's Day Holiday
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20050104
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20081201-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200154Z
+LAST-MODIFIED:20081119T200227Z
+DTSTAMP:20081119T200154Z
+UID:20081201-1-all-publicholidays-dol.govt.nz
+SUMMARY:Westland Anniversary Day (Monday nearest 1st December)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20051128
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20081201-2-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200252Z
+LAST-MODIFIED:20081119T200304Z
+DTSTAMP:20081119T200252Z
+UID:20081201-2-all-publicholidays-dol.govt.nz
+SUMMARY:Chatham Islands Anniversary Day (Monday nearest 30th November)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20051128
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090126-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200321Z
+LAST-MODIFIED:20081119T200334Z
+DTSTAMP:20081119T200321Z
+UID:20090126-1-all-publicholidays-dol.govt.nz
+SUMMARY:Auckland Anniversary Day (Monday nearest 29th January)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20050131
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090119-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200350Z
+LAST-MODIFIED:20081119T200406Z
+DTSTAMP:20081119T200350Z
+UID:20090119-1-all-publicholidays-dol.govt.nz
+SUMMARY:Wellington Anniversary Day (Monday nearest 22nd January)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20050124
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090119-2-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200431Z
+LAST-MODIFIED:20081119T200443Z
+DTSTAMP:20081119T200431Z
+UID:20090119-2-all-publicholidays-dol.govt.nz
+SUMMARY:Southland Anniversary Day (Monday nearest 17th January)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20050117
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090202-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200519Z
+LAST-MODIFIED:20081119T200530Z
+DTSTAMP:20081119T200519Z
+UID:20090202-1-all-publicholidays-dol.govt.nz
+SUMMARY:Nelson Anniversary Day (Monday nearest 1st Feb)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20050131
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091023-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200759Z
+LAST-MODIFIED:20081119T200809Z
+DTSTAMP:20081119T200759Z
+UID:20091023-1-all-publicholidays-dol.govt.nz
+SUMMARY:
+ Hawkes' Bay Anniversary Day (Friday before 4th Monday of October)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20051021
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091102-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200840Z
+LAST-MODIFIED:20081119T200928Z
+DTSTAMP:20081119T200840Z
+UID:20091102-1-all-publicholidays-dol.govt.nz
+SUMMARY:Marlborough Anniversary Day (Monday after 4th Monday of October)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20051031
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091113-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T201008Z
+LAST-MODIFIED:20081119T201040Z
+DTSTAMP:20081119T201008Z
+UID:20091113-1-all-publicholidays-dol.govt.nz
+SUMMARY:Canterbury Anniversary Day (Second Friday after the first Tuesda
+ y in November)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20051111
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090928-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T201140Z
+LAST-MODIFIED:20081119T201153Z
+DTSTAMP:20081119T201140Z
+UID:20090928-1-all-publicholidays-dol.govt.nz
+SUMMARY:South Canterbury Anniversary Day (4th Monday in September)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20050926
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+
+ dtstart: >2005-12-26 00:00:00+13<
+ rrule: >FREQ=YEARLY<
+ summary: >Boxing Day<
+
+ dtstart: >2005-01-01 00:00:00+13<
+ rrule: >FREQ=YEARLY<
+ summary: >New Year's Day<
+
+ dtstart: >2005-12-25 00:00:00+13<
+ rrule: >FREQ=YEARLY<
+ summary: >Christmas Day<
+
+ dtstart: >2005-02-06 00:00:00+13<
+ rrule: >FREQ=YEARLY<
+ summary: >Waitangi Day<
+
+ dtstart: >2005-04-25 00:00:00+12<
+ rrule: >FREQ=YEARLY<
+ summary: >ANZAC Day<
+
+ dtstart: >2005-06-06 00:00:00+12<
+ rrule: >FREQ=YEARLY;BYMONTH=6;BYDAY=1MO<
+ summary: >Queen's Birthday<
+
+ dtstart: >2005-10-24 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=10;BYDAY=4MO<
+ summary: >Labour Day<
+
+ dtstart: >2005-01-02 00:00:00+13<
+ rrule: >FREQ=YEARLY<
+ summary: >Day after New Year's Day<
+
+ dtstart: >2005-12-27 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=12;BYDAY=MO,TU,WE,TH,FR;BYMONTHDAY=25,26,27,28;BYSETPOS=2<
+ summary: >Boxing Day Holiday<
+
+ dtstart: >2005-12-26 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=12;BYDAY=MO,TU,WE,TH,FR;BYMONTHDAY=25,26,27,28;BYSETPOS=1<
+ summary: >Christmas Day Holiday<
+
+ dtstart: >2005-01-03 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=1;BYDAY=MO,TU,WE,TH,FR;BYMONTHDAY=1,2,3,4;BYSETPOS=1<
+ summary: >New Year's Day Holiday<
+
+ dtstart: >2005-01-04 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=1;BYDAY=MO,TU,WE,TH,FR;BYMONTHDAY=1,2,3,4;BYSETPOS=2<
+ summary: >Day after New Year's Day Holiday<
+
+ dtstart: >2005-11-28 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYDAY=MO;BYYEARDAY=-34,-33,-32,-31,-30,-29,-28<
+ summary: >Westland Anniversary Day (Monday nearest 1st December)<
+
+ dtstart: >2005-11-28 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYDAY=MO;BYYEARDAY=-35,-34,-33,-32,-31,-30,-29<
+ summary: >Chatham Islands Anniversary Day (Monday nearest 30th November)<
+
+ dtstart: >2005-01-31 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYYEARDAY=26,27,28,29,30,31,32;BYDAY=MO<
+ summary: >Auckland Anniversary Day (Monday nearest 29th January)<
+
+ dtstart: >2005-01-24 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYYEARDAY=19,20,21,22,23,24,25;BYDAY=MO<
+ summary: >Wellington Anniversary Day (Monday nearest 22nd January)<
+
+ dtstart: >2005-01-17 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYYEARDAY=14,15,16,17,18,19,20;BYDAY=MO<
+ summary: >Southland Anniversary Day (Monday nearest 17th January)<
+
+ dtstart: >2005-01-31 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYYEARDAY=29,30,31,32,33,34,35;BYDAY=MO<
+ summary: >Nelson Anniversary Day (Monday nearest 1st Feb)<
+
+ dtstart: >2005-10-21 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=19,20,21,22,23,24,25;BYDAY=FR<
+ summary: >Hawkes' Bay Anniversary Day (Friday before 4th Monday of October)<
+
+ dtstart: >2005-10-31 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYDAY=MO;BYYEARDAY=-64,-63,-62,-61,-60,-59,-58<
+ summary: >Marlborough Anniversary Day (Monday after 4th Monday of October)<
+
+ dtstart: >2005-11-11 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=11;BYMONTHDAY=11,12,13,14,15,16,17;BYDAY=FR<
+ summary: >Canterbury Anniversary Day (Second Friday after the first Tuesday in November)<
+
+ dtstart: >2005-09-26 00:00:00+12<
+ rrule: >FREQ=YEARLY;BYMONTH=9;BYDAY=4MO<
+ summary: >South Canterbury Anniversary Day (4th Monday in September)<
+
diff --git a/testing/tests/regression-suite/2000-REPORT-expanded-nz-holidays-2005.test b/testing/tests/regression-suite/2000-REPORT-expanded-nz-holidays-2005.test
new file mode 100644
index 00000000..9190c3be
--- /dev/null
+++ b/testing/tests/regression-suite/2000-REPORT-expanded-nz-holidays-2005.test
@@ -0,0 +1,43 @@
+#
+# Test expanded report for NZ public holidays for 2005
+#
+TYPE=REPORT
+URL=http://regression.host/caldav.php/user4/nz_holidays/
+AUTH=user4:user4
+
+
+HEADER=User-Agent: DAViCalTester/public
+HEADER=Content-Type: text/xml; charset="UTF-8"
+HEAD
+
+
+BEGINDATA
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ENDDATA
+
+
+QUERY
+SELECT dtstart,
+ rrule,
+ summary
+ FROM calendar_item
+ WHERE dav_name ~ '^/user4/nz_holidays/'
+ AND (rrule IS NOT NULL
+ OR (dtstart >= '20041231T110000Z' AND dtstart < '20051231T110000Z')
+ )
+ENDQUERY
+
diff --git a/testing/tests/regression-suite/2001-REPORT-expanded-queens-birthday-2005.result b/testing/tests/regression-suite/2001-REPORT-expanded-queens-birthday-2005.result
new file mode 100644
index 00000000..3180d90f
--- /dev/null
+++ b/testing/tests/regression-suite/2001-REPORT-expanded-queens-birthday-2005.result
@@ -0,0 +1,40 @@
+HTTP/1.1 207 Multi-Status
+Date: Dow, 01 Jan 2000 00:00:00 GMT
+DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
+DAV: extended-mkcol, calendar-proxy, bind, addressbook
+ETag: "f57bc105449e3d80e3411f3169b14ce4"
+Content-Length: 722
+Content-Type: text/xml; charset="utf-8"
+
+
+
+
+ /caldav.php/user4/nz_holidays/20090601-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T011947Z
+LAST-MODIFIED:20081118T012009Z
+DTSTAMP:20081118T011947Z
+UID:20090601-1-all-publicholidays-dol.govt.nz
+SUMMARY:Queen's Birthday
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20050606
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+
+ dtstart: >2005-06-06 00:00:00+12<
+ rrule: >FREQ=YEARLY;BYMONTH=6;BYDAY=1MO<
+ summary: >Queen's Birthday<
+
diff --git a/testing/tests/regression-suite/2001-REPORT-expanded-queens-birthday-2005.test b/testing/tests/regression-suite/2001-REPORT-expanded-queens-birthday-2005.test
new file mode 100644
index 00000000..e6af2b4f
--- /dev/null
+++ b/testing/tests/regression-suite/2001-REPORT-expanded-queens-birthday-2005.test
@@ -0,0 +1,44 @@
+#
+# Test REPORT access to a non-public calendar using a ticket.
+#
+TYPE=REPORT
+URL=http://regression.host/caldav.php/user4/nz_holidays/
+AUTH=user4:user4
+
+
+HEADER=User-Agent: DAViCalTester/public
+HEADER=Content-Type: text/xml; charset="UTF-8"
+HEAD
+
+
+BEGINDATA
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ENDDATA
+
+
+QUERY
+SELECT dtstart,
+ rrule,
+ summary
+ FROM calendar_item
+ WHERE dav_name ~ '^/user4/nz_holidays/'
+ AND summary ~* 'queen'
+ AND (rrule IS NOT NULL
+ OR (dtstart >= '20050531T120000Z' AND dtstart < '20050608T120000Z')
+ )
+ENDQUERY
+
diff --git a/testing/tests/regression-suite/2002-REPORT-expanded-nz-holidays-2006.result b/testing/tests/regression-suite/2002-REPORT-expanded-nz-holidays-2006.result
new file mode 100644
index 00000000..974a3080
--- /dev/null
+++ b/testing/tests/regression-suite/2002-REPORT-expanded-nz-holidays-2006.result
@@ -0,0 +1,657 @@
+HTTP/1.1 207 Multi-Status
+Date: Dow, 01 Jan 2000 00:00:00 GMT
+DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
+DAV: extended-mkcol, calendar-proxy, bind, addressbook
+ETag: "3b41624f338d0d14f3c1b491c3a51ea5"
+Content-Length: 14640
+Content-Type: text/xml; charset="utf-8"
+
+
+
+
+ /caldav.php/user4/nz_holidays/20081226-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T225121Z
+LAST-MODIFIED:20081117T225144Z
+DTSTAMP:20081117T225121Z
+UID:20081226-1-all-publicholidays-dol.govt.nz
+SUMMARY:Boxing Day
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20061226
+RECURRENCE-ID;VALUE=DATE:20061226
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090101-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T225212Z
+LAST-MODIFIED:20081117T230337Z
+DTSTAMP:20081117T225212Z
+UID:20090101-1-all-publicholidays-dol.govt.nz
+SUMMARY:New Year's Day
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:1
+DTSTART;VALUE=DATE:20060101
+RECURRENCE-ID;VALUE=DATE:20060101
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20081225-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T224951Z
+LAST-MODIFIED:20081117T235108Z
+DTSTAMP:20081117T224951Z
+UID:20081225-1-all-publicholidays-dol.govt.nz
+SUMMARY:Christmas Day
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:2
+DTSTART;VALUE=DATE:20061225
+RECURRENCE-ID;VALUE=DATE:20061225
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090206-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T235224Z
+LAST-MODIFIED:20081120T002639Z
+DTSTAMP:20081117T235224Z
+UID:20090206-1-all-publicholidays-dol.govt.nz
+SUMMARY:Waitangi Day
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:4
+DTSTART;VALUE=DATE:20060206
+RECURRENCE-ID;VALUE=DATE:20060206
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090425-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T011910Z
+LAST-MODIFIED:20081120T001537Z
+DTSTAMP:20081118T011910Z
+UID:20090425-1-all-publicholidays-dol.govt.nz
+SUMMARY:ANZAC Day
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:2
+DTSTART;VALUE=DATE:20060425
+RECURRENCE-ID;VALUE=DATE:20060425
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090601-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T011947Z
+LAST-MODIFIED:20081118T012009Z
+DTSTAMP:20081118T011947Z
+UID:20090601-1-all-publicholidays-dol.govt.nz
+SUMMARY:Queen's Birthday
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20060605
+RECURRENCE-ID;VALUE=DATE:20060605
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091026-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T012125Z
+LAST-MODIFIED:20081118T012150Z
+DTSTAMP:20081118T012125Z
+UID:20091026-1-all-publicholidays-dol.govt.nz
+SUMMARY:Labour Day
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20061023
+RECURRENCE-ID;VALUE=DATE:20061023
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090102-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T235121Z
+LAST-MODIFIED:20081118T012314Z
+DTSTAMP:20081117T235121Z
+UID:20090102-1-all-publicholidays-dol.govt.nz
+SUMMARY:Day after New Year's Day
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20060102
+RECURRENCE-ID;VALUE=DATE:20060102
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091226-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T012344Z
+LAST-MODIFIED:20081118T012529Z
+DTSTAMP:20081118T012344Z
+UID:20091226-1-all-publicholidays-dol.govt.nz
+SUMMARY:Boxing Day Holiday
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:1
+DTSTART;VALUE=DATE:20061226
+RECURRENCE-ID;VALUE=DATE:20061226
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091228-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T012537Z
+LAST-MODIFIED:20081118T012606Z
+DTSTAMP:20081118T012537Z
+UID:20091228-1-all-publicholidays-dol.govt.nz
+SUMMARY:Christmas Day Holiday
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20061225
+RECURRENCE-ID;VALUE=DATE:20061225
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20100101-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T012634Z
+LAST-MODIFIED:20081118T012657Z
+DTSTAMP:20081118T012634Z
+UID:20100101-1-all-publicholidays-dol.govt.nz
+SUMMARY:New Year's Day Holiday
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20060102
+RECURRENCE-ID;VALUE=DATE:20060102
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20100607-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T013050Z
+LAST-MODIFIED:20081118T013102Z
+DTSTAMP:20081118T013050Z
+UID:20100607-1-all-publicholidays-dol.govt.nz
+SUMMARY:Day after New Year's Day Holiday
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20060103
+RECURRENCE-ID;VALUE=DATE:20060103
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20081201-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200154Z
+LAST-MODIFIED:20081119T200227Z
+DTSTAMP:20081119T200154Z
+UID:20081201-1-all-publicholidays-dol.govt.nz
+SUMMARY:Westland Anniversary Day (Monday nearest 1st December)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20061204
+RECURRENCE-ID;VALUE=DATE:20061204
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20081201-2-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200252Z
+LAST-MODIFIED:20081119T200304Z
+DTSTAMP:20081119T200252Z
+UID:20081201-2-all-publicholidays-dol.govt.nz
+SUMMARY:Chatham Islands Anniversary Day (Monday nearest 30th November)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20061127
+RECURRENCE-ID;VALUE=DATE:20061127
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090126-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200321Z
+LAST-MODIFIED:20081119T200334Z
+DTSTAMP:20081119T200321Z
+UID:20090126-1-all-publicholidays-dol.govt.nz
+SUMMARY:Auckland Anniversary Day (Monday nearest 29th January)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20060130
+RECURRENCE-ID;VALUE=DATE:20060130
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090119-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200350Z
+LAST-MODIFIED:20081119T200406Z
+DTSTAMP:20081119T200350Z
+UID:20090119-1-all-publicholidays-dol.govt.nz
+SUMMARY:Wellington Anniversary Day (Monday nearest 22nd January)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20060123
+RECURRENCE-ID;VALUE=DATE:20060123
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090119-2-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200431Z
+LAST-MODIFIED:20081119T200443Z
+DTSTAMP:20081119T200431Z
+UID:20090119-2-all-publicholidays-dol.govt.nz
+SUMMARY:Southland Anniversary Day (Monday nearest 17th January)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20060116
+RECURRENCE-ID;VALUE=DATE:20060116
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090202-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200519Z
+LAST-MODIFIED:20081119T200530Z
+DTSTAMP:20081119T200519Z
+UID:20090202-1-all-publicholidays-dol.govt.nz
+SUMMARY:Nelson Anniversary Day (Monday nearest 1st Feb)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20060130
+RECURRENCE-ID;VALUE=DATE:20060130
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091023-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200759Z
+LAST-MODIFIED:20081119T200809Z
+DTSTAMP:20081119T200759Z
+UID:20091023-1-all-publicholidays-dol.govt.nz
+SUMMARY:
+ Hawkes' Bay Anniversary Day (Friday before 4th Monday of October)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20061020
+RECURRENCE-ID;VALUE=DATE:20061020
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091102-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200840Z
+LAST-MODIFIED:20081119T200928Z
+DTSTAMP:20081119T200840Z
+UID:20091102-1-all-publicholidays-dol.govt.nz
+SUMMARY:Marlborough Anniversary Day (Monday after 4th Monday of October)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20061030
+RECURRENCE-ID;VALUE=DATE:20061030
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091113-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T201008Z
+LAST-MODIFIED:20081119T201040Z
+DTSTAMP:20081119T201008Z
+UID:20091113-1-all-publicholidays-dol.govt.nz
+SUMMARY:Canterbury Anniversary Day (Second Friday after the first Tuesda
+ y in November)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20061117
+RECURRENCE-ID;VALUE=DATE:20061117
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090928-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T201140Z
+LAST-MODIFIED:20081119T201153Z
+DTSTAMP:20081119T201140Z
+UID:20090928-1-all-publicholidays-dol.govt.nz
+SUMMARY:South Canterbury Anniversary Day (4th Monday in September)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20060925
+RECURRENCE-ID;VALUE=DATE:20060925
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+
+ dtstart: >2005-12-26 00:00:00+13<
+ rrule: >FREQ=YEARLY<
+ summary: >Boxing Day<
+
+ dtstart: >2005-01-01 00:00:00+13<
+ rrule: >FREQ=YEARLY<
+ summary: >New Year's Day<
+
+ dtstart: >2005-12-25 00:00:00+13<
+ rrule: >FREQ=YEARLY<
+ summary: >Christmas Day<
+
+ dtstart: >2005-02-06 00:00:00+13<
+ rrule: >FREQ=YEARLY<
+ summary: >Waitangi Day<
+
+ dtstart: >2005-04-25 00:00:00+12<
+ rrule: >FREQ=YEARLY<
+ summary: >ANZAC Day<
+
+ dtstart: >2005-06-06 00:00:00+12<
+ rrule: >FREQ=YEARLY;BYMONTH=6;BYDAY=1MO<
+ summary: >Queen's Birthday<
+
+ dtstart: >2005-10-24 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=10;BYDAY=4MO<
+ summary: >Labour Day<
+
+ dtstart: >2005-01-02 00:00:00+13<
+ rrule: >FREQ=YEARLY<
+ summary: >Day after New Year's Day<
+
+ dtstart: >2005-12-27 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=12;BYDAY=MO,TU,WE,TH,FR;BYMONTHDAY=25,26,27,28;BYSETPOS=2<
+ summary: >Boxing Day Holiday<
+
+ dtstart: >2005-12-26 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=12;BYDAY=MO,TU,WE,TH,FR;BYMONTHDAY=25,26,27,28;BYSETPOS=1<
+ summary: >Christmas Day Holiday<
+
+ dtstart: >2005-01-03 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=1;BYDAY=MO,TU,WE,TH,FR;BYMONTHDAY=1,2,3,4;BYSETPOS=1<
+ summary: >New Year's Day Holiday<
+
+ dtstart: >2005-01-04 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=1;BYDAY=MO,TU,WE,TH,FR;BYMONTHDAY=1,2,3,4;BYSETPOS=2<
+ summary: >Day after New Year's Day Holiday<
+
+ dtstart: >2005-11-28 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYDAY=MO;BYYEARDAY=-34,-33,-32,-31,-30,-29,-28<
+ summary: >Westland Anniversary Day (Monday nearest 1st December)<
+
+ dtstart: >2005-11-28 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYDAY=MO;BYYEARDAY=-35,-34,-33,-32,-31,-30,-29<
+ summary: >Chatham Islands Anniversary Day (Monday nearest 30th November)<
+
+ dtstart: >2005-01-31 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYYEARDAY=26,27,28,29,30,31,32;BYDAY=MO<
+ summary: >Auckland Anniversary Day (Monday nearest 29th January)<
+
+ dtstart: >2005-01-24 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYYEARDAY=19,20,21,22,23,24,25;BYDAY=MO<
+ summary: >Wellington Anniversary Day (Monday nearest 22nd January)<
+
+ dtstart: >2005-01-17 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYYEARDAY=14,15,16,17,18,19,20;BYDAY=MO<
+ summary: >Southland Anniversary Day (Monday nearest 17th January)<
+
+ dtstart: >2005-01-31 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYYEARDAY=29,30,31,32,33,34,35;BYDAY=MO<
+ summary: >Nelson Anniversary Day (Monday nearest 1st Feb)<
+
+ dtstart: >2005-10-21 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=19,20,21,22,23,24,25;BYDAY=FR<
+ summary: >Hawkes' Bay Anniversary Day (Friday before 4th Monday of October)<
+
+ dtstart: >2005-10-31 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYDAY=MO;BYYEARDAY=-64,-63,-62,-61,-60,-59,-58<
+ summary: >Marlborough Anniversary Day (Monday after 4th Monday of October)<
+
+ dtstart: >2005-11-11 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=11;BYMONTHDAY=11,12,13,14,15,16,17;BYDAY=FR<
+ summary: >Canterbury Anniversary Day (Second Friday after the first Tuesday in November)<
+
+ dtstart: >2005-09-26 00:00:00+12<
+ rrule: >FREQ=YEARLY;BYMONTH=9;BYDAY=4MO<
+ summary: >South Canterbury Anniversary Day (4th Monday in September)<
+
diff --git a/testing/tests/regression-suite/2002-REPORT-expanded-nz-holidays-2006.test b/testing/tests/regression-suite/2002-REPORT-expanded-nz-holidays-2006.test
new file mode 100644
index 00000000..58e8b022
--- /dev/null
+++ b/testing/tests/regression-suite/2002-REPORT-expanded-nz-holidays-2006.test
@@ -0,0 +1,43 @@
+#
+# Test expanded report for NZ public holidays for 2006
+#
+TYPE=REPORT
+URL=http://regression.host/caldav.php/user4/nz_holidays/
+AUTH=user4:user4
+
+
+HEADER=User-Agent: DAViCalTester/public
+HEADER=Content-Type: text/xml; charset="UTF-8"
+HEAD
+
+
+BEGINDATA
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ENDDATA
+
+
+QUERY
+SELECT dtstart,
+ rrule,
+ summary
+ FROM calendar_item
+ WHERE dav_name ~ '^/user4/nz_holidays/'
+ AND (rrule IS NOT NULL
+ OR (dtstart >= '20051231T110000Z' AND dtstart < '20061231T110000Z')
+ )
+ENDQUERY
+
diff --git a/testing/tests/regression-suite/2003-REPORT-expanded-nz-holidays-2007.result b/testing/tests/regression-suite/2003-REPORT-expanded-nz-holidays-2007.result
new file mode 100644
index 00000000..3b0df625
--- /dev/null
+++ b/testing/tests/regression-suite/2003-REPORT-expanded-nz-holidays-2007.result
@@ -0,0 +1,657 @@
+HTTP/1.1 207 Multi-Status
+Date: Dow, 01 Jan 2000 00:00:00 GMT
+DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
+DAV: extended-mkcol, calendar-proxy, bind, addressbook
+ETag: "955e0ed1dfaf5538c233a58dd74b9b20"
+Content-Length: 14640
+Content-Type: text/xml; charset="utf-8"
+
+
+
+
+ /caldav.php/user4/nz_holidays/20081226-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T225121Z
+LAST-MODIFIED:20081117T225144Z
+DTSTAMP:20081117T225121Z
+UID:20081226-1-all-publicholidays-dol.govt.nz
+SUMMARY:Boxing Day
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20071226
+RECURRENCE-ID;VALUE=DATE:20071226
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090101-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T225212Z
+LAST-MODIFIED:20081117T230337Z
+DTSTAMP:20081117T225212Z
+UID:20090101-1-all-publicholidays-dol.govt.nz
+SUMMARY:New Year's Day
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:1
+DTSTART;VALUE=DATE:20070101
+RECURRENCE-ID;VALUE=DATE:20070101
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20081225-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T224951Z
+LAST-MODIFIED:20081117T235108Z
+DTSTAMP:20081117T224951Z
+UID:20081225-1-all-publicholidays-dol.govt.nz
+SUMMARY:Christmas Day
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:2
+DTSTART;VALUE=DATE:20071225
+RECURRENCE-ID;VALUE=DATE:20071225
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090206-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T235224Z
+LAST-MODIFIED:20081120T002639Z
+DTSTAMP:20081117T235224Z
+UID:20090206-1-all-publicholidays-dol.govt.nz
+SUMMARY:Waitangi Day
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:4
+DTSTART;VALUE=DATE:20070206
+RECURRENCE-ID;VALUE=DATE:20070206
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090425-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T011910Z
+LAST-MODIFIED:20081120T001537Z
+DTSTAMP:20081118T011910Z
+UID:20090425-1-all-publicholidays-dol.govt.nz
+SUMMARY:ANZAC Day
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:2
+DTSTART;VALUE=DATE:20070425
+RECURRENCE-ID;VALUE=DATE:20070425
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090601-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T011947Z
+LAST-MODIFIED:20081118T012009Z
+DTSTAMP:20081118T011947Z
+UID:20090601-1-all-publicholidays-dol.govt.nz
+SUMMARY:Queen's Birthday
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20070604
+RECURRENCE-ID;VALUE=DATE:20070604
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091026-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T012125Z
+LAST-MODIFIED:20081118T012150Z
+DTSTAMP:20081118T012125Z
+UID:20091026-1-all-publicholidays-dol.govt.nz
+SUMMARY:Labour Day
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20071022
+RECURRENCE-ID;VALUE=DATE:20071022
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090102-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T235121Z
+LAST-MODIFIED:20081118T012314Z
+DTSTAMP:20081117T235121Z
+UID:20090102-1-all-publicholidays-dol.govt.nz
+SUMMARY:Day after New Year's Day
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20070102
+RECURRENCE-ID;VALUE=DATE:20070102
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091226-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T012344Z
+LAST-MODIFIED:20081118T012529Z
+DTSTAMP:20081118T012344Z
+UID:20091226-1-all-publicholidays-dol.govt.nz
+SUMMARY:Boxing Day Holiday
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:1
+DTSTART;VALUE=DATE:20071226
+RECURRENCE-ID;VALUE=DATE:20071226
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091228-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T012537Z
+LAST-MODIFIED:20081118T012606Z
+DTSTAMP:20081118T012537Z
+UID:20091228-1-all-publicholidays-dol.govt.nz
+SUMMARY:Christmas Day Holiday
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20071225
+RECURRENCE-ID;VALUE=DATE:20071225
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20100101-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T012634Z
+LAST-MODIFIED:20081118T012657Z
+DTSTAMP:20081118T012634Z
+UID:20100101-1-all-publicholidays-dol.govt.nz
+SUMMARY:New Year's Day Holiday
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20070101
+RECURRENCE-ID;VALUE=DATE:20070101
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20100607-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T013050Z
+LAST-MODIFIED:20081118T013102Z
+DTSTAMP:20081118T013050Z
+UID:20100607-1-all-publicholidays-dol.govt.nz
+SUMMARY:Day after New Year's Day Holiday
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20070102
+RECURRENCE-ID;VALUE=DATE:20070102
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20081201-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200154Z
+LAST-MODIFIED:20081119T200227Z
+DTSTAMP:20081119T200154Z
+UID:20081201-1-all-publicholidays-dol.govt.nz
+SUMMARY:Westland Anniversary Day (Monday nearest 1st December)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20071203
+RECURRENCE-ID;VALUE=DATE:20071203
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20081201-2-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200252Z
+LAST-MODIFIED:20081119T200304Z
+DTSTAMP:20081119T200252Z
+UID:20081201-2-all-publicholidays-dol.govt.nz
+SUMMARY:Chatham Islands Anniversary Day (Monday nearest 30th November)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20071203
+RECURRENCE-ID;VALUE=DATE:20071203
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090126-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200321Z
+LAST-MODIFIED:20081119T200334Z
+DTSTAMP:20081119T200321Z
+UID:20090126-1-all-publicholidays-dol.govt.nz
+SUMMARY:Auckland Anniversary Day (Monday nearest 29th January)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20070129
+RECURRENCE-ID;VALUE=DATE:20070129
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090119-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200350Z
+LAST-MODIFIED:20081119T200406Z
+DTSTAMP:20081119T200350Z
+UID:20090119-1-all-publicholidays-dol.govt.nz
+SUMMARY:Wellington Anniversary Day (Monday nearest 22nd January)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20070122
+RECURRENCE-ID;VALUE=DATE:20070122
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090119-2-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200431Z
+LAST-MODIFIED:20081119T200443Z
+DTSTAMP:20081119T200431Z
+UID:20090119-2-all-publicholidays-dol.govt.nz
+SUMMARY:Southland Anniversary Day (Monday nearest 17th January)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20070115
+RECURRENCE-ID;VALUE=DATE:20070115
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090202-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200519Z
+LAST-MODIFIED:20081119T200530Z
+DTSTAMP:20081119T200519Z
+UID:20090202-1-all-publicholidays-dol.govt.nz
+SUMMARY:Nelson Anniversary Day (Monday nearest 1st Feb)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20070129
+RECURRENCE-ID;VALUE=DATE:20070129
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091023-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200759Z
+LAST-MODIFIED:20081119T200809Z
+DTSTAMP:20081119T200759Z
+UID:20091023-1-all-publicholidays-dol.govt.nz
+SUMMARY:
+ Hawkes' Bay Anniversary Day (Friday before 4th Monday of October)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20071019
+RECURRENCE-ID;VALUE=DATE:20071019
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091102-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200840Z
+LAST-MODIFIED:20081119T200928Z
+DTSTAMP:20081119T200840Z
+UID:20091102-1-all-publicholidays-dol.govt.nz
+SUMMARY:Marlborough Anniversary Day (Monday after 4th Monday of October)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20071029
+RECURRENCE-ID;VALUE=DATE:20071029
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091113-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T201008Z
+LAST-MODIFIED:20081119T201040Z
+DTSTAMP:20081119T201008Z
+UID:20091113-1-all-publicholidays-dol.govt.nz
+SUMMARY:Canterbury Anniversary Day (Second Friday after the first Tuesda
+ y in November)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20071116
+RECURRENCE-ID;VALUE=DATE:20071116
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090928-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T201140Z
+LAST-MODIFIED:20081119T201153Z
+DTSTAMP:20081119T201140Z
+UID:20090928-1-all-publicholidays-dol.govt.nz
+SUMMARY:South Canterbury Anniversary Day (4th Monday in September)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20070924
+RECURRENCE-ID;VALUE=DATE:20070924
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+
+ dtstart: >2005-12-26 00:00:00+13<
+ rrule: >FREQ=YEARLY<
+ summary: >Boxing Day<
+
+ dtstart: >2005-01-01 00:00:00+13<
+ rrule: >FREQ=YEARLY<
+ summary: >New Year's Day<
+
+ dtstart: >2005-12-25 00:00:00+13<
+ rrule: >FREQ=YEARLY<
+ summary: >Christmas Day<
+
+ dtstart: >2005-02-06 00:00:00+13<
+ rrule: >FREQ=YEARLY<
+ summary: >Waitangi Day<
+
+ dtstart: >2005-04-25 00:00:00+12<
+ rrule: >FREQ=YEARLY<
+ summary: >ANZAC Day<
+
+ dtstart: >2005-06-06 00:00:00+12<
+ rrule: >FREQ=YEARLY;BYMONTH=6;BYDAY=1MO<
+ summary: >Queen's Birthday<
+
+ dtstart: >2005-10-24 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=10;BYDAY=4MO<
+ summary: >Labour Day<
+
+ dtstart: >2005-01-02 00:00:00+13<
+ rrule: >FREQ=YEARLY<
+ summary: >Day after New Year's Day<
+
+ dtstart: >2005-12-27 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=12;BYDAY=MO,TU,WE,TH,FR;BYMONTHDAY=25,26,27,28;BYSETPOS=2<
+ summary: >Boxing Day Holiday<
+
+ dtstart: >2005-12-26 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=12;BYDAY=MO,TU,WE,TH,FR;BYMONTHDAY=25,26,27,28;BYSETPOS=1<
+ summary: >Christmas Day Holiday<
+
+ dtstart: >2005-01-03 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=1;BYDAY=MO,TU,WE,TH,FR;BYMONTHDAY=1,2,3,4;BYSETPOS=1<
+ summary: >New Year's Day Holiday<
+
+ dtstart: >2005-01-04 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=1;BYDAY=MO,TU,WE,TH,FR;BYMONTHDAY=1,2,3,4;BYSETPOS=2<
+ summary: >Day after New Year's Day Holiday<
+
+ dtstart: >2005-11-28 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYDAY=MO;BYYEARDAY=-34,-33,-32,-31,-30,-29,-28<
+ summary: >Westland Anniversary Day (Monday nearest 1st December)<
+
+ dtstart: >2005-11-28 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYDAY=MO;BYYEARDAY=-35,-34,-33,-32,-31,-30,-29<
+ summary: >Chatham Islands Anniversary Day (Monday nearest 30th November)<
+
+ dtstart: >2005-01-31 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYYEARDAY=26,27,28,29,30,31,32;BYDAY=MO<
+ summary: >Auckland Anniversary Day (Monday nearest 29th January)<
+
+ dtstart: >2005-01-24 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYYEARDAY=19,20,21,22,23,24,25;BYDAY=MO<
+ summary: >Wellington Anniversary Day (Monday nearest 22nd January)<
+
+ dtstart: >2005-01-17 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYYEARDAY=14,15,16,17,18,19,20;BYDAY=MO<
+ summary: >Southland Anniversary Day (Monday nearest 17th January)<
+
+ dtstart: >2005-01-31 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYYEARDAY=29,30,31,32,33,34,35;BYDAY=MO<
+ summary: >Nelson Anniversary Day (Monday nearest 1st Feb)<
+
+ dtstart: >2005-10-21 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=19,20,21,22,23,24,25;BYDAY=FR<
+ summary: >Hawkes' Bay Anniversary Day (Friday before 4th Monday of October)<
+
+ dtstart: >2005-10-31 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYDAY=MO;BYYEARDAY=-64,-63,-62,-61,-60,-59,-58<
+ summary: >Marlborough Anniversary Day (Monday after 4th Monday of October)<
+
+ dtstart: >2005-11-11 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=11;BYMONTHDAY=11,12,13,14,15,16,17;BYDAY=FR<
+ summary: >Canterbury Anniversary Day (Second Friday after the first Tuesday in November)<
+
+ dtstart: >2005-09-26 00:00:00+12<
+ rrule: >FREQ=YEARLY;BYMONTH=9;BYDAY=4MO<
+ summary: >South Canterbury Anniversary Day (4th Monday in September)<
+
diff --git a/testing/tests/regression-suite/2003-REPORT-expanded-nz-holidays-2007.test b/testing/tests/regression-suite/2003-REPORT-expanded-nz-holidays-2007.test
new file mode 100644
index 00000000..de929efd
--- /dev/null
+++ b/testing/tests/regression-suite/2003-REPORT-expanded-nz-holidays-2007.test
@@ -0,0 +1,43 @@
+#
+# Test expanded report for NZ public holidays for 2007
+#
+TYPE=REPORT
+URL=http://regression.host/caldav.php/user4/nz_holidays/
+AUTH=user4:user4
+
+
+HEADER=User-Agent: DAViCalTester/public
+HEADER=Content-Type: text/xml; charset="UTF-8"
+HEAD
+
+
+BEGINDATA
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ENDDATA
+
+
+QUERY
+SELECT dtstart,
+ rrule,
+ summary
+ FROM calendar_item
+ WHERE dav_name ~ '^/user4/nz_holidays/'
+ AND (rrule IS NOT NULL
+ OR (dtstart >= '20061231T110000Z' AND dtstart < '20071231T110000Z')
+ )
+ENDQUERY
+
diff --git a/testing/tests/regression-suite/2004-REPORT-expanded-nz-holidays-2008.result b/testing/tests/regression-suite/2004-REPORT-expanded-nz-holidays-2008.result
new file mode 100644
index 00000000..c587f1dd
--- /dev/null
+++ b/testing/tests/regression-suite/2004-REPORT-expanded-nz-holidays-2008.result
@@ -0,0 +1,657 @@
+HTTP/1.1 207 Multi-Status
+Date: Dow, 01 Jan 2000 00:00:00 GMT
+DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
+DAV: extended-mkcol, calendar-proxy, bind, addressbook
+ETag: "def6b45c6d1d4b99462a1a96bd4fd6d3"
+Content-Length: 14640
+Content-Type: text/xml; charset="utf-8"
+
+
+
+
+ /caldav.php/user4/nz_holidays/20081226-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T225121Z
+LAST-MODIFIED:20081117T225144Z
+DTSTAMP:20081117T225121Z
+UID:20081226-1-all-publicholidays-dol.govt.nz
+SUMMARY:Boxing Day
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20081226
+RECURRENCE-ID;VALUE=DATE:20081226
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090101-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T225212Z
+LAST-MODIFIED:20081117T230337Z
+DTSTAMP:20081117T225212Z
+UID:20090101-1-all-publicholidays-dol.govt.nz
+SUMMARY:New Year's Day
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:1
+DTSTART;VALUE=DATE:20080101
+RECURRENCE-ID;VALUE=DATE:20080101
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20081225-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T224951Z
+LAST-MODIFIED:20081117T235108Z
+DTSTAMP:20081117T224951Z
+UID:20081225-1-all-publicholidays-dol.govt.nz
+SUMMARY:Christmas Day
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:2
+DTSTART;VALUE=DATE:20081225
+RECURRENCE-ID;VALUE=DATE:20081225
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090206-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T235224Z
+LAST-MODIFIED:20081120T002639Z
+DTSTAMP:20081117T235224Z
+UID:20090206-1-all-publicholidays-dol.govt.nz
+SUMMARY:Waitangi Day
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:4
+DTSTART;VALUE=DATE:20080206
+RECURRENCE-ID;VALUE=DATE:20080206
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090425-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T011910Z
+LAST-MODIFIED:20081120T001537Z
+DTSTAMP:20081118T011910Z
+UID:20090425-1-all-publicholidays-dol.govt.nz
+SUMMARY:ANZAC Day
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:2
+DTSTART;VALUE=DATE:20080425
+RECURRENCE-ID;VALUE=DATE:20080425
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090601-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T011947Z
+LAST-MODIFIED:20081118T012009Z
+DTSTAMP:20081118T011947Z
+UID:20090601-1-all-publicholidays-dol.govt.nz
+SUMMARY:Queen's Birthday
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20080602
+RECURRENCE-ID;VALUE=DATE:20080602
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091026-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T012125Z
+LAST-MODIFIED:20081118T012150Z
+DTSTAMP:20081118T012125Z
+UID:20091026-1-all-publicholidays-dol.govt.nz
+SUMMARY:Labour Day
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20081027
+RECURRENCE-ID;VALUE=DATE:20081027
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090102-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T235121Z
+LAST-MODIFIED:20081118T012314Z
+DTSTAMP:20081117T235121Z
+UID:20090102-1-all-publicholidays-dol.govt.nz
+SUMMARY:Day after New Year's Day
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20080102
+RECURRENCE-ID;VALUE=DATE:20080102
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091226-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T012344Z
+LAST-MODIFIED:20081118T012529Z
+DTSTAMP:20081118T012344Z
+UID:20091226-1-all-publicholidays-dol.govt.nz
+SUMMARY:Boxing Day Holiday
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:1
+DTSTART;VALUE=DATE:20081226
+RECURRENCE-ID;VALUE=DATE:20081226
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091228-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T012537Z
+LAST-MODIFIED:20081118T012606Z
+DTSTAMP:20081118T012537Z
+UID:20091228-1-all-publicholidays-dol.govt.nz
+SUMMARY:Christmas Day Holiday
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20081225
+RECURRENCE-ID;VALUE=DATE:20081225
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20100101-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T012634Z
+LAST-MODIFIED:20081118T012657Z
+DTSTAMP:20081118T012634Z
+UID:20100101-1-all-publicholidays-dol.govt.nz
+SUMMARY:New Year's Day Holiday
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20080101
+RECURRENCE-ID;VALUE=DATE:20080101
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20100607-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T013050Z
+LAST-MODIFIED:20081118T013102Z
+DTSTAMP:20081118T013050Z
+UID:20100607-1-all-publicholidays-dol.govt.nz
+SUMMARY:Day after New Year's Day Holiday
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20080102
+RECURRENCE-ID;VALUE=DATE:20080102
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20081201-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200154Z
+LAST-MODIFIED:20081119T200227Z
+DTSTAMP:20081119T200154Z
+UID:20081201-1-all-publicholidays-dol.govt.nz
+SUMMARY:Westland Anniversary Day (Monday nearest 1st December)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20081201
+RECURRENCE-ID;VALUE=DATE:20081201
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20081201-2-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200252Z
+LAST-MODIFIED:20081119T200304Z
+DTSTAMP:20081119T200252Z
+UID:20081201-2-all-publicholidays-dol.govt.nz
+SUMMARY:Chatham Islands Anniversary Day (Monday nearest 30th November)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20081201
+RECURRENCE-ID;VALUE=DATE:20081201
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090126-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200321Z
+LAST-MODIFIED:20081119T200334Z
+DTSTAMP:20081119T200321Z
+UID:20090126-1-all-publicholidays-dol.govt.nz
+SUMMARY:Auckland Anniversary Day (Monday nearest 29th January)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20080128
+RECURRENCE-ID;VALUE=DATE:20080128
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090119-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200350Z
+LAST-MODIFIED:20081119T200406Z
+DTSTAMP:20081119T200350Z
+UID:20090119-1-all-publicholidays-dol.govt.nz
+SUMMARY:Wellington Anniversary Day (Monday nearest 22nd January)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20080121
+RECURRENCE-ID;VALUE=DATE:20080121
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090119-2-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200431Z
+LAST-MODIFIED:20081119T200443Z
+DTSTAMP:20081119T200431Z
+UID:20090119-2-all-publicholidays-dol.govt.nz
+SUMMARY:Southland Anniversary Day (Monday nearest 17th January)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20080114
+RECURRENCE-ID;VALUE=DATE:20080114
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090202-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200519Z
+LAST-MODIFIED:20081119T200530Z
+DTSTAMP:20081119T200519Z
+UID:20090202-1-all-publicholidays-dol.govt.nz
+SUMMARY:Nelson Anniversary Day (Monday nearest 1st Feb)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20080204
+RECURRENCE-ID;VALUE=DATE:20080204
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091023-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200759Z
+LAST-MODIFIED:20081119T200809Z
+DTSTAMP:20081119T200759Z
+UID:20091023-1-all-publicholidays-dol.govt.nz
+SUMMARY:
+ Hawkes' Bay Anniversary Day (Friday before 4th Monday of October)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20081024
+RECURRENCE-ID;VALUE=DATE:20081024
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091102-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200840Z
+LAST-MODIFIED:20081119T200928Z
+DTSTAMP:20081119T200840Z
+UID:20091102-1-all-publicholidays-dol.govt.nz
+SUMMARY:Marlborough Anniversary Day (Monday after 4th Monday of October)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20081103
+RECURRENCE-ID;VALUE=DATE:20081103
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091113-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T201008Z
+LAST-MODIFIED:20081119T201040Z
+DTSTAMP:20081119T201008Z
+UID:20091113-1-all-publicholidays-dol.govt.nz
+SUMMARY:Canterbury Anniversary Day (Second Friday after the first Tuesda
+ y in November)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20081114
+RECURRENCE-ID;VALUE=DATE:20081114
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090928-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T201140Z
+LAST-MODIFIED:20081119T201153Z
+DTSTAMP:20081119T201140Z
+UID:20090928-1-all-publicholidays-dol.govt.nz
+SUMMARY:South Canterbury Anniversary Day (4th Monday in September)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20080922
+RECURRENCE-ID;VALUE=DATE:20080922
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+
+ dtstart: >2005-12-26 00:00:00+13<
+ rrule: >FREQ=YEARLY<
+ summary: >Boxing Day<
+
+ dtstart: >2005-01-01 00:00:00+13<
+ rrule: >FREQ=YEARLY<
+ summary: >New Year's Day<
+
+ dtstart: >2005-12-25 00:00:00+13<
+ rrule: >FREQ=YEARLY<
+ summary: >Christmas Day<
+
+ dtstart: >2005-02-06 00:00:00+13<
+ rrule: >FREQ=YEARLY<
+ summary: >Waitangi Day<
+
+ dtstart: >2005-04-25 00:00:00+12<
+ rrule: >FREQ=YEARLY<
+ summary: >ANZAC Day<
+
+ dtstart: >2005-06-06 00:00:00+12<
+ rrule: >FREQ=YEARLY;BYMONTH=6;BYDAY=1MO<
+ summary: >Queen's Birthday<
+
+ dtstart: >2005-10-24 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=10;BYDAY=4MO<
+ summary: >Labour Day<
+
+ dtstart: >2005-01-02 00:00:00+13<
+ rrule: >FREQ=YEARLY<
+ summary: >Day after New Year's Day<
+
+ dtstart: >2005-12-27 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=12;BYDAY=MO,TU,WE,TH,FR;BYMONTHDAY=25,26,27,28;BYSETPOS=2<
+ summary: >Boxing Day Holiday<
+
+ dtstart: >2005-12-26 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=12;BYDAY=MO,TU,WE,TH,FR;BYMONTHDAY=25,26,27,28;BYSETPOS=1<
+ summary: >Christmas Day Holiday<
+
+ dtstart: >2005-01-03 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=1;BYDAY=MO,TU,WE,TH,FR;BYMONTHDAY=1,2,3,4;BYSETPOS=1<
+ summary: >New Year's Day Holiday<
+
+ dtstart: >2005-01-04 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=1;BYDAY=MO,TU,WE,TH,FR;BYMONTHDAY=1,2,3,4;BYSETPOS=2<
+ summary: >Day after New Year's Day Holiday<
+
+ dtstart: >2005-11-28 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYDAY=MO;BYYEARDAY=-34,-33,-32,-31,-30,-29,-28<
+ summary: >Westland Anniversary Day (Monday nearest 1st December)<
+
+ dtstart: >2005-11-28 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYDAY=MO;BYYEARDAY=-35,-34,-33,-32,-31,-30,-29<
+ summary: >Chatham Islands Anniversary Day (Monday nearest 30th November)<
+
+ dtstart: >2005-01-31 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYYEARDAY=26,27,28,29,30,31,32;BYDAY=MO<
+ summary: >Auckland Anniversary Day (Monday nearest 29th January)<
+
+ dtstart: >2005-01-24 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYYEARDAY=19,20,21,22,23,24,25;BYDAY=MO<
+ summary: >Wellington Anniversary Day (Monday nearest 22nd January)<
+
+ dtstart: >2005-01-17 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYYEARDAY=14,15,16,17,18,19,20;BYDAY=MO<
+ summary: >Southland Anniversary Day (Monday nearest 17th January)<
+
+ dtstart: >2005-01-31 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYYEARDAY=29,30,31,32,33,34,35;BYDAY=MO<
+ summary: >Nelson Anniversary Day (Monday nearest 1st Feb)<
+
+ dtstart: >2005-10-21 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=19,20,21,22,23,24,25;BYDAY=FR<
+ summary: >Hawkes' Bay Anniversary Day (Friday before 4th Monday of October)<
+
+ dtstart: >2005-10-31 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYDAY=MO;BYYEARDAY=-64,-63,-62,-61,-60,-59,-58<
+ summary: >Marlborough Anniversary Day (Monday after 4th Monday of October)<
+
+ dtstart: >2005-11-11 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=11;BYMONTHDAY=11,12,13,14,15,16,17;BYDAY=FR<
+ summary: >Canterbury Anniversary Day (Second Friday after the first Tuesday in November)<
+
+ dtstart: >2005-09-26 00:00:00+12<
+ rrule: >FREQ=YEARLY;BYMONTH=9;BYDAY=4MO<
+ summary: >South Canterbury Anniversary Day (4th Monday in September)<
+
diff --git a/testing/tests/regression-suite/2004-REPORT-expanded-nz-holidays-2008.test b/testing/tests/regression-suite/2004-REPORT-expanded-nz-holidays-2008.test
new file mode 100644
index 00000000..59ae8d02
--- /dev/null
+++ b/testing/tests/regression-suite/2004-REPORT-expanded-nz-holidays-2008.test
@@ -0,0 +1,44 @@
+#
+# Test expanded report for NZ public holidays for 2008
+# Test REPORT access to a non-public calendar using a ticket.
+#
+TYPE=REPORT
+URL=http://regression.host/caldav.php/user4/nz_holidays/
+AUTH=user4:user4
+
+
+HEADER=User-Agent: DAViCalTester/public
+HEADER=Content-Type: text/xml; charset="UTF-8"
+HEAD
+
+
+BEGINDATA
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ENDDATA
+
+
+QUERY
+SELECT dtstart,
+ rrule,
+ summary
+ FROM calendar_item
+ WHERE dav_name ~ '^/user4/nz_holidays/'
+ AND (rrule IS NOT NULL
+ OR (dtstart >= '20071231T110000Z' AND dtstart < '20081231T110000Z')
+ )
+ENDQUERY
+
diff --git a/testing/tests/regression-suite/2005-REPORT-expanded-nz-holidays-2009.result b/testing/tests/regression-suite/2005-REPORT-expanded-nz-holidays-2009.result
new file mode 100644
index 00000000..da2b3340
--- /dev/null
+++ b/testing/tests/regression-suite/2005-REPORT-expanded-nz-holidays-2009.result
@@ -0,0 +1,769 @@
+HTTP/1.1 207 Multi-Status
+Date: Dow, 01 Jan 2000 00:00:00 GMT
+DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
+DAV: extended-mkcol, calendar-proxy, bind, addressbook
+ETag: "aaa970e0626e252fed189561f26be5dd"
+Content-Length: 17061
+Content-Type: text/xml; charset="utf-8"
+
+
+
+
+ /caldav.php/user4/nz_holidays/20081226-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T225121Z
+LAST-MODIFIED:20081117T225144Z
+DTSTAMP:20081117T225121Z
+UID:20081226-1-all-publicholidays-dol.govt.nz
+SUMMARY:Boxing Day
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20091226
+RECURRENCE-ID;VALUE=DATE:20091226
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090101-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T225212Z
+LAST-MODIFIED:20081117T230337Z
+DTSTAMP:20081117T225212Z
+UID:20090101-1-all-publicholidays-dol.govt.nz
+SUMMARY:New Year's Day
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:1
+DTSTART;VALUE=DATE:20090101
+RECURRENCE-ID;VALUE=DATE:20090101
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20081225-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T224951Z
+LAST-MODIFIED:20081117T235108Z
+DTSTAMP:20081117T224951Z
+UID:20081225-1-all-publicholidays-dol.govt.nz
+SUMMARY:Christmas Day
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:2
+DTSTART;VALUE=DATE:20091225
+RECURRENCE-ID;VALUE=DATE:20091225
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090410-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T235335Z
+LAST-MODIFIED:20081117T235417Z
+DTSTAMP:20081117T235335Z
+UID:20090410-1-all-publicholidays-dol.govt.nz
+SUMMARY:Good Friday
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20090410
+DURATION:PT1440M
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090206-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T235224Z
+LAST-MODIFIED:20081120T002639Z
+DTSTAMP:20081117T235224Z
+UID:20090206-1-all-publicholidays-dol.govt.nz
+SUMMARY:Waitangi Day
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:4
+DTSTART;VALUE=DATE:20090206
+RECURRENCE-ID;VALUE=DATE:20090206
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090413-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T235455Z
+LAST-MODIFIED:20081117T235524Z
+DTSTAMP:20081117T235455Z
+UID:20090413-1-all-publicholidays-dol.govt.nz
+SUMMARY:Easter Monday
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20090413
+DURATION:PT1440M
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090425-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T011910Z
+LAST-MODIFIED:20081120T001537Z
+DTSTAMP:20081118T011910Z
+UID:20090425-1-all-publicholidays-dol.govt.nz
+SUMMARY:ANZAC Day
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:2
+DTSTART;VALUE=DATE:20090425
+RECURRENCE-ID;VALUE=DATE:20090425
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090601-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T011947Z
+LAST-MODIFIED:20081118T012009Z
+DTSTAMP:20081118T011947Z
+UID:20090601-1-all-publicholidays-dol.govt.nz
+SUMMARY:Queen's Birthday
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20090601
+RECURRENCE-ID;VALUE=DATE:20090601
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091026-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T012125Z
+LAST-MODIFIED:20081118T012150Z
+DTSTAMP:20081118T012125Z
+UID:20091026-1-all-publicholidays-dol.govt.nz
+SUMMARY:Labour Day
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20091026
+RECURRENCE-ID;VALUE=DATE:20091026
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090102-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T235121Z
+LAST-MODIFIED:20081118T012314Z
+DTSTAMP:20081117T235121Z
+UID:20090102-1-all-publicholidays-dol.govt.nz
+SUMMARY:Day after New Year's Day
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20090102
+RECURRENCE-ID;VALUE=DATE:20090102
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091226-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T012344Z
+LAST-MODIFIED:20081118T012529Z
+DTSTAMP:20081118T012344Z
+UID:20091226-1-all-publicholidays-dol.govt.nz
+SUMMARY:Boxing Day Holiday
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:1
+DTSTART;VALUE=DATE:20091228
+RECURRENCE-ID;VALUE=DATE:20091228
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091228-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T012537Z
+LAST-MODIFIED:20081118T012606Z
+DTSTAMP:20081118T012537Z
+UID:20091228-1-all-publicholidays-dol.govt.nz
+SUMMARY:Christmas Day Holiday
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20091225
+RECURRENCE-ID;VALUE=DATE:20091225
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20100101-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T012634Z
+LAST-MODIFIED:20081118T012657Z
+DTSTAMP:20081118T012634Z
+UID:20100101-1-all-publicholidays-dol.govt.nz
+SUMMARY:New Year's Day Holiday
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20090101
+RECURRENCE-ID;VALUE=DATE:20090101
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20100607-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T013050Z
+LAST-MODIFIED:20081118T013102Z
+DTSTAMP:20081118T013050Z
+UID:20100607-1-all-publicholidays-dol.govt.nz
+SUMMARY:Day after New Year's Day Holiday
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20090102
+RECURRENCE-ID;VALUE=DATE:20090102
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20081201-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200154Z
+LAST-MODIFIED:20081119T200227Z
+DTSTAMP:20081119T200154Z
+UID:20081201-1-all-publicholidays-dol.govt.nz
+SUMMARY:Westland Anniversary Day (Monday nearest 1st December)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20091130
+RECURRENCE-ID;VALUE=DATE:20091130
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20081201-2-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200252Z
+LAST-MODIFIED:20081119T200304Z
+DTSTAMP:20081119T200252Z
+UID:20081201-2-all-publicholidays-dol.govt.nz
+SUMMARY:Chatham Islands Anniversary Day (Monday nearest 30th November)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20091130
+RECURRENCE-ID;VALUE=DATE:20091130
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090126-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200321Z
+LAST-MODIFIED:20081119T200334Z
+DTSTAMP:20081119T200321Z
+UID:20090126-1-all-publicholidays-dol.govt.nz
+SUMMARY:Auckland Anniversary Day (Monday nearest 29th January)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20090126
+RECURRENCE-ID;VALUE=DATE:20090126
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090119-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200350Z
+LAST-MODIFIED:20081119T200406Z
+DTSTAMP:20081119T200350Z
+UID:20090119-1-all-publicholidays-dol.govt.nz
+SUMMARY:Wellington Anniversary Day (Monday nearest 22nd January)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20090119
+RECURRENCE-ID;VALUE=DATE:20090119
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090119-2-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200431Z
+LAST-MODIFIED:20081119T200443Z
+DTSTAMP:20081119T200431Z
+UID:20090119-2-all-publicholidays-dol.govt.nz
+SUMMARY:Southland Anniversary Day (Monday nearest 17th January)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20090119
+RECURRENCE-ID;VALUE=DATE:20090119
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090202-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200519Z
+LAST-MODIFIED:20081119T200530Z
+DTSTAMP:20081119T200519Z
+UID:20090202-1-all-publicholidays-dol.govt.nz
+SUMMARY:Nelson Anniversary Day (Monday nearest 1st Feb)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20090202
+RECURRENCE-ID;VALUE=DATE:20090202
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090309-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200607Z
+LAST-MODIFIED:20081119T200622Z
+DTSTAMP:20081119T200607Z
+UID:20090309-1-all-publicholidays-dol.govt.nz
+SUMMARY:Taranaki Anniversary Day
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20090309
+DURATION:PT1440M
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090323-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200640Z
+LAST-MODIFIED:20081119T200650Z
+DTSTAMP:20081119T200640Z
+UID:20090323-1-all-publicholidays-dol.govt.nz
+SUMMARY:Otago Anniversary Day
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20090323
+DURATION:PT1440M
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091023-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200759Z
+LAST-MODIFIED:20081119T200809Z
+DTSTAMP:20081119T200759Z
+UID:20091023-1-all-publicholidays-dol.govt.nz
+SUMMARY:
+ Hawkes' Bay Anniversary Day (Friday before 4th Monday of October)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20091023
+RECURRENCE-ID;VALUE=DATE:20091023
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091102-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200840Z
+LAST-MODIFIED:20081119T200928Z
+DTSTAMP:20081119T200840Z
+UID:20091102-1-all-publicholidays-dol.govt.nz
+SUMMARY:Marlborough Anniversary Day (Monday after 4th Monday of October)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20091102
+RECURRENCE-ID;VALUE=DATE:20091102
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091113-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T201008Z
+LAST-MODIFIED:20081119T201040Z
+DTSTAMP:20081119T201008Z
+UID:20091113-1-all-publicholidays-dol.govt.nz
+SUMMARY:Canterbury Anniversary Day (Second Friday after the first Tuesda
+ y in November)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20091113
+RECURRENCE-ID;VALUE=DATE:20091113
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090928-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T201140Z
+LAST-MODIFIED:20081119T201153Z
+DTSTAMP:20081119T201140Z
+UID:20090928-1-all-publicholidays-dol.govt.nz
+SUMMARY:South Canterbury Anniversary Day (4th Monday in September)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20090928
+RECURRENCE-ID;VALUE=DATE:20090928
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+
+ dtstart: >2005-12-26 00:00:00+13<
+ rrule: >FREQ=YEARLY<
+ summary: >Boxing Day<
+
+ dtstart: >2005-01-01 00:00:00+13<
+ rrule: >FREQ=YEARLY<
+ summary: >New Year's Day<
+
+ dtstart: >2005-12-25 00:00:00+13<
+ rrule: >FREQ=YEARLY<
+ summary: >Christmas Day<
+
+ dtstart: >2009-04-10 00:00:00+12<
+ rrule: >NULL<
+ summary: >Good Friday<
+
+ dtstart: >2005-02-06 00:00:00+13<
+ rrule: >FREQ=YEARLY<
+ summary: >Waitangi Day<
+
+ dtstart: >2009-04-13 00:00:00+12<
+ rrule: >NULL<
+ summary: >Easter Monday<
+
+ dtstart: >2005-04-25 00:00:00+12<
+ rrule: >FREQ=YEARLY<
+ summary: >ANZAC Day<
+
+ dtstart: >2005-06-06 00:00:00+12<
+ rrule: >FREQ=YEARLY;BYMONTH=6;BYDAY=1MO<
+ summary: >Queen's Birthday<
+
+ dtstart: >2005-10-24 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=10;BYDAY=4MO<
+ summary: >Labour Day<
+
+ dtstart: >2005-01-02 00:00:00+13<
+ rrule: >FREQ=YEARLY<
+ summary: >Day after New Year's Day<
+
+ dtstart: >2005-12-27 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=12;BYDAY=MO,TU,WE,TH,FR;BYMONTHDAY=25,26,27,28;BYSETPOS=2<
+ summary: >Boxing Day Holiday<
+
+ dtstart: >2005-12-26 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=12;BYDAY=MO,TU,WE,TH,FR;BYMONTHDAY=25,26,27,28;BYSETPOS=1<
+ summary: >Christmas Day Holiday<
+
+ dtstart: >2005-01-03 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=1;BYDAY=MO,TU,WE,TH,FR;BYMONTHDAY=1,2,3,4;BYSETPOS=1<
+ summary: >New Year's Day Holiday<
+
+ dtstart: >2005-01-04 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=1;BYDAY=MO,TU,WE,TH,FR;BYMONTHDAY=1,2,3,4;BYSETPOS=2<
+ summary: >Day after New Year's Day Holiday<
+
+ dtstart: >2005-11-28 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYDAY=MO;BYYEARDAY=-34,-33,-32,-31,-30,-29,-28<
+ summary: >Westland Anniversary Day (Monday nearest 1st December)<
+
+ dtstart: >2005-11-28 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYDAY=MO;BYYEARDAY=-35,-34,-33,-32,-31,-30,-29<
+ summary: >Chatham Islands Anniversary Day (Monday nearest 30th November)<
+
+ dtstart: >2005-01-31 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYYEARDAY=26,27,28,29,30,31,32;BYDAY=MO<
+ summary: >Auckland Anniversary Day (Monday nearest 29th January)<
+
+ dtstart: >2005-01-24 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYYEARDAY=19,20,21,22,23,24,25;BYDAY=MO<
+ summary: >Wellington Anniversary Day (Monday nearest 22nd January)<
+
+ dtstart: >2005-01-17 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYYEARDAY=14,15,16,17,18,19,20;BYDAY=MO<
+ summary: >Southland Anniversary Day (Monday nearest 17th January)<
+
+ dtstart: >2005-01-31 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYYEARDAY=29,30,31,32,33,34,35;BYDAY=MO<
+ summary: >Nelson Anniversary Day (Monday nearest 1st Feb)<
+
+ dtstart: >2009-03-09 00:00:00+13<
+ rrule: >NULL<
+ summary: >Taranaki Anniversary Day<
+
+ dtstart: >2009-03-23 00:00:00+13<
+ rrule: >NULL<
+ summary: >Otago Anniversary Day<
+
+ dtstart: >2005-10-21 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=19,20,21,22,23,24,25;BYDAY=FR<
+ summary: >Hawkes' Bay Anniversary Day (Friday before 4th Monday of October)<
+
+ dtstart: >2005-10-31 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYDAY=MO;BYYEARDAY=-64,-63,-62,-61,-60,-59,-58<
+ summary: >Marlborough Anniversary Day (Monday after 4th Monday of October)<
+
+ dtstart: >2005-11-11 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=11;BYMONTHDAY=11,12,13,14,15,16,17;BYDAY=FR<
+ summary: >Canterbury Anniversary Day (Second Friday after the first Tuesday in November)<
+
+ dtstart: >2005-09-26 00:00:00+12<
+ rrule: >FREQ=YEARLY;BYMONTH=9;BYDAY=4MO<
+ summary: >South Canterbury Anniversary Day (4th Monday in September)<
+
diff --git a/testing/tests/regression-suite/2005-REPORT-expanded-nz-holidays-2009.test b/testing/tests/regression-suite/2005-REPORT-expanded-nz-holidays-2009.test
new file mode 100644
index 00000000..4855428d
--- /dev/null
+++ b/testing/tests/regression-suite/2005-REPORT-expanded-nz-holidays-2009.test
@@ -0,0 +1,43 @@
+#
+# Test expanded report for NZ public holidays for 2009
+#
+TYPE=REPORT
+URL=http://regression.host/caldav.php/user4/nz_holidays/
+AUTH=user4:user4
+
+
+HEADER=User-Agent: DAViCalTester/public
+HEADER=Content-Type: text/xml; charset="UTF-8"
+HEAD
+
+
+BEGINDATA
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ENDDATA
+
+
+QUERY
+SELECT dtstart,
+ rrule,
+ summary
+ FROM calendar_item
+ WHERE dav_name ~ '^/user4/nz_holidays/'
+ AND (rrule IS NOT NULL
+ OR (dtstart >= '20081231T110000Z' AND dtstart < '20091231T110000Z')
+ )
+ENDQUERY
+
diff --git a/testing/tests/regression-suite/2006-REPORT-expanded-nz-holidays-2010.result b/testing/tests/regression-suite/2006-REPORT-expanded-nz-holidays-2010.result
new file mode 100644
index 00000000..686dc133
--- /dev/null
+++ b/testing/tests/regression-suite/2006-REPORT-expanded-nz-holidays-2010.result
@@ -0,0 +1,769 @@
+HTTP/1.1 207 Multi-Status
+Date: Dow, 01 Jan 2000 00:00:00 GMT
+DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
+DAV: extended-mkcol, calendar-proxy, bind, addressbook
+ETag: "269714db682bb823f6b711c10d7ec6c5"
+Content-Length: 17061
+Content-Type: text/xml; charset="utf-8"
+
+
+
+
+ /caldav.php/user4/nz_holidays/20081226-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T225121Z
+LAST-MODIFIED:20081117T225144Z
+DTSTAMP:20081117T225121Z
+UID:20081226-1-all-publicholidays-dol.govt.nz
+SUMMARY:Boxing Day
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20101226
+RECURRENCE-ID;VALUE=DATE:20101226
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090101-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T225212Z
+LAST-MODIFIED:20081117T230337Z
+DTSTAMP:20081117T225212Z
+UID:20090101-1-all-publicholidays-dol.govt.nz
+SUMMARY:New Year's Day
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:1
+DTSTART;VALUE=DATE:20100101
+RECURRENCE-ID;VALUE=DATE:20100101
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20081225-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T224951Z
+LAST-MODIFIED:20081117T235108Z
+DTSTAMP:20081117T224951Z
+UID:20081225-1-all-publicholidays-dol.govt.nz
+SUMMARY:Christmas Day
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:2
+DTSTART;VALUE=DATE:20101225
+RECURRENCE-ID;VALUE=DATE:20101225
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090206-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T235224Z
+LAST-MODIFIED:20081120T002639Z
+DTSTAMP:20081117T235224Z
+UID:20090206-1-all-publicholidays-dol.govt.nz
+SUMMARY:Waitangi Day
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:4
+DTSTART;VALUE=DATE:20100206
+RECURRENCE-ID;VALUE=DATE:20100206
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090425-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T011910Z
+LAST-MODIFIED:20081120T001537Z
+DTSTAMP:20081118T011910Z
+UID:20090425-1-all-publicholidays-dol.govt.nz
+SUMMARY:ANZAC Day
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:2
+DTSTART;VALUE=DATE:20100425
+RECURRENCE-ID;VALUE=DATE:20100425
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090601-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T011947Z
+LAST-MODIFIED:20081118T012009Z
+DTSTAMP:20081118T011947Z
+UID:20090601-1-all-publicholidays-dol.govt.nz
+SUMMARY:Queen's Birthday
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20100607
+RECURRENCE-ID;VALUE=DATE:20100607
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091026-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T012125Z
+LAST-MODIFIED:20081118T012150Z
+DTSTAMP:20081118T012125Z
+UID:20091026-1-all-publicholidays-dol.govt.nz
+SUMMARY:Labour Day
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20101025
+RECURRENCE-ID;VALUE=DATE:20101025
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090102-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T235121Z
+LAST-MODIFIED:20081118T012314Z
+DTSTAMP:20081117T235121Z
+UID:20090102-1-all-publicholidays-dol.govt.nz
+SUMMARY:Day after New Year's Day
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20100102
+RECURRENCE-ID;VALUE=DATE:20100102
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091226-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T012344Z
+LAST-MODIFIED:20081118T012529Z
+DTSTAMP:20081118T012344Z
+UID:20091226-1-all-publicholidays-dol.govt.nz
+SUMMARY:Boxing Day Holiday
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:1
+DTSTART;VALUE=DATE:20101228
+RECURRENCE-ID;VALUE=DATE:20101228
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091228-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T012537Z
+LAST-MODIFIED:20081118T012606Z
+DTSTAMP:20081118T012537Z
+UID:20091228-1-all-publicholidays-dol.govt.nz
+SUMMARY:Christmas Day Holiday
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20101227
+RECURRENCE-ID;VALUE=DATE:20101227
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20100101-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T012634Z
+LAST-MODIFIED:20081118T012657Z
+DTSTAMP:20081118T012634Z
+UID:20100101-1-all-publicholidays-dol.govt.nz
+SUMMARY:New Year's Day Holiday
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20100101
+RECURRENCE-ID;VALUE=DATE:20100101
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20100607-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T013050Z
+LAST-MODIFIED:20081118T013102Z
+DTSTAMP:20081118T013050Z
+UID:20100607-1-all-publicholidays-dol.govt.nz
+SUMMARY:Day after New Year's Day Holiday
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20100104
+RECURRENCE-ID;VALUE=DATE:20100104
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20100402-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T012802Z
+LAST-MODIFIED:20081118T012811Z
+DTSTAMP:20081118T012802Z
+UID:20100402-1-all-publicholidays-dol.govt.nz
+SUMMARY:Good Friday
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20100402
+DURATION:PT1440M
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20100405-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T012817Z
+LAST-MODIFIED:20081118T012854Z
+DTSTAMP:20081118T012817Z
+UID:20100405-1-all-publicholidays-dol.govt.nz
+SUMMARY:Easter Monday
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20100405
+DURATION:PT1440M
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20081201-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200154Z
+LAST-MODIFIED:20081119T200227Z
+DTSTAMP:20081119T200154Z
+UID:20081201-1-all-publicholidays-dol.govt.nz
+SUMMARY:Westland Anniversary Day (Monday nearest 1st December)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20101129
+RECURRENCE-ID;VALUE=DATE:20101129
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20081201-2-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200252Z
+LAST-MODIFIED:20081119T200304Z
+DTSTAMP:20081119T200252Z
+UID:20081201-2-all-publicholidays-dol.govt.nz
+SUMMARY:Chatham Islands Anniversary Day (Monday nearest 30th November)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20101129
+RECURRENCE-ID;VALUE=DATE:20101129
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090126-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200321Z
+LAST-MODIFIED:20081119T200334Z
+DTSTAMP:20081119T200321Z
+UID:20090126-1-all-publicholidays-dol.govt.nz
+SUMMARY:Auckland Anniversary Day (Monday nearest 29th January)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20100201
+RECURRENCE-ID;VALUE=DATE:20100201
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090119-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200350Z
+LAST-MODIFIED:20081119T200406Z
+DTSTAMP:20081119T200350Z
+UID:20090119-1-all-publicholidays-dol.govt.nz
+SUMMARY:Wellington Anniversary Day (Monday nearest 22nd January)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20100125
+RECURRENCE-ID;VALUE=DATE:20100125
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090119-2-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200431Z
+LAST-MODIFIED:20081119T200443Z
+DTSTAMP:20081119T200431Z
+UID:20090119-2-all-publicholidays-dol.govt.nz
+SUMMARY:Southland Anniversary Day (Monday nearest 17th January)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20100118
+RECURRENCE-ID;VALUE=DATE:20100118
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090202-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200519Z
+LAST-MODIFIED:20081119T200530Z
+DTSTAMP:20081119T200519Z
+UID:20090202-1-all-publicholidays-dol.govt.nz
+SUMMARY:Nelson Anniversary Day (Monday nearest 1st Feb)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20100201
+RECURRENCE-ID;VALUE=DATE:20100201
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091023-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200759Z
+LAST-MODIFIED:20081119T200809Z
+DTSTAMP:20081119T200759Z
+UID:20091023-1-all-publicholidays-dol.govt.nz
+SUMMARY:
+ Hawkes' Bay Anniversary Day (Friday before 4th Monday of October)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20101022
+RECURRENCE-ID;VALUE=DATE:20101022
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091102-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200840Z
+LAST-MODIFIED:20081119T200928Z
+DTSTAMP:20081119T200840Z
+UID:20091102-1-all-publicholidays-dol.govt.nz
+SUMMARY:Marlborough Anniversary Day (Monday after 4th Monday of October)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20101101
+RECURRENCE-ID;VALUE=DATE:20101101
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091113-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T201008Z
+LAST-MODIFIED:20081119T201040Z
+DTSTAMP:20081119T201008Z
+UID:20091113-1-all-publicholidays-dol.govt.nz
+SUMMARY:Canterbury Anniversary Day (Second Friday after the first Tuesda
+ y in November)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20101112
+RECURRENCE-ID;VALUE=DATE:20101112
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090928-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T201140Z
+LAST-MODIFIED:20081119T201153Z
+DTSTAMP:20081119T201140Z
+UID:20090928-1-all-publicholidays-dol.govt.nz
+SUMMARY:South Canterbury Anniversary Day (4th Monday in September)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20100927
+RECURRENCE-ID;VALUE=DATE:20100927
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20100308-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T202108Z
+LAST-MODIFIED:20081119T202117Z
+DTSTAMP:20081119T202108Z
+UID:20100308-1-all-publicholidays-dol.govt.nz
+SUMMARY:Taranaki Anniversary Day
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20100308
+DURATION:PT1440M
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20100322-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T202119Z
+LAST-MODIFIED:20081119T202125Z
+DTSTAMP:20081119T202119Z
+UID:20100322-1-all-publicholidays-dol.govt.nz
+SUMMARY:Otago Anniversary Day
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20100322
+DURATION:PT1440M
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+
+ dtstart: >2005-12-26 00:00:00+13<
+ rrule: >FREQ=YEARLY<
+ summary: >Boxing Day<
+
+ dtstart: >2005-01-01 00:00:00+13<
+ rrule: >FREQ=YEARLY<
+ summary: >New Year's Day<
+
+ dtstart: >2005-12-25 00:00:00+13<
+ rrule: >FREQ=YEARLY<
+ summary: >Christmas Day<
+
+ dtstart: >2005-02-06 00:00:00+13<
+ rrule: >FREQ=YEARLY<
+ summary: >Waitangi Day<
+
+ dtstart: >2005-04-25 00:00:00+12<
+ rrule: >FREQ=YEARLY<
+ summary: >ANZAC Day<
+
+ dtstart: >2005-06-06 00:00:00+12<
+ rrule: >FREQ=YEARLY;BYMONTH=6;BYDAY=1MO<
+ summary: >Queen's Birthday<
+
+ dtstart: >2005-10-24 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=10;BYDAY=4MO<
+ summary: >Labour Day<
+
+ dtstart: >2005-01-02 00:00:00+13<
+ rrule: >FREQ=YEARLY<
+ summary: >Day after New Year's Day<
+
+ dtstart: >2005-12-27 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=12;BYDAY=MO,TU,WE,TH,FR;BYMONTHDAY=25,26,27,28;BYSETPOS=2<
+ summary: >Boxing Day Holiday<
+
+ dtstart: >2005-12-26 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=12;BYDAY=MO,TU,WE,TH,FR;BYMONTHDAY=25,26,27,28;BYSETPOS=1<
+ summary: >Christmas Day Holiday<
+
+ dtstart: >2005-01-03 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=1;BYDAY=MO,TU,WE,TH,FR;BYMONTHDAY=1,2,3,4;BYSETPOS=1<
+ summary: >New Year's Day Holiday<
+
+ dtstart: >2005-01-04 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=1;BYDAY=MO,TU,WE,TH,FR;BYMONTHDAY=1,2,3,4;BYSETPOS=2<
+ summary: >Day after New Year's Day Holiday<
+
+ dtstart: >2010-04-02 00:00:00+13<
+ rrule: >NULL<
+ summary: >Good Friday<
+
+ dtstart: >2010-04-05 00:00:00+12<
+ rrule: >NULL<
+ summary: >Easter Monday<
+
+ dtstart: >2005-11-28 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYDAY=MO;BYYEARDAY=-34,-33,-32,-31,-30,-29,-28<
+ summary: >Westland Anniversary Day (Monday nearest 1st December)<
+
+ dtstart: >2005-11-28 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYDAY=MO;BYYEARDAY=-35,-34,-33,-32,-31,-30,-29<
+ summary: >Chatham Islands Anniversary Day (Monday nearest 30th November)<
+
+ dtstart: >2005-01-31 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYYEARDAY=26,27,28,29,30,31,32;BYDAY=MO<
+ summary: >Auckland Anniversary Day (Monday nearest 29th January)<
+
+ dtstart: >2005-01-24 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYYEARDAY=19,20,21,22,23,24,25;BYDAY=MO<
+ summary: >Wellington Anniversary Day (Monday nearest 22nd January)<
+
+ dtstart: >2005-01-17 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYYEARDAY=14,15,16,17,18,19,20;BYDAY=MO<
+ summary: >Southland Anniversary Day (Monday nearest 17th January)<
+
+ dtstart: >2005-01-31 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYYEARDAY=29,30,31,32,33,34,35;BYDAY=MO<
+ summary: >Nelson Anniversary Day (Monday nearest 1st Feb)<
+
+ dtstart: >2005-10-21 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=19,20,21,22,23,24,25;BYDAY=FR<
+ summary: >Hawkes' Bay Anniversary Day (Friday before 4th Monday of October)<
+
+ dtstart: >2005-10-31 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYDAY=MO;BYYEARDAY=-64,-63,-62,-61,-60,-59,-58<
+ summary: >Marlborough Anniversary Day (Monday after 4th Monday of October)<
+
+ dtstart: >2005-11-11 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=11;BYMONTHDAY=11,12,13,14,15,16,17;BYDAY=FR<
+ summary: >Canterbury Anniversary Day (Second Friday after the first Tuesday in November)<
+
+ dtstart: >2005-09-26 00:00:00+12<
+ rrule: >FREQ=YEARLY;BYMONTH=9;BYDAY=4MO<
+ summary: >South Canterbury Anniversary Day (4th Monday in September)<
+
+ dtstart: >2010-03-08 00:00:00+13<
+ rrule: >NULL<
+ summary: >Taranaki Anniversary Day<
+
+ dtstart: >2010-03-22 00:00:00+13<
+ rrule: >NULL<
+ summary: >Otago Anniversary Day<
+
diff --git a/testing/tests/regression-suite/2006-REPORT-expanded-nz-holidays-2010.test b/testing/tests/regression-suite/2006-REPORT-expanded-nz-holidays-2010.test
new file mode 100644
index 00000000..0bcb7b33
--- /dev/null
+++ b/testing/tests/regression-suite/2006-REPORT-expanded-nz-holidays-2010.test
@@ -0,0 +1,43 @@
+#
+# Test expanded report for NZ public holidays for 2010
+#
+TYPE=REPORT
+URL=http://regression.host/caldav.php/user4/nz_holidays/
+AUTH=user4:user4
+
+
+HEADER=User-Agent: DAViCalTester/public
+HEADER=Content-Type: text/xml; charset="UTF-8"
+HEAD
+
+
+BEGINDATA
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ENDDATA
+
+
+QUERY
+SELECT dtstart,
+ rrule,
+ summary
+ FROM calendar_item
+ WHERE dav_name ~ '^/user4/nz_holidays/'
+ AND (rrule IS NOT NULL
+ OR (dtstart >= '20091231T110000Z' AND dtstart < '20101231T110000Z')
+ )
+ENDQUERY
+
diff --git a/testing/tests/regression-suite/2007-REPORT-expanded-nz-holidays-2011.result b/testing/tests/regression-suite/2007-REPORT-expanded-nz-holidays-2011.result
new file mode 100644
index 00000000..ac629b23
--- /dev/null
+++ b/testing/tests/regression-suite/2007-REPORT-expanded-nz-holidays-2011.result
@@ -0,0 +1,770 @@
+HTTP/1.1 207 Multi-Status
+Date: Dow, 01 Jan 2000 00:00:00 GMT
+DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
+DAV: extended-mkcol, calendar-proxy, bind, addressbook
+ETag: "de7372222a553c72e38c92a028523ff5"
+Content-Length: 17081
+Content-Type: text/xml; charset="utf-8"
+
+
+
+
+ /caldav.php/user4/nz_holidays/20081226-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T225121Z
+LAST-MODIFIED:20081117T225144Z
+DTSTAMP:20081117T225121Z
+UID:20081226-1-all-publicholidays-dol.govt.nz
+SUMMARY:Boxing Day
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20111226
+RECURRENCE-ID;VALUE=DATE:20111226
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090101-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T225212Z
+LAST-MODIFIED:20081117T230337Z
+DTSTAMP:20081117T225212Z
+UID:20090101-1-all-publicholidays-dol.govt.nz
+SUMMARY:New Year's Day
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:1
+DTSTART;VALUE=DATE:20110101
+RECURRENCE-ID;VALUE=DATE:20110101
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20081225-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T224951Z
+LAST-MODIFIED:20081117T235108Z
+DTSTAMP:20081117T224951Z
+UID:20081225-1-all-publicholidays-dol.govt.nz
+SUMMARY:Christmas Day
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:2
+DTSTART;VALUE=DATE:20111225
+RECURRENCE-ID;VALUE=DATE:20111225
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090206-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T235224Z
+LAST-MODIFIED:20081120T002639Z
+DTSTAMP:20081117T235224Z
+UID:20090206-1-all-publicholidays-dol.govt.nz
+SUMMARY:Waitangi Day
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:4
+DTSTART;VALUE=DATE:20110206
+RECURRENCE-ID;VALUE=DATE:20110206
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090425-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T011910Z
+LAST-MODIFIED:20081120T001537Z
+DTSTAMP:20081118T011910Z
+UID:20090425-1-all-publicholidays-dol.govt.nz
+SUMMARY:ANZAC Day
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:2
+DTSTART;VALUE=DATE:20110425
+RECURRENCE-ID;VALUE=DATE:20110425
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090601-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T011947Z
+LAST-MODIFIED:20081118T012009Z
+DTSTAMP:20081118T011947Z
+UID:20090601-1-all-publicholidays-dol.govt.nz
+SUMMARY:Queen's Birthday
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20110606
+RECURRENCE-ID;VALUE=DATE:20110606
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091026-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T012125Z
+LAST-MODIFIED:20081118T012150Z
+DTSTAMP:20081118T012125Z
+UID:20091026-1-all-publicholidays-dol.govt.nz
+SUMMARY:Labour Day
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20111024
+RECURRENCE-ID;VALUE=DATE:20111024
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090102-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081117T235121Z
+LAST-MODIFIED:20081118T012314Z
+DTSTAMP:20081117T235121Z
+UID:20090102-1-all-publicholidays-dol.govt.nz
+SUMMARY:Day after New Year's Day
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20110102
+RECURRENCE-ID;VALUE=DATE:20110102
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091226-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T012344Z
+LAST-MODIFIED:20081118T012529Z
+DTSTAMP:20081118T012344Z
+UID:20091226-1-all-publicholidays-dol.govt.nz
+SUMMARY:Boxing Day Holiday
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:1
+DTSTART;VALUE=DATE:20111227
+RECURRENCE-ID;VALUE=DATE:20111227
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091228-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T012537Z
+LAST-MODIFIED:20081118T012606Z
+DTSTAMP:20081118T012537Z
+UID:20091228-1-all-publicholidays-dol.govt.nz
+SUMMARY:Christmas Day Holiday
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20111226
+RECURRENCE-ID;VALUE=DATE:20111226
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20100101-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T012634Z
+LAST-MODIFIED:20081118T012657Z
+DTSTAMP:20081118T012634Z
+UID:20100101-1-all-publicholidays-dol.govt.nz
+SUMMARY:New Year's Day Holiday
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20110103
+RECURRENCE-ID;VALUE=DATE:20110103
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20100607-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T013050Z
+LAST-MODIFIED:20081118T013102Z
+DTSTAMP:20081118T013050Z
+UID:20100607-1-all-publicholidays-dol.govt.nz
+SUMMARY:Day after New Year's Day Holiday
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20110104
+RECURRENCE-ID;VALUE=DATE:20110104
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20110422-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T014342Z
+LAST-MODIFIED:20081118T014404Z
+DTSTAMP:20081118T014342Z
+UID:20110422-1-all-publicholidays-dol.govt.nz
+SUMMARY:Good Friday
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20110422
+DURATION:PT1440M
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20110425-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081118T014406Z
+LAST-MODIFIED:20081118T014430Z
+DTSTAMP:20081118T014406Z
+UID:20110425-1-all-publicholidays-dol.govt.nz
+SUMMARY:Easter Monday
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20110425
+DURATION:PT1440M
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20081201-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200154Z
+LAST-MODIFIED:20081119T200227Z
+DTSTAMP:20081119T200154Z
+UID:20081201-1-all-publicholidays-dol.govt.nz
+SUMMARY:Westland Anniversary Day (Monday nearest 1st December)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20111128
+RECURRENCE-ID;VALUE=DATE:20111128
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20081201-2-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200252Z
+LAST-MODIFIED:20081119T200304Z
+DTSTAMP:20081119T200252Z
+UID:20081201-2-all-publicholidays-dol.govt.nz
+SUMMARY:Chatham Islands Anniversary Day (Monday nearest 30th November)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20111128
+RECURRENCE-ID;VALUE=DATE:20111128
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090126-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200321Z
+LAST-MODIFIED:20081119T200334Z
+DTSTAMP:20081119T200321Z
+UID:20090126-1-all-publicholidays-dol.govt.nz
+SUMMARY:Auckland Anniversary Day (Monday nearest 29th January)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20110131
+RECURRENCE-ID;VALUE=DATE:20110131
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090119-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200350Z
+LAST-MODIFIED:20081119T200406Z
+DTSTAMP:20081119T200350Z
+UID:20090119-1-all-publicholidays-dol.govt.nz
+SUMMARY:Wellington Anniversary Day (Monday nearest 22nd January)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20110124
+RECURRENCE-ID;VALUE=DATE:20110124
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090119-2-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200431Z
+LAST-MODIFIED:20081119T200443Z
+DTSTAMP:20081119T200431Z
+UID:20090119-2-all-publicholidays-dol.govt.nz
+SUMMARY:Southland Anniversary Day (Monday nearest 17th January)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20110117
+RECURRENCE-ID;VALUE=DATE:20110117
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090202-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200519Z
+LAST-MODIFIED:20081119T200530Z
+DTSTAMP:20081119T200519Z
+UID:20090202-1-all-publicholidays-dol.govt.nz
+SUMMARY:Nelson Anniversary Day (Monday nearest 1st Feb)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20110131
+RECURRENCE-ID;VALUE=DATE:20110131
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091023-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200759Z
+LAST-MODIFIED:20081119T200809Z
+DTSTAMP:20081119T200759Z
+UID:20091023-1-all-publicholidays-dol.govt.nz
+SUMMARY:
+ Hawkes' Bay Anniversary Day (Friday before 4th Monday of October)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20111021
+RECURRENCE-ID;VALUE=DATE:20111021
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091102-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T200840Z
+LAST-MODIFIED:20081119T200928Z
+DTSTAMP:20081119T200840Z
+UID:20091102-1-all-publicholidays-dol.govt.nz
+SUMMARY:Marlborough Anniversary Day (Monday after 4th Monday of October)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20111031
+RECURRENCE-ID;VALUE=DATE:20111031
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20091113-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T201008Z
+LAST-MODIFIED:20081119T201040Z
+DTSTAMP:20081119T201008Z
+UID:20091113-1-all-publicholidays-dol.govt.nz
+SUMMARY:Canterbury Anniversary Day (Second Friday after the first Tuesda
+ y in November)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20111111
+RECURRENCE-ID;VALUE=DATE:20111111
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20090928-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T201140Z
+LAST-MODIFIED:20081119T201153Z
+DTSTAMP:20081119T201140Z
+UID:20090928-1-all-publicholidays-dol.govt.nz
+SUMMARY:South Canterbury Anniversary Day (4th Monday in September)
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20110926
+RECURRENCE-ID;VALUE=DATE:20110926
+DURATION:P1D
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20110314-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T203128Z
+LAST-MODIFIED:20081119T203139Z
+DTSTAMP:20081119T203128Z
+UID:20110314-1-all-publicholidays-dol.govt.nz
+SUMMARY:Taranaki Anniversary Day
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20110314
+DURATION:PT1440M
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+ /caldav.php/user4/nz_holidays/20110321-1-all-publicholidays-dol.govt.nz.ics
+
+
+ BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+BEGIN:VEVENT
+CREATED:20081119T203213Z
+LAST-MODIFIED:20081119T203247Z
+DTSTAMP:20081119T203213Z
+UID:20110321-1-all-publicholidays-dol.govt.nz
+SUMMARY:Otago Anniversary Day
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:1
+DTSTART;VALUE=DATE:20110321
+DURATION:PT1440M
+END:VEVENT
+END:VCALENDAR
+
+
+ HTTP/1.1 200 OK
+
+
+
+
+ dtstart: >2005-12-26 00:00:00+13<
+ rrule: >FREQ=YEARLY<
+ summary: >Boxing Day<
+
+ dtstart: >2005-01-01 00:00:00+13<
+ rrule: >FREQ=YEARLY<
+ summary: >New Year's Day<
+
+ dtstart: >2005-12-25 00:00:00+13<
+ rrule: >FREQ=YEARLY<
+ summary: >Christmas Day<
+
+ dtstart: >2005-02-06 00:00:00+13<
+ rrule: >FREQ=YEARLY<
+ summary: >Waitangi Day<
+
+ dtstart: >2005-04-25 00:00:00+12<
+ rrule: >FREQ=YEARLY<
+ summary: >ANZAC Day<
+
+ dtstart: >2005-06-06 00:00:00+12<
+ rrule: >FREQ=YEARLY;BYMONTH=6;BYDAY=1MO<
+ summary: >Queen's Birthday<
+
+ dtstart: >2005-10-24 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=10;BYDAY=4MO<
+ summary: >Labour Day<
+
+ dtstart: >2005-01-02 00:00:00+13<
+ rrule: >FREQ=YEARLY<
+ summary: >Day after New Year's Day<
+
+ dtstart: >2005-12-27 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=12;BYDAY=MO,TU,WE,TH,FR;BYMONTHDAY=25,26,27,28;BYSETPOS=2<
+ summary: >Boxing Day Holiday<
+
+ dtstart: >2005-12-26 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=12;BYDAY=MO,TU,WE,TH,FR;BYMONTHDAY=25,26,27,28;BYSETPOS=1<
+ summary: >Christmas Day Holiday<
+
+ dtstart: >2005-01-03 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=1;BYDAY=MO,TU,WE,TH,FR;BYMONTHDAY=1,2,3,4;BYSETPOS=1<
+ summary: >New Year's Day Holiday<
+
+ dtstart: >2005-01-04 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=1;BYDAY=MO,TU,WE,TH,FR;BYMONTHDAY=1,2,3,4;BYSETPOS=2<
+ summary: >Day after New Year's Day Holiday<
+
+ dtstart: >2011-04-22 00:00:00+12<
+ rrule: >NULL<
+ summary: >Good Friday<
+
+ dtstart: >2011-04-25 00:00:00+12<
+ rrule: >NULL<
+ summary: >Easter Monday<
+
+ dtstart: >2005-11-28 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYDAY=MO;BYYEARDAY=-34,-33,-32,-31,-30,-29,-28<
+ summary: >Westland Anniversary Day (Monday nearest 1st December)<
+
+ dtstart: >2005-11-28 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYDAY=MO;BYYEARDAY=-35,-34,-33,-32,-31,-30,-29<
+ summary: >Chatham Islands Anniversary Day (Monday nearest 30th November)<
+
+ dtstart: >2005-01-31 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYYEARDAY=26,27,28,29,30,31,32;BYDAY=MO<
+ summary: >Auckland Anniversary Day (Monday nearest 29th January)<
+
+ dtstart: >2005-01-24 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYYEARDAY=19,20,21,22,23,24,25;BYDAY=MO<
+ summary: >Wellington Anniversary Day (Monday nearest 22nd January)<
+
+ dtstart: >2005-01-17 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYYEARDAY=14,15,16,17,18,19,20;BYDAY=MO<
+ summary: >Southland Anniversary Day (Monday nearest 17th January)<
+
+ dtstart: >2005-01-31 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYYEARDAY=29,30,31,32,33,34,35;BYDAY=MO<
+ summary: >Nelson Anniversary Day (Monday nearest 1st Feb)<
+
+ dtstart: >2005-10-21 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=19,20,21,22,23,24,25;BYDAY=FR<
+ summary: >Hawkes' Bay Anniversary Day (Friday before 4th Monday of October)<
+
+ dtstart: >2005-10-31 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYDAY=MO;BYYEARDAY=-64,-63,-62,-61,-60,-59,-58<
+ summary: >Marlborough Anniversary Day (Monday after 4th Monday of October)<
+
+ dtstart: >2005-11-11 00:00:00+13<
+ rrule: >FREQ=YEARLY;BYMONTH=11;BYMONTHDAY=11,12,13,14,15,16,17;BYDAY=FR<
+ summary: >Canterbury Anniversary Day (Second Friday after the first Tuesday in November)<
+
+ dtstart: >2005-09-26 00:00:00+12<
+ rrule: >FREQ=YEARLY;BYMONTH=9;BYDAY=4MO<
+ summary: >South Canterbury Anniversary Day (4th Monday in September)<
+
+ dtstart: >2011-03-14 00:00:00+13<
+ rrule: >NULL<
+ summary: >Taranaki Anniversary Day<
+
+ dtstart: >2011-03-21 00:00:00+13<
+ rrule: >NULL<
+ summary: >Otago Anniversary Day<
+
diff --git a/testing/tests/regression-suite/2007-REPORT-expanded-nz-holidays-2011.test b/testing/tests/regression-suite/2007-REPORT-expanded-nz-holidays-2011.test
new file mode 100644
index 00000000..227b7d0f
--- /dev/null
+++ b/testing/tests/regression-suite/2007-REPORT-expanded-nz-holidays-2011.test
@@ -0,0 +1,43 @@
+#
+# Test expanded report for NZ public holidays for 2011
+#
+TYPE=REPORT
+URL=http://regression.host/caldav.php/user4/nz_holidays/
+AUTH=user4:user4
+
+
+HEADER=User-Agent: DAViCalTester/public
+HEADER=Content-Type: text/xml; charset="UTF-8"
+HEAD
+
+
+BEGINDATA
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ENDDATA
+
+
+QUERY
+SELECT dtstart,
+ rrule,
+ summary
+ FROM calendar_item
+ WHERE dav_name ~ '^/user4/nz_holidays/'
+ AND (rrule IS NOT NULL
+ OR (dtstart >= '20101231T110000Z' AND dtstart < '20111231T110000Z')
+ )
+ENDQUERY
+
diff --git a/testing/tests/regression-suite/nz_holidays.ics b/testing/tests/regression-suite/nz_holidays.ics
new file mode 100644
index 00000000..0b367d5a
--- /dev/null
+++ b/testing/tests/regression-suite/nz_holidays.ics
@@ -0,0 +1,582 @@
+BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+X-WR-CALNAME:New Zealand Public Holidays
+BEGIN:VEVENT
+CREATED:20081117T225121Z
+LAST-MODIFIED:20081117T225144Z
+DTSTAMP:20081117T225121Z
+UID:20081226-1-all-publicholidays-dol.govt.nz
+SUMMARY:Boxing Day
+DTSTART;VALUE=DATE:20051226
+RRULE:FREQ=YEARLY
+TRANSP:TRANSPARENT
+END:VEVENT
+BEGIN:VEVENT
+CREATED:20081117T225212Z
+LAST-MODIFIED:20081117T230337Z
+DTSTAMP:20081117T225212Z
+UID:20090101-1-all-publicholidays-dol.govt.nz
+SUMMARY:New Year's Day
+DTSTART;VALUE=DATE:20050101
+RRULE:FREQ=YEARLY
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:1
+END:VEVENT
+BEGIN:VEVENT
+CREATED:20081117T224951Z
+LAST-MODIFIED:20081117T235108Z
+DTSTAMP:20081117T224951Z
+UID:20081225-1-all-publicholidays-dol.govt.nz
+SUMMARY:Christmas Day
+DTSTART;VALUE=DATE:20051225
+RRULE:FREQ=YEARLY
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:2
+END:VEVENT
+BEGIN:VEVENT
+CREATED:20081117T235335Z
+LAST-MODIFIED:20081117T235417Z
+DTSTAMP:20081117T235335Z
+UID:20090410-1-all-publicholidays-dol.govt.nz
+SUMMARY:Good Friday
+DTSTART;VALUE=DATE:20090410
+DTEND;VALUE=DATE:20090411
+TRANSP:TRANSPARENT
+END:VEVENT
+BEGIN:VEVENT
+CREATED:20081117T235224Z
+LAST-MODIFIED:20081120T002639Z
+DTSTAMP:20081117T235224Z
+UID:20090206-1-all-publicholidays-dol.govt.nz
+SUMMARY:Waitangi Day
+DTSTART;VALUE=DATE:20050206
+RRULE:FREQ=YEARLY
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:4
+END:VEVENT
+BEGIN:VEVENT
+CREATED:20081117T235455Z
+LAST-MODIFIED:20081117T235524Z
+DTSTAMP:20081117T235455Z
+UID:20090413-1-all-publicholidays-dol.govt.nz
+SUMMARY:Easter Monday
+DTSTART;VALUE=DATE:20090413
+DTEND;VALUE=DATE:20090414
+TRANSP:TRANSPARENT
+END:VEVENT
+BEGIN:VEVENT
+CREATED:20081118T011910Z
+LAST-MODIFIED:20081120T001537Z
+DTSTAMP:20081118T011910Z
+UID:20090425-1-all-publicholidays-dol.govt.nz
+SUMMARY:ANZAC Day
+DTSTART;VALUE=DATE:20050425
+RRULE:FREQ=YEARLY
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:2
+END:VEVENT
+
+BEGIN:VEVENT
+CREATED:20081118T011947Z
+LAST-MODIFIED:20081118T012009Z
+DTSTAMP:20081118T011947Z
+UID:20090601-1-all-publicholidays-dol.govt.nz
+SUMMARY:Queen's Birthday
+DTSTART;VALUE=DATE:20050606
+RRULE:FREQ=YEARLY;BYMONTH=6;BYDAY=1MO
+TRANSP:TRANSPARENT
+END:VEVENT
+
+BEGIN:VEVENT
+CREATED:20081118T012125Z
+LAST-MODIFIED:20081118T012150Z
+DTSTAMP:20081118T012125Z
+UID:20091026-1-all-publicholidays-dol.govt.nz
+SUMMARY:Labour Day
+DTSTART;VALUE=DATE:20051024
+RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=4MO
+TRANSP:TRANSPARENT
+END:VEVENT
+
+BEGIN:VEVENT
+CREATED:20081117T235121Z
+LAST-MODIFIED:20081118T012314Z
+DTSTAMP:20081117T235121Z
+UID:20090102-1-all-publicholidays-dol.govt.nz
+SUMMARY:Day after New Year's Day
+DTSTART;VALUE=DATE:20050102
+RRULE:FREQ=YEARLY
+TRANSP:TRANSPARENT
+END:VEVENT
+
+BEGIN:VEVENT
+CREATED:20081118T012344Z
+LAST-MODIFIED:20081118T012529Z
+DTSTAMP:20081118T012344Z
+UID:20091226-1-all-publicholidays-dol.govt.nz
+SUMMARY:Boxing Day Holiday
+DTSTART;VALUE=DATE:20051227
+RRULE:FREQ=YEARLY;BYMONTH=12;BYDAY=MO,TU,WE,TH,FR;BYMONTHDAY=25,26,27,28;BYSETPOS=2
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:1
+END:VEVENT
+BEGIN:VEVENT
+CREATED:20081118T012537Z
+LAST-MODIFIED:20081118T012606Z
+DTSTAMP:20081118T012537Z
+UID:20091228-1-all-publicholidays-dol.govt.nz
+SUMMARY:Christmas Day Holiday
+DTSTART;VALUE=DATE:20051226
+RRULE:FREQ=YEARLY;BYMONTH=12;BYDAY=MO,TU,WE,TH,FR;BYMONTHDAY=25,26,27,28;BYSETPOS=1
+TRANSP:TRANSPARENT
+END:VEVENT
+BEGIN:VEVENT
+CREATED:20081118T012634Z
+LAST-MODIFIED:20081118T012657Z
+DTSTAMP:20081118T012634Z
+UID:20100101-1-all-publicholidays-dol.govt.nz
+SUMMARY:New Year's Day Holiday
+DTSTART;VALUE=DATE:20050103
+RRULE:FREQ=YEARLY;BYMONTH=1;BYDAY=MO,TU,WE,TH,FR;BYMONTHDAY=1,2,3,4;BYSETPOS=1
+TRANSP:TRANSPARENT
+END:VEVENT
+BEGIN:VEVENT
+CREATED:20081118T013050Z
+LAST-MODIFIED:20081118T013102Z
+DTSTAMP:20081118T013050Z
+UID:20100607-1-all-publicholidays-dol.govt.nz
+SUMMARY:Day after New Year's Day Holiday
+DTSTART;VALUE=DATE:20050104
+RRULE:FREQ=YEARLY;BYMONTH=1;BYDAY=MO,TU,WE,TH,FR;BYMONTHDAY=1,2,3,4;BYSETPOS=2
+TRANSP:TRANSPARENT
+END:VEVENT
+
+BEGIN:VEVENT
+CREATED:20081118T012802Z
+LAST-MODIFIED:20081118T012811Z
+DTSTAMP:20081118T012802Z
+UID:20100402-1-all-publicholidays-dol.govt.nz
+SUMMARY:Good Friday
+DTSTART;VALUE=DATE:20100402
+DTEND;VALUE=DATE:20100403
+TRANSP:TRANSPARENT
+END:VEVENT
+BEGIN:VEVENT
+CREATED:20081118T012817Z
+LAST-MODIFIED:20081118T012854Z
+DTSTAMP:20081118T012817Z
+UID:20100405-1-all-publicholidays-dol.govt.nz
+SUMMARY:Easter Monday
+DTSTART;VALUE=DATE:20100405
+DTEND;VALUE=DATE:20100406
+TRANSP:TRANSPARENT
+END:VEVENT
+
+BEGIN:VEVENT
+CREATED:20081118T014342Z
+LAST-MODIFIED:20081118T014404Z
+DTSTAMP:20081118T014342Z
+UID:20110422-1-all-publicholidays-dol.govt.nz
+SUMMARY:Good Friday
+DTSTART;VALUE=DATE:20110422
+DTEND;VALUE=DATE:20110423
+TRANSP:TRANSPARENT
+END:VEVENT
+BEGIN:VEVENT
+CREATED:20081118T014406Z
+LAST-MODIFIED:20081118T014430Z
+DTSTAMP:20081118T014406Z
+UID:20110425-1-all-publicholidays-dol.govt.nz
+SUMMARY:Easter Monday
+DTSTART;VALUE=DATE:20110425
+DTEND;VALUE=DATE:20110426
+TRANSP:TRANSPARENT
+END:VEVENT
+
+BEGIN:VEVENT
+CREATED:20081118T015055Z
+LAST-MODIFIED:20081118T015123Z
+DTSTAMP:20081118T015055Z
+UID:20120406-1-all-publicholidays-dol.govt.nz
+SUMMARY:Good Friday
+DTSTART;VALUE=DATE:20120406
+DTEND;VALUE=DATE:20120407
+TRANSP:TRANSPARENT
+END:VEVENT
+BEGIN:VEVENT
+CREATED:20081118T015128Z
+LAST-MODIFIED:20081118T015139Z
+DTSTAMP:20081118T015128Z
+UID:20120409-1-all-publicholidays-dol.govt.nz
+SUMMARY:Easter Monday
+DTSTART;VALUE=DATE:20120409
+DTEND;VALUE=DATE:20120410
+TRANSP:TRANSPARENT
+END:VEVENT
+
+BEGIN:VEVENT
+CREATED:20081118T015519Z
+LAST-MODIFIED:20081118T015535Z
+DTSTAMP:20081118T015519Z
+UID:20130329-1-all-publicholidays-dol.govt.nz
+SUMMARY:Good Friday
+DTSTART;VALUE=DATE:20130329
+DTEND;VALUE=DATE:20130330
+TRANSP:TRANSPARENT
+END:VEVENT
+BEGIN:VEVENT
+CREATED:20081118T015540Z
+LAST-MODIFIED:20081118T015609Z
+DTSTAMP:20081118T015540Z
+UID:20130401-1-all-publicholidays-dol.govt.nz
+SUMMARY:Easter Monday
+DTSTART;VALUE=DATE:20130401
+DTEND;VALUE=DATE:20130402
+TRANSP:TRANSPARENT
+END:VEVENT
+
+BEGIN:VEVENT
+CREATED:20081118T020024Z
+LAST-MODIFIED:20081118T020127Z
+DTSTAMP:20081118T020105Z
+UID:20140418-1-all-publicholidays-dol.govt.nz
+SUMMARY:Good Friday
+DTSTART;VALUE=DATE:20140418
+DTEND;VALUE=DATE:20140419
+TRANSP:TRANSPARENT
+END:VEVENT
+BEGIN:VEVENT
+CREATED:20081118T020135Z
+LAST-MODIFIED:20081118T020155Z
+DTSTAMP:20081118T020135Z
+UID:20140421-1-all-publicholidays-dol.govt.nz
+SUMMARY:Easter Monday
+DTSTART;VALUE=DATE:20140421
+DTEND;VALUE=DATE:20140422
+TRANSP:TRANSPARENT
+END:VEVENT
+
+BEGIN:VEVENT
+CREATED:20081118T020631Z
+LAST-MODIFIED:20081118T020647Z
+DTSTAMP:20081118T020631Z
+UID:20150403-1-all-publicholidays-dol.govt.nz
+SUMMARY:Good Friday
+DTSTART;VALUE=DATE:20150403
+DTEND;VALUE=DATE:20150404
+TRANSP:TRANSPARENT
+END:VEVENT
+BEGIN:VEVENT
+CREATED:20081118T020717Z
+LAST-MODIFIED:20081118T020753Z
+DTSTAMP:20081118T020717Z
+UID:20150406-1-all-publicholidays-dol.govt.nz
+SUMMARY:Easter Monday
+DTSTART;VALUE=DATE:20150406
+DTEND;VALUE=DATE:20150407
+TRANSP:TRANSPARENT
+END:VEVENT
+
+BEGIN:VEVENT
+CREATED:20081118T021243Z
+LAST-MODIFIED:20081118T021253Z
+DTSTAMP:20081118T021243Z
+UID:20160325-1-all-publicholidays-dol.govt.nz
+SUMMARY:Good Friday
+DTSTART;VALUE=DATE:20160325
+DTEND;VALUE=DATE:20160326
+TRANSP:TRANSPARENT
+END:VEVENT
+BEGIN:VEVENT
+CREATED:20081118T021257Z
+LAST-MODIFIED:20081118T021323Z
+DTSTAMP:20081118T021257Z
+UID:20160328-1-all-publicholidays-dol.govt.nz
+SUMMARY:Easter Monday
+DTSTART;VALUE=DATE:20160328
+DTEND;VALUE=DATE:20160329
+TRANSP:TRANSPARENT
+END:VEVENT
+
+BEGIN:VEVENT
+CREATED:20081119T200154Z
+LAST-MODIFIED:20081119T200227Z
+DTSTAMP:20081119T200154Z
+UID:20081201-1-all-publicholidays-dol.govt.nz
+SUMMARY:Westland Anniversary Day (Monday nearest 1st December)
+DTSTART;VALUE=DATE:20051128
+RRULE:FREQ=YEARLY;BYDAY=MO;BYYEARDAY=-34,-33,-32,-31,-30,-29,-28
+TRANSP:TRANSPARENT
+END:VEVENT
+
+BEGIN:VEVENT
+CREATED:20081119T200252Z
+LAST-MODIFIED:20081119T200304Z
+DTSTAMP:20081119T200252Z
+UID:20081201-2-all-publicholidays-dol.govt.nz
+SUMMARY:Chatham Islands Anniversary Day (Monday nearest 30th November)
+DTSTART;VALUE=DATE:20051128
+RRULE:FREQ=YEARLY;BYDAY=MO;BYYEARDAY=-35,-34,-33,-32,-31,-30,-29
+TRANSP:TRANSPARENT
+END:VEVENT
+
+BEGIN:VEVENT
+CREATED:20081119T200321Z
+LAST-MODIFIED:20081119T200334Z
+DTSTAMP:20081119T200321Z
+UID:20090126-1-all-publicholidays-dol.govt.nz
+SUMMARY:Auckland Anniversary Day (Monday nearest 29th January)
+DTSTART;VALUE=DATE:20050131
+RRULE:FREQ=YEARLY;BYYEARDAY=26,27,28,29,30,31,32;BYDAY=MO
+TRANSP:TRANSPARENT
+END:VEVENT
+
+BEGIN:VEVENT
+CREATED:20081119T200350Z
+LAST-MODIFIED:20081119T200406Z
+DTSTAMP:20081119T200350Z
+UID:20090119-1-all-publicholidays-dol.govt.nz
+SUMMARY:Wellington Anniversary Day (Monday nearest 22nd January)
+DTSTART;VALUE=DATE:20050124
+RRULE:FREQ=YEARLY;BYYEARDAY=19,20,21,22,23,24,25;BYDAY=MO
+TRANSP:TRANSPARENT
+END:VEVENT
+
+BEGIN:VEVENT
+CREATED:20081119T200431Z
+LAST-MODIFIED:20081119T200443Z
+DTSTAMP:20081119T200431Z
+UID:20090119-2-all-publicholidays-dol.govt.nz
+SUMMARY:Southland Anniversary Day (Monday nearest 17th January)
+DTSTART;VALUE=DATE:20050117
+RRULE:FREQ=YEARLY;BYYEARDAY=14,15,16,17,18,19,20;BYDAY=MO
+TRANSP:TRANSPARENT
+END:VEVENT
+
+BEGIN:VEVENT
+CREATED:20081119T200519Z
+LAST-MODIFIED:20081119T200530Z
+DTSTAMP:20081119T200519Z
+UID:20090202-1-all-publicholidays-dol.govt.nz
+SUMMARY:Nelson Anniversary Day (Monday nearest 1st Feb)
+DTSTART;VALUE=DATE:20050131
+RRULE:FREQ=YEARLY;BYYEARDAY=29,30,31,32,33,34,35;BYDAY=MO
+TRANSP:TRANSPARENT
+END:VEVENT
+
+BEGIN:VEVENT
+CREATED:20081119T200607Z
+LAST-MODIFIED:20081119T200622Z
+DTSTAMP:20081119T200607Z
+UID:20090309-1-all-publicholidays-dol.govt.nz
+SUMMARY:Taranaki Anniversary Day
+DTSTART;VALUE=DATE:20090309
+DTEND;VALUE=DATE:20090310
+TRANSP:TRANSPARENT
+END:VEVENT
+
+BEGIN:VEVENT
+CREATED:20081119T200640Z
+LAST-MODIFIED:20081119T200650Z
+DTSTAMP:20081119T200640Z
+UID:20090323-1-all-publicholidays-dol.govt.nz
+SUMMARY:Otago Anniversary Day
+DTSTART;VALUE=DATE:20090323
+DTEND;VALUE=DATE:20090324
+TRANSP:TRANSPARENT
+END:VEVENT
+
+BEGIN:VEVENT
+CREATED:20081119T200759Z
+LAST-MODIFIED:20081119T200809Z
+DTSTAMP:20081119T200759Z
+UID:20091023-1-all-publicholidays-dol.govt.nz
+SUMMARY:Hawkes' Bay Anniversary Day (Friday before 4th Monday of October)
+DTSTART;VALUE=DATE:20051021
+RRULE:FREQ=YEARLY;BYMONTH=10;BYMONTHDAY=19,20,21,22,23,24,25;BYDAY=FR
+TRANSP:TRANSPARENT
+END:VEVENT
+
+BEGIN:VEVENT
+CREATED:20081119T200840Z
+LAST-MODIFIED:20081119T200928Z
+DTSTAMP:20081119T200840Z
+UID:20091102-1-all-publicholidays-dol.govt.nz
+SUMMARY:Marlborough Anniversary Day (Monday after 4th Monday of October)
+DTSTART;VALUE=DATE:20051031
+RRULE:FREQ=YEARLY;BYDAY=MO;BYYEARDAY=-64,-63,-62,-61,-60,-59,-58
+TRANSP:TRANSPARENT
+END:VEVENT
+
+BEGIN:VEVENT
+CREATED:20081119T201008Z
+LAST-MODIFIED:20081119T201040Z
+DTSTAMP:20081119T201008Z
+UID:20091113-1-all-publicholidays-dol.govt.nz
+SUMMARY:Canterbury Anniversary Day (Second Friday after the first Tuesday in November)
+DTSTART;VALUE=DATE:20051111
+RRULE:FREQ=YEARLY;BYMONTH=11;BYMONTHDAY=11,12,13,14,15,16,17;BYDAY=FR
+TRANSP:TRANSPARENT
+END:VEVENT
+
+BEGIN:VEVENT
+CREATED:20081119T201140Z
+LAST-MODIFIED:20081119T201153Z
+DTSTAMP:20081119T201140Z
+UID:20090928-1-all-publicholidays-dol.govt.nz
+SUMMARY:South Canterbury Anniversary Day (4th Monday in September)
+DTSTART;VALUE=DATE:20050926
+RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=4MO
+TRANSP:TRANSPARENT
+END:VEVENT
+
+BEGIN:VEVENT
+CREATED:20081119T202108Z
+LAST-MODIFIED:20081119T202117Z
+DTSTAMP:20081119T202108Z
+UID:20100308-1-all-publicholidays-dol.govt.nz
+SUMMARY:Taranaki Anniversary Day
+DTSTART;VALUE=DATE:20100308
+DTEND;VALUE=DATE:20100309
+TRANSP:TRANSPARENT
+END:VEVENT
+BEGIN:VEVENT
+CREATED:20081119T202119Z
+LAST-MODIFIED:20081119T202125Z
+DTSTAMP:20081119T202119Z
+UID:20100322-1-all-publicholidays-dol.govt.nz
+SUMMARY:Otago Anniversary Day
+DTSTART;VALUE=DATE:20100322
+DTEND;VALUE=DATE:20100323
+TRANSP:TRANSPARENT
+END:VEVENT
+
+BEGIN:VEVENT
+CREATED:20081119T203128Z
+LAST-MODIFIED:20081119T203139Z
+DTSTAMP:20081119T203128Z
+UID:20110314-1-all-publicholidays-dol.govt.nz
+SUMMARY:Taranaki Anniversary Day
+DTSTART;VALUE=DATE:20110314
+DTEND;VALUE=DATE:20110315
+TRANSP:TRANSPARENT
+END:VEVENT
+BEGIN:VEVENT
+CREATED:20081119T203213Z
+LAST-MODIFIED:20081119T203247Z
+DTSTAMP:20081119T203213Z
+UID:20110321-1-all-publicholidays-dol.govt.nz
+SUMMARY:Otago Anniversary Day
+DTSTART;VALUE=DATE:20110321
+DTEND;VALUE=DATE:20110322
+TRANSP:TRANSPARENT
+X-MOZ-GENERATION:1
+END:VEVENT
+
+BEGIN:VEVENT
+CREATED:20081119T214936Z
+LAST-MODIFIED:20081119T214943Z
+DTSTAMP:20081119T214936Z
+UID:20120312-1-all-publicholidays-dol.govt.nz
+SUMMARY:Taranaki Anniversary Day
+DTSTART;VALUE=DATE:20120312
+DTEND;VALUE=DATE:20120313
+TRANSP:TRANSPARENT
+END:VEVENT
+BEGIN:VEVENT
+CREATED:20081119T215004Z
+LAST-MODIFIED:20081119T215012Z
+DTSTAMP:20081119T215004Z
+UID:20120326-1-all-publicholidays-dol.govt.nz
+SUMMARY:Otago Anniversary Day
+DTSTART;VALUE=DATE:20120326
+DTEND;VALUE=DATE:20120327
+TRANSP:TRANSPARENT
+END:VEVENT
+
+BEGIN:VEVENT
+CREATED:20081119T215900Z
+LAST-MODIFIED:20081119T215926Z
+DTSTAMP:20081119T215900Z
+UID:20130311-1-all-publicholidays-dol.govt.nz
+SUMMARY:Taranaki Anniversary Day
+DTSTART;VALUE=DATE:20130311
+DTEND;VALUE=DATE:20130312
+TRANSP:TRANSPARENT
+END:VEVENT
+BEGIN:VEVENT
+CREATED:20081119T215951Z
+LAST-MODIFIED:20081119T215958Z
+DTSTAMP:20081119T215951Z
+UID:20130325-1-all-publicholidays-dol.govt.nz
+SUMMARY:Otago Anniversary Day
+DTSTART;VALUE=DATE:20130325
+DTEND;VALUE=DATE:20130326
+TRANSP:TRANSPARENT
+END:VEVENT
+
+BEGIN:VEVENT
+CREATED:20081119T220720Z
+LAST-MODIFIED:20081119T220732Z
+DTSTAMP:20081119T220720Z
+UID:20140310-1-all-publicholidays-dol.govt.nz
+SUMMARY:Taranaki Anniversary Day
+DTSTART;VALUE=DATE:20140310
+DTEND;VALUE=DATE:20140311
+TRANSP:TRANSPARENT
+END:VEVENT
+BEGIN:VEVENT
+CREATED:20081119T220734Z
+LAST-MODIFIED:20081119T220743Z
+DTSTAMP:20081119T220734Z
+UID:20140324-1-all-publicholidays-dol.govt.nz
+SUMMARY:Otago Anniversary Day
+DTSTART;VALUE=DATE:20140324
+DTEND;VALUE=DATE:20140325
+TRANSP:TRANSPARENT
+END:VEVENT
+
+BEGIN:VEVENT
+CREATED:20081119T221413Z
+LAST-MODIFIED:20081119T221422Z
+DTSTAMP:20081119T221413Z
+UID:20150309-1-all-publicholidays-dol.govt.nz
+SUMMARY:Taranaki Anniversary Day
+DTSTART;VALUE=DATE:20150309
+DTEND;VALUE=DATE:20150310
+TRANSP:TRANSPARENT
+END:VEVENT
+BEGIN:VEVENT
+CREATED:20081119T221435Z
+LAST-MODIFIED:20081119T221446Z
+DTSTAMP:20081119T221435Z
+UID:20150323-1-all-publicholidays-dol.govt.nz
+SUMMARY:Otago Anniversary Day
+DTSTART;VALUE=DATE:20150323
+DTEND;VALUE=DATE:20150324
+TRANSP:TRANSPARENT
+END:VEVENT
+
+BEGIN:VEVENT
+CREATED:20081119T222143Z
+LAST-MODIFIED:20081119T222153Z
+DTSTAMP:20081119T222143Z
+UID:20160314-1-all-publicholidays-dol.govt.nz
+SUMMARY:Taranaki Anniversary Day
+DTSTART;VALUE=DATE:20160314
+DTEND;VALUE=DATE:20160315
+TRANSP:TRANSPARENT
+END:VEVENT
+BEGIN:VEVENT
+CREATED:20081119T222159Z
+LAST-MODIFIED:20081119T222209Z
+DTSTAMP:20081119T222159Z
+UID:20160321-1-all-publicholidays-dol.govt.nz
+SUMMARY:Otago Anniversary Day
+DTSTART;VALUE=DATE:20160321
+DTEND;VALUE=DATE:20160322
+TRANSP:TRANSPARENT
+END:VEVENT
+END:VCALENDAR
diff --git a/testing/tests/regression-suite/us_holidays.ics b/testing/tests/regression-suite/us_holidays.ics
new file mode 100644
index 00000000..72c02aa2
--- /dev/null
+++ b/testing/tests/regression-suite/us_holidays.ics
@@ -0,0 +1,602 @@
+BEGIN:VCALENDAR
+PRODID:-//davical.org//NONSGML AWL Calendar//EN
+VERSION:2.0
+CALSCALE:GREGORIAN
+X-WR-CALNAME:US Holidays
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20190421
+DTEND;VALUE=DATE:20190422
+SUMMARY:Easter Sunday
+UID:64E660BA-86DB-43CD-A067-194149D28471-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:2
+DTSTAMP:20060216T151248Z
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20041011
+DTEND;VALUE=DATE:20041012
+SUMMARY:Columbus Day
+UID:64874200-9494-415C-9FA8-B86F739FFB13-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:3
+DTSTAMP:20060216T151249Z
+RRULE:FREQ=YEARLY;INTERVAL=1;UNTIL=20051009;BYMONTH=10;BYDAY=2MO
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20040704
+DTEND;VALUE=DATE:20040705
+SUMMARY:Independence Day
+UID:468CB2B3-342D-4D1D-B152-F52608E6CB4C-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:3
+DTSTAMP:20060216T151249Z
+RRULE:FREQ=YEARLY;INTERVAL=1;UNTIL=20060703
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20110424
+DTEND;VALUE=DATE:20110425
+SUMMARY:Easter Sunday
+UID:01253561-2B9B-4341-88F5-29A572BB3E75-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:2
+DTSTAMP:20060216T151243Z
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20200412
+DTEND;VALUE=DATE:20200413
+SUMMARY:Easter Sunday
+UID:8EE35D87-548A-4495-BE91-07303C510724-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:2
+DTSTAMP:20060216T151246Z
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20040101
+DTEND;VALUE=DATE:20040102
+SUMMARY:New Year's Day
+UID:5D55021E-0C17-49BD-BE73-29F472A75FAD-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:4
+DTSTAMP:20060216T151249Z
+RRULE:FREQ=YEARLY;INTERVAL=1;UNTIL=20051231
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20051027
+DTEND;VALUE=DATE:20051028
+SUMMARY:Navy Day
+UID:183A097B-7D44-4C66-9569-AA520E7CB8DC-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:3
+DTSTAMP:20060216T151243Z
+RRULE:FREQ=YEARLY;INTERVAL=1
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20240331
+DTEND;VALUE=DATE:20240401
+SUMMARY:Easter Sunday
+UID:EDF531F8-7E53-4604-9F72-16BCD40CD7D2-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:2
+DTSTAMP:20060216T151242Z
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20060416
+DTEND;VALUE=DATE:20060417
+SUMMARY:Easter Sunday
+UID:95DAFE6C-E465-40C1-8FAD-4EAB11CAD26B-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:2
+DTSTAMP:20060216T151251Z
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20040119
+DTEND;VALUE=DATE:20040120
+SUMMARY:Martin Luther King Jr.'s Birthday
+UID:E8C35314-F61A-4649-A4C3-E4F24B2BA454-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:5
+DTSTAMP:20060216T151248Z
+RRULE:FREQ=YEARLY;INTERVAL=1;UNTIL=20060115;BYMONTH=1;BYDAY=3MO
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20120408
+DTEND;VALUE=DATE:20120409
+SUMMARY:Easter Sunday
+UID:0EF392B7-5203-432C-B41B-BB7AFC5CBA6A-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:2
+DTSTAMP:20060216T151249Z
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20140420
+DTEND;VALUE=DATE:20140421
+SUMMARY:Easter Sunday
+UID:BCC001F2-681A-4D72-9631-ACCE8EA480A0-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:2
+DTSTAMP:20060216T151249Z
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20051124
+DTEND;VALUE=DATE:20051125
+SUMMARY:Thanksgiving Day
+UID:F35052B2-D44B-43F8-9F2C-95149FD385FF-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:3
+DTSTAMP:20060216T151251Z
+RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=11;BYDAY=4TH
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20060101
+DTEND;VALUE=DATE:20060102
+SUMMARY:New Year's Day
+UID:8FF1DB95-BC31-48B3-94A8-A519ED090EF7-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:4
+DTSTAMP:20060216T151243Z
+RRULE:FREQ=YEARLY;INTERVAL=1
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20180401
+DTEND;VALUE=DATE:20180402
+SUMMARY:Easter Sunday
+UID:AB045233-7D93-490A-AEDC-70710D207055-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:2
+DTSTAMP:20060216T151245Z
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20040906
+DTEND;VALUE=DATE:20040907
+SUMMARY:Labor Day
+UID:D2B79EA9-E22C-4F27-BB84-750584839575-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:4
+DTSTAMP:20060216T151249Z
+RRULE:FREQ=YEARLY;INTERVAL=1;UNTIL=20060903;BYMONTH=9;BYDAY=1MO
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20040212
+DTEND;VALUE=DATE:20040213
+SUMMARY:Lincoln's Birthday
+UID:B14BF09D-1745-4F98-89D3-98410ACFD9C9-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:3
+DTSTAMP:20060216T151247Z
+RRULE:FREQ=YEARLY;INTERVAL=1;UNTIL=20060211
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20210404
+DTEND;VALUE=DATE:20210405
+SUMMARY:Easter Sunday
+UID:B5F73538-5A2E-4518-86F8-4AC2415447BB-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:2
+DTSTAMP:20060216T151244Z
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20060904
+DTEND;VALUE=DATE:20060905
+SUMMARY:Labor Day
+UID:E1C2F367-726B-4BBC-A6F0-37E31EDA74F0-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:4
+DTSTAMP:20060216T151247Z
+RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=9;BYDAY=1MO
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20050327
+DTEND;VALUE=DATE:20050328
+SUMMARY:Easter Sunday
+UID:467631C8-F6B4-419C-878F-082B8774CC6C-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:2
+DTSTAMP:20060216T151248Z
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTAMP:20060216T151243Z
+UID:20432B95-74EB-4A97-B6AA-CF307DE25236-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:3
+DTSTART;VALUE=DATE:20040531
+SUMMARY:Memorial Day
+DTEND;VALUE=DATE:20040601
+DESCRIPTION:Fly flag half-staff until noon.
+RRULE:FREQ=YEARLY;INTERVAL=1;UNTIL=20060528;BYMONTH=5;BYDAY=-1MO
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20040411
+DTEND;VALUE=DATE:20040412
+SUMMARY:Easter Sunday
+UID:AB7564F8-DEC3-4A9B-B228-595138D8F83E-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:2
+DTSTAMP:20060216T151243Z
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20080323
+DTEND;VALUE=DATE:20080324
+SUMMARY:Easter Sunday
+UID:70F1BEC8-058E-4CA0-A401-9D0AA6D10C25-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:4
+DTSTAMP:20060216T151241Z
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20060514
+DTEND;VALUE=DATE:20060515
+SUMMARY:Mother's Day
+UID:3DDCAA37-8FC9-4602-8161-062DA284C25A-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:3
+DTSTAMP:20060216T151242Z
+RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=5;BYDAY=2SU
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20060704
+DTEND;VALUE=DATE:20060705
+SUMMARY:Independence Day
+UID:4D1563A6-B1B6-4FC3-B68D-C5BC32117935-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:3
+DTSTAMP:20060216T151249Z
+RRULE:FREQ=YEARLY;INTERVAL=1
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20220417
+DTEND;VALUE=DATE:20220418
+SUMMARY:Easter Sunday
+UID:8711F720-D78C-4AE3-86CC-4BE1C6A04944-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:2
+DTSTAMP:20060216T151245Z
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20100404
+DTEND;VALUE=DATE:20100405
+SUMMARY:Easter Sunday
+UID:7B660B80-30F0-42CC-A32A-4FEE2ECC6515-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:2
+DTSTAMP:20060216T151243Z
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20051010
+DTEND;VALUE=DATE:20051011
+SUMMARY:Columbus Day
+UID:8B7568AE-0F91-48DA-88EE-210E402147BF-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:3
+DTSTAMP:20060216T151249Z
+RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=10;BYDAY=2MO
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20040614
+DTEND;VALUE=DATE:20040615
+SUMMARY:Flag Day
+UID:349DCD34-83E1-42EF-81C7-C051E5B6FAC8-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:3
+DTSTAMP:20060216T151245Z
+RRULE:FREQ=YEARLY;INTERVAL=1;UNTIL=20060613
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20041027
+DTEND;VALUE=DATE:20041028
+SUMMARY:Navy Day
+UID:B7DA1215-2500-41A6-A40E-706ADD5FFC1E-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:3
+DTSTAMP:20060216T151243Z
+RRULE:FREQ=YEARLY;INTERVAL=1;UNTIL=20051026
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20040216
+DTEND;VALUE=DATE:20040217
+SUMMARY:Washington's Birthday
+UID:7D553648-4460-4618-977E-12B8DB4516BF-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:5
+DTSTAMP:20060216T151242Z
+RRULE:FREQ=YEARLY;INTERVAL=1;UNTIL=20060219;BYMONTH=2;BYDAY=3MO
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20230409
+DTEND;VALUE=DATE:20230410
+SUMMARY:Easter Sunday
+UID:4006A01A-8E57-497A-8061-C504817DEC29-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:2
+DTSTAMP:20060216T151248Z
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20040515
+DTEND;VALUE=DATE:20040516
+SUMMARY:Armed Forces Day
+UID:DE7C6F7A-EA80-42C8-A05B-89341A373CA2-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:3
+DTSTAMP:20060216T151242Z
+RRULE:FREQ=YEARLY;INTERVAL=1;UNTIL=20060519;BYMONTH=5;BYDAY=3SA
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20051111
+DTEND;VALUE=DATE:20051112
+SUMMARY:Veterans Day
+UID:64A2DCF3-5A6B-4EF4-A520-BA01CBC97617-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:3
+DTSTAMP:20060216T151242Z
+RRULE:FREQ=YEARLY;INTERVAL=1
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20040120
+DTEND;VALUE=DATE:20040121
+SUMMARY:Inauguration Day
+UID:5155D737-F8AA-4522-8703-D51B4A30AF9C-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:6
+DTSTAMP:20060216T151249Z
+RRULE:FREQ=YEARLY;INTERVAL=1;UNTIL=20060119
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTAMP:20060216T151243Z
+UID:E44DD94F-150A-4B6E-8692-A53437147FCF-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:3
+DTSTART;VALUE=DATE:20060529
+SUMMARY:Memorial Day
+DTEND;VALUE=DATE:20060530
+DESCRIPTION:Fly flag half-staff until noon.
+RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=5;BYDAY=-1MO
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20060520
+DTEND;VALUE=DATE:20060521
+SUMMARY:Armed Forces Day
+UID:DEACF954-F452-4AC2-BB9C-437533BF49A6-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:3
+DTSTAMP:20060216T151247Z
+RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=5;BYDAY=3SA
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20060917
+DTEND;VALUE=DATE:20060918
+SUMMARY:Constitution Day
+UID:9C3C643D-D138-4AA9-9AB4-F77443E70837-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:3
+DTSTAMP:20060216T151249Z
+RRULE:FREQ=YEARLY;INTERVAL=1
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20250420
+DTEND;VALUE=DATE:20250421
+SUMMARY:Easter Sunday
+UID:79FC38CA-5D7B-45B9-839B-27B5C8C3A514-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:2
+DTSTAMP:20060216T151246Z
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20041111
+DTEND;VALUE=DATE:20041112
+SUMMARY:Veterans Day
+UID:75F65F7C-5D88-45B2-9D95-18F7C8AFEB86-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:3
+DTSTAMP:20060216T151243Z
+RRULE:FREQ=YEARLY;INTERVAL=1;UNTIL=20051110
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20160327
+DTEND;VALUE=DATE:20160328
+SUMMARY:Easter Sunday
+UID:7D9E7675-0B5B-4E43-B918-235CD5A9248E-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:2
+DTSTAMP:20060216T151249Z
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20150405
+DTEND;VALUE=DATE:20150406
+SUMMARY:Easter Sunday
+UID:DF4DAEB8-7248-4F1F-BA4E-EA8B5BDF5D0C-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:2
+DTSTAMP:20060216T151244Z
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20060212
+DTEND;VALUE=DATE:20060213
+SUMMARY:Lincoln's Birthday
+UID:E238FE0B-4E32-43D6-965F-ACC28CC43B21-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:3
+DTSTAMP:20060216T151243Z
+RRULE:FREQ=YEARLY;INTERVAL=1
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20060220
+DTEND;VALUE=DATE:20060221
+SUMMARY:Washington's Birthday
+UID:3BBE9587-1A13-4DF6-8671-08511BC92786-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:5
+DTSTAMP:20060216T151249Z
+RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=2;BYDAY=3MO
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20040917
+DTEND;VALUE=DATE:20040918
+SUMMARY:Constitution Day
+UID:9672014B-DAE5-42AF-B83E-91CE92CE1278-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:3
+DTSTAMP:20060216T151249Z
+RRULE:FREQ=YEARLY;INTERVAL=1;UNTIL=20060916
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20070408
+DTEND;VALUE=DATE:20070409
+SUMMARY:Easter Sunday
+UID:95C333C1-CEAE-45F0-B448-B8F9F5B768A2-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:2
+DTSTAMP:20060216T151247Z
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20060120
+DTEND;VALUE=DATE:20060121
+SUMMARY:Inauguration Day
+UID:5485295A-60A8-4CBF-9574-CE838633DD95-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:6
+DTSTAMP:20060216T151245Z
+RRULE:FREQ=YEARLY;INTERVAL=1
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20130331
+DTEND;VALUE=DATE:20130401
+SUMMARY:Easter Sunday
+UID:7896BE9D-72E8-4C38-9BC7-203830C6429B-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:2
+DTSTAMP:20060216T151244Z
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20041225
+DTEND;VALUE=DATE:20041226
+SUMMARY:Christmas Day
+UID:57B0B83E-0913-4853-B784-C072F9F990DF-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:3
+DTSTAMP:20060216T151245Z
+RRULE:FREQ=YEARLY;INTERVAL=1;UNTIL=20051224
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20040509
+DTEND;VALUE=DATE:20040510
+SUMMARY:Mother's Day
+UID:6E846799-408D-4D86-B3DF-D9946CCDB194-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:3
+DTSTAMP:20060216T151244Z
+RRULE:FREQ=YEARLY;INTERVAL=1;UNTIL=20060513;BYMONTH=5;BYDAY=2SU
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20170416
+DTEND;VALUE=DATE:20170417
+SUMMARY:Easter Sunday
+UID:35EE647D-6E48-4233-B0C4-CCC497684C92-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:2
+DTSTAMP:20060216T151251Z
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20051225
+DTEND;VALUE=DATE:20051226
+SUMMARY:Christmas Day
+UID:555C0D00-991F-48C5-A68B-7E3CBD5780FA-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:3
+DTSTAMP:20060216T151245Z
+RRULE:FREQ=YEARLY;INTERVAL=1
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20041125
+DTEND;VALUE=DATE:20041126
+SUMMARY:Thanksgiving Day
+UID:73C40DD3-C7C0-42BB-95F5-22B1FCE2F240-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:3
+DTSTAMP:20060216T151244Z
+RRULE:FREQ=YEARLY;INTERVAL=1;UNTIL=20051123;BYMONTH=11;BYDAY=4TH
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20060116
+DTEND;VALUE=DATE:20060117
+SUMMARY:Martin Luther King Jr.'s Birthday
+UID:910ED267-B8DF-4CA7-B867-0ED1A5FD3F23-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:5
+DTSTAMP:20060216T151242Z
+RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=1;BYDAY=3MO
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20060614
+DTEND;VALUE=DATE:20060615
+SUMMARY:Flag Day
+UID:C15CE396-EAA3-49FB-B79F-79AF3D6E5069-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:3
+DTSTAMP:20060216T151247Z
+RRULE:FREQ=YEARLY;INTERVAL=1
+END:VEVENT
+BEGIN:VEVENT
+TRANSP:TRANSPARENT
+DTSTART;VALUE=DATE:20090412
+DTEND;VALUE=DATE:20090413
+SUMMARY:Easter Sunday
+UID:698F4B6B-C5B9-4AF6-9E38-DF171C8448A5-7CFA95A3-9734-46AF-A4DC-5FB544A
+ D96AF
+SEQUENCE:2
+DTSTAMP:20060216T151249Z
+END:VEVENT
+END:VCALENDAR