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