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