AceTime  0.3
Date and time classes for Arduino that support timezones from the TZ Database, and a system clock that can synchronize from an NTP server or an RTC chip.
zone_policies.cpp
1 // This file was generated by the following script:
2 //
3 // $ ../../../tools/tzcompiler.py --input_dir /home/brian/dev/tz --output_dir /home/brian/dev/AceTime/src/ace_time/zonedbx --tz_version 2019a --action zonedb --language arduino --scope extended --start_year 2000 --until_year 2050
4 //
5 // using the TZ Database files from
6 // https://github.com/eggert/tz/releases/tag/2019a
7 //
8 // Policies: 84
9 // Rules: 527
10 // Memory (8-bit): 5282
11 // Memory (32-bit): 5662
12 //
13 // DO NOT EDIT
14 
15 #include "zone_policies.h"
16 
17 namespace ace_time {
18 namespace zonedbx {
19 
20 //---------------------------------------------------------------------------
21 // Policy name: AN
22 // Rules: 9
23 // Memory (8-bit): 87
24 // Memory (32-bit): 91
25 //---------------------------------------------------------------------------
26 
27 static const extended::ZoneRule kZoneRulesAN[] = {
28  // Rule AN 1987 1999 - Oct lastSun 2:00s 1:00 D
29  {
30  -13 /*fromYearTiny*/,
31  -1 /*toYearTiny*/,
32  10 /*inMonth*/,
33  7 /*onDayOfWeek*/,
34  0 /*onDayOfMonth*/,
35  8 /*atTimeCode*/,
36  's' /*atTimeModifier*/,
37  4 /*deltaCode*/,
38  'D' /*letter*/,
39  },
40  // Rule AN 1990 1995 - Mar Sun>=1 2:00s 0 S
41  {
42  -10 /*fromYearTiny*/,
43  -5 /*toYearTiny*/,
44  3 /*inMonth*/,
45  7 /*onDayOfWeek*/,
46  1 /*onDayOfMonth*/,
47  8 /*atTimeCode*/,
48  's' /*atTimeModifier*/,
49  0 /*deltaCode*/,
50  'S' /*letter*/,
51  },
52  // Rule AN 1996 2005 - Mar lastSun 2:00s 0 S
53  {
54  -4 /*fromYearTiny*/,
55  5 /*toYearTiny*/,
56  3 /*inMonth*/,
57  7 /*onDayOfWeek*/,
58  0 /*onDayOfMonth*/,
59  8 /*atTimeCode*/,
60  's' /*atTimeModifier*/,
61  0 /*deltaCode*/,
62  'S' /*letter*/,
63  },
64  // Rule AN 2000 only - Aug lastSun 2:00s 1:00 D
65  {
66  0 /*fromYearTiny*/,
67  0 /*toYearTiny*/,
68  8 /*inMonth*/,
69  7 /*onDayOfWeek*/,
70  0 /*onDayOfMonth*/,
71  8 /*atTimeCode*/,
72  's' /*atTimeModifier*/,
73  4 /*deltaCode*/,
74  'D' /*letter*/,
75  },
76  // Rule AN 2001 2007 - Oct lastSun 2:00s 1:00 D
77  {
78  1 /*fromYearTiny*/,
79  7 /*toYearTiny*/,
80  10 /*inMonth*/,
81  7 /*onDayOfWeek*/,
82  0 /*onDayOfMonth*/,
83  8 /*atTimeCode*/,
84  's' /*atTimeModifier*/,
85  4 /*deltaCode*/,
86  'D' /*letter*/,
87  },
88  // Rule AN 2006 only - Apr Sun>=1 2:00s 0 S
89  {
90  6 /*fromYearTiny*/,
91  6 /*toYearTiny*/,
92  4 /*inMonth*/,
93  7 /*onDayOfWeek*/,
94  1 /*onDayOfMonth*/,
95  8 /*atTimeCode*/,
96  's' /*atTimeModifier*/,
97  0 /*deltaCode*/,
98  'S' /*letter*/,
99  },
100  // Rule AN 2007 only - Mar lastSun 2:00s 0 S
101  {
102  7 /*fromYearTiny*/,
103  7 /*toYearTiny*/,
104  3 /*inMonth*/,
105  7 /*onDayOfWeek*/,
106  0 /*onDayOfMonth*/,
107  8 /*atTimeCode*/,
108  's' /*atTimeModifier*/,
109  0 /*deltaCode*/,
110  'S' /*letter*/,
111  },
112  // Rule AN 2008 max - Apr Sun>=1 2:00s 0 S
113  {
114  8 /*fromYearTiny*/,
115  126 /*toYearTiny*/,
116  4 /*inMonth*/,
117  7 /*onDayOfWeek*/,
118  1 /*onDayOfMonth*/,
119  8 /*atTimeCode*/,
120  's' /*atTimeModifier*/,
121  0 /*deltaCode*/,
122  'S' /*letter*/,
123  },
124  // Rule AN 2008 max - Oct Sun>=1 2:00s 1:00 D
125  {
126  8 /*fromYearTiny*/,
127  126 /*toYearTiny*/,
128  10 /*inMonth*/,
129  7 /*onDayOfWeek*/,
130  1 /*onDayOfMonth*/,
131  8 /*atTimeCode*/,
132  's' /*atTimeModifier*/,
133  4 /*deltaCode*/,
134  'D' /*letter*/,
135  },
136 
137 };
138 
139 
140 
141 const extended::ZonePolicy kPolicyAN = {
142  9 /*numRules*/,
143  kZoneRulesAN /*rules*/,
144  0 /* numLetters */,
145  nullptr /* letters */,
146 };
147 
148 //---------------------------------------------------------------------------
149 // Policy name: AQ
150 // Rules: 1
151 // Memory (8-bit): 15
152 // Memory (32-bit): 19
153 //---------------------------------------------------------------------------
154 
155 static const extended::ZoneRule kZoneRulesAQ[] = {
156  // Rule AQ 1990 1992 - Mar Sun>=1 2:00s 0 S
157  {
158  -10 /*fromYearTiny*/,
159  -8 /*toYearTiny*/,
160  3 /*inMonth*/,
161  7 /*onDayOfWeek*/,
162  1 /*onDayOfMonth*/,
163  8 /*atTimeCode*/,
164  's' /*atTimeModifier*/,
165  0 /*deltaCode*/,
166  'S' /*letter*/,
167  },
168 
169 };
170 
171 
172 
173 const extended::ZonePolicy kPolicyAQ = {
174  1 /*numRules*/,
175  kZoneRulesAQ /*rules*/,
176  0 /* numLetters */,
177  nullptr /* letters */,
178 };
179 
180 //---------------------------------------------------------------------------
181 // Policy name: AS
182 // Rules: 7
183 // Memory (8-bit): 69
184 // Memory (32-bit): 73
185 //---------------------------------------------------------------------------
186 
187 static const extended::ZoneRule kZoneRulesAS[] = {
188  // Rule AS 1987 2007 - Oct lastSun 2:00s 1:00 D
189  {
190  -13 /*fromYearTiny*/,
191  7 /*toYearTiny*/,
192  10 /*inMonth*/,
193  7 /*onDayOfWeek*/,
194  0 /*onDayOfMonth*/,
195  8 /*atTimeCode*/,
196  's' /*atTimeModifier*/,
197  4 /*deltaCode*/,
198  'D' /*letter*/,
199  },
200  // Rule AS 1994 only - Mar 20 2:00s 0 S
201  {
202  -6 /*fromYearTiny*/,
203  -6 /*toYearTiny*/,
204  3 /*inMonth*/,
205  0 /*onDayOfWeek*/,
206  20 /*onDayOfMonth*/,
207  8 /*atTimeCode*/,
208  's' /*atTimeModifier*/,
209  0 /*deltaCode*/,
210  'S' /*letter*/,
211  },
212  // Rule AS 1995 2005 - Mar lastSun 2:00s 0 S
213  {
214  -5 /*fromYearTiny*/,
215  5 /*toYearTiny*/,
216  3 /*inMonth*/,
217  7 /*onDayOfWeek*/,
218  0 /*onDayOfMonth*/,
219  8 /*atTimeCode*/,
220  's' /*atTimeModifier*/,
221  0 /*deltaCode*/,
222  'S' /*letter*/,
223  },
224  // Rule AS 2006 only - Apr 2 2:00s 0 S
225  {
226  6 /*fromYearTiny*/,
227  6 /*toYearTiny*/,
228  4 /*inMonth*/,
229  0 /*onDayOfWeek*/,
230  2 /*onDayOfMonth*/,
231  8 /*atTimeCode*/,
232  's' /*atTimeModifier*/,
233  0 /*deltaCode*/,
234  'S' /*letter*/,
235  },
236  // Rule AS 2007 only - Mar lastSun 2:00s 0 S
237  {
238  7 /*fromYearTiny*/,
239  7 /*toYearTiny*/,
240  3 /*inMonth*/,
241  7 /*onDayOfWeek*/,
242  0 /*onDayOfMonth*/,
243  8 /*atTimeCode*/,
244  's' /*atTimeModifier*/,
245  0 /*deltaCode*/,
246  'S' /*letter*/,
247  },
248  // Rule AS 2008 max - Apr Sun>=1 2:00s 0 S
249  {
250  8 /*fromYearTiny*/,
251  126 /*toYearTiny*/,
252  4 /*inMonth*/,
253  7 /*onDayOfWeek*/,
254  1 /*onDayOfMonth*/,
255  8 /*atTimeCode*/,
256  's' /*atTimeModifier*/,
257  0 /*deltaCode*/,
258  'S' /*letter*/,
259  },
260  // Rule AS 2008 max - Oct Sun>=1 2:00s 1:00 D
261  {
262  8 /*fromYearTiny*/,
263  126 /*toYearTiny*/,
264  10 /*inMonth*/,
265  7 /*onDayOfWeek*/,
266  1 /*onDayOfMonth*/,
267  8 /*atTimeCode*/,
268  's' /*atTimeModifier*/,
269  4 /*deltaCode*/,
270  'D' /*letter*/,
271  },
272 
273 };
274 
275 
276 
277 const extended::ZonePolicy kPolicyAS = {
278  7 /*numRules*/,
279  kZoneRulesAS /*rules*/,
280  0 /* numLetters */,
281  nullptr /* letters */,
282 };
283 
284 //---------------------------------------------------------------------------
285 // Policy name: AT
286 // Rules: 8
287 // Memory (8-bit): 78
288 // Memory (32-bit): 82
289 //---------------------------------------------------------------------------
290 
291 static const extended::ZoneRule kZoneRulesAT[] = {
292  // Rule AT 1988 1990 - Oct lastSun 2:00s 1:00 D
293  {
294  -12 /*fromYearTiny*/,
295  -10 /*toYearTiny*/,
296  10 /*inMonth*/,
297  7 /*onDayOfWeek*/,
298  0 /*onDayOfMonth*/,
299  8 /*atTimeCode*/,
300  's' /*atTimeModifier*/,
301  4 /*deltaCode*/,
302  'D' /*letter*/,
303  },
304  // Rule AT 1991 1999 - Oct Sun>=1 2:00s 1:00 D
305  {
306  -9 /*fromYearTiny*/,
307  -1 /*toYearTiny*/,
308  10 /*inMonth*/,
309  7 /*onDayOfWeek*/,
310  1 /*onDayOfMonth*/,
311  8 /*atTimeCode*/,
312  's' /*atTimeModifier*/,
313  4 /*deltaCode*/,
314  'D' /*letter*/,
315  },
316  // Rule AT 1991 2005 - Mar lastSun 2:00s 0 S
317  {
318  -9 /*fromYearTiny*/,
319  5 /*toYearTiny*/,
320  3 /*inMonth*/,
321  7 /*onDayOfWeek*/,
322  0 /*onDayOfMonth*/,
323  8 /*atTimeCode*/,
324  's' /*atTimeModifier*/,
325  0 /*deltaCode*/,
326  'S' /*letter*/,
327  },
328  // Rule AT 2000 only - Aug lastSun 2:00s 1:00 D
329  {
330  0 /*fromYearTiny*/,
331  0 /*toYearTiny*/,
332  8 /*inMonth*/,
333  7 /*onDayOfWeek*/,
334  0 /*onDayOfMonth*/,
335  8 /*atTimeCode*/,
336  's' /*atTimeModifier*/,
337  4 /*deltaCode*/,
338  'D' /*letter*/,
339  },
340  // Rule AT 2001 max - Oct Sun>=1 2:00s 1:00 D
341  {
342  1 /*fromYearTiny*/,
343  126 /*toYearTiny*/,
344  10 /*inMonth*/,
345  7 /*onDayOfWeek*/,
346  1 /*onDayOfMonth*/,
347  8 /*atTimeCode*/,
348  's' /*atTimeModifier*/,
349  4 /*deltaCode*/,
350  'D' /*letter*/,
351  },
352  // Rule AT 2006 only - Apr Sun>=1 2:00s 0 S
353  {
354  6 /*fromYearTiny*/,
355  6 /*toYearTiny*/,
356  4 /*inMonth*/,
357  7 /*onDayOfWeek*/,
358  1 /*onDayOfMonth*/,
359  8 /*atTimeCode*/,
360  's' /*atTimeModifier*/,
361  0 /*deltaCode*/,
362  'S' /*letter*/,
363  },
364  // Rule AT 2007 only - Mar lastSun 2:00s 0 S
365  {
366  7 /*fromYearTiny*/,
367  7 /*toYearTiny*/,
368  3 /*inMonth*/,
369  7 /*onDayOfWeek*/,
370  0 /*onDayOfMonth*/,
371  8 /*atTimeCode*/,
372  's' /*atTimeModifier*/,
373  0 /*deltaCode*/,
374  'S' /*letter*/,
375  },
376  // Rule AT 2008 max - Apr Sun>=1 2:00s 0 S
377  {
378  8 /*fromYearTiny*/,
379  126 /*toYearTiny*/,
380  4 /*inMonth*/,
381  7 /*onDayOfWeek*/,
382  1 /*onDayOfMonth*/,
383  8 /*atTimeCode*/,
384  's' /*atTimeModifier*/,
385  0 /*deltaCode*/,
386  'S' /*letter*/,
387  },
388 
389 };
390 
391 
392 
393 const extended::ZonePolicy kPolicyAT = {
394  8 /*numRules*/,
395  kZoneRulesAT /*rules*/,
396  0 /* numLetters */,
397  nullptr /* letters */,
398 };
399 
400 //---------------------------------------------------------------------------
401 // Policy name: AV
402 // Rules: 9
403 // Memory (8-bit): 87
404 // Memory (32-bit): 91
405 //---------------------------------------------------------------------------
406 
407 static const extended::ZoneRule kZoneRulesAV[] = {
408  // Rule AV 1988 1999 - Oct lastSun 2:00s 1:00 D
409  {
410  -12 /*fromYearTiny*/,
411  -1 /*toYearTiny*/,
412  10 /*inMonth*/,
413  7 /*onDayOfWeek*/,
414  0 /*onDayOfMonth*/,
415  8 /*atTimeCode*/,
416  's' /*atTimeModifier*/,
417  4 /*deltaCode*/,
418  'D' /*letter*/,
419  },
420  // Rule AV 1991 1994 - Mar Sun>=1 2:00s 0 S
421  {
422  -9 /*fromYearTiny*/,
423  -6 /*toYearTiny*/,
424  3 /*inMonth*/,
425  7 /*onDayOfWeek*/,
426  1 /*onDayOfMonth*/,
427  8 /*atTimeCode*/,
428  's' /*atTimeModifier*/,
429  0 /*deltaCode*/,
430  'S' /*letter*/,
431  },
432  // Rule AV 1995 2005 - Mar lastSun 2:00s 0 S
433  {
434  -5 /*fromYearTiny*/,
435  5 /*toYearTiny*/,
436  3 /*inMonth*/,
437  7 /*onDayOfWeek*/,
438  0 /*onDayOfMonth*/,
439  8 /*atTimeCode*/,
440  's' /*atTimeModifier*/,
441  0 /*deltaCode*/,
442  'S' /*letter*/,
443  },
444  // Rule AV 2000 only - Aug lastSun 2:00s 1:00 D
445  {
446  0 /*fromYearTiny*/,
447  0 /*toYearTiny*/,
448  8 /*inMonth*/,
449  7 /*onDayOfWeek*/,
450  0 /*onDayOfMonth*/,
451  8 /*atTimeCode*/,
452  's' /*atTimeModifier*/,
453  4 /*deltaCode*/,
454  'D' /*letter*/,
455  },
456  // Rule AV 2001 2007 - Oct lastSun 2:00s 1:00 D
457  {
458  1 /*fromYearTiny*/,
459  7 /*toYearTiny*/,
460  10 /*inMonth*/,
461  7 /*onDayOfWeek*/,
462  0 /*onDayOfMonth*/,
463  8 /*atTimeCode*/,
464  's' /*atTimeModifier*/,
465  4 /*deltaCode*/,
466  'D' /*letter*/,
467  },
468  // Rule AV 2006 only - Apr Sun>=1 2:00s 0 S
469  {
470  6 /*fromYearTiny*/,
471  6 /*toYearTiny*/,
472  4 /*inMonth*/,
473  7 /*onDayOfWeek*/,
474  1 /*onDayOfMonth*/,
475  8 /*atTimeCode*/,
476  's' /*atTimeModifier*/,
477  0 /*deltaCode*/,
478  'S' /*letter*/,
479  },
480  // Rule AV 2007 only - Mar lastSun 2:00s 0 S
481  {
482  7 /*fromYearTiny*/,
483  7 /*toYearTiny*/,
484  3 /*inMonth*/,
485  7 /*onDayOfWeek*/,
486  0 /*onDayOfMonth*/,
487  8 /*atTimeCode*/,
488  's' /*atTimeModifier*/,
489  0 /*deltaCode*/,
490  'S' /*letter*/,
491  },
492  // Rule AV 2008 max - Apr Sun>=1 2:00s 0 S
493  {
494  8 /*fromYearTiny*/,
495  126 /*toYearTiny*/,
496  4 /*inMonth*/,
497  7 /*onDayOfWeek*/,
498  1 /*onDayOfMonth*/,
499  8 /*atTimeCode*/,
500  's' /*atTimeModifier*/,
501  0 /*deltaCode*/,
502  'S' /*letter*/,
503  },
504  // Rule AV 2008 max - Oct Sun>=1 2:00s 1:00 D
505  {
506  8 /*fromYearTiny*/,
507  126 /*toYearTiny*/,
508  10 /*inMonth*/,
509  7 /*onDayOfWeek*/,
510  1 /*onDayOfMonth*/,
511  8 /*atTimeCode*/,
512  's' /*atTimeModifier*/,
513  4 /*deltaCode*/,
514  'D' /*letter*/,
515  },
516 
517 };
518 
519 
520 
521 const extended::ZonePolicy kPolicyAV = {
522  9 /*numRules*/,
523  kZoneRulesAV /*rules*/,
524  0 /* numLetters */,
525  nullptr /* letters */,
526 };
527 
528 //---------------------------------------------------------------------------
529 // Policy name: AW
530 // Rules: 4
531 // Memory (8-bit): 42
532 // Memory (32-bit): 46
533 //---------------------------------------------------------------------------
534 
535 static const extended::ZoneRule kZoneRulesAW[] = {
536  // Rule AW 1992 only - Mar Sun>=1 2:00s 0 S
537  {
538  -8 /*fromYearTiny*/,
539  -8 /*toYearTiny*/,
540  3 /*inMonth*/,
541  7 /*onDayOfWeek*/,
542  1 /*onDayOfMonth*/,
543  8 /*atTimeCode*/,
544  's' /*atTimeModifier*/,
545  0 /*deltaCode*/,
546  'S' /*letter*/,
547  },
548  // Rule AW 2006 only - Dec 3 2:00s 1:00 D
549  {
550  6 /*fromYearTiny*/,
551  6 /*toYearTiny*/,
552  12 /*inMonth*/,
553  0 /*onDayOfWeek*/,
554  3 /*onDayOfMonth*/,
555  8 /*atTimeCode*/,
556  's' /*atTimeModifier*/,
557  4 /*deltaCode*/,
558  'D' /*letter*/,
559  },
560  // Rule AW 2007 2009 - Mar lastSun 2:00s 0 S
561  {
562  7 /*fromYearTiny*/,
563  9 /*toYearTiny*/,
564  3 /*inMonth*/,
565  7 /*onDayOfWeek*/,
566  0 /*onDayOfMonth*/,
567  8 /*atTimeCode*/,
568  's' /*atTimeModifier*/,
569  0 /*deltaCode*/,
570  'S' /*letter*/,
571  },
572  // Rule AW 2007 2008 - Oct lastSun 2:00s 1:00 D
573  {
574  7 /*fromYearTiny*/,
575  8 /*toYearTiny*/,
576  10 /*inMonth*/,
577  7 /*onDayOfWeek*/,
578  0 /*onDayOfMonth*/,
579  8 /*atTimeCode*/,
580  's' /*atTimeModifier*/,
581  4 /*deltaCode*/,
582  'D' /*letter*/,
583  },
584 
585 };
586 
587 
588 
589 const extended::ZonePolicy kPolicyAW = {
590  4 /*numRules*/,
591  kZoneRulesAW /*rules*/,
592  0 /* numLetters */,
593  nullptr /* letters */,
594 };
595 
596 //---------------------------------------------------------------------------
597 // Policy name: Arg
598 // Rules: 6
599 // Memory (8-bit): 60
600 // Memory (32-bit): 64
601 //---------------------------------------------------------------------------
602 
603 static const extended::ZoneRule kZoneRulesArg[] = {
604  // Rule Arg 1989 1993 - Mar Sun>=1 0:00 0 -
605  {
606  -11 /*fromYearTiny*/,
607  -7 /*toYearTiny*/,
608  3 /*inMonth*/,
609  7 /*onDayOfWeek*/,
610  1 /*onDayOfMonth*/,
611  0 /*atTimeCode*/,
612  'w' /*atTimeModifier*/,
613  0 /*deltaCode*/,
614  '-' /*letter*/,
615  },
616  // Rule Arg 1999 only - Oct Sun>=1 0:00 1:00 -
617  {
618  -1 /*fromYearTiny*/,
619  -1 /*toYearTiny*/,
620  10 /*inMonth*/,
621  7 /*onDayOfWeek*/,
622  1 /*onDayOfMonth*/,
623  0 /*atTimeCode*/,
624  'w' /*atTimeModifier*/,
625  4 /*deltaCode*/,
626  '-' /*letter*/,
627  },
628  // Rule Arg 2000 only - Mar 3 0:00 0 -
629  {
630  0 /*fromYearTiny*/,
631  0 /*toYearTiny*/,
632  3 /*inMonth*/,
633  0 /*onDayOfWeek*/,
634  3 /*onDayOfMonth*/,
635  0 /*atTimeCode*/,
636  'w' /*atTimeModifier*/,
637  0 /*deltaCode*/,
638  '-' /*letter*/,
639  },
640  // Rule Arg 2007 only - Dec 30 0:00 1:00 -
641  {
642  7 /*fromYearTiny*/,
643  7 /*toYearTiny*/,
644  12 /*inMonth*/,
645  0 /*onDayOfWeek*/,
646  30 /*onDayOfMonth*/,
647  0 /*atTimeCode*/,
648  'w' /*atTimeModifier*/,
649  4 /*deltaCode*/,
650  '-' /*letter*/,
651  },
652  // Rule Arg 2008 2009 - Mar Sun>=15 0:00 0 -
653  {
654  8 /*fromYearTiny*/,
655  9 /*toYearTiny*/,
656  3 /*inMonth*/,
657  7 /*onDayOfWeek*/,
658  15 /*onDayOfMonth*/,
659  0 /*atTimeCode*/,
660  'w' /*atTimeModifier*/,
661  0 /*deltaCode*/,
662  '-' /*letter*/,
663  },
664  // Rule Arg 2008 only - Oct Sun>=15 0:00 1:00 -
665  {
666  8 /*fromYearTiny*/,
667  8 /*toYearTiny*/,
668  10 /*inMonth*/,
669  7 /*onDayOfWeek*/,
670  15 /*onDayOfMonth*/,
671  0 /*atTimeCode*/,
672  'w' /*atTimeModifier*/,
673  4 /*deltaCode*/,
674  '-' /*letter*/,
675  },
676 
677 };
678 
679 
680 
681 const extended::ZonePolicy kPolicyArg = {
682  6 /*numRules*/,
683  kZoneRulesArg /*rules*/,
684  0 /* numLetters */,
685  nullptr /* letters */,
686 };
687 
688 //---------------------------------------------------------------------------
689 // Policy name: Armenia
690 // Rules: 3
691 // Memory (8-bit): 33
692 // Memory (32-bit): 37
693 //---------------------------------------------------------------------------
694 
695 static const extended::ZoneRule kZoneRulesArmenia[] = {
696  // Anchor: Rule Armenia 2011 only - Oct lastSun 2:00s 0 -
697  {
698  -127 /*fromYearTiny*/,
699  -127 /*toYearTiny*/,
700  1 /*inMonth*/,
701  0 /*onDayOfWeek*/,
702  1 /*onDayOfMonth*/,
703  0 /*atTimeCode*/,
704  'w' /*atTimeModifier*/,
705  0 /*deltaCode*/,
706  '-' /*letter*/,
707  },
708  // Rule Armenia 2011 only - Mar lastSun 2:00s 1:00 -
709  {
710  11 /*fromYearTiny*/,
711  11 /*toYearTiny*/,
712  3 /*inMonth*/,
713  7 /*onDayOfWeek*/,
714  0 /*onDayOfMonth*/,
715  8 /*atTimeCode*/,
716  's' /*atTimeModifier*/,
717  4 /*deltaCode*/,
718  '-' /*letter*/,
719  },
720  // Rule Armenia 2011 only - Oct lastSun 2:00s 0 -
721  {
722  11 /*fromYearTiny*/,
723  11 /*toYearTiny*/,
724  10 /*inMonth*/,
725  7 /*onDayOfWeek*/,
726  0 /*onDayOfMonth*/,
727  8 /*atTimeCode*/,
728  's' /*atTimeModifier*/,
729  0 /*deltaCode*/,
730  '-' /*letter*/,
731  },
732 
733 };
734 
735 
736 
737 const extended::ZonePolicy kPolicyArmenia = {
738  3 /*numRules*/,
739  kZoneRulesArmenia /*rules*/,
740  0 /* numLetters */,
741  nullptr /* letters */,
742 };
743 
744 //---------------------------------------------------------------------------
745 // Policy name: Aus
746 // Rules: 1
747 // Memory (8-bit): 15
748 // Memory (32-bit): 19
749 //---------------------------------------------------------------------------
750 
751 static const extended::ZoneRule kZoneRulesAus[] = {
752  // Rule Aus 1943 1944 - Mar lastSun 2:00 0 S
753  {
754  -57 /*fromYearTiny*/,
755  -56 /*toYearTiny*/,
756  3 /*inMonth*/,
757  7 /*onDayOfWeek*/,
758  0 /*onDayOfMonth*/,
759  8 /*atTimeCode*/,
760  'w' /*atTimeModifier*/,
761  0 /*deltaCode*/,
762  'S' /*letter*/,
763  },
764 
765 };
766 
767 
768 
769 const extended::ZonePolicy kPolicyAus = {
770  1 /*numRules*/,
771  kZoneRulesAus /*rules*/,
772  0 /* numLetters */,
773  nullptr /* letters */,
774 };
775 
776 //---------------------------------------------------------------------------
777 // Policy name: Azer
778 // Rules: 2
779 // Memory (8-bit): 24
780 // Memory (32-bit): 28
781 //---------------------------------------------------------------------------
782 
783 static const extended::ZoneRule kZoneRulesAzer[] = {
784  // Rule Azer 1997 2015 - Mar lastSun 4:00 1:00 -
785  {
786  -3 /*fromYearTiny*/,
787  15 /*toYearTiny*/,
788  3 /*inMonth*/,
789  7 /*onDayOfWeek*/,
790  0 /*onDayOfMonth*/,
791  16 /*atTimeCode*/,
792  'w' /*atTimeModifier*/,
793  4 /*deltaCode*/,
794  '-' /*letter*/,
795  },
796  // Rule Azer 1997 2015 - Oct lastSun 5:00 0 -
797  {
798  -3 /*fromYearTiny*/,
799  15 /*toYearTiny*/,
800  10 /*inMonth*/,
801  7 /*onDayOfWeek*/,
802  0 /*onDayOfMonth*/,
803  20 /*atTimeCode*/,
804  'w' /*atTimeModifier*/,
805  0 /*deltaCode*/,
806  '-' /*letter*/,
807  },
808 
809 };
810 
811 
812 
813 const extended::ZonePolicy kPolicyAzer = {
814  2 /*numRules*/,
815  kZoneRulesAzer /*rules*/,
816  0 /* numLetters */,
817  nullptr /* letters */,
818 };
819 
820 //---------------------------------------------------------------------------
821 // Policy name: Barb
822 // Rules: 1
823 // Memory (8-bit): 15
824 // Memory (32-bit): 19
825 //---------------------------------------------------------------------------
826 
827 static const extended::ZoneRule kZoneRulesBarb[] = {
828  // Rule Barb 1980 only - Sep 25 2:00 0 S
829  {
830  -20 /*fromYearTiny*/,
831  -20 /*toYearTiny*/,
832  9 /*inMonth*/,
833  0 /*onDayOfWeek*/,
834  25 /*onDayOfMonth*/,
835  8 /*atTimeCode*/,
836  'w' /*atTimeModifier*/,
837  0 /*deltaCode*/,
838  'S' /*letter*/,
839  },
840 
841 };
842 
843 
844 
845 const extended::ZonePolicy kPolicyBarb = {
846  1 /*numRules*/,
847  kZoneRulesBarb /*rules*/,
848  0 /* numLetters */,
849  nullptr /* letters */,
850 };
851 
852 //---------------------------------------------------------------------------
853 // Policy name: Belize
854 // Rules: 1
855 // Memory (8-bit): 21
856 // Memory (32-bit): 27
857 //---------------------------------------------------------------------------
858 
859 static const extended::ZoneRule kZoneRulesBelize[] = {
860  // Rule Belize 1983 only - Feb 12 0:00 0 CST
861  {
862  -17 /*fromYearTiny*/,
863  -17 /*toYearTiny*/,
864  2 /*inMonth*/,
865  0 /*onDayOfWeek*/,
866  12 /*onDayOfMonth*/,
867  0 /*atTimeCode*/,
868  'w' /*atTimeModifier*/,
869  0 /*deltaCode*/,
870  0 /*letter; "CST"*/,
871  },
872 
873 };
874 
875 static const char* const kLettersBelize[] = {
876  /*0*/ "CST",
877 
878 };
879 
880 
881 const extended::ZonePolicy kPolicyBelize = {
882  1 /*numRules*/,
883  kZoneRulesBelize /*rules*/,
884  1 /* numLetters */,
885  kLettersBelize /* letters */,
886 };
887 
888 //---------------------------------------------------------------------------
889 // Policy name: Brazil
890 // Rules: 28
891 // Memory (8-bit): 258
892 // Memory (32-bit): 262
893 //---------------------------------------------------------------------------
894 
895 static const extended::ZoneRule kZoneRulesBrazil[] = {
896  // Rule Brazil 1998 only - Oct 11 0:00 1:00 -
897  {
898  -2 /*fromYearTiny*/,
899  -2 /*toYearTiny*/,
900  10 /*inMonth*/,
901  0 /*onDayOfWeek*/,
902  11 /*onDayOfMonth*/,
903  0 /*atTimeCode*/,
904  'w' /*atTimeModifier*/,
905  4 /*deltaCode*/,
906  '-' /*letter*/,
907  },
908  // Rule Brazil 1999 only - Feb 21 0:00 0 -
909  {
910  -1 /*fromYearTiny*/,
911  -1 /*toYearTiny*/,
912  2 /*inMonth*/,
913  0 /*onDayOfWeek*/,
914  21 /*onDayOfMonth*/,
915  0 /*atTimeCode*/,
916  'w' /*atTimeModifier*/,
917  0 /*deltaCode*/,
918  '-' /*letter*/,
919  },
920  // Rule Brazil 1999 only - Oct 3 0:00 1:00 -
921  {
922  -1 /*fromYearTiny*/,
923  -1 /*toYearTiny*/,
924  10 /*inMonth*/,
925  0 /*onDayOfWeek*/,
926  3 /*onDayOfMonth*/,
927  0 /*atTimeCode*/,
928  'w' /*atTimeModifier*/,
929  4 /*deltaCode*/,
930  '-' /*letter*/,
931  },
932  // Rule Brazil 2000 only - Feb 27 0:00 0 -
933  {
934  0 /*fromYearTiny*/,
935  0 /*toYearTiny*/,
936  2 /*inMonth*/,
937  0 /*onDayOfWeek*/,
938  27 /*onDayOfMonth*/,
939  0 /*atTimeCode*/,
940  'w' /*atTimeModifier*/,
941  0 /*deltaCode*/,
942  '-' /*letter*/,
943  },
944  // Rule Brazil 2000 2001 - Oct Sun>=8 0:00 1:00 -
945  {
946  0 /*fromYearTiny*/,
947  1 /*toYearTiny*/,
948  10 /*inMonth*/,
949  7 /*onDayOfWeek*/,
950  8 /*onDayOfMonth*/,
951  0 /*atTimeCode*/,
952  'w' /*atTimeModifier*/,
953  4 /*deltaCode*/,
954  '-' /*letter*/,
955  },
956  // Rule Brazil 2001 2006 - Feb Sun>=15 0:00 0 -
957  {
958  1 /*fromYearTiny*/,
959  6 /*toYearTiny*/,
960  2 /*inMonth*/,
961  7 /*onDayOfWeek*/,
962  15 /*onDayOfMonth*/,
963  0 /*atTimeCode*/,
964  'w' /*atTimeModifier*/,
965  0 /*deltaCode*/,
966  '-' /*letter*/,
967  },
968  // Rule Brazil 2002 only - Nov 3 0:00 1:00 -
969  {
970  2 /*fromYearTiny*/,
971  2 /*toYearTiny*/,
972  11 /*inMonth*/,
973  0 /*onDayOfWeek*/,
974  3 /*onDayOfMonth*/,
975  0 /*atTimeCode*/,
976  'w' /*atTimeModifier*/,
977  4 /*deltaCode*/,
978  '-' /*letter*/,
979  },
980  // Rule Brazil 2003 only - Oct 19 0:00 1:00 -
981  {
982  3 /*fromYearTiny*/,
983  3 /*toYearTiny*/,
984  10 /*inMonth*/,
985  0 /*onDayOfWeek*/,
986  19 /*onDayOfMonth*/,
987  0 /*atTimeCode*/,
988  'w' /*atTimeModifier*/,
989  4 /*deltaCode*/,
990  '-' /*letter*/,
991  },
992  // Rule Brazil 2004 only - Nov 2 0:00 1:00 -
993  {
994  4 /*fromYearTiny*/,
995  4 /*toYearTiny*/,
996  11 /*inMonth*/,
997  0 /*onDayOfWeek*/,
998  2 /*onDayOfMonth*/,
999  0 /*atTimeCode*/,
1000  'w' /*atTimeModifier*/,
1001  4 /*deltaCode*/,
1002  '-' /*letter*/,
1003  },
1004  // Rule Brazil 2005 only - Oct 16 0:00 1:00 -
1005  {
1006  5 /*fromYearTiny*/,
1007  5 /*toYearTiny*/,
1008  10 /*inMonth*/,
1009  0 /*onDayOfWeek*/,
1010  16 /*onDayOfMonth*/,
1011  0 /*atTimeCode*/,
1012  'w' /*atTimeModifier*/,
1013  4 /*deltaCode*/,
1014  '-' /*letter*/,
1015  },
1016  // Rule Brazil 2006 only - Nov 5 0:00 1:00 -
1017  {
1018  6 /*fromYearTiny*/,
1019  6 /*toYearTiny*/,
1020  11 /*inMonth*/,
1021  0 /*onDayOfWeek*/,
1022  5 /*onDayOfMonth*/,
1023  0 /*atTimeCode*/,
1024  'w' /*atTimeModifier*/,
1025  4 /*deltaCode*/,
1026  '-' /*letter*/,
1027  },
1028  // Rule Brazil 2007 only - Feb 25 0:00 0 -
1029  {
1030  7 /*fromYearTiny*/,
1031  7 /*toYearTiny*/,
1032  2 /*inMonth*/,
1033  0 /*onDayOfWeek*/,
1034  25 /*onDayOfMonth*/,
1035  0 /*atTimeCode*/,
1036  'w' /*atTimeModifier*/,
1037  0 /*deltaCode*/,
1038  '-' /*letter*/,
1039  },
1040  // Rule Brazil 2007 only - Oct Sun>=8 0:00 1:00 -
1041  {
1042  7 /*fromYearTiny*/,
1043  7 /*toYearTiny*/,
1044  10 /*inMonth*/,
1045  7 /*onDayOfWeek*/,
1046  8 /*onDayOfMonth*/,
1047  0 /*atTimeCode*/,
1048  'w' /*atTimeModifier*/,
1049  4 /*deltaCode*/,
1050  '-' /*letter*/,
1051  },
1052  // Rule Brazil 2008 2017 - Oct Sun>=15 0:00 1:00 -
1053  {
1054  8 /*fromYearTiny*/,
1055  17 /*toYearTiny*/,
1056  10 /*inMonth*/,
1057  7 /*onDayOfWeek*/,
1058  15 /*onDayOfMonth*/,
1059  0 /*atTimeCode*/,
1060  'w' /*atTimeModifier*/,
1061  4 /*deltaCode*/,
1062  '-' /*letter*/,
1063  },
1064  // Rule Brazil 2008 2011 - Feb Sun>=15 0:00 0 -
1065  {
1066  8 /*fromYearTiny*/,
1067  11 /*toYearTiny*/,
1068  2 /*inMonth*/,
1069  7 /*onDayOfWeek*/,
1070  15 /*onDayOfMonth*/,
1071  0 /*atTimeCode*/,
1072  'w' /*atTimeModifier*/,
1073  0 /*deltaCode*/,
1074  '-' /*letter*/,
1075  },
1076  // Rule Brazil 2012 only - Feb Sun>=22 0:00 0 -
1077  {
1078  12 /*fromYearTiny*/,
1079  12 /*toYearTiny*/,
1080  2 /*inMonth*/,
1081  7 /*onDayOfWeek*/,
1082  22 /*onDayOfMonth*/,
1083  0 /*atTimeCode*/,
1084  'w' /*atTimeModifier*/,
1085  0 /*deltaCode*/,
1086  '-' /*letter*/,
1087  },
1088  // Rule Brazil 2013 2014 - Feb Sun>=15 0:00 0 -
1089  {
1090  13 /*fromYearTiny*/,
1091  14 /*toYearTiny*/,
1092  2 /*inMonth*/,
1093  7 /*onDayOfWeek*/,
1094  15 /*onDayOfMonth*/,
1095  0 /*atTimeCode*/,
1096  'w' /*atTimeModifier*/,
1097  0 /*deltaCode*/,
1098  '-' /*letter*/,
1099  },
1100  // Rule Brazil 2015 only - Feb Sun>=22 0:00 0 -
1101  {
1102  15 /*fromYearTiny*/,
1103  15 /*toYearTiny*/,
1104  2 /*inMonth*/,
1105  7 /*onDayOfWeek*/,
1106  22 /*onDayOfMonth*/,
1107  0 /*atTimeCode*/,
1108  'w' /*atTimeModifier*/,
1109  0 /*deltaCode*/,
1110  '-' /*letter*/,
1111  },
1112  // Rule Brazil 2016 2022 - Feb Sun>=15 0:00 0 -
1113  {
1114  16 /*fromYearTiny*/,
1115  22 /*toYearTiny*/,
1116  2 /*inMonth*/,
1117  7 /*onDayOfWeek*/,
1118  15 /*onDayOfMonth*/,
1119  0 /*atTimeCode*/,
1120  'w' /*atTimeModifier*/,
1121  0 /*deltaCode*/,
1122  '-' /*letter*/,
1123  },
1124  // Rule Brazil 2018 max - Nov Sun>=1 0:00 1:00 -
1125  {
1126  18 /*fromYearTiny*/,
1127  126 /*toYearTiny*/,
1128  11 /*inMonth*/,
1129  7 /*onDayOfWeek*/,
1130  1 /*onDayOfMonth*/,
1131  0 /*atTimeCode*/,
1132  'w' /*atTimeModifier*/,
1133  4 /*deltaCode*/,
1134  '-' /*letter*/,
1135  },
1136  // Rule Brazil 2023 only - Feb Sun>=22 0:00 0 -
1137  {
1138  23 /*fromYearTiny*/,
1139  23 /*toYearTiny*/,
1140  2 /*inMonth*/,
1141  7 /*onDayOfWeek*/,
1142  22 /*onDayOfMonth*/,
1143  0 /*atTimeCode*/,
1144  'w' /*atTimeModifier*/,
1145  0 /*deltaCode*/,
1146  '-' /*letter*/,
1147  },
1148  // Rule Brazil 2024 2025 - Feb Sun>=15 0:00 0 -
1149  {
1150  24 /*fromYearTiny*/,
1151  25 /*toYearTiny*/,
1152  2 /*inMonth*/,
1153  7 /*onDayOfWeek*/,
1154  15 /*onDayOfMonth*/,
1155  0 /*atTimeCode*/,
1156  'w' /*atTimeModifier*/,
1157  0 /*deltaCode*/,
1158  '-' /*letter*/,
1159  },
1160  // Rule Brazil 2026 only - Feb Sun>=22 0:00 0 -
1161  {
1162  26 /*fromYearTiny*/,
1163  26 /*toYearTiny*/,
1164  2 /*inMonth*/,
1165  7 /*onDayOfWeek*/,
1166  22 /*onDayOfMonth*/,
1167  0 /*atTimeCode*/,
1168  'w' /*atTimeModifier*/,
1169  0 /*deltaCode*/,
1170  '-' /*letter*/,
1171  },
1172  // Rule Brazil 2027 2033 - Feb Sun>=15 0:00 0 -
1173  {
1174  27 /*fromYearTiny*/,
1175  33 /*toYearTiny*/,
1176  2 /*inMonth*/,
1177  7 /*onDayOfWeek*/,
1178  15 /*onDayOfMonth*/,
1179  0 /*atTimeCode*/,
1180  'w' /*atTimeModifier*/,
1181  0 /*deltaCode*/,
1182  '-' /*letter*/,
1183  },
1184  // Rule Brazil 2034 only - Feb Sun>=22 0:00 0 -
1185  {
1186  34 /*fromYearTiny*/,
1187  34 /*toYearTiny*/,
1188  2 /*inMonth*/,
1189  7 /*onDayOfWeek*/,
1190  22 /*onDayOfMonth*/,
1191  0 /*atTimeCode*/,
1192  'w' /*atTimeModifier*/,
1193  0 /*deltaCode*/,
1194  '-' /*letter*/,
1195  },
1196  // Rule Brazil 2035 2036 - Feb Sun>=15 0:00 0 -
1197  {
1198  35 /*fromYearTiny*/,
1199  36 /*toYearTiny*/,
1200  2 /*inMonth*/,
1201  7 /*onDayOfWeek*/,
1202  15 /*onDayOfMonth*/,
1203  0 /*atTimeCode*/,
1204  'w' /*atTimeModifier*/,
1205  0 /*deltaCode*/,
1206  '-' /*letter*/,
1207  },
1208  // Rule Brazil 2037 only - Feb Sun>=22 0:00 0 -
1209  {
1210  37 /*fromYearTiny*/,
1211  37 /*toYearTiny*/,
1212  2 /*inMonth*/,
1213  7 /*onDayOfWeek*/,
1214  22 /*onDayOfMonth*/,
1215  0 /*atTimeCode*/,
1216  'w' /*atTimeModifier*/,
1217  0 /*deltaCode*/,
1218  '-' /*letter*/,
1219  },
1220  // Rule Brazil 2038 max - Feb Sun>=15 0:00 0 -
1221  {
1222  38 /*fromYearTiny*/,
1223  126 /*toYearTiny*/,
1224  2 /*inMonth*/,
1225  7 /*onDayOfWeek*/,
1226  15 /*onDayOfMonth*/,
1227  0 /*atTimeCode*/,
1228  'w' /*atTimeModifier*/,
1229  0 /*deltaCode*/,
1230  '-' /*letter*/,
1231  },
1232 
1233 };
1234 
1235 
1236 
1237 const extended::ZonePolicy kPolicyBrazil = {
1238  28 /*numRules*/,
1239  kZoneRulesBrazil /*rules*/,
1240  0 /* numLetters */,
1241  nullptr /* letters */,
1242 };
1243 
1244 //---------------------------------------------------------------------------
1245 // Policy name: C_Eur
1246 // Rules: 3
1247 // Memory (8-bit): 33
1248 // Memory (32-bit): 37
1249 //---------------------------------------------------------------------------
1250 
1251 static const extended::ZoneRule kZoneRulesC_Eur[] = {
1252  // Rule C-Eur 1979 1995 - Sep lastSun 2:00s 0 -
1253  {
1254  -21 /*fromYearTiny*/,
1255  -5 /*toYearTiny*/,
1256  9 /*inMonth*/,
1257  7 /*onDayOfWeek*/,
1258  0 /*onDayOfMonth*/,
1259  8 /*atTimeCode*/,
1260  's' /*atTimeModifier*/,
1261  0 /*deltaCode*/,
1262  '-' /*letter*/,
1263  },
1264  // Rule C-Eur 1981 max - Mar lastSun 2:00s 1:00 S
1265  {
1266  -19 /*fromYearTiny*/,
1267  126 /*toYearTiny*/,
1268  3 /*inMonth*/,
1269  7 /*onDayOfWeek*/,
1270  0 /*onDayOfMonth*/,
1271  8 /*atTimeCode*/,
1272  's' /*atTimeModifier*/,
1273  4 /*deltaCode*/,
1274  'S' /*letter*/,
1275  },
1276  // Rule C-Eur 1996 max - Oct lastSun 2:00s 0 -
1277  {
1278  -4 /*fromYearTiny*/,
1279  126 /*toYearTiny*/,
1280  10 /*inMonth*/,
1281  7 /*onDayOfWeek*/,
1282  0 /*onDayOfMonth*/,
1283  8 /*atTimeCode*/,
1284  's' /*atTimeModifier*/,
1285  0 /*deltaCode*/,
1286  '-' /*letter*/,
1287  },
1288 
1289 };
1290 
1291 
1292 
1293 const extended::ZonePolicy kPolicyC_Eur = {
1294  3 /*numRules*/,
1295  kZoneRulesC_Eur /*rules*/,
1296  0 /* numLetters */,
1297  nullptr /* letters */,
1298 };
1299 
1300 //---------------------------------------------------------------------------
1301 // Policy name: CO
1302 // Rules: 1
1303 // Memory (8-bit): 15
1304 // Memory (32-bit): 19
1305 //---------------------------------------------------------------------------
1306 
1307 static const extended::ZoneRule kZoneRulesCO[] = {
1308  // Rule CO 1993 only - Apr 4 0:00 0 -
1309  {
1310  -7 /*fromYearTiny*/,
1311  -7 /*toYearTiny*/,
1312  4 /*inMonth*/,
1313  0 /*onDayOfWeek*/,
1314  4 /*onDayOfMonth*/,
1315  0 /*atTimeCode*/,
1316  'w' /*atTimeModifier*/,
1317  0 /*deltaCode*/,
1318  '-' /*letter*/,
1319  },
1320 
1321 };
1322 
1323 
1324 
1325 const extended::ZonePolicy kPolicyCO = {
1326  1 /*numRules*/,
1327  kZoneRulesCO /*rules*/,
1328  0 /* numLetters */,
1329  nullptr /* letters */,
1330 };
1331 
1332 //---------------------------------------------------------------------------
1333 // Policy name: CR
1334 // Rules: 1
1335 // Memory (8-bit): 15
1336 // Memory (32-bit): 19
1337 //---------------------------------------------------------------------------
1338 
1339 static const extended::ZoneRule kZoneRulesCR[] = {
1340  // Rule CR 1992 only - Mar 15 0:00 0 S
1341  {
1342  -8 /*fromYearTiny*/,
1343  -8 /*toYearTiny*/,
1344  3 /*inMonth*/,
1345  0 /*onDayOfWeek*/,
1346  15 /*onDayOfMonth*/,
1347  0 /*atTimeCode*/,
1348  'w' /*atTimeModifier*/,
1349  0 /*deltaCode*/,
1350  'S' /*letter*/,
1351  },
1352 
1353 };
1354 
1355 
1356 
1357 const extended::ZonePolicy kPolicyCR = {
1358  1 /*numRules*/,
1359  kZoneRulesCR /*rules*/,
1360  0 /* numLetters */,
1361  nullptr /* letters */,
1362 };
1363 
1364 //---------------------------------------------------------------------------
1365 // Policy name: Canada
1366 // Rules: 5
1367 // Memory (8-bit): 51
1368 // Memory (32-bit): 55
1369 //---------------------------------------------------------------------------
1370 
1371 static const extended::ZoneRule kZoneRulesCanada[] = {
1372  // Rule Canada 1974 1986 - Apr lastSun 2:00 1:00 D
1373  {
1374  -26 /*fromYearTiny*/,
1375  -14 /*toYearTiny*/,
1376  4 /*inMonth*/,
1377  7 /*onDayOfWeek*/,
1378  0 /*onDayOfMonth*/,
1379  8 /*atTimeCode*/,
1380  'w' /*atTimeModifier*/,
1381  4 /*deltaCode*/,
1382  'D' /*letter*/,
1383  },
1384  // Rule Canada 1974 2006 - Oct lastSun 2:00 0 S
1385  {
1386  -26 /*fromYearTiny*/,
1387  6 /*toYearTiny*/,
1388  10 /*inMonth*/,
1389  7 /*onDayOfWeek*/,
1390  0 /*onDayOfMonth*/,
1391  8 /*atTimeCode*/,
1392  'w' /*atTimeModifier*/,
1393  0 /*deltaCode*/,
1394  'S' /*letter*/,
1395  },
1396  // Rule Canada 1987 2006 - Apr Sun>=1 2:00 1:00 D
1397  {
1398  -13 /*fromYearTiny*/,
1399  6 /*toYearTiny*/,
1400  4 /*inMonth*/,
1401  7 /*onDayOfWeek*/,
1402  1 /*onDayOfMonth*/,
1403  8 /*atTimeCode*/,
1404  'w' /*atTimeModifier*/,
1405  4 /*deltaCode*/,
1406  'D' /*letter*/,
1407  },
1408  // Rule Canada 2007 max - Mar Sun>=8 2:00 1:00 D
1409  {
1410  7 /*fromYearTiny*/,
1411  126 /*toYearTiny*/,
1412  3 /*inMonth*/,
1413  7 /*onDayOfWeek*/,
1414  8 /*onDayOfMonth*/,
1415  8 /*atTimeCode*/,
1416  'w' /*atTimeModifier*/,
1417  4 /*deltaCode*/,
1418  'D' /*letter*/,
1419  },
1420  // Rule Canada 2007 max - Nov Sun>=1 2:00 0 S
1421  {
1422  7 /*fromYearTiny*/,
1423  126 /*toYearTiny*/,
1424  11 /*inMonth*/,
1425  7 /*onDayOfWeek*/,
1426  1 /*onDayOfMonth*/,
1427  8 /*atTimeCode*/,
1428  'w' /*atTimeModifier*/,
1429  0 /*deltaCode*/,
1430  'S' /*letter*/,
1431  },
1432 
1433 };
1434 
1435 
1436 
1437 const extended::ZonePolicy kPolicyCanada = {
1438  5 /*numRules*/,
1439  kZoneRulesCanada /*rules*/,
1440  0 /* numLetters */,
1441  nullptr /* letters */,
1442 };
1443 
1444 //---------------------------------------------------------------------------
1445 // Policy name: Chatham
1446 // Rules: 5
1447 // Memory (8-bit): 51
1448 // Memory (32-bit): 55
1449 //---------------------------------------------------------------------------
1450 
1451 static const extended::ZoneRule kZoneRulesChatham[] = {
1452  // Rule Chatham 1989 only - Oct Sun>=8 2:45s 1:00 -
1453  {
1454  -11 /*fromYearTiny*/,
1455  -11 /*toYearTiny*/,
1456  10 /*inMonth*/,
1457  7 /*onDayOfWeek*/,
1458  8 /*onDayOfMonth*/,
1459  11 /*atTimeCode*/,
1460  's' /*atTimeModifier*/,
1461  4 /*deltaCode*/,
1462  '-' /*letter*/,
1463  },
1464  // Rule Chatham 1990 2006 - Oct Sun>=1 2:45s 1:00 -
1465  {
1466  -10 /*fromYearTiny*/,
1467  6 /*toYearTiny*/,
1468  10 /*inMonth*/,
1469  7 /*onDayOfWeek*/,
1470  1 /*onDayOfMonth*/,
1471  11 /*atTimeCode*/,
1472  's' /*atTimeModifier*/,
1473  4 /*deltaCode*/,
1474  '-' /*letter*/,
1475  },
1476  // Rule Chatham 1990 2007 - Mar Sun>=15 2:45s 0 -
1477  {
1478  -10 /*fromYearTiny*/,
1479  7 /*toYearTiny*/,
1480  3 /*inMonth*/,
1481  7 /*onDayOfWeek*/,
1482  15 /*onDayOfMonth*/,
1483  11 /*atTimeCode*/,
1484  's' /*atTimeModifier*/,
1485  0 /*deltaCode*/,
1486  '-' /*letter*/,
1487  },
1488  // Rule Chatham 2007 max - Sep lastSun 2:45s 1:00 -
1489  {
1490  7 /*fromYearTiny*/,
1491  126 /*toYearTiny*/,
1492  9 /*inMonth*/,
1493  7 /*onDayOfWeek*/,
1494  0 /*onDayOfMonth*/,
1495  11 /*atTimeCode*/,
1496  's' /*atTimeModifier*/,
1497  4 /*deltaCode*/,
1498  '-' /*letter*/,
1499  },
1500  // Rule Chatham 2008 max - Apr Sun>=1 2:45s 0 -
1501  {
1502  8 /*fromYearTiny*/,
1503  126 /*toYearTiny*/,
1504  4 /*inMonth*/,
1505  7 /*onDayOfWeek*/,
1506  1 /*onDayOfMonth*/,
1507  11 /*atTimeCode*/,
1508  's' /*atTimeModifier*/,
1509  0 /*deltaCode*/,
1510  '-' /*letter*/,
1511  },
1512 
1513 };
1514 
1515 
1516 
1517 const extended::ZonePolicy kPolicyChatham = {
1518  5 /*numRules*/,
1519  kZoneRulesChatham /*rules*/,
1520  0 /* numLetters */,
1521  nullptr /* letters */,
1522 };
1523 
1524 //---------------------------------------------------------------------------
1525 // Policy name: Chile
1526 // Rules: 15
1527 // Memory (8-bit): 141
1528 // Memory (32-bit): 145
1529 //---------------------------------------------------------------------------
1530 
1531 static const extended::ZoneRule kZoneRulesChile[] = {
1532  // Rule Chile 1998 only - Sep 27 4:00u 1:00 -
1533  {
1534  -2 /*fromYearTiny*/,
1535  -2 /*toYearTiny*/,
1536  9 /*inMonth*/,
1537  0 /*onDayOfWeek*/,
1538  27 /*onDayOfMonth*/,
1539  16 /*atTimeCode*/,
1540  'u' /*atTimeModifier*/,
1541  4 /*deltaCode*/,
1542  '-' /*letter*/,
1543  },
1544  // Rule Chile 1999 only - Apr 4 3:00u 0 -
1545  {
1546  -1 /*fromYearTiny*/,
1547  -1 /*toYearTiny*/,
1548  4 /*inMonth*/,
1549  0 /*onDayOfWeek*/,
1550  4 /*onDayOfMonth*/,
1551  12 /*atTimeCode*/,
1552  'u' /*atTimeModifier*/,
1553  0 /*deltaCode*/,
1554  '-' /*letter*/,
1555  },
1556  // Rule Chile 1999 2010 - Oct Sun>=9 4:00u 1:00 -
1557  {
1558  -1 /*fromYearTiny*/,
1559  10 /*toYearTiny*/,
1560  10 /*inMonth*/,
1561  7 /*onDayOfWeek*/,
1562  9 /*onDayOfMonth*/,
1563  16 /*atTimeCode*/,
1564  'u' /*atTimeModifier*/,
1565  4 /*deltaCode*/,
1566  '-' /*letter*/,
1567  },
1568  // Rule Chile 2000 2007 - Mar Sun>=9 3:00u 0 -
1569  {
1570  0 /*fromYearTiny*/,
1571  7 /*toYearTiny*/,
1572  3 /*inMonth*/,
1573  7 /*onDayOfWeek*/,
1574  9 /*onDayOfMonth*/,
1575  12 /*atTimeCode*/,
1576  'u' /*atTimeModifier*/,
1577  0 /*deltaCode*/,
1578  '-' /*letter*/,
1579  },
1580  // Rule Chile 2008 only - Mar 30 3:00u 0 -
1581  {
1582  8 /*fromYearTiny*/,
1583  8 /*toYearTiny*/,
1584  3 /*inMonth*/,
1585  0 /*onDayOfWeek*/,
1586  30 /*onDayOfMonth*/,
1587  12 /*atTimeCode*/,
1588  'u' /*atTimeModifier*/,
1589  0 /*deltaCode*/,
1590  '-' /*letter*/,
1591  },
1592  // Rule Chile 2009 only - Mar Sun>=9 3:00u 0 -
1593  {
1594  9 /*fromYearTiny*/,
1595  9 /*toYearTiny*/,
1596  3 /*inMonth*/,
1597  7 /*onDayOfWeek*/,
1598  9 /*onDayOfMonth*/,
1599  12 /*atTimeCode*/,
1600  'u' /*atTimeModifier*/,
1601  0 /*deltaCode*/,
1602  '-' /*letter*/,
1603  },
1604  // Rule Chile 2010 only - Apr Sun>=1 3:00u 0 -
1605  {
1606  10 /*fromYearTiny*/,
1607  10 /*toYearTiny*/,
1608  4 /*inMonth*/,
1609  7 /*onDayOfWeek*/,
1610  1 /*onDayOfMonth*/,
1611  12 /*atTimeCode*/,
1612  'u' /*atTimeModifier*/,
1613  0 /*deltaCode*/,
1614  '-' /*letter*/,
1615  },
1616  // Rule Chile 2011 only - May Sun>=2 3:00u 0 -
1617  {
1618  11 /*fromYearTiny*/,
1619  11 /*toYearTiny*/,
1620  5 /*inMonth*/,
1621  7 /*onDayOfWeek*/,
1622  2 /*onDayOfMonth*/,
1623  12 /*atTimeCode*/,
1624  'u' /*atTimeModifier*/,
1625  0 /*deltaCode*/,
1626  '-' /*letter*/,
1627  },
1628  // Rule Chile 2011 only - Aug Sun>=16 4:00u 1:00 -
1629  {
1630  11 /*fromYearTiny*/,
1631  11 /*toYearTiny*/,
1632  8 /*inMonth*/,
1633  7 /*onDayOfWeek*/,
1634  16 /*onDayOfMonth*/,
1635  16 /*atTimeCode*/,
1636  'u' /*atTimeModifier*/,
1637  4 /*deltaCode*/,
1638  '-' /*letter*/,
1639  },
1640  // Rule Chile 2012 2014 - Apr Sun>=23 3:00u 0 -
1641  {
1642  12 /*fromYearTiny*/,
1643  14 /*toYearTiny*/,
1644  4 /*inMonth*/,
1645  7 /*onDayOfWeek*/,
1646  23 /*onDayOfMonth*/,
1647  12 /*atTimeCode*/,
1648  'u' /*atTimeModifier*/,
1649  0 /*deltaCode*/,
1650  '-' /*letter*/,
1651  },
1652  // Rule Chile 2012 2014 - Sep Sun>=2 4:00u 1:00 -
1653  {
1654  12 /*fromYearTiny*/,
1655  14 /*toYearTiny*/,
1656  9 /*inMonth*/,
1657  7 /*onDayOfWeek*/,
1658  2 /*onDayOfMonth*/,
1659  16 /*atTimeCode*/,
1660  'u' /*atTimeModifier*/,
1661  4 /*deltaCode*/,
1662  '-' /*letter*/,
1663  },
1664  // Rule Chile 2016 2018 - May Sun>=9 3:00u 0 -
1665  {
1666  16 /*fromYearTiny*/,
1667  18 /*toYearTiny*/,
1668  5 /*inMonth*/,
1669  7 /*onDayOfWeek*/,
1670  9 /*onDayOfMonth*/,
1671  12 /*atTimeCode*/,
1672  'u' /*atTimeModifier*/,
1673  0 /*deltaCode*/,
1674  '-' /*letter*/,
1675  },
1676  // Rule Chile 2016 2018 - Aug Sun>=9 4:00u 1:00 -
1677  {
1678  16 /*fromYearTiny*/,
1679  18 /*toYearTiny*/,
1680  8 /*inMonth*/,
1681  7 /*onDayOfWeek*/,
1682  9 /*onDayOfMonth*/,
1683  16 /*atTimeCode*/,
1684  'u' /*atTimeModifier*/,
1685  4 /*deltaCode*/,
1686  '-' /*letter*/,
1687  },
1688  // Rule Chile 2019 max - Apr Sun>=2 3:00u 0 -
1689  {
1690  19 /*fromYearTiny*/,
1691  126 /*toYearTiny*/,
1692  4 /*inMonth*/,
1693  7 /*onDayOfWeek*/,
1694  2 /*onDayOfMonth*/,
1695  12 /*atTimeCode*/,
1696  'u' /*atTimeModifier*/,
1697  0 /*deltaCode*/,
1698  '-' /*letter*/,
1699  },
1700  // Rule Chile 2019 max - Sep Sun>=2 4:00u 1:00 -
1701  {
1702  19 /*fromYearTiny*/,
1703  126 /*toYearTiny*/,
1704  9 /*inMonth*/,
1705  7 /*onDayOfWeek*/,
1706  2 /*onDayOfMonth*/,
1707  16 /*atTimeCode*/,
1708  'u' /*atTimeModifier*/,
1709  4 /*deltaCode*/,
1710  '-' /*letter*/,
1711  },
1712 
1713 };
1714 
1715 
1716 
1717 const extended::ZonePolicy kPolicyChile = {
1718  15 /*numRules*/,
1719  kZoneRulesChile /*rules*/,
1720  0 /* numLetters */,
1721  nullptr /* letters */,
1722 };
1723 
1724 //---------------------------------------------------------------------------
1725 // Policy name: Cook
1726 // Rules: 1
1727 // Memory (8-bit): 15
1728 // Memory (32-bit): 19
1729 //---------------------------------------------------------------------------
1730 
1731 static const extended::ZoneRule kZoneRulesCook[] = {
1732  // Rule Cook 1979 1991 - Mar Sun>=1 0:00 0 -
1733  {
1734  -21 /*fromYearTiny*/,
1735  -9 /*toYearTiny*/,
1736  3 /*inMonth*/,
1737  7 /*onDayOfWeek*/,
1738  1 /*onDayOfMonth*/,
1739  0 /*atTimeCode*/,
1740  'w' /*atTimeModifier*/,
1741  0 /*deltaCode*/,
1742  '-' /*letter*/,
1743  },
1744 
1745 };
1746 
1747 
1748 
1749 const extended::ZonePolicy kPolicyCook = {
1750  1 /*numRules*/,
1751  kZoneRulesCook /*rules*/,
1752  0 /* numLetters */,
1753  nullptr /* letters */,
1754 };
1755 
1756 //---------------------------------------------------------------------------
1757 // Policy name: Cuba
1758 // Rules: 14
1759 // Memory (8-bit): 132
1760 // Memory (32-bit): 136
1761 //---------------------------------------------------------------------------
1762 
1763 static const extended::ZoneRule kZoneRulesCuba[] = {
1764  // Rule Cuba 1997 only - Oct 12 0:00s 0 S
1765  {
1766  -3 /*fromYearTiny*/,
1767  -3 /*toYearTiny*/,
1768  10 /*inMonth*/,
1769  0 /*onDayOfWeek*/,
1770  12 /*onDayOfMonth*/,
1771  0 /*atTimeCode*/,
1772  's' /*atTimeModifier*/,
1773  0 /*deltaCode*/,
1774  'S' /*letter*/,
1775  },
1776  // Rule Cuba 1998 1999 - Mar lastSun 0:00s 1:00 D
1777  {
1778  -2 /*fromYearTiny*/,
1779  -1 /*toYearTiny*/,
1780  3 /*inMonth*/,
1781  7 /*onDayOfWeek*/,
1782  0 /*onDayOfMonth*/,
1783  0 /*atTimeCode*/,
1784  's' /*atTimeModifier*/,
1785  4 /*deltaCode*/,
1786  'D' /*letter*/,
1787  },
1788  // Rule Cuba 1998 2003 - Oct lastSun 0:00s 0 S
1789  {
1790  -2 /*fromYearTiny*/,
1791  3 /*toYearTiny*/,
1792  10 /*inMonth*/,
1793  7 /*onDayOfWeek*/,
1794  0 /*onDayOfMonth*/,
1795  0 /*atTimeCode*/,
1796  's' /*atTimeModifier*/,
1797  0 /*deltaCode*/,
1798  'S' /*letter*/,
1799  },
1800  // Rule Cuba 2000 2003 - Apr Sun>=1 0:00s 1:00 D
1801  {
1802  0 /*fromYearTiny*/,
1803  3 /*toYearTiny*/,
1804  4 /*inMonth*/,
1805  7 /*onDayOfWeek*/,
1806  1 /*onDayOfMonth*/,
1807  0 /*atTimeCode*/,
1808  's' /*atTimeModifier*/,
1809  4 /*deltaCode*/,
1810  'D' /*letter*/,
1811  },
1812  // Rule Cuba 2004 only - Mar lastSun 0:00s 1:00 D
1813  {
1814  4 /*fromYearTiny*/,
1815  4 /*toYearTiny*/,
1816  3 /*inMonth*/,
1817  7 /*onDayOfWeek*/,
1818  0 /*onDayOfMonth*/,
1819  0 /*atTimeCode*/,
1820  's' /*atTimeModifier*/,
1821  4 /*deltaCode*/,
1822  'D' /*letter*/,
1823  },
1824  // Rule Cuba 2006 2010 - Oct lastSun 0:00s 0 S
1825  {
1826  6 /*fromYearTiny*/,
1827  10 /*toYearTiny*/,
1828  10 /*inMonth*/,
1829  7 /*onDayOfWeek*/,
1830  0 /*onDayOfMonth*/,
1831  0 /*atTimeCode*/,
1832  's' /*atTimeModifier*/,
1833  0 /*deltaCode*/,
1834  'S' /*letter*/,
1835  },
1836  // Rule Cuba 2007 only - Mar Sun>=8 0:00s 1:00 D
1837  {
1838  7 /*fromYearTiny*/,
1839  7 /*toYearTiny*/,
1840  3 /*inMonth*/,
1841  7 /*onDayOfWeek*/,
1842  8 /*onDayOfMonth*/,
1843  0 /*atTimeCode*/,
1844  's' /*atTimeModifier*/,
1845  4 /*deltaCode*/,
1846  'D' /*letter*/,
1847  },
1848  // Rule Cuba 2008 only - Mar Sun>=15 0:00s 1:00 D
1849  {
1850  8 /*fromYearTiny*/,
1851  8 /*toYearTiny*/,
1852  3 /*inMonth*/,
1853  7 /*onDayOfWeek*/,
1854  15 /*onDayOfMonth*/,
1855  0 /*atTimeCode*/,
1856  's' /*atTimeModifier*/,
1857  4 /*deltaCode*/,
1858  'D' /*letter*/,
1859  },
1860  // Rule Cuba 2009 2010 - Mar Sun>=8 0:00s 1:00 D
1861  {
1862  9 /*fromYearTiny*/,
1863  10 /*toYearTiny*/,
1864  3 /*inMonth*/,
1865  7 /*onDayOfWeek*/,
1866  8 /*onDayOfMonth*/,
1867  0 /*atTimeCode*/,
1868  's' /*atTimeModifier*/,
1869  4 /*deltaCode*/,
1870  'D' /*letter*/,
1871  },
1872  // Rule Cuba 2011 only - Mar Sun>=15 0:00s 1:00 D
1873  {
1874  11 /*fromYearTiny*/,
1875  11 /*toYearTiny*/,
1876  3 /*inMonth*/,
1877  7 /*onDayOfWeek*/,
1878  15 /*onDayOfMonth*/,
1879  0 /*atTimeCode*/,
1880  's' /*atTimeModifier*/,
1881  4 /*deltaCode*/,
1882  'D' /*letter*/,
1883  },
1884  // Rule Cuba 2011 only - Nov 13 0:00s 0 S
1885  {
1886  11 /*fromYearTiny*/,
1887  11 /*toYearTiny*/,
1888  11 /*inMonth*/,
1889  0 /*onDayOfWeek*/,
1890  13 /*onDayOfMonth*/,
1891  0 /*atTimeCode*/,
1892  's' /*atTimeModifier*/,
1893  0 /*deltaCode*/,
1894  'S' /*letter*/,
1895  },
1896  // Rule Cuba 2012 only - Apr 1 0:00s 1:00 D
1897  {
1898  12 /*fromYearTiny*/,
1899  12 /*toYearTiny*/,
1900  4 /*inMonth*/,
1901  0 /*onDayOfWeek*/,
1902  1 /*onDayOfMonth*/,
1903  0 /*atTimeCode*/,
1904  's' /*atTimeModifier*/,
1905  4 /*deltaCode*/,
1906  'D' /*letter*/,
1907  },
1908  // Rule Cuba 2012 max - Nov Sun>=1 0:00s 0 S
1909  {
1910  12 /*fromYearTiny*/,
1911  126 /*toYearTiny*/,
1912  11 /*inMonth*/,
1913  7 /*onDayOfWeek*/,
1914  1 /*onDayOfMonth*/,
1915  0 /*atTimeCode*/,
1916  's' /*atTimeModifier*/,
1917  0 /*deltaCode*/,
1918  'S' /*letter*/,
1919  },
1920  // Rule Cuba 2013 max - Mar Sun>=8 0:00s 1:00 D
1921  {
1922  13 /*fromYearTiny*/,
1923  126 /*toYearTiny*/,
1924  3 /*inMonth*/,
1925  7 /*onDayOfWeek*/,
1926  8 /*onDayOfMonth*/,
1927  0 /*atTimeCode*/,
1928  's' /*atTimeModifier*/,
1929  4 /*deltaCode*/,
1930  'D' /*letter*/,
1931  },
1932 
1933 };
1934 
1935 
1936 
1937 const extended::ZonePolicy kPolicyCuba = {
1938  14 /*numRules*/,
1939  kZoneRulesCuba /*rules*/,
1940  0 /* numLetters */,
1941  nullptr /* letters */,
1942 };
1943 
1944 //---------------------------------------------------------------------------
1945 // Policy name: Dhaka
1946 // Rules: 3
1947 // Memory (8-bit): 33
1948 // Memory (32-bit): 37
1949 //---------------------------------------------------------------------------
1950 
1951 static const extended::ZoneRule kZoneRulesDhaka[] = {
1952  // Anchor: Rule Dhaka 2009 only - Dec 31 24:00 0 -
1953  {
1954  -127 /*fromYearTiny*/,
1955  -127 /*toYearTiny*/,
1956  1 /*inMonth*/,
1957  0 /*onDayOfWeek*/,
1958  1 /*onDayOfMonth*/,
1959  0 /*atTimeCode*/,
1960  'w' /*atTimeModifier*/,
1961  0 /*deltaCode*/,
1962  '-' /*letter*/,
1963  },
1964  // Rule Dhaka 2009 only - Jun 19 23:00 1:00 -
1965  {
1966  9 /*fromYearTiny*/,
1967  9 /*toYearTiny*/,
1968  6 /*inMonth*/,
1969  0 /*onDayOfWeek*/,
1970  19 /*onDayOfMonth*/,
1971  92 /*atTimeCode*/,
1972  'w' /*atTimeModifier*/,
1973  4 /*deltaCode*/,
1974  '-' /*letter*/,
1975  },
1976  // Rule Dhaka 2009 only - Dec 31 24:00 0 -
1977  {
1978  9 /*fromYearTiny*/,
1979  9 /*toYearTiny*/,
1980  12 /*inMonth*/,
1981  0 /*onDayOfWeek*/,
1982  31 /*onDayOfMonth*/,
1983  96 /*atTimeCode*/,
1984  'w' /*atTimeModifier*/,
1985  0 /*deltaCode*/,
1986  '-' /*letter*/,
1987  },
1988 
1989 };
1990 
1991 
1992 
1993 const extended::ZonePolicy kPolicyDhaka = {
1994  3 /*numRules*/,
1995  kZoneRulesDhaka /*rules*/,
1996  0 /* numLetters */,
1997  nullptr /* letters */,
1998 };
1999 
2000 //---------------------------------------------------------------------------
2001 // Policy name: E_EurAsia
2002 // Rules: 3
2003 // Memory (8-bit): 33
2004 // Memory (32-bit): 37
2005 //---------------------------------------------------------------------------
2006 
2007 static const extended::ZoneRule kZoneRulesE_EurAsia[] = {
2008  // Rule E-EurAsia 1981 max - Mar lastSun 0:00 1:00 -
2009  {
2010  -19 /*fromYearTiny*/,
2011  126 /*toYearTiny*/,
2012  3 /*inMonth*/,
2013  7 /*onDayOfWeek*/,
2014  0 /*onDayOfMonth*/,
2015  0 /*atTimeCode*/,
2016  'w' /*atTimeModifier*/,
2017  4 /*deltaCode*/,
2018  '-' /*letter*/,
2019  },
2020  // Rule E-EurAsia 1979 1995 - Sep lastSun 0:00 0 -
2021  {
2022  -21 /*fromYearTiny*/,
2023  -5 /*toYearTiny*/,
2024  9 /*inMonth*/,
2025  7 /*onDayOfWeek*/,
2026  0 /*onDayOfMonth*/,
2027  0 /*atTimeCode*/,
2028  'w' /*atTimeModifier*/,
2029  0 /*deltaCode*/,
2030  '-' /*letter*/,
2031  },
2032  // Rule E-EurAsia 1996 max - Oct lastSun 0:00 0 -
2033  {
2034  -4 /*fromYearTiny*/,
2035  126 /*toYearTiny*/,
2036  10 /*inMonth*/,
2037  7 /*onDayOfWeek*/,
2038  0 /*onDayOfMonth*/,
2039  0 /*atTimeCode*/,
2040  'w' /*atTimeModifier*/,
2041  0 /*deltaCode*/,
2042  '-' /*letter*/,
2043  },
2044 
2045 };
2046 
2047 
2048 
2049 const extended::ZonePolicy kPolicyE_EurAsia = {
2050  3 /*numRules*/,
2051  kZoneRulesE_EurAsia /*rules*/,
2052  0 /* numLetters */,
2053  nullptr /* letters */,
2054 };
2055 
2056 //---------------------------------------------------------------------------
2057 // Policy name: EU
2058 // Rules: 3
2059 // Memory (8-bit): 33
2060 // Memory (32-bit): 37
2061 //---------------------------------------------------------------------------
2062 
2063 static const extended::ZoneRule kZoneRulesEU[] = {
2064  // Rule EU 1979 1995 - Sep lastSun 1:00u 0 -
2065  {
2066  -21 /*fromYearTiny*/,
2067  -5 /*toYearTiny*/,
2068  9 /*inMonth*/,
2069  7 /*onDayOfWeek*/,
2070  0 /*onDayOfMonth*/,
2071  4 /*atTimeCode*/,
2072  'u' /*atTimeModifier*/,
2073  0 /*deltaCode*/,
2074  '-' /*letter*/,
2075  },
2076  // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
2077  {
2078  -19 /*fromYearTiny*/,
2079  126 /*toYearTiny*/,
2080  3 /*inMonth*/,
2081  7 /*onDayOfWeek*/,
2082  0 /*onDayOfMonth*/,
2083  4 /*atTimeCode*/,
2084  'u' /*atTimeModifier*/,
2085  4 /*deltaCode*/,
2086  'S' /*letter*/,
2087  },
2088  // Rule EU 1996 max - Oct lastSun 1:00u 0 -
2089  {
2090  -4 /*fromYearTiny*/,
2091  126 /*toYearTiny*/,
2092  10 /*inMonth*/,
2093  7 /*onDayOfWeek*/,
2094  0 /*onDayOfMonth*/,
2095  4 /*atTimeCode*/,
2096  'u' /*atTimeModifier*/,
2097  0 /*deltaCode*/,
2098  '-' /*letter*/,
2099  },
2100 
2101 };
2102 
2103 
2104 
2105 const extended::ZonePolicy kPolicyEU = {
2106  3 /*numRules*/,
2107  kZoneRulesEU /*rules*/,
2108  0 /* numLetters */,
2109  nullptr /* letters */,
2110 };
2111 
2112 //---------------------------------------------------------------------------
2113 // Policy name: EUAsia
2114 // Rules: 3
2115 // Memory (8-bit): 33
2116 // Memory (32-bit): 37
2117 //---------------------------------------------------------------------------
2118 
2119 static const extended::ZoneRule kZoneRulesEUAsia[] = {
2120  // Rule EUAsia 1981 max - Mar lastSun 1:00u 1:00 S
2121  {
2122  -19 /*fromYearTiny*/,
2123  126 /*toYearTiny*/,
2124  3 /*inMonth*/,
2125  7 /*onDayOfWeek*/,
2126  0 /*onDayOfMonth*/,
2127  4 /*atTimeCode*/,
2128  'u' /*atTimeModifier*/,
2129  4 /*deltaCode*/,
2130  'S' /*letter*/,
2131  },
2132  // Rule EUAsia 1979 1995 - Sep lastSun 1:00u 0 -
2133  {
2134  -21 /*fromYearTiny*/,
2135  -5 /*toYearTiny*/,
2136  9 /*inMonth*/,
2137  7 /*onDayOfWeek*/,
2138  0 /*onDayOfMonth*/,
2139  4 /*atTimeCode*/,
2140  'u' /*atTimeModifier*/,
2141  0 /*deltaCode*/,
2142  '-' /*letter*/,
2143  },
2144  // Rule EUAsia 1996 max - Oct lastSun 1:00u 0 -
2145  {
2146  -4 /*fromYearTiny*/,
2147  126 /*toYearTiny*/,
2148  10 /*inMonth*/,
2149  7 /*onDayOfWeek*/,
2150  0 /*onDayOfMonth*/,
2151  4 /*atTimeCode*/,
2152  'u' /*atTimeModifier*/,
2153  0 /*deltaCode*/,
2154  '-' /*letter*/,
2155  },
2156 
2157 };
2158 
2159 
2160 
2161 const extended::ZonePolicy kPolicyEUAsia = {
2162  3 /*numRules*/,
2163  kZoneRulesEUAsia /*rules*/,
2164  0 /* numLetters */,
2165  nullptr /* letters */,
2166 };
2167 
2168 //---------------------------------------------------------------------------
2169 // Policy name: Ecuador
2170 // Rules: 1
2171 // Memory (8-bit): 15
2172 // Memory (32-bit): 19
2173 //---------------------------------------------------------------------------
2174 
2175 static const extended::ZoneRule kZoneRulesEcuador[] = {
2176  // Rule Ecuador 1993 only - Feb 5 0:00 0 -
2177  {
2178  -7 /*fromYearTiny*/,
2179  -7 /*toYearTiny*/,
2180  2 /*inMonth*/,
2181  0 /*onDayOfWeek*/,
2182  5 /*onDayOfMonth*/,
2183  0 /*atTimeCode*/,
2184  'w' /*atTimeModifier*/,
2185  0 /*deltaCode*/,
2186  '-' /*letter*/,
2187  },
2188 
2189 };
2190 
2191 
2192 
2193 const extended::ZonePolicy kPolicyEcuador = {
2194  1 /*numRules*/,
2195  kZoneRulesEcuador /*rules*/,
2196  0 /* numLetters */,
2197  nullptr /* letters */,
2198 };
2199 
2200 //---------------------------------------------------------------------------
2201 // Policy name: Egypt
2202 // Rules: 14
2203 // Memory (8-bit): 132
2204 // Memory (32-bit): 136
2205 //---------------------------------------------------------------------------
2206 
2207 static const extended::ZoneRule kZoneRulesEgypt[] = {
2208  // Rule Egypt 1966 1994 - Oct 1 3:00 0 -
2209  {
2210  -34 /*fromYearTiny*/,
2211  -6 /*toYearTiny*/,
2212  10 /*inMonth*/,
2213  0 /*onDayOfWeek*/,
2214  1 /*onDayOfMonth*/,
2215  12 /*atTimeCode*/,
2216  'w' /*atTimeModifier*/,
2217  0 /*deltaCode*/,
2218  '-' /*letter*/,
2219  },
2220  // Rule Egypt 1995 2010 - Apr lastFri 0:00s 1:00 S
2221  {
2222  -5 /*fromYearTiny*/,
2223  10 /*toYearTiny*/,
2224  4 /*inMonth*/,
2225  5 /*onDayOfWeek*/,
2226  0 /*onDayOfMonth*/,
2227  0 /*atTimeCode*/,
2228  's' /*atTimeModifier*/,
2229  4 /*deltaCode*/,
2230  'S' /*letter*/,
2231  },
2232  // Rule Egypt 1995 2005 - Sep lastThu 24:00 0 -
2233  {
2234  -5 /*fromYearTiny*/,
2235  5 /*toYearTiny*/,
2236  9 /*inMonth*/,
2237  4 /*onDayOfWeek*/,
2238  0 /*onDayOfMonth*/,
2239  96 /*atTimeCode*/,
2240  'w' /*atTimeModifier*/,
2241  0 /*deltaCode*/,
2242  '-' /*letter*/,
2243  },
2244  // Rule Egypt 2006 only - Sep 21 24:00 0 -
2245  {
2246  6 /*fromYearTiny*/,
2247  6 /*toYearTiny*/,
2248  9 /*inMonth*/,
2249  0 /*onDayOfWeek*/,
2250  21 /*onDayOfMonth*/,
2251  96 /*atTimeCode*/,
2252  'w' /*atTimeModifier*/,
2253  0 /*deltaCode*/,
2254  '-' /*letter*/,
2255  },
2256  // Rule Egypt 2007 only - Sep Thu>=1 24:00 0 -
2257  {
2258  7 /*fromYearTiny*/,
2259  7 /*toYearTiny*/,
2260  9 /*inMonth*/,
2261  4 /*onDayOfWeek*/,
2262  1 /*onDayOfMonth*/,
2263  96 /*atTimeCode*/,
2264  'w' /*atTimeModifier*/,
2265  0 /*deltaCode*/,
2266  '-' /*letter*/,
2267  },
2268  // Rule Egypt 2008 only - Aug lastThu 24:00 0 -
2269  {
2270  8 /*fromYearTiny*/,
2271  8 /*toYearTiny*/,
2272  8 /*inMonth*/,
2273  4 /*onDayOfWeek*/,
2274  0 /*onDayOfMonth*/,
2275  96 /*atTimeCode*/,
2276  'w' /*atTimeModifier*/,
2277  0 /*deltaCode*/,
2278  '-' /*letter*/,
2279  },
2280  // Rule Egypt 2009 only - Aug 20 24:00 0 -
2281  {
2282  9 /*fromYearTiny*/,
2283  9 /*toYearTiny*/,
2284  8 /*inMonth*/,
2285  0 /*onDayOfWeek*/,
2286  20 /*onDayOfMonth*/,
2287  96 /*atTimeCode*/,
2288  'w' /*atTimeModifier*/,
2289  0 /*deltaCode*/,
2290  '-' /*letter*/,
2291  },
2292  // Rule Egypt 2010 only - Aug 10 24:00 0 -
2293  {
2294  10 /*fromYearTiny*/,
2295  10 /*toYearTiny*/,
2296  8 /*inMonth*/,
2297  0 /*onDayOfWeek*/,
2298  10 /*onDayOfMonth*/,
2299  96 /*atTimeCode*/,
2300  'w' /*atTimeModifier*/,
2301  0 /*deltaCode*/,
2302  '-' /*letter*/,
2303  },
2304  // Rule Egypt 2010 only - Sep 9 24:00 1:00 S
2305  {
2306  10 /*fromYearTiny*/,
2307  10 /*toYearTiny*/,
2308  9 /*inMonth*/,
2309  0 /*onDayOfWeek*/,
2310  9 /*onDayOfMonth*/,
2311  96 /*atTimeCode*/,
2312  'w' /*atTimeModifier*/,
2313  4 /*deltaCode*/,
2314  'S' /*letter*/,
2315  },
2316  // Rule Egypt 2010 only - Sep lastThu 24:00 0 -
2317  {
2318  10 /*fromYearTiny*/,
2319  10 /*toYearTiny*/,
2320  9 /*inMonth*/,
2321  4 /*onDayOfWeek*/,
2322  0 /*onDayOfMonth*/,
2323  96 /*atTimeCode*/,
2324  'w' /*atTimeModifier*/,
2325  0 /*deltaCode*/,
2326  '-' /*letter*/,
2327  },
2328  // Rule Egypt 2014 only - May 15 24:00 1:00 S
2329  {
2330  14 /*fromYearTiny*/,
2331  14 /*toYearTiny*/,
2332  5 /*inMonth*/,
2333  0 /*onDayOfWeek*/,
2334  15 /*onDayOfMonth*/,
2335  96 /*atTimeCode*/,
2336  'w' /*atTimeModifier*/,
2337  4 /*deltaCode*/,
2338  'S' /*letter*/,
2339  },
2340  // Rule Egypt 2014 only - Jun 26 24:00 0 -
2341  {
2342  14 /*fromYearTiny*/,
2343  14 /*toYearTiny*/,
2344  6 /*inMonth*/,
2345  0 /*onDayOfWeek*/,
2346  26 /*onDayOfMonth*/,
2347  96 /*atTimeCode*/,
2348  'w' /*atTimeModifier*/,
2349  0 /*deltaCode*/,
2350  '-' /*letter*/,
2351  },
2352  // Rule Egypt 2014 only - Jul 31 24:00 1:00 S
2353  {
2354  14 /*fromYearTiny*/,
2355  14 /*toYearTiny*/,
2356  7 /*inMonth*/,
2357  0 /*onDayOfWeek*/,
2358  31 /*onDayOfMonth*/,
2359  96 /*atTimeCode*/,
2360  'w' /*atTimeModifier*/,
2361  4 /*deltaCode*/,
2362  'S' /*letter*/,
2363  },
2364  // Rule Egypt 2014 only - Sep lastThu 24:00 0 -
2365  {
2366  14 /*fromYearTiny*/,
2367  14 /*toYearTiny*/,
2368  9 /*inMonth*/,
2369  4 /*onDayOfWeek*/,
2370  0 /*onDayOfMonth*/,
2371  96 /*atTimeCode*/,
2372  'w' /*atTimeModifier*/,
2373  0 /*deltaCode*/,
2374  '-' /*letter*/,
2375  },
2376 
2377 };
2378 
2379 
2380 
2381 const extended::ZonePolicy kPolicyEgypt = {
2382  14 /*numRules*/,
2383  kZoneRulesEgypt /*rules*/,
2384  0 /* numLetters */,
2385  nullptr /* letters */,
2386 };
2387 
2388 //---------------------------------------------------------------------------
2389 // Policy name: Eire
2390 // Rules: 3
2391 // Memory (8-bit): 33
2392 // Memory (32-bit): 37
2393 //---------------------------------------------------------------------------
2394 
2395 static const extended::ZoneRule kZoneRulesEire[] = {
2396  // Rule Eire 1981 max - Mar lastSun 1:00u 0 -
2397  {
2398  -19 /*fromYearTiny*/,
2399  126 /*toYearTiny*/,
2400  3 /*inMonth*/,
2401  7 /*onDayOfWeek*/,
2402  0 /*onDayOfMonth*/,
2403  4 /*atTimeCode*/,
2404  'u' /*atTimeModifier*/,
2405  0 /*deltaCode*/,
2406  '-' /*letter*/,
2407  },
2408  // Rule Eire 1990 1995 - Oct Sun>=22 1:00u -1:00 -
2409  {
2410  -10 /*fromYearTiny*/,
2411  -5 /*toYearTiny*/,
2412  10 /*inMonth*/,
2413  7 /*onDayOfWeek*/,
2414  22 /*onDayOfMonth*/,
2415  4 /*atTimeCode*/,
2416  'u' /*atTimeModifier*/,
2417  -4 /*deltaCode*/,
2418  '-' /*letter*/,
2419  },
2420  // Rule Eire 1996 max - Oct lastSun 1:00u -1:00 -
2421  {
2422  -4 /*fromYearTiny*/,
2423  126 /*toYearTiny*/,
2424  10 /*inMonth*/,
2425  7 /*onDayOfWeek*/,
2426  0 /*onDayOfMonth*/,
2427  4 /*atTimeCode*/,
2428  'u' /*atTimeModifier*/,
2429  -4 /*deltaCode*/,
2430  '-' /*letter*/,
2431  },
2432 
2433 };
2434 
2435 
2436 
2437 const extended::ZonePolicy kPolicyEire = {
2438  3 /*numRules*/,
2439  kZoneRulesEire /*rules*/,
2440  0 /* numLetters */,
2441  nullptr /* letters */,
2442 };
2443 
2444 //---------------------------------------------------------------------------
2445 // Policy name: Falk
2446 // Rules: 5
2447 // Memory (8-bit): 51
2448 // Memory (32-bit): 55
2449 //---------------------------------------------------------------------------
2450 
2451 static const extended::ZoneRule kZoneRulesFalk[] = {
2452  // Rule Falk 1984 1985 - Apr lastSun 0:00 0 -
2453  {
2454  -16 /*fromYearTiny*/,
2455  -15 /*toYearTiny*/,
2456  4 /*inMonth*/,
2457  7 /*onDayOfWeek*/,
2458  0 /*onDayOfMonth*/,
2459  0 /*atTimeCode*/,
2460  'w' /*atTimeModifier*/,
2461  0 /*deltaCode*/,
2462  '-' /*letter*/,
2463  },
2464  // Rule Falk 1985 2000 - Sep Sun>=9 0:00 1:00 -
2465  {
2466  -15 /*fromYearTiny*/,
2467  0 /*toYearTiny*/,
2468  9 /*inMonth*/,
2469  7 /*onDayOfWeek*/,
2470  9 /*onDayOfMonth*/,
2471  0 /*atTimeCode*/,
2472  'w' /*atTimeModifier*/,
2473  4 /*deltaCode*/,
2474  '-' /*letter*/,
2475  },
2476  // Rule Falk 1986 2000 - Apr Sun>=16 0:00 0 -
2477  {
2478  -14 /*fromYearTiny*/,
2479  0 /*toYearTiny*/,
2480  4 /*inMonth*/,
2481  7 /*onDayOfWeek*/,
2482  16 /*onDayOfMonth*/,
2483  0 /*atTimeCode*/,
2484  'w' /*atTimeModifier*/,
2485  0 /*deltaCode*/,
2486  '-' /*letter*/,
2487  },
2488  // Rule Falk 2001 2010 - Apr Sun>=15 2:00 0 -
2489  {
2490  1 /*fromYearTiny*/,
2491  10 /*toYearTiny*/,
2492  4 /*inMonth*/,
2493  7 /*onDayOfWeek*/,
2494  15 /*onDayOfMonth*/,
2495  8 /*atTimeCode*/,
2496  'w' /*atTimeModifier*/,
2497  0 /*deltaCode*/,
2498  '-' /*letter*/,
2499  },
2500  // Rule Falk 2001 2010 - Sep Sun>=1 2:00 1:00 -
2501  {
2502  1 /*fromYearTiny*/,
2503  10 /*toYearTiny*/,
2504  9 /*inMonth*/,
2505  7 /*onDayOfWeek*/,
2506  1 /*onDayOfMonth*/,
2507  8 /*atTimeCode*/,
2508  'w' /*atTimeModifier*/,
2509  4 /*deltaCode*/,
2510  '-' /*letter*/,
2511  },
2512 
2513 };
2514 
2515 
2516 
2517 const extended::ZonePolicy kPolicyFalk = {
2518  5 /*numRules*/,
2519  kZoneRulesFalk /*rules*/,
2520  0 /* numLetters */,
2521  nullptr /* letters */,
2522 };
2523 
2524 //---------------------------------------------------------------------------
2525 // Policy name: Fiji
2526 // Rules: 10
2527 // Memory (8-bit): 96
2528 // Memory (32-bit): 100
2529 //---------------------------------------------------------------------------
2530 
2531 static const extended::ZoneRule kZoneRulesFiji[] = {
2532  // Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 -
2533  {
2534  -2 /*fromYearTiny*/,
2535  -1 /*toYearTiny*/,
2536  11 /*inMonth*/,
2537  7 /*onDayOfWeek*/,
2538  1 /*onDayOfMonth*/,
2539  8 /*atTimeCode*/,
2540  'w' /*atTimeModifier*/,
2541  4 /*deltaCode*/,
2542  '-' /*letter*/,
2543  },
2544  // Rule Fiji 1999 2000 - Feb lastSun 3:00 0 -
2545  {
2546  -1 /*fromYearTiny*/,
2547  0 /*toYearTiny*/,
2548  2 /*inMonth*/,
2549  7 /*onDayOfWeek*/,
2550  0 /*onDayOfMonth*/,
2551  12 /*atTimeCode*/,
2552  'w' /*atTimeModifier*/,
2553  0 /*deltaCode*/,
2554  '-' /*letter*/,
2555  },
2556  // Rule Fiji 2009 only - Nov 29 2:00 1:00 -
2557  {
2558  9 /*fromYearTiny*/,
2559  9 /*toYearTiny*/,
2560  11 /*inMonth*/,
2561  0 /*onDayOfWeek*/,
2562  29 /*onDayOfMonth*/,
2563  8 /*atTimeCode*/,
2564  'w' /*atTimeModifier*/,
2565  4 /*deltaCode*/,
2566  '-' /*letter*/,
2567  },
2568  // Rule Fiji 2010 only - Mar lastSun 3:00 0 -
2569  {
2570  10 /*fromYearTiny*/,
2571  10 /*toYearTiny*/,
2572  3 /*inMonth*/,
2573  7 /*onDayOfWeek*/,
2574  0 /*onDayOfMonth*/,
2575  12 /*atTimeCode*/,
2576  'w' /*atTimeModifier*/,
2577  0 /*deltaCode*/,
2578  '-' /*letter*/,
2579  },
2580  // Rule Fiji 2010 2013 - Oct Sun>=21 2:00 1:00 -
2581  {
2582  10 /*fromYearTiny*/,
2583  13 /*toYearTiny*/,
2584  10 /*inMonth*/,
2585  7 /*onDayOfWeek*/,
2586  21 /*onDayOfMonth*/,
2587  8 /*atTimeCode*/,
2588  'w' /*atTimeModifier*/,
2589  4 /*deltaCode*/,
2590  '-' /*letter*/,
2591  },
2592  // Rule Fiji 2011 only - Mar Sun>=1 3:00 0 -
2593  {
2594  11 /*fromYearTiny*/,
2595  11 /*toYearTiny*/,
2596  3 /*inMonth*/,
2597  7 /*onDayOfWeek*/,
2598  1 /*onDayOfMonth*/,
2599  12 /*atTimeCode*/,
2600  'w' /*atTimeModifier*/,
2601  0 /*deltaCode*/,
2602  '-' /*letter*/,
2603  },
2604  // Rule Fiji 2012 2013 - Jan Sun>=18 3:00 0 -
2605  {
2606  12 /*fromYearTiny*/,
2607  13 /*toYearTiny*/,
2608  1 /*inMonth*/,
2609  7 /*onDayOfWeek*/,
2610  18 /*onDayOfMonth*/,
2611  12 /*atTimeCode*/,
2612  'w' /*atTimeModifier*/,
2613  0 /*deltaCode*/,
2614  '-' /*letter*/,
2615  },
2616  // Rule Fiji 2014 only - Jan Sun>=18 2:00 0 -
2617  {
2618  14 /*fromYearTiny*/,
2619  14 /*toYearTiny*/,
2620  1 /*inMonth*/,
2621  7 /*onDayOfWeek*/,
2622  18 /*onDayOfMonth*/,
2623  8 /*atTimeCode*/,
2624  'w' /*atTimeModifier*/,
2625  0 /*deltaCode*/,
2626  '-' /*letter*/,
2627  },
2628  // Rule Fiji 2014 max - Nov Sun>=1 2:00 1:00 -
2629  {
2630  14 /*fromYearTiny*/,
2631  126 /*toYearTiny*/,
2632  11 /*inMonth*/,
2633  7 /*onDayOfWeek*/,
2634  1 /*onDayOfMonth*/,
2635  8 /*atTimeCode*/,
2636  'w' /*atTimeModifier*/,
2637  4 /*deltaCode*/,
2638  '-' /*letter*/,
2639  },
2640  // Rule Fiji 2015 max - Jan Sun>=13 3:00 0 -
2641  {
2642  15 /*fromYearTiny*/,
2643  126 /*toYearTiny*/,
2644  1 /*inMonth*/,
2645  7 /*onDayOfWeek*/,
2646  13 /*onDayOfMonth*/,
2647  12 /*atTimeCode*/,
2648  'w' /*atTimeModifier*/,
2649  0 /*deltaCode*/,
2650  '-' /*letter*/,
2651  },
2652 
2653 };
2654 
2655 
2656 
2657 const extended::ZonePolicy kPolicyFiji = {
2658  10 /*numRules*/,
2659  kZoneRulesFiji /*rules*/,
2660  0 /* numLetters */,
2661  nullptr /* letters */,
2662 };
2663 
2664 //---------------------------------------------------------------------------
2665 // Policy name: Ghana
2666 // Rules: 1
2667 // Memory (8-bit): 15
2668 // Memory (32-bit): 19
2669 //---------------------------------------------------------------------------
2670 
2671 static const extended::ZoneRule kZoneRulesGhana[] = {
2672  // Rule Ghana 1920 1942 - Dec 31 0:00 0 -
2673  {
2674  -80 /*fromYearTiny*/,
2675  -58 /*toYearTiny*/,
2676  12 /*inMonth*/,
2677  0 /*onDayOfWeek*/,
2678  31 /*onDayOfMonth*/,
2679  0 /*atTimeCode*/,
2680  'w' /*atTimeModifier*/,
2681  0 /*deltaCode*/,
2682  '-' /*letter*/,
2683  },
2684 
2685 };
2686 
2687 
2688 
2689 const extended::ZonePolicy kPolicyGhana = {
2690  1 /*numRules*/,
2691  kZoneRulesGhana /*rules*/,
2692  0 /* numLetters */,
2693  nullptr /* letters */,
2694 };
2695 
2696 //---------------------------------------------------------------------------
2697 // Policy name: Guam
2698 // Rules: 1
2699 // Memory (8-bit): 15
2700 // Memory (32-bit): 19
2701 //---------------------------------------------------------------------------
2702 
2703 static const extended::ZoneRule kZoneRulesGuam[] = {
2704  // Rule Guam 1977 only - Aug 28 2:00 0 S
2705  {
2706  -23 /*fromYearTiny*/,
2707  -23 /*toYearTiny*/,
2708  8 /*inMonth*/,
2709  0 /*onDayOfWeek*/,
2710  28 /*onDayOfMonth*/,
2711  8 /*atTimeCode*/,
2712  'w' /*atTimeModifier*/,
2713  0 /*deltaCode*/,
2714  'S' /*letter*/,
2715  },
2716 
2717 };
2718 
2719 
2720 
2721 const extended::ZonePolicy kPolicyGuam = {
2722  1 /*numRules*/,
2723  kZoneRulesGuam /*rules*/,
2724  0 /* numLetters */,
2725  nullptr /* letters */,
2726 };
2727 
2728 //---------------------------------------------------------------------------
2729 // Policy name: Guat
2730 // Rules: 3
2731 // Memory (8-bit): 33
2732 // Memory (32-bit): 37
2733 //---------------------------------------------------------------------------
2734 
2735 static const extended::ZoneRule kZoneRulesGuat[] = {
2736  // Rule Guat 1991 only - Sep 7 0:00 0 S
2737  {
2738  -9 /*fromYearTiny*/,
2739  -9 /*toYearTiny*/,
2740  9 /*inMonth*/,
2741  0 /*onDayOfWeek*/,
2742  7 /*onDayOfMonth*/,
2743  0 /*atTimeCode*/,
2744  'w' /*atTimeModifier*/,
2745  0 /*deltaCode*/,
2746  'S' /*letter*/,
2747  },
2748  // Rule Guat 2006 only - Apr 30 0:00 1:00 D
2749  {
2750  6 /*fromYearTiny*/,
2751  6 /*toYearTiny*/,
2752  4 /*inMonth*/,
2753  0 /*onDayOfWeek*/,
2754  30 /*onDayOfMonth*/,
2755  0 /*atTimeCode*/,
2756  'w' /*atTimeModifier*/,
2757  4 /*deltaCode*/,
2758  'D' /*letter*/,
2759  },
2760  // Rule Guat 2006 only - Oct 1 0:00 0 S
2761  {
2762  6 /*fromYearTiny*/,
2763  6 /*toYearTiny*/,
2764  10 /*inMonth*/,
2765  0 /*onDayOfWeek*/,
2766  1 /*onDayOfMonth*/,
2767  0 /*atTimeCode*/,
2768  'w' /*atTimeModifier*/,
2769  0 /*deltaCode*/,
2770  'S' /*letter*/,
2771  },
2772 
2773 };
2774 
2775 
2776 
2777 const extended::ZonePolicy kPolicyGuat = {
2778  3 /*numRules*/,
2779  kZoneRulesGuat /*rules*/,
2780  0 /* numLetters */,
2781  nullptr /* letters */,
2782 };
2783 
2784 //---------------------------------------------------------------------------
2785 // Policy name: HK
2786 // Rules: 1
2787 // Memory (8-bit): 15
2788 // Memory (32-bit): 19
2789 //---------------------------------------------------------------------------
2790 
2791 static const extended::ZoneRule kZoneRulesHK[] = {
2792  // Rule HK 1979 only - Oct Sun>=16 3:30 0 -
2793  {
2794  -21 /*fromYearTiny*/,
2795  -21 /*toYearTiny*/,
2796  10 /*inMonth*/,
2797  7 /*onDayOfWeek*/,
2798  16 /*onDayOfMonth*/,
2799  14 /*atTimeCode*/,
2800  'w' /*atTimeModifier*/,
2801  0 /*deltaCode*/,
2802  '-' /*letter*/,
2803  },
2804 
2805 };
2806 
2807 
2808 
2809 const extended::ZonePolicy kPolicyHK = {
2810  1 /*numRules*/,
2811  kZoneRulesHK /*rules*/,
2812  0 /* numLetters */,
2813  nullptr /* letters */,
2814 };
2815 
2816 //---------------------------------------------------------------------------
2817 // Policy name: Haiti
2818 // Rules: 7
2819 // Memory (8-bit): 69
2820 // Memory (32-bit): 73
2821 //---------------------------------------------------------------------------
2822 
2823 static const extended::ZoneRule kZoneRulesHaiti[] = {
2824  // Rule Haiti 1988 1997 - Oct lastSun 1:00s 0 S
2825  {
2826  -12 /*fromYearTiny*/,
2827  -3 /*toYearTiny*/,
2828  10 /*inMonth*/,
2829  7 /*onDayOfWeek*/,
2830  0 /*onDayOfMonth*/,
2831  4 /*atTimeCode*/,
2832  's' /*atTimeModifier*/,
2833  0 /*deltaCode*/,
2834  'S' /*letter*/,
2835  },
2836  // Rule Haiti 2005 2006 - Apr Sun>=1 0:00 1:00 D
2837  {
2838  5 /*fromYearTiny*/,
2839  6 /*toYearTiny*/,
2840  4 /*inMonth*/,
2841  7 /*onDayOfWeek*/,
2842  1 /*onDayOfMonth*/,
2843  0 /*atTimeCode*/,
2844  'w' /*atTimeModifier*/,
2845  4 /*deltaCode*/,
2846  'D' /*letter*/,
2847  },
2848  // Rule Haiti 2005 2006 - Oct lastSun 0:00 0 S
2849  {
2850  5 /*fromYearTiny*/,
2851  6 /*toYearTiny*/,
2852  10 /*inMonth*/,
2853  7 /*onDayOfWeek*/,
2854  0 /*onDayOfMonth*/,
2855  0 /*atTimeCode*/,
2856  'w' /*atTimeModifier*/,
2857  0 /*deltaCode*/,
2858  'S' /*letter*/,
2859  },
2860  // Rule Haiti 2012 2015 - Mar Sun>=8 2:00 1:00 D
2861  {
2862  12 /*fromYearTiny*/,
2863  15 /*toYearTiny*/,
2864  3 /*inMonth*/,
2865  7 /*onDayOfWeek*/,
2866  8 /*onDayOfMonth*/,
2867  8 /*atTimeCode*/,
2868  'w' /*atTimeModifier*/,
2869  4 /*deltaCode*/,
2870  'D' /*letter*/,
2871  },
2872  // Rule Haiti 2012 2015 - Nov Sun>=1 2:00 0 S
2873  {
2874  12 /*fromYearTiny*/,
2875  15 /*toYearTiny*/,
2876  11 /*inMonth*/,
2877  7 /*onDayOfWeek*/,
2878  1 /*onDayOfMonth*/,
2879  8 /*atTimeCode*/,
2880  'w' /*atTimeModifier*/,
2881  0 /*deltaCode*/,
2882  'S' /*letter*/,
2883  },
2884  // Rule Haiti 2017 max - Mar Sun>=8 2:00 1:00 D
2885  {
2886  17 /*fromYearTiny*/,
2887  126 /*toYearTiny*/,
2888  3 /*inMonth*/,
2889  7 /*onDayOfWeek*/,
2890  8 /*onDayOfMonth*/,
2891  8 /*atTimeCode*/,
2892  'w' /*atTimeModifier*/,
2893  4 /*deltaCode*/,
2894  'D' /*letter*/,
2895  },
2896  // Rule Haiti 2017 max - Nov Sun>=1 2:00 0 S
2897  {
2898  17 /*fromYearTiny*/,
2899  126 /*toYearTiny*/,
2900  11 /*inMonth*/,
2901  7 /*onDayOfWeek*/,
2902  1 /*onDayOfMonth*/,
2903  8 /*atTimeCode*/,
2904  'w' /*atTimeModifier*/,
2905  0 /*deltaCode*/,
2906  'S' /*letter*/,
2907  },
2908 
2909 };
2910 
2911 
2912 
2913 const extended::ZonePolicy kPolicyHaiti = {
2914  7 /*numRules*/,
2915  kZoneRulesHaiti /*rules*/,
2916  0 /* numLetters */,
2917  nullptr /* letters */,
2918 };
2919 
2920 //---------------------------------------------------------------------------
2921 // Policy name: Holiday
2922 // Rules: 1
2923 // Memory (8-bit): 15
2924 // Memory (32-bit): 19
2925 //---------------------------------------------------------------------------
2926 
2927 static const extended::ZoneRule kZoneRulesHoliday[] = {
2928  // Rule Holiday 1993 1994 - Mar Sun>=1 2:00s 0 S
2929  {
2930  -7 /*fromYearTiny*/,
2931  -6 /*toYearTiny*/,
2932  3 /*inMonth*/,
2933  7 /*onDayOfWeek*/,
2934  1 /*onDayOfMonth*/,
2935  8 /*atTimeCode*/,
2936  's' /*atTimeModifier*/,
2937  0 /*deltaCode*/,
2938  'S' /*letter*/,
2939  },
2940 
2941 };
2942 
2943 
2944 
2945 const extended::ZonePolicy kPolicyHoliday = {
2946  1 /*numRules*/,
2947  kZoneRulesHoliday /*rules*/,
2948  0 /* numLetters */,
2949  nullptr /* letters */,
2950 };
2951 
2952 //---------------------------------------------------------------------------
2953 // Policy name: Hond
2954 // Rules: 3
2955 // Memory (8-bit): 33
2956 // Memory (32-bit): 37
2957 //---------------------------------------------------------------------------
2958 
2959 static const extended::ZoneRule kZoneRulesHond[] = {
2960  // Rule Hond 1987 1988 - Sep lastSun 0:00 0 S
2961  {
2962  -13 /*fromYearTiny*/,
2963  -12 /*toYearTiny*/,
2964  9 /*inMonth*/,
2965  7 /*onDayOfWeek*/,
2966  0 /*onDayOfMonth*/,
2967  0 /*atTimeCode*/,
2968  'w' /*atTimeModifier*/,
2969  0 /*deltaCode*/,
2970  'S' /*letter*/,
2971  },
2972  // Rule Hond 2006 only - May Sun>=1 0:00 1:00 D
2973  {
2974  6 /*fromYearTiny*/,
2975  6 /*toYearTiny*/,
2976  5 /*inMonth*/,
2977  7 /*onDayOfWeek*/,
2978  1 /*onDayOfMonth*/,
2979  0 /*atTimeCode*/,
2980  'w' /*atTimeModifier*/,
2981  4 /*deltaCode*/,
2982  'D' /*letter*/,
2983  },
2984  // Rule Hond 2006 only - Aug Mon>=1 0:00 0 S
2985  {
2986  6 /*fromYearTiny*/,
2987  6 /*toYearTiny*/,
2988  8 /*inMonth*/,
2989  1 /*onDayOfWeek*/,
2990  1 /*onDayOfMonth*/,
2991  0 /*atTimeCode*/,
2992  'w' /*atTimeModifier*/,
2993  0 /*deltaCode*/,
2994  'S' /*letter*/,
2995  },
2996 
2997 };
2998 
2999 
3000 
3001 const extended::ZonePolicy kPolicyHond = {
3002  3 /*numRules*/,
3003  kZoneRulesHond /*rules*/,
3004  0 /* numLetters */,
3005  nullptr /* letters */,
3006 };
3007 
3008 //---------------------------------------------------------------------------
3009 // Policy name: Iran
3010 // Rules: 55
3011 // Memory (8-bit): 501
3012 // Memory (32-bit): 505
3013 //---------------------------------------------------------------------------
3014 
3015 static const extended::ZoneRule kZoneRulesIran[] = {
3016  // Rule Iran 1996 only - Sep 20 24:00 0 -
3017  {
3018  -4 /*fromYearTiny*/,
3019  -4 /*toYearTiny*/,
3020  9 /*inMonth*/,
3021  0 /*onDayOfWeek*/,
3022  20 /*onDayOfMonth*/,
3023  96 /*atTimeCode*/,
3024  'w' /*atTimeModifier*/,
3025  0 /*deltaCode*/,
3026  '-' /*letter*/,
3027  },
3028  // Rule Iran 1997 1999 - Mar 21 24:00 1:00 -
3029  {
3030  -3 /*fromYearTiny*/,
3031  -1 /*toYearTiny*/,
3032  3 /*inMonth*/,
3033  0 /*onDayOfWeek*/,
3034  21 /*onDayOfMonth*/,
3035  96 /*atTimeCode*/,
3036  'w' /*atTimeModifier*/,
3037  4 /*deltaCode*/,
3038  '-' /*letter*/,
3039  },
3040  // Rule Iran 1997 1999 - Sep 21 24:00 0 -
3041  {
3042  -3 /*fromYearTiny*/,
3043  -1 /*toYearTiny*/,
3044  9 /*inMonth*/,
3045  0 /*onDayOfWeek*/,
3046  21 /*onDayOfMonth*/,
3047  96 /*atTimeCode*/,
3048  'w' /*atTimeModifier*/,
3049  0 /*deltaCode*/,
3050  '-' /*letter*/,
3051  },
3052  // Rule Iran 2000 only - Mar 20 24:00 1:00 -
3053  {
3054  0 /*fromYearTiny*/,
3055  0 /*toYearTiny*/,
3056  3 /*inMonth*/,
3057  0 /*onDayOfWeek*/,
3058  20 /*onDayOfMonth*/,
3059  96 /*atTimeCode*/,
3060  'w' /*atTimeModifier*/,
3061  4 /*deltaCode*/,
3062  '-' /*letter*/,
3063  },
3064  // Rule Iran 2000 only - Sep 20 24:00 0 -
3065  {
3066  0 /*fromYearTiny*/,
3067  0 /*toYearTiny*/,
3068  9 /*inMonth*/,
3069  0 /*onDayOfWeek*/,
3070  20 /*onDayOfMonth*/,
3071  96 /*atTimeCode*/,
3072  'w' /*atTimeModifier*/,
3073  0 /*deltaCode*/,
3074  '-' /*letter*/,
3075  },
3076  // Rule Iran 2001 2003 - Mar 21 24:00 1:00 -
3077  {
3078  1 /*fromYearTiny*/,
3079  3 /*toYearTiny*/,
3080  3 /*inMonth*/,
3081  0 /*onDayOfWeek*/,
3082  21 /*onDayOfMonth*/,
3083  96 /*atTimeCode*/,
3084  'w' /*atTimeModifier*/,
3085  4 /*deltaCode*/,
3086  '-' /*letter*/,
3087  },
3088  // Rule Iran 2001 2003 - Sep 21 24:00 0 -
3089  {
3090  1 /*fromYearTiny*/,
3091  3 /*toYearTiny*/,
3092  9 /*inMonth*/,
3093  0 /*onDayOfWeek*/,
3094  21 /*onDayOfMonth*/,
3095  96 /*atTimeCode*/,
3096  'w' /*atTimeModifier*/,
3097  0 /*deltaCode*/,
3098  '-' /*letter*/,
3099  },
3100  // Rule Iran 2004 only - Mar 20 24:00 1:00 -
3101  {
3102  4 /*fromYearTiny*/,
3103  4 /*toYearTiny*/,
3104  3 /*inMonth*/,
3105  0 /*onDayOfWeek*/,
3106  20 /*onDayOfMonth*/,
3107  96 /*atTimeCode*/,
3108  'w' /*atTimeModifier*/,
3109  4 /*deltaCode*/,
3110  '-' /*letter*/,
3111  },
3112  // Rule Iran 2004 only - Sep 20 24:00 0 -
3113  {
3114  4 /*fromYearTiny*/,
3115  4 /*toYearTiny*/,
3116  9 /*inMonth*/,
3117  0 /*onDayOfWeek*/,
3118  20 /*onDayOfMonth*/,
3119  96 /*atTimeCode*/,
3120  'w' /*atTimeModifier*/,
3121  0 /*deltaCode*/,
3122  '-' /*letter*/,
3123  },
3124  // Rule Iran 2005 only - Mar 21 24:00 1:00 -
3125  {
3126  5 /*fromYearTiny*/,
3127  5 /*toYearTiny*/,
3128  3 /*inMonth*/,
3129  0 /*onDayOfWeek*/,
3130  21 /*onDayOfMonth*/,
3131  96 /*atTimeCode*/,
3132  'w' /*atTimeModifier*/,
3133  4 /*deltaCode*/,
3134  '-' /*letter*/,
3135  },
3136  // Rule Iran 2005 only - Sep 21 24:00 0 -
3137  {
3138  5 /*fromYearTiny*/,
3139  5 /*toYearTiny*/,
3140  9 /*inMonth*/,
3141  0 /*onDayOfWeek*/,
3142  21 /*onDayOfMonth*/,
3143  96 /*atTimeCode*/,
3144  'w' /*atTimeModifier*/,
3145  0 /*deltaCode*/,
3146  '-' /*letter*/,
3147  },
3148  // Rule Iran 2008 only - Mar 20 24:00 1:00 -
3149  {
3150  8 /*fromYearTiny*/,
3151  8 /*toYearTiny*/,
3152  3 /*inMonth*/,
3153  0 /*onDayOfWeek*/,
3154  20 /*onDayOfMonth*/,
3155  96 /*atTimeCode*/,
3156  'w' /*atTimeModifier*/,
3157  4 /*deltaCode*/,
3158  '-' /*letter*/,
3159  },
3160  // Rule Iran 2008 only - Sep 20 24:00 0 -
3161  {
3162  8 /*fromYearTiny*/,
3163  8 /*toYearTiny*/,
3164  9 /*inMonth*/,
3165  0 /*onDayOfWeek*/,
3166  20 /*onDayOfMonth*/,
3167  96 /*atTimeCode*/,
3168  'w' /*atTimeModifier*/,
3169  0 /*deltaCode*/,
3170  '-' /*letter*/,
3171  },
3172  // Rule Iran 2009 2011 - Mar 21 24:00 1:00 -
3173  {
3174  9 /*fromYearTiny*/,
3175  11 /*toYearTiny*/,
3176  3 /*inMonth*/,
3177  0 /*onDayOfWeek*/,
3178  21 /*onDayOfMonth*/,
3179  96 /*atTimeCode*/,
3180  'w' /*atTimeModifier*/,
3181  4 /*deltaCode*/,
3182  '-' /*letter*/,
3183  },
3184  // Rule Iran 2009 2011 - Sep 21 24:00 0 -
3185  {
3186  9 /*fromYearTiny*/,
3187  11 /*toYearTiny*/,
3188  9 /*inMonth*/,
3189  0 /*onDayOfWeek*/,
3190  21 /*onDayOfMonth*/,
3191  96 /*atTimeCode*/,
3192  'w' /*atTimeModifier*/,
3193  0 /*deltaCode*/,
3194  '-' /*letter*/,
3195  },
3196  // Rule Iran 2012 only - Mar 20 24:00 1:00 -
3197  {
3198  12 /*fromYearTiny*/,
3199  12 /*toYearTiny*/,
3200  3 /*inMonth*/,
3201  0 /*onDayOfWeek*/,
3202  20 /*onDayOfMonth*/,
3203  96 /*atTimeCode*/,
3204  'w' /*atTimeModifier*/,
3205  4 /*deltaCode*/,
3206  '-' /*letter*/,
3207  },
3208  // Rule Iran 2012 only - Sep 20 24:00 0 -
3209  {
3210  12 /*fromYearTiny*/,
3211  12 /*toYearTiny*/,
3212  9 /*inMonth*/,
3213  0 /*onDayOfWeek*/,
3214  20 /*onDayOfMonth*/,
3215  96 /*atTimeCode*/,
3216  'w' /*atTimeModifier*/,
3217  0 /*deltaCode*/,
3218  '-' /*letter*/,
3219  },
3220  // Rule Iran 2013 2015 - Mar 21 24:00 1:00 -
3221  {
3222  13 /*fromYearTiny*/,
3223  15 /*toYearTiny*/,
3224  3 /*inMonth*/,
3225  0 /*onDayOfWeek*/,
3226  21 /*onDayOfMonth*/,
3227  96 /*atTimeCode*/,
3228  'w' /*atTimeModifier*/,
3229  4 /*deltaCode*/,
3230  '-' /*letter*/,
3231  },
3232  // Rule Iran 2013 2015 - Sep 21 24:00 0 -
3233  {
3234  13 /*fromYearTiny*/,
3235  15 /*toYearTiny*/,
3236  9 /*inMonth*/,
3237  0 /*onDayOfWeek*/,
3238  21 /*onDayOfMonth*/,
3239  96 /*atTimeCode*/,
3240  'w' /*atTimeModifier*/,
3241  0 /*deltaCode*/,
3242  '-' /*letter*/,
3243  },
3244  // Rule Iran 2016 only - Mar 20 24:00 1:00 -
3245  {
3246  16 /*fromYearTiny*/,
3247  16 /*toYearTiny*/,
3248  3 /*inMonth*/,
3249  0 /*onDayOfWeek*/,
3250  20 /*onDayOfMonth*/,
3251  96 /*atTimeCode*/,
3252  'w' /*atTimeModifier*/,
3253  4 /*deltaCode*/,
3254  '-' /*letter*/,
3255  },
3256  // Rule Iran 2016 only - Sep 20 24:00 0 -
3257  {
3258  16 /*fromYearTiny*/,
3259  16 /*toYearTiny*/,
3260  9 /*inMonth*/,
3261  0 /*onDayOfWeek*/,
3262  20 /*onDayOfMonth*/,
3263  96 /*atTimeCode*/,
3264  'w' /*atTimeModifier*/,
3265  0 /*deltaCode*/,
3266  '-' /*letter*/,
3267  },
3268  // Rule Iran 2017 2019 - Mar 21 24:00 1:00 -
3269  {
3270  17 /*fromYearTiny*/,
3271  19 /*toYearTiny*/,
3272  3 /*inMonth*/,
3273  0 /*onDayOfWeek*/,
3274  21 /*onDayOfMonth*/,
3275  96 /*atTimeCode*/,
3276  'w' /*atTimeModifier*/,
3277  4 /*deltaCode*/,
3278  '-' /*letter*/,
3279  },
3280  // Rule Iran 2017 2019 - Sep 21 24:00 0 -
3281  {
3282  17 /*fromYearTiny*/,
3283  19 /*toYearTiny*/,
3284  9 /*inMonth*/,
3285  0 /*onDayOfWeek*/,
3286  21 /*onDayOfMonth*/,
3287  96 /*atTimeCode*/,
3288  'w' /*atTimeModifier*/,
3289  0 /*deltaCode*/,
3290  '-' /*letter*/,
3291  },
3292  // Rule Iran 2020 only - Mar 20 24:00 1:00 -
3293  {
3294  20 /*fromYearTiny*/,
3295  20 /*toYearTiny*/,
3296  3 /*inMonth*/,
3297  0 /*onDayOfWeek*/,
3298  20 /*onDayOfMonth*/,
3299  96 /*atTimeCode*/,
3300  'w' /*atTimeModifier*/,
3301  4 /*deltaCode*/,
3302  '-' /*letter*/,
3303  },
3304  // Rule Iran 2020 only - Sep 20 24:00 0 -
3305  {
3306  20 /*fromYearTiny*/,
3307  20 /*toYearTiny*/,
3308  9 /*inMonth*/,
3309  0 /*onDayOfWeek*/,
3310  20 /*onDayOfMonth*/,
3311  96 /*atTimeCode*/,
3312  'w' /*atTimeModifier*/,
3313  0 /*deltaCode*/,
3314  '-' /*letter*/,
3315  },
3316  // Rule Iran 2021 2023 - Mar 21 24:00 1:00 -
3317  {
3318  21 /*fromYearTiny*/,
3319  23 /*toYearTiny*/,
3320  3 /*inMonth*/,
3321  0 /*onDayOfWeek*/,
3322  21 /*onDayOfMonth*/,
3323  96 /*atTimeCode*/,
3324  'w' /*atTimeModifier*/,
3325  4 /*deltaCode*/,
3326  '-' /*letter*/,
3327  },
3328  // Rule Iran 2021 2023 - Sep 21 24:00 0 -
3329  {
3330  21 /*fromYearTiny*/,
3331  23 /*toYearTiny*/,
3332  9 /*inMonth*/,
3333  0 /*onDayOfWeek*/,
3334  21 /*onDayOfMonth*/,
3335  96 /*atTimeCode*/,
3336  'w' /*atTimeModifier*/,
3337  0 /*deltaCode*/,
3338  '-' /*letter*/,
3339  },
3340  // Rule Iran 2024 only - Mar 20 24:00 1:00 -
3341  {
3342  24 /*fromYearTiny*/,
3343  24 /*toYearTiny*/,
3344  3 /*inMonth*/,
3345  0 /*onDayOfWeek*/,
3346  20 /*onDayOfMonth*/,
3347  96 /*atTimeCode*/,
3348  'w' /*atTimeModifier*/,
3349  4 /*deltaCode*/,
3350  '-' /*letter*/,
3351  },
3352  // Rule Iran 2024 only - Sep 20 24:00 0 -
3353  {
3354  24 /*fromYearTiny*/,
3355  24 /*toYearTiny*/,
3356  9 /*inMonth*/,
3357  0 /*onDayOfWeek*/,
3358  20 /*onDayOfMonth*/,
3359  96 /*atTimeCode*/,
3360  'w' /*atTimeModifier*/,
3361  0 /*deltaCode*/,
3362  '-' /*letter*/,
3363  },
3364  // Rule Iran 2025 2027 - Mar 21 24:00 1:00 -
3365  {
3366  25 /*fromYearTiny*/,
3367  27 /*toYearTiny*/,
3368  3 /*inMonth*/,
3369  0 /*onDayOfWeek*/,
3370  21 /*onDayOfMonth*/,
3371  96 /*atTimeCode*/,
3372  'w' /*atTimeModifier*/,
3373  4 /*deltaCode*/,
3374  '-' /*letter*/,
3375  },
3376  // Rule Iran 2025 2027 - Sep 21 24:00 0 -
3377  {
3378  25 /*fromYearTiny*/,
3379  27 /*toYearTiny*/,
3380  9 /*inMonth*/,
3381  0 /*onDayOfWeek*/,
3382  21 /*onDayOfMonth*/,
3383  96 /*atTimeCode*/,
3384  'w' /*atTimeModifier*/,
3385  0 /*deltaCode*/,
3386  '-' /*letter*/,
3387  },
3388  // Rule Iran 2028 2029 - Mar 20 24:00 1:00 -
3389  {
3390  28 /*fromYearTiny*/,
3391  29 /*toYearTiny*/,
3392  3 /*inMonth*/,
3393  0 /*onDayOfWeek*/,
3394  20 /*onDayOfMonth*/,
3395  96 /*atTimeCode*/,
3396  'w' /*atTimeModifier*/,
3397  4 /*deltaCode*/,
3398  '-' /*letter*/,
3399  },
3400  // Rule Iran 2028 2029 - Sep 20 24:00 0 -
3401  {
3402  28 /*fromYearTiny*/,
3403  29 /*toYearTiny*/,
3404  9 /*inMonth*/,
3405  0 /*onDayOfWeek*/,
3406  20 /*onDayOfMonth*/,
3407  96 /*atTimeCode*/,
3408  'w' /*atTimeModifier*/,
3409  0 /*deltaCode*/,
3410  '-' /*letter*/,
3411  },
3412  // Rule Iran 2030 2031 - Mar 21 24:00 1:00 -
3413  {
3414  30 /*fromYearTiny*/,
3415  31 /*toYearTiny*/,
3416  3 /*inMonth*/,
3417  0 /*onDayOfWeek*/,
3418  21 /*onDayOfMonth*/,
3419  96 /*atTimeCode*/,
3420  'w' /*atTimeModifier*/,
3421  4 /*deltaCode*/,
3422  '-' /*letter*/,
3423  },
3424  // Rule Iran 2030 2031 - Sep 21 24:00 0 -
3425  {
3426  30 /*fromYearTiny*/,
3427  31 /*toYearTiny*/,
3428  9 /*inMonth*/,
3429  0 /*onDayOfWeek*/,
3430  21 /*onDayOfMonth*/,
3431  96 /*atTimeCode*/,
3432  'w' /*atTimeModifier*/,
3433  0 /*deltaCode*/,
3434  '-' /*letter*/,
3435  },
3436  // Rule Iran 2032 2033 - Mar 20 24:00 1:00 -
3437  {
3438  32 /*fromYearTiny*/,
3439  33 /*toYearTiny*/,
3440  3 /*inMonth*/,
3441  0 /*onDayOfWeek*/,
3442  20 /*onDayOfMonth*/,
3443  96 /*atTimeCode*/,
3444  'w' /*atTimeModifier*/,
3445  4 /*deltaCode*/,
3446  '-' /*letter*/,
3447  },
3448  // Rule Iran 2032 2033 - Sep 20 24:00 0 -
3449  {
3450  32 /*fromYearTiny*/,
3451  33 /*toYearTiny*/,
3452  9 /*inMonth*/,
3453  0 /*onDayOfWeek*/,
3454  20 /*onDayOfMonth*/,
3455  96 /*atTimeCode*/,
3456  'w' /*atTimeModifier*/,
3457  0 /*deltaCode*/,
3458  '-' /*letter*/,
3459  },
3460  // Rule Iran 2034 2035 - Mar 21 24:00 1:00 -
3461  {
3462  34 /*fromYearTiny*/,
3463  35 /*toYearTiny*/,
3464  3 /*inMonth*/,
3465  0 /*onDayOfWeek*/,
3466  21 /*onDayOfMonth*/,
3467  96 /*atTimeCode*/,
3468  'w' /*atTimeModifier*/,
3469  4 /*deltaCode*/,
3470  '-' /*letter*/,
3471  },
3472  // Rule Iran 2034 2035 - Sep 21 24:00 0 -
3473  {
3474  34 /*fromYearTiny*/,
3475  35 /*toYearTiny*/,
3476  9 /*inMonth*/,
3477  0 /*onDayOfWeek*/,
3478  21 /*onDayOfMonth*/,
3479  96 /*atTimeCode*/,
3480  'w' /*atTimeModifier*/,
3481  0 /*deltaCode*/,
3482  '-' /*letter*/,
3483  },
3484  // Rule Iran 2036 2037 - Mar 20 24:00 1:00 -
3485  {
3486  36 /*fromYearTiny*/,
3487  37 /*toYearTiny*/,
3488  3 /*inMonth*/,
3489  0 /*onDayOfWeek*/,
3490  20 /*onDayOfMonth*/,
3491  96 /*atTimeCode*/,
3492  'w' /*atTimeModifier*/,
3493  4 /*deltaCode*/,
3494  '-' /*letter*/,
3495  },
3496  // Rule Iran 2036 2037 - Sep 20 24:00 0 -
3497  {
3498  36 /*fromYearTiny*/,
3499  37 /*toYearTiny*/,
3500  9 /*inMonth*/,
3501  0 /*onDayOfWeek*/,
3502  20 /*onDayOfMonth*/,
3503  96 /*atTimeCode*/,
3504  'w' /*atTimeModifier*/,
3505  0 /*deltaCode*/,
3506  '-' /*letter*/,
3507  },
3508  // Rule Iran 2038 2039 - Mar 21 24:00 1:00 -
3509  {
3510  38 /*fromYearTiny*/,
3511  39 /*toYearTiny*/,
3512  3 /*inMonth*/,
3513  0 /*onDayOfWeek*/,
3514  21 /*onDayOfMonth*/,
3515  96 /*atTimeCode*/,
3516  'w' /*atTimeModifier*/,
3517  4 /*deltaCode*/,
3518  '-' /*letter*/,
3519  },
3520  // Rule Iran 2038 2039 - Sep 21 24:00 0 -
3521  {
3522  38 /*fromYearTiny*/,
3523  39 /*toYearTiny*/,
3524  9 /*inMonth*/,
3525  0 /*onDayOfWeek*/,
3526  21 /*onDayOfMonth*/,
3527  96 /*atTimeCode*/,
3528  'w' /*atTimeModifier*/,
3529  0 /*deltaCode*/,
3530  '-' /*letter*/,
3531  },
3532  // Rule Iran 2040 2041 - Mar 20 24:00 1:00 -
3533  {
3534  40 /*fromYearTiny*/,
3535  41 /*toYearTiny*/,
3536  3 /*inMonth*/,
3537  0 /*onDayOfWeek*/,
3538  20 /*onDayOfMonth*/,
3539  96 /*atTimeCode*/,
3540  'w' /*atTimeModifier*/,
3541  4 /*deltaCode*/,
3542  '-' /*letter*/,
3543  },
3544  // Rule Iran 2040 2041 - Sep 20 24:00 0 -
3545  {
3546  40 /*fromYearTiny*/,
3547  41 /*toYearTiny*/,
3548  9 /*inMonth*/,
3549  0 /*onDayOfWeek*/,
3550  20 /*onDayOfMonth*/,
3551  96 /*atTimeCode*/,
3552  'w' /*atTimeModifier*/,
3553  0 /*deltaCode*/,
3554  '-' /*letter*/,
3555  },
3556  // Rule Iran 2042 2043 - Mar 21 24:00 1:00 -
3557  {
3558  42 /*fromYearTiny*/,
3559  43 /*toYearTiny*/,
3560  3 /*inMonth*/,
3561  0 /*onDayOfWeek*/,
3562  21 /*onDayOfMonth*/,
3563  96 /*atTimeCode*/,
3564  'w' /*atTimeModifier*/,
3565  4 /*deltaCode*/,
3566  '-' /*letter*/,
3567  },
3568  // Rule Iran 2042 2043 - Sep 21 24:00 0 -
3569  {
3570  42 /*fromYearTiny*/,
3571  43 /*toYearTiny*/,
3572  9 /*inMonth*/,
3573  0 /*onDayOfWeek*/,
3574  21 /*onDayOfMonth*/,
3575  96 /*atTimeCode*/,
3576  'w' /*atTimeModifier*/,
3577  0 /*deltaCode*/,
3578  '-' /*letter*/,
3579  },
3580  // Rule Iran 2044 2045 - Mar 20 24:00 1:00 -
3581  {
3582  44 /*fromYearTiny*/,
3583  45 /*toYearTiny*/,
3584  3 /*inMonth*/,
3585  0 /*onDayOfWeek*/,
3586  20 /*onDayOfMonth*/,
3587  96 /*atTimeCode*/,
3588  'w' /*atTimeModifier*/,
3589  4 /*deltaCode*/,
3590  '-' /*letter*/,
3591  },
3592  // Rule Iran 2044 2045 - Sep 20 24:00 0 -
3593  {
3594  44 /*fromYearTiny*/,
3595  45 /*toYearTiny*/,
3596  9 /*inMonth*/,
3597  0 /*onDayOfWeek*/,
3598  20 /*onDayOfMonth*/,
3599  96 /*atTimeCode*/,
3600  'w' /*atTimeModifier*/,
3601  0 /*deltaCode*/,
3602  '-' /*letter*/,
3603  },
3604  // Rule Iran 2046 2047 - Mar 21 24:00 1:00 -
3605  {
3606  46 /*fromYearTiny*/,
3607  47 /*toYearTiny*/,
3608  3 /*inMonth*/,
3609  0 /*onDayOfWeek*/,
3610  21 /*onDayOfMonth*/,
3611  96 /*atTimeCode*/,
3612  'w' /*atTimeModifier*/,
3613  4 /*deltaCode*/,
3614  '-' /*letter*/,
3615  },
3616  // Rule Iran 2046 2047 - Sep 21 24:00 0 -
3617  {
3618  46 /*fromYearTiny*/,
3619  47 /*toYearTiny*/,
3620  9 /*inMonth*/,
3621  0 /*onDayOfWeek*/,
3622  21 /*onDayOfMonth*/,
3623  96 /*atTimeCode*/,
3624  'w' /*atTimeModifier*/,
3625  0 /*deltaCode*/,
3626  '-' /*letter*/,
3627  },
3628  // Rule Iran 2048 2049 - Mar 20 24:00 1:00 -
3629  {
3630  48 /*fromYearTiny*/,
3631  49 /*toYearTiny*/,
3632  3 /*inMonth*/,
3633  0 /*onDayOfWeek*/,
3634  20 /*onDayOfMonth*/,
3635  96 /*atTimeCode*/,
3636  'w' /*atTimeModifier*/,
3637  4 /*deltaCode*/,
3638  '-' /*letter*/,
3639  },
3640  // Rule Iran 2048 2049 - Sep 20 24:00 0 -
3641  {
3642  48 /*fromYearTiny*/,
3643  49 /*toYearTiny*/,
3644  9 /*inMonth*/,
3645  0 /*onDayOfWeek*/,
3646  20 /*onDayOfMonth*/,
3647  96 /*atTimeCode*/,
3648  'w' /*atTimeModifier*/,
3649  0 /*deltaCode*/,
3650  '-' /*letter*/,
3651  },
3652  // Rule Iran 2050 2051 - Mar 21 24:00 1:00 -
3653  {
3654  50 /*fromYearTiny*/,
3655  51 /*toYearTiny*/,
3656  3 /*inMonth*/,
3657  0 /*onDayOfWeek*/,
3658  21 /*onDayOfMonth*/,
3659  96 /*atTimeCode*/,
3660  'w' /*atTimeModifier*/,
3661  4 /*deltaCode*/,
3662  '-' /*letter*/,
3663  },
3664  // Rule Iran 2050 2051 - Sep 21 24:00 0 -
3665  {
3666  50 /*fromYearTiny*/,
3667  51 /*toYearTiny*/,
3668  9 /*inMonth*/,
3669  0 /*onDayOfWeek*/,
3670  21 /*onDayOfMonth*/,
3671  96 /*atTimeCode*/,
3672  'w' /*atTimeModifier*/,
3673  0 /*deltaCode*/,
3674  '-' /*letter*/,
3675  },
3676 
3677 };
3678 
3679 
3680 
3681 const extended::ZonePolicy kPolicyIran = {
3682  55 /*numRules*/,
3683  kZoneRulesIran /*rules*/,
3684  0 /* numLetters */,
3685  nullptr /* letters */,
3686 };
3687 
3688 //---------------------------------------------------------------------------
3689 // Policy name: Iraq
3690 // Rules: 3
3691 // Memory (8-bit): 33
3692 // Memory (32-bit): 37
3693 //---------------------------------------------------------------------------
3694 
3695 static const extended::ZoneRule kZoneRulesIraq[] = {
3696  // Rule Iraq 1985 1990 - Sep lastSun 1:00s 0 -
3697  {
3698  -15 /*fromYearTiny*/,
3699  -10 /*toYearTiny*/,
3700  9 /*inMonth*/,
3701  7 /*onDayOfWeek*/,
3702  0 /*onDayOfMonth*/,
3703  4 /*atTimeCode*/,
3704  's' /*atTimeModifier*/,
3705  0 /*deltaCode*/,
3706  '-' /*letter*/,
3707  },
3708  // Rule Iraq 1991 2007 - Apr 1 3:00s 1:00 -
3709  {
3710  -9 /*fromYearTiny*/,
3711  7 /*toYearTiny*/,
3712  4 /*inMonth*/,
3713  0 /*onDayOfWeek*/,
3714  1 /*onDayOfMonth*/,
3715  12 /*atTimeCode*/,
3716  's' /*atTimeModifier*/,
3717  4 /*deltaCode*/,
3718  '-' /*letter*/,
3719  },
3720  // Rule Iraq 1991 2007 - Oct 1 3:00s 0 -
3721  {
3722  -9 /*fromYearTiny*/,
3723  7 /*toYearTiny*/,
3724  10 /*inMonth*/,
3725  0 /*onDayOfWeek*/,
3726  1 /*onDayOfMonth*/,
3727  12 /*atTimeCode*/,
3728  's' /*atTimeModifier*/,
3729  0 /*deltaCode*/,
3730  '-' /*letter*/,
3731  },
3732 
3733 };
3734 
3735 
3736 
3737 const extended::ZonePolicy kPolicyIraq = {
3738  3 /*numRules*/,
3739  kZoneRulesIraq /*rules*/,
3740  0 /* numLetters */,
3741  nullptr /* letters */,
3742 };
3743 
3744 //---------------------------------------------------------------------------
3745 // Policy name: Japan
3746 // Rules: 1
3747 // Memory (8-bit): 15
3748 // Memory (32-bit): 19
3749 //---------------------------------------------------------------------------
3750 
3751 static const extended::ZoneRule kZoneRulesJapan[] = {
3752  // Rule Japan 1948 1951 - Sep Sat>=8 25:00 0 S
3753  {
3754  -52 /*fromYearTiny*/,
3755  -49 /*toYearTiny*/,
3756  9 /*inMonth*/,
3757  6 /*onDayOfWeek*/,
3758  8 /*onDayOfMonth*/,
3759  100 /*atTimeCode*/,
3760  'w' /*atTimeModifier*/,
3761  0 /*deltaCode*/,
3762  'S' /*letter*/,
3763  },
3764 
3765 };
3766 
3767 
3768 
3769 const extended::ZonePolicy kPolicyJapan = {
3770  1 /*numRules*/,
3771  kZoneRulesJapan /*rules*/,
3772  0 /* numLetters */,
3773  nullptr /* letters */,
3774 };
3775 
3776 //---------------------------------------------------------------------------
3777 // Policy name: Jordan
3778 // Rules: 12
3779 // Memory (8-bit): 114
3780 // Memory (32-bit): 118
3781 //---------------------------------------------------------------------------
3782 
3783 static const extended::ZoneRule kZoneRulesJordan[] = {
3784  // Rule Jordan 1995 1998 - Sep Fri>=15 0:00s 0 -
3785  {
3786  -5 /*fromYearTiny*/,
3787  -2 /*toYearTiny*/,
3788  9 /*inMonth*/,
3789  5 /*onDayOfWeek*/,
3790  15 /*onDayOfMonth*/,
3791  0 /*atTimeCode*/,
3792  's' /*atTimeModifier*/,
3793  0 /*deltaCode*/,
3794  '-' /*letter*/,
3795  },
3796  // Rule Jordan 1999 only - Jul 1 0:00s 1:00 S
3797  {
3798  -1 /*fromYearTiny*/,
3799  -1 /*toYearTiny*/,
3800  7 /*inMonth*/,
3801  0 /*onDayOfWeek*/,
3802  1 /*onDayOfMonth*/,
3803  0 /*atTimeCode*/,
3804  's' /*atTimeModifier*/,
3805  4 /*deltaCode*/,
3806  'S' /*letter*/,
3807  },
3808  // Rule Jordan 1999 2002 - Sep lastFri 0:00s 0 -
3809  {
3810  -1 /*fromYearTiny*/,
3811  2 /*toYearTiny*/,
3812  9 /*inMonth*/,
3813  5 /*onDayOfWeek*/,
3814  0 /*onDayOfMonth*/,
3815  0 /*atTimeCode*/,
3816  's' /*atTimeModifier*/,
3817  0 /*deltaCode*/,
3818  '-' /*letter*/,
3819  },
3820  // Rule Jordan 2000 2001 - Mar lastThu 0:00s 1:00 S
3821  {
3822  0 /*fromYearTiny*/,
3823  1 /*toYearTiny*/,
3824  3 /*inMonth*/,
3825  4 /*onDayOfWeek*/,
3826  0 /*onDayOfMonth*/,
3827  0 /*atTimeCode*/,
3828  's' /*atTimeModifier*/,
3829  4 /*deltaCode*/,
3830  'S' /*letter*/,
3831  },
3832  // Rule Jordan 2002 2012 - Mar lastThu 24:00 1:00 S
3833  {
3834  2 /*fromYearTiny*/,
3835  12 /*toYearTiny*/,
3836  3 /*inMonth*/,
3837  4 /*onDayOfWeek*/,
3838  0 /*onDayOfMonth*/,
3839  96 /*atTimeCode*/,
3840  'w' /*atTimeModifier*/,
3841  4 /*deltaCode*/,
3842  'S' /*letter*/,
3843  },
3844  // Rule Jordan 2003 only - Oct 24 0:00s 0 -
3845  {
3846  3 /*fromYearTiny*/,
3847  3 /*toYearTiny*/,
3848  10 /*inMonth*/,
3849  0 /*onDayOfWeek*/,
3850  24 /*onDayOfMonth*/,
3851  0 /*atTimeCode*/,
3852  's' /*atTimeModifier*/,
3853  0 /*deltaCode*/,
3854  '-' /*letter*/,
3855  },
3856  // Rule Jordan 2004 only - Oct 15 0:00s 0 -
3857  {
3858  4 /*fromYearTiny*/,
3859  4 /*toYearTiny*/,
3860  10 /*inMonth*/,
3861  0 /*onDayOfWeek*/,
3862  15 /*onDayOfMonth*/,
3863  0 /*atTimeCode*/,
3864  's' /*atTimeModifier*/,
3865  0 /*deltaCode*/,
3866  '-' /*letter*/,
3867  },
3868  // Rule Jordan 2005 only - Sep lastFri 0:00s 0 -
3869  {
3870  5 /*fromYearTiny*/,
3871  5 /*toYearTiny*/,
3872  9 /*inMonth*/,
3873  5 /*onDayOfWeek*/,
3874  0 /*onDayOfMonth*/,
3875  0 /*atTimeCode*/,
3876  's' /*atTimeModifier*/,
3877  0 /*deltaCode*/,
3878  '-' /*letter*/,
3879  },
3880  // Rule Jordan 2006 2011 - Oct lastFri 0:00s 0 -
3881  {
3882  6 /*fromYearTiny*/,
3883  11 /*toYearTiny*/,
3884  10 /*inMonth*/,
3885  5 /*onDayOfWeek*/,
3886  0 /*onDayOfMonth*/,
3887  0 /*atTimeCode*/,
3888  's' /*atTimeModifier*/,
3889  0 /*deltaCode*/,
3890  '-' /*letter*/,
3891  },
3892  // Rule Jordan 2013 only - Dec 20 0:00 0 -
3893  {
3894  13 /*fromYearTiny*/,
3895  13 /*toYearTiny*/,
3896  12 /*inMonth*/,
3897  0 /*onDayOfWeek*/,
3898  20 /*onDayOfMonth*/,
3899  0 /*atTimeCode*/,
3900  'w' /*atTimeModifier*/,
3901  0 /*deltaCode*/,
3902  '-' /*letter*/,
3903  },
3904  // Rule Jordan 2014 max - Mar lastThu 24:00 1:00 S
3905  {
3906  14 /*fromYearTiny*/,
3907  126 /*toYearTiny*/,
3908  3 /*inMonth*/,
3909  4 /*onDayOfWeek*/,
3910  0 /*onDayOfMonth*/,
3911  96 /*atTimeCode*/,
3912  'w' /*atTimeModifier*/,
3913  4 /*deltaCode*/,
3914  'S' /*letter*/,
3915  },
3916  // Rule Jordan 2014 max - Oct lastFri 0:00s 0 -
3917  {
3918  14 /*fromYearTiny*/,
3919  126 /*toYearTiny*/,
3920  10 /*inMonth*/,
3921  5 /*onDayOfWeek*/,
3922  0 /*onDayOfMonth*/,
3923  0 /*atTimeCode*/,
3924  's' /*atTimeModifier*/,
3925  0 /*deltaCode*/,
3926  '-' /*letter*/,
3927  },
3928 
3929 };
3930 
3931 
3932 
3933 const extended::ZonePolicy kPolicyJordan = {
3934  12 /*numRules*/,
3935  kZoneRulesJordan /*rules*/,
3936  0 /* numLetters */,
3937  nullptr /* letters */,
3938 };
3939 
3940 //---------------------------------------------------------------------------
3941 // Policy name: Kyrgyz
3942 // Rules: 3
3943 // Memory (8-bit): 33
3944 // Memory (32-bit): 37
3945 //---------------------------------------------------------------------------
3946 
3947 static const extended::ZoneRule kZoneRulesKyrgyz[] = {
3948  // Rule Kyrgyz 1992 1996 - Sep lastSun 0:00 0 -
3949  {
3950  -8 /*fromYearTiny*/,
3951  -4 /*toYearTiny*/,
3952  9 /*inMonth*/,
3953  7 /*onDayOfWeek*/,
3954  0 /*onDayOfMonth*/,
3955  0 /*atTimeCode*/,
3956  'w' /*atTimeModifier*/,
3957  0 /*deltaCode*/,
3958  '-' /*letter*/,
3959  },
3960  // Rule Kyrgyz 1997 2005 - Mar lastSun 2:30 1:00 -
3961  {
3962  -3 /*fromYearTiny*/,
3963  5 /*toYearTiny*/,
3964  3 /*inMonth*/,
3965  7 /*onDayOfWeek*/,
3966  0 /*onDayOfMonth*/,
3967  10 /*atTimeCode*/,
3968  'w' /*atTimeModifier*/,
3969  4 /*deltaCode*/,
3970  '-' /*letter*/,
3971  },
3972  // Rule Kyrgyz 1997 2004 - Oct lastSun 2:30 0 -
3973  {
3974  -3 /*fromYearTiny*/,
3975  4 /*toYearTiny*/,
3976  10 /*inMonth*/,
3977  7 /*onDayOfWeek*/,
3978  0 /*onDayOfMonth*/,
3979  10 /*atTimeCode*/,
3980  'w' /*atTimeModifier*/,
3981  0 /*deltaCode*/,
3982  '-' /*letter*/,
3983  },
3984 
3985 };
3986 
3987 
3988 
3989 const extended::ZonePolicy kPolicyKyrgyz = {
3990  3 /*numRules*/,
3991  kZoneRulesKyrgyz /*rules*/,
3992  0 /* numLetters */,
3993  nullptr /* letters */,
3994 };
3995 
3996 //---------------------------------------------------------------------------
3997 // Policy name: LH
3998 // Rules: 9
3999 // Memory (8-bit): 87
4000 // Memory (32-bit): 91
4001 //---------------------------------------------------------------------------
4002 
4003 static const extended::ZoneRule kZoneRulesLH[] = {
4004  // Rule LH 1987 1999 - Oct lastSun 2:00 0:30 -
4005  {
4006  -13 /*fromYearTiny*/,
4007  -1 /*toYearTiny*/,
4008  10 /*inMonth*/,
4009  7 /*onDayOfWeek*/,
4010  0 /*onDayOfMonth*/,
4011  8 /*atTimeCode*/,
4012  'w' /*atTimeModifier*/,
4013  2 /*deltaCode*/,
4014  '-' /*letter*/,
4015  },
4016  // Rule LH 1990 1995 - Mar Sun>=1 2:00 0 -
4017  {
4018  -10 /*fromYearTiny*/,
4019  -5 /*toYearTiny*/,
4020  3 /*inMonth*/,
4021  7 /*onDayOfWeek*/,
4022  1 /*onDayOfMonth*/,
4023  8 /*atTimeCode*/,
4024  'w' /*atTimeModifier*/,
4025  0 /*deltaCode*/,
4026  '-' /*letter*/,
4027  },
4028  // Rule LH 1996 2005 - Mar lastSun 2:00 0 -
4029  {
4030  -4 /*fromYearTiny*/,
4031  5 /*toYearTiny*/,
4032  3 /*inMonth*/,
4033  7 /*onDayOfWeek*/,
4034  0 /*onDayOfMonth*/,
4035  8 /*atTimeCode*/,
4036  'w' /*atTimeModifier*/,
4037  0 /*deltaCode*/,
4038  '-' /*letter*/,
4039  },
4040  // Rule LH 2000 only - Aug lastSun 2:00 0:30 -
4041  {
4042  0 /*fromYearTiny*/,
4043  0 /*toYearTiny*/,
4044  8 /*inMonth*/,
4045  7 /*onDayOfWeek*/,
4046  0 /*onDayOfMonth*/,
4047  8 /*atTimeCode*/,
4048  'w' /*atTimeModifier*/,
4049  2 /*deltaCode*/,
4050  '-' /*letter*/,
4051  },
4052  // Rule LH 2001 2007 - Oct lastSun 2:00 0:30 -
4053  {
4054  1 /*fromYearTiny*/,
4055  7 /*toYearTiny*/,
4056  10 /*inMonth*/,
4057  7 /*onDayOfWeek*/,
4058  0 /*onDayOfMonth*/,
4059  8 /*atTimeCode*/,
4060  'w' /*atTimeModifier*/,
4061  2 /*deltaCode*/,
4062  '-' /*letter*/,
4063  },
4064  // Rule LH 2006 only - Apr Sun>=1 2:00 0 -
4065  {
4066  6 /*fromYearTiny*/,
4067  6 /*toYearTiny*/,
4068  4 /*inMonth*/,
4069  7 /*onDayOfWeek*/,
4070  1 /*onDayOfMonth*/,
4071  8 /*atTimeCode*/,
4072  'w' /*atTimeModifier*/,
4073  0 /*deltaCode*/,
4074  '-' /*letter*/,
4075  },
4076  // Rule LH 2007 only - Mar lastSun 2:00 0 -
4077  {
4078  7 /*fromYearTiny*/,
4079  7 /*toYearTiny*/,
4080  3 /*inMonth*/,
4081  7 /*onDayOfWeek*/,
4082  0 /*onDayOfMonth*/,
4083  8 /*atTimeCode*/,
4084  'w' /*atTimeModifier*/,
4085  0 /*deltaCode*/,
4086  '-' /*letter*/,
4087  },
4088  // Rule LH 2008 max - Apr Sun>=1 2:00 0 -
4089  {
4090  8 /*fromYearTiny*/,
4091  126 /*toYearTiny*/,
4092  4 /*inMonth*/,
4093  7 /*onDayOfWeek*/,
4094  1 /*onDayOfMonth*/,
4095  8 /*atTimeCode*/,
4096  'w' /*atTimeModifier*/,
4097  0 /*deltaCode*/,
4098  '-' /*letter*/,
4099  },
4100  // Rule LH 2008 max - Oct Sun>=1 2:00 0:30 -
4101  {
4102  8 /*fromYearTiny*/,
4103  126 /*toYearTiny*/,
4104  10 /*inMonth*/,
4105  7 /*onDayOfWeek*/,
4106  1 /*onDayOfMonth*/,
4107  8 /*atTimeCode*/,
4108  'w' /*atTimeModifier*/,
4109  2 /*deltaCode*/,
4110  '-' /*letter*/,
4111  },
4112 
4113 };
4114 
4115 
4116 
4117 const extended::ZonePolicy kPolicyLH = {
4118  9 /*numRules*/,
4119  kZoneRulesLH /*rules*/,
4120  0 /* numLetters */,
4121  nullptr /* letters */,
4122 };
4123 
4124 //---------------------------------------------------------------------------
4125 // Policy name: Lebanon
4126 // Rules: 3
4127 // Memory (8-bit): 33
4128 // Memory (32-bit): 37
4129 //---------------------------------------------------------------------------
4130 
4131 static const extended::ZoneRule kZoneRulesLebanon[] = {
4132  // Rule Lebanon 1993 max - Mar lastSun 0:00 1:00 S
4133  {
4134  -7 /*fromYearTiny*/,
4135  126 /*toYearTiny*/,
4136  3 /*inMonth*/,
4137  7 /*onDayOfWeek*/,
4138  0 /*onDayOfMonth*/,
4139  0 /*atTimeCode*/,
4140  'w' /*atTimeModifier*/,
4141  4 /*deltaCode*/,
4142  'S' /*letter*/,
4143  },
4144  // Rule Lebanon 1993 1998 - Sep lastSun 0:00 0 -
4145  {
4146  -7 /*fromYearTiny*/,
4147  -2 /*toYearTiny*/,
4148  9 /*inMonth*/,
4149  7 /*onDayOfWeek*/,
4150  0 /*onDayOfMonth*/,
4151  0 /*atTimeCode*/,
4152  'w' /*atTimeModifier*/,
4153  0 /*deltaCode*/,
4154  '-' /*letter*/,
4155  },
4156  // Rule Lebanon 1999 max - Oct lastSun 0:00 0 -
4157  {
4158  -1 /*fromYearTiny*/,
4159  126 /*toYearTiny*/,
4160  10 /*inMonth*/,
4161  7 /*onDayOfWeek*/,
4162  0 /*onDayOfMonth*/,
4163  0 /*atTimeCode*/,
4164  'w' /*atTimeModifier*/,
4165  0 /*deltaCode*/,
4166  '-' /*letter*/,
4167  },
4168 
4169 };
4170 
4171 
4172 
4173 const extended::ZonePolicy kPolicyLebanon = {
4174  3 /*numRules*/,
4175  kZoneRulesLebanon /*rules*/,
4176  0 /* numLetters */,
4177  nullptr /* letters */,
4178 };
4179 
4180 //---------------------------------------------------------------------------
4181 // Policy name: Libya
4182 // Rules: 3
4183 // Memory (8-bit): 33
4184 // Memory (32-bit): 37
4185 //---------------------------------------------------------------------------
4186 
4187 static const extended::ZoneRule kZoneRulesLibya[] = {
4188  // Rule Libya 1997 only - Oct 4 0:00 0 -
4189  {
4190  -3 /*fromYearTiny*/,
4191  -3 /*toYearTiny*/,
4192  10 /*inMonth*/,
4193  0 /*onDayOfWeek*/,
4194  4 /*onDayOfMonth*/,
4195  0 /*atTimeCode*/,
4196  'w' /*atTimeModifier*/,
4197  0 /*deltaCode*/,
4198  '-' /*letter*/,
4199  },
4200  // Rule Libya 2013 only - Mar lastFri 1:00 1:00 S
4201  {
4202  13 /*fromYearTiny*/,
4203  13 /*toYearTiny*/,
4204  3 /*inMonth*/,
4205  5 /*onDayOfWeek*/,
4206  0 /*onDayOfMonth*/,
4207  4 /*atTimeCode*/,
4208  'w' /*atTimeModifier*/,
4209  4 /*deltaCode*/,
4210  'S' /*letter*/,
4211  },
4212  // Rule Libya 2013 only - Oct lastFri 2:00 0 -
4213  {
4214  13 /*fromYearTiny*/,
4215  13 /*toYearTiny*/,
4216  10 /*inMonth*/,
4217  5 /*onDayOfWeek*/,
4218  0 /*onDayOfMonth*/,
4219  8 /*atTimeCode*/,
4220  'w' /*atTimeModifier*/,
4221  0 /*deltaCode*/,
4222  '-' /*letter*/,
4223  },
4224 
4225 };
4226 
4227 
4228 
4229 const extended::ZonePolicy kPolicyLibya = {
4230  3 /*numRules*/,
4231  kZoneRulesLibya /*rules*/,
4232  0 /* numLetters */,
4233  nullptr /* letters */,
4234 };
4235 
4236 //---------------------------------------------------------------------------
4237 // Policy name: Macau
4238 // Rules: 1
4239 // Memory (8-bit): 15
4240 // Memory (32-bit): 19
4241 //---------------------------------------------------------------------------
4242 
4243 static const extended::ZoneRule kZoneRulesMacau[] = {
4244  // Rule Macau 1979 only - Oct Sun>=16 03:30 0 S
4245  {
4246  -21 /*fromYearTiny*/,
4247  -21 /*toYearTiny*/,
4248  10 /*inMonth*/,
4249  7 /*onDayOfWeek*/,
4250  16 /*onDayOfMonth*/,
4251  14 /*atTimeCode*/,
4252  'w' /*atTimeModifier*/,
4253  0 /*deltaCode*/,
4254  'S' /*letter*/,
4255  },
4256 
4257 };
4258 
4259 
4260 
4261 const extended::ZonePolicy kPolicyMacau = {
4262  1 /*numRules*/,
4263  kZoneRulesMacau /*rules*/,
4264  0 /* numLetters */,
4265  nullptr /* letters */,
4266 };
4267 
4268 //---------------------------------------------------------------------------
4269 // Policy name: Mauritius
4270 // Rules: 3
4271 // Memory (8-bit): 33
4272 // Memory (32-bit): 37
4273 //---------------------------------------------------------------------------
4274 
4275 static const extended::ZoneRule kZoneRulesMauritius[] = {
4276  // Rule Mauritius 1983 only - Mar 21 0:00 0 -
4277  {
4278  -17 /*fromYearTiny*/,
4279  -17 /*toYearTiny*/,
4280  3 /*inMonth*/,
4281  0 /*onDayOfWeek*/,
4282  21 /*onDayOfMonth*/,
4283  0 /*atTimeCode*/,
4284  'w' /*atTimeModifier*/,
4285  0 /*deltaCode*/,
4286  '-' /*letter*/,
4287  },
4288  // Rule Mauritius 2008 only - Oct lastSun 2:00 1:00 -
4289  {
4290  8 /*fromYearTiny*/,
4291  8 /*toYearTiny*/,
4292  10 /*inMonth*/,
4293  7 /*onDayOfWeek*/,
4294  0 /*onDayOfMonth*/,
4295  8 /*atTimeCode*/,
4296  'w' /*atTimeModifier*/,
4297  4 /*deltaCode*/,
4298  '-' /*letter*/,
4299  },
4300  // Rule Mauritius 2009 only - Mar lastSun 2:00 0 -
4301  {
4302  9 /*fromYearTiny*/,
4303  9 /*toYearTiny*/,
4304  3 /*inMonth*/,
4305  7 /*onDayOfWeek*/,
4306  0 /*onDayOfMonth*/,
4307  8 /*atTimeCode*/,
4308  'w' /*atTimeModifier*/,
4309  0 /*deltaCode*/,
4310  '-' /*letter*/,
4311  },
4312 
4313 };
4314 
4315 
4316 
4317 const extended::ZonePolicy kPolicyMauritius = {
4318  3 /*numRules*/,
4319  kZoneRulesMauritius /*rules*/,
4320  0 /* numLetters */,
4321  nullptr /* letters */,
4322 };
4323 
4324 //---------------------------------------------------------------------------
4325 // Policy name: Mexico
4326 // Rules: 7
4327 // Memory (8-bit): 69
4328 // Memory (32-bit): 73
4329 //---------------------------------------------------------------------------
4330 
4331 static const extended::ZoneRule kZoneRulesMexico[] = {
4332  // Rule Mexico 1950 only - Jul 30 0:00 0 S
4333  {
4334  -50 /*fromYearTiny*/,
4335  -50 /*toYearTiny*/,
4336  7 /*inMonth*/,
4337  0 /*onDayOfWeek*/,
4338  30 /*onDayOfMonth*/,
4339  0 /*atTimeCode*/,
4340  'w' /*atTimeModifier*/,
4341  0 /*deltaCode*/,
4342  'S' /*letter*/,
4343  },
4344  // Rule Mexico 1996 2000 - Apr Sun>=1 2:00 1:00 D
4345  {
4346  -4 /*fromYearTiny*/,
4347  0 /*toYearTiny*/,
4348  4 /*inMonth*/,
4349  7 /*onDayOfWeek*/,
4350  1 /*onDayOfMonth*/,
4351  8 /*atTimeCode*/,
4352  'w' /*atTimeModifier*/,
4353  4 /*deltaCode*/,
4354  'D' /*letter*/,
4355  },
4356  // Rule Mexico 1996 2000 - Oct lastSun 2:00 0 S
4357  {
4358  -4 /*fromYearTiny*/,
4359  0 /*toYearTiny*/,
4360  10 /*inMonth*/,
4361  7 /*onDayOfWeek*/,
4362  0 /*onDayOfMonth*/,
4363  8 /*atTimeCode*/,
4364  'w' /*atTimeModifier*/,
4365  0 /*deltaCode*/,
4366  'S' /*letter*/,
4367  },
4368  // Rule Mexico 2001 only - May Sun>=1 2:00 1:00 D
4369  {
4370  1 /*fromYearTiny*/,
4371  1 /*toYearTiny*/,
4372  5 /*inMonth*/,
4373  7 /*onDayOfWeek*/,
4374  1 /*onDayOfMonth*/,
4375  8 /*atTimeCode*/,
4376  'w' /*atTimeModifier*/,
4377  4 /*deltaCode*/,
4378  'D' /*letter*/,
4379  },
4380  // Rule Mexico 2001 only - Sep lastSun 2:00 0 S
4381  {
4382  1 /*fromYearTiny*/,
4383  1 /*toYearTiny*/,
4384  9 /*inMonth*/,
4385  7 /*onDayOfWeek*/,
4386  0 /*onDayOfMonth*/,
4387  8 /*atTimeCode*/,
4388  'w' /*atTimeModifier*/,
4389  0 /*deltaCode*/,
4390  'S' /*letter*/,
4391  },
4392  // Rule Mexico 2002 max - Apr Sun>=1 2:00 1:00 D
4393  {
4394  2 /*fromYearTiny*/,
4395  126 /*toYearTiny*/,
4396  4 /*inMonth*/,
4397  7 /*onDayOfWeek*/,
4398  1 /*onDayOfMonth*/,
4399  8 /*atTimeCode*/,
4400  'w' /*atTimeModifier*/,
4401  4 /*deltaCode*/,
4402  'D' /*letter*/,
4403  },
4404  // Rule Mexico 2002 max - Oct lastSun 2:00 0 S
4405  {
4406  2 /*fromYearTiny*/,
4407  126 /*toYearTiny*/,
4408  10 /*inMonth*/,
4409  7 /*onDayOfWeek*/,
4410  0 /*onDayOfMonth*/,
4411  8 /*atTimeCode*/,
4412  'w' /*atTimeModifier*/,
4413  0 /*deltaCode*/,
4414  'S' /*letter*/,
4415  },
4416 
4417 };
4418 
4419 
4420 
4421 const extended::ZonePolicy kPolicyMexico = {
4422  7 /*numRules*/,
4423  kZoneRulesMexico /*rules*/,
4424  0 /* numLetters */,
4425  nullptr /* letters */,
4426 };
4427 
4428 //---------------------------------------------------------------------------
4429 // Policy name: Moldova
4430 // Rules: 2
4431 // Memory (8-bit): 24
4432 // Memory (32-bit): 28
4433 //---------------------------------------------------------------------------
4434 
4435 static const extended::ZoneRule kZoneRulesMoldova[] = {
4436  // Rule Moldova 1997 max - Mar lastSun 2:00 1:00 S
4437  {
4438  -3 /*fromYearTiny*/,
4439  126 /*toYearTiny*/,
4440  3 /*inMonth*/,
4441  7 /*onDayOfWeek*/,
4442  0 /*onDayOfMonth*/,
4443  8 /*atTimeCode*/,
4444  'w' /*atTimeModifier*/,
4445  4 /*deltaCode*/,
4446  'S' /*letter*/,
4447  },
4448  // Rule Moldova 1997 max - Oct lastSun 3:00 0 -
4449  {
4450  -3 /*fromYearTiny*/,
4451  126 /*toYearTiny*/,
4452  10 /*inMonth*/,
4453  7 /*onDayOfWeek*/,
4454  0 /*onDayOfMonth*/,
4455  12 /*atTimeCode*/,
4456  'w' /*atTimeModifier*/,
4457  0 /*deltaCode*/,
4458  '-' /*letter*/,
4459  },
4460 
4461 };
4462 
4463 
4464 
4465 const extended::ZonePolicy kPolicyMoldova = {
4466  2 /*numRules*/,
4467  kZoneRulesMoldova /*rules*/,
4468  0 /* numLetters */,
4469  nullptr /* letters */,
4470 };
4471 
4472 //---------------------------------------------------------------------------
4473 // Policy name: Moncton
4474 // Rules: 3
4475 // Memory (8-bit): 33
4476 // Memory (32-bit): 37
4477 //---------------------------------------------------------------------------
4478 
4479 static const extended::ZoneRule kZoneRulesMoncton[] = {
4480  // Rule Moncton 1957 1972 - Oct lastSun 2:00 0 S
4481  {
4482  -43 /*fromYearTiny*/,
4483  -28 /*toYearTiny*/,
4484  10 /*inMonth*/,
4485  7 /*onDayOfWeek*/,
4486  0 /*onDayOfMonth*/,
4487  8 /*atTimeCode*/,
4488  'w' /*atTimeModifier*/,
4489  0 /*deltaCode*/,
4490  'S' /*letter*/,
4491  },
4492  // Rule Moncton 1993 2006 - Apr Sun>=1 0:01 1:00 D
4493  {
4494  -7 /*fromYearTiny*/,
4495  6 /*toYearTiny*/,
4496  4 /*inMonth*/,
4497  7 /*onDayOfWeek*/,
4498  1 /*onDayOfMonth*/,
4499  0 /*atTimeCode*/,
4500  'w' /*atTimeModifier*/,
4501  4 /*deltaCode*/,
4502  'D' /*letter*/,
4503  },
4504  // Rule Moncton 1993 2006 - Oct lastSun 0:01 0 S
4505  {
4506  -7 /*fromYearTiny*/,
4507  6 /*toYearTiny*/,
4508  10 /*inMonth*/,
4509  7 /*onDayOfWeek*/,
4510  0 /*onDayOfMonth*/,
4511  0 /*atTimeCode*/,
4512  'w' /*atTimeModifier*/,
4513  0 /*deltaCode*/,
4514  'S' /*letter*/,
4515  },
4516 
4517 };
4518 
4519 
4520 
4521 const extended::ZonePolicy kPolicyMoncton = {
4522  3 /*numRules*/,
4523  kZoneRulesMoncton /*rules*/,
4524  0 /* numLetters */,
4525  nullptr /* letters */,
4526 };
4527 
4528 //---------------------------------------------------------------------------
4529 // Policy name: Mongol
4530 // Rules: 6
4531 // Memory (8-bit): 60
4532 // Memory (32-bit): 64
4533 //---------------------------------------------------------------------------
4534 
4535 static const extended::ZoneRule kZoneRulesMongol[] = {
4536  // Rule Mongol 1984 1998 - Sep lastSun 0:00 0 -
4537  {
4538  -16 /*fromYearTiny*/,
4539  -2 /*toYearTiny*/,
4540  9 /*inMonth*/,
4541  7 /*onDayOfWeek*/,
4542  0 /*onDayOfMonth*/,
4543  0 /*atTimeCode*/,
4544  'w' /*atTimeModifier*/,
4545  0 /*deltaCode*/,
4546  '-' /*letter*/,
4547  },
4548  // Rule Mongol 2001 only - Apr lastSat 2:00 1:00 -
4549  {
4550  1 /*fromYearTiny*/,
4551  1 /*toYearTiny*/,
4552  4 /*inMonth*/,
4553  6 /*onDayOfWeek*/,
4554  0 /*onDayOfMonth*/,
4555  8 /*atTimeCode*/,
4556  'w' /*atTimeModifier*/,
4557  4 /*deltaCode*/,
4558  '-' /*letter*/,
4559  },
4560  // Rule Mongol 2001 2006 - Sep lastSat 2:00 0 -
4561  {
4562  1 /*fromYearTiny*/,
4563  6 /*toYearTiny*/,
4564  9 /*inMonth*/,
4565  6 /*onDayOfWeek*/,
4566  0 /*onDayOfMonth*/,
4567  8 /*atTimeCode*/,
4568  'w' /*atTimeModifier*/,
4569  0 /*deltaCode*/,
4570  '-' /*letter*/,
4571  },
4572  // Rule Mongol 2002 2006 - Mar lastSat 2:00 1:00 -
4573  {
4574  2 /*fromYearTiny*/,
4575  6 /*toYearTiny*/,
4576  3 /*inMonth*/,
4577  6 /*onDayOfWeek*/,
4578  0 /*onDayOfMonth*/,
4579  8 /*atTimeCode*/,
4580  'w' /*atTimeModifier*/,
4581  4 /*deltaCode*/,
4582  '-' /*letter*/,
4583  },
4584  // Rule Mongol 2015 2016 - Mar lastSat 2:00 1:00 -
4585  {
4586  15 /*fromYearTiny*/,
4587  16 /*toYearTiny*/,
4588  3 /*inMonth*/,
4589  6 /*onDayOfWeek*/,
4590  0 /*onDayOfMonth*/,
4591  8 /*atTimeCode*/,
4592  'w' /*atTimeModifier*/,
4593  4 /*deltaCode*/,
4594  '-' /*letter*/,
4595  },
4596  // Rule Mongol 2015 2016 - Sep lastSat 0:00 0 -
4597  {
4598  15 /*fromYearTiny*/,
4599  16 /*toYearTiny*/,
4600  9 /*inMonth*/,
4601  6 /*onDayOfWeek*/,
4602  0 /*onDayOfMonth*/,
4603  0 /*atTimeCode*/,
4604  'w' /*atTimeModifier*/,
4605  0 /*deltaCode*/,
4606  '-' /*letter*/,
4607  },
4608 
4609 };
4610 
4611 
4612 
4613 const extended::ZonePolicy kPolicyMongol = {
4614  6 /*numRules*/,
4615  kZoneRulesMongol /*rules*/,
4616  0 /* numLetters */,
4617  nullptr /* letters */,
4618 };
4619 
4620 //---------------------------------------------------------------------------
4621 // Policy name: Morocco
4622 // Rules: 67
4623 // Memory (8-bit): 609
4624 // Memory (32-bit): 613
4625 //---------------------------------------------------------------------------
4626 
4627 static const extended::ZoneRule kZoneRulesMorocco[] = {
4628  // Rule Morocco 1978 only - Aug 4 0:00 0 -
4629  {
4630  -22 /*fromYearTiny*/,
4631  -22 /*toYearTiny*/,
4632  8 /*inMonth*/,
4633  0 /*onDayOfWeek*/,
4634  4 /*onDayOfMonth*/,
4635  0 /*atTimeCode*/,
4636  'w' /*atTimeModifier*/,
4637  0 /*deltaCode*/,
4638  '-' /*letter*/,
4639  },
4640  // Rule Morocco 2008 only - Jun 1 0:00 1:00 -
4641  {
4642  8 /*fromYearTiny*/,
4643  8 /*toYearTiny*/,
4644  6 /*inMonth*/,
4645  0 /*onDayOfWeek*/,
4646  1 /*onDayOfMonth*/,
4647  0 /*atTimeCode*/,
4648  'w' /*atTimeModifier*/,
4649  4 /*deltaCode*/,
4650  '-' /*letter*/,
4651  },
4652  // Rule Morocco 2008 only - Sep 1 0:00 0 -
4653  {
4654  8 /*fromYearTiny*/,
4655  8 /*toYearTiny*/,
4656  9 /*inMonth*/,
4657  0 /*onDayOfWeek*/,
4658  1 /*onDayOfMonth*/,
4659  0 /*atTimeCode*/,
4660  'w' /*atTimeModifier*/,
4661  0 /*deltaCode*/,
4662  '-' /*letter*/,
4663  },
4664  // Rule Morocco 2009 only - Jun 1 0:00 1:00 -
4665  {
4666  9 /*fromYearTiny*/,
4667  9 /*toYearTiny*/,
4668  6 /*inMonth*/,
4669  0 /*onDayOfWeek*/,
4670  1 /*onDayOfMonth*/,
4671  0 /*atTimeCode*/,
4672  'w' /*atTimeModifier*/,
4673  4 /*deltaCode*/,
4674  '-' /*letter*/,
4675  },
4676  // Rule Morocco 2009 only - Aug 21 0:00 0 -
4677  {
4678  9 /*fromYearTiny*/,
4679  9 /*toYearTiny*/,
4680  8 /*inMonth*/,
4681  0 /*onDayOfWeek*/,
4682  21 /*onDayOfMonth*/,
4683  0 /*atTimeCode*/,
4684  'w' /*atTimeModifier*/,
4685  0 /*deltaCode*/,
4686  '-' /*letter*/,
4687  },
4688  // Rule Morocco 2010 only - May 2 0:00 1:00 -
4689  {
4690  10 /*fromYearTiny*/,
4691  10 /*toYearTiny*/,
4692  5 /*inMonth*/,
4693  0 /*onDayOfWeek*/,
4694  2 /*onDayOfMonth*/,
4695  0 /*atTimeCode*/,
4696  'w' /*atTimeModifier*/,
4697  4 /*deltaCode*/,
4698  '-' /*letter*/,
4699  },
4700  // Rule Morocco 2010 only - Aug 8 0:00 0 -
4701  {
4702  10 /*fromYearTiny*/,
4703  10 /*toYearTiny*/,
4704  8 /*inMonth*/,
4705  0 /*onDayOfWeek*/,
4706  8 /*onDayOfMonth*/,
4707  0 /*atTimeCode*/,
4708  'w' /*atTimeModifier*/,
4709  0 /*deltaCode*/,
4710  '-' /*letter*/,
4711  },
4712  // Rule Morocco 2011 only - Apr 3 0:00 1:00 -
4713  {
4714  11 /*fromYearTiny*/,
4715  11 /*toYearTiny*/,
4716  4 /*inMonth*/,
4717  0 /*onDayOfWeek*/,
4718  3 /*onDayOfMonth*/,
4719  0 /*atTimeCode*/,
4720  'w' /*atTimeModifier*/,
4721  4 /*deltaCode*/,
4722  '-' /*letter*/,
4723  },
4724  // Rule Morocco 2011 only - Jul 31 0:00 0 -
4725  {
4726  11 /*fromYearTiny*/,
4727  11 /*toYearTiny*/,
4728  7 /*inMonth*/,
4729  0 /*onDayOfWeek*/,
4730  31 /*onDayOfMonth*/,
4731  0 /*atTimeCode*/,
4732  'w' /*atTimeModifier*/,
4733  0 /*deltaCode*/,
4734  '-' /*letter*/,
4735  },
4736  // Rule Morocco 2012 2013 - Apr lastSun 2:00 1:00 -
4737  {
4738  12 /*fromYearTiny*/,
4739  13 /*toYearTiny*/,
4740  4 /*inMonth*/,
4741  7 /*onDayOfWeek*/,
4742  0 /*onDayOfMonth*/,
4743  8 /*atTimeCode*/,
4744  'w' /*atTimeModifier*/,
4745  4 /*deltaCode*/,
4746  '-' /*letter*/,
4747  },
4748  // Rule Morocco 2012 only - Jul 20 3:00 0 -
4749  {
4750  12 /*fromYearTiny*/,
4751  12 /*toYearTiny*/,
4752  7 /*inMonth*/,
4753  0 /*onDayOfWeek*/,
4754  20 /*onDayOfMonth*/,
4755  12 /*atTimeCode*/,
4756  'w' /*atTimeModifier*/,
4757  0 /*deltaCode*/,
4758  '-' /*letter*/,
4759  },
4760  // Rule Morocco 2012 only - Aug 20 2:00 1:00 -
4761  {
4762  12 /*fromYearTiny*/,
4763  12 /*toYearTiny*/,
4764  8 /*inMonth*/,
4765  0 /*onDayOfWeek*/,
4766  20 /*onDayOfMonth*/,
4767  8 /*atTimeCode*/,
4768  'w' /*atTimeModifier*/,
4769  4 /*deltaCode*/,
4770  '-' /*letter*/,
4771  },
4772  // Rule Morocco 2012 only - Sep 30 3:00 0 -
4773  {
4774  12 /*fromYearTiny*/,
4775  12 /*toYearTiny*/,
4776  9 /*inMonth*/,
4777  0 /*onDayOfWeek*/,
4778  30 /*onDayOfMonth*/,
4779  12 /*atTimeCode*/,
4780  'w' /*atTimeModifier*/,
4781  0 /*deltaCode*/,
4782  '-' /*letter*/,
4783  },
4784  // Rule Morocco 2013 only - Jul 7 3:00 0 -
4785  {
4786  13 /*fromYearTiny*/,
4787  13 /*toYearTiny*/,
4788  7 /*inMonth*/,
4789  0 /*onDayOfWeek*/,
4790  7 /*onDayOfMonth*/,
4791  12 /*atTimeCode*/,
4792  'w' /*atTimeModifier*/,
4793  0 /*deltaCode*/,
4794  '-' /*letter*/,
4795  },
4796  // Rule Morocco 2013 only - Aug 10 2:00 1:00 -
4797  {
4798  13 /*fromYearTiny*/,
4799  13 /*toYearTiny*/,
4800  8 /*inMonth*/,
4801  0 /*onDayOfWeek*/,
4802  10 /*onDayOfMonth*/,
4803  8 /*atTimeCode*/,
4804  'w' /*atTimeModifier*/,
4805  4 /*deltaCode*/,
4806  '-' /*letter*/,
4807  },
4808  // Rule Morocco 2013 2018 - Oct lastSun 3:00 0 -
4809  {
4810  13 /*fromYearTiny*/,
4811  18 /*toYearTiny*/,
4812  10 /*inMonth*/,
4813  7 /*onDayOfWeek*/,
4814  0 /*onDayOfMonth*/,
4815  12 /*atTimeCode*/,
4816  'w' /*atTimeModifier*/,
4817  0 /*deltaCode*/,
4818  '-' /*letter*/,
4819  },
4820  // Rule Morocco 2014 2018 - Mar lastSun 2:00 1:00 -
4821  {
4822  14 /*fromYearTiny*/,
4823  18 /*toYearTiny*/,
4824  3 /*inMonth*/,
4825  7 /*onDayOfWeek*/,
4826  0 /*onDayOfMonth*/,
4827  8 /*atTimeCode*/,
4828  'w' /*atTimeModifier*/,
4829  4 /*deltaCode*/,
4830  '-' /*letter*/,
4831  },
4832  // Rule Morocco 2014 only - Jun 28 3:00 0 -
4833  {
4834  14 /*fromYearTiny*/,
4835  14 /*toYearTiny*/,
4836  6 /*inMonth*/,
4837  0 /*onDayOfWeek*/,
4838  28 /*onDayOfMonth*/,
4839  12 /*atTimeCode*/,
4840  'w' /*atTimeModifier*/,
4841  0 /*deltaCode*/,
4842  '-' /*letter*/,
4843  },
4844  // Rule Morocco 2014 only - Aug 2 2:00 1:00 -
4845  {
4846  14 /*fromYearTiny*/,
4847  14 /*toYearTiny*/,
4848  8 /*inMonth*/,
4849  0 /*onDayOfWeek*/,
4850  2 /*onDayOfMonth*/,
4851  8 /*atTimeCode*/,
4852  'w' /*atTimeModifier*/,
4853  4 /*deltaCode*/,
4854  '-' /*letter*/,
4855  },
4856  // Rule Morocco 2015 only - Jun 14 3:00 0 -
4857  {
4858  15 /*fromYearTiny*/,
4859  15 /*toYearTiny*/,
4860  6 /*inMonth*/,
4861  0 /*onDayOfWeek*/,
4862  14 /*onDayOfMonth*/,
4863  12 /*atTimeCode*/,
4864  'w' /*atTimeModifier*/,
4865  0 /*deltaCode*/,
4866  '-' /*letter*/,
4867  },
4868  // Rule Morocco 2015 only - Jul 19 2:00 1:00 -
4869  {
4870  15 /*fromYearTiny*/,
4871  15 /*toYearTiny*/,
4872  7 /*inMonth*/,
4873  0 /*onDayOfWeek*/,
4874  19 /*onDayOfMonth*/,
4875  8 /*atTimeCode*/,
4876  'w' /*atTimeModifier*/,
4877  4 /*deltaCode*/,
4878  '-' /*letter*/,
4879  },
4880  // Rule Morocco 2016 only - Jun 5 3:00 0 -
4881  {
4882  16 /*fromYearTiny*/,
4883  16 /*toYearTiny*/,
4884  6 /*inMonth*/,
4885  0 /*onDayOfWeek*/,
4886  5 /*onDayOfMonth*/,
4887  12 /*atTimeCode*/,
4888  'w' /*atTimeModifier*/,
4889  0 /*deltaCode*/,
4890  '-' /*letter*/,
4891  },
4892  // Rule Morocco 2016 only - Jul 10 2:00 1:00 -
4893  {
4894  16 /*fromYearTiny*/,
4895  16 /*toYearTiny*/,
4896  7 /*inMonth*/,
4897  0 /*onDayOfWeek*/,
4898  10 /*onDayOfMonth*/,
4899  8 /*atTimeCode*/,
4900  'w' /*atTimeModifier*/,
4901  4 /*deltaCode*/,
4902  '-' /*letter*/,
4903  },
4904  // Rule Morocco 2017 only - May 21 3:00 0 -
4905  {
4906  17 /*fromYearTiny*/,
4907  17 /*toYearTiny*/,
4908  5 /*inMonth*/,
4909  0 /*onDayOfWeek*/,
4910  21 /*onDayOfMonth*/,
4911  12 /*atTimeCode*/,
4912  'w' /*atTimeModifier*/,
4913  0 /*deltaCode*/,
4914  '-' /*letter*/,
4915  },
4916  // Rule Morocco 2017 only - Jul 2 2:00 1:00 -
4917  {
4918  17 /*fromYearTiny*/,
4919  17 /*toYearTiny*/,
4920  7 /*inMonth*/,
4921  0 /*onDayOfWeek*/,
4922  2 /*onDayOfMonth*/,
4923  8 /*atTimeCode*/,
4924  'w' /*atTimeModifier*/,
4925  4 /*deltaCode*/,
4926  '-' /*letter*/,
4927  },
4928  // Rule Morocco 2018 only - May 13 3:00 0 -
4929  {
4930  18 /*fromYearTiny*/,
4931  18 /*toYearTiny*/,
4932  5 /*inMonth*/,
4933  0 /*onDayOfWeek*/,
4934  13 /*onDayOfMonth*/,
4935  12 /*atTimeCode*/,
4936  'w' /*atTimeModifier*/,
4937  0 /*deltaCode*/,
4938  '-' /*letter*/,
4939  },
4940  // Rule Morocco 2018 only - Jun 17 2:00 1:00 -
4941  {
4942  18 /*fromYearTiny*/,
4943  18 /*toYearTiny*/,
4944  6 /*inMonth*/,
4945  0 /*onDayOfWeek*/,
4946  17 /*onDayOfMonth*/,
4947  8 /*atTimeCode*/,
4948  'w' /*atTimeModifier*/,
4949  4 /*deltaCode*/,
4950  '-' /*letter*/,
4951  },
4952  // Rule Morocco 2019 only - May 5 3:00 -1:00 -
4953  {
4954  19 /*fromYearTiny*/,
4955  19 /*toYearTiny*/,
4956  5 /*inMonth*/,
4957  0 /*onDayOfWeek*/,
4958  5 /*onDayOfMonth*/,
4959  12 /*atTimeCode*/,
4960  'w' /*atTimeModifier*/,
4961  -4 /*deltaCode*/,
4962  '-' /*letter*/,
4963  },
4964  // Rule Morocco 2019 only - Jun 9 2:00 0 -
4965  {
4966  19 /*fromYearTiny*/,
4967  19 /*toYearTiny*/,
4968  6 /*inMonth*/,
4969  0 /*onDayOfWeek*/,
4970  9 /*onDayOfMonth*/,
4971  8 /*atTimeCode*/,
4972  'w' /*atTimeModifier*/,
4973  0 /*deltaCode*/,
4974  '-' /*letter*/,
4975  },
4976  // Rule Morocco 2020 only - Apr 19 3:00 -1:00 -
4977  {
4978  20 /*fromYearTiny*/,
4979  20 /*toYearTiny*/,
4980  4 /*inMonth*/,
4981  0 /*onDayOfWeek*/,
4982  19 /*onDayOfMonth*/,
4983  12 /*atTimeCode*/,
4984  'w' /*atTimeModifier*/,
4985  -4 /*deltaCode*/,
4986  '-' /*letter*/,
4987  },
4988  // Rule Morocco 2020 only - May 24 2:00 0 -
4989  {
4990  20 /*fromYearTiny*/,
4991  20 /*toYearTiny*/,
4992  5 /*inMonth*/,
4993  0 /*onDayOfWeek*/,
4994  24 /*onDayOfMonth*/,
4995  8 /*atTimeCode*/,
4996  'w' /*atTimeModifier*/,
4997  0 /*deltaCode*/,
4998  '-' /*letter*/,
4999  },
5000  // Rule Morocco 2021 only - Apr 11 3:00 -1:00 -
5001  {
5002  21 /*fromYearTiny*/,
5003  21 /*toYearTiny*/,
5004  4 /*inMonth*/,
5005  0 /*onDayOfWeek*/,
5006  11 /*onDayOfMonth*/,
5007  12 /*atTimeCode*/,
5008  'w' /*atTimeModifier*/,
5009  -4 /*deltaCode*/,
5010  '-' /*letter*/,
5011  },
5012  // Rule Morocco 2021 only - May 16 2:00 0 -
5013  {
5014  21 /*fromYearTiny*/,
5015  21 /*toYearTiny*/,
5016  5 /*inMonth*/,
5017  0 /*onDayOfWeek*/,
5018  16 /*onDayOfMonth*/,
5019  8 /*atTimeCode*/,
5020  'w' /*atTimeModifier*/,
5021  0 /*deltaCode*/,
5022  '-' /*letter*/,
5023  },
5024  // Rule Morocco 2022 only - Mar 27 3:00 -1:00 -
5025  {
5026  22 /*fromYearTiny*/,
5027  22 /*toYearTiny*/,
5028  3 /*inMonth*/,
5029  0 /*onDayOfWeek*/,
5030  27 /*onDayOfMonth*/,
5031  12 /*atTimeCode*/,
5032  'w' /*atTimeModifier*/,
5033  -4 /*deltaCode*/,
5034  '-' /*letter*/,
5035  },
5036  // Rule Morocco 2022 only - May 8 2:00 0 -
5037  {
5038  22 /*fromYearTiny*/,
5039  22 /*toYearTiny*/,
5040  5 /*inMonth*/,
5041  0 /*onDayOfWeek*/,
5042  8 /*onDayOfMonth*/,
5043  8 /*atTimeCode*/,
5044  'w' /*atTimeModifier*/,
5045  0 /*deltaCode*/,
5046  '-' /*letter*/,
5047  },
5048  // Rule Morocco 2023 only - Mar 19 3:00 -1:00 -
5049  {
5050  23 /*fromYearTiny*/,
5051  23 /*toYearTiny*/,
5052  3 /*inMonth*/,
5053  0 /*onDayOfWeek*/,
5054  19 /*onDayOfMonth*/,
5055  12 /*atTimeCode*/,
5056  'w' /*atTimeModifier*/,
5057  -4 /*deltaCode*/,
5058  '-' /*letter*/,
5059  },
5060  // Rule Morocco 2023 only - Apr 23 2:00 0 -
5061  {
5062  23 /*fromYearTiny*/,
5063  23 /*toYearTiny*/,
5064  4 /*inMonth*/,
5065  0 /*onDayOfWeek*/,
5066  23 /*onDayOfMonth*/,
5067  8 /*atTimeCode*/,
5068  'w' /*atTimeModifier*/,
5069  0 /*deltaCode*/,
5070  '-' /*letter*/,
5071  },
5072  // Rule Morocco 2024 only - Mar 10 3:00 -1:00 -
5073  {
5074  24 /*fromYearTiny*/,
5075  24 /*toYearTiny*/,
5076  3 /*inMonth*/,
5077  0 /*onDayOfWeek*/,
5078  10 /*onDayOfMonth*/,
5079  12 /*atTimeCode*/,
5080  'w' /*atTimeModifier*/,
5081  -4 /*deltaCode*/,
5082  '-' /*letter*/,
5083  },
5084  // Rule Morocco 2024 only - Apr 14 2:00 0 -
5085  {
5086  24 /*fromYearTiny*/,
5087  24 /*toYearTiny*/,
5088  4 /*inMonth*/,
5089  0 /*onDayOfWeek*/,
5090  14 /*onDayOfMonth*/,
5091  8 /*atTimeCode*/,
5092  'w' /*atTimeModifier*/,
5093  0 /*deltaCode*/,
5094  '-' /*letter*/,
5095  },
5096  // Rule Morocco 2025 only - Feb 23 3:00 -1:00 -
5097  {
5098  25 /*fromYearTiny*/,
5099  25 /*toYearTiny*/,
5100  2 /*inMonth*/,
5101  0 /*onDayOfWeek*/,
5102  23 /*onDayOfMonth*/,
5103  12 /*atTimeCode*/,
5104  'w' /*atTimeModifier*/,
5105  -4 /*deltaCode*/,
5106  '-' /*letter*/,
5107  },
5108  // Rule Morocco 2025 only - Apr 6 2:00 0 -
5109  {
5110  25 /*fromYearTiny*/,
5111  25 /*toYearTiny*/,
5112  4 /*inMonth*/,
5113  0 /*onDayOfWeek*/,
5114  6 /*onDayOfMonth*/,
5115  8 /*atTimeCode*/,
5116  'w' /*atTimeModifier*/,
5117  0 /*deltaCode*/,
5118  '-' /*letter*/,
5119  },
5120  // Rule Morocco 2026 only - Feb 15 3:00 -1:00 -
5121  {
5122  26 /*fromYearTiny*/,
5123  26 /*toYearTiny*/,
5124  2 /*inMonth*/,
5125  0 /*onDayOfWeek*/,
5126  15 /*onDayOfMonth*/,
5127  12 /*atTimeCode*/,
5128  'w' /*atTimeModifier*/,
5129  -4 /*deltaCode*/,
5130  '-' /*letter*/,
5131  },
5132  // Rule Morocco 2026 only - Mar 22 2:00 0 -
5133  {
5134  26 /*fromYearTiny*/,
5135  26 /*toYearTiny*/,
5136  3 /*inMonth*/,
5137  0 /*onDayOfWeek*/,
5138  22 /*onDayOfMonth*/,
5139  8 /*atTimeCode*/,
5140  'w' /*atTimeModifier*/,
5141  0 /*deltaCode*/,
5142  '-' /*letter*/,
5143  },
5144  // Rule Morocco 2027 only - Feb 7 3:00 -1:00 -
5145  {
5146  27 /*fromYearTiny*/,
5147  27 /*toYearTiny*/,
5148  2 /*inMonth*/,
5149  0 /*onDayOfWeek*/,
5150  7 /*onDayOfMonth*/,
5151  12 /*atTimeCode*/,
5152  'w' /*atTimeModifier*/,
5153  -4 /*deltaCode*/,
5154  '-' /*letter*/,
5155  },
5156  // Rule Morocco 2027 only - Mar 14 2:00 0 -
5157  {
5158  27 /*fromYearTiny*/,
5159  27 /*toYearTiny*/,
5160  3 /*inMonth*/,
5161  0 /*onDayOfWeek*/,
5162  14 /*onDayOfMonth*/,
5163  8 /*atTimeCode*/,
5164  'w' /*atTimeModifier*/,
5165  0 /*deltaCode*/,
5166  '-' /*letter*/,
5167  },
5168  // Rule Morocco 2028 only - Jan 23 3:00 -1:00 -
5169  {
5170  28 /*fromYearTiny*/,
5171  28 /*toYearTiny*/,
5172  1 /*inMonth*/,
5173  0 /*onDayOfWeek*/,
5174  23 /*onDayOfMonth*/,
5175  12 /*atTimeCode*/,
5176  'w' /*atTimeModifier*/,
5177  -4 /*deltaCode*/,
5178  '-' /*letter*/,
5179  },
5180  // Rule Morocco 2028 only - Feb 27 2:00 0 -
5181  {
5182  28 /*fromYearTiny*/,
5183  28 /*toYearTiny*/,
5184  2 /*inMonth*/,
5185  0 /*onDayOfWeek*/,
5186  27 /*onDayOfMonth*/,
5187  8 /*atTimeCode*/,
5188  'w' /*atTimeModifier*/,
5189  0 /*deltaCode*/,
5190  '-' /*letter*/,
5191  },
5192  // Rule Morocco 2029 only - Jan 14 3:00 -1:00 -
5193  {
5194  29 /*fromYearTiny*/,
5195  29 /*toYearTiny*/,
5196  1 /*inMonth*/,
5197  0 /*onDayOfWeek*/,
5198  14 /*onDayOfMonth*/,
5199  12 /*atTimeCode*/,
5200  'w' /*atTimeModifier*/,
5201  -4 /*deltaCode*/,
5202  '-' /*letter*/,
5203  },
5204  // Rule Morocco 2029 only - Feb 18 2:00 0 -
5205  {
5206  29 /*fromYearTiny*/,
5207  29 /*toYearTiny*/,
5208  2 /*inMonth*/,
5209  0 /*onDayOfWeek*/,
5210  18 /*onDayOfMonth*/,
5211  8 /*atTimeCode*/,
5212  'w' /*atTimeModifier*/,
5213  0 /*deltaCode*/,
5214  '-' /*letter*/,
5215  },
5216  // Rule Morocco 2029 only - Dec 30 3:00 -1:00 -
5217  {
5218  29 /*fromYearTiny*/,
5219  29 /*toYearTiny*/,
5220  12 /*inMonth*/,
5221  0 /*onDayOfWeek*/,
5222  30 /*onDayOfMonth*/,
5223  12 /*atTimeCode*/,
5224  'w' /*atTimeModifier*/,
5225  -4 /*deltaCode*/,
5226  '-' /*letter*/,
5227  },
5228  // Rule Morocco 2030 only - Feb 10 2:00 0 -
5229  {
5230  30 /*fromYearTiny*/,
5231  30 /*toYearTiny*/,
5232  2 /*inMonth*/,
5233  0 /*onDayOfWeek*/,
5234  10 /*onDayOfMonth*/,
5235  8 /*atTimeCode*/,
5236  'w' /*atTimeModifier*/,
5237  0 /*deltaCode*/,
5238  '-' /*letter*/,
5239  },
5240  // Rule Morocco 2030 only - Dec 22 3:00 -1:00 -
5241  {
5242  30 /*fromYearTiny*/,
5243  30 /*toYearTiny*/,
5244  12 /*inMonth*/,
5245  0 /*onDayOfWeek*/,
5246  22 /*onDayOfMonth*/,
5247  12 /*atTimeCode*/,
5248  'w' /*atTimeModifier*/,
5249  -4 /*deltaCode*/,
5250  '-' /*letter*/,
5251  },
5252  // Rule Morocco 2031 only - Jan 26 2:00 0 -
5253  {
5254  31 /*fromYearTiny*/,
5255  31 /*toYearTiny*/,
5256  1 /*inMonth*/,
5257  0 /*onDayOfWeek*/,
5258  26 /*onDayOfMonth*/,
5259  8 /*atTimeCode*/,
5260  'w' /*atTimeModifier*/,
5261  0 /*deltaCode*/,
5262  '-' /*letter*/,
5263  },
5264  // Rule Morocco 2031 only - Dec 14 3:00 -1:00 -
5265  {
5266  31 /*fromYearTiny*/,
5267  31 /*toYearTiny*/,
5268  12 /*inMonth*/,
5269  0 /*onDayOfWeek*/,
5270  14 /*onDayOfMonth*/,
5271  12 /*atTimeCode*/,
5272  'w' /*atTimeModifier*/,
5273  -4 /*deltaCode*/,
5274  '-' /*letter*/,
5275  },
5276  // Rule Morocco 2032 only - Jan 18 2:00 0 -
5277  {
5278  32 /*fromYearTiny*/,
5279  32 /*toYearTiny*/,
5280  1 /*inMonth*/,
5281  0 /*onDayOfWeek*/,
5282  18 /*onDayOfMonth*/,
5283  8 /*atTimeCode*/,
5284  'w' /*atTimeModifier*/,
5285  0 /*deltaCode*/,
5286  '-' /*letter*/,
5287  },
5288  // Rule Morocco 2032 only - Nov 28 3:00 -1:00 -
5289  {
5290  32 /*fromYearTiny*/,
5291  32 /*toYearTiny*/,
5292  11 /*inMonth*/,
5293  0 /*onDayOfWeek*/,
5294  28 /*onDayOfMonth*/,
5295  12 /*atTimeCode*/,
5296  'w' /*atTimeModifier*/,
5297  -4 /*deltaCode*/,
5298  '-' /*letter*/,
5299  },
5300  // Rule Morocco 2033 only - Jan 9 2:00 0 -
5301  {
5302  33 /*fromYearTiny*/,
5303  33 /*toYearTiny*/,
5304  1 /*inMonth*/,
5305  0 /*onDayOfWeek*/,
5306  9 /*onDayOfMonth*/,
5307  8 /*atTimeCode*/,
5308  'w' /*atTimeModifier*/,
5309  0 /*deltaCode*/,
5310  '-' /*letter*/,
5311  },
5312  // Rule Morocco 2033 only - Nov 20 3:00 -1:00 -
5313  {
5314  33 /*fromYearTiny*/,
5315  33 /*toYearTiny*/,
5316  11 /*inMonth*/,
5317  0 /*onDayOfWeek*/,
5318  20 /*onDayOfMonth*/,
5319  12 /*atTimeCode*/,
5320  'w' /*atTimeModifier*/,
5321  -4 /*deltaCode*/,
5322  '-' /*letter*/,
5323  },
5324  // Rule Morocco 2033 only - Dec 25 2:00 0 -
5325  {
5326  33 /*fromYearTiny*/,
5327  33 /*toYearTiny*/,
5328  12 /*inMonth*/,
5329  0 /*onDayOfWeek*/,
5330  25 /*onDayOfMonth*/,
5331  8 /*atTimeCode*/,
5332  'w' /*atTimeModifier*/,
5333  0 /*deltaCode*/,
5334  '-' /*letter*/,
5335  },
5336  // Rule Morocco 2034 only - Nov 5 3:00 -1:00 -
5337  {
5338  34 /*fromYearTiny*/,
5339  34 /*toYearTiny*/,
5340  11 /*inMonth*/,
5341  0 /*onDayOfWeek*/,
5342  5 /*onDayOfMonth*/,
5343  12 /*atTimeCode*/,
5344  'w' /*atTimeModifier*/,
5345  -4 /*deltaCode*/,
5346  '-' /*letter*/,
5347  },
5348  // Rule Morocco 2034 only - Dec 17 2:00 0 -
5349  {
5350  34 /*fromYearTiny*/,
5351  34 /*toYearTiny*/,
5352  12 /*inMonth*/,
5353  0 /*onDayOfWeek*/,
5354  17 /*onDayOfMonth*/,
5355  8 /*atTimeCode*/,
5356  'w' /*atTimeModifier*/,
5357  0 /*deltaCode*/,
5358  '-' /*letter*/,
5359  },
5360  // Rule Morocco 2035 only - Oct 28 3:00 -1:00 -
5361  {
5362  35 /*fromYearTiny*/,
5363  35 /*toYearTiny*/,
5364  10 /*inMonth*/,
5365  0 /*onDayOfWeek*/,
5366  28 /*onDayOfMonth*/,
5367  12 /*atTimeCode*/,
5368  'w' /*atTimeModifier*/,
5369  -4 /*deltaCode*/,
5370  '-' /*letter*/,
5371  },
5372  // Rule Morocco 2035 only - Dec 2 2:00 0 -
5373  {
5374  35 /*fromYearTiny*/,
5375  35 /*toYearTiny*/,
5376  12 /*inMonth*/,
5377  0 /*onDayOfWeek*/,
5378  2 /*onDayOfMonth*/,
5379  8 /*atTimeCode*/,
5380  'w' /*atTimeModifier*/,
5381  0 /*deltaCode*/,
5382  '-' /*letter*/,
5383  },
5384  // Rule Morocco 2036 only - Oct 19 3:00 -1:00 -
5385  {
5386  36 /*fromYearTiny*/,
5387  36 /*toYearTiny*/,
5388  10 /*inMonth*/,
5389  0 /*onDayOfWeek*/,
5390  19 /*onDayOfMonth*/,
5391  12 /*atTimeCode*/,
5392  'w' /*atTimeModifier*/,
5393  -4 /*deltaCode*/,
5394  '-' /*letter*/,
5395  },
5396  // Rule Morocco 2036 only - Nov 23 2:00 0 -
5397  {
5398  36 /*fromYearTiny*/,
5399  36 /*toYearTiny*/,
5400  11 /*inMonth*/,
5401  0 /*onDayOfWeek*/,
5402  23 /*onDayOfMonth*/,
5403  8 /*atTimeCode*/,
5404  'w' /*atTimeModifier*/,
5405  0 /*deltaCode*/,
5406  '-' /*letter*/,
5407  },
5408  // Rule Morocco 2037 only - Oct 4 3:00 -1:00 -
5409  {
5410  37 /*fromYearTiny*/,
5411  37 /*toYearTiny*/,
5412  10 /*inMonth*/,
5413  0 /*onDayOfWeek*/,
5414  4 /*onDayOfMonth*/,
5415  12 /*atTimeCode*/,
5416  'w' /*atTimeModifier*/,
5417  -4 /*deltaCode*/,
5418  '-' /*letter*/,
5419  },
5420  // Rule Morocco 2037 only - Nov 15 2:00 0 -
5421  {
5422  37 /*fromYearTiny*/,
5423  37 /*toYearTiny*/,
5424  11 /*inMonth*/,
5425  0 /*onDayOfWeek*/,
5426  15 /*onDayOfMonth*/,
5427  8 /*atTimeCode*/,
5428  'w' /*atTimeModifier*/,
5429  0 /*deltaCode*/,
5430  '-' /*letter*/,
5431  },
5432 
5433 };
5434 
5435 
5436 
5437 const extended::ZonePolicy kPolicyMorocco = {
5438  67 /*numRules*/,
5439  kZoneRulesMorocco /*rules*/,
5440  0 /* numLetters */,
5441  nullptr /* letters */,
5442 };
5443 
5444 //---------------------------------------------------------------------------
5445 // Policy name: NC
5446 // Rules: 1
5447 // Memory (8-bit): 15
5448 // Memory (32-bit): 19
5449 //---------------------------------------------------------------------------
5450 
5451 static const extended::ZoneRule kZoneRulesNC[] = {
5452  // Rule NC 1997 only - Mar 2 2:00s 0 -
5453  {
5454  -3 /*fromYearTiny*/,
5455  -3 /*toYearTiny*/,
5456  3 /*inMonth*/,
5457  0 /*onDayOfWeek*/,
5458  2 /*onDayOfMonth*/,
5459  8 /*atTimeCode*/,
5460  's' /*atTimeModifier*/,
5461  0 /*deltaCode*/,
5462  '-' /*letter*/,
5463  },
5464 
5465 };
5466 
5467 
5468 
5469 const extended::ZonePolicy kPolicyNC = {
5470  1 /*numRules*/,
5471  kZoneRulesNC /*rules*/,
5472  0 /* numLetters */,
5473  nullptr /* letters */,
5474 };
5475 
5476 //---------------------------------------------------------------------------
5477 // Policy name: NT_YK
5478 // Rules: 3
5479 // Memory (8-bit): 33
5480 // Memory (32-bit): 37
5481 //---------------------------------------------------------------------------
5482 
5483 static const extended::ZoneRule kZoneRulesNT_YK[] = {
5484  // Rule NT_YK 1980 1986 - Apr lastSun 2:00 1:00 D
5485  {
5486  -20 /*fromYearTiny*/,
5487  -14 /*toYearTiny*/,
5488  4 /*inMonth*/,
5489  7 /*onDayOfWeek*/,
5490  0 /*onDayOfMonth*/,
5491  8 /*atTimeCode*/,
5492  'w' /*atTimeModifier*/,
5493  4 /*deltaCode*/,
5494  'D' /*letter*/,
5495  },
5496  // Rule NT_YK 1980 2006 - Oct lastSun 2:00 0 S
5497  {
5498  -20 /*fromYearTiny*/,
5499  6 /*toYearTiny*/,
5500  10 /*inMonth*/,
5501  7 /*onDayOfWeek*/,
5502  0 /*onDayOfMonth*/,
5503  8 /*atTimeCode*/,
5504  'w' /*atTimeModifier*/,
5505  0 /*deltaCode*/,
5506  'S' /*letter*/,
5507  },
5508  // Rule NT_YK 1987 2006 - Apr Sun>=1 2:00 1:00 D
5509  {
5510  -13 /*fromYearTiny*/,
5511  6 /*toYearTiny*/,
5512  4 /*inMonth*/,
5513  7 /*onDayOfWeek*/,
5514  1 /*onDayOfMonth*/,
5515  8 /*atTimeCode*/,
5516  'w' /*atTimeModifier*/,
5517  4 /*deltaCode*/,
5518  'D' /*letter*/,
5519  },
5520 
5521 };
5522 
5523 
5524 
5525 const extended::ZonePolicy kPolicyNT_YK = {
5526  3 /*numRules*/,
5527  kZoneRulesNT_YK /*rules*/,
5528  0 /* numLetters */,
5529  nullptr /* letters */,
5530 };
5531 
5532 //---------------------------------------------------------------------------
5533 // Policy name: NZ
5534 // Rules: 5
5535 // Memory (8-bit): 51
5536 // Memory (32-bit): 55
5537 //---------------------------------------------------------------------------
5538 
5539 static const extended::ZoneRule kZoneRulesNZ[] = {
5540  // Rule NZ 1989 only - Oct Sun>=8 2:00s 1:00 D
5541  {
5542  -11 /*fromYearTiny*/,
5543  -11 /*toYearTiny*/,
5544  10 /*inMonth*/,
5545  7 /*onDayOfWeek*/,
5546  8 /*onDayOfMonth*/,
5547  8 /*atTimeCode*/,
5548  's' /*atTimeModifier*/,
5549  4 /*deltaCode*/,
5550  'D' /*letter*/,
5551  },
5552  // Rule NZ 1990 2006 - Oct Sun>=1 2:00s 1:00 D
5553  {
5554  -10 /*fromYearTiny*/,
5555  6 /*toYearTiny*/,
5556  10 /*inMonth*/,
5557  7 /*onDayOfWeek*/,
5558  1 /*onDayOfMonth*/,
5559  8 /*atTimeCode*/,
5560  's' /*atTimeModifier*/,
5561  4 /*deltaCode*/,
5562  'D' /*letter*/,
5563  },
5564  // Rule NZ 1990 2007 - Mar Sun>=15 2:00s 0 S
5565  {
5566  -10 /*fromYearTiny*/,
5567  7 /*toYearTiny*/,
5568  3 /*inMonth*/,
5569  7 /*onDayOfWeek*/,
5570  15 /*onDayOfMonth*/,
5571  8 /*atTimeCode*/,
5572  's' /*atTimeModifier*/,
5573  0 /*deltaCode*/,
5574  'S' /*letter*/,
5575  },
5576  // Rule NZ 2007 max - Sep lastSun 2:00s 1:00 D
5577  {
5578  7 /*fromYearTiny*/,
5579  126 /*toYearTiny*/,
5580  9 /*inMonth*/,
5581  7 /*onDayOfWeek*/,
5582  0 /*onDayOfMonth*/,
5583  8 /*atTimeCode*/,
5584  's' /*atTimeModifier*/,
5585  4 /*deltaCode*/,
5586  'D' /*letter*/,
5587  },
5588  // Rule NZ 2008 max - Apr Sun>=1 2:00s 0 S
5589  {
5590  8 /*fromYearTiny*/,
5591  126 /*toYearTiny*/,
5592  4 /*inMonth*/,
5593  7 /*onDayOfWeek*/,
5594  1 /*onDayOfMonth*/,
5595  8 /*atTimeCode*/,
5596  's' /*atTimeModifier*/,
5597  0 /*deltaCode*/,
5598  'S' /*letter*/,
5599  },
5600 
5601 };
5602 
5603 
5604 
5605 const extended::ZonePolicy kPolicyNZ = {
5606  5 /*numRules*/,
5607  kZoneRulesNZ /*rules*/,
5608  0 /* numLetters */,
5609  nullptr /* letters */,
5610 };
5611 
5612 //---------------------------------------------------------------------------
5613 // Policy name: Namibia
5614 // Rules: 3
5615 // Memory (8-bit): 45
5616 // Memory (32-bit): 53
5617 //---------------------------------------------------------------------------
5618 
5619 static const extended::ZoneRule kZoneRulesNamibia[] = {
5620  // Rule Namibia 1994 only - Mar 21 0:00 -1:00 WAT
5621  {
5622  -6 /*fromYearTiny*/,
5623  -6 /*toYearTiny*/,
5624  3 /*inMonth*/,
5625  0 /*onDayOfWeek*/,
5626  21 /*onDayOfMonth*/,
5627  0 /*atTimeCode*/,
5628  'w' /*atTimeModifier*/,
5629  -4 /*deltaCode*/,
5630  1 /*letter; "WAT"*/,
5631  },
5632  // Rule Namibia 1994 2017 - Sep Sun>=1 2:00 0 CAT
5633  {
5634  -6 /*fromYearTiny*/,
5635  17 /*toYearTiny*/,
5636  9 /*inMonth*/,
5637  7 /*onDayOfWeek*/,
5638  1 /*onDayOfMonth*/,
5639  8 /*atTimeCode*/,
5640  'w' /*atTimeModifier*/,
5641  0 /*deltaCode*/,
5642  0 /*letter; "CAT"*/,
5643  },
5644  // Rule Namibia 1995 2017 - Apr Sun>=1 2:00 -1:00 WAT
5645  {
5646  -5 /*fromYearTiny*/,
5647  17 /*toYearTiny*/,
5648  4 /*inMonth*/,
5649  7 /*onDayOfWeek*/,
5650  1 /*onDayOfMonth*/,
5651  8 /*atTimeCode*/,
5652  'w' /*atTimeModifier*/,
5653  -4 /*deltaCode*/,
5654  1 /*letter; "WAT"*/,
5655  },
5656 
5657 };
5658 
5659 static const char* const kLettersNamibia[] = {
5660  /*0*/ "CAT",
5661  /*1*/ "WAT",
5662 
5663 };
5664 
5665 
5666 const extended::ZonePolicy kPolicyNamibia = {
5667  3 /*numRules*/,
5668  kZoneRulesNamibia /*rules*/,
5669  2 /* numLetters */,
5670  kLettersNamibia /* letters */,
5671 };
5672 
5673 //---------------------------------------------------------------------------
5674 // Policy name: Nic
5675 // Rules: 5
5676 // Memory (8-bit): 51
5677 // Memory (32-bit): 55
5678 //---------------------------------------------------------------------------
5679 
5680 static const extended::ZoneRule kZoneRulesNic[] = {
5681  // Rule Nic 1979 1980 - Jun Mon>=23 0:00 0 S
5682  {
5683  -21 /*fromYearTiny*/,
5684  -20 /*toYearTiny*/,
5685  6 /*inMonth*/,
5686  1 /*onDayOfWeek*/,
5687  23 /*onDayOfMonth*/,
5688  0 /*atTimeCode*/,
5689  'w' /*atTimeModifier*/,
5690  0 /*deltaCode*/,
5691  'S' /*letter*/,
5692  },
5693  // Rule Nic 2005 only - Apr 10 0:00 1:00 D
5694  {
5695  5 /*fromYearTiny*/,
5696  5 /*toYearTiny*/,
5697  4 /*inMonth*/,
5698  0 /*onDayOfWeek*/,
5699  10 /*onDayOfMonth*/,
5700  0 /*atTimeCode*/,
5701  'w' /*atTimeModifier*/,
5702  4 /*deltaCode*/,
5703  'D' /*letter*/,
5704  },
5705  // Rule Nic 2005 only - Oct Sun>=1 0:00 0 S
5706  {
5707  5 /*fromYearTiny*/,
5708  5 /*toYearTiny*/,
5709  10 /*inMonth*/,
5710  7 /*onDayOfWeek*/,
5711  1 /*onDayOfMonth*/,
5712  0 /*atTimeCode*/,
5713  'w' /*atTimeModifier*/,
5714  0 /*deltaCode*/,
5715  'S' /*letter*/,
5716  },
5717  // Rule Nic 2006 only - Apr 30 2:00 1:00 D
5718  {
5719  6 /*fromYearTiny*/,
5720  6 /*toYearTiny*/,
5721  4 /*inMonth*/,
5722  0 /*onDayOfWeek*/,
5723  30 /*onDayOfMonth*/,
5724  8 /*atTimeCode*/,
5725  'w' /*atTimeModifier*/,
5726  4 /*deltaCode*/,
5727  'D' /*letter*/,
5728  },
5729  // Rule Nic 2006 only - Oct Sun>=1 1:00 0 S
5730  {
5731  6 /*fromYearTiny*/,
5732  6 /*toYearTiny*/,
5733  10 /*inMonth*/,
5734  7 /*onDayOfWeek*/,
5735  1 /*onDayOfMonth*/,
5736  4 /*atTimeCode*/,
5737  'w' /*atTimeModifier*/,
5738  0 /*deltaCode*/,
5739  'S' /*letter*/,
5740  },
5741 
5742 };
5743 
5744 
5745 
5746 const extended::ZonePolicy kPolicyNic = {
5747  5 /*numRules*/,
5748  kZoneRulesNic /*rules*/,
5749  0 /* numLetters */,
5750  nullptr /* letters */,
5751 };
5752 
5753 //---------------------------------------------------------------------------
5754 // Policy name: PRC
5755 // Rules: 1
5756 // Memory (8-bit): 15
5757 // Memory (32-bit): 19
5758 //---------------------------------------------------------------------------
5759 
5760 static const extended::ZoneRule kZoneRulesPRC[] = {
5761  // Rule PRC 1986 1991 - Sep Sun>=11 2:00 0 S
5762  {
5763  -14 /*fromYearTiny*/,
5764  -9 /*toYearTiny*/,
5765  9 /*inMonth*/,
5766  7 /*onDayOfWeek*/,
5767  11 /*onDayOfMonth*/,
5768  8 /*atTimeCode*/,
5769  'w' /*atTimeModifier*/,
5770  0 /*deltaCode*/,
5771  'S' /*letter*/,
5772  },
5773 
5774 };
5775 
5776 
5777 
5778 const extended::ZonePolicy kPolicyPRC = {
5779  1 /*numRules*/,
5780  kZoneRulesPRC /*rules*/,
5781  0 /* numLetters */,
5782  nullptr /* letters */,
5783 };
5784 
5785 //---------------------------------------------------------------------------
5786 // Policy name: Pakistan
5787 // Rules: 6
5788 // Memory (8-bit): 60
5789 // Memory (32-bit): 64
5790 //---------------------------------------------------------------------------
5791 
5792 static const extended::ZoneRule kZoneRulesPakistan[] = {
5793  // Anchor: Rule Pakistan 2002 only - Oct Sun>=2 0:00 0 -
5794  {
5795  -127 /*fromYearTiny*/,
5796  -127 /*toYearTiny*/,
5797  1 /*inMonth*/,
5798  0 /*onDayOfWeek*/,
5799  1 /*onDayOfMonth*/,
5800  0 /*atTimeCode*/,
5801  'w' /*atTimeModifier*/,
5802  0 /*deltaCode*/,
5803  '-' /*letter*/,
5804  },
5805  // Rule Pakistan 2002 only - Apr Sun>=2 0:00 1:00 S
5806  {
5807  2 /*fromYearTiny*/,
5808  2 /*toYearTiny*/,
5809  4 /*inMonth*/,
5810  7 /*onDayOfWeek*/,
5811  2 /*onDayOfMonth*/,
5812  0 /*atTimeCode*/,
5813  'w' /*atTimeModifier*/,
5814  4 /*deltaCode*/,
5815  'S' /*letter*/,
5816  },
5817  // Rule Pakistan 2002 only - Oct Sun>=2 0:00 0 -
5818  {
5819  2 /*fromYearTiny*/,
5820  2 /*toYearTiny*/,
5821  10 /*inMonth*/,
5822  7 /*onDayOfWeek*/,
5823  2 /*onDayOfMonth*/,
5824  0 /*atTimeCode*/,
5825  'w' /*atTimeModifier*/,
5826  0 /*deltaCode*/,
5827  '-' /*letter*/,
5828  },
5829  // Rule Pakistan 2008 only - Jun 1 0:00 1:00 S
5830  {
5831  8 /*fromYearTiny*/,
5832  8 /*toYearTiny*/,
5833  6 /*inMonth*/,
5834  0 /*onDayOfWeek*/,
5835  1 /*onDayOfMonth*/,
5836  0 /*atTimeCode*/,
5837  'w' /*atTimeModifier*/,
5838  4 /*deltaCode*/,
5839  'S' /*letter*/,
5840  },
5841  // Rule Pakistan 2008 2009 - Nov 1 0:00 0 -
5842  {
5843  8 /*fromYearTiny*/,
5844  9 /*toYearTiny*/,
5845  11 /*inMonth*/,
5846  0 /*onDayOfWeek*/,
5847  1 /*onDayOfMonth*/,
5848  0 /*atTimeCode*/,
5849  'w' /*atTimeModifier*/,
5850  0 /*deltaCode*/,
5851  '-' /*letter*/,
5852  },
5853  // Rule Pakistan 2009 only - Apr 15 0:00 1:00 S
5854  {
5855  9 /*fromYearTiny*/,
5856  9 /*toYearTiny*/,
5857  4 /*inMonth*/,
5858  0 /*onDayOfWeek*/,
5859  15 /*onDayOfMonth*/,
5860  0 /*atTimeCode*/,
5861  'w' /*atTimeModifier*/,
5862  4 /*deltaCode*/,
5863  'S' /*letter*/,
5864  },
5865 
5866 };
5867 
5868 
5869 
5870 const extended::ZonePolicy kPolicyPakistan = {
5871  6 /*numRules*/,
5872  kZoneRulesPakistan /*rules*/,
5873  0 /* numLetters */,
5874  nullptr /* letters */,
5875 };
5876 
5877 //---------------------------------------------------------------------------
5878 // Policy name: Palestine
5879 // Rules: 24
5880 // Memory (8-bit): 222
5881 // Memory (32-bit): 226
5882 //---------------------------------------------------------------------------
5883 
5884 static const extended::ZoneRule kZoneRulesPalestine[] = {
5885  // Anchor: Rule Palestine 1999 2003 - Oct Fri>=15 0:00 0 -
5886  {
5887  -127 /*fromYearTiny*/,
5888  -127 /*toYearTiny*/,
5889  1 /*inMonth*/,
5890  0 /*onDayOfWeek*/,
5891  1 /*onDayOfMonth*/,
5892  0 /*atTimeCode*/,
5893  'w' /*atTimeModifier*/,
5894  0 /*deltaCode*/,
5895  '-' /*letter*/,
5896  },
5897  // Rule Palestine 1999 2005 - Apr Fri>=15 0:00 1:00 S
5898  {
5899  -1 /*fromYearTiny*/,
5900  5 /*toYearTiny*/,
5901  4 /*inMonth*/,
5902  5 /*onDayOfWeek*/,
5903  15 /*onDayOfMonth*/,
5904  0 /*atTimeCode*/,
5905  'w' /*atTimeModifier*/,
5906  4 /*deltaCode*/,
5907  'S' /*letter*/,
5908  },
5909  // Rule Palestine 1999 2003 - Oct Fri>=15 0:00 0 -
5910  {
5911  -1 /*fromYearTiny*/,
5912  3 /*toYearTiny*/,
5913  10 /*inMonth*/,
5914  5 /*onDayOfWeek*/,
5915  15 /*onDayOfMonth*/,
5916  0 /*atTimeCode*/,
5917  'w' /*atTimeModifier*/,
5918  0 /*deltaCode*/,
5919  '-' /*letter*/,
5920  },
5921  // Rule Palestine 2004 only - Oct 1 1:00 0 -
5922  {
5923  4 /*fromYearTiny*/,
5924  4 /*toYearTiny*/,
5925  10 /*inMonth*/,
5926  0 /*onDayOfWeek*/,
5927  1 /*onDayOfMonth*/,
5928  4 /*atTimeCode*/,
5929  'w' /*atTimeModifier*/,
5930  0 /*deltaCode*/,
5931  '-' /*letter*/,
5932  },
5933  // Rule Palestine 2005 only - Oct 4 2:00 0 -
5934  {
5935  5 /*fromYearTiny*/,
5936  5 /*toYearTiny*/,
5937  10 /*inMonth*/,
5938  0 /*onDayOfWeek*/,
5939  4 /*onDayOfMonth*/,
5940  8 /*atTimeCode*/,
5941  'w' /*atTimeModifier*/,
5942  0 /*deltaCode*/,
5943  '-' /*letter*/,
5944  },
5945  // Rule Palestine 2006 2007 - Apr 1 0:00 1:00 S
5946  {
5947  6 /*fromYearTiny*/,
5948  7 /*toYearTiny*/,
5949  4 /*inMonth*/,
5950  0 /*onDayOfWeek*/,
5951  1 /*onDayOfMonth*/,
5952  0 /*atTimeCode*/,
5953  'w' /*atTimeModifier*/,
5954  4 /*deltaCode*/,
5955  'S' /*letter*/,
5956  },
5957  // Rule Palestine 2006 only - Sep 22 0:00 0 -
5958  {
5959  6 /*fromYearTiny*/,
5960  6 /*toYearTiny*/,
5961  9 /*inMonth*/,
5962  0 /*onDayOfWeek*/,
5963  22 /*onDayOfMonth*/,
5964  0 /*atTimeCode*/,
5965  'w' /*atTimeModifier*/,
5966  0 /*deltaCode*/,
5967  '-' /*letter*/,
5968  },
5969  // Rule Palestine 2007 only - Sep Thu>=8 2:00 0 -
5970  {
5971  7 /*fromYearTiny*/,
5972  7 /*toYearTiny*/,
5973  9 /*inMonth*/,
5974  4 /*onDayOfWeek*/,
5975  8 /*onDayOfMonth*/,
5976  8 /*atTimeCode*/,
5977  'w' /*atTimeModifier*/,
5978  0 /*deltaCode*/,
5979  '-' /*letter*/,
5980  },
5981  // Rule Palestine 2008 2009 - Mar lastFri 0:00 1:00 S
5982  {
5983  8 /*fromYearTiny*/,
5984  9 /*toYearTiny*/,
5985  3 /*inMonth*/,
5986  5 /*onDayOfWeek*/,
5987  0 /*onDayOfMonth*/,
5988  0 /*atTimeCode*/,
5989  'w' /*atTimeModifier*/,
5990  4 /*deltaCode*/,
5991  'S' /*letter*/,
5992  },
5993  // Rule Palestine 2008 only - Sep 1 0:00 0 -
5994  {
5995  8 /*fromYearTiny*/,
5996  8 /*toYearTiny*/,
5997  9 /*inMonth*/,
5998  0 /*onDayOfWeek*/,
5999  1 /*onDayOfMonth*/,
6000  0 /*atTimeCode*/,
6001  'w' /*atTimeModifier*/,
6002  0 /*deltaCode*/,
6003  '-' /*letter*/,
6004  },
6005  // Rule Palestine 2009 only - Sep Fri>=1 1:00 0 -
6006  {
6007  9 /*fromYearTiny*/,
6008  9 /*toYearTiny*/,
6009  9 /*inMonth*/,
6010  5 /*onDayOfWeek*/,
6011  1 /*onDayOfMonth*/,
6012  4 /*atTimeCode*/,
6013  'w' /*atTimeModifier*/,
6014  0 /*deltaCode*/,
6015  '-' /*letter*/,
6016  },
6017  // Rule Palestine 2010 only - Mar 26 0:00 1:00 S
6018  {
6019  10 /*fromYearTiny*/,
6020  10 /*toYearTiny*/,
6021  3 /*inMonth*/,
6022  0 /*onDayOfWeek*/,
6023  26 /*onDayOfMonth*/,
6024  0 /*atTimeCode*/,
6025  'w' /*atTimeModifier*/,
6026  4 /*deltaCode*/,
6027  'S' /*letter*/,
6028  },
6029  // Rule Palestine 2010 only - Aug 11 0:00 0 -
6030  {
6031  10 /*fromYearTiny*/,
6032  10 /*toYearTiny*/,
6033  8 /*inMonth*/,
6034  0 /*onDayOfWeek*/,
6035  11 /*onDayOfMonth*/,
6036  0 /*atTimeCode*/,
6037  'w' /*atTimeModifier*/,
6038  0 /*deltaCode*/,
6039  '-' /*letter*/,
6040  },
6041  // Rule Palestine 2011 only - Apr 1 0:01 1:00 S
6042  {
6043  11 /*fromYearTiny*/,
6044  11 /*toYearTiny*/,
6045  4 /*inMonth*/,
6046  0 /*onDayOfWeek*/,
6047  1 /*onDayOfMonth*/,
6048  0 /*atTimeCode*/,
6049  'w' /*atTimeModifier*/,
6050  4 /*deltaCode*/,
6051  'S' /*letter*/,
6052  },
6053  // Rule Palestine 2011 only - Aug 1 0:00 0 -
6054  {
6055  11 /*fromYearTiny*/,
6056  11 /*toYearTiny*/,
6057  8 /*inMonth*/,
6058  0 /*onDayOfWeek*/,
6059  1 /*onDayOfMonth*/,
6060  0 /*atTimeCode*/,
6061  'w' /*atTimeModifier*/,
6062  0 /*deltaCode*/,
6063  '-' /*letter*/,
6064  },
6065  // Rule Palestine 2011 only - Aug 30 0:00 1:00 S
6066  {
6067  11 /*fromYearTiny*/,
6068  11 /*toYearTiny*/,
6069  8 /*inMonth*/,
6070  0 /*onDayOfWeek*/,
6071  30 /*onDayOfMonth*/,
6072  0 /*atTimeCode*/,
6073  'w' /*atTimeModifier*/,
6074  4 /*deltaCode*/,
6075  'S' /*letter*/,
6076  },
6077  // Rule Palestine 2011 only - Sep 30 0:00 0 -
6078  {
6079  11 /*fromYearTiny*/,
6080  11 /*toYearTiny*/,
6081  9 /*inMonth*/,
6082  0 /*onDayOfWeek*/,
6083  30 /*onDayOfMonth*/,
6084  0 /*atTimeCode*/,
6085  'w' /*atTimeModifier*/,
6086  0 /*deltaCode*/,
6087  '-' /*letter*/,
6088  },
6089  // Rule Palestine 2012 2014 - Mar lastThu 24:00 1:00 S
6090  {
6091  12 /*fromYearTiny*/,
6092  14 /*toYearTiny*/,
6093  3 /*inMonth*/,
6094  4 /*onDayOfWeek*/,
6095  0 /*onDayOfMonth*/,
6096  96 /*atTimeCode*/,
6097  'w' /*atTimeModifier*/,
6098  4 /*deltaCode*/,
6099  'S' /*letter*/,
6100  },
6101  // Rule Palestine 2012 only - Sep 21 1:00 0 -
6102  {
6103  12 /*fromYearTiny*/,
6104  12 /*toYearTiny*/,
6105  9 /*inMonth*/,
6106  0 /*onDayOfWeek*/,
6107  21 /*onDayOfMonth*/,
6108  4 /*atTimeCode*/,
6109  'w' /*atTimeModifier*/,
6110  0 /*deltaCode*/,
6111  '-' /*letter*/,
6112  },
6113  // Rule Palestine 2013 only - Sep Fri>=21 0:00 0 -
6114  {
6115  13 /*fromYearTiny*/,
6116  13 /*toYearTiny*/,
6117  9 /*inMonth*/,
6118  5 /*onDayOfWeek*/,
6119  21 /*onDayOfMonth*/,
6120  0 /*atTimeCode*/,
6121  'w' /*atTimeModifier*/,
6122  0 /*deltaCode*/,
6123  '-' /*letter*/,
6124  },
6125  // Rule Palestine 2014 2015 - Oct Fri>=21 0:00 0 -
6126  {
6127  14 /*fromYearTiny*/,
6128  15 /*toYearTiny*/,
6129  10 /*inMonth*/,
6130  5 /*onDayOfWeek*/,
6131  21 /*onDayOfMonth*/,
6132  0 /*atTimeCode*/,
6133  'w' /*atTimeModifier*/,
6134  0 /*deltaCode*/,
6135  '-' /*letter*/,
6136  },
6137  // Rule Palestine 2015 only - Mar lastFri 24:00 1:00 S
6138  {
6139  15 /*fromYearTiny*/,
6140  15 /*toYearTiny*/,
6141  3 /*inMonth*/,
6142  5 /*onDayOfWeek*/,
6143  0 /*onDayOfMonth*/,
6144  96 /*atTimeCode*/,
6145  'w' /*atTimeModifier*/,
6146  4 /*deltaCode*/,
6147  'S' /*letter*/,
6148  },
6149  // Rule Palestine 2016 max - Mar Sat>=24 1:00 1:00 S
6150  {
6151  16 /*fromYearTiny*/,
6152  126 /*toYearTiny*/,
6153  3 /*inMonth*/,
6154  6 /*onDayOfWeek*/,
6155  24 /*onDayOfMonth*/,
6156  4 /*atTimeCode*/,
6157  'w' /*atTimeModifier*/,
6158  4 /*deltaCode*/,
6159  'S' /*letter*/,
6160  },
6161  // Rule Palestine 2016 max - Oct lastSat 1:00 0 -
6162  {
6163  16 /*fromYearTiny*/,
6164  126 /*toYearTiny*/,
6165  10 /*inMonth*/,
6166  6 /*onDayOfWeek*/,
6167  0 /*onDayOfMonth*/,
6168  4 /*atTimeCode*/,
6169  'w' /*atTimeModifier*/,
6170  0 /*deltaCode*/,
6171  '-' /*letter*/,
6172  },
6173 
6174 };
6175 
6176 
6177 
6178 const extended::ZonePolicy kPolicyPalestine = {
6179  24 /*numRules*/,
6180  kZoneRulesPalestine /*rules*/,
6181  0 /* numLetters */,
6182  nullptr /* letters */,
6183 };
6184 
6185 //---------------------------------------------------------------------------
6186 // Policy name: Para
6187 // Rules: 10
6188 // Memory (8-bit): 96
6189 // Memory (32-bit): 100
6190 //---------------------------------------------------------------------------
6191 
6192 static const extended::ZoneRule kZoneRulesPara[] = {
6193  // Rule Para 1996 2001 - Oct Sun>=1 0:00 1:00 -
6194  {
6195  -4 /*fromYearTiny*/,
6196  1 /*toYearTiny*/,
6197  10 /*inMonth*/,
6198  7 /*onDayOfWeek*/,
6199  1 /*onDayOfMonth*/,
6200  0 /*atTimeCode*/,
6201  'w' /*atTimeModifier*/,
6202  4 /*deltaCode*/,
6203  '-' /*letter*/,
6204  },
6205  // Rule Para 1997 only - Feb lastSun 0:00 0 -
6206  {
6207  -3 /*fromYearTiny*/,
6208  -3 /*toYearTiny*/,
6209  2 /*inMonth*/,
6210  7 /*onDayOfWeek*/,
6211  0 /*onDayOfMonth*/,
6212  0 /*atTimeCode*/,
6213  'w' /*atTimeModifier*/,
6214  0 /*deltaCode*/,
6215  '-' /*letter*/,
6216  },
6217  // Rule Para 1998 2001 - Mar Sun>=1 0:00 0 -
6218  {
6219  -2 /*fromYearTiny*/,
6220  1 /*toYearTiny*/,
6221  3 /*inMonth*/,
6222  7 /*onDayOfWeek*/,
6223  1 /*onDayOfMonth*/,
6224  0 /*atTimeCode*/,
6225  'w' /*atTimeModifier*/,
6226  0 /*deltaCode*/,
6227  '-' /*letter*/,
6228  },
6229  // Rule Para 2002 2004 - Apr Sun>=1 0:00 0 -
6230  {
6231  2 /*fromYearTiny*/,
6232  4 /*toYearTiny*/,
6233  4 /*inMonth*/,
6234  7 /*onDayOfWeek*/,
6235  1 /*onDayOfMonth*/,
6236  0 /*atTimeCode*/,
6237  'w' /*atTimeModifier*/,
6238  0 /*deltaCode*/,
6239  '-' /*letter*/,
6240  },
6241  // Rule Para 2002 2003 - Sep Sun>=1 0:00 1:00 -
6242  {
6243  2 /*fromYearTiny*/,
6244  3 /*toYearTiny*/,
6245  9 /*inMonth*/,
6246  7 /*onDayOfWeek*/,
6247  1 /*onDayOfMonth*/,
6248  0 /*atTimeCode*/,
6249  'w' /*atTimeModifier*/,
6250  4 /*deltaCode*/,
6251  '-' /*letter*/,
6252  },
6253  // Rule Para 2004 2009 - Oct Sun>=15 0:00 1:00 -
6254  {
6255  4 /*fromYearTiny*/,
6256  9 /*toYearTiny*/,
6257  10 /*inMonth*/,
6258  7 /*onDayOfWeek*/,
6259  15 /*onDayOfMonth*/,
6260  0 /*atTimeCode*/,
6261  'w' /*atTimeModifier*/,
6262  4 /*deltaCode*/,
6263  '-' /*letter*/,
6264  },
6265  // Rule Para 2005 2009 - Mar Sun>=8 0:00 0 -
6266  {
6267  5 /*fromYearTiny*/,
6268  9 /*toYearTiny*/,
6269  3 /*inMonth*/,
6270  7 /*onDayOfWeek*/,
6271  8 /*onDayOfMonth*/,
6272  0 /*atTimeCode*/,
6273  'w' /*atTimeModifier*/,
6274  0 /*deltaCode*/,
6275  '-' /*letter*/,
6276  },
6277  // Rule Para 2010 max - Oct Sun>=1 0:00 1:00 -
6278  {
6279  10 /*fromYearTiny*/,
6280  126 /*toYearTiny*/,
6281  10 /*inMonth*/,
6282  7 /*onDayOfWeek*/,
6283  1 /*onDayOfMonth*/,
6284  0 /*atTimeCode*/,
6285  'w' /*atTimeModifier*/,
6286  4 /*deltaCode*/,
6287  '-' /*letter*/,
6288  },
6289  // Rule Para 2010 2012 - Apr Sun>=8 0:00 0 -
6290  {
6291  10 /*fromYearTiny*/,
6292  12 /*toYearTiny*/,
6293  4 /*inMonth*/,
6294  7 /*onDayOfWeek*/,
6295  8 /*onDayOfMonth*/,
6296  0 /*atTimeCode*/,
6297  'w' /*atTimeModifier*/,
6298  0 /*deltaCode*/,
6299  '-' /*letter*/,
6300  },
6301  // Rule Para 2013 max - Mar Sun>=22 0:00 0 -
6302  {
6303  13 /*fromYearTiny*/,
6304  126 /*toYearTiny*/,
6305  3 /*inMonth*/,
6306  7 /*onDayOfWeek*/,
6307  22 /*onDayOfMonth*/,
6308  0 /*atTimeCode*/,
6309  'w' /*atTimeModifier*/,
6310  0 /*deltaCode*/,
6311  '-' /*letter*/,
6312  },
6313 
6314 };
6315 
6316 
6317 
6318 const extended::ZonePolicy kPolicyPara = {
6319  10 /*numRules*/,
6320  kZoneRulesPara /*rules*/,
6321  0 /* numLetters */,
6322  nullptr /* letters */,
6323 };
6324 
6325 //---------------------------------------------------------------------------
6326 // Policy name: Peru
6327 // Rules: 1
6328 // Memory (8-bit): 15
6329 // Memory (32-bit): 19
6330 //---------------------------------------------------------------------------
6331 
6332 static const extended::ZoneRule kZoneRulesPeru[] = {
6333  // Rule Peru 1994 only - Apr 1 0:00 0 -
6334  {
6335  -6 /*fromYearTiny*/,
6336  -6 /*toYearTiny*/,
6337  4 /*inMonth*/,
6338  0 /*onDayOfWeek*/,
6339  1 /*onDayOfMonth*/,
6340  0 /*atTimeCode*/,
6341  'w' /*atTimeModifier*/,
6342  0 /*deltaCode*/,
6343  '-' /*letter*/,
6344  },
6345 
6346 };
6347 
6348 
6349 
6350 const extended::ZonePolicy kPolicyPeru = {
6351  1 /*numRules*/,
6352  kZoneRulesPeru /*rules*/,
6353  0 /* numLetters */,
6354  nullptr /* letters */,
6355 };
6356 
6357 //---------------------------------------------------------------------------
6358 // Policy name: Phil
6359 // Rules: 1
6360 // Memory (8-bit): 15
6361 // Memory (32-bit): 19
6362 //---------------------------------------------------------------------------
6363 
6364 static const extended::ZoneRule kZoneRulesPhil[] = {
6365  // Rule Phil 1978 only - Sep 21 0:00 0 S
6366  {
6367  -22 /*fromYearTiny*/,
6368  -22 /*toYearTiny*/,
6369  9 /*inMonth*/,
6370  0 /*onDayOfWeek*/,
6371  21 /*onDayOfMonth*/,
6372  0 /*atTimeCode*/,
6373  'w' /*atTimeModifier*/,
6374  0 /*deltaCode*/,
6375  'S' /*letter*/,
6376  },
6377 
6378 };
6379 
6380 
6381 
6382 const extended::ZonePolicy kPolicyPhil = {
6383  1 /*numRules*/,
6384  kZoneRulesPhil /*rules*/,
6385  0 /* numLetters */,
6386  nullptr /* letters */,
6387 };
6388 
6389 //---------------------------------------------------------------------------
6390 // Policy name: ROK
6391 // Rules: 1
6392 // Memory (8-bit): 15
6393 // Memory (32-bit): 19
6394 //---------------------------------------------------------------------------
6395 
6396 static const extended::ZoneRule kZoneRulesROK[] = {
6397  // Rule ROK 1987 1988 - Oct Sun>=8 3:00 0 S
6398  {
6399  -13 /*fromYearTiny*/,
6400  -12 /*toYearTiny*/,
6401  10 /*inMonth*/,
6402  7 /*onDayOfWeek*/,
6403  8 /*onDayOfMonth*/,
6404  12 /*atTimeCode*/,
6405  'w' /*atTimeModifier*/,
6406  0 /*deltaCode*/,
6407  'S' /*letter*/,
6408  },
6409 
6410 };
6411 
6412 
6413 
6414 const extended::ZonePolicy kPolicyROK = {
6415  1 /*numRules*/,
6416  kZoneRulesROK /*rules*/,
6417  0 /* numLetters */,
6418  nullptr /* letters */,
6419 };
6420 
6421 //---------------------------------------------------------------------------
6422 // Policy name: Russia
6423 // Rules: 3
6424 // Memory (8-bit): 33
6425 // Memory (32-bit): 37
6426 //---------------------------------------------------------------------------
6427 
6428 static const extended::ZoneRule kZoneRulesRussia[] = {
6429  // Rule Russia 1984 1995 - Sep lastSun 2:00s 0 -
6430  {
6431  -16 /*fromYearTiny*/,
6432  -5 /*toYearTiny*/,
6433  9 /*inMonth*/,
6434  7 /*onDayOfWeek*/,
6435  0 /*onDayOfMonth*/,
6436  8 /*atTimeCode*/,
6437  's' /*atTimeModifier*/,
6438  0 /*deltaCode*/,
6439  '-' /*letter*/,
6440  },
6441  // Rule Russia 1985 2010 - Mar lastSun 2:00s 1:00 S
6442  {
6443  -15 /*fromYearTiny*/,
6444  10 /*toYearTiny*/,
6445  3 /*inMonth*/,
6446  7 /*onDayOfWeek*/,
6447  0 /*onDayOfMonth*/,
6448  8 /*atTimeCode*/,
6449  's' /*atTimeModifier*/,
6450  4 /*deltaCode*/,
6451  'S' /*letter*/,
6452  },
6453  // Rule Russia 1996 2010 - Oct lastSun 2:00s 0 -
6454  {
6455  -4 /*fromYearTiny*/,
6456  10 /*toYearTiny*/,
6457  10 /*inMonth*/,
6458  7 /*onDayOfWeek*/,
6459  0 /*onDayOfMonth*/,
6460  8 /*atTimeCode*/,
6461  's' /*atTimeModifier*/,
6462  0 /*deltaCode*/,
6463  '-' /*letter*/,
6464  },
6465 
6466 };
6467 
6468 
6469 
6470 const extended::ZonePolicy kPolicyRussia = {
6471  3 /*numRules*/,
6472  kZoneRulesRussia /*rules*/,
6473  0 /* numLetters */,
6474  nullptr /* letters */,
6475 };
6476 
6477 //---------------------------------------------------------------------------
6478 // Policy name: RussiaAsia
6479 // Rules: 3
6480 // Memory (8-bit): 33
6481 // Memory (32-bit): 37
6482 //---------------------------------------------------------------------------
6483 
6484 static const extended::ZoneRule kZoneRulesRussiaAsia[] = {
6485  // Rule RussiaAsia 1984 1995 - Sep lastSun 2:00s 0 -
6486  {
6487  -16 /*fromYearTiny*/,
6488  -5 /*toYearTiny*/,
6489  9 /*inMonth*/,
6490  7 /*onDayOfWeek*/,
6491  0 /*onDayOfMonth*/,
6492  8 /*atTimeCode*/,
6493  's' /*atTimeModifier*/,
6494  0 /*deltaCode*/,
6495  '-' /*letter*/,
6496  },
6497  // Rule RussiaAsia 1985 2010 - Mar lastSun 2:00s 1:00 -
6498  {
6499  -15 /*fromYearTiny*/,
6500  10 /*toYearTiny*/,
6501  3 /*inMonth*/,
6502  7 /*onDayOfWeek*/,
6503  0 /*onDayOfMonth*/,
6504  8 /*atTimeCode*/,
6505  's' /*atTimeModifier*/,
6506  4 /*deltaCode*/,
6507  '-' /*letter*/,
6508  },
6509  // Rule RussiaAsia 1996 2010 - Oct lastSun 2:00s 0 -
6510  {
6511  -4 /*fromYearTiny*/,
6512  10 /*toYearTiny*/,
6513  10 /*inMonth*/,
6514  7 /*onDayOfWeek*/,
6515  0 /*onDayOfMonth*/,
6516  8 /*atTimeCode*/,
6517  's' /*atTimeModifier*/,
6518  0 /*deltaCode*/,
6519  '-' /*letter*/,
6520  },
6521 
6522 };
6523 
6524 
6525 
6526 const extended::ZonePolicy kPolicyRussiaAsia = {
6527  3 /*numRules*/,
6528  kZoneRulesRussiaAsia /*rules*/,
6529  0 /* numLetters */,
6530  nullptr /* letters */,
6531 };
6532 
6533 //---------------------------------------------------------------------------
6534 // Policy name: SA
6535 // Rules: 1
6536 // Memory (8-bit): 15
6537 // Memory (32-bit): 19
6538 //---------------------------------------------------------------------------
6539 
6540 static const extended::ZoneRule kZoneRulesSA[] = {
6541  // Rule SA 1943 1944 - Mar Sun>=15 2:00 0 -
6542  {
6543  -57 /*fromYearTiny*/,
6544  -56 /*toYearTiny*/,
6545  3 /*inMonth*/,
6546  7 /*onDayOfWeek*/,
6547  15 /*onDayOfMonth*/,
6548  8 /*atTimeCode*/,
6549  'w' /*atTimeModifier*/,
6550  0 /*deltaCode*/,
6551  '-' /*letter*/,
6552  },
6553 
6554 };
6555 
6556 
6557 
6558 const extended::ZonePolicy kPolicySA = {
6559  1 /*numRules*/,
6560  kZoneRulesSA /*rules*/,
6561  0 /* numLetters */,
6562  nullptr /* letters */,
6563 };
6564 
6565 //---------------------------------------------------------------------------
6566 // Policy name: Salv
6567 // Rules: 1
6568 // Memory (8-bit): 15
6569 // Memory (32-bit): 19
6570 //---------------------------------------------------------------------------
6571 
6572 static const extended::ZoneRule kZoneRulesSalv[] = {
6573  // Rule Salv 1987 1988 - Sep lastSun 0:00 0 S
6574  {
6575  -13 /*fromYearTiny*/,
6576  -12 /*toYearTiny*/,
6577  9 /*inMonth*/,
6578  7 /*onDayOfWeek*/,
6579  0 /*onDayOfMonth*/,
6580  0 /*atTimeCode*/,
6581  'w' /*atTimeModifier*/,
6582  0 /*deltaCode*/,
6583  'S' /*letter*/,
6584  },
6585 
6586 };
6587 
6588 
6589 
6590 const extended::ZonePolicy kPolicySalv = {
6591  1 /*numRules*/,
6592  kZoneRulesSalv /*rules*/,
6593  0 /* numLetters */,
6594  nullptr /* letters */,
6595 };
6596 
6597 //---------------------------------------------------------------------------
6598 // Policy name: SanLuis
6599 // Rules: 3
6600 // Memory (8-bit): 33
6601 // Memory (32-bit): 37
6602 //---------------------------------------------------------------------------
6603 
6604 static const extended::ZoneRule kZoneRulesSanLuis[] = {
6605  // Anchor: Rule SanLuis 2008 2009 - Mar Sun>=8 0:00 0 -
6606  {
6607  -127 /*fromYearTiny*/,
6608  -127 /*toYearTiny*/,
6609  1 /*inMonth*/,
6610  0 /*onDayOfWeek*/,
6611  1 /*onDayOfMonth*/,
6612  0 /*atTimeCode*/,
6613  'w' /*atTimeModifier*/,
6614  0 /*deltaCode*/,
6615  '-' /*letter*/,
6616  },
6617  // Rule SanLuis 2008 2009 - Mar Sun>=8 0:00 0 -
6618  {
6619  8 /*fromYearTiny*/,
6620  9 /*toYearTiny*/,
6621  3 /*inMonth*/,
6622  7 /*onDayOfWeek*/,
6623  8 /*onDayOfMonth*/,
6624  0 /*atTimeCode*/,
6625  'w' /*atTimeModifier*/,
6626  0 /*deltaCode*/,
6627  '-' /*letter*/,
6628  },
6629  // Rule SanLuis 2007 2008 - Oct Sun>=8 0:00 1:00 -
6630  {
6631  7 /*fromYearTiny*/,
6632  8 /*toYearTiny*/,
6633  10 /*inMonth*/,
6634  7 /*onDayOfWeek*/,
6635  8 /*onDayOfMonth*/,
6636  0 /*atTimeCode*/,
6637  'w' /*atTimeModifier*/,
6638  4 /*deltaCode*/,
6639  '-' /*letter*/,
6640  },
6641 
6642 };
6643 
6644 
6645 
6646 const extended::ZonePolicy kPolicySanLuis = {
6647  3 /*numRules*/,
6648  kZoneRulesSanLuis /*rules*/,
6649  0 /* numLetters */,
6650  nullptr /* letters */,
6651 };
6652 
6653 //---------------------------------------------------------------------------
6654 // Policy name: StJohns
6655 // Rules: 5
6656 // Memory (8-bit): 56
6657 // Memory (32-bit): 62
6658 //---------------------------------------------------------------------------
6659 
6660 static const extended::ZoneRule kZoneRulesStJohns[] = {
6661  // Rule StJohns 1987 2006 - Oct lastSun 0:01 0 S
6662  {
6663  -13 /*fromYearTiny*/,
6664  6 /*toYearTiny*/,
6665  10 /*inMonth*/,
6666  7 /*onDayOfWeek*/,
6667  0 /*onDayOfMonth*/,
6668  0 /*atTimeCode*/,
6669  'w' /*atTimeModifier*/,
6670  0 /*deltaCode*/,
6671  'S' /*letter*/,
6672  },
6673  // Rule StJohns 1988 only - Apr Sun>=1 0:01 2:00 DD
6674  {
6675  -12 /*fromYearTiny*/,
6676  -12 /*toYearTiny*/,
6677  4 /*inMonth*/,
6678  7 /*onDayOfWeek*/,
6679  1 /*onDayOfMonth*/,
6680  0 /*atTimeCode*/,
6681  'w' /*atTimeModifier*/,
6682  8 /*deltaCode*/,
6683  0 /*letter; "DD"*/,
6684  },
6685  // Rule StJohns 1989 2006 - Apr Sun>=1 0:01 1:00 D
6686  {
6687  -11 /*fromYearTiny*/,
6688  6 /*toYearTiny*/,
6689  4 /*inMonth*/,
6690  7 /*onDayOfWeek*/,
6691  1 /*onDayOfMonth*/,
6692  0 /*atTimeCode*/,
6693  'w' /*atTimeModifier*/,
6694  4 /*deltaCode*/,
6695  'D' /*letter*/,
6696  },
6697  // Rule StJohns 2007 2011 - Mar Sun>=8 0:01 1:00 D
6698  {
6699  7 /*fromYearTiny*/,
6700  11 /*toYearTiny*/,
6701  3 /*inMonth*/,
6702  7 /*onDayOfWeek*/,
6703  8 /*onDayOfMonth*/,
6704  0 /*atTimeCode*/,
6705  'w' /*atTimeModifier*/,
6706  4 /*deltaCode*/,
6707  'D' /*letter*/,
6708  },
6709  // Rule StJohns 2007 2010 - Nov Sun>=1 0:01 0 S
6710  {
6711  7 /*fromYearTiny*/,
6712  10 /*toYearTiny*/,
6713  11 /*inMonth*/,
6714  7 /*onDayOfWeek*/,
6715  1 /*onDayOfMonth*/,
6716  0 /*atTimeCode*/,
6717  'w' /*atTimeModifier*/,
6718  0 /*deltaCode*/,
6719  'S' /*letter*/,
6720  },
6721 
6722 };
6723 
6724 static const char* const kLettersStJohns[] = {
6725  /*0*/ "DD",
6726 
6727 };
6728 
6729 
6730 const extended::ZonePolicy kPolicyStJohns = {
6731  5 /*numRules*/,
6732  kZoneRulesStJohns /*rules*/,
6733  1 /* numLetters */,
6734  kLettersStJohns /* letters */,
6735 };
6736 
6737 //---------------------------------------------------------------------------
6738 // Policy name: Sudan
6739 // Rules: 1
6740 // Memory (8-bit): 15
6741 // Memory (32-bit): 19
6742 //---------------------------------------------------------------------------
6743 
6744 static const extended::ZoneRule kZoneRulesSudan[] = {
6745  // Rule Sudan 1970 1985 - Oct 15 0:00 0 -
6746  {
6747  -30 /*fromYearTiny*/,
6748  -15 /*toYearTiny*/,
6749  10 /*inMonth*/,
6750  0 /*onDayOfWeek*/,
6751  15 /*onDayOfMonth*/,
6752  0 /*atTimeCode*/,
6753  'w' /*atTimeModifier*/,
6754  0 /*deltaCode*/,
6755  '-' /*letter*/,
6756  },
6757 
6758 };
6759 
6760 
6761 
6762 const extended::ZonePolicy kPolicySudan = {
6763  1 /*numRules*/,
6764  kZoneRulesSudan /*rules*/,
6765  0 /* numLetters */,
6766  nullptr /* letters */,
6767 };
6768 
6769 //---------------------------------------------------------------------------
6770 // Policy name: Syria
6771 // Rules: 12
6772 // Memory (8-bit): 114
6773 // Memory (32-bit): 118
6774 //---------------------------------------------------------------------------
6775 
6776 static const extended::ZoneRule kZoneRulesSyria[] = {
6777  // Rule Syria 1994 2005 - Oct 1 0:00 0 -
6778  {
6779  -6 /*fromYearTiny*/,
6780  5 /*toYearTiny*/,
6781  10 /*inMonth*/,
6782  0 /*onDayOfWeek*/,
6783  1 /*onDayOfMonth*/,
6784  0 /*atTimeCode*/,
6785  'w' /*atTimeModifier*/,
6786  0 /*deltaCode*/,
6787  '-' /*letter*/,
6788  },
6789  // Rule Syria 1997 1998 - Mar lastMon 0:00 1:00 S
6790  {
6791  -3 /*fromYearTiny*/,
6792  -2 /*toYearTiny*/,
6793  3 /*inMonth*/,
6794  1 /*onDayOfWeek*/,
6795  0 /*onDayOfMonth*/,
6796  0 /*atTimeCode*/,
6797  'w' /*atTimeModifier*/,
6798  4 /*deltaCode*/,
6799  'S' /*letter*/,
6800  },
6801  // Rule Syria 1999 2006 - Apr 1 0:00 1:00 S
6802  {
6803  -1 /*fromYearTiny*/,
6804  6 /*toYearTiny*/,
6805  4 /*inMonth*/,
6806  0 /*onDayOfWeek*/,
6807  1 /*onDayOfMonth*/,
6808  0 /*atTimeCode*/,
6809  'w' /*atTimeModifier*/,
6810  4 /*deltaCode*/,
6811  'S' /*letter*/,
6812  },
6813  // Rule Syria 2006 only - Sep 22 0:00 0 -
6814  {
6815  6 /*fromYearTiny*/,
6816  6 /*toYearTiny*/,
6817  9 /*inMonth*/,
6818  0 /*onDayOfWeek*/,
6819  22 /*onDayOfMonth*/,
6820  0 /*atTimeCode*/,
6821  'w' /*atTimeModifier*/,
6822  0 /*deltaCode*/,
6823  '-' /*letter*/,
6824  },
6825  // Rule Syria 2007 only - Mar lastFri 0:00 1:00 S
6826  {
6827  7 /*fromYearTiny*/,
6828  7 /*toYearTiny*/,
6829  3 /*inMonth*/,
6830  5 /*onDayOfWeek*/,
6831  0 /*onDayOfMonth*/,
6832  0 /*atTimeCode*/,
6833  'w' /*atTimeModifier*/,
6834  4 /*deltaCode*/,
6835  'S' /*letter*/,
6836  },
6837  // Rule Syria 2007 only - Nov Fri>=1 0:00 0 -
6838  {
6839  7 /*fromYearTiny*/,
6840  7 /*toYearTiny*/,
6841  11 /*inMonth*/,
6842  5 /*onDayOfWeek*/,
6843  1 /*onDayOfMonth*/,
6844  0 /*atTimeCode*/,
6845  'w' /*atTimeModifier*/,
6846  0 /*deltaCode*/,
6847  '-' /*letter*/,
6848  },
6849  // Rule Syria 2008 only - Apr Fri>=1 0:00 1:00 S
6850  {
6851  8 /*fromYearTiny*/,
6852  8 /*toYearTiny*/,
6853  4 /*inMonth*/,
6854  5 /*onDayOfWeek*/,
6855  1 /*onDayOfMonth*/,
6856  0 /*atTimeCode*/,
6857  'w' /*atTimeModifier*/,
6858  4 /*deltaCode*/,
6859  'S' /*letter*/,
6860  },
6861  // Rule Syria 2008 only - Nov 1 0:00 0 -
6862  {
6863  8 /*fromYearTiny*/,
6864  8 /*toYearTiny*/,
6865  11 /*inMonth*/,
6866  0 /*onDayOfWeek*/,
6867  1 /*onDayOfMonth*/,
6868  0 /*atTimeCode*/,
6869  'w' /*atTimeModifier*/,
6870  0 /*deltaCode*/,
6871  '-' /*letter*/,
6872  },
6873  // Rule Syria 2009 only - Mar lastFri 0:00 1:00 S
6874  {
6875  9 /*fromYearTiny*/,
6876  9 /*toYearTiny*/,
6877  3 /*inMonth*/,
6878  5 /*onDayOfWeek*/,
6879  0 /*onDayOfMonth*/,
6880  0 /*atTimeCode*/,
6881  'w' /*atTimeModifier*/,
6882  4 /*deltaCode*/,
6883  'S' /*letter*/,
6884  },
6885  // Rule Syria 2010 2011 - Apr Fri>=1 0:00 1:00 S
6886  {
6887  10 /*fromYearTiny*/,
6888  11 /*toYearTiny*/,
6889  4 /*inMonth*/,
6890  5 /*onDayOfWeek*/,
6891  1 /*onDayOfMonth*/,
6892  0 /*atTimeCode*/,
6893  'w' /*atTimeModifier*/,
6894  4 /*deltaCode*/,
6895  'S' /*letter*/,
6896  },
6897  // Rule Syria 2012 max - Mar lastFri 0:00 1:00 S
6898  {
6899  12 /*fromYearTiny*/,
6900  126 /*toYearTiny*/,
6901  3 /*inMonth*/,
6902  5 /*onDayOfWeek*/,
6903  0 /*onDayOfMonth*/,
6904  0 /*atTimeCode*/,
6905  'w' /*atTimeModifier*/,
6906  4 /*deltaCode*/,
6907  'S' /*letter*/,
6908  },
6909  // Rule Syria 2009 max - Oct lastFri 0:00 0 -
6910  {
6911  9 /*fromYearTiny*/,
6912  126 /*toYearTiny*/,
6913  10 /*inMonth*/,
6914  5 /*onDayOfWeek*/,
6915  0 /*onDayOfMonth*/,
6916  0 /*atTimeCode*/,
6917  'w' /*atTimeModifier*/,
6918  0 /*deltaCode*/,
6919  '-' /*letter*/,
6920  },
6921 
6922 };
6923 
6924 
6925 
6926 const extended::ZonePolicy kPolicySyria = {
6927  12 /*numRules*/,
6928  kZoneRulesSyria /*rules*/,
6929  0 /* numLetters */,
6930  nullptr /* letters */,
6931 };
6932 
6933 //---------------------------------------------------------------------------
6934 // Policy name: Taiwan
6935 // Rules: 1
6936 // Memory (8-bit): 15
6937 // Memory (32-bit): 19
6938 //---------------------------------------------------------------------------
6939 
6940 static const extended::ZoneRule kZoneRulesTaiwan[] = {
6941  // Rule Taiwan 1979 only - Oct 1 0:00 0 S
6942  {
6943  -21 /*fromYearTiny*/,
6944  -21 /*toYearTiny*/,
6945  10 /*inMonth*/,
6946  0 /*onDayOfWeek*/,
6947  1 /*onDayOfMonth*/,
6948  0 /*atTimeCode*/,
6949  'w' /*atTimeModifier*/,
6950  0 /*deltaCode*/,
6951  'S' /*letter*/,
6952  },
6953 
6954 };
6955 
6956 
6957 
6958 const extended::ZonePolicy kPolicyTaiwan = {
6959  1 /*numRules*/,
6960  kZoneRulesTaiwan /*rules*/,
6961  0 /* numLetters */,
6962  nullptr /* letters */,
6963 };
6964 
6965 //---------------------------------------------------------------------------
6966 // Policy name: Thule
6967 // Rules: 5
6968 // Memory (8-bit): 51
6969 // Memory (32-bit): 55
6970 //---------------------------------------------------------------------------
6971 
6972 static const extended::ZoneRule kZoneRulesThule[] = {
6973  // Rule Thule 1991 1992 - Sep lastSun 2:00 0 S
6974  {
6975  -9 /*fromYearTiny*/,
6976  -8 /*toYearTiny*/,
6977  9 /*inMonth*/,
6978  7 /*onDayOfWeek*/,
6979  0 /*onDayOfMonth*/,
6980  8 /*atTimeCode*/,
6981  'w' /*atTimeModifier*/,
6982  0 /*deltaCode*/,
6983  'S' /*letter*/,
6984  },
6985  // Rule Thule 1993 2006 - Apr Sun>=1 2:00 1:00 D
6986  {
6987  -7 /*fromYearTiny*/,
6988  6 /*toYearTiny*/,
6989  4 /*inMonth*/,
6990  7 /*onDayOfWeek*/,
6991  1 /*onDayOfMonth*/,
6992  8 /*atTimeCode*/,
6993  'w' /*atTimeModifier*/,
6994  4 /*deltaCode*/,
6995  'D' /*letter*/,
6996  },
6997  // Rule Thule 1993 2006 - Oct lastSun 2:00 0 S
6998  {
6999  -7 /*fromYearTiny*/,
7000  6 /*toYearTiny*/,
7001  10 /*inMonth*/,
7002  7 /*onDayOfWeek*/,
7003  0 /*onDayOfMonth*/,
7004  8 /*atTimeCode*/,
7005  'w' /*atTimeModifier*/,
7006  0 /*deltaCode*/,
7007  'S' /*letter*/,
7008  },
7009  // Rule Thule 2007 max - Mar Sun>=8 2:00 1:00 D
7010  {
7011  7 /*fromYearTiny*/,
7012  126 /*toYearTiny*/,
7013  3 /*inMonth*/,
7014  7 /*onDayOfWeek*/,
7015  8 /*onDayOfMonth*/,
7016  8 /*atTimeCode*/,
7017  'w' /*atTimeModifier*/,
7018  4 /*deltaCode*/,
7019  'D' /*letter*/,
7020  },
7021  // Rule Thule 2007 max - Nov Sun>=1 2:00 0 S
7022  {
7023  7 /*fromYearTiny*/,
7024  126 /*toYearTiny*/,
7025  11 /*inMonth*/,
7026  7 /*onDayOfWeek*/,
7027  1 /*onDayOfMonth*/,
7028  8 /*atTimeCode*/,
7029  'w' /*atTimeModifier*/,
7030  0 /*deltaCode*/,
7031  'S' /*letter*/,
7032  },
7033 
7034 };
7035 
7036 
7037 
7038 const extended::ZonePolicy kPolicyThule = {
7039  5 /*numRules*/,
7040  kZoneRulesThule /*rules*/,
7041  0 /* numLetters */,
7042  nullptr /* letters */,
7043 };
7044 
7045 //---------------------------------------------------------------------------
7046 // Policy name: Tonga
7047 // Rules: 7
7048 // Memory (8-bit): 69
7049 // Memory (32-bit): 73
7050 //---------------------------------------------------------------------------
7051 
7052 static const extended::ZoneRule kZoneRulesTonga[] = {
7053  // Anchor: Rule Tonga 2000 only - Mar 19 2:00s 0 -
7054  {
7055  -127 /*fromYearTiny*/,
7056  -127 /*toYearTiny*/,
7057  1 /*inMonth*/,
7058  0 /*onDayOfWeek*/,
7059  1 /*onDayOfMonth*/,
7060  0 /*atTimeCode*/,
7061  'w' /*atTimeModifier*/,
7062  0 /*deltaCode*/,
7063  '-' /*letter*/,
7064  },
7065  // Rule Tonga 1999 only - Oct 7 2:00s 1:00 -
7066  {
7067  -1 /*fromYearTiny*/,
7068  -1 /*toYearTiny*/,
7069  10 /*inMonth*/,
7070  0 /*onDayOfWeek*/,
7071  7 /*onDayOfMonth*/,
7072  8 /*atTimeCode*/,
7073  's' /*atTimeModifier*/,
7074  4 /*deltaCode*/,
7075  '-' /*letter*/,
7076  },
7077  // Rule Tonga 2000 only - Mar 19 2:00s 0 -
7078  {
7079  0 /*fromYearTiny*/,
7080  0 /*toYearTiny*/,
7081  3 /*inMonth*/,
7082  0 /*onDayOfWeek*/,
7083  19 /*onDayOfMonth*/,
7084  8 /*atTimeCode*/,
7085  's' /*atTimeModifier*/,
7086  0 /*deltaCode*/,
7087  '-' /*letter*/,
7088  },
7089  // Rule Tonga 2000 2001 - Nov Sun>=1 2:00 1:00 -
7090  {
7091  0 /*fromYearTiny*/,
7092  1 /*toYearTiny*/,
7093  11 /*inMonth*/,
7094  7 /*onDayOfWeek*/,
7095  1 /*onDayOfMonth*/,
7096  8 /*atTimeCode*/,
7097  'w' /*atTimeModifier*/,
7098  4 /*deltaCode*/,
7099  '-' /*letter*/,
7100  },
7101  // Rule Tonga 2001 2002 - Jan lastSun 2:00 0 -
7102  {
7103  1 /*fromYearTiny*/,
7104  2 /*toYearTiny*/,
7105  1 /*inMonth*/,
7106  7 /*onDayOfWeek*/,
7107  0 /*onDayOfMonth*/,
7108  8 /*atTimeCode*/,
7109  'w' /*atTimeModifier*/,
7110  0 /*deltaCode*/,
7111  '-' /*letter*/,
7112  },
7113  // Rule Tonga 2016 only - Nov Sun>=1 2:00 1:00 -
7114  {
7115  16 /*fromYearTiny*/,
7116  16 /*toYearTiny*/,
7117  11 /*inMonth*/,
7118  7 /*onDayOfWeek*/,
7119  1 /*onDayOfMonth*/,
7120  8 /*atTimeCode*/,
7121  'w' /*atTimeModifier*/,
7122  4 /*deltaCode*/,
7123  '-' /*letter*/,
7124  },
7125  // Rule Tonga 2017 only - Jan Sun>=15 3:00 0 -
7126  {
7127  17 /*fromYearTiny*/,
7128  17 /*toYearTiny*/,
7129  1 /*inMonth*/,
7130  7 /*onDayOfWeek*/,
7131  15 /*onDayOfMonth*/,
7132  12 /*atTimeCode*/,
7133  'w' /*atTimeModifier*/,
7134  0 /*deltaCode*/,
7135  '-' /*letter*/,
7136  },
7137 
7138 };
7139 
7140 
7141 
7142 const extended::ZonePolicy kPolicyTonga = {
7143  7 /*numRules*/,
7144  kZoneRulesTonga /*rules*/,
7145  0 /* numLetters */,
7146  nullptr /* letters */,
7147 };
7148 
7149 //---------------------------------------------------------------------------
7150 // Policy name: Troll
7151 // Rules: 3
7152 // Memory (8-bit): 45
7153 // Memory (32-bit): 53
7154 //---------------------------------------------------------------------------
7155 
7156 static const extended::ZoneRule kZoneRulesTroll[] = {
7157  // Anchor: Rule Troll 2004 max - Oct lastSun 1:00u 0:00 +00
7158  {
7159  -127 /*fromYearTiny*/,
7160  -127 /*toYearTiny*/,
7161  1 /*inMonth*/,
7162  0 /*onDayOfWeek*/,
7163  1 /*onDayOfMonth*/,
7164  0 /*atTimeCode*/,
7165  'w' /*atTimeModifier*/,
7166  0 /*deltaCode*/,
7167  0 /*letter; "+00"*/,
7168  },
7169  // Rule Troll 2005 max - Mar lastSun 1:00u 2:00 +02
7170  {
7171  5 /*fromYearTiny*/,
7172  126 /*toYearTiny*/,
7173  3 /*inMonth*/,
7174  7 /*onDayOfWeek*/,
7175  0 /*onDayOfMonth*/,
7176  4 /*atTimeCode*/,
7177  'u' /*atTimeModifier*/,
7178  8 /*deltaCode*/,
7179  1 /*letter; "+02"*/,
7180  },
7181  // Rule Troll 2004 max - Oct lastSun 1:00u 0:00 +00
7182  {
7183  4 /*fromYearTiny*/,
7184  126 /*toYearTiny*/,
7185  10 /*inMonth*/,
7186  7 /*onDayOfWeek*/,
7187  0 /*onDayOfMonth*/,
7188  4 /*atTimeCode*/,
7189  'u' /*atTimeModifier*/,
7190  0 /*deltaCode*/,
7191  0 /*letter; "+00"*/,
7192  },
7193 
7194 };
7195 
7196 static const char* const kLettersTroll[] = {
7197  /*0*/ "+00",
7198  /*1*/ "+02",
7199 
7200 };
7201 
7202 
7203 const extended::ZonePolicy kPolicyTroll = {
7204  3 /*numRules*/,
7205  kZoneRulesTroll /*rules*/,
7206  2 /* numLetters */,
7207  kLettersTroll /* letters */,
7208 };
7209 
7210 //---------------------------------------------------------------------------
7211 // Policy name: Tunisia
7212 // Rules: 5
7213 // Memory (8-bit): 51
7214 // Memory (32-bit): 55
7215 //---------------------------------------------------------------------------
7216 
7217 static const extended::ZoneRule kZoneRulesTunisia[] = {
7218  // Rule Tunisia 1988 1990 - Sep lastSun 0:00s 0 -
7219  {
7220  -12 /*fromYearTiny*/,
7221  -10 /*toYearTiny*/,
7222  9 /*inMonth*/,
7223  7 /*onDayOfWeek*/,
7224  0 /*onDayOfMonth*/,
7225  0 /*atTimeCode*/,
7226  's' /*atTimeModifier*/,
7227  0 /*deltaCode*/,
7228  '-' /*letter*/,
7229  },
7230  // Rule Tunisia 2005 only - May 1 0:00s 1:00 S
7231  {
7232  5 /*fromYearTiny*/,
7233  5 /*toYearTiny*/,
7234  5 /*inMonth*/,
7235  0 /*onDayOfWeek*/,
7236  1 /*onDayOfMonth*/,
7237  0 /*atTimeCode*/,
7238  's' /*atTimeModifier*/,
7239  4 /*deltaCode*/,
7240  'S' /*letter*/,
7241  },
7242  // Rule Tunisia 2005 only - Sep 30 1:00s 0 -
7243  {
7244  5 /*fromYearTiny*/,
7245  5 /*toYearTiny*/,
7246  9 /*inMonth*/,
7247  0 /*onDayOfWeek*/,
7248  30 /*onDayOfMonth*/,
7249  4 /*atTimeCode*/,
7250  's' /*atTimeModifier*/,
7251  0 /*deltaCode*/,
7252  '-' /*letter*/,
7253  },
7254  // Rule Tunisia 2006 2008 - Mar lastSun 2:00s 1:00 S
7255  {
7256  6 /*fromYearTiny*/,
7257  8 /*toYearTiny*/,
7258  3 /*inMonth*/,
7259  7 /*onDayOfWeek*/,
7260  0 /*onDayOfMonth*/,
7261  8 /*atTimeCode*/,
7262  's' /*atTimeModifier*/,
7263  4 /*deltaCode*/,
7264  'S' /*letter*/,
7265  },
7266  // Rule Tunisia 2006 2008 - Oct lastSun 2:00s 0 -
7267  {
7268  6 /*fromYearTiny*/,
7269  8 /*toYearTiny*/,
7270  10 /*inMonth*/,
7271  7 /*onDayOfWeek*/,
7272  0 /*onDayOfMonth*/,
7273  8 /*atTimeCode*/,
7274  's' /*atTimeModifier*/,
7275  0 /*deltaCode*/,
7276  '-' /*letter*/,
7277  },
7278 
7279 };
7280 
7281 
7282 
7283 const extended::ZonePolicy kPolicyTunisia = {
7284  5 /*numRules*/,
7285  kZoneRulesTunisia /*rules*/,
7286  0 /* numLetters */,
7287  nullptr /* letters */,
7288 };
7289 
7290 //---------------------------------------------------------------------------
7291 // Policy name: Turkey
7292 // Rules: 3
7293 // Memory (8-bit): 33
7294 // Memory (32-bit): 37
7295 //---------------------------------------------------------------------------
7296 
7297 static const extended::ZoneRule kZoneRulesTurkey[] = {
7298  // Rule Turkey 1986 1995 - Sep lastSun 1:00s 0 -
7299  {
7300  -14 /*fromYearTiny*/,
7301  -5 /*toYearTiny*/,
7302  9 /*inMonth*/,
7303  7 /*onDayOfWeek*/,
7304  0 /*onDayOfMonth*/,
7305  4 /*atTimeCode*/,
7306  's' /*atTimeModifier*/,
7307  0 /*deltaCode*/,
7308  '-' /*letter*/,
7309  },
7310  // Rule Turkey 1995 2006 - Mar lastSun 1:00s 1:00 S
7311  {
7312  -5 /*fromYearTiny*/,
7313  6 /*toYearTiny*/,
7314  3 /*inMonth*/,
7315  7 /*onDayOfWeek*/,
7316  0 /*onDayOfMonth*/,
7317  4 /*atTimeCode*/,
7318  's' /*atTimeModifier*/,
7319  4 /*deltaCode*/,
7320  'S' /*letter*/,
7321  },
7322  // Rule Turkey 1996 2006 - Oct lastSun 1:00s 0 -
7323  {
7324  -4 /*fromYearTiny*/,
7325  6 /*toYearTiny*/,
7326  10 /*inMonth*/,
7327  7 /*onDayOfWeek*/,
7328  0 /*onDayOfMonth*/,
7329  4 /*atTimeCode*/,
7330  's' /*atTimeModifier*/,
7331  0 /*deltaCode*/,
7332  '-' /*letter*/,
7333  },
7334 
7335 };
7336 
7337 
7338 
7339 const extended::ZonePolicy kPolicyTurkey = {
7340  3 /*numRules*/,
7341  kZoneRulesTurkey /*rules*/,
7342  0 /* numLetters */,
7343  nullptr /* letters */,
7344 };
7345 
7346 //---------------------------------------------------------------------------
7347 // Policy name: US
7348 // Rules: 5
7349 // Memory (8-bit): 51
7350 // Memory (32-bit): 55
7351 //---------------------------------------------------------------------------
7352 
7353 static const extended::ZoneRule kZoneRulesUS[] = {
7354  // Rule US 1967 2006 - Oct lastSun 2:00 0 S
7355  {
7356  -33 /*fromYearTiny*/,
7357  6 /*toYearTiny*/,
7358  10 /*inMonth*/,
7359  7 /*onDayOfWeek*/,
7360  0 /*onDayOfMonth*/,
7361  8 /*atTimeCode*/,
7362  'w' /*atTimeModifier*/,
7363  0 /*deltaCode*/,
7364  'S' /*letter*/,
7365  },
7366  // Rule US 1976 1986 - Apr lastSun 2:00 1:00 D
7367  {
7368  -24 /*fromYearTiny*/,
7369  -14 /*toYearTiny*/,
7370  4 /*inMonth*/,
7371  7 /*onDayOfWeek*/,
7372  0 /*onDayOfMonth*/,
7373  8 /*atTimeCode*/,
7374  'w' /*atTimeModifier*/,
7375  4 /*deltaCode*/,
7376  'D' /*letter*/,
7377  },
7378  // Rule US 1987 2006 - Apr Sun>=1 2:00 1:00 D
7379  {
7380  -13 /*fromYearTiny*/,
7381  6 /*toYearTiny*/,
7382  4 /*inMonth*/,
7383  7 /*onDayOfWeek*/,
7384  1 /*onDayOfMonth*/,
7385  8 /*atTimeCode*/,
7386  'w' /*atTimeModifier*/,
7387  4 /*deltaCode*/,
7388  'D' /*letter*/,
7389  },
7390  // Rule US 2007 max - Mar Sun>=8 2:00 1:00 D
7391  {
7392  7 /*fromYearTiny*/,
7393  126 /*toYearTiny*/,
7394  3 /*inMonth*/,
7395  7 /*onDayOfWeek*/,
7396  8 /*onDayOfMonth*/,
7397  8 /*atTimeCode*/,
7398  'w' /*atTimeModifier*/,
7399  4 /*deltaCode*/,
7400  'D' /*letter*/,
7401  },
7402  // Rule US 2007 max - Nov Sun>=1 2:00 0 S
7403  {
7404  7 /*fromYearTiny*/,
7405  126 /*toYearTiny*/,
7406  11 /*inMonth*/,
7407  7 /*onDayOfWeek*/,
7408  1 /*onDayOfMonth*/,
7409  8 /*atTimeCode*/,
7410  'w' /*atTimeModifier*/,
7411  0 /*deltaCode*/,
7412  'S' /*letter*/,
7413  },
7414 
7415 };
7416 
7417 
7418 
7419 const extended::ZonePolicy kPolicyUS = {
7420  5 /*numRules*/,
7421  kZoneRulesUS /*rules*/,
7422  0 /* numLetters */,
7423  nullptr /* letters */,
7424 };
7425 
7426 //---------------------------------------------------------------------------
7427 // Policy name: Uruguay
7428 // Rules: 6
7429 // Memory (8-bit): 60
7430 // Memory (32-bit): 64
7431 //---------------------------------------------------------------------------
7432 
7433 static const extended::ZoneRule kZoneRulesUruguay[] = {
7434  // Rule Uruguay 1993 only - Feb 28 0:00 0 -
7435  {
7436  -7 /*fromYearTiny*/,
7437  -7 /*toYearTiny*/,
7438  2 /*inMonth*/,
7439  0 /*onDayOfWeek*/,
7440  28 /*onDayOfMonth*/,
7441  0 /*atTimeCode*/,
7442  'w' /*atTimeModifier*/,
7443  0 /*deltaCode*/,
7444  '-' /*letter*/,
7445  },
7446  // Rule Uruguay 2004 only - Sep 19 0:00 1:00 -
7447  {
7448  4 /*fromYearTiny*/,
7449  4 /*toYearTiny*/,
7450  9 /*inMonth*/,
7451  0 /*onDayOfWeek*/,
7452  19 /*onDayOfMonth*/,
7453  0 /*atTimeCode*/,
7454  'w' /*atTimeModifier*/,
7455  4 /*deltaCode*/,
7456  '-' /*letter*/,
7457  },
7458  // Rule Uruguay 2005 only - Mar 27 2:00 0 -
7459  {
7460  5 /*fromYearTiny*/,
7461  5 /*toYearTiny*/,
7462  3 /*inMonth*/,
7463  0 /*onDayOfWeek*/,
7464  27 /*onDayOfMonth*/,
7465  8 /*atTimeCode*/,
7466  'w' /*atTimeModifier*/,
7467  0 /*deltaCode*/,
7468  '-' /*letter*/,
7469  },
7470  // Rule Uruguay 2005 only - Oct 9 2:00 1:00 -
7471  {
7472  5 /*fromYearTiny*/,
7473  5 /*toYearTiny*/,
7474  10 /*inMonth*/,
7475  0 /*onDayOfWeek*/,
7476  9 /*onDayOfMonth*/,
7477  8 /*atTimeCode*/,
7478  'w' /*atTimeModifier*/,
7479  4 /*deltaCode*/,
7480  '-' /*letter*/,
7481  },
7482  // Rule Uruguay 2006 2015 - Mar Sun>=8 2:00 0 -
7483  {
7484  6 /*fromYearTiny*/,
7485  15 /*toYearTiny*/,
7486  3 /*inMonth*/,
7487  7 /*onDayOfWeek*/,
7488  8 /*onDayOfMonth*/,
7489  8 /*atTimeCode*/,
7490  'w' /*atTimeModifier*/,
7491  0 /*deltaCode*/,
7492  '-' /*letter*/,
7493  },
7494  // Rule Uruguay 2006 2014 - Oct Sun>=1 2:00 1:00 -
7495  {
7496  6 /*fromYearTiny*/,
7497  14 /*toYearTiny*/,
7498  10 /*inMonth*/,
7499  7 /*onDayOfWeek*/,
7500  1 /*onDayOfMonth*/,
7501  8 /*atTimeCode*/,
7502  'w' /*atTimeModifier*/,
7503  4 /*deltaCode*/,
7504  '-' /*letter*/,
7505  },
7506 
7507 };
7508 
7509 
7510 
7511 const extended::ZonePolicy kPolicyUruguay = {
7512  6 /*numRules*/,
7513  kZoneRulesUruguay /*rules*/,
7514  0 /* numLetters */,
7515  nullptr /* letters */,
7516 };
7517 
7518 //---------------------------------------------------------------------------
7519 // Policy name: Vanuatu
7520 // Rules: 1
7521 // Memory (8-bit): 15
7522 // Memory (32-bit): 19
7523 //---------------------------------------------------------------------------
7524 
7525 static const extended::ZoneRule kZoneRulesVanuatu[] = {
7526  // Rule Vanuatu 1992 1993 - Jan Sun>=23 0:00 0 -
7527  {
7528  -8 /*fromYearTiny*/,
7529  -7 /*toYearTiny*/,
7530  1 /*inMonth*/,
7531  7 /*onDayOfWeek*/,
7532  23 /*onDayOfMonth*/,
7533  0 /*atTimeCode*/,
7534  'w' /*atTimeModifier*/,
7535  0 /*deltaCode*/,
7536  '-' /*letter*/,
7537  },
7538 
7539 };
7540 
7541 
7542 
7543 const extended::ZonePolicy kPolicyVanuatu = {
7544  1 /*numRules*/,
7545  kZoneRulesVanuatu /*rules*/,
7546  0 /* numLetters */,
7547  nullptr /* letters */,
7548 };
7549 
7550 //---------------------------------------------------------------------------
7551 // Policy name: WS
7552 // Rules: 6
7553 // Memory (8-bit): 60
7554 // Memory (32-bit): 64
7555 //---------------------------------------------------------------------------
7556 
7557 static const extended::ZoneRule kZoneRulesWS[] = {
7558  // Anchor: Rule WS 2011 only - Apr Sat>=1 4:00 0 -
7559  {
7560  -127 /*fromYearTiny*/,
7561  -127 /*toYearTiny*/,
7562  1 /*inMonth*/,
7563  0 /*onDayOfWeek*/,
7564  1 /*onDayOfMonth*/,
7565  0 /*atTimeCode*/,
7566  'w' /*atTimeModifier*/,
7567  0 /*deltaCode*/,
7568  '-' /*letter*/,
7569  },
7570  // Rule WS 2010 only - Sep lastSun 0:00 1 -
7571  {
7572  10 /*fromYearTiny*/,
7573  10 /*toYearTiny*/,
7574  9 /*inMonth*/,
7575  7 /*onDayOfWeek*/,
7576  0 /*onDayOfMonth*/,
7577  0 /*atTimeCode*/,
7578  'w' /*atTimeModifier*/,
7579  4 /*deltaCode*/,
7580  '-' /*letter*/,
7581  },
7582  // Rule WS 2011 only - Apr Sat>=1 4:00 0 -
7583  {
7584  11 /*fromYearTiny*/,
7585  11 /*toYearTiny*/,
7586  4 /*inMonth*/,
7587  6 /*onDayOfWeek*/,
7588  1 /*onDayOfMonth*/,
7589  16 /*atTimeCode*/,
7590  'w' /*atTimeModifier*/,
7591  0 /*deltaCode*/,
7592  '-' /*letter*/,
7593  },
7594  // Rule WS 2011 only - Sep lastSat 3:00 1 -
7595  {
7596  11 /*fromYearTiny*/,
7597  11 /*toYearTiny*/,
7598  9 /*inMonth*/,
7599  6 /*onDayOfWeek*/,
7600  0 /*onDayOfMonth*/,
7601  12 /*atTimeCode*/,
7602  'w' /*atTimeModifier*/,
7603  4 /*deltaCode*/,
7604  '-' /*letter*/,
7605  },
7606  // Rule WS 2012 max - Apr Sun>=1 4:00 0 -
7607  {
7608  12 /*fromYearTiny*/,
7609  126 /*toYearTiny*/,
7610  4 /*inMonth*/,
7611  7 /*onDayOfWeek*/,
7612  1 /*onDayOfMonth*/,
7613  16 /*atTimeCode*/,
7614  'w' /*atTimeModifier*/,
7615  0 /*deltaCode*/,
7616  '-' /*letter*/,
7617  },
7618  // Rule WS 2012 max - Sep lastSun 3:00 1 -
7619  {
7620  12 /*fromYearTiny*/,
7621  126 /*toYearTiny*/,
7622  9 /*inMonth*/,
7623  7 /*onDayOfWeek*/,
7624  0 /*onDayOfMonth*/,
7625  12 /*atTimeCode*/,
7626  'w' /*atTimeModifier*/,
7627  4 /*deltaCode*/,
7628  '-' /*letter*/,
7629  },
7630 
7631 };
7632 
7633 
7634 
7635 const extended::ZonePolicy kPolicyWS = {
7636  6 /*numRules*/,
7637  kZoneRulesWS /*rules*/,
7638  0 /* numLetters */,
7639  nullptr /* letters */,
7640 };
7641 
7642 //---------------------------------------------------------------------------
7643 // Policy name: Winn
7644 // Rules: 3
7645 // Memory (8-bit): 33
7646 // Memory (32-bit): 37
7647 //---------------------------------------------------------------------------
7648 
7649 static const extended::ZoneRule kZoneRulesWinn[] = {
7650  // Rule Winn 1966 1986 - Apr lastSun 2:00s 1:00 D
7651  {
7652  -34 /*fromYearTiny*/,
7653  -14 /*toYearTiny*/,
7654  4 /*inMonth*/,
7655  7 /*onDayOfWeek*/,
7656  0 /*onDayOfMonth*/,
7657  8 /*atTimeCode*/,
7658  's' /*atTimeModifier*/,
7659  4 /*deltaCode*/,
7660  'D' /*letter*/,
7661  },
7662  // Rule Winn 1966 2005 - Oct lastSun 2:00s 0 S
7663  {
7664  -34 /*fromYearTiny*/,
7665  5 /*toYearTiny*/,
7666  10 /*inMonth*/,
7667  7 /*onDayOfWeek*/,
7668  0 /*onDayOfMonth*/,
7669  8 /*atTimeCode*/,
7670  's' /*atTimeModifier*/,
7671  0 /*deltaCode*/,
7672  'S' /*letter*/,
7673  },
7674  // Rule Winn 1987 2005 - Apr Sun>=1 2:00s 1:00 D
7675  {
7676  -13 /*fromYearTiny*/,
7677  5 /*toYearTiny*/,
7678  4 /*inMonth*/,
7679  7 /*onDayOfWeek*/,
7680  1 /*onDayOfMonth*/,
7681  8 /*atTimeCode*/,
7682  's' /*atTimeModifier*/,
7683  4 /*deltaCode*/,
7684  'D' /*letter*/,
7685  },
7686 
7687 };
7688 
7689 
7690 
7691 const extended::ZonePolicy kPolicyWinn = {
7692  3 /*numRules*/,
7693  kZoneRulesWinn /*rules*/,
7694  0 /* numLetters */,
7695  nullptr /* letters */,
7696 };
7697 
7698 //---------------------------------------------------------------------------
7699 // Policy name: Zion
7700 // Rules: 27
7701 // Memory (8-bit): 249
7702 // Memory (32-bit): 253
7703 //---------------------------------------------------------------------------
7704 
7705 static const extended::ZoneRule kZoneRulesZion[] = {
7706  // Rule Zion 1998 only - Sep 6 0:00 0 S
7707  {
7708  -2 /*fromYearTiny*/,
7709  -2 /*toYearTiny*/,
7710  9 /*inMonth*/,
7711  0 /*onDayOfWeek*/,
7712  6 /*onDayOfMonth*/,
7713  0 /*atTimeCode*/,
7714  'w' /*atTimeModifier*/,
7715  0 /*deltaCode*/,
7716  'S' /*letter*/,
7717  },
7718  // Rule Zion 1999 only - Apr 2 2:00 1:00 D
7719  {
7720  -1 /*fromYearTiny*/,
7721  -1 /*toYearTiny*/,
7722  4 /*inMonth*/,
7723  0 /*onDayOfWeek*/,
7724  2 /*onDayOfMonth*/,
7725  8 /*atTimeCode*/,
7726  'w' /*atTimeModifier*/,
7727  4 /*deltaCode*/,
7728  'D' /*letter*/,
7729  },
7730  // Rule Zion 1999 only - Sep 3 2:00 0 S
7731  {
7732  -1 /*fromYearTiny*/,
7733  -1 /*toYearTiny*/,
7734  9 /*inMonth*/,
7735  0 /*onDayOfWeek*/,
7736  3 /*onDayOfMonth*/,
7737  8 /*atTimeCode*/,
7738  'w' /*atTimeModifier*/,
7739  0 /*deltaCode*/,
7740  'S' /*letter*/,
7741  },
7742  // Rule Zion 2000 only - Apr 14 2:00 1:00 D
7743  {
7744  0 /*fromYearTiny*/,
7745  0 /*toYearTiny*/,
7746  4 /*inMonth*/,
7747  0 /*onDayOfWeek*/,
7748  14 /*onDayOfMonth*/,
7749  8 /*atTimeCode*/,
7750  'w' /*atTimeModifier*/,
7751  4 /*deltaCode*/,
7752  'D' /*letter*/,
7753  },
7754  // Rule Zion 2000 only - Oct 6 1:00 0 S
7755  {
7756  0 /*fromYearTiny*/,
7757  0 /*toYearTiny*/,
7758  10 /*inMonth*/,
7759  0 /*onDayOfWeek*/,
7760  6 /*onDayOfMonth*/,
7761  4 /*atTimeCode*/,
7762  'w' /*atTimeModifier*/,
7763  0 /*deltaCode*/,
7764  'S' /*letter*/,
7765  },
7766  // Rule Zion 2001 only - Apr 9 1:00 1:00 D
7767  {
7768  1 /*fromYearTiny*/,
7769  1 /*toYearTiny*/,
7770  4 /*inMonth*/,
7771  0 /*onDayOfWeek*/,
7772  9 /*onDayOfMonth*/,
7773  4 /*atTimeCode*/,
7774  'w' /*atTimeModifier*/,
7775  4 /*deltaCode*/,
7776  'D' /*letter*/,
7777  },
7778  // Rule Zion 2001 only - Sep 24 1:00 0 S
7779  {
7780  1 /*fromYearTiny*/,
7781  1 /*toYearTiny*/,
7782  9 /*inMonth*/,
7783  0 /*onDayOfWeek*/,
7784  24 /*onDayOfMonth*/,
7785  4 /*atTimeCode*/,
7786  'w' /*atTimeModifier*/,
7787  0 /*deltaCode*/,
7788  'S' /*letter*/,
7789  },
7790  // Rule Zion 2002 only - Mar 29 1:00 1:00 D
7791  {
7792  2 /*fromYearTiny*/,
7793  2 /*toYearTiny*/,
7794  3 /*inMonth*/,
7795  0 /*onDayOfWeek*/,
7796  29 /*onDayOfMonth*/,
7797  4 /*atTimeCode*/,
7798  'w' /*atTimeModifier*/,
7799  4 /*deltaCode*/,
7800  'D' /*letter*/,
7801  },
7802  // Rule Zion 2002 only - Oct 7 1:00 0 S
7803  {
7804  2 /*fromYearTiny*/,
7805  2 /*toYearTiny*/,
7806  10 /*inMonth*/,
7807  0 /*onDayOfWeek*/,
7808  7 /*onDayOfMonth*/,
7809  4 /*atTimeCode*/,
7810  'w' /*atTimeModifier*/,
7811  0 /*deltaCode*/,
7812  'S' /*letter*/,
7813  },
7814  // Rule Zion 2003 only - Mar 28 1:00 1:00 D
7815  {
7816  3 /*fromYearTiny*/,
7817  3 /*toYearTiny*/,
7818  3 /*inMonth*/,
7819  0 /*onDayOfWeek*/,
7820  28 /*onDayOfMonth*/,
7821  4 /*atTimeCode*/,
7822  'w' /*atTimeModifier*/,
7823  4 /*deltaCode*/,
7824  'D' /*letter*/,
7825  },
7826  // Rule Zion 2003 only - Oct 3 1:00 0 S
7827  {
7828  3 /*fromYearTiny*/,
7829  3 /*toYearTiny*/,
7830  10 /*inMonth*/,
7831  0 /*onDayOfWeek*/,
7832  3 /*onDayOfMonth*/,
7833  4 /*atTimeCode*/,
7834  'w' /*atTimeModifier*/,
7835  0 /*deltaCode*/,
7836  'S' /*letter*/,
7837  },
7838  // Rule Zion 2004 only - Apr 7 1:00 1:00 D
7839  {
7840  4 /*fromYearTiny*/,
7841  4 /*toYearTiny*/,
7842  4 /*inMonth*/,
7843  0 /*onDayOfWeek*/,
7844  7 /*onDayOfMonth*/,
7845  4 /*atTimeCode*/,
7846  'w' /*atTimeModifier*/,
7847  4 /*deltaCode*/,
7848  'D' /*letter*/,
7849  },
7850  // Rule Zion 2004 only - Sep 22 1:00 0 S
7851  {
7852  4 /*fromYearTiny*/,
7853  4 /*toYearTiny*/,
7854  9 /*inMonth*/,
7855  0 /*onDayOfWeek*/,
7856  22 /*onDayOfMonth*/,
7857  4 /*atTimeCode*/,
7858  'w' /*atTimeModifier*/,
7859  0 /*deltaCode*/,
7860  'S' /*letter*/,
7861  },
7862  // Rule Zion 2005 only - Apr 1 2:00 1:00 D
7863  {
7864  5 /*fromYearTiny*/,
7865  5 /*toYearTiny*/,
7866  4 /*inMonth*/,
7867  0 /*onDayOfWeek*/,
7868  1 /*onDayOfMonth*/,
7869  8 /*atTimeCode*/,
7870  'w' /*atTimeModifier*/,
7871  4 /*deltaCode*/,
7872  'D' /*letter*/,
7873  },
7874  // Rule Zion 2005 only - Oct 9 2:00 0 S
7875  {
7876  5 /*fromYearTiny*/,
7877  5 /*toYearTiny*/,
7878  10 /*inMonth*/,
7879  0 /*onDayOfWeek*/,
7880  9 /*onDayOfMonth*/,
7881  8 /*atTimeCode*/,
7882  'w' /*atTimeModifier*/,
7883  0 /*deltaCode*/,
7884  'S' /*letter*/,
7885  },
7886  // Rule Zion 2006 2010 - Mar Fri>=26 2:00 1:00 D
7887  {
7888  6 /*fromYearTiny*/,
7889  10 /*toYearTiny*/,
7890  3 /*inMonth*/,
7891  5 /*onDayOfWeek*/,
7892  26 /*onDayOfMonth*/,
7893  8 /*atTimeCode*/,
7894  'w' /*atTimeModifier*/,
7895  4 /*deltaCode*/,
7896  'D' /*letter*/,
7897  },
7898  // Rule Zion 2006 only - Oct 1 2:00 0 S
7899  {
7900  6 /*fromYearTiny*/,
7901  6 /*toYearTiny*/,
7902  10 /*inMonth*/,
7903  0 /*onDayOfWeek*/,
7904  1 /*onDayOfMonth*/,
7905  8 /*atTimeCode*/,
7906  'w' /*atTimeModifier*/,
7907  0 /*deltaCode*/,
7908  'S' /*letter*/,
7909  },
7910  // Rule Zion 2007 only - Sep 16 2:00 0 S
7911  {
7912  7 /*fromYearTiny*/,
7913  7 /*toYearTiny*/,
7914  9 /*inMonth*/,
7915  0 /*onDayOfWeek*/,
7916  16 /*onDayOfMonth*/,
7917  8 /*atTimeCode*/,
7918  'w' /*atTimeModifier*/,
7919  0 /*deltaCode*/,
7920  'S' /*letter*/,
7921  },
7922  // Rule Zion 2008 only - Oct 5 2:00 0 S
7923  {
7924  8 /*fromYearTiny*/,
7925  8 /*toYearTiny*/,
7926  10 /*inMonth*/,
7927  0 /*onDayOfWeek*/,
7928  5 /*onDayOfMonth*/,
7929  8 /*atTimeCode*/,
7930  'w' /*atTimeModifier*/,
7931  0 /*deltaCode*/,
7932  'S' /*letter*/,
7933  },
7934  // Rule Zion 2009 only - Sep 27 2:00 0 S
7935  {
7936  9 /*fromYearTiny*/,
7937  9 /*toYearTiny*/,
7938  9 /*inMonth*/,
7939  0 /*onDayOfWeek*/,
7940  27 /*onDayOfMonth*/,
7941  8 /*atTimeCode*/,
7942  'w' /*atTimeModifier*/,
7943  0 /*deltaCode*/,
7944  'S' /*letter*/,
7945  },
7946  // Rule Zion 2010 only - Sep 12 2:00 0 S
7947  {
7948  10 /*fromYearTiny*/,
7949  10 /*toYearTiny*/,
7950  9 /*inMonth*/,
7951  0 /*onDayOfWeek*/,
7952  12 /*onDayOfMonth*/,
7953  8 /*atTimeCode*/,
7954  'w' /*atTimeModifier*/,
7955  0 /*deltaCode*/,
7956  'S' /*letter*/,
7957  },
7958  // Rule Zion 2011 only - Apr 1 2:00 1:00 D
7959  {
7960  11 /*fromYearTiny*/,
7961  11 /*toYearTiny*/,
7962  4 /*inMonth*/,
7963  0 /*onDayOfWeek*/,
7964  1 /*onDayOfMonth*/,
7965  8 /*atTimeCode*/,
7966  'w' /*atTimeModifier*/,
7967  4 /*deltaCode*/,
7968  'D' /*letter*/,
7969  },
7970  // Rule Zion 2011 only - Oct 2 2:00 0 S
7971  {
7972  11 /*fromYearTiny*/,
7973  11 /*toYearTiny*/,
7974  10 /*inMonth*/,
7975  0 /*onDayOfWeek*/,
7976  2 /*onDayOfMonth*/,
7977  8 /*atTimeCode*/,
7978  'w' /*atTimeModifier*/,
7979  0 /*deltaCode*/,
7980  'S' /*letter*/,
7981  },
7982  // Rule Zion 2012 only - Mar Fri>=26 2:00 1:00 D
7983  {
7984  12 /*fromYearTiny*/,
7985  12 /*toYearTiny*/,
7986  3 /*inMonth*/,
7987  5 /*onDayOfWeek*/,
7988  26 /*onDayOfMonth*/,
7989  8 /*atTimeCode*/,
7990  'w' /*atTimeModifier*/,
7991  4 /*deltaCode*/,
7992  'D' /*letter*/,
7993  },
7994  // Rule Zion 2012 only - Sep 23 2:00 0 S
7995  {
7996  12 /*fromYearTiny*/,
7997  12 /*toYearTiny*/,
7998  9 /*inMonth*/,
7999  0 /*onDayOfWeek*/,
8000  23 /*onDayOfMonth*/,
8001  8 /*atTimeCode*/,
8002  'w' /*atTimeModifier*/,
8003  0 /*deltaCode*/,
8004  'S' /*letter*/,
8005  },
8006  // Rule Zion 2013 max - Mar Fri>=23 2:00 1:00 D
8007  {
8008  13 /*fromYearTiny*/,
8009  126 /*toYearTiny*/,
8010  3 /*inMonth*/,
8011  5 /*onDayOfWeek*/,
8012  23 /*onDayOfMonth*/,
8013  8 /*atTimeCode*/,
8014  'w' /*atTimeModifier*/,
8015  4 /*deltaCode*/,
8016  'D' /*letter*/,
8017  },
8018  // Rule Zion 2013 max - Oct lastSun 2:00 0 S
8019  {
8020  13 /*fromYearTiny*/,
8021  126 /*toYearTiny*/,
8022  10 /*inMonth*/,
8023  7 /*onDayOfWeek*/,
8024  0 /*onDayOfMonth*/,
8025  8 /*atTimeCode*/,
8026  'w' /*atTimeModifier*/,
8027  0 /*deltaCode*/,
8028  'S' /*letter*/,
8029  },
8030 
8031 };
8032 
8033 
8034 
8035 const extended::ZonePolicy kPolicyZion = {
8036  27 /*numRules*/,
8037  kZoneRulesZion /*rules*/,
8038  0 /* numLetters */,
8039  nullptr /* letters */,
8040 };
8041 
8042 
8043 
8044 }
8045 }