AceTime  2.3.0
Date and time classes for Arduino that support timezones from the TZ Database.
zone_policies.cpp
1 // This file was generated by the following script:
2 //
3 // $ /home/brian/src/AceTimeTools/src/acetimetools/tzcompiler.py
4 // --input_dir /home/brian/src/AceTime/src/zonedbctesting/tzfiles
5 // --output_dir /home/brian/src/AceTime/src/zonedbctesting
6 // --tz_version 2023c
7 // --action zonedb
8 // --language arduino
9 // --scope complete
10 // --db_namespace zonedbctesting
11 // --include_list include_list.txt
12 // --nocompress
13 // --start_year 1980
14 // --until_year 2200
15 //
16 // using the TZ Database files
17 //
18 // africa
19 // antarctica
20 // asia
21 // australasia
22 // backward
23 // etcetera
24 // europe
25 // northamerica
26 // southamerica
27 //
28 // from https://github.com/eggert/tz/releases/tag/2023c
29 //
30 // Supported Zones: 16 (15 zones, 1 links)
31 // Unsupported Zones: 580 (335 zones, 245 links)
32 //
33 // Requested Years: [1980,2200]
34 // Accurate Years: [1980,32767]
35 //
36 // Original Years: [1844,2087]
37 // Generated Years: [1945,2087]
38 // Lower/Upper Truncated: [True,False]
39 //
40 // Estimator Years: [1945,2090]
41 // Max Buffer Size: 7
42 //
43 // Records:
44 // Infos: 16
45 // Eras: 30
46 // Policies: 12
47 // Rules: 227
48 //
49 // Memory (8-bits):
50 // Context: 16
51 // Rules: 2724
52 // Policies: 36
53 // Eras: 450
54 // Zones: 195
55 // Links: 13
56 // Registry: 32
57 // Formats: 92
58 // Letters: 23
59 // Fragments: 0
60 // Names: 260 (original: 260)
61 // TOTAL: 3841
62 //
63 // Memory (32-bits):
64 // Context: 24
65 // Rules: 2724
66 // Policies: 96
67 // Eras: 600
68 // Zones: 360
69 // Links: 24
70 // Registry: 64
71 // Formats: 92
72 // Letters: 33
73 // Fragments: 0
74 // Names: 260 (original: 260)
75 // TOTAL: 4277
76 //
77 // DO NOT EDIT
78 
79 #include <zoneinfo/compat.h>
80 #include "zone_policies.h"
81 
82 namespace ace_time {
83 namespace zonedbctesting {
84 
85 //---------------------------------------------------------------------------
86 // Policies: 12
87 // Rules: 227
88 //---------------------------------------------------------------------------
89 
90 //---------------------------------------------------------------------------
91 // Policy name: Aus
92 // Rules: 1
93 //---------------------------------------------------------------------------
94 
95 static const complete::ZoneRule kZoneRulesAus[] ACE_TIME_PROGMEM = {
96  // Anchor: Rule Aus 1943 1944 - Mar lastSun 2:00s 0 S
97  {
98  -32767 /*fromYear*/,
99  -32767 /*toYear*/,
100  1 /*inMonth*/,
101  0 /*onDayOfWeek*/,
102  1 /*onDayOfMonth*/,
103  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
104  0 /*atTimeCode (0/15)*/,
105  0 /*deltaMinutes*/,
106  3 /*letterIndex ("S")*/,
107  },
108 
109 };
110 
111 const complete::ZonePolicy kZonePolicyAus ACE_TIME_PROGMEM = {
112  kZoneRulesAus /*rules*/,
113  1 /*numRules*/,
114 };
115 
116 //---------------------------------------------------------------------------
117 // Policy name: Canada
118 // Rules: 7
119 //---------------------------------------------------------------------------
120 
121 static const complete::ZoneRule kZoneRulesCanada[] ACE_TIME_PROGMEM = {
122  // Anchor: Rule Canada 1945 only - Sep 30 2:00 0 S
123  {
124  -32767 /*fromYear*/,
125  -32767 /*toYear*/,
126  1 /*inMonth*/,
127  0 /*onDayOfWeek*/,
128  1 /*onDayOfMonth*/,
129  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
130  0 /*atTimeCode (0/15)*/,
131  0 /*deltaMinutes*/,
132  3 /*letterIndex ("S")*/,
133  },
134  // Rule Canada 1945 only - Sep 30 2:00 0 S
135  {
136  1945 /*fromYear*/,
137  1945 /*toYear*/,
138  9 /*inMonth*/,
139  0 /*onDayOfWeek*/,
140  30 /*onDayOfMonth*/,
141  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
142  480 /*atTimeCode (7200/15)*/,
143  0 /*deltaMinutes*/,
144  3 /*letterIndex ("S")*/,
145  },
146  // Rule Canada 1974 1986 - Apr lastSun 2:00 1:00 D
147  {
148  1974 /*fromYear*/,
149  1986 /*toYear*/,
150  4 /*inMonth*/,
151  7 /*onDayOfWeek*/,
152  0 /*onDayOfMonth*/,
153  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
154  480 /*atTimeCode (7200/15)*/,
155  60 /*deltaMinutes*/,
156  2 /*letterIndex ("D")*/,
157  },
158  // Rule Canada 1974 2006 - Oct lastSun 2:00 0 S
159  {
160  1974 /*fromYear*/,
161  2006 /*toYear*/,
162  10 /*inMonth*/,
163  7 /*onDayOfWeek*/,
164  0 /*onDayOfMonth*/,
165  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
166  480 /*atTimeCode (7200/15)*/,
167  0 /*deltaMinutes*/,
168  3 /*letterIndex ("S")*/,
169  },
170  // Rule Canada 1987 2006 - Apr Sun>=1 2:00 1:00 D
171  {
172  1987 /*fromYear*/,
173  2006 /*toYear*/,
174  4 /*inMonth*/,
175  7 /*onDayOfWeek*/,
176  1 /*onDayOfMonth*/,
177  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
178  480 /*atTimeCode (7200/15)*/,
179  60 /*deltaMinutes*/,
180  2 /*letterIndex ("D")*/,
181  },
182  // Rule Canada 2007 max - Mar Sun>=8 2:00 1:00 D
183  {
184  2007 /*fromYear*/,
185  32766 /*toYear*/,
186  3 /*inMonth*/,
187  7 /*onDayOfWeek*/,
188  8 /*onDayOfMonth*/,
189  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
190  480 /*atTimeCode (7200/15)*/,
191  60 /*deltaMinutes*/,
192  2 /*letterIndex ("D")*/,
193  },
194  // Rule Canada 2007 max - Nov Sun>=1 2:00 0 S
195  {
196  2007 /*fromYear*/,
197  32766 /*toYear*/,
198  11 /*inMonth*/,
199  7 /*onDayOfWeek*/,
200  1 /*onDayOfMonth*/,
201  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
202  480 /*atTimeCode (7200/15)*/,
203  0 /*deltaMinutes*/,
204  3 /*letterIndex ("S")*/,
205  },
206 
207 };
208 
209 const complete::ZonePolicy kZonePolicyCanada ACE_TIME_PROGMEM = {
210  kZoneRulesCanada /*rules*/,
211  7 /*numRules*/,
212 };
213 
214 //---------------------------------------------------------------------------
215 // Policy name: EU
216 // Rules: 6
217 //---------------------------------------------------------------------------
218 
219 static const complete::ZoneRule kZoneRulesEU[] ACE_TIME_PROGMEM = {
220  // Anchor: Rule EU 1978 only - Oct 1 1:00u 0 -
221  {
222  -32767 /*fromYear*/,
223  -32767 /*toYear*/,
224  1 /*inMonth*/,
225  0 /*onDayOfWeek*/,
226  1 /*onDayOfMonth*/,
227  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
228  0 /*atTimeCode (0/15)*/,
229  0 /*deltaMinutes*/,
230  0 /*letterIndex ("")*/,
231  },
232  // Rule EU 1977 1980 - Apr Sun>=1 1:00u 1:00 S
233  {
234  1977 /*fromYear*/,
235  1980 /*toYear*/,
236  4 /*inMonth*/,
237  7 /*onDayOfWeek*/,
238  1 /*onDayOfMonth*/,
239  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
240  240 /*atTimeCode (3600/15)*/,
241  60 /*deltaMinutes*/,
242  3 /*letterIndex ("S")*/,
243  },
244  // Rule EU 1978 only - Oct 1 1:00u 0 -
245  {
246  1978 /*fromYear*/,
247  1978 /*toYear*/,
248  10 /*inMonth*/,
249  0 /*onDayOfWeek*/,
250  1 /*onDayOfMonth*/,
251  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
252  240 /*atTimeCode (3600/15)*/,
253  0 /*deltaMinutes*/,
254  0 /*letterIndex ("")*/,
255  },
256  // Rule EU 1979 1995 - Sep lastSun 1:00u 0 -
257  {
258  1979 /*fromYear*/,
259  1995 /*toYear*/,
260  9 /*inMonth*/,
261  7 /*onDayOfWeek*/,
262  0 /*onDayOfMonth*/,
263  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
264  240 /*atTimeCode (3600/15)*/,
265  0 /*deltaMinutes*/,
266  0 /*letterIndex ("")*/,
267  },
268  // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
269  {
270  1981 /*fromYear*/,
271  32766 /*toYear*/,
272  3 /*inMonth*/,
273  7 /*onDayOfWeek*/,
274  0 /*onDayOfMonth*/,
275  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
276  240 /*atTimeCode (3600/15)*/,
277  60 /*deltaMinutes*/,
278  3 /*letterIndex ("S")*/,
279  },
280  // Rule EU 1996 max - Oct lastSun 1:00u 0 -
281  {
282  1996 /*fromYear*/,
283  32766 /*toYear*/,
284  10 /*inMonth*/,
285  7 /*onDayOfWeek*/,
286  0 /*onDayOfMonth*/,
287  32 /*atTimeModifier (kAtcSuffixU + seconds=0)*/,
288  240 /*atTimeCode (3600/15)*/,
289  0 /*deltaMinutes*/,
290  0 /*letterIndex ("")*/,
291  },
292 
293 };
294 
295 const complete::ZonePolicy kZonePolicyEU ACE_TIME_PROGMEM = {
296  kZoneRulesEU /*rules*/,
297  6 /*numRules*/,
298 };
299 
300 //---------------------------------------------------------------------------
301 // Policy name: Edm
302 // Rules: 4
303 //---------------------------------------------------------------------------
304 
305 static const complete::ZoneRule kZoneRulesEdm[] ACE_TIME_PROGMEM = {
306  // Anchor: Rule Edm 1947 only - Sep lastSun 2:00 0 S
307  {
308  -32767 /*fromYear*/,
309  -32767 /*toYear*/,
310  1 /*inMonth*/,
311  0 /*onDayOfWeek*/,
312  1 /*onDayOfMonth*/,
313  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
314  0 /*atTimeCode (0/15)*/,
315  0 /*deltaMinutes*/,
316  3 /*letterIndex ("S")*/,
317  },
318  // Rule Edm 1947 only - Sep lastSun 2:00 0 S
319  {
320  1947 /*fromYear*/,
321  1947 /*toYear*/,
322  9 /*inMonth*/,
323  7 /*onDayOfWeek*/,
324  0 /*onDayOfMonth*/,
325  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
326  480 /*atTimeCode (7200/15)*/,
327  0 /*deltaMinutes*/,
328  3 /*letterIndex ("S")*/,
329  },
330  // Rule Edm 1972 1986 - Apr lastSun 2:00 1:00 D
331  {
332  1972 /*fromYear*/,
333  1986 /*toYear*/,
334  4 /*inMonth*/,
335  7 /*onDayOfWeek*/,
336  0 /*onDayOfMonth*/,
337  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
338  480 /*atTimeCode (7200/15)*/,
339  60 /*deltaMinutes*/,
340  2 /*letterIndex ("D")*/,
341  },
342  // Rule Edm 1972 2006 - Oct lastSun 2:00 0 S
343  {
344  1972 /*fromYear*/,
345  2006 /*toYear*/,
346  10 /*inMonth*/,
347  7 /*onDayOfWeek*/,
348  0 /*onDayOfMonth*/,
349  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
350  480 /*atTimeCode (7200/15)*/,
351  0 /*deltaMinutes*/,
352  3 /*letterIndex ("S")*/,
353  },
354 
355 };
356 
357 const complete::ZonePolicy kZonePolicyEdm ACE_TIME_PROGMEM = {
358  kZoneRulesEdm /*rules*/,
359  4 /*numRules*/,
360 };
361 
362 //---------------------------------------------------------------------------
363 // Policy name: Morocco
364 // Rules: 170
365 //---------------------------------------------------------------------------
366 
367 static const complete::ZoneRule kZoneRulesMorocco[] ACE_TIME_PROGMEM = {
368  // Anchor: Rule Morocco 1978 only - Aug 4 0:00 0 -
369  {
370  -32767 /*fromYear*/,
371  -32767 /*toYear*/,
372  1 /*inMonth*/,
373  0 /*onDayOfWeek*/,
374  1 /*onDayOfMonth*/,
375  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
376  0 /*atTimeCode (0/15)*/,
377  0 /*deltaMinutes*/,
378  0 /*letterIndex ("")*/,
379  },
380  // Rule Morocco 1978 only - Aug 4 0:00 0 -
381  {
382  1978 /*fromYear*/,
383  1978 /*toYear*/,
384  8 /*inMonth*/,
385  0 /*onDayOfWeek*/,
386  4 /*onDayOfMonth*/,
387  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
388  0 /*atTimeCode (0/15)*/,
389  0 /*deltaMinutes*/,
390  0 /*letterIndex ("")*/,
391  },
392  // Rule Morocco 2008 only - Jun 1 0:00 1:00 -
393  {
394  2008 /*fromYear*/,
395  2008 /*toYear*/,
396  6 /*inMonth*/,
397  0 /*onDayOfWeek*/,
398  1 /*onDayOfMonth*/,
399  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
400  0 /*atTimeCode (0/15)*/,
401  60 /*deltaMinutes*/,
402  0 /*letterIndex ("")*/,
403  },
404  // Rule Morocco 2008 only - Sep 1 0:00 0 -
405  {
406  2008 /*fromYear*/,
407  2008 /*toYear*/,
408  9 /*inMonth*/,
409  0 /*onDayOfWeek*/,
410  1 /*onDayOfMonth*/,
411  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
412  0 /*atTimeCode (0/15)*/,
413  0 /*deltaMinutes*/,
414  0 /*letterIndex ("")*/,
415  },
416  // Rule Morocco 2009 only - Jun 1 0:00 1:00 -
417  {
418  2009 /*fromYear*/,
419  2009 /*toYear*/,
420  6 /*inMonth*/,
421  0 /*onDayOfWeek*/,
422  1 /*onDayOfMonth*/,
423  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
424  0 /*atTimeCode (0/15)*/,
425  60 /*deltaMinutes*/,
426  0 /*letterIndex ("")*/,
427  },
428  // Rule Morocco 2009 only - Aug 21 0:00 0 -
429  {
430  2009 /*fromYear*/,
431  2009 /*toYear*/,
432  8 /*inMonth*/,
433  0 /*onDayOfWeek*/,
434  21 /*onDayOfMonth*/,
435  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
436  0 /*atTimeCode (0/15)*/,
437  0 /*deltaMinutes*/,
438  0 /*letterIndex ("")*/,
439  },
440  // Rule Morocco 2010 only - May 2 0:00 1:00 -
441  {
442  2010 /*fromYear*/,
443  2010 /*toYear*/,
444  5 /*inMonth*/,
445  0 /*onDayOfWeek*/,
446  2 /*onDayOfMonth*/,
447  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
448  0 /*atTimeCode (0/15)*/,
449  60 /*deltaMinutes*/,
450  0 /*letterIndex ("")*/,
451  },
452  // Rule Morocco 2010 only - Aug 8 0:00 0 -
453  {
454  2010 /*fromYear*/,
455  2010 /*toYear*/,
456  8 /*inMonth*/,
457  0 /*onDayOfWeek*/,
458  8 /*onDayOfMonth*/,
459  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
460  0 /*atTimeCode (0/15)*/,
461  0 /*deltaMinutes*/,
462  0 /*letterIndex ("")*/,
463  },
464  // Rule Morocco 2011 only - Apr 3 0:00 1:00 -
465  {
466  2011 /*fromYear*/,
467  2011 /*toYear*/,
468  4 /*inMonth*/,
469  0 /*onDayOfWeek*/,
470  3 /*onDayOfMonth*/,
471  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
472  0 /*atTimeCode (0/15)*/,
473  60 /*deltaMinutes*/,
474  0 /*letterIndex ("")*/,
475  },
476  // Rule Morocco 2011 only - Jul 31 0:00 0 -
477  {
478  2011 /*fromYear*/,
479  2011 /*toYear*/,
480  7 /*inMonth*/,
481  0 /*onDayOfWeek*/,
482  31 /*onDayOfMonth*/,
483  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
484  0 /*atTimeCode (0/15)*/,
485  0 /*deltaMinutes*/,
486  0 /*letterIndex ("")*/,
487  },
488  // Rule Morocco 2012 2013 - Apr lastSun 2:00 1:00 -
489  {
490  2012 /*fromYear*/,
491  2013 /*toYear*/,
492  4 /*inMonth*/,
493  7 /*onDayOfWeek*/,
494  0 /*onDayOfMonth*/,
495  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
496  480 /*atTimeCode (7200/15)*/,
497  60 /*deltaMinutes*/,
498  0 /*letterIndex ("")*/,
499  },
500  // Rule Morocco 2012 only - Jul 20 3:00 0 -
501  {
502  2012 /*fromYear*/,
503  2012 /*toYear*/,
504  7 /*inMonth*/,
505  0 /*onDayOfWeek*/,
506  20 /*onDayOfMonth*/,
507  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
508  720 /*atTimeCode (10800/15)*/,
509  0 /*deltaMinutes*/,
510  0 /*letterIndex ("")*/,
511  },
512  // Rule Morocco 2012 only - Aug 20 2:00 1:00 -
513  {
514  2012 /*fromYear*/,
515  2012 /*toYear*/,
516  8 /*inMonth*/,
517  0 /*onDayOfWeek*/,
518  20 /*onDayOfMonth*/,
519  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
520  480 /*atTimeCode (7200/15)*/,
521  60 /*deltaMinutes*/,
522  0 /*letterIndex ("")*/,
523  },
524  // Rule Morocco 2012 only - Sep 30 3:00 0 -
525  {
526  2012 /*fromYear*/,
527  2012 /*toYear*/,
528  9 /*inMonth*/,
529  0 /*onDayOfWeek*/,
530  30 /*onDayOfMonth*/,
531  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
532  720 /*atTimeCode (10800/15)*/,
533  0 /*deltaMinutes*/,
534  0 /*letterIndex ("")*/,
535  },
536  // Rule Morocco 2013 only - Jul 7 3:00 0 -
537  {
538  2013 /*fromYear*/,
539  2013 /*toYear*/,
540  7 /*inMonth*/,
541  0 /*onDayOfWeek*/,
542  7 /*onDayOfMonth*/,
543  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
544  720 /*atTimeCode (10800/15)*/,
545  0 /*deltaMinutes*/,
546  0 /*letterIndex ("")*/,
547  },
548  // Rule Morocco 2013 only - Aug 10 2:00 1:00 -
549  {
550  2013 /*fromYear*/,
551  2013 /*toYear*/,
552  8 /*inMonth*/,
553  0 /*onDayOfWeek*/,
554  10 /*onDayOfMonth*/,
555  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
556  480 /*atTimeCode (7200/15)*/,
557  60 /*deltaMinutes*/,
558  0 /*letterIndex ("")*/,
559  },
560  // Rule Morocco 2013 2018 - Oct lastSun 3:00 0 -
561  {
562  2013 /*fromYear*/,
563  2018 /*toYear*/,
564  10 /*inMonth*/,
565  7 /*onDayOfWeek*/,
566  0 /*onDayOfMonth*/,
567  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
568  720 /*atTimeCode (10800/15)*/,
569  0 /*deltaMinutes*/,
570  0 /*letterIndex ("")*/,
571  },
572  // Rule Morocco 2014 2018 - Mar lastSun 2:00 1:00 -
573  {
574  2014 /*fromYear*/,
575  2018 /*toYear*/,
576  3 /*inMonth*/,
577  7 /*onDayOfWeek*/,
578  0 /*onDayOfMonth*/,
579  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
580  480 /*atTimeCode (7200/15)*/,
581  60 /*deltaMinutes*/,
582  0 /*letterIndex ("")*/,
583  },
584  // Rule Morocco 2014 only - Jun 28 3:00 0 -
585  {
586  2014 /*fromYear*/,
587  2014 /*toYear*/,
588  6 /*inMonth*/,
589  0 /*onDayOfWeek*/,
590  28 /*onDayOfMonth*/,
591  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
592  720 /*atTimeCode (10800/15)*/,
593  0 /*deltaMinutes*/,
594  0 /*letterIndex ("")*/,
595  },
596  // Rule Morocco 2014 only - Aug 2 2:00 1:00 -
597  {
598  2014 /*fromYear*/,
599  2014 /*toYear*/,
600  8 /*inMonth*/,
601  0 /*onDayOfWeek*/,
602  2 /*onDayOfMonth*/,
603  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
604  480 /*atTimeCode (7200/15)*/,
605  60 /*deltaMinutes*/,
606  0 /*letterIndex ("")*/,
607  },
608  // Rule Morocco 2015 only - Jun 14 3:00 0 -
609  {
610  2015 /*fromYear*/,
611  2015 /*toYear*/,
612  6 /*inMonth*/,
613  0 /*onDayOfWeek*/,
614  14 /*onDayOfMonth*/,
615  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
616  720 /*atTimeCode (10800/15)*/,
617  0 /*deltaMinutes*/,
618  0 /*letterIndex ("")*/,
619  },
620  // Rule Morocco 2015 only - Jul 19 2:00 1:00 -
621  {
622  2015 /*fromYear*/,
623  2015 /*toYear*/,
624  7 /*inMonth*/,
625  0 /*onDayOfWeek*/,
626  19 /*onDayOfMonth*/,
627  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
628  480 /*atTimeCode (7200/15)*/,
629  60 /*deltaMinutes*/,
630  0 /*letterIndex ("")*/,
631  },
632  // Rule Morocco 2016 only - Jun 5 3:00 0 -
633  {
634  2016 /*fromYear*/,
635  2016 /*toYear*/,
636  6 /*inMonth*/,
637  0 /*onDayOfWeek*/,
638  5 /*onDayOfMonth*/,
639  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
640  720 /*atTimeCode (10800/15)*/,
641  0 /*deltaMinutes*/,
642  0 /*letterIndex ("")*/,
643  },
644  // Rule Morocco 2016 only - Jul 10 2:00 1:00 -
645  {
646  2016 /*fromYear*/,
647  2016 /*toYear*/,
648  7 /*inMonth*/,
649  0 /*onDayOfWeek*/,
650  10 /*onDayOfMonth*/,
651  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
652  480 /*atTimeCode (7200/15)*/,
653  60 /*deltaMinutes*/,
654  0 /*letterIndex ("")*/,
655  },
656  // Rule Morocco 2017 only - May 21 3:00 0 -
657  {
658  2017 /*fromYear*/,
659  2017 /*toYear*/,
660  5 /*inMonth*/,
661  0 /*onDayOfWeek*/,
662  21 /*onDayOfMonth*/,
663  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
664  720 /*atTimeCode (10800/15)*/,
665  0 /*deltaMinutes*/,
666  0 /*letterIndex ("")*/,
667  },
668  // Rule Morocco 2017 only - Jul 2 2:00 1:00 -
669  {
670  2017 /*fromYear*/,
671  2017 /*toYear*/,
672  7 /*inMonth*/,
673  0 /*onDayOfWeek*/,
674  2 /*onDayOfMonth*/,
675  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
676  480 /*atTimeCode (7200/15)*/,
677  60 /*deltaMinutes*/,
678  0 /*letterIndex ("")*/,
679  },
680  // Rule Morocco 2018 only - May 13 3:00 0 -
681  {
682  2018 /*fromYear*/,
683  2018 /*toYear*/,
684  5 /*inMonth*/,
685  0 /*onDayOfWeek*/,
686  13 /*onDayOfMonth*/,
687  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
688  720 /*atTimeCode (10800/15)*/,
689  0 /*deltaMinutes*/,
690  0 /*letterIndex ("")*/,
691  },
692  // Rule Morocco 2018 only - Jun 17 2:00 1:00 -
693  {
694  2018 /*fromYear*/,
695  2018 /*toYear*/,
696  6 /*inMonth*/,
697  0 /*onDayOfWeek*/,
698  17 /*onDayOfMonth*/,
699  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
700  480 /*atTimeCode (7200/15)*/,
701  60 /*deltaMinutes*/,
702  0 /*letterIndex ("")*/,
703  },
704  // Rule Morocco 2019 only - May 5 3:00 -1:00 -
705  {
706  2019 /*fromYear*/,
707  2019 /*toYear*/,
708  5 /*inMonth*/,
709  0 /*onDayOfWeek*/,
710  5 /*onDayOfMonth*/,
711  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
712  720 /*atTimeCode (10800/15)*/,
713  -60 /*deltaMinutes*/,
714  0 /*letterIndex ("")*/,
715  },
716  // Rule Morocco 2019 only - Jun 9 2:00 0 -
717  {
718  2019 /*fromYear*/,
719  2019 /*toYear*/,
720  6 /*inMonth*/,
721  0 /*onDayOfWeek*/,
722  9 /*onDayOfMonth*/,
723  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
724  480 /*atTimeCode (7200/15)*/,
725  0 /*deltaMinutes*/,
726  0 /*letterIndex ("")*/,
727  },
728  // Rule Morocco 2020 only - Apr 19 3:00 -1:00 -
729  {
730  2020 /*fromYear*/,
731  2020 /*toYear*/,
732  4 /*inMonth*/,
733  0 /*onDayOfWeek*/,
734  19 /*onDayOfMonth*/,
735  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
736  720 /*atTimeCode (10800/15)*/,
737  -60 /*deltaMinutes*/,
738  0 /*letterIndex ("")*/,
739  },
740  // Rule Morocco 2020 only - May 31 2:00 0 -
741  {
742  2020 /*fromYear*/,
743  2020 /*toYear*/,
744  5 /*inMonth*/,
745  0 /*onDayOfWeek*/,
746  31 /*onDayOfMonth*/,
747  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
748  480 /*atTimeCode (7200/15)*/,
749  0 /*deltaMinutes*/,
750  0 /*letterIndex ("")*/,
751  },
752  // Rule Morocco 2021 only - Apr 11 3:00 -1:00 -
753  {
754  2021 /*fromYear*/,
755  2021 /*toYear*/,
756  4 /*inMonth*/,
757  0 /*onDayOfWeek*/,
758  11 /*onDayOfMonth*/,
759  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
760  720 /*atTimeCode (10800/15)*/,
761  -60 /*deltaMinutes*/,
762  0 /*letterIndex ("")*/,
763  },
764  // Rule Morocco 2021 only - May 16 2:00 0 -
765  {
766  2021 /*fromYear*/,
767  2021 /*toYear*/,
768  5 /*inMonth*/,
769  0 /*onDayOfWeek*/,
770  16 /*onDayOfMonth*/,
771  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
772  480 /*atTimeCode (7200/15)*/,
773  0 /*deltaMinutes*/,
774  0 /*letterIndex ("")*/,
775  },
776  // Rule Morocco 2022 only - Mar 27 3:00 -1:00 -
777  {
778  2022 /*fromYear*/,
779  2022 /*toYear*/,
780  3 /*inMonth*/,
781  0 /*onDayOfWeek*/,
782  27 /*onDayOfMonth*/,
783  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
784  720 /*atTimeCode (10800/15)*/,
785  -60 /*deltaMinutes*/,
786  0 /*letterIndex ("")*/,
787  },
788  // Rule Morocco 2022 only - May 8 2:00 0 -
789  {
790  2022 /*fromYear*/,
791  2022 /*toYear*/,
792  5 /*inMonth*/,
793  0 /*onDayOfWeek*/,
794  8 /*onDayOfMonth*/,
795  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
796  480 /*atTimeCode (7200/15)*/,
797  0 /*deltaMinutes*/,
798  0 /*letterIndex ("")*/,
799  },
800  // Rule Morocco 2023 only - Mar 19 3:00 -1:00 -
801  {
802  2023 /*fromYear*/,
803  2023 /*toYear*/,
804  3 /*inMonth*/,
805  0 /*onDayOfWeek*/,
806  19 /*onDayOfMonth*/,
807  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
808  720 /*atTimeCode (10800/15)*/,
809  -60 /*deltaMinutes*/,
810  0 /*letterIndex ("")*/,
811  },
812  // Rule Morocco 2023 only - Apr 23 2:00 0 -
813  {
814  2023 /*fromYear*/,
815  2023 /*toYear*/,
816  4 /*inMonth*/,
817  0 /*onDayOfWeek*/,
818  23 /*onDayOfMonth*/,
819  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
820  480 /*atTimeCode (7200/15)*/,
821  0 /*deltaMinutes*/,
822  0 /*letterIndex ("")*/,
823  },
824  // Rule Morocco 2024 only - Mar 10 3:00 -1:00 -
825  {
826  2024 /*fromYear*/,
827  2024 /*toYear*/,
828  3 /*inMonth*/,
829  0 /*onDayOfWeek*/,
830  10 /*onDayOfMonth*/,
831  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
832  720 /*atTimeCode (10800/15)*/,
833  -60 /*deltaMinutes*/,
834  0 /*letterIndex ("")*/,
835  },
836  // Rule Morocco 2024 only - Apr 14 2:00 0 -
837  {
838  2024 /*fromYear*/,
839  2024 /*toYear*/,
840  4 /*inMonth*/,
841  0 /*onDayOfWeek*/,
842  14 /*onDayOfMonth*/,
843  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
844  480 /*atTimeCode (7200/15)*/,
845  0 /*deltaMinutes*/,
846  0 /*letterIndex ("")*/,
847  },
848  // Rule Morocco 2025 only - Feb 23 3:00 -1:00 -
849  {
850  2025 /*fromYear*/,
851  2025 /*toYear*/,
852  2 /*inMonth*/,
853  0 /*onDayOfWeek*/,
854  23 /*onDayOfMonth*/,
855  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
856  720 /*atTimeCode (10800/15)*/,
857  -60 /*deltaMinutes*/,
858  0 /*letterIndex ("")*/,
859  },
860  // Rule Morocco 2025 only - Apr 6 2:00 0 -
861  {
862  2025 /*fromYear*/,
863  2025 /*toYear*/,
864  4 /*inMonth*/,
865  0 /*onDayOfWeek*/,
866  6 /*onDayOfMonth*/,
867  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
868  480 /*atTimeCode (7200/15)*/,
869  0 /*deltaMinutes*/,
870  0 /*letterIndex ("")*/,
871  },
872  // Rule Morocco 2026 only - Feb 15 3:00 -1:00 -
873  {
874  2026 /*fromYear*/,
875  2026 /*toYear*/,
876  2 /*inMonth*/,
877  0 /*onDayOfWeek*/,
878  15 /*onDayOfMonth*/,
879  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
880  720 /*atTimeCode (10800/15)*/,
881  -60 /*deltaMinutes*/,
882  0 /*letterIndex ("")*/,
883  },
884  // Rule Morocco 2026 only - Mar 22 2:00 0 -
885  {
886  2026 /*fromYear*/,
887  2026 /*toYear*/,
888  3 /*inMonth*/,
889  0 /*onDayOfWeek*/,
890  22 /*onDayOfMonth*/,
891  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
892  480 /*atTimeCode (7200/15)*/,
893  0 /*deltaMinutes*/,
894  0 /*letterIndex ("")*/,
895  },
896  // Rule Morocco 2027 only - Feb 7 3:00 -1:00 -
897  {
898  2027 /*fromYear*/,
899  2027 /*toYear*/,
900  2 /*inMonth*/,
901  0 /*onDayOfWeek*/,
902  7 /*onDayOfMonth*/,
903  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
904  720 /*atTimeCode (10800/15)*/,
905  -60 /*deltaMinutes*/,
906  0 /*letterIndex ("")*/,
907  },
908  // Rule Morocco 2027 only - Mar 14 2:00 0 -
909  {
910  2027 /*fromYear*/,
911  2027 /*toYear*/,
912  3 /*inMonth*/,
913  0 /*onDayOfWeek*/,
914  14 /*onDayOfMonth*/,
915  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
916  480 /*atTimeCode (7200/15)*/,
917  0 /*deltaMinutes*/,
918  0 /*letterIndex ("")*/,
919  },
920  // Rule Morocco 2028 only - Jan 23 3:00 -1:00 -
921  {
922  2028 /*fromYear*/,
923  2028 /*toYear*/,
924  1 /*inMonth*/,
925  0 /*onDayOfWeek*/,
926  23 /*onDayOfMonth*/,
927  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
928  720 /*atTimeCode (10800/15)*/,
929  -60 /*deltaMinutes*/,
930  0 /*letterIndex ("")*/,
931  },
932  // Rule Morocco 2028 only - Mar 5 2:00 0 -
933  {
934  2028 /*fromYear*/,
935  2028 /*toYear*/,
936  3 /*inMonth*/,
937  0 /*onDayOfWeek*/,
938  5 /*onDayOfMonth*/,
939  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
940  480 /*atTimeCode (7200/15)*/,
941  0 /*deltaMinutes*/,
942  0 /*letterIndex ("")*/,
943  },
944  // Rule Morocco 2029 only - Jan 14 3:00 -1:00 -
945  {
946  2029 /*fromYear*/,
947  2029 /*toYear*/,
948  1 /*inMonth*/,
949  0 /*onDayOfWeek*/,
950  14 /*onDayOfMonth*/,
951  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
952  720 /*atTimeCode (10800/15)*/,
953  -60 /*deltaMinutes*/,
954  0 /*letterIndex ("")*/,
955  },
956  // Rule Morocco 2029 only - Feb 18 2:00 0 -
957  {
958  2029 /*fromYear*/,
959  2029 /*toYear*/,
960  2 /*inMonth*/,
961  0 /*onDayOfWeek*/,
962  18 /*onDayOfMonth*/,
963  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
964  480 /*atTimeCode (7200/15)*/,
965  0 /*deltaMinutes*/,
966  0 /*letterIndex ("")*/,
967  },
968  // Rule Morocco 2029 only - Dec 30 3:00 -1:00 -
969  {
970  2029 /*fromYear*/,
971  2029 /*toYear*/,
972  12 /*inMonth*/,
973  0 /*onDayOfWeek*/,
974  30 /*onDayOfMonth*/,
975  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
976  720 /*atTimeCode (10800/15)*/,
977  -60 /*deltaMinutes*/,
978  0 /*letterIndex ("")*/,
979  },
980  // Rule Morocco 2030 only - Feb 10 2:00 0 -
981  {
982  2030 /*fromYear*/,
983  2030 /*toYear*/,
984  2 /*inMonth*/,
985  0 /*onDayOfWeek*/,
986  10 /*onDayOfMonth*/,
987  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
988  480 /*atTimeCode (7200/15)*/,
989  0 /*deltaMinutes*/,
990  0 /*letterIndex ("")*/,
991  },
992  // Rule Morocco 2030 only - Dec 22 3:00 -1:00 -
993  {
994  2030 /*fromYear*/,
995  2030 /*toYear*/,
996  12 /*inMonth*/,
997  0 /*onDayOfWeek*/,
998  22 /*onDayOfMonth*/,
999  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1000  720 /*atTimeCode (10800/15)*/,
1001  -60 /*deltaMinutes*/,
1002  0 /*letterIndex ("")*/,
1003  },
1004  // Rule Morocco 2031 only - Jan 26 2:00 0 -
1005  {
1006  2031 /*fromYear*/,
1007  2031 /*toYear*/,
1008  1 /*inMonth*/,
1009  0 /*onDayOfWeek*/,
1010  26 /*onDayOfMonth*/,
1011  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1012  480 /*atTimeCode (7200/15)*/,
1013  0 /*deltaMinutes*/,
1014  0 /*letterIndex ("")*/,
1015  },
1016  // Rule Morocco 2031 only - Dec 14 3:00 -1:00 -
1017  {
1018  2031 /*fromYear*/,
1019  2031 /*toYear*/,
1020  12 /*inMonth*/,
1021  0 /*onDayOfWeek*/,
1022  14 /*onDayOfMonth*/,
1023  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1024  720 /*atTimeCode (10800/15)*/,
1025  -60 /*deltaMinutes*/,
1026  0 /*letterIndex ("")*/,
1027  },
1028  // Rule Morocco 2032 only - Jan 18 2:00 0 -
1029  {
1030  2032 /*fromYear*/,
1031  2032 /*toYear*/,
1032  1 /*inMonth*/,
1033  0 /*onDayOfWeek*/,
1034  18 /*onDayOfMonth*/,
1035  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1036  480 /*atTimeCode (7200/15)*/,
1037  0 /*deltaMinutes*/,
1038  0 /*letterIndex ("")*/,
1039  },
1040  // Rule Morocco 2032 only - Nov 28 3:00 -1:00 -
1041  {
1042  2032 /*fromYear*/,
1043  2032 /*toYear*/,
1044  11 /*inMonth*/,
1045  0 /*onDayOfWeek*/,
1046  28 /*onDayOfMonth*/,
1047  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1048  720 /*atTimeCode (10800/15)*/,
1049  -60 /*deltaMinutes*/,
1050  0 /*letterIndex ("")*/,
1051  },
1052  // Rule Morocco 2033 only - Jan 9 2:00 0 -
1053  {
1054  2033 /*fromYear*/,
1055  2033 /*toYear*/,
1056  1 /*inMonth*/,
1057  0 /*onDayOfWeek*/,
1058  9 /*onDayOfMonth*/,
1059  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1060  480 /*atTimeCode (7200/15)*/,
1061  0 /*deltaMinutes*/,
1062  0 /*letterIndex ("")*/,
1063  },
1064  // Rule Morocco 2033 only - Nov 20 3:00 -1:00 -
1065  {
1066  2033 /*fromYear*/,
1067  2033 /*toYear*/,
1068  11 /*inMonth*/,
1069  0 /*onDayOfWeek*/,
1070  20 /*onDayOfMonth*/,
1071  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1072  720 /*atTimeCode (10800/15)*/,
1073  -60 /*deltaMinutes*/,
1074  0 /*letterIndex ("")*/,
1075  },
1076  // Rule Morocco 2033 only - Dec 25 2:00 0 -
1077  {
1078  2033 /*fromYear*/,
1079  2033 /*toYear*/,
1080  12 /*inMonth*/,
1081  0 /*onDayOfWeek*/,
1082  25 /*onDayOfMonth*/,
1083  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1084  480 /*atTimeCode (7200/15)*/,
1085  0 /*deltaMinutes*/,
1086  0 /*letterIndex ("")*/,
1087  },
1088  // Rule Morocco 2034 only - Nov 5 3:00 -1:00 -
1089  {
1090  2034 /*fromYear*/,
1091  2034 /*toYear*/,
1092  11 /*inMonth*/,
1093  0 /*onDayOfWeek*/,
1094  5 /*onDayOfMonth*/,
1095  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1096  720 /*atTimeCode (10800/15)*/,
1097  -60 /*deltaMinutes*/,
1098  0 /*letterIndex ("")*/,
1099  },
1100  // Rule Morocco 2034 only - Dec 17 2:00 0 -
1101  {
1102  2034 /*fromYear*/,
1103  2034 /*toYear*/,
1104  12 /*inMonth*/,
1105  0 /*onDayOfWeek*/,
1106  17 /*onDayOfMonth*/,
1107  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1108  480 /*atTimeCode (7200/15)*/,
1109  0 /*deltaMinutes*/,
1110  0 /*letterIndex ("")*/,
1111  },
1112  // Rule Morocco 2035 only - Oct 28 3:00 -1:00 -
1113  {
1114  2035 /*fromYear*/,
1115  2035 /*toYear*/,
1116  10 /*inMonth*/,
1117  0 /*onDayOfWeek*/,
1118  28 /*onDayOfMonth*/,
1119  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1120  720 /*atTimeCode (10800/15)*/,
1121  -60 /*deltaMinutes*/,
1122  0 /*letterIndex ("")*/,
1123  },
1124  // Rule Morocco 2035 only - Dec 9 2:00 0 -
1125  {
1126  2035 /*fromYear*/,
1127  2035 /*toYear*/,
1128  12 /*inMonth*/,
1129  0 /*onDayOfWeek*/,
1130  9 /*onDayOfMonth*/,
1131  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1132  480 /*atTimeCode (7200/15)*/,
1133  0 /*deltaMinutes*/,
1134  0 /*letterIndex ("")*/,
1135  },
1136  // Rule Morocco 2036 only - Oct 19 3:00 -1:00 -
1137  {
1138  2036 /*fromYear*/,
1139  2036 /*toYear*/,
1140  10 /*inMonth*/,
1141  0 /*onDayOfWeek*/,
1142  19 /*onDayOfMonth*/,
1143  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1144  720 /*atTimeCode (10800/15)*/,
1145  -60 /*deltaMinutes*/,
1146  0 /*letterIndex ("")*/,
1147  },
1148  // Rule Morocco 2036 only - Nov 23 2:00 0 -
1149  {
1150  2036 /*fromYear*/,
1151  2036 /*toYear*/,
1152  11 /*inMonth*/,
1153  0 /*onDayOfWeek*/,
1154  23 /*onDayOfMonth*/,
1155  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1156  480 /*atTimeCode (7200/15)*/,
1157  0 /*deltaMinutes*/,
1158  0 /*letterIndex ("")*/,
1159  },
1160  // Rule Morocco 2037 only - Oct 4 3:00 -1:00 -
1161  {
1162  2037 /*fromYear*/,
1163  2037 /*toYear*/,
1164  10 /*inMonth*/,
1165  0 /*onDayOfWeek*/,
1166  4 /*onDayOfMonth*/,
1167  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1168  720 /*atTimeCode (10800/15)*/,
1169  -60 /*deltaMinutes*/,
1170  0 /*letterIndex ("")*/,
1171  },
1172  // Rule Morocco 2037 only - Nov 15 2:00 0 -
1173  {
1174  2037 /*fromYear*/,
1175  2037 /*toYear*/,
1176  11 /*inMonth*/,
1177  0 /*onDayOfWeek*/,
1178  15 /*onDayOfMonth*/,
1179  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1180  480 /*atTimeCode (7200/15)*/,
1181  0 /*deltaMinutes*/,
1182  0 /*letterIndex ("")*/,
1183  },
1184  // Rule Morocco 2038 only - Sep 26 3:00 -1:00 -
1185  {
1186  2038 /*fromYear*/,
1187  2038 /*toYear*/,
1188  9 /*inMonth*/,
1189  0 /*onDayOfWeek*/,
1190  26 /*onDayOfMonth*/,
1191  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1192  720 /*atTimeCode (10800/15)*/,
1193  -60 /*deltaMinutes*/,
1194  0 /*letterIndex ("")*/,
1195  },
1196  // Rule Morocco 2038 only - Oct 31 2:00 0 -
1197  {
1198  2038 /*fromYear*/,
1199  2038 /*toYear*/,
1200  10 /*inMonth*/,
1201  0 /*onDayOfWeek*/,
1202  31 /*onDayOfMonth*/,
1203  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1204  480 /*atTimeCode (7200/15)*/,
1205  0 /*deltaMinutes*/,
1206  0 /*letterIndex ("")*/,
1207  },
1208  // Rule Morocco 2039 only - Sep 18 3:00 -1:00 -
1209  {
1210  2039 /*fromYear*/,
1211  2039 /*toYear*/,
1212  9 /*inMonth*/,
1213  0 /*onDayOfWeek*/,
1214  18 /*onDayOfMonth*/,
1215  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1216  720 /*atTimeCode (10800/15)*/,
1217  -60 /*deltaMinutes*/,
1218  0 /*letterIndex ("")*/,
1219  },
1220  // Rule Morocco 2039 only - Oct 23 2:00 0 -
1221  {
1222  2039 /*fromYear*/,
1223  2039 /*toYear*/,
1224  10 /*inMonth*/,
1225  0 /*onDayOfWeek*/,
1226  23 /*onDayOfMonth*/,
1227  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1228  480 /*atTimeCode (7200/15)*/,
1229  0 /*deltaMinutes*/,
1230  0 /*letterIndex ("")*/,
1231  },
1232  // Rule Morocco 2040 only - Sep 2 3:00 -1:00 -
1233  {
1234  2040 /*fromYear*/,
1235  2040 /*toYear*/,
1236  9 /*inMonth*/,
1237  0 /*onDayOfWeek*/,
1238  2 /*onDayOfMonth*/,
1239  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1240  720 /*atTimeCode (10800/15)*/,
1241  -60 /*deltaMinutes*/,
1242  0 /*letterIndex ("")*/,
1243  },
1244  // Rule Morocco 2040 only - Oct 14 2:00 0 -
1245  {
1246  2040 /*fromYear*/,
1247  2040 /*toYear*/,
1248  10 /*inMonth*/,
1249  0 /*onDayOfWeek*/,
1250  14 /*onDayOfMonth*/,
1251  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1252  480 /*atTimeCode (7200/15)*/,
1253  0 /*deltaMinutes*/,
1254  0 /*letterIndex ("")*/,
1255  },
1256  // Rule Morocco 2041 only - Aug 25 3:00 -1:00 -
1257  {
1258  2041 /*fromYear*/,
1259  2041 /*toYear*/,
1260  8 /*inMonth*/,
1261  0 /*onDayOfWeek*/,
1262  25 /*onDayOfMonth*/,
1263  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1264  720 /*atTimeCode (10800/15)*/,
1265  -60 /*deltaMinutes*/,
1266  0 /*letterIndex ("")*/,
1267  },
1268  // Rule Morocco 2041 only - Sep 29 2:00 0 -
1269  {
1270  2041 /*fromYear*/,
1271  2041 /*toYear*/,
1272  9 /*inMonth*/,
1273  0 /*onDayOfWeek*/,
1274  29 /*onDayOfMonth*/,
1275  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1276  480 /*atTimeCode (7200/15)*/,
1277  0 /*deltaMinutes*/,
1278  0 /*letterIndex ("")*/,
1279  },
1280  // Rule Morocco 2042 only - Aug 10 3:00 -1:00 -
1281  {
1282  2042 /*fromYear*/,
1283  2042 /*toYear*/,
1284  8 /*inMonth*/,
1285  0 /*onDayOfWeek*/,
1286  10 /*onDayOfMonth*/,
1287  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1288  720 /*atTimeCode (10800/15)*/,
1289  -60 /*deltaMinutes*/,
1290  0 /*letterIndex ("")*/,
1291  },
1292  // Rule Morocco 2042 only - Sep 21 2:00 0 -
1293  {
1294  2042 /*fromYear*/,
1295  2042 /*toYear*/,
1296  9 /*inMonth*/,
1297  0 /*onDayOfWeek*/,
1298  21 /*onDayOfMonth*/,
1299  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1300  480 /*atTimeCode (7200/15)*/,
1301  0 /*deltaMinutes*/,
1302  0 /*letterIndex ("")*/,
1303  },
1304  // Rule Morocco 2043 only - Aug 2 3:00 -1:00 -
1305  {
1306  2043 /*fromYear*/,
1307  2043 /*toYear*/,
1308  8 /*inMonth*/,
1309  0 /*onDayOfWeek*/,
1310  2 /*onDayOfMonth*/,
1311  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1312  720 /*atTimeCode (10800/15)*/,
1313  -60 /*deltaMinutes*/,
1314  0 /*letterIndex ("")*/,
1315  },
1316  // Rule Morocco 2043 only - Sep 13 2:00 0 -
1317  {
1318  2043 /*fromYear*/,
1319  2043 /*toYear*/,
1320  9 /*inMonth*/,
1321  0 /*onDayOfWeek*/,
1322  13 /*onDayOfMonth*/,
1323  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1324  480 /*atTimeCode (7200/15)*/,
1325  0 /*deltaMinutes*/,
1326  0 /*letterIndex ("")*/,
1327  },
1328  // Rule Morocco 2044 only - Jul 24 3:00 -1:00 -
1329  {
1330  2044 /*fromYear*/,
1331  2044 /*toYear*/,
1332  7 /*inMonth*/,
1333  0 /*onDayOfWeek*/,
1334  24 /*onDayOfMonth*/,
1335  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1336  720 /*atTimeCode (10800/15)*/,
1337  -60 /*deltaMinutes*/,
1338  0 /*letterIndex ("")*/,
1339  },
1340  // Rule Morocco 2044 only - Aug 28 2:00 0 -
1341  {
1342  2044 /*fromYear*/,
1343  2044 /*toYear*/,
1344  8 /*inMonth*/,
1345  0 /*onDayOfWeek*/,
1346  28 /*onDayOfMonth*/,
1347  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1348  480 /*atTimeCode (7200/15)*/,
1349  0 /*deltaMinutes*/,
1350  0 /*letterIndex ("")*/,
1351  },
1352  // Rule Morocco 2045 only - Jul 9 3:00 -1:00 -
1353  {
1354  2045 /*fromYear*/,
1355  2045 /*toYear*/,
1356  7 /*inMonth*/,
1357  0 /*onDayOfWeek*/,
1358  9 /*onDayOfMonth*/,
1359  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1360  720 /*atTimeCode (10800/15)*/,
1361  -60 /*deltaMinutes*/,
1362  0 /*letterIndex ("")*/,
1363  },
1364  // Rule Morocco 2045 only - Aug 20 2:00 0 -
1365  {
1366  2045 /*fromYear*/,
1367  2045 /*toYear*/,
1368  8 /*inMonth*/,
1369  0 /*onDayOfWeek*/,
1370  20 /*onDayOfMonth*/,
1371  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1372  480 /*atTimeCode (7200/15)*/,
1373  0 /*deltaMinutes*/,
1374  0 /*letterIndex ("")*/,
1375  },
1376  // Rule Morocco 2046 only - Jul 1 3:00 -1:00 -
1377  {
1378  2046 /*fromYear*/,
1379  2046 /*toYear*/,
1380  7 /*inMonth*/,
1381  0 /*onDayOfWeek*/,
1382  1 /*onDayOfMonth*/,
1383  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1384  720 /*atTimeCode (10800/15)*/,
1385  -60 /*deltaMinutes*/,
1386  0 /*letterIndex ("")*/,
1387  },
1388  // Rule Morocco 2046 only - Aug 5 2:00 0 -
1389  {
1390  2046 /*fromYear*/,
1391  2046 /*toYear*/,
1392  8 /*inMonth*/,
1393  0 /*onDayOfWeek*/,
1394  5 /*onDayOfMonth*/,
1395  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1396  480 /*atTimeCode (7200/15)*/,
1397  0 /*deltaMinutes*/,
1398  0 /*letterIndex ("")*/,
1399  },
1400  // Rule Morocco 2047 only - Jun 23 3:00 -1:00 -
1401  {
1402  2047 /*fromYear*/,
1403  2047 /*toYear*/,
1404  6 /*inMonth*/,
1405  0 /*onDayOfWeek*/,
1406  23 /*onDayOfMonth*/,
1407  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1408  720 /*atTimeCode (10800/15)*/,
1409  -60 /*deltaMinutes*/,
1410  0 /*letterIndex ("")*/,
1411  },
1412  // Rule Morocco 2047 only - Jul 28 2:00 0 -
1413  {
1414  2047 /*fromYear*/,
1415  2047 /*toYear*/,
1416  7 /*inMonth*/,
1417  0 /*onDayOfWeek*/,
1418  28 /*onDayOfMonth*/,
1419  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1420  480 /*atTimeCode (7200/15)*/,
1421  0 /*deltaMinutes*/,
1422  0 /*letterIndex ("")*/,
1423  },
1424  // Rule Morocco 2048 only - Jun 7 3:00 -1:00 -
1425  {
1426  2048 /*fromYear*/,
1427  2048 /*toYear*/,
1428  6 /*inMonth*/,
1429  0 /*onDayOfWeek*/,
1430  7 /*onDayOfMonth*/,
1431  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1432  720 /*atTimeCode (10800/15)*/,
1433  -60 /*deltaMinutes*/,
1434  0 /*letterIndex ("")*/,
1435  },
1436  // Rule Morocco 2048 only - Jul 19 2:00 0 -
1437  {
1438  2048 /*fromYear*/,
1439  2048 /*toYear*/,
1440  7 /*inMonth*/,
1441  0 /*onDayOfWeek*/,
1442  19 /*onDayOfMonth*/,
1443  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1444  480 /*atTimeCode (7200/15)*/,
1445  0 /*deltaMinutes*/,
1446  0 /*letterIndex ("")*/,
1447  },
1448  // Rule Morocco 2049 only - May 30 3:00 -1:00 -
1449  {
1450  2049 /*fromYear*/,
1451  2049 /*toYear*/,
1452  5 /*inMonth*/,
1453  0 /*onDayOfWeek*/,
1454  30 /*onDayOfMonth*/,
1455  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1456  720 /*atTimeCode (10800/15)*/,
1457  -60 /*deltaMinutes*/,
1458  0 /*letterIndex ("")*/,
1459  },
1460  // Rule Morocco 2049 only - Jul 4 2:00 0 -
1461  {
1462  2049 /*fromYear*/,
1463  2049 /*toYear*/,
1464  7 /*inMonth*/,
1465  0 /*onDayOfWeek*/,
1466  4 /*onDayOfMonth*/,
1467  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1468  480 /*atTimeCode (7200/15)*/,
1469  0 /*deltaMinutes*/,
1470  0 /*letterIndex ("")*/,
1471  },
1472  // Rule Morocco 2050 only - May 15 3:00 -1:00 -
1473  {
1474  2050 /*fromYear*/,
1475  2050 /*toYear*/,
1476  5 /*inMonth*/,
1477  0 /*onDayOfWeek*/,
1478  15 /*onDayOfMonth*/,
1479  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1480  720 /*atTimeCode (10800/15)*/,
1481  -60 /*deltaMinutes*/,
1482  0 /*letterIndex ("")*/,
1483  },
1484  // Rule Morocco 2050 only - Jun 26 2:00 0 -
1485  {
1486  2050 /*fromYear*/,
1487  2050 /*toYear*/,
1488  6 /*inMonth*/,
1489  0 /*onDayOfWeek*/,
1490  26 /*onDayOfMonth*/,
1491  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1492  480 /*atTimeCode (7200/15)*/,
1493  0 /*deltaMinutes*/,
1494  0 /*letterIndex ("")*/,
1495  },
1496  // Rule Morocco 2051 only - May 7 3:00 -1:00 -
1497  {
1498  2051 /*fromYear*/,
1499  2051 /*toYear*/,
1500  5 /*inMonth*/,
1501  0 /*onDayOfWeek*/,
1502  7 /*onDayOfMonth*/,
1503  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1504  720 /*atTimeCode (10800/15)*/,
1505  -60 /*deltaMinutes*/,
1506  0 /*letterIndex ("")*/,
1507  },
1508  // Rule Morocco 2051 only - Jun 18 2:00 0 -
1509  {
1510  2051 /*fromYear*/,
1511  2051 /*toYear*/,
1512  6 /*inMonth*/,
1513  0 /*onDayOfWeek*/,
1514  18 /*onDayOfMonth*/,
1515  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1516  480 /*atTimeCode (7200/15)*/,
1517  0 /*deltaMinutes*/,
1518  0 /*letterIndex ("")*/,
1519  },
1520  // Rule Morocco 2052 only - Apr 28 3:00 -1:00 -
1521  {
1522  2052 /*fromYear*/,
1523  2052 /*toYear*/,
1524  4 /*inMonth*/,
1525  0 /*onDayOfWeek*/,
1526  28 /*onDayOfMonth*/,
1527  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1528  720 /*atTimeCode (10800/15)*/,
1529  -60 /*deltaMinutes*/,
1530  0 /*letterIndex ("")*/,
1531  },
1532  // Rule Morocco 2052 only - Jun 2 2:00 0 -
1533  {
1534  2052 /*fromYear*/,
1535  2052 /*toYear*/,
1536  6 /*inMonth*/,
1537  0 /*onDayOfWeek*/,
1538  2 /*onDayOfMonth*/,
1539  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1540  480 /*atTimeCode (7200/15)*/,
1541  0 /*deltaMinutes*/,
1542  0 /*letterIndex ("")*/,
1543  },
1544  // Rule Morocco 2053 only - Apr 13 3:00 -1:00 -
1545  {
1546  2053 /*fromYear*/,
1547  2053 /*toYear*/,
1548  4 /*inMonth*/,
1549  0 /*onDayOfWeek*/,
1550  13 /*onDayOfMonth*/,
1551  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1552  720 /*atTimeCode (10800/15)*/,
1553  -60 /*deltaMinutes*/,
1554  0 /*letterIndex ("")*/,
1555  },
1556  // Rule Morocco 2053 only - May 25 2:00 0 -
1557  {
1558  2053 /*fromYear*/,
1559  2053 /*toYear*/,
1560  5 /*inMonth*/,
1561  0 /*onDayOfWeek*/,
1562  25 /*onDayOfMonth*/,
1563  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1564  480 /*atTimeCode (7200/15)*/,
1565  0 /*deltaMinutes*/,
1566  0 /*letterIndex ("")*/,
1567  },
1568  // Rule Morocco 2054 only - Apr 5 3:00 -1:00 -
1569  {
1570  2054 /*fromYear*/,
1571  2054 /*toYear*/,
1572  4 /*inMonth*/,
1573  0 /*onDayOfWeek*/,
1574  5 /*onDayOfMonth*/,
1575  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1576  720 /*atTimeCode (10800/15)*/,
1577  -60 /*deltaMinutes*/,
1578  0 /*letterIndex ("")*/,
1579  },
1580  // Rule Morocco 2054 only - May 10 2:00 0 -
1581  {
1582  2054 /*fromYear*/,
1583  2054 /*toYear*/,
1584  5 /*inMonth*/,
1585  0 /*onDayOfWeek*/,
1586  10 /*onDayOfMonth*/,
1587  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1588  480 /*atTimeCode (7200/15)*/,
1589  0 /*deltaMinutes*/,
1590  0 /*letterIndex ("")*/,
1591  },
1592  // Rule Morocco 2055 only - Mar 28 3:00 -1:00 -
1593  {
1594  2055 /*fromYear*/,
1595  2055 /*toYear*/,
1596  3 /*inMonth*/,
1597  0 /*onDayOfWeek*/,
1598  28 /*onDayOfMonth*/,
1599  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1600  720 /*atTimeCode (10800/15)*/,
1601  -60 /*deltaMinutes*/,
1602  0 /*letterIndex ("")*/,
1603  },
1604  // Rule Morocco 2055 only - May 2 2:00 0 -
1605  {
1606  2055 /*fromYear*/,
1607  2055 /*toYear*/,
1608  5 /*inMonth*/,
1609  0 /*onDayOfWeek*/,
1610  2 /*onDayOfMonth*/,
1611  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1612  480 /*atTimeCode (7200/15)*/,
1613  0 /*deltaMinutes*/,
1614  0 /*letterIndex ("")*/,
1615  },
1616  // Rule Morocco 2056 only - Mar 12 3:00 -1:00 -
1617  {
1618  2056 /*fromYear*/,
1619  2056 /*toYear*/,
1620  3 /*inMonth*/,
1621  0 /*onDayOfWeek*/,
1622  12 /*onDayOfMonth*/,
1623  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1624  720 /*atTimeCode (10800/15)*/,
1625  -60 /*deltaMinutes*/,
1626  0 /*letterIndex ("")*/,
1627  },
1628  // Rule Morocco 2056 only - Apr 23 2:00 0 -
1629  {
1630  2056 /*fromYear*/,
1631  2056 /*toYear*/,
1632  4 /*inMonth*/,
1633  0 /*onDayOfWeek*/,
1634  23 /*onDayOfMonth*/,
1635  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1636  480 /*atTimeCode (7200/15)*/,
1637  0 /*deltaMinutes*/,
1638  0 /*letterIndex ("")*/,
1639  },
1640  // Rule Morocco 2057 only - Mar 4 3:00 -1:00 -
1641  {
1642  2057 /*fromYear*/,
1643  2057 /*toYear*/,
1644  3 /*inMonth*/,
1645  0 /*onDayOfWeek*/,
1646  4 /*onDayOfMonth*/,
1647  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1648  720 /*atTimeCode (10800/15)*/,
1649  -60 /*deltaMinutes*/,
1650  0 /*letterIndex ("")*/,
1651  },
1652  // Rule Morocco 2057 only - Apr 8 2:00 0 -
1653  {
1654  2057 /*fromYear*/,
1655  2057 /*toYear*/,
1656  4 /*inMonth*/,
1657  0 /*onDayOfWeek*/,
1658  8 /*onDayOfMonth*/,
1659  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1660  480 /*atTimeCode (7200/15)*/,
1661  0 /*deltaMinutes*/,
1662  0 /*letterIndex ("")*/,
1663  },
1664  // Rule Morocco 2058 only - Feb 17 3:00 -1:00 -
1665  {
1666  2058 /*fromYear*/,
1667  2058 /*toYear*/,
1668  2 /*inMonth*/,
1669  0 /*onDayOfWeek*/,
1670  17 /*onDayOfMonth*/,
1671  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1672  720 /*atTimeCode (10800/15)*/,
1673  -60 /*deltaMinutes*/,
1674  0 /*letterIndex ("")*/,
1675  },
1676  // Rule Morocco 2058 only - Mar 31 2:00 0 -
1677  {
1678  2058 /*fromYear*/,
1679  2058 /*toYear*/,
1680  3 /*inMonth*/,
1681  0 /*onDayOfWeek*/,
1682  31 /*onDayOfMonth*/,
1683  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1684  480 /*atTimeCode (7200/15)*/,
1685  0 /*deltaMinutes*/,
1686  0 /*letterIndex ("")*/,
1687  },
1688  // Rule Morocco 2059 only - Feb 9 3:00 -1:00 -
1689  {
1690  2059 /*fromYear*/,
1691  2059 /*toYear*/,
1692  2 /*inMonth*/,
1693  0 /*onDayOfWeek*/,
1694  9 /*onDayOfMonth*/,
1695  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1696  720 /*atTimeCode (10800/15)*/,
1697  -60 /*deltaMinutes*/,
1698  0 /*letterIndex ("")*/,
1699  },
1700  // Rule Morocco 2059 only - Mar 23 2:00 0 -
1701  {
1702  2059 /*fromYear*/,
1703  2059 /*toYear*/,
1704  3 /*inMonth*/,
1705  0 /*onDayOfWeek*/,
1706  23 /*onDayOfMonth*/,
1707  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1708  480 /*atTimeCode (7200/15)*/,
1709  0 /*deltaMinutes*/,
1710  0 /*letterIndex ("")*/,
1711  },
1712  // Rule Morocco 2060 only - Feb 1 3:00 -1:00 -
1713  {
1714  2060 /*fromYear*/,
1715  2060 /*toYear*/,
1716  2 /*inMonth*/,
1717  0 /*onDayOfWeek*/,
1718  1 /*onDayOfMonth*/,
1719  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1720  720 /*atTimeCode (10800/15)*/,
1721  -60 /*deltaMinutes*/,
1722  0 /*letterIndex ("")*/,
1723  },
1724  // Rule Morocco 2060 only - Mar 7 2:00 0 -
1725  {
1726  2060 /*fromYear*/,
1727  2060 /*toYear*/,
1728  3 /*inMonth*/,
1729  0 /*onDayOfWeek*/,
1730  7 /*onDayOfMonth*/,
1731  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1732  480 /*atTimeCode (7200/15)*/,
1733  0 /*deltaMinutes*/,
1734  0 /*letterIndex ("")*/,
1735  },
1736  // Rule Morocco 2061 only - Jan 16 3:00 -1:00 -
1737  {
1738  2061 /*fromYear*/,
1739  2061 /*toYear*/,
1740  1 /*inMonth*/,
1741  0 /*onDayOfWeek*/,
1742  16 /*onDayOfMonth*/,
1743  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1744  720 /*atTimeCode (10800/15)*/,
1745  -60 /*deltaMinutes*/,
1746  0 /*letterIndex ("")*/,
1747  },
1748  // Rule Morocco 2061 only - Feb 27 2:00 0 -
1749  {
1750  2061 /*fromYear*/,
1751  2061 /*toYear*/,
1752  2 /*inMonth*/,
1753  0 /*onDayOfWeek*/,
1754  27 /*onDayOfMonth*/,
1755  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1756  480 /*atTimeCode (7200/15)*/,
1757  0 /*deltaMinutes*/,
1758  0 /*letterIndex ("")*/,
1759  },
1760  // Rule Morocco 2062 only - Jan 8 3:00 -1:00 -
1761  {
1762  2062 /*fromYear*/,
1763  2062 /*toYear*/,
1764  1 /*inMonth*/,
1765  0 /*onDayOfWeek*/,
1766  8 /*onDayOfMonth*/,
1767  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1768  720 /*atTimeCode (10800/15)*/,
1769  -60 /*deltaMinutes*/,
1770  0 /*letterIndex ("")*/,
1771  },
1772  // Rule Morocco 2062 only - Feb 12 2:00 0 -
1773  {
1774  2062 /*fromYear*/,
1775  2062 /*toYear*/,
1776  2 /*inMonth*/,
1777  0 /*onDayOfWeek*/,
1778  12 /*onDayOfMonth*/,
1779  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1780  480 /*atTimeCode (7200/15)*/,
1781  0 /*deltaMinutes*/,
1782  0 /*letterIndex ("")*/,
1783  },
1784  // Rule Morocco 2062 only - Dec 31 3:00 -1:00 -
1785  {
1786  2062 /*fromYear*/,
1787  2062 /*toYear*/,
1788  12 /*inMonth*/,
1789  0 /*onDayOfWeek*/,
1790  31 /*onDayOfMonth*/,
1791  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1792  720 /*atTimeCode (10800/15)*/,
1793  -60 /*deltaMinutes*/,
1794  0 /*letterIndex ("")*/,
1795  },
1796  // Rule Morocco 2063 only - Feb 4 2:00 0 -
1797  {
1798  2063 /*fromYear*/,
1799  2063 /*toYear*/,
1800  2 /*inMonth*/,
1801  0 /*onDayOfWeek*/,
1802  4 /*onDayOfMonth*/,
1803  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1804  480 /*atTimeCode (7200/15)*/,
1805  0 /*deltaMinutes*/,
1806  0 /*letterIndex ("")*/,
1807  },
1808  // Rule Morocco 2063 only - Dec 16 3:00 -1:00 -
1809  {
1810  2063 /*fromYear*/,
1811  2063 /*toYear*/,
1812  12 /*inMonth*/,
1813  0 /*onDayOfWeek*/,
1814  16 /*onDayOfMonth*/,
1815  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1816  720 /*atTimeCode (10800/15)*/,
1817  -60 /*deltaMinutes*/,
1818  0 /*letterIndex ("")*/,
1819  },
1820  // Rule Morocco 2064 only - Jan 27 2:00 0 -
1821  {
1822  2064 /*fromYear*/,
1823  2064 /*toYear*/,
1824  1 /*inMonth*/,
1825  0 /*onDayOfWeek*/,
1826  27 /*onDayOfMonth*/,
1827  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1828  480 /*atTimeCode (7200/15)*/,
1829  0 /*deltaMinutes*/,
1830  0 /*letterIndex ("")*/,
1831  },
1832  // Rule Morocco 2064 only - Dec 7 3:00 -1:00 -
1833  {
1834  2064 /*fromYear*/,
1835  2064 /*toYear*/,
1836  12 /*inMonth*/,
1837  0 /*onDayOfWeek*/,
1838  7 /*onDayOfMonth*/,
1839  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1840  720 /*atTimeCode (10800/15)*/,
1841  -60 /*deltaMinutes*/,
1842  0 /*letterIndex ("")*/,
1843  },
1844  // Rule Morocco 2065 only - Jan 11 2:00 0 -
1845  {
1846  2065 /*fromYear*/,
1847  2065 /*toYear*/,
1848  1 /*inMonth*/,
1849  0 /*onDayOfWeek*/,
1850  11 /*onDayOfMonth*/,
1851  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1852  480 /*atTimeCode (7200/15)*/,
1853  0 /*deltaMinutes*/,
1854  0 /*letterIndex ("")*/,
1855  },
1856  // Rule Morocco 2065 only - Nov 22 3:00 -1:00 -
1857  {
1858  2065 /*fromYear*/,
1859  2065 /*toYear*/,
1860  11 /*inMonth*/,
1861  0 /*onDayOfWeek*/,
1862  22 /*onDayOfMonth*/,
1863  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1864  720 /*atTimeCode (10800/15)*/,
1865  -60 /*deltaMinutes*/,
1866  0 /*letterIndex ("")*/,
1867  },
1868  // Rule Morocco 2066 only - Jan 3 2:00 0 -
1869  {
1870  2066 /*fromYear*/,
1871  2066 /*toYear*/,
1872  1 /*inMonth*/,
1873  0 /*onDayOfWeek*/,
1874  3 /*onDayOfMonth*/,
1875  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1876  480 /*atTimeCode (7200/15)*/,
1877  0 /*deltaMinutes*/,
1878  0 /*letterIndex ("")*/,
1879  },
1880  // Rule Morocco 2066 only - Nov 14 3:00 -1:00 -
1881  {
1882  2066 /*fromYear*/,
1883  2066 /*toYear*/,
1884  11 /*inMonth*/,
1885  0 /*onDayOfWeek*/,
1886  14 /*onDayOfMonth*/,
1887  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1888  720 /*atTimeCode (10800/15)*/,
1889  -60 /*deltaMinutes*/,
1890  0 /*letterIndex ("")*/,
1891  },
1892  // Rule Morocco 2066 only - Dec 26 2:00 0 -
1893  {
1894  2066 /*fromYear*/,
1895  2066 /*toYear*/,
1896  12 /*inMonth*/,
1897  0 /*onDayOfWeek*/,
1898  26 /*onDayOfMonth*/,
1899  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1900  480 /*atTimeCode (7200/15)*/,
1901  0 /*deltaMinutes*/,
1902  0 /*letterIndex ("")*/,
1903  },
1904  // Rule Morocco 2067 only - Nov 6 3:00 -1:00 -
1905  {
1906  2067 /*fromYear*/,
1907  2067 /*toYear*/,
1908  11 /*inMonth*/,
1909  0 /*onDayOfWeek*/,
1910  6 /*onDayOfMonth*/,
1911  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1912  720 /*atTimeCode (10800/15)*/,
1913  -60 /*deltaMinutes*/,
1914  0 /*letterIndex ("")*/,
1915  },
1916  // Rule Morocco 2067 only - Dec 11 2:00 0 -
1917  {
1918  2067 /*fromYear*/,
1919  2067 /*toYear*/,
1920  12 /*inMonth*/,
1921  0 /*onDayOfWeek*/,
1922  11 /*onDayOfMonth*/,
1923  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1924  480 /*atTimeCode (7200/15)*/,
1925  0 /*deltaMinutes*/,
1926  0 /*letterIndex ("")*/,
1927  },
1928  // Rule Morocco 2068 only - Oct 21 3:00 -1:00 -
1929  {
1930  2068 /*fromYear*/,
1931  2068 /*toYear*/,
1932  10 /*inMonth*/,
1933  0 /*onDayOfWeek*/,
1934  21 /*onDayOfMonth*/,
1935  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1936  720 /*atTimeCode (10800/15)*/,
1937  -60 /*deltaMinutes*/,
1938  0 /*letterIndex ("")*/,
1939  },
1940  // Rule Morocco 2068 only - Dec 2 2:00 0 -
1941  {
1942  2068 /*fromYear*/,
1943  2068 /*toYear*/,
1944  12 /*inMonth*/,
1945  0 /*onDayOfWeek*/,
1946  2 /*onDayOfMonth*/,
1947  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1948  480 /*atTimeCode (7200/15)*/,
1949  0 /*deltaMinutes*/,
1950  0 /*letterIndex ("")*/,
1951  },
1952  // Rule Morocco 2069 only - Oct 13 3:00 -1:00 -
1953  {
1954  2069 /*fromYear*/,
1955  2069 /*toYear*/,
1956  10 /*inMonth*/,
1957  0 /*onDayOfWeek*/,
1958  13 /*onDayOfMonth*/,
1959  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1960  720 /*atTimeCode (10800/15)*/,
1961  -60 /*deltaMinutes*/,
1962  0 /*letterIndex ("")*/,
1963  },
1964  // Rule Morocco 2069 only - Nov 17 2:00 0 -
1965  {
1966  2069 /*fromYear*/,
1967  2069 /*toYear*/,
1968  11 /*inMonth*/,
1969  0 /*onDayOfWeek*/,
1970  17 /*onDayOfMonth*/,
1971  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1972  480 /*atTimeCode (7200/15)*/,
1973  0 /*deltaMinutes*/,
1974  0 /*letterIndex ("")*/,
1975  },
1976  // Rule Morocco 2070 only - Oct 5 3:00 -1:00 -
1977  {
1978  2070 /*fromYear*/,
1979  2070 /*toYear*/,
1980  10 /*inMonth*/,
1981  0 /*onDayOfWeek*/,
1982  5 /*onDayOfMonth*/,
1983  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1984  720 /*atTimeCode (10800/15)*/,
1985  -60 /*deltaMinutes*/,
1986  0 /*letterIndex ("")*/,
1987  },
1988  // Rule Morocco 2070 only - Nov 9 2:00 0 -
1989  {
1990  2070 /*fromYear*/,
1991  2070 /*toYear*/,
1992  11 /*inMonth*/,
1993  0 /*onDayOfWeek*/,
1994  9 /*onDayOfMonth*/,
1995  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
1996  480 /*atTimeCode (7200/15)*/,
1997  0 /*deltaMinutes*/,
1998  0 /*letterIndex ("")*/,
1999  },
2000  // Rule Morocco 2071 only - Sep 20 3:00 -1:00 -
2001  {
2002  2071 /*fromYear*/,
2003  2071 /*toYear*/,
2004  9 /*inMonth*/,
2005  0 /*onDayOfWeek*/,
2006  20 /*onDayOfMonth*/,
2007  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2008  720 /*atTimeCode (10800/15)*/,
2009  -60 /*deltaMinutes*/,
2010  0 /*letterIndex ("")*/,
2011  },
2012  // Rule Morocco 2071 only - Nov 1 2:00 0 -
2013  {
2014  2071 /*fromYear*/,
2015  2071 /*toYear*/,
2016  11 /*inMonth*/,
2017  0 /*onDayOfWeek*/,
2018  1 /*onDayOfMonth*/,
2019  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2020  480 /*atTimeCode (7200/15)*/,
2021  0 /*deltaMinutes*/,
2022  0 /*letterIndex ("")*/,
2023  },
2024  // Rule Morocco 2072 only - Sep 11 3:00 -1:00 -
2025  {
2026  2072 /*fromYear*/,
2027  2072 /*toYear*/,
2028  9 /*inMonth*/,
2029  0 /*onDayOfWeek*/,
2030  11 /*onDayOfMonth*/,
2031  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2032  720 /*atTimeCode (10800/15)*/,
2033  -60 /*deltaMinutes*/,
2034  0 /*letterIndex ("")*/,
2035  },
2036  // Rule Morocco 2072 only - Oct 16 2:00 0 -
2037  {
2038  2072 /*fromYear*/,
2039  2072 /*toYear*/,
2040  10 /*inMonth*/,
2041  0 /*onDayOfWeek*/,
2042  16 /*onDayOfMonth*/,
2043  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2044  480 /*atTimeCode (7200/15)*/,
2045  0 /*deltaMinutes*/,
2046  0 /*letterIndex ("")*/,
2047  },
2048  // Rule Morocco 2073 only - Aug 27 3:00 -1:00 -
2049  {
2050  2073 /*fromYear*/,
2051  2073 /*toYear*/,
2052  8 /*inMonth*/,
2053  0 /*onDayOfWeek*/,
2054  27 /*onDayOfMonth*/,
2055  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2056  720 /*atTimeCode (10800/15)*/,
2057  -60 /*deltaMinutes*/,
2058  0 /*letterIndex ("")*/,
2059  },
2060  // Rule Morocco 2073 only - Oct 8 2:00 0 -
2061  {
2062  2073 /*fromYear*/,
2063  2073 /*toYear*/,
2064  10 /*inMonth*/,
2065  0 /*onDayOfWeek*/,
2066  8 /*onDayOfMonth*/,
2067  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2068  480 /*atTimeCode (7200/15)*/,
2069  0 /*deltaMinutes*/,
2070  0 /*letterIndex ("")*/,
2071  },
2072  // Rule Morocco 2074 only - Aug 19 3:00 -1:00 -
2073  {
2074  2074 /*fromYear*/,
2075  2074 /*toYear*/,
2076  8 /*inMonth*/,
2077  0 /*onDayOfWeek*/,
2078  19 /*onDayOfMonth*/,
2079  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2080  720 /*atTimeCode (10800/15)*/,
2081  -60 /*deltaMinutes*/,
2082  0 /*letterIndex ("")*/,
2083  },
2084  // Rule Morocco 2074 only - Sep 30 2:00 0 -
2085  {
2086  2074 /*fromYear*/,
2087  2074 /*toYear*/,
2088  9 /*inMonth*/,
2089  0 /*onDayOfWeek*/,
2090  30 /*onDayOfMonth*/,
2091  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2092  480 /*atTimeCode (7200/15)*/,
2093  0 /*deltaMinutes*/,
2094  0 /*letterIndex ("")*/,
2095  },
2096  // Rule Morocco 2075 only - Aug 11 3:00 -1:00 -
2097  {
2098  2075 /*fromYear*/,
2099  2075 /*toYear*/,
2100  8 /*inMonth*/,
2101  0 /*onDayOfWeek*/,
2102  11 /*onDayOfMonth*/,
2103  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2104  720 /*atTimeCode (10800/15)*/,
2105  -60 /*deltaMinutes*/,
2106  0 /*letterIndex ("")*/,
2107  },
2108  // Rule Morocco 2075 only - Sep 15 2:00 0 -
2109  {
2110  2075 /*fromYear*/,
2111  2075 /*toYear*/,
2112  9 /*inMonth*/,
2113  0 /*onDayOfWeek*/,
2114  15 /*onDayOfMonth*/,
2115  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2116  480 /*atTimeCode (7200/15)*/,
2117  0 /*deltaMinutes*/,
2118  0 /*letterIndex ("")*/,
2119  },
2120  // Rule Morocco 2076 only - Jul 26 3:00 -1:00 -
2121  {
2122  2076 /*fromYear*/,
2123  2076 /*toYear*/,
2124  7 /*inMonth*/,
2125  0 /*onDayOfWeek*/,
2126  26 /*onDayOfMonth*/,
2127  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2128  720 /*atTimeCode (10800/15)*/,
2129  -60 /*deltaMinutes*/,
2130  0 /*letterIndex ("")*/,
2131  },
2132  // Rule Morocco 2076 only - Sep 6 2:00 0 -
2133  {
2134  2076 /*fromYear*/,
2135  2076 /*toYear*/,
2136  9 /*inMonth*/,
2137  0 /*onDayOfWeek*/,
2138  6 /*onDayOfMonth*/,
2139  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2140  480 /*atTimeCode (7200/15)*/,
2141  0 /*deltaMinutes*/,
2142  0 /*letterIndex ("")*/,
2143  },
2144  // Rule Morocco 2077 only - Jul 18 3:00 -1:00 -
2145  {
2146  2077 /*fromYear*/,
2147  2077 /*toYear*/,
2148  7 /*inMonth*/,
2149  0 /*onDayOfWeek*/,
2150  18 /*onDayOfMonth*/,
2151  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2152  720 /*atTimeCode (10800/15)*/,
2153  -60 /*deltaMinutes*/,
2154  0 /*letterIndex ("")*/,
2155  },
2156  // Rule Morocco 2077 only - Aug 22 2:00 0 -
2157  {
2158  2077 /*fromYear*/,
2159  2077 /*toYear*/,
2160  8 /*inMonth*/,
2161  0 /*onDayOfWeek*/,
2162  22 /*onDayOfMonth*/,
2163  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2164  480 /*atTimeCode (7200/15)*/,
2165  0 /*deltaMinutes*/,
2166  0 /*letterIndex ("")*/,
2167  },
2168  // Rule Morocco 2078 only - Jul 10 3:00 -1:00 -
2169  {
2170  2078 /*fromYear*/,
2171  2078 /*toYear*/,
2172  7 /*inMonth*/,
2173  0 /*onDayOfWeek*/,
2174  10 /*onDayOfMonth*/,
2175  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2176  720 /*atTimeCode (10800/15)*/,
2177  -60 /*deltaMinutes*/,
2178  0 /*letterIndex ("")*/,
2179  },
2180  // Rule Morocco 2078 only - Aug 14 2:00 0 -
2181  {
2182  2078 /*fromYear*/,
2183  2078 /*toYear*/,
2184  8 /*inMonth*/,
2185  0 /*onDayOfWeek*/,
2186  14 /*onDayOfMonth*/,
2187  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2188  480 /*atTimeCode (7200/15)*/,
2189  0 /*deltaMinutes*/,
2190  0 /*letterIndex ("")*/,
2191  },
2192  // Rule Morocco 2079 only - Jun 25 3:00 -1:00 -
2193  {
2194  2079 /*fromYear*/,
2195  2079 /*toYear*/,
2196  6 /*inMonth*/,
2197  0 /*onDayOfWeek*/,
2198  25 /*onDayOfMonth*/,
2199  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2200  720 /*atTimeCode (10800/15)*/,
2201  -60 /*deltaMinutes*/,
2202  0 /*letterIndex ("")*/,
2203  },
2204  // Rule Morocco 2079 only - Aug 6 2:00 0 -
2205  {
2206  2079 /*fromYear*/,
2207  2079 /*toYear*/,
2208  8 /*inMonth*/,
2209  0 /*onDayOfWeek*/,
2210  6 /*onDayOfMonth*/,
2211  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2212  480 /*atTimeCode (7200/15)*/,
2213  0 /*deltaMinutes*/,
2214  0 /*letterIndex ("")*/,
2215  },
2216  // Rule Morocco 2080 only - Jun 16 3:00 -1:00 -
2217  {
2218  2080 /*fromYear*/,
2219  2080 /*toYear*/,
2220  6 /*inMonth*/,
2221  0 /*onDayOfWeek*/,
2222  16 /*onDayOfMonth*/,
2223  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2224  720 /*atTimeCode (10800/15)*/,
2225  -60 /*deltaMinutes*/,
2226  0 /*letterIndex ("")*/,
2227  },
2228  // Rule Morocco 2080 only - Jul 21 2:00 0 -
2229  {
2230  2080 /*fromYear*/,
2231  2080 /*toYear*/,
2232  7 /*inMonth*/,
2233  0 /*onDayOfWeek*/,
2234  21 /*onDayOfMonth*/,
2235  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2236  480 /*atTimeCode (7200/15)*/,
2237  0 /*deltaMinutes*/,
2238  0 /*letterIndex ("")*/,
2239  },
2240  // Rule Morocco 2081 only - Jun 1 3:00 -1:00 -
2241  {
2242  2081 /*fromYear*/,
2243  2081 /*toYear*/,
2244  6 /*inMonth*/,
2245  0 /*onDayOfWeek*/,
2246  1 /*onDayOfMonth*/,
2247  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2248  720 /*atTimeCode (10800/15)*/,
2249  -60 /*deltaMinutes*/,
2250  0 /*letterIndex ("")*/,
2251  },
2252  // Rule Morocco 2081 only - Jul 13 2:00 0 -
2253  {
2254  2081 /*fromYear*/,
2255  2081 /*toYear*/,
2256  7 /*inMonth*/,
2257  0 /*onDayOfWeek*/,
2258  13 /*onDayOfMonth*/,
2259  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2260  480 /*atTimeCode (7200/15)*/,
2261  0 /*deltaMinutes*/,
2262  0 /*letterIndex ("")*/,
2263  },
2264  // Rule Morocco 2082 only - May 24 3:00 -1:00 -
2265  {
2266  2082 /*fromYear*/,
2267  2082 /*toYear*/,
2268  5 /*inMonth*/,
2269  0 /*onDayOfWeek*/,
2270  24 /*onDayOfMonth*/,
2271  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2272  720 /*atTimeCode (10800/15)*/,
2273  -60 /*deltaMinutes*/,
2274  0 /*letterIndex ("")*/,
2275  },
2276  // Rule Morocco 2082 only - Jun 28 2:00 0 -
2277  {
2278  2082 /*fromYear*/,
2279  2082 /*toYear*/,
2280  6 /*inMonth*/,
2281  0 /*onDayOfWeek*/,
2282  28 /*onDayOfMonth*/,
2283  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2284  480 /*atTimeCode (7200/15)*/,
2285  0 /*deltaMinutes*/,
2286  0 /*letterIndex ("")*/,
2287  },
2288  // Rule Morocco 2083 only - May 16 3:00 -1:00 -
2289  {
2290  2083 /*fromYear*/,
2291  2083 /*toYear*/,
2292  5 /*inMonth*/,
2293  0 /*onDayOfWeek*/,
2294  16 /*onDayOfMonth*/,
2295  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2296  720 /*atTimeCode (10800/15)*/,
2297  -60 /*deltaMinutes*/,
2298  0 /*letterIndex ("")*/,
2299  },
2300  // Rule Morocco 2083 only - Jun 20 2:00 0 -
2301  {
2302  2083 /*fromYear*/,
2303  2083 /*toYear*/,
2304  6 /*inMonth*/,
2305  0 /*onDayOfWeek*/,
2306  20 /*onDayOfMonth*/,
2307  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2308  480 /*atTimeCode (7200/15)*/,
2309  0 /*deltaMinutes*/,
2310  0 /*letterIndex ("")*/,
2311  },
2312  // Rule Morocco 2084 only - Apr 30 3:00 -1:00 -
2313  {
2314  2084 /*fromYear*/,
2315  2084 /*toYear*/,
2316  4 /*inMonth*/,
2317  0 /*onDayOfWeek*/,
2318  30 /*onDayOfMonth*/,
2319  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2320  720 /*atTimeCode (10800/15)*/,
2321  -60 /*deltaMinutes*/,
2322  0 /*letterIndex ("")*/,
2323  },
2324  // Rule Morocco 2084 only - Jun 11 2:00 0 -
2325  {
2326  2084 /*fromYear*/,
2327  2084 /*toYear*/,
2328  6 /*inMonth*/,
2329  0 /*onDayOfWeek*/,
2330  11 /*onDayOfMonth*/,
2331  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2332  480 /*atTimeCode (7200/15)*/,
2333  0 /*deltaMinutes*/,
2334  0 /*letterIndex ("")*/,
2335  },
2336  // Rule Morocco 2085 only - Apr 22 3:00 -1:00 -
2337  {
2338  2085 /*fromYear*/,
2339  2085 /*toYear*/,
2340  4 /*inMonth*/,
2341  0 /*onDayOfWeek*/,
2342  22 /*onDayOfMonth*/,
2343  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2344  720 /*atTimeCode (10800/15)*/,
2345  -60 /*deltaMinutes*/,
2346  0 /*letterIndex ("")*/,
2347  },
2348  // Rule Morocco 2085 only - May 27 2:00 0 -
2349  {
2350  2085 /*fromYear*/,
2351  2085 /*toYear*/,
2352  5 /*inMonth*/,
2353  0 /*onDayOfWeek*/,
2354  27 /*onDayOfMonth*/,
2355  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2356  480 /*atTimeCode (7200/15)*/,
2357  0 /*deltaMinutes*/,
2358  0 /*letterIndex ("")*/,
2359  },
2360  // Rule Morocco 2086 only - Apr 14 3:00 -1:00 -
2361  {
2362  2086 /*fromYear*/,
2363  2086 /*toYear*/,
2364  4 /*inMonth*/,
2365  0 /*onDayOfWeek*/,
2366  14 /*onDayOfMonth*/,
2367  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2368  720 /*atTimeCode (10800/15)*/,
2369  -60 /*deltaMinutes*/,
2370  0 /*letterIndex ("")*/,
2371  },
2372  // Rule Morocco 2086 only - May 19 2:00 0 -
2373  {
2374  2086 /*fromYear*/,
2375  2086 /*toYear*/,
2376  5 /*inMonth*/,
2377  0 /*onDayOfWeek*/,
2378  19 /*onDayOfMonth*/,
2379  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2380  480 /*atTimeCode (7200/15)*/,
2381  0 /*deltaMinutes*/,
2382  0 /*letterIndex ("")*/,
2383  },
2384  // Rule Morocco 2087 only - Mar 30 3:00 -1:00 -
2385  {
2386  2087 /*fromYear*/,
2387  2087 /*toYear*/,
2388  3 /*inMonth*/,
2389  0 /*onDayOfWeek*/,
2390  30 /*onDayOfMonth*/,
2391  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2392  720 /*atTimeCode (10800/15)*/,
2393  -60 /*deltaMinutes*/,
2394  0 /*letterIndex ("")*/,
2395  },
2396  // Rule Morocco 2087 only - May 11 2:00 0 -
2397  {
2398  2087 /*fromYear*/,
2399  2087 /*toYear*/,
2400  5 /*inMonth*/,
2401  0 /*onDayOfWeek*/,
2402  11 /*onDayOfMonth*/,
2403  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2404  480 /*atTimeCode (7200/15)*/,
2405  0 /*deltaMinutes*/,
2406  0 /*letterIndex ("")*/,
2407  },
2408 
2409 };
2410 
2411 const complete::ZonePolicy kZonePolicyMorocco ACE_TIME_PROGMEM = {
2412  kZoneRulesMorocco /*rules*/,
2413  170 /*numRules*/,
2414 };
2415 
2416 //---------------------------------------------------------------------------
2417 // Policy name: Namibia
2418 // Rules: 4
2419 //---------------------------------------------------------------------------
2420 
2421 static const complete::ZoneRule kZoneRulesNamibia[] ACE_TIME_PROGMEM = {
2422  // Anchor: Rule Namibia 1994 2017 - Sep Sun>=1 2:00 0 CAT
2423  {
2424  -32767 /*fromYear*/,
2425  -32767 /*toYear*/,
2426  1 /*inMonth*/,
2427  0 /*onDayOfWeek*/,
2428  1 /*onDayOfMonth*/,
2429  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2430  0 /*atTimeCode (0/15)*/,
2431  0 /*deltaMinutes*/,
2432  1 /*letterIndex ("CAT")*/,
2433  },
2434  // Rule Namibia 1994 only - Mar 21 0:00 -1:00 WAT
2435  {
2436  1994 /*fromYear*/,
2437  1994 /*toYear*/,
2438  3 /*inMonth*/,
2439  0 /*onDayOfWeek*/,
2440  21 /*onDayOfMonth*/,
2441  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2442  0 /*atTimeCode (0/15)*/,
2443  -60 /*deltaMinutes*/,
2444  4 /*letterIndex ("WAT")*/,
2445  },
2446  // Rule Namibia 1994 2017 - Sep Sun>=1 2:00 0 CAT
2447  {
2448  1994 /*fromYear*/,
2449  2017 /*toYear*/,
2450  9 /*inMonth*/,
2451  7 /*onDayOfWeek*/,
2452  1 /*onDayOfMonth*/,
2453  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2454  480 /*atTimeCode (7200/15)*/,
2455  0 /*deltaMinutes*/,
2456  1 /*letterIndex ("CAT")*/,
2457  },
2458  // Rule Namibia 1995 2017 - Apr Sun>=1 2:00 -1:00 WAT
2459  {
2460  1995 /*fromYear*/,
2461  2017 /*toYear*/,
2462  4 /*inMonth*/,
2463  7 /*onDayOfWeek*/,
2464  1 /*onDayOfMonth*/,
2465  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2466  480 /*atTimeCode (7200/15)*/,
2467  -60 /*deltaMinutes*/,
2468  4 /*letterIndex ("WAT")*/,
2469  },
2470 
2471 };
2472 
2473 const complete::ZonePolicy kZonePolicyNamibia ACE_TIME_PROGMEM = {
2474  kZoneRulesNamibia /*rules*/,
2475  4 /*numRules*/,
2476 };
2477 
2478 //---------------------------------------------------------------------------
2479 // Policy name: Port
2480 // Rules: 7
2481 //---------------------------------------------------------------------------
2482 
2483 static const complete::ZoneRule kZoneRulesPort[] ACE_TIME_PROGMEM = {
2484  // Anchor: Rule Port 1978 only - Oct 1 0:00s 0 -
2485  {
2486  -32767 /*fromYear*/,
2487  -32767 /*toYear*/,
2488  1 /*inMonth*/,
2489  0 /*onDayOfWeek*/,
2490  1 /*onDayOfMonth*/,
2491  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2492  0 /*atTimeCode (0/15)*/,
2493  0 /*deltaMinutes*/,
2494  0 /*letterIndex ("")*/,
2495  },
2496  // Rule Port 1978 1979 - Apr Sun>=1 0:00s 1:00 S
2497  {
2498  1978 /*fromYear*/,
2499  1979 /*toYear*/,
2500  4 /*inMonth*/,
2501  7 /*onDayOfWeek*/,
2502  1 /*onDayOfMonth*/,
2503  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2504  0 /*atTimeCode (0/15)*/,
2505  60 /*deltaMinutes*/,
2506  3 /*letterIndex ("S")*/,
2507  },
2508  // Rule Port 1978 only - Oct 1 0:00s 0 -
2509  {
2510  1978 /*fromYear*/,
2511  1978 /*toYear*/,
2512  10 /*inMonth*/,
2513  0 /*onDayOfWeek*/,
2514  1 /*onDayOfMonth*/,
2515  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2516  0 /*atTimeCode (0/15)*/,
2517  0 /*deltaMinutes*/,
2518  0 /*letterIndex ("")*/,
2519  },
2520  // Rule Port 1979 1982 - Sep lastSun 1:00s 0 -
2521  {
2522  1979 /*fromYear*/,
2523  1982 /*toYear*/,
2524  9 /*inMonth*/,
2525  7 /*onDayOfWeek*/,
2526  0 /*onDayOfMonth*/,
2527  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2528  240 /*atTimeCode (3600/15)*/,
2529  0 /*deltaMinutes*/,
2530  0 /*letterIndex ("")*/,
2531  },
2532  // Rule Port 1980 only - Mar lastSun 0:00s 1:00 S
2533  {
2534  1980 /*fromYear*/,
2535  1980 /*toYear*/,
2536  3 /*inMonth*/,
2537  7 /*onDayOfWeek*/,
2538  0 /*onDayOfMonth*/,
2539  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2540  0 /*atTimeCode (0/15)*/,
2541  60 /*deltaMinutes*/,
2542  3 /*letterIndex ("S")*/,
2543  },
2544  // Rule Port 1981 1982 - Mar lastSun 1:00s 1:00 S
2545  {
2546  1981 /*fromYear*/,
2547  1982 /*toYear*/,
2548  3 /*inMonth*/,
2549  7 /*onDayOfWeek*/,
2550  0 /*onDayOfMonth*/,
2551  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2552  240 /*atTimeCode (3600/15)*/,
2553  60 /*deltaMinutes*/,
2554  3 /*letterIndex ("S")*/,
2555  },
2556  // Rule Port 1983 only - Mar lastSun 2:00s 1:00 S
2557  {
2558  1983 /*fromYear*/,
2559  1983 /*toYear*/,
2560  3 /*inMonth*/,
2561  7 /*onDayOfWeek*/,
2562  0 /*onDayOfMonth*/,
2563  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2564  480 /*atTimeCode (7200/15)*/,
2565  60 /*deltaMinutes*/,
2566  3 /*letterIndex ("S")*/,
2567  },
2568 
2569 };
2570 
2571 const complete::ZonePolicy kZonePolicyPort ACE_TIME_PROGMEM = {
2572  kZoneRulesPort /*rules*/,
2573  7 /*numRules*/,
2574 };
2575 
2576 //---------------------------------------------------------------------------
2577 // Policy name: US
2578 // Rules: 7
2579 //---------------------------------------------------------------------------
2580 
2581 static const complete::ZoneRule kZoneRulesUS[] ACE_TIME_PROGMEM = {
2582  // Anchor: Rule US 1967 2006 - Oct lastSun 2:00 0 S
2583  {
2584  -32767 /*fromYear*/,
2585  -32767 /*toYear*/,
2586  1 /*inMonth*/,
2587  0 /*onDayOfWeek*/,
2588  1 /*onDayOfMonth*/,
2589  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2590  0 /*atTimeCode (0/15)*/,
2591  0 /*deltaMinutes*/,
2592  3 /*letterIndex ("S")*/,
2593  },
2594  // Rule US 1967 2006 - Oct lastSun 2:00 0 S
2595  {
2596  1967 /*fromYear*/,
2597  2006 /*toYear*/,
2598  10 /*inMonth*/,
2599  7 /*onDayOfWeek*/,
2600  0 /*onDayOfMonth*/,
2601  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2602  480 /*atTimeCode (7200/15)*/,
2603  0 /*deltaMinutes*/,
2604  3 /*letterIndex ("S")*/,
2605  },
2606  // Rule US 1975 only - Feb lastSun 2:00 1:00 D
2607  {
2608  1975 /*fromYear*/,
2609  1975 /*toYear*/,
2610  2 /*inMonth*/,
2611  7 /*onDayOfWeek*/,
2612  0 /*onDayOfMonth*/,
2613  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2614  480 /*atTimeCode (7200/15)*/,
2615  60 /*deltaMinutes*/,
2616  2 /*letterIndex ("D")*/,
2617  },
2618  // Rule US 1976 1986 - Apr lastSun 2:00 1:00 D
2619  {
2620  1976 /*fromYear*/,
2621  1986 /*toYear*/,
2622  4 /*inMonth*/,
2623  7 /*onDayOfWeek*/,
2624  0 /*onDayOfMonth*/,
2625  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2626  480 /*atTimeCode (7200/15)*/,
2627  60 /*deltaMinutes*/,
2628  2 /*letterIndex ("D")*/,
2629  },
2630  // Rule US 1987 2006 - Apr Sun>=1 2:00 1:00 D
2631  {
2632  1987 /*fromYear*/,
2633  2006 /*toYear*/,
2634  4 /*inMonth*/,
2635  7 /*onDayOfWeek*/,
2636  1 /*onDayOfMonth*/,
2637  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2638  480 /*atTimeCode (7200/15)*/,
2639  60 /*deltaMinutes*/,
2640  2 /*letterIndex ("D")*/,
2641  },
2642  // Rule US 2007 max - Mar Sun>=8 2:00 1:00 D
2643  {
2644  2007 /*fromYear*/,
2645  32766 /*toYear*/,
2646  3 /*inMonth*/,
2647  7 /*onDayOfWeek*/,
2648  8 /*onDayOfMonth*/,
2649  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2650  480 /*atTimeCode (7200/15)*/,
2651  60 /*deltaMinutes*/,
2652  2 /*letterIndex ("D")*/,
2653  },
2654  // Rule US 2007 max - Nov Sun>=1 2:00 0 S
2655  {
2656  2007 /*fromYear*/,
2657  32766 /*toYear*/,
2658  11 /*inMonth*/,
2659  7 /*onDayOfWeek*/,
2660  1 /*onDayOfMonth*/,
2661  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2662  480 /*atTimeCode (7200/15)*/,
2663  0 /*deltaMinutes*/,
2664  3 /*letterIndex ("S")*/,
2665  },
2666 
2667 };
2668 
2669 const complete::ZonePolicy kZonePolicyUS ACE_TIME_PROGMEM = {
2670  kZoneRulesUS /*rules*/,
2671  7 /*numRules*/,
2672 };
2673 
2674 //---------------------------------------------------------------------------
2675 // Policy name: Vanc
2676 // Rules: 4
2677 //---------------------------------------------------------------------------
2678 
2679 static const complete::ZoneRule kZoneRulesVanc[] ACE_TIME_PROGMEM = {
2680  // Anchor: Rule Vanc 1947 1961 - Sep lastSun 2:00 0 S
2681  {
2682  -32767 /*fromYear*/,
2683  -32767 /*toYear*/,
2684  1 /*inMonth*/,
2685  0 /*onDayOfWeek*/,
2686  1 /*onDayOfMonth*/,
2687  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2688  0 /*atTimeCode (0/15)*/,
2689  0 /*deltaMinutes*/,
2690  3 /*letterIndex ("S")*/,
2691  },
2692  // Rule Vanc 1946 1986 - Apr lastSun 2:00 1:00 D
2693  {
2694  1946 /*fromYear*/,
2695  1986 /*toYear*/,
2696  4 /*inMonth*/,
2697  7 /*onDayOfWeek*/,
2698  0 /*onDayOfMonth*/,
2699  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2700  480 /*atTimeCode (7200/15)*/,
2701  60 /*deltaMinutes*/,
2702  2 /*letterIndex ("D")*/,
2703  },
2704  // Rule Vanc 1947 1961 - Sep lastSun 2:00 0 S
2705  {
2706  1947 /*fromYear*/,
2707  1961 /*toYear*/,
2708  9 /*inMonth*/,
2709  7 /*onDayOfWeek*/,
2710  0 /*onDayOfMonth*/,
2711  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2712  480 /*atTimeCode (7200/15)*/,
2713  0 /*deltaMinutes*/,
2714  3 /*letterIndex ("S")*/,
2715  },
2716  // Rule Vanc 1962 2006 - Oct lastSun 2:00 0 S
2717  {
2718  1962 /*fromYear*/,
2719  2006 /*toYear*/,
2720  10 /*inMonth*/,
2721  7 /*onDayOfWeek*/,
2722  0 /*onDayOfMonth*/,
2723  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2724  480 /*atTimeCode (7200/15)*/,
2725  0 /*deltaMinutes*/,
2726  3 /*letterIndex ("S")*/,
2727  },
2728 
2729 };
2730 
2731 const complete::ZonePolicy kZonePolicyVanc ACE_TIME_PROGMEM = {
2732  kZoneRulesVanc /*rules*/,
2733  4 /*numRules*/,
2734 };
2735 
2736 //---------------------------------------------------------------------------
2737 // Policy name: W-Eur
2738 // Rules: 6
2739 //---------------------------------------------------------------------------
2740 
2741 static const complete::ZoneRule kZoneRulesW_Eur[] ACE_TIME_PROGMEM = {
2742  // Anchor: Rule W-Eur 1978 only - Oct 1 1:00s 0 -
2743  {
2744  -32767 /*fromYear*/,
2745  -32767 /*toYear*/,
2746  1 /*inMonth*/,
2747  0 /*onDayOfWeek*/,
2748  1 /*onDayOfMonth*/,
2749  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2750  0 /*atTimeCode (0/15)*/,
2751  0 /*deltaMinutes*/,
2752  0 /*letterIndex ("")*/,
2753  },
2754  // Rule W-Eur 1977 1980 - Apr Sun>=1 1:00s 1:00 S
2755  {
2756  1977 /*fromYear*/,
2757  1980 /*toYear*/,
2758  4 /*inMonth*/,
2759  7 /*onDayOfWeek*/,
2760  1 /*onDayOfMonth*/,
2761  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2762  240 /*atTimeCode (3600/15)*/,
2763  60 /*deltaMinutes*/,
2764  3 /*letterIndex ("S")*/,
2765  },
2766  // Rule W-Eur 1978 only - Oct 1 1:00s 0 -
2767  {
2768  1978 /*fromYear*/,
2769  1978 /*toYear*/,
2770  10 /*inMonth*/,
2771  0 /*onDayOfWeek*/,
2772  1 /*onDayOfMonth*/,
2773  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2774  240 /*atTimeCode (3600/15)*/,
2775  0 /*deltaMinutes*/,
2776  0 /*letterIndex ("")*/,
2777  },
2778  // Rule W-Eur 1979 1995 - Sep lastSun 1:00s 0 -
2779  {
2780  1979 /*fromYear*/,
2781  1995 /*toYear*/,
2782  9 /*inMonth*/,
2783  7 /*onDayOfWeek*/,
2784  0 /*onDayOfMonth*/,
2785  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2786  240 /*atTimeCode (3600/15)*/,
2787  0 /*deltaMinutes*/,
2788  0 /*letterIndex ("")*/,
2789  },
2790  // Rule W-Eur 1981 max - Mar lastSun 1:00s 1:00 S
2791  {
2792  1981 /*fromYear*/,
2793  32766 /*toYear*/,
2794  3 /*inMonth*/,
2795  7 /*onDayOfWeek*/,
2796  0 /*onDayOfMonth*/,
2797  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2798  240 /*atTimeCode (3600/15)*/,
2799  60 /*deltaMinutes*/,
2800  3 /*letterIndex ("S")*/,
2801  },
2802  // Rule W-Eur 1996 max - Oct lastSun 1:00s 0 -
2803  {
2804  1996 /*fromYear*/,
2805  32766 /*toYear*/,
2806  10 /*inMonth*/,
2807  7 /*onDayOfWeek*/,
2808  0 /*onDayOfMonth*/,
2809  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2810  240 /*atTimeCode (3600/15)*/,
2811  0 /*deltaMinutes*/,
2812  0 /*letterIndex ("")*/,
2813  },
2814 
2815 };
2816 
2817 const complete::ZonePolicy kZonePolicyW_Eur ACE_TIME_PROGMEM = {
2818  kZoneRulesW_Eur /*rules*/,
2819  6 /*numRules*/,
2820 };
2821 
2822 //---------------------------------------------------------------------------
2823 // Policy name: WS
2824 // Rules: 6
2825 //---------------------------------------------------------------------------
2826 
2827 static const complete::ZoneRule kZoneRulesWS[] ACE_TIME_PROGMEM = {
2828  // Anchor: Rule WS 2011 only - Apr Sat>=1 4:00 0 -
2829  {
2830  -32767 /*fromYear*/,
2831  -32767 /*toYear*/,
2832  1 /*inMonth*/,
2833  0 /*onDayOfWeek*/,
2834  1 /*onDayOfMonth*/,
2835  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2836  0 /*atTimeCode (0/15)*/,
2837  0 /*deltaMinutes*/,
2838  0 /*letterIndex ("")*/,
2839  },
2840  // Rule WS 2010 only - Sep lastSun 0:00 1 -
2841  {
2842  2010 /*fromYear*/,
2843  2010 /*toYear*/,
2844  9 /*inMonth*/,
2845  7 /*onDayOfWeek*/,
2846  0 /*onDayOfMonth*/,
2847  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2848  0 /*atTimeCode (0/15)*/,
2849  60 /*deltaMinutes*/,
2850  0 /*letterIndex ("")*/,
2851  },
2852  // Rule WS 2011 only - Apr Sat>=1 4:00 0 -
2853  {
2854  2011 /*fromYear*/,
2855  2011 /*toYear*/,
2856  4 /*inMonth*/,
2857  6 /*onDayOfWeek*/,
2858  1 /*onDayOfMonth*/,
2859  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2860  960 /*atTimeCode (14400/15)*/,
2861  0 /*deltaMinutes*/,
2862  0 /*letterIndex ("")*/,
2863  },
2864  // Rule WS 2011 only - Sep lastSat 3:00 1 -
2865  {
2866  2011 /*fromYear*/,
2867  2011 /*toYear*/,
2868  9 /*inMonth*/,
2869  6 /*onDayOfWeek*/,
2870  0 /*onDayOfMonth*/,
2871  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2872  720 /*atTimeCode (10800/15)*/,
2873  60 /*deltaMinutes*/,
2874  0 /*letterIndex ("")*/,
2875  },
2876  // Rule WS 2012 2021 - Apr Sun>=1 4:00 0 -
2877  {
2878  2012 /*fromYear*/,
2879  2021 /*toYear*/,
2880  4 /*inMonth*/,
2881  7 /*onDayOfWeek*/,
2882  1 /*onDayOfMonth*/,
2883  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2884  960 /*atTimeCode (14400/15)*/,
2885  0 /*deltaMinutes*/,
2886  0 /*letterIndex ("")*/,
2887  },
2888  // Rule WS 2012 2020 - Sep lastSun 3:00 1 -
2889  {
2890  2012 /*fromYear*/,
2891  2020 /*toYear*/,
2892  9 /*inMonth*/,
2893  7 /*onDayOfWeek*/,
2894  0 /*onDayOfMonth*/,
2895  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2896  720 /*atTimeCode (10800/15)*/,
2897  60 /*deltaMinutes*/,
2898  0 /*letterIndex ("")*/,
2899  },
2900 
2901 };
2902 
2903 const complete::ZonePolicy kZonePolicyWS ACE_TIME_PROGMEM = {
2904  kZoneRulesWS /*rules*/,
2905  6 /*numRules*/,
2906 };
2907 
2908 //---------------------------------------------------------------------------
2909 // Policy name: Winn
2910 // Rules: 5
2911 //---------------------------------------------------------------------------
2912 
2913 static const complete::ZoneRule kZoneRulesWinn[] ACE_TIME_PROGMEM = {
2914  // Anchor: Rule Winn 1963 only - Sep 22 2:00 0 S
2915  {
2916  -32767 /*fromYear*/,
2917  -32767 /*toYear*/,
2918  1 /*inMonth*/,
2919  0 /*onDayOfWeek*/,
2920  1 /*onDayOfMonth*/,
2921  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2922  0 /*atTimeCode (0/15)*/,
2923  0 /*deltaMinutes*/,
2924  3 /*letterIndex ("S")*/,
2925  },
2926  // Rule Winn 1963 only - Sep 22 2:00 0 S
2927  {
2928  1963 /*fromYear*/,
2929  1963 /*toYear*/,
2930  9 /*inMonth*/,
2931  0 /*onDayOfWeek*/,
2932  22 /*onDayOfMonth*/,
2933  0 /*atTimeModifier (kAtcSuffixW + seconds=0)*/,
2934  480 /*atTimeCode (7200/15)*/,
2935  0 /*deltaMinutes*/,
2936  3 /*letterIndex ("S")*/,
2937  },
2938  // Rule Winn 1966 1986 - Apr lastSun 2:00s 1:00 D
2939  {
2940  1966 /*fromYear*/,
2941  1986 /*toYear*/,
2942  4 /*inMonth*/,
2943  7 /*onDayOfWeek*/,
2944  0 /*onDayOfMonth*/,
2945  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2946  480 /*atTimeCode (7200/15)*/,
2947  60 /*deltaMinutes*/,
2948  2 /*letterIndex ("D")*/,
2949  },
2950  // Rule Winn 1966 2005 - Oct lastSun 2:00s 0 S
2951  {
2952  1966 /*fromYear*/,
2953  2005 /*toYear*/,
2954  10 /*inMonth*/,
2955  7 /*onDayOfWeek*/,
2956  0 /*onDayOfMonth*/,
2957  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2958  480 /*atTimeCode (7200/15)*/,
2959  0 /*deltaMinutes*/,
2960  3 /*letterIndex ("S")*/,
2961  },
2962  // Rule Winn 1987 2005 - Apr Sun>=1 2:00s 1:00 D
2963  {
2964  1987 /*fromYear*/,
2965  2005 /*toYear*/,
2966  4 /*inMonth*/,
2967  7 /*onDayOfWeek*/,
2968  1 /*onDayOfMonth*/,
2969  16 /*atTimeModifier (kAtcSuffixS + seconds=0)*/,
2970  480 /*atTimeCode (7200/15)*/,
2971  60 /*deltaMinutes*/,
2972  2 /*letterIndex ("D")*/,
2973  },
2974 
2975 };
2976 
2977 const complete::ZonePolicy kZonePolicyWinn ACE_TIME_PROGMEM = {
2978  kZoneRulesWinn /*rules*/,
2979  5 /*numRules*/,
2980 };
2981 
2982 
2983 
2984 }
2985 }
Macros and definitions that provide a consistency layer among the various Arduino boards for compatib...