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/zonedb --tz_version 2019a --action zonedb --language arduino --scope basic --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: 65
9 // Rules: 370
10 // Memory (8-bit): 3720
11 // Memory (32-bit): 4012
12 //
13 // DO NOT EDIT
14 
15 #include "zone_policies.h"
16 
17 namespace ace_time {
18 namespace zonedb {
19 
20 //---------------------------------------------------------------------------
21 // Policy name: AN
22 // Rules: 9
23 // Memory (8-bit): 87
24 // Memory (32-bit): 91
25 //---------------------------------------------------------------------------
26 
27 static const basic::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 basic::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 basic::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 basic::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 basic::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 basic::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 basic::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 basic::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 basic::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 basic::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 basic::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 basic::ZonePolicy kPolicyAW = {
590  4 /*numRules*/,
591  kZoneRulesAW /*rules*/,
592  0 /* numLetters */,
593  nullptr /* letters */,
594 };
595 
596 //---------------------------------------------------------------------------
597 // Policy name: Armenia
598 // Rules: 3
599 // Memory (8-bit): 33
600 // Memory (32-bit): 37
601 //---------------------------------------------------------------------------
602 
603 static const basic::ZoneRule kZoneRulesArmenia[] = {
604  // Anchor: Rule Armenia 2011 only - Oct lastSun 2:00s 0 -
605  {
606  -127 /*fromYearTiny*/,
607  -127 /*toYearTiny*/,
608  1 /*inMonth*/,
609  0 /*onDayOfWeek*/,
610  1 /*onDayOfMonth*/,
611  0 /*atTimeCode*/,
612  'w' /*atTimeModifier*/,
613  0 /*deltaCode*/,
614  '-' /*letter*/,
615  },
616  // Rule Armenia 2011 only - Mar lastSun 2:00s 1:00 -
617  {
618  11 /*fromYearTiny*/,
619  11 /*toYearTiny*/,
620  3 /*inMonth*/,
621  7 /*onDayOfWeek*/,
622  0 /*onDayOfMonth*/,
623  8 /*atTimeCode*/,
624  's' /*atTimeModifier*/,
625  4 /*deltaCode*/,
626  '-' /*letter*/,
627  },
628  // Rule Armenia 2011 only - Oct lastSun 2:00s 0 -
629  {
630  11 /*fromYearTiny*/,
631  11 /*toYearTiny*/,
632  10 /*inMonth*/,
633  7 /*onDayOfWeek*/,
634  0 /*onDayOfMonth*/,
635  8 /*atTimeCode*/,
636  's' /*atTimeModifier*/,
637  0 /*deltaCode*/,
638  '-' /*letter*/,
639  },
640 
641 };
642 
643 
644 
645 const basic::ZonePolicy kPolicyArmenia = {
646  3 /*numRules*/,
647  kZoneRulesArmenia /*rules*/,
648  0 /* numLetters */,
649  nullptr /* letters */,
650 };
651 
652 //---------------------------------------------------------------------------
653 // Policy name: Aus
654 // Rules: 1
655 // Memory (8-bit): 15
656 // Memory (32-bit): 19
657 //---------------------------------------------------------------------------
658 
659 static const basic::ZoneRule kZoneRulesAus[] = {
660  // Rule Aus 1943 1944 - Mar lastSun 2:00 0 S
661  {
662  -57 /*fromYearTiny*/,
663  -56 /*toYearTiny*/,
664  3 /*inMonth*/,
665  7 /*onDayOfWeek*/,
666  0 /*onDayOfMonth*/,
667  8 /*atTimeCode*/,
668  'w' /*atTimeModifier*/,
669  0 /*deltaCode*/,
670  'S' /*letter*/,
671  },
672 
673 };
674 
675 
676 
677 const basic::ZonePolicy kPolicyAus = {
678  1 /*numRules*/,
679  kZoneRulesAus /*rules*/,
680  0 /* numLetters */,
681  nullptr /* letters */,
682 };
683 
684 //---------------------------------------------------------------------------
685 // Policy name: Azer
686 // Rules: 2
687 // Memory (8-bit): 24
688 // Memory (32-bit): 28
689 //---------------------------------------------------------------------------
690 
691 static const basic::ZoneRule kZoneRulesAzer[] = {
692  // Rule Azer 1997 2015 - Mar lastSun 4:00 1:00 -
693  {
694  -3 /*fromYearTiny*/,
695  15 /*toYearTiny*/,
696  3 /*inMonth*/,
697  7 /*onDayOfWeek*/,
698  0 /*onDayOfMonth*/,
699  16 /*atTimeCode*/,
700  'w' /*atTimeModifier*/,
701  4 /*deltaCode*/,
702  '-' /*letter*/,
703  },
704  // Rule Azer 1997 2015 - Oct lastSun 5:00 0 -
705  {
706  -3 /*fromYearTiny*/,
707  15 /*toYearTiny*/,
708  10 /*inMonth*/,
709  7 /*onDayOfWeek*/,
710  0 /*onDayOfMonth*/,
711  20 /*atTimeCode*/,
712  'w' /*atTimeModifier*/,
713  0 /*deltaCode*/,
714  '-' /*letter*/,
715  },
716 
717 };
718 
719 
720 
721 const basic::ZonePolicy kPolicyAzer = {
722  2 /*numRules*/,
723  kZoneRulesAzer /*rules*/,
724  0 /* numLetters */,
725  nullptr /* letters */,
726 };
727 
728 //---------------------------------------------------------------------------
729 // Policy name: Barb
730 // Rules: 1
731 // Memory (8-bit): 15
732 // Memory (32-bit): 19
733 //---------------------------------------------------------------------------
734 
735 static const basic::ZoneRule kZoneRulesBarb[] = {
736  // Rule Barb 1980 only - Sep 25 2:00 0 S
737  {
738  -20 /*fromYearTiny*/,
739  -20 /*toYearTiny*/,
740  9 /*inMonth*/,
741  0 /*onDayOfWeek*/,
742  25 /*onDayOfMonth*/,
743  8 /*atTimeCode*/,
744  'w' /*atTimeModifier*/,
745  0 /*deltaCode*/,
746  'S' /*letter*/,
747  },
748 
749 };
750 
751 
752 
753 const basic::ZonePolicy kPolicyBarb = {
754  1 /*numRules*/,
755  kZoneRulesBarb /*rules*/,
756  0 /* numLetters */,
757  nullptr /* letters */,
758 };
759 
760 //---------------------------------------------------------------------------
761 // Policy name: Brazil
762 // Rules: 28
763 // Memory (8-bit): 258
764 // Memory (32-bit): 262
765 //---------------------------------------------------------------------------
766 
767 static const basic::ZoneRule kZoneRulesBrazil[] = {
768  // Rule Brazil 1998 only - Oct 11 0:00 1:00 -
769  {
770  -2 /*fromYearTiny*/,
771  -2 /*toYearTiny*/,
772  10 /*inMonth*/,
773  0 /*onDayOfWeek*/,
774  11 /*onDayOfMonth*/,
775  0 /*atTimeCode*/,
776  'w' /*atTimeModifier*/,
777  4 /*deltaCode*/,
778  '-' /*letter*/,
779  },
780  // Rule Brazil 1999 only - Feb 21 0:00 0 -
781  {
782  -1 /*fromYearTiny*/,
783  -1 /*toYearTiny*/,
784  2 /*inMonth*/,
785  0 /*onDayOfWeek*/,
786  21 /*onDayOfMonth*/,
787  0 /*atTimeCode*/,
788  'w' /*atTimeModifier*/,
789  0 /*deltaCode*/,
790  '-' /*letter*/,
791  },
792  // Rule Brazil 1999 only - Oct 3 0:00 1:00 -
793  {
794  -1 /*fromYearTiny*/,
795  -1 /*toYearTiny*/,
796  10 /*inMonth*/,
797  0 /*onDayOfWeek*/,
798  3 /*onDayOfMonth*/,
799  0 /*atTimeCode*/,
800  'w' /*atTimeModifier*/,
801  4 /*deltaCode*/,
802  '-' /*letter*/,
803  },
804  // Rule Brazil 2000 only - Feb 27 0:00 0 -
805  {
806  0 /*fromYearTiny*/,
807  0 /*toYearTiny*/,
808  2 /*inMonth*/,
809  0 /*onDayOfWeek*/,
810  27 /*onDayOfMonth*/,
811  0 /*atTimeCode*/,
812  'w' /*atTimeModifier*/,
813  0 /*deltaCode*/,
814  '-' /*letter*/,
815  },
816  // Rule Brazil 2000 2001 - Oct Sun>=8 0:00 1:00 -
817  {
818  0 /*fromYearTiny*/,
819  1 /*toYearTiny*/,
820  10 /*inMonth*/,
821  7 /*onDayOfWeek*/,
822  8 /*onDayOfMonth*/,
823  0 /*atTimeCode*/,
824  'w' /*atTimeModifier*/,
825  4 /*deltaCode*/,
826  '-' /*letter*/,
827  },
828  // Rule Brazil 2001 2006 - Feb Sun>=15 0:00 0 -
829  {
830  1 /*fromYearTiny*/,
831  6 /*toYearTiny*/,
832  2 /*inMonth*/,
833  7 /*onDayOfWeek*/,
834  15 /*onDayOfMonth*/,
835  0 /*atTimeCode*/,
836  'w' /*atTimeModifier*/,
837  0 /*deltaCode*/,
838  '-' /*letter*/,
839  },
840  // Rule Brazil 2002 only - Nov 3 0:00 1:00 -
841  {
842  2 /*fromYearTiny*/,
843  2 /*toYearTiny*/,
844  11 /*inMonth*/,
845  0 /*onDayOfWeek*/,
846  3 /*onDayOfMonth*/,
847  0 /*atTimeCode*/,
848  'w' /*atTimeModifier*/,
849  4 /*deltaCode*/,
850  '-' /*letter*/,
851  },
852  // Rule Brazil 2003 only - Oct 19 0:00 1:00 -
853  {
854  3 /*fromYearTiny*/,
855  3 /*toYearTiny*/,
856  10 /*inMonth*/,
857  0 /*onDayOfWeek*/,
858  19 /*onDayOfMonth*/,
859  0 /*atTimeCode*/,
860  'w' /*atTimeModifier*/,
861  4 /*deltaCode*/,
862  '-' /*letter*/,
863  },
864  // Rule Brazil 2004 only - Nov 2 0:00 1:00 -
865  {
866  4 /*fromYearTiny*/,
867  4 /*toYearTiny*/,
868  11 /*inMonth*/,
869  0 /*onDayOfWeek*/,
870  2 /*onDayOfMonth*/,
871  0 /*atTimeCode*/,
872  'w' /*atTimeModifier*/,
873  4 /*deltaCode*/,
874  '-' /*letter*/,
875  },
876  // Rule Brazil 2005 only - Oct 16 0:00 1:00 -
877  {
878  5 /*fromYearTiny*/,
879  5 /*toYearTiny*/,
880  10 /*inMonth*/,
881  0 /*onDayOfWeek*/,
882  16 /*onDayOfMonth*/,
883  0 /*atTimeCode*/,
884  'w' /*atTimeModifier*/,
885  4 /*deltaCode*/,
886  '-' /*letter*/,
887  },
888  // Rule Brazil 2006 only - Nov 5 0:00 1:00 -
889  {
890  6 /*fromYearTiny*/,
891  6 /*toYearTiny*/,
892  11 /*inMonth*/,
893  0 /*onDayOfWeek*/,
894  5 /*onDayOfMonth*/,
895  0 /*atTimeCode*/,
896  'w' /*atTimeModifier*/,
897  4 /*deltaCode*/,
898  '-' /*letter*/,
899  },
900  // Rule Brazil 2007 only - Feb 25 0:00 0 -
901  {
902  7 /*fromYearTiny*/,
903  7 /*toYearTiny*/,
904  2 /*inMonth*/,
905  0 /*onDayOfWeek*/,
906  25 /*onDayOfMonth*/,
907  0 /*atTimeCode*/,
908  'w' /*atTimeModifier*/,
909  0 /*deltaCode*/,
910  '-' /*letter*/,
911  },
912  // Rule Brazil 2007 only - Oct Sun>=8 0:00 1:00 -
913  {
914  7 /*fromYearTiny*/,
915  7 /*toYearTiny*/,
916  10 /*inMonth*/,
917  7 /*onDayOfWeek*/,
918  8 /*onDayOfMonth*/,
919  0 /*atTimeCode*/,
920  'w' /*atTimeModifier*/,
921  4 /*deltaCode*/,
922  '-' /*letter*/,
923  },
924  // Rule Brazil 2008 2017 - Oct Sun>=15 0:00 1:00 -
925  {
926  8 /*fromYearTiny*/,
927  17 /*toYearTiny*/,
928  10 /*inMonth*/,
929  7 /*onDayOfWeek*/,
930  15 /*onDayOfMonth*/,
931  0 /*atTimeCode*/,
932  'w' /*atTimeModifier*/,
933  4 /*deltaCode*/,
934  '-' /*letter*/,
935  },
936  // Rule Brazil 2008 2011 - Feb Sun>=15 0:00 0 -
937  {
938  8 /*fromYearTiny*/,
939  11 /*toYearTiny*/,
940  2 /*inMonth*/,
941  7 /*onDayOfWeek*/,
942  15 /*onDayOfMonth*/,
943  0 /*atTimeCode*/,
944  'w' /*atTimeModifier*/,
945  0 /*deltaCode*/,
946  '-' /*letter*/,
947  },
948  // Rule Brazil 2012 only - Feb Sun>=22 0:00 0 -
949  {
950  12 /*fromYearTiny*/,
951  12 /*toYearTiny*/,
952  2 /*inMonth*/,
953  7 /*onDayOfWeek*/,
954  22 /*onDayOfMonth*/,
955  0 /*atTimeCode*/,
956  'w' /*atTimeModifier*/,
957  0 /*deltaCode*/,
958  '-' /*letter*/,
959  },
960  // Rule Brazil 2013 2014 - Feb Sun>=15 0:00 0 -
961  {
962  13 /*fromYearTiny*/,
963  14 /*toYearTiny*/,
964  2 /*inMonth*/,
965  7 /*onDayOfWeek*/,
966  15 /*onDayOfMonth*/,
967  0 /*atTimeCode*/,
968  'w' /*atTimeModifier*/,
969  0 /*deltaCode*/,
970  '-' /*letter*/,
971  },
972  // Rule Brazil 2015 only - Feb Sun>=22 0:00 0 -
973  {
974  15 /*fromYearTiny*/,
975  15 /*toYearTiny*/,
976  2 /*inMonth*/,
977  7 /*onDayOfWeek*/,
978  22 /*onDayOfMonth*/,
979  0 /*atTimeCode*/,
980  'w' /*atTimeModifier*/,
981  0 /*deltaCode*/,
982  '-' /*letter*/,
983  },
984  // Rule Brazil 2016 2022 - Feb Sun>=15 0:00 0 -
985  {
986  16 /*fromYearTiny*/,
987  22 /*toYearTiny*/,
988  2 /*inMonth*/,
989  7 /*onDayOfWeek*/,
990  15 /*onDayOfMonth*/,
991  0 /*atTimeCode*/,
992  'w' /*atTimeModifier*/,
993  0 /*deltaCode*/,
994  '-' /*letter*/,
995  },
996  // Rule Brazil 2018 max - Nov Sun>=1 0:00 1:00 -
997  {
998  18 /*fromYearTiny*/,
999  126 /*toYearTiny*/,
1000  11 /*inMonth*/,
1001  7 /*onDayOfWeek*/,
1002  1 /*onDayOfMonth*/,
1003  0 /*atTimeCode*/,
1004  'w' /*atTimeModifier*/,
1005  4 /*deltaCode*/,
1006  '-' /*letter*/,
1007  },
1008  // Rule Brazil 2023 only - Feb Sun>=22 0:00 0 -
1009  {
1010  23 /*fromYearTiny*/,
1011  23 /*toYearTiny*/,
1012  2 /*inMonth*/,
1013  7 /*onDayOfWeek*/,
1014  22 /*onDayOfMonth*/,
1015  0 /*atTimeCode*/,
1016  'w' /*atTimeModifier*/,
1017  0 /*deltaCode*/,
1018  '-' /*letter*/,
1019  },
1020  // Rule Brazil 2024 2025 - Feb Sun>=15 0:00 0 -
1021  {
1022  24 /*fromYearTiny*/,
1023  25 /*toYearTiny*/,
1024  2 /*inMonth*/,
1025  7 /*onDayOfWeek*/,
1026  15 /*onDayOfMonth*/,
1027  0 /*atTimeCode*/,
1028  'w' /*atTimeModifier*/,
1029  0 /*deltaCode*/,
1030  '-' /*letter*/,
1031  },
1032  // Rule Brazil 2026 only - Feb Sun>=22 0:00 0 -
1033  {
1034  26 /*fromYearTiny*/,
1035  26 /*toYearTiny*/,
1036  2 /*inMonth*/,
1037  7 /*onDayOfWeek*/,
1038  22 /*onDayOfMonth*/,
1039  0 /*atTimeCode*/,
1040  'w' /*atTimeModifier*/,
1041  0 /*deltaCode*/,
1042  '-' /*letter*/,
1043  },
1044  // Rule Brazil 2027 2033 - Feb Sun>=15 0:00 0 -
1045  {
1046  27 /*fromYearTiny*/,
1047  33 /*toYearTiny*/,
1048  2 /*inMonth*/,
1049  7 /*onDayOfWeek*/,
1050  15 /*onDayOfMonth*/,
1051  0 /*atTimeCode*/,
1052  'w' /*atTimeModifier*/,
1053  0 /*deltaCode*/,
1054  '-' /*letter*/,
1055  },
1056  // Rule Brazil 2034 only - Feb Sun>=22 0:00 0 -
1057  {
1058  34 /*fromYearTiny*/,
1059  34 /*toYearTiny*/,
1060  2 /*inMonth*/,
1061  7 /*onDayOfWeek*/,
1062  22 /*onDayOfMonth*/,
1063  0 /*atTimeCode*/,
1064  'w' /*atTimeModifier*/,
1065  0 /*deltaCode*/,
1066  '-' /*letter*/,
1067  },
1068  // Rule Brazil 2035 2036 - Feb Sun>=15 0:00 0 -
1069  {
1070  35 /*fromYearTiny*/,
1071  36 /*toYearTiny*/,
1072  2 /*inMonth*/,
1073  7 /*onDayOfWeek*/,
1074  15 /*onDayOfMonth*/,
1075  0 /*atTimeCode*/,
1076  'w' /*atTimeModifier*/,
1077  0 /*deltaCode*/,
1078  '-' /*letter*/,
1079  },
1080  // Rule Brazil 2037 only - Feb Sun>=22 0:00 0 -
1081  {
1082  37 /*fromYearTiny*/,
1083  37 /*toYearTiny*/,
1084  2 /*inMonth*/,
1085  7 /*onDayOfWeek*/,
1086  22 /*onDayOfMonth*/,
1087  0 /*atTimeCode*/,
1088  'w' /*atTimeModifier*/,
1089  0 /*deltaCode*/,
1090  '-' /*letter*/,
1091  },
1092  // Rule Brazil 2038 max - Feb Sun>=15 0:00 0 -
1093  {
1094  38 /*fromYearTiny*/,
1095  126 /*toYearTiny*/,
1096  2 /*inMonth*/,
1097  7 /*onDayOfWeek*/,
1098  15 /*onDayOfMonth*/,
1099  0 /*atTimeCode*/,
1100  'w' /*atTimeModifier*/,
1101  0 /*deltaCode*/,
1102  '-' /*letter*/,
1103  },
1104 
1105 };
1106 
1107 
1108 
1109 const basic::ZonePolicy kPolicyBrazil = {
1110  28 /*numRules*/,
1111  kZoneRulesBrazil /*rules*/,
1112  0 /* numLetters */,
1113  nullptr /* letters */,
1114 };
1115 
1116 //---------------------------------------------------------------------------
1117 // Policy name: C_Eur
1118 // Rules: 3
1119 // Memory (8-bit): 33
1120 // Memory (32-bit): 37
1121 //---------------------------------------------------------------------------
1122 
1123 static const basic::ZoneRule kZoneRulesC_Eur[] = {
1124  // Rule C-Eur 1979 1995 - Sep lastSun 2:00s 0 -
1125  {
1126  -21 /*fromYearTiny*/,
1127  -5 /*toYearTiny*/,
1128  9 /*inMonth*/,
1129  7 /*onDayOfWeek*/,
1130  0 /*onDayOfMonth*/,
1131  8 /*atTimeCode*/,
1132  's' /*atTimeModifier*/,
1133  0 /*deltaCode*/,
1134  '-' /*letter*/,
1135  },
1136  // Rule C-Eur 1981 max - Mar lastSun 2:00s 1:00 S
1137  {
1138  -19 /*fromYearTiny*/,
1139  126 /*toYearTiny*/,
1140  3 /*inMonth*/,
1141  7 /*onDayOfWeek*/,
1142  0 /*onDayOfMonth*/,
1143  8 /*atTimeCode*/,
1144  's' /*atTimeModifier*/,
1145  4 /*deltaCode*/,
1146  'S' /*letter*/,
1147  },
1148  // Rule C-Eur 1996 max - Oct lastSun 2:00s 0 -
1149  {
1150  -4 /*fromYearTiny*/,
1151  126 /*toYearTiny*/,
1152  10 /*inMonth*/,
1153  7 /*onDayOfWeek*/,
1154  0 /*onDayOfMonth*/,
1155  8 /*atTimeCode*/,
1156  's' /*atTimeModifier*/,
1157  0 /*deltaCode*/,
1158  '-' /*letter*/,
1159  },
1160 
1161 };
1162 
1163 
1164 
1165 const basic::ZonePolicy kPolicyC_Eur = {
1166  3 /*numRules*/,
1167  kZoneRulesC_Eur /*rules*/,
1168  0 /* numLetters */,
1169  nullptr /* letters */,
1170 };
1171 
1172 //---------------------------------------------------------------------------
1173 // Policy name: CO
1174 // Rules: 1
1175 // Memory (8-bit): 15
1176 // Memory (32-bit): 19
1177 //---------------------------------------------------------------------------
1178 
1179 static const basic::ZoneRule kZoneRulesCO[] = {
1180  // Rule CO 1993 only - Apr 4 0:00 0 -
1181  {
1182  -7 /*fromYearTiny*/,
1183  -7 /*toYearTiny*/,
1184  4 /*inMonth*/,
1185  0 /*onDayOfWeek*/,
1186  4 /*onDayOfMonth*/,
1187  0 /*atTimeCode*/,
1188  'w' /*atTimeModifier*/,
1189  0 /*deltaCode*/,
1190  '-' /*letter*/,
1191  },
1192 
1193 };
1194 
1195 
1196 
1197 const basic::ZonePolicy kPolicyCO = {
1198  1 /*numRules*/,
1199  kZoneRulesCO /*rules*/,
1200  0 /* numLetters */,
1201  nullptr /* letters */,
1202 };
1203 
1204 //---------------------------------------------------------------------------
1205 // Policy name: CR
1206 // Rules: 1
1207 // Memory (8-bit): 15
1208 // Memory (32-bit): 19
1209 //---------------------------------------------------------------------------
1210 
1211 static const basic::ZoneRule kZoneRulesCR[] = {
1212  // Rule CR 1992 only - Mar 15 0:00 0 S
1213  {
1214  -8 /*fromYearTiny*/,
1215  -8 /*toYearTiny*/,
1216  3 /*inMonth*/,
1217  0 /*onDayOfWeek*/,
1218  15 /*onDayOfMonth*/,
1219  0 /*atTimeCode*/,
1220  'w' /*atTimeModifier*/,
1221  0 /*deltaCode*/,
1222  'S' /*letter*/,
1223  },
1224 
1225 };
1226 
1227 
1228 
1229 const basic::ZonePolicy kPolicyCR = {
1230  1 /*numRules*/,
1231  kZoneRulesCR /*rules*/,
1232  0 /* numLetters */,
1233  nullptr /* letters */,
1234 };
1235 
1236 //---------------------------------------------------------------------------
1237 // Policy name: Canada
1238 // Rules: 5
1239 // Memory (8-bit): 51
1240 // Memory (32-bit): 55
1241 //---------------------------------------------------------------------------
1242 
1243 static const basic::ZoneRule kZoneRulesCanada[] = {
1244  // Rule Canada 1974 1986 - Apr lastSun 2:00 1:00 D
1245  {
1246  -26 /*fromYearTiny*/,
1247  -14 /*toYearTiny*/,
1248  4 /*inMonth*/,
1249  7 /*onDayOfWeek*/,
1250  0 /*onDayOfMonth*/,
1251  8 /*atTimeCode*/,
1252  'w' /*atTimeModifier*/,
1253  4 /*deltaCode*/,
1254  'D' /*letter*/,
1255  },
1256  // Rule Canada 1974 2006 - Oct lastSun 2:00 0 S
1257  {
1258  -26 /*fromYearTiny*/,
1259  6 /*toYearTiny*/,
1260  10 /*inMonth*/,
1261  7 /*onDayOfWeek*/,
1262  0 /*onDayOfMonth*/,
1263  8 /*atTimeCode*/,
1264  'w' /*atTimeModifier*/,
1265  0 /*deltaCode*/,
1266  'S' /*letter*/,
1267  },
1268  // Rule Canada 1987 2006 - Apr Sun>=1 2:00 1:00 D
1269  {
1270  -13 /*fromYearTiny*/,
1271  6 /*toYearTiny*/,
1272  4 /*inMonth*/,
1273  7 /*onDayOfWeek*/,
1274  1 /*onDayOfMonth*/,
1275  8 /*atTimeCode*/,
1276  'w' /*atTimeModifier*/,
1277  4 /*deltaCode*/,
1278  'D' /*letter*/,
1279  },
1280  // Rule Canada 2007 max - Mar Sun>=8 2:00 1:00 D
1281  {
1282  7 /*fromYearTiny*/,
1283  126 /*toYearTiny*/,
1284  3 /*inMonth*/,
1285  7 /*onDayOfWeek*/,
1286  8 /*onDayOfMonth*/,
1287  8 /*atTimeCode*/,
1288  'w' /*atTimeModifier*/,
1289  4 /*deltaCode*/,
1290  'D' /*letter*/,
1291  },
1292  // Rule Canada 2007 max - Nov Sun>=1 2:00 0 S
1293  {
1294  7 /*fromYearTiny*/,
1295  126 /*toYearTiny*/,
1296  11 /*inMonth*/,
1297  7 /*onDayOfWeek*/,
1298  1 /*onDayOfMonth*/,
1299  8 /*atTimeCode*/,
1300  'w' /*atTimeModifier*/,
1301  0 /*deltaCode*/,
1302  'S' /*letter*/,
1303  },
1304 
1305 };
1306 
1307 
1308 
1309 const basic::ZonePolicy kPolicyCanada = {
1310  5 /*numRules*/,
1311  kZoneRulesCanada /*rules*/,
1312  0 /* numLetters */,
1313  nullptr /* letters */,
1314 };
1315 
1316 //---------------------------------------------------------------------------
1317 // Policy name: Chatham
1318 // Rules: 5
1319 // Memory (8-bit): 51
1320 // Memory (32-bit): 55
1321 //---------------------------------------------------------------------------
1322 
1323 static const basic::ZoneRule kZoneRulesChatham[] = {
1324  // Rule Chatham 1989 only - Oct Sun>=8 2:45s 1:00 -
1325  {
1326  -11 /*fromYearTiny*/,
1327  -11 /*toYearTiny*/,
1328  10 /*inMonth*/,
1329  7 /*onDayOfWeek*/,
1330  8 /*onDayOfMonth*/,
1331  11 /*atTimeCode*/,
1332  's' /*atTimeModifier*/,
1333  4 /*deltaCode*/,
1334  '-' /*letter*/,
1335  },
1336  // Rule Chatham 1990 2006 - Oct Sun>=1 2:45s 1:00 -
1337  {
1338  -10 /*fromYearTiny*/,
1339  6 /*toYearTiny*/,
1340  10 /*inMonth*/,
1341  7 /*onDayOfWeek*/,
1342  1 /*onDayOfMonth*/,
1343  11 /*atTimeCode*/,
1344  's' /*atTimeModifier*/,
1345  4 /*deltaCode*/,
1346  '-' /*letter*/,
1347  },
1348  // Rule Chatham 1990 2007 - Mar Sun>=15 2:45s 0 -
1349  {
1350  -10 /*fromYearTiny*/,
1351  7 /*toYearTiny*/,
1352  3 /*inMonth*/,
1353  7 /*onDayOfWeek*/,
1354  15 /*onDayOfMonth*/,
1355  11 /*atTimeCode*/,
1356  's' /*atTimeModifier*/,
1357  0 /*deltaCode*/,
1358  '-' /*letter*/,
1359  },
1360  // Rule Chatham 2007 max - Sep lastSun 2:45s 1:00 -
1361  {
1362  7 /*fromYearTiny*/,
1363  126 /*toYearTiny*/,
1364  9 /*inMonth*/,
1365  7 /*onDayOfWeek*/,
1366  0 /*onDayOfMonth*/,
1367  11 /*atTimeCode*/,
1368  's' /*atTimeModifier*/,
1369  4 /*deltaCode*/,
1370  '-' /*letter*/,
1371  },
1372  // Rule Chatham 2008 max - Apr Sun>=1 2:45s 0 -
1373  {
1374  8 /*fromYearTiny*/,
1375  126 /*toYearTiny*/,
1376  4 /*inMonth*/,
1377  7 /*onDayOfWeek*/,
1378  1 /*onDayOfMonth*/,
1379  11 /*atTimeCode*/,
1380  's' /*atTimeModifier*/,
1381  0 /*deltaCode*/,
1382  '-' /*letter*/,
1383  },
1384 
1385 };
1386 
1387 
1388 
1389 const basic::ZonePolicy kPolicyChatham = {
1390  5 /*numRules*/,
1391  kZoneRulesChatham /*rules*/,
1392  0 /* numLetters */,
1393  nullptr /* letters */,
1394 };
1395 
1396 //---------------------------------------------------------------------------
1397 // Policy name: Chile
1398 // Rules: 15
1399 // Memory (8-bit): 141
1400 // Memory (32-bit): 145
1401 //---------------------------------------------------------------------------
1402 
1403 static const basic::ZoneRule kZoneRulesChile[] = {
1404  // Rule Chile 1998 only - Sep 27 4:00u 1:00 -
1405  {
1406  -2 /*fromYearTiny*/,
1407  -2 /*toYearTiny*/,
1408  9 /*inMonth*/,
1409  0 /*onDayOfWeek*/,
1410  27 /*onDayOfMonth*/,
1411  16 /*atTimeCode*/,
1412  'u' /*atTimeModifier*/,
1413  4 /*deltaCode*/,
1414  '-' /*letter*/,
1415  },
1416  // Rule Chile 1999 only - Apr 4 3:00u 0 -
1417  {
1418  -1 /*fromYearTiny*/,
1419  -1 /*toYearTiny*/,
1420  4 /*inMonth*/,
1421  0 /*onDayOfWeek*/,
1422  4 /*onDayOfMonth*/,
1423  12 /*atTimeCode*/,
1424  'u' /*atTimeModifier*/,
1425  0 /*deltaCode*/,
1426  '-' /*letter*/,
1427  },
1428  // Rule Chile 1999 2010 - Oct Sun>=9 4:00u 1:00 -
1429  {
1430  -1 /*fromYearTiny*/,
1431  10 /*toYearTiny*/,
1432  10 /*inMonth*/,
1433  7 /*onDayOfWeek*/,
1434  9 /*onDayOfMonth*/,
1435  16 /*atTimeCode*/,
1436  'u' /*atTimeModifier*/,
1437  4 /*deltaCode*/,
1438  '-' /*letter*/,
1439  },
1440  // Rule Chile 2000 2007 - Mar Sun>=9 3:00u 0 -
1441  {
1442  0 /*fromYearTiny*/,
1443  7 /*toYearTiny*/,
1444  3 /*inMonth*/,
1445  7 /*onDayOfWeek*/,
1446  9 /*onDayOfMonth*/,
1447  12 /*atTimeCode*/,
1448  'u' /*atTimeModifier*/,
1449  0 /*deltaCode*/,
1450  '-' /*letter*/,
1451  },
1452  // Rule Chile 2008 only - Mar 30 3:00u 0 -
1453  {
1454  8 /*fromYearTiny*/,
1455  8 /*toYearTiny*/,
1456  3 /*inMonth*/,
1457  0 /*onDayOfWeek*/,
1458  30 /*onDayOfMonth*/,
1459  12 /*atTimeCode*/,
1460  'u' /*atTimeModifier*/,
1461  0 /*deltaCode*/,
1462  '-' /*letter*/,
1463  },
1464  // Rule Chile 2009 only - Mar Sun>=9 3:00u 0 -
1465  {
1466  9 /*fromYearTiny*/,
1467  9 /*toYearTiny*/,
1468  3 /*inMonth*/,
1469  7 /*onDayOfWeek*/,
1470  9 /*onDayOfMonth*/,
1471  12 /*atTimeCode*/,
1472  'u' /*atTimeModifier*/,
1473  0 /*deltaCode*/,
1474  '-' /*letter*/,
1475  },
1476  // Rule Chile 2010 only - Apr Sun>=1 3:00u 0 -
1477  {
1478  10 /*fromYearTiny*/,
1479  10 /*toYearTiny*/,
1480  4 /*inMonth*/,
1481  7 /*onDayOfWeek*/,
1482  1 /*onDayOfMonth*/,
1483  12 /*atTimeCode*/,
1484  'u' /*atTimeModifier*/,
1485  0 /*deltaCode*/,
1486  '-' /*letter*/,
1487  },
1488  // Rule Chile 2011 only - May Sun>=2 3:00u 0 -
1489  {
1490  11 /*fromYearTiny*/,
1491  11 /*toYearTiny*/,
1492  5 /*inMonth*/,
1493  7 /*onDayOfWeek*/,
1494  2 /*onDayOfMonth*/,
1495  12 /*atTimeCode*/,
1496  'u' /*atTimeModifier*/,
1497  0 /*deltaCode*/,
1498  '-' /*letter*/,
1499  },
1500  // Rule Chile 2011 only - Aug Sun>=16 4:00u 1:00 -
1501  {
1502  11 /*fromYearTiny*/,
1503  11 /*toYearTiny*/,
1504  8 /*inMonth*/,
1505  7 /*onDayOfWeek*/,
1506  16 /*onDayOfMonth*/,
1507  16 /*atTimeCode*/,
1508  'u' /*atTimeModifier*/,
1509  4 /*deltaCode*/,
1510  '-' /*letter*/,
1511  },
1512  // Rule Chile 2012 2014 - Apr Sun>=23 3:00u 0 -
1513  {
1514  12 /*fromYearTiny*/,
1515  14 /*toYearTiny*/,
1516  4 /*inMonth*/,
1517  7 /*onDayOfWeek*/,
1518  23 /*onDayOfMonth*/,
1519  12 /*atTimeCode*/,
1520  'u' /*atTimeModifier*/,
1521  0 /*deltaCode*/,
1522  '-' /*letter*/,
1523  },
1524  // Rule Chile 2012 2014 - Sep Sun>=2 4:00u 1:00 -
1525  {
1526  12 /*fromYearTiny*/,
1527  14 /*toYearTiny*/,
1528  9 /*inMonth*/,
1529  7 /*onDayOfWeek*/,
1530  2 /*onDayOfMonth*/,
1531  16 /*atTimeCode*/,
1532  'u' /*atTimeModifier*/,
1533  4 /*deltaCode*/,
1534  '-' /*letter*/,
1535  },
1536  // Rule Chile 2016 2018 - May Sun>=9 3:00u 0 -
1537  {
1538  16 /*fromYearTiny*/,
1539  18 /*toYearTiny*/,
1540  5 /*inMonth*/,
1541  7 /*onDayOfWeek*/,
1542  9 /*onDayOfMonth*/,
1543  12 /*atTimeCode*/,
1544  'u' /*atTimeModifier*/,
1545  0 /*deltaCode*/,
1546  '-' /*letter*/,
1547  },
1548  // Rule Chile 2016 2018 - Aug Sun>=9 4:00u 1:00 -
1549  {
1550  16 /*fromYearTiny*/,
1551  18 /*toYearTiny*/,
1552  8 /*inMonth*/,
1553  7 /*onDayOfWeek*/,
1554  9 /*onDayOfMonth*/,
1555  16 /*atTimeCode*/,
1556  'u' /*atTimeModifier*/,
1557  4 /*deltaCode*/,
1558  '-' /*letter*/,
1559  },
1560  // Rule Chile 2019 max - Apr Sun>=2 3:00u 0 -
1561  {
1562  19 /*fromYearTiny*/,
1563  126 /*toYearTiny*/,
1564  4 /*inMonth*/,
1565  7 /*onDayOfWeek*/,
1566  2 /*onDayOfMonth*/,
1567  12 /*atTimeCode*/,
1568  'u' /*atTimeModifier*/,
1569  0 /*deltaCode*/,
1570  '-' /*letter*/,
1571  },
1572  // Rule Chile 2019 max - Sep Sun>=2 4:00u 1:00 -
1573  {
1574  19 /*fromYearTiny*/,
1575  126 /*toYearTiny*/,
1576  9 /*inMonth*/,
1577  7 /*onDayOfWeek*/,
1578  2 /*onDayOfMonth*/,
1579  16 /*atTimeCode*/,
1580  'u' /*atTimeModifier*/,
1581  4 /*deltaCode*/,
1582  '-' /*letter*/,
1583  },
1584 
1585 };
1586 
1587 
1588 
1589 const basic::ZonePolicy kPolicyChile = {
1590  15 /*numRules*/,
1591  kZoneRulesChile /*rules*/,
1592  0 /* numLetters */,
1593  nullptr /* letters */,
1594 };
1595 
1596 //---------------------------------------------------------------------------
1597 // Policy name: Cook
1598 // Rules: 1
1599 // Memory (8-bit): 15
1600 // Memory (32-bit): 19
1601 //---------------------------------------------------------------------------
1602 
1603 static const basic::ZoneRule kZoneRulesCook[] = {
1604  // Rule Cook 1979 1991 - Mar Sun>=1 0:00 0 -
1605  {
1606  -21 /*fromYearTiny*/,
1607  -9 /*toYearTiny*/,
1608  3 /*inMonth*/,
1609  7 /*onDayOfWeek*/,
1610  1 /*onDayOfMonth*/,
1611  0 /*atTimeCode*/,
1612  'w' /*atTimeModifier*/,
1613  0 /*deltaCode*/,
1614  '-' /*letter*/,
1615  },
1616 
1617 };
1618 
1619 
1620 
1621 const basic::ZonePolicy kPolicyCook = {
1622  1 /*numRules*/,
1623  kZoneRulesCook /*rules*/,
1624  0 /* numLetters */,
1625  nullptr /* letters */,
1626 };
1627 
1628 //---------------------------------------------------------------------------
1629 // Policy name: Cuba
1630 // Rules: 14
1631 // Memory (8-bit): 132
1632 // Memory (32-bit): 136
1633 //---------------------------------------------------------------------------
1634 
1635 static const basic::ZoneRule kZoneRulesCuba[] = {
1636  // Rule Cuba 1997 only - Oct 12 0:00s 0 S
1637  {
1638  -3 /*fromYearTiny*/,
1639  -3 /*toYearTiny*/,
1640  10 /*inMonth*/,
1641  0 /*onDayOfWeek*/,
1642  12 /*onDayOfMonth*/,
1643  0 /*atTimeCode*/,
1644  's' /*atTimeModifier*/,
1645  0 /*deltaCode*/,
1646  'S' /*letter*/,
1647  },
1648  // Rule Cuba 1998 1999 - Mar lastSun 0:00s 1:00 D
1649  {
1650  -2 /*fromYearTiny*/,
1651  -1 /*toYearTiny*/,
1652  3 /*inMonth*/,
1653  7 /*onDayOfWeek*/,
1654  0 /*onDayOfMonth*/,
1655  0 /*atTimeCode*/,
1656  's' /*atTimeModifier*/,
1657  4 /*deltaCode*/,
1658  'D' /*letter*/,
1659  },
1660  // Rule Cuba 1998 2003 - Oct lastSun 0:00s 0 S
1661  {
1662  -2 /*fromYearTiny*/,
1663  3 /*toYearTiny*/,
1664  10 /*inMonth*/,
1665  7 /*onDayOfWeek*/,
1666  0 /*onDayOfMonth*/,
1667  0 /*atTimeCode*/,
1668  's' /*atTimeModifier*/,
1669  0 /*deltaCode*/,
1670  'S' /*letter*/,
1671  },
1672  // Rule Cuba 2000 2003 - Apr Sun>=1 0:00s 1:00 D
1673  {
1674  0 /*fromYearTiny*/,
1675  3 /*toYearTiny*/,
1676  4 /*inMonth*/,
1677  7 /*onDayOfWeek*/,
1678  1 /*onDayOfMonth*/,
1679  0 /*atTimeCode*/,
1680  's' /*atTimeModifier*/,
1681  4 /*deltaCode*/,
1682  'D' /*letter*/,
1683  },
1684  // Rule Cuba 2004 only - Mar lastSun 0:00s 1:00 D
1685  {
1686  4 /*fromYearTiny*/,
1687  4 /*toYearTiny*/,
1688  3 /*inMonth*/,
1689  7 /*onDayOfWeek*/,
1690  0 /*onDayOfMonth*/,
1691  0 /*atTimeCode*/,
1692  's' /*atTimeModifier*/,
1693  4 /*deltaCode*/,
1694  'D' /*letter*/,
1695  },
1696  // Rule Cuba 2006 2010 - Oct lastSun 0:00s 0 S
1697  {
1698  6 /*fromYearTiny*/,
1699  10 /*toYearTiny*/,
1700  10 /*inMonth*/,
1701  7 /*onDayOfWeek*/,
1702  0 /*onDayOfMonth*/,
1703  0 /*atTimeCode*/,
1704  's' /*atTimeModifier*/,
1705  0 /*deltaCode*/,
1706  'S' /*letter*/,
1707  },
1708  // Rule Cuba 2007 only - Mar Sun>=8 0:00s 1:00 D
1709  {
1710  7 /*fromYearTiny*/,
1711  7 /*toYearTiny*/,
1712  3 /*inMonth*/,
1713  7 /*onDayOfWeek*/,
1714  8 /*onDayOfMonth*/,
1715  0 /*atTimeCode*/,
1716  's' /*atTimeModifier*/,
1717  4 /*deltaCode*/,
1718  'D' /*letter*/,
1719  },
1720  // Rule Cuba 2008 only - Mar Sun>=15 0:00s 1:00 D
1721  {
1722  8 /*fromYearTiny*/,
1723  8 /*toYearTiny*/,
1724  3 /*inMonth*/,
1725  7 /*onDayOfWeek*/,
1726  15 /*onDayOfMonth*/,
1727  0 /*atTimeCode*/,
1728  's' /*atTimeModifier*/,
1729  4 /*deltaCode*/,
1730  'D' /*letter*/,
1731  },
1732  // Rule Cuba 2009 2010 - Mar Sun>=8 0:00s 1:00 D
1733  {
1734  9 /*fromYearTiny*/,
1735  10 /*toYearTiny*/,
1736  3 /*inMonth*/,
1737  7 /*onDayOfWeek*/,
1738  8 /*onDayOfMonth*/,
1739  0 /*atTimeCode*/,
1740  's' /*atTimeModifier*/,
1741  4 /*deltaCode*/,
1742  'D' /*letter*/,
1743  },
1744  // Rule Cuba 2011 only - Mar Sun>=15 0:00s 1:00 D
1745  {
1746  11 /*fromYearTiny*/,
1747  11 /*toYearTiny*/,
1748  3 /*inMonth*/,
1749  7 /*onDayOfWeek*/,
1750  15 /*onDayOfMonth*/,
1751  0 /*atTimeCode*/,
1752  's' /*atTimeModifier*/,
1753  4 /*deltaCode*/,
1754  'D' /*letter*/,
1755  },
1756  // Rule Cuba 2011 only - Nov 13 0:00s 0 S
1757  {
1758  11 /*fromYearTiny*/,
1759  11 /*toYearTiny*/,
1760  11 /*inMonth*/,
1761  0 /*onDayOfWeek*/,
1762  13 /*onDayOfMonth*/,
1763  0 /*atTimeCode*/,
1764  's' /*atTimeModifier*/,
1765  0 /*deltaCode*/,
1766  'S' /*letter*/,
1767  },
1768  // Rule Cuba 2012 only - Apr 1 0:00s 1:00 D
1769  {
1770  12 /*fromYearTiny*/,
1771  12 /*toYearTiny*/,
1772  4 /*inMonth*/,
1773  0 /*onDayOfWeek*/,
1774  1 /*onDayOfMonth*/,
1775  0 /*atTimeCode*/,
1776  's' /*atTimeModifier*/,
1777  4 /*deltaCode*/,
1778  'D' /*letter*/,
1779  },
1780  // Rule Cuba 2012 max - Nov Sun>=1 0:00s 0 S
1781  {
1782  12 /*fromYearTiny*/,
1783  126 /*toYearTiny*/,
1784  11 /*inMonth*/,
1785  7 /*onDayOfWeek*/,
1786  1 /*onDayOfMonth*/,
1787  0 /*atTimeCode*/,
1788  's' /*atTimeModifier*/,
1789  0 /*deltaCode*/,
1790  'S' /*letter*/,
1791  },
1792  // Rule Cuba 2013 max - Mar Sun>=8 0:00s 1:00 D
1793  {
1794  13 /*fromYearTiny*/,
1795  126 /*toYearTiny*/,
1796  3 /*inMonth*/,
1797  7 /*onDayOfWeek*/,
1798  8 /*onDayOfMonth*/,
1799  0 /*atTimeCode*/,
1800  's' /*atTimeModifier*/,
1801  4 /*deltaCode*/,
1802  'D' /*letter*/,
1803  },
1804 
1805 };
1806 
1807 
1808 
1809 const basic::ZonePolicy kPolicyCuba = {
1810  14 /*numRules*/,
1811  kZoneRulesCuba /*rules*/,
1812  0 /* numLetters */,
1813  nullptr /* letters */,
1814 };
1815 
1816 //---------------------------------------------------------------------------
1817 // Policy name: Dhaka
1818 // Rules: 3
1819 // Memory (8-bit): 33
1820 // Memory (32-bit): 37
1821 //---------------------------------------------------------------------------
1822 
1823 static const basic::ZoneRule kZoneRulesDhaka[] = {
1824  // Anchor: Rule Dhaka 2009 only - Dec 31 24:00 0 -
1825  {
1826  -127 /*fromYearTiny*/,
1827  -127 /*toYearTiny*/,
1828  1 /*inMonth*/,
1829  0 /*onDayOfWeek*/,
1830  1 /*onDayOfMonth*/,
1831  0 /*atTimeCode*/,
1832  'w' /*atTimeModifier*/,
1833  0 /*deltaCode*/,
1834  '-' /*letter*/,
1835  },
1836  // Rule Dhaka 2009 only - Jun 19 23:00 1:00 -
1837  {
1838  9 /*fromYearTiny*/,
1839  9 /*toYearTiny*/,
1840  6 /*inMonth*/,
1841  0 /*onDayOfWeek*/,
1842  19 /*onDayOfMonth*/,
1843  92 /*atTimeCode*/,
1844  'w' /*atTimeModifier*/,
1845  4 /*deltaCode*/,
1846  '-' /*letter*/,
1847  },
1848  // Rule Dhaka 2009 only - Dec 31 24:00 0 -
1849  {
1850  9 /*fromYearTiny*/,
1851  9 /*toYearTiny*/,
1852  12 /*inMonth*/,
1853  0 /*onDayOfWeek*/,
1854  31 /*onDayOfMonth*/,
1855  96 /*atTimeCode*/,
1856  'w' /*atTimeModifier*/,
1857  0 /*deltaCode*/,
1858  '-' /*letter*/,
1859  },
1860 
1861 };
1862 
1863 
1864 
1865 const basic::ZonePolicy kPolicyDhaka = {
1866  3 /*numRules*/,
1867  kZoneRulesDhaka /*rules*/,
1868  0 /* numLetters */,
1869  nullptr /* letters */,
1870 };
1871 
1872 //---------------------------------------------------------------------------
1873 // Policy name: EU
1874 // Rules: 3
1875 // Memory (8-bit): 33
1876 // Memory (32-bit): 37
1877 //---------------------------------------------------------------------------
1878 
1879 static const basic::ZoneRule kZoneRulesEU[] = {
1880  // Rule EU 1979 1995 - Sep lastSun 1:00u 0 -
1881  {
1882  -21 /*fromYearTiny*/,
1883  -5 /*toYearTiny*/,
1884  9 /*inMonth*/,
1885  7 /*onDayOfWeek*/,
1886  0 /*onDayOfMonth*/,
1887  4 /*atTimeCode*/,
1888  'u' /*atTimeModifier*/,
1889  0 /*deltaCode*/,
1890  '-' /*letter*/,
1891  },
1892  // Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
1893  {
1894  -19 /*fromYearTiny*/,
1895  126 /*toYearTiny*/,
1896  3 /*inMonth*/,
1897  7 /*onDayOfWeek*/,
1898  0 /*onDayOfMonth*/,
1899  4 /*atTimeCode*/,
1900  'u' /*atTimeModifier*/,
1901  4 /*deltaCode*/,
1902  'S' /*letter*/,
1903  },
1904  // Rule EU 1996 max - Oct lastSun 1:00u 0 -
1905  {
1906  -4 /*fromYearTiny*/,
1907  126 /*toYearTiny*/,
1908  10 /*inMonth*/,
1909  7 /*onDayOfWeek*/,
1910  0 /*onDayOfMonth*/,
1911  4 /*atTimeCode*/,
1912  'u' /*atTimeModifier*/,
1913  0 /*deltaCode*/,
1914  '-' /*letter*/,
1915  },
1916 
1917 };
1918 
1919 
1920 
1921 const basic::ZonePolicy kPolicyEU = {
1922  3 /*numRules*/,
1923  kZoneRulesEU /*rules*/,
1924  0 /* numLetters */,
1925  nullptr /* letters */,
1926 };
1927 
1928 //---------------------------------------------------------------------------
1929 // Policy name: EUAsia
1930 // Rules: 3
1931 // Memory (8-bit): 33
1932 // Memory (32-bit): 37
1933 //---------------------------------------------------------------------------
1934 
1935 static const basic::ZoneRule kZoneRulesEUAsia[] = {
1936  // Rule EUAsia 1981 max - Mar lastSun 1:00u 1:00 S
1937  {
1938  -19 /*fromYearTiny*/,
1939  126 /*toYearTiny*/,
1940  3 /*inMonth*/,
1941  7 /*onDayOfWeek*/,
1942  0 /*onDayOfMonth*/,
1943  4 /*atTimeCode*/,
1944  'u' /*atTimeModifier*/,
1945  4 /*deltaCode*/,
1946  'S' /*letter*/,
1947  },
1948  // Rule EUAsia 1979 1995 - Sep lastSun 1:00u 0 -
1949  {
1950  -21 /*fromYearTiny*/,
1951  -5 /*toYearTiny*/,
1952  9 /*inMonth*/,
1953  7 /*onDayOfWeek*/,
1954  0 /*onDayOfMonth*/,
1955  4 /*atTimeCode*/,
1956  'u' /*atTimeModifier*/,
1957  0 /*deltaCode*/,
1958  '-' /*letter*/,
1959  },
1960  // Rule EUAsia 1996 max - Oct lastSun 1:00u 0 -
1961  {
1962  -4 /*fromYearTiny*/,
1963  126 /*toYearTiny*/,
1964  10 /*inMonth*/,
1965  7 /*onDayOfWeek*/,
1966  0 /*onDayOfMonth*/,
1967  4 /*atTimeCode*/,
1968  'u' /*atTimeModifier*/,
1969  0 /*deltaCode*/,
1970  '-' /*letter*/,
1971  },
1972 
1973 };
1974 
1975 
1976 
1977 const basic::ZonePolicy kPolicyEUAsia = {
1978  3 /*numRules*/,
1979  kZoneRulesEUAsia /*rules*/,
1980  0 /* numLetters */,
1981  nullptr /* letters */,
1982 };
1983 
1984 //---------------------------------------------------------------------------
1985 // Policy name: Ecuador
1986 // Rules: 1
1987 // Memory (8-bit): 15
1988 // Memory (32-bit): 19
1989 //---------------------------------------------------------------------------
1990 
1991 static const basic::ZoneRule kZoneRulesEcuador[] = {
1992  // Rule Ecuador 1993 only - Feb 5 0:00 0 -
1993  {
1994  -7 /*fromYearTiny*/,
1995  -7 /*toYearTiny*/,
1996  2 /*inMonth*/,
1997  0 /*onDayOfWeek*/,
1998  5 /*onDayOfMonth*/,
1999  0 /*atTimeCode*/,
2000  'w' /*atTimeModifier*/,
2001  0 /*deltaCode*/,
2002  '-' /*letter*/,
2003  },
2004 
2005 };
2006 
2007 
2008 
2009 const basic::ZonePolicy kPolicyEcuador = {
2010  1 /*numRules*/,
2011  kZoneRulesEcuador /*rules*/,
2012  0 /* numLetters */,
2013  nullptr /* letters */,
2014 };
2015 
2016 //---------------------------------------------------------------------------
2017 // Policy name: Eire
2018 // Rules: 3
2019 // Memory (8-bit): 33
2020 // Memory (32-bit): 37
2021 //---------------------------------------------------------------------------
2022 
2023 static const basic::ZoneRule kZoneRulesEire[] = {
2024  // Rule Eire 1981 max - Mar lastSun 1:00u 0 -
2025  {
2026  -19 /*fromYearTiny*/,
2027  126 /*toYearTiny*/,
2028  3 /*inMonth*/,
2029  7 /*onDayOfWeek*/,
2030  0 /*onDayOfMonth*/,
2031  4 /*atTimeCode*/,
2032  'u' /*atTimeModifier*/,
2033  0 /*deltaCode*/,
2034  '-' /*letter*/,
2035  },
2036  // Rule Eire 1990 1995 - Oct Sun>=22 1:00u -1:00 -
2037  {
2038  -10 /*fromYearTiny*/,
2039  -5 /*toYearTiny*/,
2040  10 /*inMonth*/,
2041  7 /*onDayOfWeek*/,
2042  22 /*onDayOfMonth*/,
2043  4 /*atTimeCode*/,
2044  'u' /*atTimeModifier*/,
2045  -4 /*deltaCode*/,
2046  '-' /*letter*/,
2047  },
2048  // Rule Eire 1996 max - Oct lastSun 1:00u -1:00 -
2049  {
2050  -4 /*fromYearTiny*/,
2051  126 /*toYearTiny*/,
2052  10 /*inMonth*/,
2053  7 /*onDayOfWeek*/,
2054  0 /*onDayOfMonth*/,
2055  4 /*atTimeCode*/,
2056  'u' /*atTimeModifier*/,
2057  -4 /*deltaCode*/,
2058  '-' /*letter*/,
2059  },
2060 
2061 };
2062 
2063 
2064 
2065 const basic::ZonePolicy kPolicyEire = {
2066  3 /*numRules*/,
2067  kZoneRulesEire /*rules*/,
2068  0 /* numLetters */,
2069  nullptr /* letters */,
2070 };
2071 
2072 //---------------------------------------------------------------------------
2073 // Policy name: Fiji
2074 // Rules: 10
2075 // Memory (8-bit): 96
2076 // Memory (32-bit): 100
2077 //---------------------------------------------------------------------------
2078 
2079 static const basic::ZoneRule kZoneRulesFiji[] = {
2080  // Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 -
2081  {
2082  -2 /*fromYearTiny*/,
2083  -1 /*toYearTiny*/,
2084  11 /*inMonth*/,
2085  7 /*onDayOfWeek*/,
2086  1 /*onDayOfMonth*/,
2087  8 /*atTimeCode*/,
2088  'w' /*atTimeModifier*/,
2089  4 /*deltaCode*/,
2090  '-' /*letter*/,
2091  },
2092  // Rule Fiji 1999 2000 - Feb lastSun 3:00 0 -
2093  {
2094  -1 /*fromYearTiny*/,
2095  0 /*toYearTiny*/,
2096  2 /*inMonth*/,
2097  7 /*onDayOfWeek*/,
2098  0 /*onDayOfMonth*/,
2099  12 /*atTimeCode*/,
2100  'w' /*atTimeModifier*/,
2101  0 /*deltaCode*/,
2102  '-' /*letter*/,
2103  },
2104  // Rule Fiji 2009 only - Nov 29 2:00 1:00 -
2105  {
2106  9 /*fromYearTiny*/,
2107  9 /*toYearTiny*/,
2108  11 /*inMonth*/,
2109  0 /*onDayOfWeek*/,
2110  29 /*onDayOfMonth*/,
2111  8 /*atTimeCode*/,
2112  'w' /*atTimeModifier*/,
2113  4 /*deltaCode*/,
2114  '-' /*letter*/,
2115  },
2116  // Rule Fiji 2010 only - Mar lastSun 3:00 0 -
2117  {
2118  10 /*fromYearTiny*/,
2119  10 /*toYearTiny*/,
2120  3 /*inMonth*/,
2121  7 /*onDayOfWeek*/,
2122  0 /*onDayOfMonth*/,
2123  12 /*atTimeCode*/,
2124  'w' /*atTimeModifier*/,
2125  0 /*deltaCode*/,
2126  '-' /*letter*/,
2127  },
2128  // Rule Fiji 2010 2013 - Oct Sun>=21 2:00 1:00 -
2129  {
2130  10 /*fromYearTiny*/,
2131  13 /*toYearTiny*/,
2132  10 /*inMonth*/,
2133  7 /*onDayOfWeek*/,
2134  21 /*onDayOfMonth*/,
2135  8 /*atTimeCode*/,
2136  'w' /*atTimeModifier*/,
2137  4 /*deltaCode*/,
2138  '-' /*letter*/,
2139  },
2140  // Rule Fiji 2011 only - Mar Sun>=1 3:00 0 -
2141  {
2142  11 /*fromYearTiny*/,
2143  11 /*toYearTiny*/,
2144  3 /*inMonth*/,
2145  7 /*onDayOfWeek*/,
2146  1 /*onDayOfMonth*/,
2147  12 /*atTimeCode*/,
2148  'w' /*atTimeModifier*/,
2149  0 /*deltaCode*/,
2150  '-' /*letter*/,
2151  },
2152  // Rule Fiji 2012 2013 - Jan Sun>=18 3:00 0 -
2153  {
2154  12 /*fromYearTiny*/,
2155  13 /*toYearTiny*/,
2156  1 /*inMonth*/,
2157  7 /*onDayOfWeek*/,
2158  18 /*onDayOfMonth*/,
2159  12 /*atTimeCode*/,
2160  'w' /*atTimeModifier*/,
2161  0 /*deltaCode*/,
2162  '-' /*letter*/,
2163  },
2164  // Rule Fiji 2014 only - Jan Sun>=18 2:00 0 -
2165  {
2166  14 /*fromYearTiny*/,
2167  14 /*toYearTiny*/,
2168  1 /*inMonth*/,
2169  7 /*onDayOfWeek*/,
2170  18 /*onDayOfMonth*/,
2171  8 /*atTimeCode*/,
2172  'w' /*atTimeModifier*/,
2173  0 /*deltaCode*/,
2174  '-' /*letter*/,
2175  },
2176  // Rule Fiji 2014 max - Nov Sun>=1 2:00 1:00 -
2177  {
2178  14 /*fromYearTiny*/,
2179  126 /*toYearTiny*/,
2180  11 /*inMonth*/,
2181  7 /*onDayOfWeek*/,
2182  1 /*onDayOfMonth*/,
2183  8 /*atTimeCode*/,
2184  'w' /*atTimeModifier*/,
2185  4 /*deltaCode*/,
2186  '-' /*letter*/,
2187  },
2188  // Rule Fiji 2015 max - Jan Sun>=13 3:00 0 -
2189  {
2190  15 /*fromYearTiny*/,
2191  126 /*toYearTiny*/,
2192  1 /*inMonth*/,
2193  7 /*onDayOfWeek*/,
2194  13 /*onDayOfMonth*/,
2195  12 /*atTimeCode*/,
2196  'w' /*atTimeModifier*/,
2197  0 /*deltaCode*/,
2198  '-' /*letter*/,
2199  },
2200 
2201 };
2202 
2203 
2204 
2205 const basic::ZonePolicy kPolicyFiji = {
2206  10 /*numRules*/,
2207  kZoneRulesFiji /*rules*/,
2208  0 /* numLetters */,
2209  nullptr /* letters */,
2210 };
2211 
2212 //---------------------------------------------------------------------------
2213 // Policy name: Ghana
2214 // Rules: 1
2215 // Memory (8-bit): 15
2216 // Memory (32-bit): 19
2217 //---------------------------------------------------------------------------
2218 
2219 static const basic::ZoneRule kZoneRulesGhana[] = {
2220  // Rule Ghana 1920 1942 - Dec 31 0:00 0 -
2221  {
2222  -80 /*fromYearTiny*/,
2223  -58 /*toYearTiny*/,
2224  12 /*inMonth*/,
2225  0 /*onDayOfWeek*/,
2226  31 /*onDayOfMonth*/,
2227  0 /*atTimeCode*/,
2228  'w' /*atTimeModifier*/,
2229  0 /*deltaCode*/,
2230  '-' /*letter*/,
2231  },
2232 
2233 };
2234 
2235 
2236 
2237 const basic::ZonePolicy kPolicyGhana = {
2238  1 /*numRules*/,
2239  kZoneRulesGhana /*rules*/,
2240  0 /* numLetters */,
2241  nullptr /* letters */,
2242 };
2243 
2244 //---------------------------------------------------------------------------
2245 // Policy name: Guat
2246 // Rules: 3
2247 // Memory (8-bit): 33
2248 // Memory (32-bit): 37
2249 //---------------------------------------------------------------------------
2250 
2251 static const basic::ZoneRule kZoneRulesGuat[] = {
2252  // Rule Guat 1991 only - Sep 7 0:00 0 S
2253  {
2254  -9 /*fromYearTiny*/,
2255  -9 /*toYearTiny*/,
2256  9 /*inMonth*/,
2257  0 /*onDayOfWeek*/,
2258  7 /*onDayOfMonth*/,
2259  0 /*atTimeCode*/,
2260  'w' /*atTimeModifier*/,
2261  0 /*deltaCode*/,
2262  'S' /*letter*/,
2263  },
2264  // Rule Guat 2006 only - Apr 30 0:00 1:00 D
2265  {
2266  6 /*fromYearTiny*/,
2267  6 /*toYearTiny*/,
2268  4 /*inMonth*/,
2269  0 /*onDayOfWeek*/,
2270  30 /*onDayOfMonth*/,
2271  0 /*atTimeCode*/,
2272  'w' /*atTimeModifier*/,
2273  4 /*deltaCode*/,
2274  'D' /*letter*/,
2275  },
2276  // Rule Guat 2006 only - Oct 1 0:00 0 S
2277  {
2278  6 /*fromYearTiny*/,
2279  6 /*toYearTiny*/,
2280  10 /*inMonth*/,
2281  0 /*onDayOfWeek*/,
2282  1 /*onDayOfMonth*/,
2283  0 /*atTimeCode*/,
2284  'w' /*atTimeModifier*/,
2285  0 /*deltaCode*/,
2286  'S' /*letter*/,
2287  },
2288 
2289 };
2290 
2291 
2292 
2293 const basic::ZonePolicy kPolicyGuat = {
2294  3 /*numRules*/,
2295  kZoneRulesGuat /*rules*/,
2296  0 /* numLetters */,
2297  nullptr /* letters */,
2298 };
2299 
2300 //---------------------------------------------------------------------------
2301 // Policy name: HK
2302 // Rules: 1
2303 // Memory (8-bit): 15
2304 // Memory (32-bit): 19
2305 //---------------------------------------------------------------------------
2306 
2307 static const basic::ZoneRule kZoneRulesHK[] = {
2308  // Rule HK 1979 only - Oct Sun>=16 3:30 0 -
2309  {
2310  -21 /*fromYearTiny*/,
2311  -21 /*toYearTiny*/,
2312  10 /*inMonth*/,
2313  7 /*onDayOfWeek*/,
2314  16 /*onDayOfMonth*/,
2315  14 /*atTimeCode*/,
2316  'w' /*atTimeModifier*/,
2317  0 /*deltaCode*/,
2318  '-' /*letter*/,
2319  },
2320 
2321 };
2322 
2323 
2324 
2325 const basic::ZonePolicy kPolicyHK = {
2326  1 /*numRules*/,
2327  kZoneRulesHK /*rules*/,
2328  0 /* numLetters */,
2329  nullptr /* letters */,
2330 };
2331 
2332 //---------------------------------------------------------------------------
2333 // Policy name: Haiti
2334 // Rules: 7
2335 // Memory (8-bit): 69
2336 // Memory (32-bit): 73
2337 //---------------------------------------------------------------------------
2338 
2339 static const basic::ZoneRule kZoneRulesHaiti[] = {
2340  // Rule Haiti 1988 1997 - Oct lastSun 1:00s 0 S
2341  {
2342  -12 /*fromYearTiny*/,
2343  -3 /*toYearTiny*/,
2344  10 /*inMonth*/,
2345  7 /*onDayOfWeek*/,
2346  0 /*onDayOfMonth*/,
2347  4 /*atTimeCode*/,
2348  's' /*atTimeModifier*/,
2349  0 /*deltaCode*/,
2350  'S' /*letter*/,
2351  },
2352  // Rule Haiti 2005 2006 - Apr Sun>=1 0:00 1:00 D
2353  {
2354  5 /*fromYearTiny*/,
2355  6 /*toYearTiny*/,
2356  4 /*inMonth*/,
2357  7 /*onDayOfWeek*/,
2358  1 /*onDayOfMonth*/,
2359  0 /*atTimeCode*/,
2360  'w' /*atTimeModifier*/,
2361  4 /*deltaCode*/,
2362  'D' /*letter*/,
2363  },
2364  // Rule Haiti 2005 2006 - Oct lastSun 0:00 0 S
2365  {
2366  5 /*fromYearTiny*/,
2367  6 /*toYearTiny*/,
2368  10 /*inMonth*/,
2369  7 /*onDayOfWeek*/,
2370  0 /*onDayOfMonth*/,
2371  0 /*atTimeCode*/,
2372  'w' /*atTimeModifier*/,
2373  0 /*deltaCode*/,
2374  'S' /*letter*/,
2375  },
2376  // Rule Haiti 2012 2015 - Mar Sun>=8 2:00 1:00 D
2377  {
2378  12 /*fromYearTiny*/,
2379  15 /*toYearTiny*/,
2380  3 /*inMonth*/,
2381  7 /*onDayOfWeek*/,
2382  8 /*onDayOfMonth*/,
2383  8 /*atTimeCode*/,
2384  'w' /*atTimeModifier*/,
2385  4 /*deltaCode*/,
2386  'D' /*letter*/,
2387  },
2388  // Rule Haiti 2012 2015 - Nov Sun>=1 2:00 0 S
2389  {
2390  12 /*fromYearTiny*/,
2391  15 /*toYearTiny*/,
2392  11 /*inMonth*/,
2393  7 /*onDayOfWeek*/,
2394  1 /*onDayOfMonth*/,
2395  8 /*atTimeCode*/,
2396  'w' /*atTimeModifier*/,
2397  0 /*deltaCode*/,
2398  'S' /*letter*/,
2399  },
2400  // Rule Haiti 2017 max - Mar Sun>=8 2:00 1:00 D
2401  {
2402  17 /*fromYearTiny*/,
2403  126 /*toYearTiny*/,
2404  3 /*inMonth*/,
2405  7 /*onDayOfWeek*/,
2406  8 /*onDayOfMonth*/,
2407  8 /*atTimeCode*/,
2408  'w' /*atTimeModifier*/,
2409  4 /*deltaCode*/,
2410  'D' /*letter*/,
2411  },
2412  // Rule Haiti 2017 max - Nov Sun>=1 2:00 0 S
2413  {
2414  17 /*fromYearTiny*/,
2415  126 /*toYearTiny*/,
2416  11 /*inMonth*/,
2417  7 /*onDayOfWeek*/,
2418  1 /*onDayOfMonth*/,
2419  8 /*atTimeCode*/,
2420  'w' /*atTimeModifier*/,
2421  0 /*deltaCode*/,
2422  'S' /*letter*/,
2423  },
2424 
2425 };
2426 
2427 
2428 
2429 const basic::ZonePolicy kPolicyHaiti = {
2430  7 /*numRules*/,
2431  kZoneRulesHaiti /*rules*/,
2432  0 /* numLetters */,
2433  nullptr /* letters */,
2434 };
2435 
2436 //---------------------------------------------------------------------------
2437 // Policy name: Holiday
2438 // Rules: 1
2439 // Memory (8-bit): 15
2440 // Memory (32-bit): 19
2441 //---------------------------------------------------------------------------
2442 
2443 static const basic::ZoneRule kZoneRulesHoliday[] = {
2444  // Rule Holiday 1993 1994 - Mar Sun>=1 2:00s 0 S
2445  {
2446  -7 /*fromYearTiny*/,
2447  -6 /*toYearTiny*/,
2448  3 /*inMonth*/,
2449  7 /*onDayOfWeek*/,
2450  1 /*onDayOfMonth*/,
2451  8 /*atTimeCode*/,
2452  's' /*atTimeModifier*/,
2453  0 /*deltaCode*/,
2454  'S' /*letter*/,
2455  },
2456 
2457 };
2458 
2459 
2460 
2461 const basic::ZonePolicy kPolicyHoliday = {
2462  1 /*numRules*/,
2463  kZoneRulesHoliday /*rules*/,
2464  0 /* numLetters */,
2465  nullptr /* letters */,
2466 };
2467 
2468 //---------------------------------------------------------------------------
2469 // Policy name: Hond
2470 // Rules: 3
2471 // Memory (8-bit): 33
2472 // Memory (32-bit): 37
2473 //---------------------------------------------------------------------------
2474 
2475 static const basic::ZoneRule kZoneRulesHond[] = {
2476  // Rule Hond 1987 1988 - Sep lastSun 0:00 0 S
2477  {
2478  -13 /*fromYearTiny*/,
2479  -12 /*toYearTiny*/,
2480  9 /*inMonth*/,
2481  7 /*onDayOfWeek*/,
2482  0 /*onDayOfMonth*/,
2483  0 /*atTimeCode*/,
2484  'w' /*atTimeModifier*/,
2485  0 /*deltaCode*/,
2486  'S' /*letter*/,
2487  },
2488  // Rule Hond 2006 only - May Sun>=1 0:00 1:00 D
2489  {
2490  6 /*fromYearTiny*/,
2491  6 /*toYearTiny*/,
2492  5 /*inMonth*/,
2493  7 /*onDayOfWeek*/,
2494  1 /*onDayOfMonth*/,
2495  0 /*atTimeCode*/,
2496  'w' /*atTimeModifier*/,
2497  4 /*deltaCode*/,
2498  'D' /*letter*/,
2499  },
2500  // Rule Hond 2006 only - Aug Mon>=1 0:00 0 S
2501  {
2502  6 /*fromYearTiny*/,
2503  6 /*toYearTiny*/,
2504  8 /*inMonth*/,
2505  1 /*onDayOfWeek*/,
2506  1 /*onDayOfMonth*/,
2507  0 /*atTimeCode*/,
2508  'w' /*atTimeModifier*/,
2509  0 /*deltaCode*/,
2510  'S' /*letter*/,
2511  },
2512 
2513 };
2514 
2515 
2516 
2517 const basic::ZonePolicy kPolicyHond = {
2518  3 /*numRules*/,
2519  kZoneRulesHond /*rules*/,
2520  0 /* numLetters */,
2521  nullptr /* letters */,
2522 };
2523 
2524 //---------------------------------------------------------------------------
2525 // Policy name: Iran
2526 // Rules: 55
2527 // Memory (8-bit): 501
2528 // Memory (32-bit): 505
2529 //---------------------------------------------------------------------------
2530 
2531 static const basic::ZoneRule kZoneRulesIran[] = {
2532  // Rule Iran 1996 only - Sep 20 24:00 0 -
2533  {
2534  -4 /*fromYearTiny*/,
2535  -4 /*toYearTiny*/,
2536  9 /*inMonth*/,
2537  0 /*onDayOfWeek*/,
2538  20 /*onDayOfMonth*/,
2539  96 /*atTimeCode*/,
2540  'w' /*atTimeModifier*/,
2541  0 /*deltaCode*/,
2542  '-' /*letter*/,
2543  },
2544  // Rule Iran 1997 1999 - Mar 21 24:00 1:00 -
2545  {
2546  -3 /*fromYearTiny*/,
2547  -1 /*toYearTiny*/,
2548  3 /*inMonth*/,
2549  0 /*onDayOfWeek*/,
2550  21 /*onDayOfMonth*/,
2551  96 /*atTimeCode*/,
2552  'w' /*atTimeModifier*/,
2553  4 /*deltaCode*/,
2554  '-' /*letter*/,
2555  },
2556  // Rule Iran 1997 1999 - Sep 21 24:00 0 -
2557  {
2558  -3 /*fromYearTiny*/,
2559  -1 /*toYearTiny*/,
2560  9 /*inMonth*/,
2561  0 /*onDayOfWeek*/,
2562  21 /*onDayOfMonth*/,
2563  96 /*atTimeCode*/,
2564  'w' /*atTimeModifier*/,
2565  0 /*deltaCode*/,
2566  '-' /*letter*/,
2567  },
2568  // Rule Iran 2000 only - Mar 20 24:00 1:00 -
2569  {
2570  0 /*fromYearTiny*/,
2571  0 /*toYearTiny*/,
2572  3 /*inMonth*/,
2573  0 /*onDayOfWeek*/,
2574  20 /*onDayOfMonth*/,
2575  96 /*atTimeCode*/,
2576  'w' /*atTimeModifier*/,
2577  4 /*deltaCode*/,
2578  '-' /*letter*/,
2579  },
2580  // Rule Iran 2000 only - Sep 20 24:00 0 -
2581  {
2582  0 /*fromYearTiny*/,
2583  0 /*toYearTiny*/,
2584  9 /*inMonth*/,
2585  0 /*onDayOfWeek*/,
2586  20 /*onDayOfMonth*/,
2587  96 /*atTimeCode*/,
2588  'w' /*atTimeModifier*/,
2589  0 /*deltaCode*/,
2590  '-' /*letter*/,
2591  },
2592  // Rule Iran 2001 2003 - Mar 21 24:00 1:00 -
2593  {
2594  1 /*fromYearTiny*/,
2595  3 /*toYearTiny*/,
2596  3 /*inMonth*/,
2597  0 /*onDayOfWeek*/,
2598  21 /*onDayOfMonth*/,
2599  96 /*atTimeCode*/,
2600  'w' /*atTimeModifier*/,
2601  4 /*deltaCode*/,
2602  '-' /*letter*/,
2603  },
2604  // Rule Iran 2001 2003 - Sep 21 24:00 0 -
2605  {
2606  1 /*fromYearTiny*/,
2607  3 /*toYearTiny*/,
2608  9 /*inMonth*/,
2609  0 /*onDayOfWeek*/,
2610  21 /*onDayOfMonth*/,
2611  96 /*atTimeCode*/,
2612  'w' /*atTimeModifier*/,
2613  0 /*deltaCode*/,
2614  '-' /*letter*/,
2615  },
2616  // Rule Iran 2004 only - Mar 20 24:00 1:00 -
2617  {
2618  4 /*fromYearTiny*/,
2619  4 /*toYearTiny*/,
2620  3 /*inMonth*/,
2621  0 /*onDayOfWeek*/,
2622  20 /*onDayOfMonth*/,
2623  96 /*atTimeCode*/,
2624  'w' /*atTimeModifier*/,
2625  4 /*deltaCode*/,
2626  '-' /*letter*/,
2627  },
2628  // Rule Iran 2004 only - Sep 20 24:00 0 -
2629  {
2630  4 /*fromYearTiny*/,
2631  4 /*toYearTiny*/,
2632  9 /*inMonth*/,
2633  0 /*onDayOfWeek*/,
2634  20 /*onDayOfMonth*/,
2635  96 /*atTimeCode*/,
2636  'w' /*atTimeModifier*/,
2637  0 /*deltaCode*/,
2638  '-' /*letter*/,
2639  },
2640  // Rule Iran 2005 only - Mar 21 24:00 1:00 -
2641  {
2642  5 /*fromYearTiny*/,
2643  5 /*toYearTiny*/,
2644  3 /*inMonth*/,
2645  0 /*onDayOfWeek*/,
2646  21 /*onDayOfMonth*/,
2647  96 /*atTimeCode*/,
2648  'w' /*atTimeModifier*/,
2649  4 /*deltaCode*/,
2650  '-' /*letter*/,
2651  },
2652  // Rule Iran 2005 only - Sep 21 24:00 0 -
2653  {
2654  5 /*fromYearTiny*/,
2655  5 /*toYearTiny*/,
2656  9 /*inMonth*/,
2657  0 /*onDayOfWeek*/,
2658  21 /*onDayOfMonth*/,
2659  96 /*atTimeCode*/,
2660  'w' /*atTimeModifier*/,
2661  0 /*deltaCode*/,
2662  '-' /*letter*/,
2663  },
2664  // Rule Iran 2008 only - Mar 20 24:00 1:00 -
2665  {
2666  8 /*fromYearTiny*/,
2667  8 /*toYearTiny*/,
2668  3 /*inMonth*/,
2669  0 /*onDayOfWeek*/,
2670  20 /*onDayOfMonth*/,
2671  96 /*atTimeCode*/,
2672  'w' /*atTimeModifier*/,
2673  4 /*deltaCode*/,
2674  '-' /*letter*/,
2675  },
2676  // Rule Iran 2008 only - Sep 20 24:00 0 -
2677  {
2678  8 /*fromYearTiny*/,
2679  8 /*toYearTiny*/,
2680  9 /*inMonth*/,
2681  0 /*onDayOfWeek*/,
2682  20 /*onDayOfMonth*/,
2683  96 /*atTimeCode*/,
2684  'w' /*atTimeModifier*/,
2685  0 /*deltaCode*/,
2686  '-' /*letter*/,
2687  },
2688  // Rule Iran 2009 2011 - Mar 21 24:00 1:00 -
2689  {
2690  9 /*fromYearTiny*/,
2691  11 /*toYearTiny*/,
2692  3 /*inMonth*/,
2693  0 /*onDayOfWeek*/,
2694  21 /*onDayOfMonth*/,
2695  96 /*atTimeCode*/,
2696  'w' /*atTimeModifier*/,
2697  4 /*deltaCode*/,
2698  '-' /*letter*/,
2699  },
2700  // Rule Iran 2009 2011 - Sep 21 24:00 0 -
2701  {
2702  9 /*fromYearTiny*/,
2703  11 /*toYearTiny*/,
2704  9 /*inMonth*/,
2705  0 /*onDayOfWeek*/,
2706  21 /*onDayOfMonth*/,
2707  96 /*atTimeCode*/,
2708  'w' /*atTimeModifier*/,
2709  0 /*deltaCode*/,
2710  '-' /*letter*/,
2711  },
2712  // Rule Iran 2012 only - Mar 20 24:00 1:00 -
2713  {
2714  12 /*fromYearTiny*/,
2715  12 /*toYearTiny*/,
2716  3 /*inMonth*/,
2717  0 /*onDayOfWeek*/,
2718  20 /*onDayOfMonth*/,
2719  96 /*atTimeCode*/,
2720  'w' /*atTimeModifier*/,
2721  4 /*deltaCode*/,
2722  '-' /*letter*/,
2723  },
2724  // Rule Iran 2012 only - Sep 20 24:00 0 -
2725  {
2726  12 /*fromYearTiny*/,
2727  12 /*toYearTiny*/,
2728  9 /*inMonth*/,
2729  0 /*onDayOfWeek*/,
2730  20 /*onDayOfMonth*/,
2731  96 /*atTimeCode*/,
2732  'w' /*atTimeModifier*/,
2733  0 /*deltaCode*/,
2734  '-' /*letter*/,
2735  },
2736  // Rule Iran 2013 2015 - Mar 21 24:00 1:00 -
2737  {
2738  13 /*fromYearTiny*/,
2739  15 /*toYearTiny*/,
2740  3 /*inMonth*/,
2741  0 /*onDayOfWeek*/,
2742  21 /*onDayOfMonth*/,
2743  96 /*atTimeCode*/,
2744  'w' /*atTimeModifier*/,
2745  4 /*deltaCode*/,
2746  '-' /*letter*/,
2747  },
2748  // Rule Iran 2013 2015 - Sep 21 24:00 0 -
2749  {
2750  13 /*fromYearTiny*/,
2751  15 /*toYearTiny*/,
2752  9 /*inMonth*/,
2753  0 /*onDayOfWeek*/,
2754  21 /*onDayOfMonth*/,
2755  96 /*atTimeCode*/,
2756  'w' /*atTimeModifier*/,
2757  0 /*deltaCode*/,
2758  '-' /*letter*/,
2759  },
2760  // Rule Iran 2016 only - Mar 20 24:00 1:00 -
2761  {
2762  16 /*fromYearTiny*/,
2763  16 /*toYearTiny*/,
2764  3 /*inMonth*/,
2765  0 /*onDayOfWeek*/,
2766  20 /*onDayOfMonth*/,
2767  96 /*atTimeCode*/,
2768  'w' /*atTimeModifier*/,
2769  4 /*deltaCode*/,
2770  '-' /*letter*/,
2771  },
2772  // Rule Iran 2016 only - Sep 20 24:00 0 -
2773  {
2774  16 /*fromYearTiny*/,
2775  16 /*toYearTiny*/,
2776  9 /*inMonth*/,
2777  0 /*onDayOfWeek*/,
2778  20 /*onDayOfMonth*/,
2779  96 /*atTimeCode*/,
2780  'w' /*atTimeModifier*/,
2781  0 /*deltaCode*/,
2782  '-' /*letter*/,
2783  },
2784  // Rule Iran 2017 2019 - Mar 21 24:00 1:00 -
2785  {
2786  17 /*fromYearTiny*/,
2787  19 /*toYearTiny*/,
2788  3 /*inMonth*/,
2789  0 /*onDayOfWeek*/,
2790  21 /*onDayOfMonth*/,
2791  96 /*atTimeCode*/,
2792  'w' /*atTimeModifier*/,
2793  4 /*deltaCode*/,
2794  '-' /*letter*/,
2795  },
2796  // Rule Iran 2017 2019 - Sep 21 24:00 0 -
2797  {
2798  17 /*fromYearTiny*/,
2799  19 /*toYearTiny*/,
2800  9 /*inMonth*/,
2801  0 /*onDayOfWeek*/,
2802  21 /*onDayOfMonth*/,
2803  96 /*atTimeCode*/,
2804  'w' /*atTimeModifier*/,
2805  0 /*deltaCode*/,
2806  '-' /*letter*/,
2807  },
2808  // Rule Iran 2020 only - Mar 20 24:00 1:00 -
2809  {
2810  20 /*fromYearTiny*/,
2811  20 /*toYearTiny*/,
2812  3 /*inMonth*/,
2813  0 /*onDayOfWeek*/,
2814  20 /*onDayOfMonth*/,
2815  96 /*atTimeCode*/,
2816  'w' /*atTimeModifier*/,
2817  4 /*deltaCode*/,
2818  '-' /*letter*/,
2819  },
2820  // Rule Iran 2020 only - Sep 20 24:00 0 -
2821  {
2822  20 /*fromYearTiny*/,
2823  20 /*toYearTiny*/,
2824  9 /*inMonth*/,
2825  0 /*onDayOfWeek*/,
2826  20 /*onDayOfMonth*/,
2827  96 /*atTimeCode*/,
2828  'w' /*atTimeModifier*/,
2829  0 /*deltaCode*/,
2830  '-' /*letter*/,
2831  },
2832  // Rule Iran 2021 2023 - Mar 21 24:00 1:00 -
2833  {
2834  21 /*fromYearTiny*/,
2835  23 /*toYearTiny*/,
2836  3 /*inMonth*/,
2837  0 /*onDayOfWeek*/,
2838  21 /*onDayOfMonth*/,
2839  96 /*atTimeCode*/,
2840  'w' /*atTimeModifier*/,
2841  4 /*deltaCode*/,
2842  '-' /*letter*/,
2843  },
2844  // Rule Iran 2021 2023 - Sep 21 24:00 0 -
2845  {
2846  21 /*fromYearTiny*/,
2847  23 /*toYearTiny*/,
2848  9 /*inMonth*/,
2849  0 /*onDayOfWeek*/,
2850  21 /*onDayOfMonth*/,
2851  96 /*atTimeCode*/,
2852  'w' /*atTimeModifier*/,
2853  0 /*deltaCode*/,
2854  '-' /*letter*/,
2855  },
2856  // Rule Iran 2024 only - Mar 20 24:00 1:00 -
2857  {
2858  24 /*fromYearTiny*/,
2859  24 /*toYearTiny*/,
2860  3 /*inMonth*/,
2861  0 /*onDayOfWeek*/,
2862  20 /*onDayOfMonth*/,
2863  96 /*atTimeCode*/,
2864  'w' /*atTimeModifier*/,
2865  4 /*deltaCode*/,
2866  '-' /*letter*/,
2867  },
2868  // Rule Iran 2024 only - Sep 20 24:00 0 -
2869  {
2870  24 /*fromYearTiny*/,
2871  24 /*toYearTiny*/,
2872  9 /*inMonth*/,
2873  0 /*onDayOfWeek*/,
2874  20 /*onDayOfMonth*/,
2875  96 /*atTimeCode*/,
2876  'w' /*atTimeModifier*/,
2877  0 /*deltaCode*/,
2878  '-' /*letter*/,
2879  },
2880  // Rule Iran 2025 2027 - Mar 21 24:00 1:00 -
2881  {
2882  25 /*fromYearTiny*/,
2883  27 /*toYearTiny*/,
2884  3 /*inMonth*/,
2885  0 /*onDayOfWeek*/,
2886  21 /*onDayOfMonth*/,
2887  96 /*atTimeCode*/,
2888  'w' /*atTimeModifier*/,
2889  4 /*deltaCode*/,
2890  '-' /*letter*/,
2891  },
2892  // Rule Iran 2025 2027 - Sep 21 24:00 0 -
2893  {
2894  25 /*fromYearTiny*/,
2895  27 /*toYearTiny*/,
2896  9 /*inMonth*/,
2897  0 /*onDayOfWeek*/,
2898  21 /*onDayOfMonth*/,
2899  96 /*atTimeCode*/,
2900  'w' /*atTimeModifier*/,
2901  0 /*deltaCode*/,
2902  '-' /*letter*/,
2903  },
2904  // Rule Iran 2028 2029 - Mar 20 24:00 1:00 -
2905  {
2906  28 /*fromYearTiny*/,
2907  29 /*toYearTiny*/,
2908  3 /*inMonth*/,
2909  0 /*onDayOfWeek*/,
2910  20 /*onDayOfMonth*/,
2911  96 /*atTimeCode*/,
2912  'w' /*atTimeModifier*/,
2913  4 /*deltaCode*/,
2914  '-' /*letter*/,
2915  },
2916  // Rule Iran 2028 2029 - Sep 20 24:00 0 -
2917  {
2918  28 /*fromYearTiny*/,
2919  29 /*toYearTiny*/,
2920  9 /*inMonth*/,
2921  0 /*onDayOfWeek*/,
2922  20 /*onDayOfMonth*/,
2923  96 /*atTimeCode*/,
2924  'w' /*atTimeModifier*/,
2925  0 /*deltaCode*/,
2926  '-' /*letter*/,
2927  },
2928  // Rule Iran 2030 2031 - Mar 21 24:00 1:00 -
2929  {
2930  30 /*fromYearTiny*/,
2931  31 /*toYearTiny*/,
2932  3 /*inMonth*/,
2933  0 /*onDayOfWeek*/,
2934  21 /*onDayOfMonth*/,
2935  96 /*atTimeCode*/,
2936  'w' /*atTimeModifier*/,
2937  4 /*deltaCode*/,
2938  '-' /*letter*/,
2939  },
2940  // Rule Iran 2030 2031 - Sep 21 24:00 0 -
2941  {
2942  30 /*fromYearTiny*/,
2943  31 /*toYearTiny*/,
2944  9 /*inMonth*/,
2945  0 /*onDayOfWeek*/,
2946  21 /*onDayOfMonth*/,
2947  96 /*atTimeCode*/,
2948  'w' /*atTimeModifier*/,
2949  0 /*deltaCode*/,
2950  '-' /*letter*/,
2951  },
2952  // Rule Iran 2032 2033 - Mar 20 24:00 1:00 -
2953  {
2954  32 /*fromYearTiny*/,
2955  33 /*toYearTiny*/,
2956  3 /*inMonth*/,
2957  0 /*onDayOfWeek*/,
2958  20 /*onDayOfMonth*/,
2959  96 /*atTimeCode*/,
2960  'w' /*atTimeModifier*/,
2961  4 /*deltaCode*/,
2962  '-' /*letter*/,
2963  },
2964  // Rule Iran 2032 2033 - Sep 20 24:00 0 -
2965  {
2966  32 /*fromYearTiny*/,
2967  33 /*toYearTiny*/,
2968  9 /*inMonth*/,
2969  0 /*onDayOfWeek*/,
2970  20 /*onDayOfMonth*/,
2971  96 /*atTimeCode*/,
2972  'w' /*atTimeModifier*/,
2973  0 /*deltaCode*/,
2974  '-' /*letter*/,
2975  },
2976  // Rule Iran 2034 2035 - Mar 21 24:00 1:00 -
2977  {
2978  34 /*fromYearTiny*/,
2979  35 /*toYearTiny*/,
2980  3 /*inMonth*/,
2981  0 /*onDayOfWeek*/,
2982  21 /*onDayOfMonth*/,
2983  96 /*atTimeCode*/,
2984  'w' /*atTimeModifier*/,
2985  4 /*deltaCode*/,
2986  '-' /*letter*/,
2987  },
2988  // Rule Iran 2034 2035 - Sep 21 24:00 0 -
2989  {
2990  34 /*fromYearTiny*/,
2991  35 /*toYearTiny*/,
2992  9 /*inMonth*/,
2993  0 /*onDayOfWeek*/,
2994  21 /*onDayOfMonth*/,
2995  96 /*atTimeCode*/,
2996  'w' /*atTimeModifier*/,
2997  0 /*deltaCode*/,
2998  '-' /*letter*/,
2999  },
3000  // Rule Iran 2036 2037 - Mar 20 24:00 1:00 -
3001  {
3002  36 /*fromYearTiny*/,
3003  37 /*toYearTiny*/,
3004  3 /*inMonth*/,
3005  0 /*onDayOfWeek*/,
3006  20 /*onDayOfMonth*/,
3007  96 /*atTimeCode*/,
3008  'w' /*atTimeModifier*/,
3009  4 /*deltaCode*/,
3010  '-' /*letter*/,
3011  },
3012  // Rule Iran 2036 2037 - Sep 20 24:00 0 -
3013  {
3014  36 /*fromYearTiny*/,
3015  37 /*toYearTiny*/,
3016  9 /*inMonth*/,
3017  0 /*onDayOfWeek*/,
3018  20 /*onDayOfMonth*/,
3019  96 /*atTimeCode*/,
3020  'w' /*atTimeModifier*/,
3021  0 /*deltaCode*/,
3022  '-' /*letter*/,
3023  },
3024  // Rule Iran 2038 2039 - Mar 21 24:00 1:00 -
3025  {
3026  38 /*fromYearTiny*/,
3027  39 /*toYearTiny*/,
3028  3 /*inMonth*/,
3029  0 /*onDayOfWeek*/,
3030  21 /*onDayOfMonth*/,
3031  96 /*atTimeCode*/,
3032  'w' /*atTimeModifier*/,
3033  4 /*deltaCode*/,
3034  '-' /*letter*/,
3035  },
3036  // Rule Iran 2038 2039 - Sep 21 24:00 0 -
3037  {
3038  38 /*fromYearTiny*/,
3039  39 /*toYearTiny*/,
3040  9 /*inMonth*/,
3041  0 /*onDayOfWeek*/,
3042  21 /*onDayOfMonth*/,
3043  96 /*atTimeCode*/,
3044  'w' /*atTimeModifier*/,
3045  0 /*deltaCode*/,
3046  '-' /*letter*/,
3047  },
3048  // Rule Iran 2040 2041 - Mar 20 24:00 1:00 -
3049  {
3050  40 /*fromYearTiny*/,
3051  41 /*toYearTiny*/,
3052  3 /*inMonth*/,
3053  0 /*onDayOfWeek*/,
3054  20 /*onDayOfMonth*/,
3055  96 /*atTimeCode*/,
3056  'w' /*atTimeModifier*/,
3057  4 /*deltaCode*/,
3058  '-' /*letter*/,
3059  },
3060  // Rule Iran 2040 2041 - Sep 20 24:00 0 -
3061  {
3062  40 /*fromYearTiny*/,
3063  41 /*toYearTiny*/,
3064  9 /*inMonth*/,
3065  0 /*onDayOfWeek*/,
3066  20 /*onDayOfMonth*/,
3067  96 /*atTimeCode*/,
3068  'w' /*atTimeModifier*/,
3069  0 /*deltaCode*/,
3070  '-' /*letter*/,
3071  },
3072  // Rule Iran 2042 2043 - Mar 21 24:00 1:00 -
3073  {
3074  42 /*fromYearTiny*/,
3075  43 /*toYearTiny*/,
3076  3 /*inMonth*/,
3077  0 /*onDayOfWeek*/,
3078  21 /*onDayOfMonth*/,
3079  96 /*atTimeCode*/,
3080  'w' /*atTimeModifier*/,
3081  4 /*deltaCode*/,
3082  '-' /*letter*/,
3083  },
3084  // Rule Iran 2042 2043 - Sep 21 24:00 0 -
3085  {
3086  42 /*fromYearTiny*/,
3087  43 /*toYearTiny*/,
3088  9 /*inMonth*/,
3089  0 /*onDayOfWeek*/,
3090  21 /*onDayOfMonth*/,
3091  96 /*atTimeCode*/,
3092  'w' /*atTimeModifier*/,
3093  0 /*deltaCode*/,
3094  '-' /*letter*/,
3095  },
3096  // Rule Iran 2044 2045 - Mar 20 24:00 1:00 -
3097  {
3098  44 /*fromYearTiny*/,
3099  45 /*toYearTiny*/,
3100  3 /*inMonth*/,
3101  0 /*onDayOfWeek*/,
3102  20 /*onDayOfMonth*/,
3103  96 /*atTimeCode*/,
3104  'w' /*atTimeModifier*/,
3105  4 /*deltaCode*/,
3106  '-' /*letter*/,
3107  },
3108  // Rule Iran 2044 2045 - Sep 20 24:00 0 -
3109  {
3110  44 /*fromYearTiny*/,
3111  45 /*toYearTiny*/,
3112  9 /*inMonth*/,
3113  0 /*onDayOfWeek*/,
3114  20 /*onDayOfMonth*/,
3115  96 /*atTimeCode*/,
3116  'w' /*atTimeModifier*/,
3117  0 /*deltaCode*/,
3118  '-' /*letter*/,
3119  },
3120  // Rule Iran 2046 2047 - Mar 21 24:00 1:00 -
3121  {
3122  46 /*fromYearTiny*/,
3123  47 /*toYearTiny*/,
3124  3 /*inMonth*/,
3125  0 /*onDayOfWeek*/,
3126  21 /*onDayOfMonth*/,
3127  96 /*atTimeCode*/,
3128  'w' /*atTimeModifier*/,
3129  4 /*deltaCode*/,
3130  '-' /*letter*/,
3131  },
3132  // Rule Iran 2046 2047 - Sep 21 24:00 0 -
3133  {
3134  46 /*fromYearTiny*/,
3135  47 /*toYearTiny*/,
3136  9 /*inMonth*/,
3137  0 /*onDayOfWeek*/,
3138  21 /*onDayOfMonth*/,
3139  96 /*atTimeCode*/,
3140  'w' /*atTimeModifier*/,
3141  0 /*deltaCode*/,
3142  '-' /*letter*/,
3143  },
3144  // Rule Iran 2048 2049 - Mar 20 24:00 1:00 -
3145  {
3146  48 /*fromYearTiny*/,
3147  49 /*toYearTiny*/,
3148  3 /*inMonth*/,
3149  0 /*onDayOfWeek*/,
3150  20 /*onDayOfMonth*/,
3151  96 /*atTimeCode*/,
3152  'w' /*atTimeModifier*/,
3153  4 /*deltaCode*/,
3154  '-' /*letter*/,
3155  },
3156  // Rule Iran 2048 2049 - Sep 20 24:00 0 -
3157  {
3158  48 /*fromYearTiny*/,
3159  49 /*toYearTiny*/,
3160  9 /*inMonth*/,
3161  0 /*onDayOfWeek*/,
3162  20 /*onDayOfMonth*/,
3163  96 /*atTimeCode*/,
3164  'w' /*atTimeModifier*/,
3165  0 /*deltaCode*/,
3166  '-' /*letter*/,
3167  },
3168  // Rule Iran 2050 2051 - Mar 21 24:00 1:00 -
3169  {
3170  50 /*fromYearTiny*/,
3171  51 /*toYearTiny*/,
3172  3 /*inMonth*/,
3173  0 /*onDayOfWeek*/,
3174  21 /*onDayOfMonth*/,
3175  96 /*atTimeCode*/,
3176  'w' /*atTimeModifier*/,
3177  4 /*deltaCode*/,
3178  '-' /*letter*/,
3179  },
3180  // Rule Iran 2050 2051 - Sep 21 24:00 0 -
3181  {
3182  50 /*fromYearTiny*/,
3183  51 /*toYearTiny*/,
3184  9 /*inMonth*/,
3185  0 /*onDayOfWeek*/,
3186  21 /*onDayOfMonth*/,
3187  96 /*atTimeCode*/,
3188  'w' /*atTimeModifier*/,
3189  0 /*deltaCode*/,
3190  '-' /*letter*/,
3191  },
3192 
3193 };
3194 
3195 
3196 
3197 const basic::ZonePolicy kPolicyIran = {
3198  55 /*numRules*/,
3199  kZoneRulesIran /*rules*/,
3200  0 /* numLetters */,
3201  nullptr /* letters */,
3202 };
3203 
3204 //---------------------------------------------------------------------------
3205 // Policy name: Iraq
3206 // Rules: 3
3207 // Memory (8-bit): 33
3208 // Memory (32-bit): 37
3209 //---------------------------------------------------------------------------
3210 
3211 static const basic::ZoneRule kZoneRulesIraq[] = {
3212  // Rule Iraq 1985 1990 - Sep lastSun 1:00s 0 -
3213  {
3214  -15 /*fromYearTiny*/,
3215  -10 /*toYearTiny*/,
3216  9 /*inMonth*/,
3217  7 /*onDayOfWeek*/,
3218  0 /*onDayOfMonth*/,
3219  4 /*atTimeCode*/,
3220  's' /*atTimeModifier*/,
3221  0 /*deltaCode*/,
3222  '-' /*letter*/,
3223  },
3224  // Rule Iraq 1991 2007 - Apr 1 3:00s 1:00 -
3225  {
3226  -9 /*fromYearTiny*/,
3227  7 /*toYearTiny*/,
3228  4 /*inMonth*/,
3229  0 /*onDayOfWeek*/,
3230  1 /*onDayOfMonth*/,
3231  12 /*atTimeCode*/,
3232  's' /*atTimeModifier*/,
3233  4 /*deltaCode*/,
3234  '-' /*letter*/,
3235  },
3236  // Rule Iraq 1991 2007 - Oct 1 3:00s 0 -
3237  {
3238  -9 /*fromYearTiny*/,
3239  7 /*toYearTiny*/,
3240  10 /*inMonth*/,
3241  0 /*onDayOfWeek*/,
3242  1 /*onDayOfMonth*/,
3243  12 /*atTimeCode*/,
3244  's' /*atTimeModifier*/,
3245  0 /*deltaCode*/,
3246  '-' /*letter*/,
3247  },
3248 
3249 };
3250 
3251 
3252 
3253 const basic::ZonePolicy kPolicyIraq = {
3254  3 /*numRules*/,
3255  kZoneRulesIraq /*rules*/,
3256  0 /* numLetters */,
3257  nullptr /* letters */,
3258 };
3259 
3260 //---------------------------------------------------------------------------
3261 // Policy name: Japan
3262 // Rules: 1
3263 // Memory (8-bit): 15
3264 // Memory (32-bit): 19
3265 //---------------------------------------------------------------------------
3266 
3267 static const basic::ZoneRule kZoneRulesJapan[] = {
3268  // Rule Japan 1948 1951 - Sep Sat>=8 25:00 0 S
3269  {
3270  -52 /*fromYearTiny*/,
3271  -49 /*toYearTiny*/,
3272  9 /*inMonth*/,
3273  6 /*onDayOfWeek*/,
3274  8 /*onDayOfMonth*/,
3275  100 /*atTimeCode*/,
3276  'w' /*atTimeModifier*/,
3277  0 /*deltaCode*/,
3278  'S' /*letter*/,
3279  },
3280 
3281 };
3282 
3283 
3284 
3285 const basic::ZonePolicy kPolicyJapan = {
3286  1 /*numRules*/,
3287  kZoneRulesJapan /*rules*/,
3288  0 /* numLetters */,
3289  nullptr /* letters */,
3290 };
3291 
3292 //---------------------------------------------------------------------------
3293 // Policy name: Jordan
3294 // Rules: 12
3295 // Memory (8-bit): 114
3296 // Memory (32-bit): 118
3297 //---------------------------------------------------------------------------
3298 
3299 static const basic::ZoneRule kZoneRulesJordan[] = {
3300  // Rule Jordan 1995 1998 - Sep Fri>=15 0:00s 0 -
3301  {
3302  -5 /*fromYearTiny*/,
3303  -2 /*toYearTiny*/,
3304  9 /*inMonth*/,
3305  5 /*onDayOfWeek*/,
3306  15 /*onDayOfMonth*/,
3307  0 /*atTimeCode*/,
3308  's' /*atTimeModifier*/,
3309  0 /*deltaCode*/,
3310  '-' /*letter*/,
3311  },
3312  // Rule Jordan 1999 only - Jul 1 0:00s 1:00 S
3313  {
3314  -1 /*fromYearTiny*/,
3315  -1 /*toYearTiny*/,
3316  7 /*inMonth*/,
3317  0 /*onDayOfWeek*/,
3318  1 /*onDayOfMonth*/,
3319  0 /*atTimeCode*/,
3320  's' /*atTimeModifier*/,
3321  4 /*deltaCode*/,
3322  'S' /*letter*/,
3323  },
3324  // Rule Jordan 1999 2002 - Sep lastFri 0:00s 0 -
3325  {
3326  -1 /*fromYearTiny*/,
3327  2 /*toYearTiny*/,
3328  9 /*inMonth*/,
3329  5 /*onDayOfWeek*/,
3330  0 /*onDayOfMonth*/,
3331  0 /*atTimeCode*/,
3332  's' /*atTimeModifier*/,
3333  0 /*deltaCode*/,
3334  '-' /*letter*/,
3335  },
3336  // Rule Jordan 2000 2001 - Mar lastThu 0:00s 1:00 S
3337  {
3338  0 /*fromYearTiny*/,
3339  1 /*toYearTiny*/,
3340  3 /*inMonth*/,
3341  4 /*onDayOfWeek*/,
3342  0 /*onDayOfMonth*/,
3343  0 /*atTimeCode*/,
3344  's' /*atTimeModifier*/,
3345  4 /*deltaCode*/,
3346  'S' /*letter*/,
3347  },
3348  // Rule Jordan 2002 2012 - Mar lastThu 24:00 1:00 S
3349  {
3350  2 /*fromYearTiny*/,
3351  12 /*toYearTiny*/,
3352  3 /*inMonth*/,
3353  4 /*onDayOfWeek*/,
3354  0 /*onDayOfMonth*/,
3355  96 /*atTimeCode*/,
3356  'w' /*atTimeModifier*/,
3357  4 /*deltaCode*/,
3358  'S' /*letter*/,
3359  },
3360  // Rule Jordan 2003 only - Oct 24 0:00s 0 -
3361  {
3362  3 /*fromYearTiny*/,
3363  3 /*toYearTiny*/,
3364  10 /*inMonth*/,
3365  0 /*onDayOfWeek*/,
3366  24 /*onDayOfMonth*/,
3367  0 /*atTimeCode*/,
3368  's' /*atTimeModifier*/,
3369  0 /*deltaCode*/,
3370  '-' /*letter*/,
3371  },
3372  // Rule Jordan 2004 only - Oct 15 0:00s 0 -
3373  {
3374  4 /*fromYearTiny*/,
3375  4 /*toYearTiny*/,
3376  10 /*inMonth*/,
3377  0 /*onDayOfWeek*/,
3378  15 /*onDayOfMonth*/,
3379  0 /*atTimeCode*/,
3380  's' /*atTimeModifier*/,
3381  0 /*deltaCode*/,
3382  '-' /*letter*/,
3383  },
3384  // Rule Jordan 2005 only - Sep lastFri 0:00s 0 -
3385  {
3386  5 /*fromYearTiny*/,
3387  5 /*toYearTiny*/,
3388  9 /*inMonth*/,
3389  5 /*onDayOfWeek*/,
3390  0 /*onDayOfMonth*/,
3391  0 /*atTimeCode*/,
3392  's' /*atTimeModifier*/,
3393  0 /*deltaCode*/,
3394  '-' /*letter*/,
3395  },
3396  // Rule Jordan 2006 2011 - Oct lastFri 0:00s 0 -
3397  {
3398  6 /*fromYearTiny*/,
3399  11 /*toYearTiny*/,
3400  10 /*inMonth*/,
3401  5 /*onDayOfWeek*/,
3402  0 /*onDayOfMonth*/,
3403  0 /*atTimeCode*/,
3404  's' /*atTimeModifier*/,
3405  0 /*deltaCode*/,
3406  '-' /*letter*/,
3407  },
3408  // Rule Jordan 2013 only - Dec 20 0:00 0 -
3409  {
3410  13 /*fromYearTiny*/,
3411  13 /*toYearTiny*/,
3412  12 /*inMonth*/,
3413  0 /*onDayOfWeek*/,
3414  20 /*onDayOfMonth*/,
3415  0 /*atTimeCode*/,
3416  'w' /*atTimeModifier*/,
3417  0 /*deltaCode*/,
3418  '-' /*letter*/,
3419  },
3420  // Rule Jordan 2014 max - Mar lastThu 24:00 1:00 S
3421  {
3422  14 /*fromYearTiny*/,
3423  126 /*toYearTiny*/,
3424  3 /*inMonth*/,
3425  4 /*onDayOfWeek*/,
3426  0 /*onDayOfMonth*/,
3427  96 /*atTimeCode*/,
3428  'w' /*atTimeModifier*/,
3429  4 /*deltaCode*/,
3430  'S' /*letter*/,
3431  },
3432  // Rule Jordan 2014 max - Oct lastFri 0:00s 0 -
3433  {
3434  14 /*fromYearTiny*/,
3435  126 /*toYearTiny*/,
3436  10 /*inMonth*/,
3437  5 /*onDayOfWeek*/,
3438  0 /*onDayOfMonth*/,
3439  0 /*atTimeCode*/,
3440  's' /*atTimeModifier*/,
3441  0 /*deltaCode*/,
3442  '-' /*letter*/,
3443  },
3444 
3445 };
3446 
3447 
3448 
3449 const basic::ZonePolicy kPolicyJordan = {
3450  12 /*numRules*/,
3451  kZoneRulesJordan /*rules*/,
3452  0 /* numLetters */,
3453  nullptr /* letters */,
3454 };
3455 
3456 //---------------------------------------------------------------------------
3457 // Policy name: LH
3458 // Rules: 9
3459 // Memory (8-bit): 87
3460 // Memory (32-bit): 91
3461 //---------------------------------------------------------------------------
3462 
3463 static const basic::ZoneRule kZoneRulesLH[] = {
3464  // Rule LH 1987 1999 - Oct lastSun 2:00 0:30 -
3465  {
3466  -13 /*fromYearTiny*/,
3467  -1 /*toYearTiny*/,
3468  10 /*inMonth*/,
3469  7 /*onDayOfWeek*/,
3470  0 /*onDayOfMonth*/,
3471  8 /*atTimeCode*/,
3472  'w' /*atTimeModifier*/,
3473  2 /*deltaCode*/,
3474  '-' /*letter*/,
3475  },
3476  // Rule LH 1990 1995 - Mar Sun>=1 2:00 0 -
3477  {
3478  -10 /*fromYearTiny*/,
3479  -5 /*toYearTiny*/,
3480  3 /*inMonth*/,
3481  7 /*onDayOfWeek*/,
3482  1 /*onDayOfMonth*/,
3483  8 /*atTimeCode*/,
3484  'w' /*atTimeModifier*/,
3485  0 /*deltaCode*/,
3486  '-' /*letter*/,
3487  },
3488  // Rule LH 1996 2005 - Mar lastSun 2:00 0 -
3489  {
3490  -4 /*fromYearTiny*/,
3491  5 /*toYearTiny*/,
3492  3 /*inMonth*/,
3493  7 /*onDayOfWeek*/,
3494  0 /*onDayOfMonth*/,
3495  8 /*atTimeCode*/,
3496  'w' /*atTimeModifier*/,
3497  0 /*deltaCode*/,
3498  '-' /*letter*/,
3499  },
3500  // Rule LH 2000 only - Aug lastSun 2:00 0:30 -
3501  {
3502  0 /*fromYearTiny*/,
3503  0 /*toYearTiny*/,
3504  8 /*inMonth*/,
3505  7 /*onDayOfWeek*/,
3506  0 /*onDayOfMonth*/,
3507  8 /*atTimeCode*/,
3508  'w' /*atTimeModifier*/,
3509  2 /*deltaCode*/,
3510  '-' /*letter*/,
3511  },
3512  // Rule LH 2001 2007 - Oct lastSun 2:00 0:30 -
3513  {
3514  1 /*fromYearTiny*/,
3515  7 /*toYearTiny*/,
3516  10 /*inMonth*/,
3517  7 /*onDayOfWeek*/,
3518  0 /*onDayOfMonth*/,
3519  8 /*atTimeCode*/,
3520  'w' /*atTimeModifier*/,
3521  2 /*deltaCode*/,
3522  '-' /*letter*/,
3523  },
3524  // Rule LH 2006 only - Apr Sun>=1 2:00 0 -
3525  {
3526  6 /*fromYearTiny*/,
3527  6 /*toYearTiny*/,
3528  4 /*inMonth*/,
3529  7 /*onDayOfWeek*/,
3530  1 /*onDayOfMonth*/,
3531  8 /*atTimeCode*/,
3532  'w' /*atTimeModifier*/,
3533  0 /*deltaCode*/,
3534  '-' /*letter*/,
3535  },
3536  // Rule LH 2007 only - Mar lastSun 2:00 0 -
3537  {
3538  7 /*fromYearTiny*/,
3539  7 /*toYearTiny*/,
3540  3 /*inMonth*/,
3541  7 /*onDayOfWeek*/,
3542  0 /*onDayOfMonth*/,
3543  8 /*atTimeCode*/,
3544  'w' /*atTimeModifier*/,
3545  0 /*deltaCode*/,
3546  '-' /*letter*/,
3547  },
3548  // Rule LH 2008 max - Apr Sun>=1 2:00 0 -
3549  {
3550  8 /*fromYearTiny*/,
3551  126 /*toYearTiny*/,
3552  4 /*inMonth*/,
3553  7 /*onDayOfWeek*/,
3554  1 /*onDayOfMonth*/,
3555  8 /*atTimeCode*/,
3556  'w' /*atTimeModifier*/,
3557  0 /*deltaCode*/,
3558  '-' /*letter*/,
3559  },
3560  // Rule LH 2008 max - Oct Sun>=1 2:00 0:30 -
3561  {
3562  8 /*fromYearTiny*/,
3563  126 /*toYearTiny*/,
3564  10 /*inMonth*/,
3565  7 /*onDayOfWeek*/,
3566  1 /*onDayOfMonth*/,
3567  8 /*atTimeCode*/,
3568  'w' /*atTimeModifier*/,
3569  2 /*deltaCode*/,
3570  '-' /*letter*/,
3571  },
3572 
3573 };
3574 
3575 
3576 
3577 const basic::ZonePolicy kPolicyLH = {
3578  9 /*numRules*/,
3579  kZoneRulesLH /*rules*/,
3580  0 /* numLetters */,
3581  nullptr /* letters */,
3582 };
3583 
3584 //---------------------------------------------------------------------------
3585 // Policy name: Lebanon
3586 // Rules: 3
3587 // Memory (8-bit): 33
3588 // Memory (32-bit): 37
3589 //---------------------------------------------------------------------------
3590 
3591 static const basic::ZoneRule kZoneRulesLebanon[] = {
3592  // Rule Lebanon 1993 max - Mar lastSun 0:00 1:00 S
3593  {
3594  -7 /*fromYearTiny*/,
3595  126 /*toYearTiny*/,
3596  3 /*inMonth*/,
3597  7 /*onDayOfWeek*/,
3598  0 /*onDayOfMonth*/,
3599  0 /*atTimeCode*/,
3600  'w' /*atTimeModifier*/,
3601  4 /*deltaCode*/,
3602  'S' /*letter*/,
3603  },
3604  // Rule Lebanon 1993 1998 - Sep lastSun 0:00 0 -
3605  {
3606  -7 /*fromYearTiny*/,
3607  -2 /*toYearTiny*/,
3608  9 /*inMonth*/,
3609  7 /*onDayOfWeek*/,
3610  0 /*onDayOfMonth*/,
3611  0 /*atTimeCode*/,
3612  'w' /*atTimeModifier*/,
3613  0 /*deltaCode*/,
3614  '-' /*letter*/,
3615  },
3616  // Rule Lebanon 1999 max - Oct lastSun 0:00 0 -
3617  {
3618  -1 /*fromYearTiny*/,
3619  126 /*toYearTiny*/,
3620  10 /*inMonth*/,
3621  7 /*onDayOfWeek*/,
3622  0 /*onDayOfMonth*/,
3623  0 /*atTimeCode*/,
3624  'w' /*atTimeModifier*/,
3625  0 /*deltaCode*/,
3626  '-' /*letter*/,
3627  },
3628 
3629 };
3630 
3631 
3632 
3633 const basic::ZonePolicy kPolicyLebanon = {
3634  3 /*numRules*/,
3635  kZoneRulesLebanon /*rules*/,
3636  0 /* numLetters */,
3637  nullptr /* letters */,
3638 };
3639 
3640 //---------------------------------------------------------------------------
3641 // Policy name: Macau
3642 // Rules: 1
3643 // Memory (8-bit): 15
3644 // Memory (32-bit): 19
3645 //---------------------------------------------------------------------------
3646 
3647 static const basic::ZoneRule kZoneRulesMacau[] = {
3648  // Rule Macau 1979 only - Oct Sun>=16 03:30 0 S
3649  {
3650  -21 /*fromYearTiny*/,
3651  -21 /*toYearTiny*/,
3652  10 /*inMonth*/,
3653  7 /*onDayOfWeek*/,
3654  16 /*onDayOfMonth*/,
3655  14 /*atTimeCode*/,
3656  'w' /*atTimeModifier*/,
3657  0 /*deltaCode*/,
3658  'S' /*letter*/,
3659  },
3660 
3661 };
3662 
3663 
3664 
3665 const basic::ZonePolicy kPolicyMacau = {
3666  1 /*numRules*/,
3667  kZoneRulesMacau /*rules*/,
3668  0 /* numLetters */,
3669  nullptr /* letters */,
3670 };
3671 
3672 //---------------------------------------------------------------------------
3673 // Policy name: Mauritius
3674 // Rules: 3
3675 // Memory (8-bit): 33
3676 // Memory (32-bit): 37
3677 //---------------------------------------------------------------------------
3678 
3679 static const basic::ZoneRule kZoneRulesMauritius[] = {
3680  // Rule Mauritius 1983 only - Mar 21 0:00 0 -
3681  {
3682  -17 /*fromYearTiny*/,
3683  -17 /*toYearTiny*/,
3684  3 /*inMonth*/,
3685  0 /*onDayOfWeek*/,
3686  21 /*onDayOfMonth*/,
3687  0 /*atTimeCode*/,
3688  'w' /*atTimeModifier*/,
3689  0 /*deltaCode*/,
3690  '-' /*letter*/,
3691  },
3692  // Rule Mauritius 2008 only - Oct lastSun 2:00 1:00 -
3693  {
3694  8 /*fromYearTiny*/,
3695  8 /*toYearTiny*/,
3696  10 /*inMonth*/,
3697  7 /*onDayOfWeek*/,
3698  0 /*onDayOfMonth*/,
3699  8 /*atTimeCode*/,
3700  'w' /*atTimeModifier*/,
3701  4 /*deltaCode*/,
3702  '-' /*letter*/,
3703  },
3704  // Rule Mauritius 2009 only - Mar lastSun 2:00 0 -
3705  {
3706  9 /*fromYearTiny*/,
3707  9 /*toYearTiny*/,
3708  3 /*inMonth*/,
3709  7 /*onDayOfWeek*/,
3710  0 /*onDayOfMonth*/,
3711  8 /*atTimeCode*/,
3712  'w' /*atTimeModifier*/,
3713  0 /*deltaCode*/,
3714  '-' /*letter*/,
3715  },
3716 
3717 };
3718 
3719 
3720 
3721 const basic::ZonePolicy kPolicyMauritius = {
3722  3 /*numRules*/,
3723  kZoneRulesMauritius /*rules*/,
3724  0 /* numLetters */,
3725  nullptr /* letters */,
3726 };
3727 
3728 //---------------------------------------------------------------------------
3729 // Policy name: Mexico
3730 // Rules: 7
3731 // Memory (8-bit): 69
3732 // Memory (32-bit): 73
3733 //---------------------------------------------------------------------------
3734 
3735 static const basic::ZoneRule kZoneRulesMexico[] = {
3736  // Rule Mexico 1950 only - Jul 30 0:00 0 S
3737  {
3738  -50 /*fromYearTiny*/,
3739  -50 /*toYearTiny*/,
3740  7 /*inMonth*/,
3741  0 /*onDayOfWeek*/,
3742  30 /*onDayOfMonth*/,
3743  0 /*atTimeCode*/,
3744  'w' /*atTimeModifier*/,
3745  0 /*deltaCode*/,
3746  'S' /*letter*/,
3747  },
3748  // Rule Mexico 1996 2000 - Apr Sun>=1 2:00 1:00 D
3749  {
3750  -4 /*fromYearTiny*/,
3751  0 /*toYearTiny*/,
3752  4 /*inMonth*/,
3753  7 /*onDayOfWeek*/,
3754  1 /*onDayOfMonth*/,
3755  8 /*atTimeCode*/,
3756  'w' /*atTimeModifier*/,
3757  4 /*deltaCode*/,
3758  'D' /*letter*/,
3759  },
3760  // Rule Mexico 1996 2000 - Oct lastSun 2:00 0 S
3761  {
3762  -4 /*fromYearTiny*/,
3763  0 /*toYearTiny*/,
3764  10 /*inMonth*/,
3765  7 /*onDayOfWeek*/,
3766  0 /*onDayOfMonth*/,
3767  8 /*atTimeCode*/,
3768  'w' /*atTimeModifier*/,
3769  0 /*deltaCode*/,
3770  'S' /*letter*/,
3771  },
3772  // Rule Mexico 2001 only - May Sun>=1 2:00 1:00 D
3773  {
3774  1 /*fromYearTiny*/,
3775  1 /*toYearTiny*/,
3776  5 /*inMonth*/,
3777  7 /*onDayOfWeek*/,
3778  1 /*onDayOfMonth*/,
3779  8 /*atTimeCode*/,
3780  'w' /*atTimeModifier*/,
3781  4 /*deltaCode*/,
3782  'D' /*letter*/,
3783  },
3784  // Rule Mexico 2001 only - Sep lastSun 2:00 0 S
3785  {
3786  1 /*fromYearTiny*/,
3787  1 /*toYearTiny*/,
3788  9 /*inMonth*/,
3789  7 /*onDayOfWeek*/,
3790  0 /*onDayOfMonth*/,
3791  8 /*atTimeCode*/,
3792  'w' /*atTimeModifier*/,
3793  0 /*deltaCode*/,
3794  'S' /*letter*/,
3795  },
3796  // Rule Mexico 2002 max - Apr Sun>=1 2:00 1:00 D
3797  {
3798  2 /*fromYearTiny*/,
3799  126 /*toYearTiny*/,
3800  4 /*inMonth*/,
3801  7 /*onDayOfWeek*/,
3802  1 /*onDayOfMonth*/,
3803  8 /*atTimeCode*/,
3804  'w' /*atTimeModifier*/,
3805  4 /*deltaCode*/,
3806  'D' /*letter*/,
3807  },
3808  // Rule Mexico 2002 max - Oct lastSun 2:00 0 S
3809  {
3810  2 /*fromYearTiny*/,
3811  126 /*toYearTiny*/,
3812  10 /*inMonth*/,
3813  7 /*onDayOfWeek*/,
3814  0 /*onDayOfMonth*/,
3815  8 /*atTimeCode*/,
3816  'w' /*atTimeModifier*/,
3817  0 /*deltaCode*/,
3818  'S' /*letter*/,
3819  },
3820 
3821 };
3822 
3823 
3824 
3825 const basic::ZonePolicy kPolicyMexico = {
3826  7 /*numRules*/,
3827  kZoneRulesMexico /*rules*/,
3828  0 /* numLetters */,
3829  nullptr /* letters */,
3830 };
3831 
3832 //---------------------------------------------------------------------------
3833 // Policy name: Moldova
3834 // Rules: 2
3835 // Memory (8-bit): 24
3836 // Memory (32-bit): 28
3837 //---------------------------------------------------------------------------
3838 
3839 static const basic::ZoneRule kZoneRulesMoldova[] = {
3840  // Rule Moldova 1997 max - Mar lastSun 2:00 1:00 S
3841  {
3842  -3 /*fromYearTiny*/,
3843  126 /*toYearTiny*/,
3844  3 /*inMonth*/,
3845  7 /*onDayOfWeek*/,
3846  0 /*onDayOfMonth*/,
3847  8 /*atTimeCode*/,
3848  'w' /*atTimeModifier*/,
3849  4 /*deltaCode*/,
3850  'S' /*letter*/,
3851  },
3852  // Rule Moldova 1997 max - Oct lastSun 3:00 0 -
3853  {
3854  -3 /*fromYearTiny*/,
3855  126 /*toYearTiny*/,
3856  10 /*inMonth*/,
3857  7 /*onDayOfWeek*/,
3858  0 /*onDayOfMonth*/,
3859  12 /*atTimeCode*/,
3860  'w' /*atTimeModifier*/,
3861  0 /*deltaCode*/,
3862  '-' /*letter*/,
3863  },
3864 
3865 };
3866 
3867 
3868 
3869 const basic::ZonePolicy kPolicyMoldova = {
3870  2 /*numRules*/,
3871  kZoneRulesMoldova /*rules*/,
3872  0 /* numLetters */,
3873  nullptr /* letters */,
3874 };
3875 
3876 //---------------------------------------------------------------------------
3877 // Policy name: Moncton
3878 // Rules: 3
3879 // Memory (8-bit): 33
3880 // Memory (32-bit): 37
3881 //---------------------------------------------------------------------------
3882 
3883 static const basic::ZoneRule kZoneRulesMoncton[] = {
3884  // Rule Moncton 1957 1972 - Oct lastSun 2:00 0 S
3885  {
3886  -43 /*fromYearTiny*/,
3887  -28 /*toYearTiny*/,
3888  10 /*inMonth*/,
3889  7 /*onDayOfWeek*/,
3890  0 /*onDayOfMonth*/,
3891  8 /*atTimeCode*/,
3892  'w' /*atTimeModifier*/,
3893  0 /*deltaCode*/,
3894  'S' /*letter*/,
3895  },
3896  // Rule Moncton 1993 2006 - Apr Sun>=1 0:01 1:00 D
3897  {
3898  -7 /*fromYearTiny*/,
3899  6 /*toYearTiny*/,
3900  4 /*inMonth*/,
3901  7 /*onDayOfWeek*/,
3902  1 /*onDayOfMonth*/,
3903  0 /*atTimeCode*/,
3904  'w' /*atTimeModifier*/,
3905  4 /*deltaCode*/,
3906  'D' /*letter*/,
3907  },
3908  // Rule Moncton 1993 2006 - Oct lastSun 0:01 0 S
3909  {
3910  -7 /*fromYearTiny*/,
3911  6 /*toYearTiny*/,
3912  10 /*inMonth*/,
3913  7 /*onDayOfWeek*/,
3914  0 /*onDayOfMonth*/,
3915  0 /*atTimeCode*/,
3916  'w' /*atTimeModifier*/,
3917  0 /*deltaCode*/,
3918  'S' /*letter*/,
3919  },
3920 
3921 };
3922 
3923 
3924 
3925 const basic::ZonePolicy kPolicyMoncton = {
3926  3 /*numRules*/,
3927  kZoneRulesMoncton /*rules*/,
3928  0 /* numLetters */,
3929  nullptr /* letters */,
3930 };
3931 
3932 //---------------------------------------------------------------------------
3933 // Policy name: Mongol
3934 // Rules: 6
3935 // Memory (8-bit): 60
3936 // Memory (32-bit): 64
3937 //---------------------------------------------------------------------------
3938 
3939 static const basic::ZoneRule kZoneRulesMongol[] = {
3940  // Rule Mongol 1984 1998 - Sep lastSun 0:00 0 -
3941  {
3942  -16 /*fromYearTiny*/,
3943  -2 /*toYearTiny*/,
3944  9 /*inMonth*/,
3945  7 /*onDayOfWeek*/,
3946  0 /*onDayOfMonth*/,
3947  0 /*atTimeCode*/,
3948  'w' /*atTimeModifier*/,
3949  0 /*deltaCode*/,
3950  '-' /*letter*/,
3951  },
3952  // Rule Mongol 2001 only - Apr lastSat 2:00 1:00 -
3953  {
3954  1 /*fromYearTiny*/,
3955  1 /*toYearTiny*/,
3956  4 /*inMonth*/,
3957  6 /*onDayOfWeek*/,
3958  0 /*onDayOfMonth*/,
3959  8 /*atTimeCode*/,
3960  'w' /*atTimeModifier*/,
3961  4 /*deltaCode*/,
3962  '-' /*letter*/,
3963  },
3964  // Rule Mongol 2001 2006 - Sep lastSat 2:00 0 -
3965  {
3966  1 /*fromYearTiny*/,
3967  6 /*toYearTiny*/,
3968  9 /*inMonth*/,
3969  6 /*onDayOfWeek*/,
3970  0 /*onDayOfMonth*/,
3971  8 /*atTimeCode*/,
3972  'w' /*atTimeModifier*/,
3973  0 /*deltaCode*/,
3974  '-' /*letter*/,
3975  },
3976  // Rule Mongol 2002 2006 - Mar lastSat 2:00 1:00 -
3977  {
3978  2 /*fromYearTiny*/,
3979  6 /*toYearTiny*/,
3980  3 /*inMonth*/,
3981  6 /*onDayOfWeek*/,
3982  0 /*onDayOfMonth*/,
3983  8 /*atTimeCode*/,
3984  'w' /*atTimeModifier*/,
3985  4 /*deltaCode*/,
3986  '-' /*letter*/,
3987  },
3988  // Rule Mongol 2015 2016 - Mar lastSat 2:00 1:00 -
3989  {
3990  15 /*fromYearTiny*/,
3991  16 /*toYearTiny*/,
3992  3 /*inMonth*/,
3993  6 /*onDayOfWeek*/,
3994  0 /*onDayOfMonth*/,
3995  8 /*atTimeCode*/,
3996  'w' /*atTimeModifier*/,
3997  4 /*deltaCode*/,
3998  '-' /*letter*/,
3999  },
4000  // Rule Mongol 2015 2016 - Sep lastSat 0:00 0 -
4001  {
4002  15 /*fromYearTiny*/,
4003  16 /*toYearTiny*/,
4004  9 /*inMonth*/,
4005  6 /*onDayOfWeek*/,
4006  0 /*onDayOfMonth*/,
4007  0 /*atTimeCode*/,
4008  'w' /*atTimeModifier*/,
4009  0 /*deltaCode*/,
4010  '-' /*letter*/,
4011  },
4012 
4013 };
4014 
4015 
4016 
4017 const basic::ZonePolicy kPolicyMongol = {
4018  6 /*numRules*/,
4019  kZoneRulesMongol /*rules*/,
4020  0 /* numLetters */,
4021  nullptr /* letters */,
4022 };
4023 
4024 //---------------------------------------------------------------------------
4025 // Policy name: NC
4026 // Rules: 1
4027 // Memory (8-bit): 15
4028 // Memory (32-bit): 19
4029 //---------------------------------------------------------------------------
4030 
4031 static const basic::ZoneRule kZoneRulesNC[] = {
4032  // Rule NC 1997 only - Mar 2 2:00s 0 -
4033  {
4034  -3 /*fromYearTiny*/,
4035  -3 /*toYearTiny*/,
4036  3 /*inMonth*/,
4037  0 /*onDayOfWeek*/,
4038  2 /*onDayOfMonth*/,
4039  8 /*atTimeCode*/,
4040  's' /*atTimeModifier*/,
4041  0 /*deltaCode*/,
4042  '-' /*letter*/,
4043  },
4044 
4045 };
4046 
4047 
4048 
4049 const basic::ZonePolicy kPolicyNC = {
4050  1 /*numRules*/,
4051  kZoneRulesNC /*rules*/,
4052  0 /* numLetters */,
4053  nullptr /* letters */,
4054 };
4055 
4056 //---------------------------------------------------------------------------
4057 // Policy name: NZ
4058 // Rules: 5
4059 // Memory (8-bit): 51
4060 // Memory (32-bit): 55
4061 //---------------------------------------------------------------------------
4062 
4063 static const basic::ZoneRule kZoneRulesNZ[] = {
4064  // Rule NZ 1989 only - Oct Sun>=8 2:00s 1:00 D
4065  {
4066  -11 /*fromYearTiny*/,
4067  -11 /*toYearTiny*/,
4068  10 /*inMonth*/,
4069  7 /*onDayOfWeek*/,
4070  8 /*onDayOfMonth*/,
4071  8 /*atTimeCode*/,
4072  's' /*atTimeModifier*/,
4073  4 /*deltaCode*/,
4074  'D' /*letter*/,
4075  },
4076  // Rule NZ 1990 2006 - Oct Sun>=1 2:00s 1:00 D
4077  {
4078  -10 /*fromYearTiny*/,
4079  6 /*toYearTiny*/,
4080  10 /*inMonth*/,
4081  7 /*onDayOfWeek*/,
4082  1 /*onDayOfMonth*/,
4083  8 /*atTimeCode*/,
4084  's' /*atTimeModifier*/,
4085  4 /*deltaCode*/,
4086  'D' /*letter*/,
4087  },
4088  // Rule NZ 1990 2007 - Mar Sun>=15 2:00s 0 S
4089  {
4090  -10 /*fromYearTiny*/,
4091  7 /*toYearTiny*/,
4092  3 /*inMonth*/,
4093  7 /*onDayOfWeek*/,
4094  15 /*onDayOfMonth*/,
4095  8 /*atTimeCode*/,
4096  's' /*atTimeModifier*/,
4097  0 /*deltaCode*/,
4098  'S' /*letter*/,
4099  },
4100  // Rule NZ 2007 max - Sep lastSun 2:00s 1:00 D
4101  {
4102  7 /*fromYearTiny*/,
4103  126 /*toYearTiny*/,
4104  9 /*inMonth*/,
4105  7 /*onDayOfWeek*/,
4106  0 /*onDayOfMonth*/,
4107  8 /*atTimeCode*/,
4108  's' /*atTimeModifier*/,
4109  4 /*deltaCode*/,
4110  'D' /*letter*/,
4111  },
4112  // Rule NZ 2008 max - Apr Sun>=1 2:00s 0 S
4113  {
4114  8 /*fromYearTiny*/,
4115  126 /*toYearTiny*/,
4116  4 /*inMonth*/,
4117  7 /*onDayOfWeek*/,
4118  1 /*onDayOfMonth*/,
4119  8 /*atTimeCode*/,
4120  's' /*atTimeModifier*/,
4121  0 /*deltaCode*/,
4122  'S' /*letter*/,
4123  },
4124 
4125 };
4126 
4127 
4128 
4129 const basic::ZonePolicy kPolicyNZ = {
4130  5 /*numRules*/,
4131  kZoneRulesNZ /*rules*/,
4132  0 /* numLetters */,
4133  nullptr /* letters */,
4134 };
4135 
4136 //---------------------------------------------------------------------------
4137 // Policy name: Nic
4138 // Rules: 5
4139 // Memory (8-bit): 51
4140 // Memory (32-bit): 55
4141 //---------------------------------------------------------------------------
4142 
4143 static const basic::ZoneRule kZoneRulesNic[] = {
4144  // Rule Nic 1979 1980 - Jun Mon>=23 0:00 0 S
4145  {
4146  -21 /*fromYearTiny*/,
4147  -20 /*toYearTiny*/,
4148  6 /*inMonth*/,
4149  1 /*onDayOfWeek*/,
4150  23 /*onDayOfMonth*/,
4151  0 /*atTimeCode*/,
4152  'w' /*atTimeModifier*/,
4153  0 /*deltaCode*/,
4154  'S' /*letter*/,
4155  },
4156  // Rule Nic 2005 only - Apr 10 0:00 1:00 D
4157  {
4158  5 /*fromYearTiny*/,
4159  5 /*toYearTiny*/,
4160  4 /*inMonth*/,
4161  0 /*onDayOfWeek*/,
4162  10 /*onDayOfMonth*/,
4163  0 /*atTimeCode*/,
4164  'w' /*atTimeModifier*/,
4165  4 /*deltaCode*/,
4166  'D' /*letter*/,
4167  },
4168  // Rule Nic 2005 only - Oct Sun>=1 0:00 0 S
4169  {
4170  5 /*fromYearTiny*/,
4171  5 /*toYearTiny*/,
4172  10 /*inMonth*/,
4173  7 /*onDayOfWeek*/,
4174  1 /*onDayOfMonth*/,
4175  0 /*atTimeCode*/,
4176  'w' /*atTimeModifier*/,
4177  0 /*deltaCode*/,
4178  'S' /*letter*/,
4179  },
4180  // Rule Nic 2006 only - Apr 30 2:00 1:00 D
4181  {
4182  6 /*fromYearTiny*/,
4183  6 /*toYearTiny*/,
4184  4 /*inMonth*/,
4185  0 /*onDayOfWeek*/,
4186  30 /*onDayOfMonth*/,
4187  8 /*atTimeCode*/,
4188  'w' /*atTimeModifier*/,
4189  4 /*deltaCode*/,
4190  'D' /*letter*/,
4191  },
4192  // Rule Nic 2006 only - Oct Sun>=1 1:00 0 S
4193  {
4194  6 /*fromYearTiny*/,
4195  6 /*toYearTiny*/,
4196  10 /*inMonth*/,
4197  7 /*onDayOfWeek*/,
4198  1 /*onDayOfMonth*/,
4199  4 /*atTimeCode*/,
4200  'w' /*atTimeModifier*/,
4201  0 /*deltaCode*/,
4202  'S' /*letter*/,
4203  },
4204 
4205 };
4206 
4207 
4208 
4209 const basic::ZonePolicy kPolicyNic = {
4210  5 /*numRules*/,
4211  kZoneRulesNic /*rules*/,
4212  0 /* numLetters */,
4213  nullptr /* letters */,
4214 };
4215 
4216 //---------------------------------------------------------------------------
4217 // Policy name: PRC
4218 // Rules: 1
4219 // Memory (8-bit): 15
4220 // Memory (32-bit): 19
4221 //---------------------------------------------------------------------------
4222 
4223 static const basic::ZoneRule kZoneRulesPRC[] = {
4224  // Rule PRC 1986 1991 - Sep Sun>=11 2:00 0 S
4225  {
4226  -14 /*fromYearTiny*/,
4227  -9 /*toYearTiny*/,
4228  9 /*inMonth*/,
4229  7 /*onDayOfWeek*/,
4230  11 /*onDayOfMonth*/,
4231  8 /*atTimeCode*/,
4232  'w' /*atTimeModifier*/,
4233  0 /*deltaCode*/,
4234  'S' /*letter*/,
4235  },
4236 
4237 };
4238 
4239 
4240 
4241 const basic::ZonePolicy kPolicyPRC = {
4242  1 /*numRules*/,
4243  kZoneRulesPRC /*rules*/,
4244  0 /* numLetters */,
4245  nullptr /* letters */,
4246 };
4247 
4248 //---------------------------------------------------------------------------
4249 // Policy name: Pakistan
4250 // Rules: 6
4251 // Memory (8-bit): 60
4252 // Memory (32-bit): 64
4253 //---------------------------------------------------------------------------
4254 
4255 static const basic::ZoneRule kZoneRulesPakistan[] = {
4256  // Anchor: Rule Pakistan 2002 only - Oct Sun>=2 0:00 0 -
4257  {
4258  -127 /*fromYearTiny*/,
4259  -127 /*toYearTiny*/,
4260  1 /*inMonth*/,
4261  0 /*onDayOfWeek*/,
4262  1 /*onDayOfMonth*/,
4263  0 /*atTimeCode*/,
4264  'w' /*atTimeModifier*/,
4265  0 /*deltaCode*/,
4266  '-' /*letter*/,
4267  },
4268  // Rule Pakistan 2002 only - Apr Sun>=2 0:00 1:00 S
4269  {
4270  2 /*fromYearTiny*/,
4271  2 /*toYearTiny*/,
4272  4 /*inMonth*/,
4273  7 /*onDayOfWeek*/,
4274  2 /*onDayOfMonth*/,
4275  0 /*atTimeCode*/,
4276  'w' /*atTimeModifier*/,
4277  4 /*deltaCode*/,
4278  'S' /*letter*/,
4279  },
4280  // Rule Pakistan 2002 only - Oct Sun>=2 0:00 0 -
4281  {
4282  2 /*fromYearTiny*/,
4283  2 /*toYearTiny*/,
4284  10 /*inMonth*/,
4285  7 /*onDayOfWeek*/,
4286  2 /*onDayOfMonth*/,
4287  0 /*atTimeCode*/,
4288  'w' /*atTimeModifier*/,
4289  0 /*deltaCode*/,
4290  '-' /*letter*/,
4291  },
4292  // Rule Pakistan 2008 only - Jun 1 0:00 1:00 S
4293  {
4294  8 /*fromYearTiny*/,
4295  8 /*toYearTiny*/,
4296  6 /*inMonth*/,
4297  0 /*onDayOfWeek*/,
4298  1 /*onDayOfMonth*/,
4299  0 /*atTimeCode*/,
4300  'w' /*atTimeModifier*/,
4301  4 /*deltaCode*/,
4302  'S' /*letter*/,
4303  },
4304  // Rule Pakistan 2008 2009 - Nov 1 0:00 0 -
4305  {
4306  8 /*fromYearTiny*/,
4307  9 /*toYearTiny*/,
4308  11 /*inMonth*/,
4309  0 /*onDayOfWeek*/,
4310  1 /*onDayOfMonth*/,
4311  0 /*atTimeCode*/,
4312  'w' /*atTimeModifier*/,
4313  0 /*deltaCode*/,
4314  '-' /*letter*/,
4315  },
4316  // Rule Pakistan 2009 only - Apr 15 0:00 1:00 S
4317  {
4318  9 /*fromYearTiny*/,
4319  9 /*toYearTiny*/,
4320  4 /*inMonth*/,
4321  0 /*onDayOfWeek*/,
4322  15 /*onDayOfMonth*/,
4323  0 /*atTimeCode*/,
4324  'w' /*atTimeModifier*/,
4325  4 /*deltaCode*/,
4326  'S' /*letter*/,
4327  },
4328 
4329 };
4330 
4331 
4332 
4333 const basic::ZonePolicy kPolicyPakistan = {
4334  6 /*numRules*/,
4335  kZoneRulesPakistan /*rules*/,
4336  0 /* numLetters */,
4337  nullptr /* letters */,
4338 };
4339 
4340 //---------------------------------------------------------------------------
4341 // Policy name: Para
4342 // Rules: 10
4343 // Memory (8-bit): 96
4344 // Memory (32-bit): 100
4345 //---------------------------------------------------------------------------
4346 
4347 static const basic::ZoneRule kZoneRulesPara[] = {
4348  // Rule Para 1996 2001 - Oct Sun>=1 0:00 1:00 -
4349  {
4350  -4 /*fromYearTiny*/,
4351  1 /*toYearTiny*/,
4352  10 /*inMonth*/,
4353  7 /*onDayOfWeek*/,
4354  1 /*onDayOfMonth*/,
4355  0 /*atTimeCode*/,
4356  'w' /*atTimeModifier*/,
4357  4 /*deltaCode*/,
4358  '-' /*letter*/,
4359  },
4360  // Rule Para 1997 only - Feb lastSun 0:00 0 -
4361  {
4362  -3 /*fromYearTiny*/,
4363  -3 /*toYearTiny*/,
4364  2 /*inMonth*/,
4365  7 /*onDayOfWeek*/,
4366  0 /*onDayOfMonth*/,
4367  0 /*atTimeCode*/,
4368  'w' /*atTimeModifier*/,
4369  0 /*deltaCode*/,
4370  '-' /*letter*/,
4371  },
4372  // Rule Para 1998 2001 - Mar Sun>=1 0:00 0 -
4373  {
4374  -2 /*fromYearTiny*/,
4375  1 /*toYearTiny*/,
4376  3 /*inMonth*/,
4377  7 /*onDayOfWeek*/,
4378  1 /*onDayOfMonth*/,
4379  0 /*atTimeCode*/,
4380  'w' /*atTimeModifier*/,
4381  0 /*deltaCode*/,
4382  '-' /*letter*/,
4383  },
4384  // Rule Para 2002 2004 - Apr Sun>=1 0:00 0 -
4385  {
4386  2 /*fromYearTiny*/,
4387  4 /*toYearTiny*/,
4388  4 /*inMonth*/,
4389  7 /*onDayOfWeek*/,
4390  1 /*onDayOfMonth*/,
4391  0 /*atTimeCode*/,
4392  'w' /*atTimeModifier*/,
4393  0 /*deltaCode*/,
4394  '-' /*letter*/,
4395  },
4396  // Rule Para 2002 2003 - Sep Sun>=1 0:00 1:00 -
4397  {
4398  2 /*fromYearTiny*/,
4399  3 /*toYearTiny*/,
4400  9 /*inMonth*/,
4401  7 /*onDayOfWeek*/,
4402  1 /*onDayOfMonth*/,
4403  0 /*atTimeCode*/,
4404  'w' /*atTimeModifier*/,
4405  4 /*deltaCode*/,
4406  '-' /*letter*/,
4407  },
4408  // Rule Para 2004 2009 - Oct Sun>=15 0:00 1:00 -
4409  {
4410  4 /*fromYearTiny*/,
4411  9 /*toYearTiny*/,
4412  10 /*inMonth*/,
4413  7 /*onDayOfWeek*/,
4414  15 /*onDayOfMonth*/,
4415  0 /*atTimeCode*/,
4416  'w' /*atTimeModifier*/,
4417  4 /*deltaCode*/,
4418  '-' /*letter*/,
4419  },
4420  // Rule Para 2005 2009 - Mar Sun>=8 0:00 0 -
4421  {
4422  5 /*fromYearTiny*/,
4423  9 /*toYearTiny*/,
4424  3 /*inMonth*/,
4425  7 /*onDayOfWeek*/,
4426  8 /*onDayOfMonth*/,
4427  0 /*atTimeCode*/,
4428  'w' /*atTimeModifier*/,
4429  0 /*deltaCode*/,
4430  '-' /*letter*/,
4431  },
4432  // Rule Para 2010 max - Oct Sun>=1 0:00 1:00 -
4433  {
4434  10 /*fromYearTiny*/,
4435  126 /*toYearTiny*/,
4436  10 /*inMonth*/,
4437  7 /*onDayOfWeek*/,
4438  1 /*onDayOfMonth*/,
4439  0 /*atTimeCode*/,
4440  'w' /*atTimeModifier*/,
4441  4 /*deltaCode*/,
4442  '-' /*letter*/,
4443  },
4444  // Rule Para 2010 2012 - Apr Sun>=8 0:00 0 -
4445  {
4446  10 /*fromYearTiny*/,
4447  12 /*toYearTiny*/,
4448  4 /*inMonth*/,
4449  7 /*onDayOfWeek*/,
4450  8 /*onDayOfMonth*/,
4451  0 /*atTimeCode*/,
4452  'w' /*atTimeModifier*/,
4453  0 /*deltaCode*/,
4454  '-' /*letter*/,
4455  },
4456  // Rule Para 2013 max - Mar Sun>=22 0:00 0 -
4457  {
4458  13 /*fromYearTiny*/,
4459  126 /*toYearTiny*/,
4460  3 /*inMonth*/,
4461  7 /*onDayOfWeek*/,
4462  22 /*onDayOfMonth*/,
4463  0 /*atTimeCode*/,
4464  'w' /*atTimeModifier*/,
4465  0 /*deltaCode*/,
4466  '-' /*letter*/,
4467  },
4468 
4469 };
4470 
4471 
4472 
4473 const basic::ZonePolicy kPolicyPara = {
4474  10 /*numRules*/,
4475  kZoneRulesPara /*rules*/,
4476  0 /* numLetters */,
4477  nullptr /* letters */,
4478 };
4479 
4480 //---------------------------------------------------------------------------
4481 // Policy name: Peru
4482 // Rules: 1
4483 // Memory (8-bit): 15
4484 // Memory (32-bit): 19
4485 //---------------------------------------------------------------------------
4486 
4487 static const basic::ZoneRule kZoneRulesPeru[] = {
4488  // Rule Peru 1994 only - Apr 1 0:00 0 -
4489  {
4490  -6 /*fromYearTiny*/,
4491  -6 /*toYearTiny*/,
4492  4 /*inMonth*/,
4493  0 /*onDayOfWeek*/,
4494  1 /*onDayOfMonth*/,
4495  0 /*atTimeCode*/,
4496  'w' /*atTimeModifier*/,
4497  0 /*deltaCode*/,
4498  '-' /*letter*/,
4499  },
4500 
4501 };
4502 
4503 
4504 
4505 const basic::ZonePolicy kPolicyPeru = {
4506  1 /*numRules*/,
4507  kZoneRulesPeru /*rules*/,
4508  0 /* numLetters */,
4509  nullptr /* letters */,
4510 };
4511 
4512 //---------------------------------------------------------------------------
4513 // Policy name: Phil
4514 // Rules: 1
4515 // Memory (8-bit): 15
4516 // Memory (32-bit): 19
4517 //---------------------------------------------------------------------------
4518 
4519 static const basic::ZoneRule kZoneRulesPhil[] = {
4520  // Rule Phil 1978 only - Sep 21 0:00 0 S
4521  {
4522  -22 /*fromYearTiny*/,
4523  -22 /*toYearTiny*/,
4524  9 /*inMonth*/,
4525  0 /*onDayOfWeek*/,
4526  21 /*onDayOfMonth*/,
4527  0 /*atTimeCode*/,
4528  'w' /*atTimeModifier*/,
4529  0 /*deltaCode*/,
4530  'S' /*letter*/,
4531  },
4532 
4533 };
4534 
4535 
4536 
4537 const basic::ZonePolicy kPolicyPhil = {
4538  1 /*numRules*/,
4539  kZoneRulesPhil /*rules*/,
4540  0 /* numLetters */,
4541  nullptr /* letters */,
4542 };
4543 
4544 //---------------------------------------------------------------------------
4545 // Policy name: ROK
4546 // Rules: 1
4547 // Memory (8-bit): 15
4548 // Memory (32-bit): 19
4549 //---------------------------------------------------------------------------
4550 
4551 static const basic::ZoneRule kZoneRulesROK[] = {
4552  // Rule ROK 1987 1988 - Oct Sun>=8 3:00 0 S
4553  {
4554  -13 /*fromYearTiny*/,
4555  -12 /*toYearTiny*/,
4556  10 /*inMonth*/,
4557  7 /*onDayOfWeek*/,
4558  8 /*onDayOfMonth*/,
4559  12 /*atTimeCode*/,
4560  'w' /*atTimeModifier*/,
4561  0 /*deltaCode*/,
4562  'S' /*letter*/,
4563  },
4564 
4565 };
4566 
4567 
4568 
4569 const basic::ZonePolicy kPolicyROK = {
4570  1 /*numRules*/,
4571  kZoneRulesROK /*rules*/,
4572  0 /* numLetters */,
4573  nullptr /* letters */,
4574 };
4575 
4576 //---------------------------------------------------------------------------
4577 // Policy name: RussiaAsia
4578 // Rules: 3
4579 // Memory (8-bit): 33
4580 // Memory (32-bit): 37
4581 //---------------------------------------------------------------------------
4582 
4583 static const basic::ZoneRule kZoneRulesRussiaAsia[] = {
4584  // Rule RussiaAsia 1984 1995 - Sep lastSun 2:00s 0 -
4585  {
4586  -16 /*fromYearTiny*/,
4587  -5 /*toYearTiny*/,
4588  9 /*inMonth*/,
4589  7 /*onDayOfWeek*/,
4590  0 /*onDayOfMonth*/,
4591  8 /*atTimeCode*/,
4592  's' /*atTimeModifier*/,
4593  0 /*deltaCode*/,
4594  '-' /*letter*/,
4595  },
4596  // Rule RussiaAsia 1985 2010 - Mar lastSun 2:00s 1:00 -
4597  {
4598  -15 /*fromYearTiny*/,
4599  10 /*toYearTiny*/,
4600  3 /*inMonth*/,
4601  7 /*onDayOfWeek*/,
4602  0 /*onDayOfMonth*/,
4603  8 /*atTimeCode*/,
4604  's' /*atTimeModifier*/,
4605  4 /*deltaCode*/,
4606  '-' /*letter*/,
4607  },
4608  // Rule RussiaAsia 1996 2010 - Oct lastSun 2:00s 0 -
4609  {
4610  -4 /*fromYearTiny*/,
4611  10 /*toYearTiny*/,
4612  10 /*inMonth*/,
4613  7 /*onDayOfWeek*/,
4614  0 /*onDayOfMonth*/,
4615  8 /*atTimeCode*/,
4616  's' /*atTimeModifier*/,
4617  0 /*deltaCode*/,
4618  '-' /*letter*/,
4619  },
4620 
4621 };
4622 
4623 
4624 
4625 const basic::ZonePolicy kPolicyRussiaAsia = {
4626  3 /*numRules*/,
4627  kZoneRulesRussiaAsia /*rules*/,
4628  0 /* numLetters */,
4629  nullptr /* letters */,
4630 };
4631 
4632 //---------------------------------------------------------------------------
4633 // Policy name: SA
4634 // Rules: 1
4635 // Memory (8-bit): 15
4636 // Memory (32-bit): 19
4637 //---------------------------------------------------------------------------
4638 
4639 static const basic::ZoneRule kZoneRulesSA[] = {
4640  // Rule SA 1943 1944 - Mar Sun>=15 2:00 0 -
4641  {
4642  -57 /*fromYearTiny*/,
4643  -56 /*toYearTiny*/,
4644  3 /*inMonth*/,
4645  7 /*onDayOfWeek*/,
4646  15 /*onDayOfMonth*/,
4647  8 /*atTimeCode*/,
4648  'w' /*atTimeModifier*/,
4649  0 /*deltaCode*/,
4650  '-' /*letter*/,
4651  },
4652 
4653 };
4654 
4655 
4656 
4657 const basic::ZonePolicy kPolicySA = {
4658  1 /*numRules*/,
4659  kZoneRulesSA /*rules*/,
4660  0 /* numLetters */,
4661  nullptr /* letters */,
4662 };
4663 
4664 //---------------------------------------------------------------------------
4665 // Policy name: Salv
4666 // Rules: 1
4667 // Memory (8-bit): 15
4668 // Memory (32-bit): 19
4669 //---------------------------------------------------------------------------
4670 
4671 static const basic::ZoneRule kZoneRulesSalv[] = {
4672  // Rule Salv 1987 1988 - Sep lastSun 0:00 0 S
4673  {
4674  -13 /*fromYearTiny*/,
4675  -12 /*toYearTiny*/,
4676  9 /*inMonth*/,
4677  7 /*onDayOfWeek*/,
4678  0 /*onDayOfMonth*/,
4679  0 /*atTimeCode*/,
4680  'w' /*atTimeModifier*/,
4681  0 /*deltaCode*/,
4682  'S' /*letter*/,
4683  },
4684 
4685 };
4686 
4687 
4688 
4689 const basic::ZonePolicy kPolicySalv = {
4690  1 /*numRules*/,
4691  kZoneRulesSalv /*rules*/,
4692  0 /* numLetters */,
4693  nullptr /* letters */,
4694 };
4695 
4696 //---------------------------------------------------------------------------
4697 // Policy name: Syria
4698 // Rules: 12
4699 // Memory (8-bit): 114
4700 // Memory (32-bit): 118
4701 //---------------------------------------------------------------------------
4702 
4703 static const basic::ZoneRule kZoneRulesSyria[] = {
4704  // Rule Syria 1994 2005 - Oct 1 0:00 0 -
4705  {
4706  -6 /*fromYearTiny*/,
4707  5 /*toYearTiny*/,
4708  10 /*inMonth*/,
4709  0 /*onDayOfWeek*/,
4710  1 /*onDayOfMonth*/,
4711  0 /*atTimeCode*/,
4712  'w' /*atTimeModifier*/,
4713  0 /*deltaCode*/,
4714  '-' /*letter*/,
4715  },
4716  // Rule Syria 1997 1998 - Mar lastMon 0:00 1:00 S
4717  {
4718  -3 /*fromYearTiny*/,
4719  -2 /*toYearTiny*/,
4720  3 /*inMonth*/,
4721  1 /*onDayOfWeek*/,
4722  0 /*onDayOfMonth*/,
4723  0 /*atTimeCode*/,
4724  'w' /*atTimeModifier*/,
4725  4 /*deltaCode*/,
4726  'S' /*letter*/,
4727  },
4728  // Rule Syria 1999 2006 - Apr 1 0:00 1:00 S
4729  {
4730  -1 /*fromYearTiny*/,
4731  6 /*toYearTiny*/,
4732  4 /*inMonth*/,
4733  0 /*onDayOfWeek*/,
4734  1 /*onDayOfMonth*/,
4735  0 /*atTimeCode*/,
4736  'w' /*atTimeModifier*/,
4737  4 /*deltaCode*/,
4738  'S' /*letter*/,
4739  },
4740  // Rule Syria 2006 only - Sep 22 0:00 0 -
4741  {
4742  6 /*fromYearTiny*/,
4743  6 /*toYearTiny*/,
4744  9 /*inMonth*/,
4745  0 /*onDayOfWeek*/,
4746  22 /*onDayOfMonth*/,
4747  0 /*atTimeCode*/,
4748  'w' /*atTimeModifier*/,
4749  0 /*deltaCode*/,
4750  '-' /*letter*/,
4751  },
4752  // Rule Syria 2007 only - Mar lastFri 0:00 1:00 S
4753  {
4754  7 /*fromYearTiny*/,
4755  7 /*toYearTiny*/,
4756  3 /*inMonth*/,
4757  5 /*onDayOfWeek*/,
4758  0 /*onDayOfMonth*/,
4759  0 /*atTimeCode*/,
4760  'w' /*atTimeModifier*/,
4761  4 /*deltaCode*/,
4762  'S' /*letter*/,
4763  },
4764  // Rule Syria 2007 only - Nov Fri>=1 0:00 0 -
4765  {
4766  7 /*fromYearTiny*/,
4767  7 /*toYearTiny*/,
4768  11 /*inMonth*/,
4769  5 /*onDayOfWeek*/,
4770  1 /*onDayOfMonth*/,
4771  0 /*atTimeCode*/,
4772  'w' /*atTimeModifier*/,
4773  0 /*deltaCode*/,
4774  '-' /*letter*/,
4775  },
4776  // Rule Syria 2008 only - Apr Fri>=1 0:00 1:00 S
4777  {
4778  8 /*fromYearTiny*/,
4779  8 /*toYearTiny*/,
4780  4 /*inMonth*/,
4781  5 /*onDayOfWeek*/,
4782  1 /*onDayOfMonth*/,
4783  0 /*atTimeCode*/,
4784  'w' /*atTimeModifier*/,
4785  4 /*deltaCode*/,
4786  'S' /*letter*/,
4787  },
4788  // Rule Syria 2008 only - Nov 1 0:00 0 -
4789  {
4790  8 /*fromYearTiny*/,
4791  8 /*toYearTiny*/,
4792  11 /*inMonth*/,
4793  0 /*onDayOfWeek*/,
4794  1 /*onDayOfMonth*/,
4795  0 /*atTimeCode*/,
4796  'w' /*atTimeModifier*/,
4797  0 /*deltaCode*/,
4798  '-' /*letter*/,
4799  },
4800  // Rule Syria 2009 only - Mar lastFri 0:00 1:00 S
4801  {
4802  9 /*fromYearTiny*/,
4803  9 /*toYearTiny*/,
4804  3 /*inMonth*/,
4805  5 /*onDayOfWeek*/,
4806  0 /*onDayOfMonth*/,
4807  0 /*atTimeCode*/,
4808  'w' /*atTimeModifier*/,
4809  4 /*deltaCode*/,
4810  'S' /*letter*/,
4811  },
4812  // Rule Syria 2010 2011 - Apr Fri>=1 0:00 1:00 S
4813  {
4814  10 /*fromYearTiny*/,
4815  11 /*toYearTiny*/,
4816  4 /*inMonth*/,
4817  5 /*onDayOfWeek*/,
4818  1 /*onDayOfMonth*/,
4819  0 /*atTimeCode*/,
4820  'w' /*atTimeModifier*/,
4821  4 /*deltaCode*/,
4822  'S' /*letter*/,
4823  },
4824  // Rule Syria 2012 max - Mar lastFri 0:00 1:00 S
4825  {
4826  12 /*fromYearTiny*/,
4827  126 /*toYearTiny*/,
4828  3 /*inMonth*/,
4829  5 /*onDayOfWeek*/,
4830  0 /*onDayOfMonth*/,
4831  0 /*atTimeCode*/,
4832  'w' /*atTimeModifier*/,
4833  4 /*deltaCode*/,
4834  'S' /*letter*/,
4835  },
4836  // Rule Syria 2009 max - Oct lastFri 0:00 0 -
4837  {
4838  9 /*fromYearTiny*/,
4839  126 /*toYearTiny*/,
4840  10 /*inMonth*/,
4841  5 /*onDayOfWeek*/,
4842  0 /*onDayOfMonth*/,
4843  0 /*atTimeCode*/,
4844  'w' /*atTimeModifier*/,
4845  0 /*deltaCode*/,
4846  '-' /*letter*/,
4847  },
4848 
4849 };
4850 
4851 
4852 
4853 const basic::ZonePolicy kPolicySyria = {
4854  12 /*numRules*/,
4855  kZoneRulesSyria /*rules*/,
4856  0 /* numLetters */,
4857  nullptr /* letters */,
4858 };
4859 
4860 //---------------------------------------------------------------------------
4861 // Policy name: Taiwan
4862 // Rules: 1
4863 // Memory (8-bit): 15
4864 // Memory (32-bit): 19
4865 //---------------------------------------------------------------------------
4866 
4867 static const basic::ZoneRule kZoneRulesTaiwan[] = {
4868  // Rule Taiwan 1979 only - Oct 1 0:00 0 S
4869  {
4870  -21 /*fromYearTiny*/,
4871  -21 /*toYearTiny*/,
4872  10 /*inMonth*/,
4873  0 /*onDayOfWeek*/,
4874  1 /*onDayOfMonth*/,
4875  0 /*atTimeCode*/,
4876  'w' /*atTimeModifier*/,
4877  0 /*deltaCode*/,
4878  'S' /*letter*/,
4879  },
4880 
4881 };
4882 
4883 
4884 
4885 const basic::ZonePolicy kPolicyTaiwan = {
4886  1 /*numRules*/,
4887  kZoneRulesTaiwan /*rules*/,
4888  0 /* numLetters */,
4889  nullptr /* letters */,
4890 };
4891 
4892 //---------------------------------------------------------------------------
4893 // Policy name: Thule
4894 // Rules: 5
4895 // Memory (8-bit): 51
4896 // Memory (32-bit): 55
4897 //---------------------------------------------------------------------------
4898 
4899 static const basic::ZoneRule kZoneRulesThule[] = {
4900  // Rule Thule 1991 1992 - Sep lastSun 2:00 0 S
4901  {
4902  -9 /*fromYearTiny*/,
4903  -8 /*toYearTiny*/,
4904  9 /*inMonth*/,
4905  7 /*onDayOfWeek*/,
4906  0 /*onDayOfMonth*/,
4907  8 /*atTimeCode*/,
4908  'w' /*atTimeModifier*/,
4909  0 /*deltaCode*/,
4910  'S' /*letter*/,
4911  },
4912  // Rule Thule 1993 2006 - Apr Sun>=1 2:00 1:00 D
4913  {
4914  -7 /*fromYearTiny*/,
4915  6 /*toYearTiny*/,
4916  4 /*inMonth*/,
4917  7 /*onDayOfWeek*/,
4918  1 /*onDayOfMonth*/,
4919  8 /*atTimeCode*/,
4920  'w' /*atTimeModifier*/,
4921  4 /*deltaCode*/,
4922  'D' /*letter*/,
4923  },
4924  // Rule Thule 1993 2006 - Oct lastSun 2:00 0 S
4925  {
4926  -7 /*fromYearTiny*/,
4927  6 /*toYearTiny*/,
4928  10 /*inMonth*/,
4929  7 /*onDayOfWeek*/,
4930  0 /*onDayOfMonth*/,
4931  8 /*atTimeCode*/,
4932  'w' /*atTimeModifier*/,
4933  0 /*deltaCode*/,
4934  'S' /*letter*/,
4935  },
4936  // Rule Thule 2007 max - Mar Sun>=8 2:00 1:00 D
4937  {
4938  7 /*fromYearTiny*/,
4939  126 /*toYearTiny*/,
4940  3 /*inMonth*/,
4941  7 /*onDayOfWeek*/,
4942  8 /*onDayOfMonth*/,
4943  8 /*atTimeCode*/,
4944  'w' /*atTimeModifier*/,
4945  4 /*deltaCode*/,
4946  'D' /*letter*/,
4947  },
4948  // Rule Thule 2007 max - Nov Sun>=1 2:00 0 S
4949  {
4950  7 /*fromYearTiny*/,
4951  126 /*toYearTiny*/,
4952  11 /*inMonth*/,
4953  7 /*onDayOfWeek*/,
4954  1 /*onDayOfMonth*/,
4955  8 /*atTimeCode*/,
4956  'w' /*atTimeModifier*/,
4957  0 /*deltaCode*/,
4958  'S' /*letter*/,
4959  },
4960 
4961 };
4962 
4963 
4964 
4965 const basic::ZonePolicy kPolicyThule = {
4966  5 /*numRules*/,
4967  kZoneRulesThule /*rules*/,
4968  0 /* numLetters */,
4969  nullptr /* letters */,
4970 };
4971 
4972 //---------------------------------------------------------------------------
4973 // Policy name: Tonga
4974 // Rules: 7
4975 // Memory (8-bit): 69
4976 // Memory (32-bit): 73
4977 //---------------------------------------------------------------------------
4978 
4979 static const basic::ZoneRule kZoneRulesTonga[] = {
4980  // Anchor: Rule Tonga 2000 only - Mar 19 2:00s 0 -
4981  {
4982  -127 /*fromYearTiny*/,
4983  -127 /*toYearTiny*/,
4984  1 /*inMonth*/,
4985  0 /*onDayOfWeek*/,
4986  1 /*onDayOfMonth*/,
4987  0 /*atTimeCode*/,
4988  'w' /*atTimeModifier*/,
4989  0 /*deltaCode*/,
4990  '-' /*letter*/,
4991  },
4992  // Rule Tonga 1999 only - Oct 7 2:00s 1:00 -
4993  {
4994  -1 /*fromYearTiny*/,
4995  -1 /*toYearTiny*/,
4996  10 /*inMonth*/,
4997  0 /*onDayOfWeek*/,
4998  7 /*onDayOfMonth*/,
4999  8 /*atTimeCode*/,
5000  's' /*atTimeModifier*/,
5001  4 /*deltaCode*/,
5002  '-' /*letter*/,
5003  },
5004  // Rule Tonga 2000 only - Mar 19 2:00s 0 -
5005  {
5006  0 /*fromYearTiny*/,
5007  0 /*toYearTiny*/,
5008  3 /*inMonth*/,
5009  0 /*onDayOfWeek*/,
5010  19 /*onDayOfMonth*/,
5011  8 /*atTimeCode*/,
5012  's' /*atTimeModifier*/,
5013  0 /*deltaCode*/,
5014  '-' /*letter*/,
5015  },
5016  // Rule Tonga 2000 2001 - Nov Sun>=1 2:00 1:00 -
5017  {
5018  0 /*fromYearTiny*/,
5019  1 /*toYearTiny*/,
5020  11 /*inMonth*/,
5021  7 /*onDayOfWeek*/,
5022  1 /*onDayOfMonth*/,
5023  8 /*atTimeCode*/,
5024  'w' /*atTimeModifier*/,
5025  4 /*deltaCode*/,
5026  '-' /*letter*/,
5027  },
5028  // Rule Tonga 2001 2002 - Jan lastSun 2:00 0 -
5029  {
5030  1 /*fromYearTiny*/,
5031  2 /*toYearTiny*/,
5032  1 /*inMonth*/,
5033  7 /*onDayOfWeek*/,
5034  0 /*onDayOfMonth*/,
5035  8 /*atTimeCode*/,
5036  'w' /*atTimeModifier*/,
5037  0 /*deltaCode*/,
5038  '-' /*letter*/,
5039  },
5040  // Rule Tonga 2016 only - Nov Sun>=1 2:00 1:00 -
5041  {
5042  16 /*fromYearTiny*/,
5043  16 /*toYearTiny*/,
5044  11 /*inMonth*/,
5045  7 /*onDayOfWeek*/,
5046  1 /*onDayOfMonth*/,
5047  8 /*atTimeCode*/,
5048  'w' /*atTimeModifier*/,
5049  4 /*deltaCode*/,
5050  '-' /*letter*/,
5051  },
5052  // Rule Tonga 2017 only - Jan Sun>=15 3:00 0 -
5053  {
5054  17 /*fromYearTiny*/,
5055  17 /*toYearTiny*/,
5056  1 /*inMonth*/,
5057  7 /*onDayOfWeek*/,
5058  15 /*onDayOfMonth*/,
5059  12 /*atTimeCode*/,
5060  'w' /*atTimeModifier*/,
5061  0 /*deltaCode*/,
5062  '-' /*letter*/,
5063  },
5064 
5065 };
5066 
5067 
5068 
5069 const basic::ZonePolicy kPolicyTonga = {
5070  7 /*numRules*/,
5071  kZoneRulesTonga /*rules*/,
5072  0 /* numLetters */,
5073  nullptr /* letters */,
5074 };
5075 
5076 //---------------------------------------------------------------------------
5077 // Policy name: Tunisia
5078 // Rules: 5
5079 // Memory (8-bit): 51
5080 // Memory (32-bit): 55
5081 //---------------------------------------------------------------------------
5082 
5083 static const basic::ZoneRule kZoneRulesTunisia[] = {
5084  // Rule Tunisia 1988 1990 - Sep lastSun 0:00s 0 -
5085  {
5086  -12 /*fromYearTiny*/,
5087  -10 /*toYearTiny*/,
5088  9 /*inMonth*/,
5089  7 /*onDayOfWeek*/,
5090  0 /*onDayOfMonth*/,
5091  0 /*atTimeCode*/,
5092  's' /*atTimeModifier*/,
5093  0 /*deltaCode*/,
5094  '-' /*letter*/,
5095  },
5096  // Rule Tunisia 2005 only - May 1 0:00s 1:00 S
5097  {
5098  5 /*fromYearTiny*/,
5099  5 /*toYearTiny*/,
5100  5 /*inMonth*/,
5101  0 /*onDayOfWeek*/,
5102  1 /*onDayOfMonth*/,
5103  0 /*atTimeCode*/,
5104  's' /*atTimeModifier*/,
5105  4 /*deltaCode*/,
5106  'S' /*letter*/,
5107  },
5108  // Rule Tunisia 2005 only - Sep 30 1:00s 0 -
5109  {
5110  5 /*fromYearTiny*/,
5111  5 /*toYearTiny*/,
5112  9 /*inMonth*/,
5113  0 /*onDayOfWeek*/,
5114  30 /*onDayOfMonth*/,
5115  4 /*atTimeCode*/,
5116  's' /*atTimeModifier*/,
5117  0 /*deltaCode*/,
5118  '-' /*letter*/,
5119  },
5120  // Rule Tunisia 2006 2008 - Mar lastSun 2:00s 1:00 S
5121  {
5122  6 /*fromYearTiny*/,
5123  8 /*toYearTiny*/,
5124  3 /*inMonth*/,
5125  7 /*onDayOfWeek*/,
5126  0 /*onDayOfMonth*/,
5127  8 /*atTimeCode*/,
5128  's' /*atTimeModifier*/,
5129  4 /*deltaCode*/,
5130  'S' /*letter*/,
5131  },
5132  // Rule Tunisia 2006 2008 - Oct lastSun 2:00s 0 -
5133  {
5134  6 /*fromYearTiny*/,
5135  8 /*toYearTiny*/,
5136  10 /*inMonth*/,
5137  7 /*onDayOfWeek*/,
5138  0 /*onDayOfMonth*/,
5139  8 /*atTimeCode*/,
5140  's' /*atTimeModifier*/,
5141  0 /*deltaCode*/,
5142  '-' /*letter*/,
5143  },
5144 
5145 };
5146 
5147 
5148 
5149 const basic::ZonePolicy kPolicyTunisia = {
5150  5 /*numRules*/,
5151  kZoneRulesTunisia /*rules*/,
5152  0 /* numLetters */,
5153  nullptr /* letters */,
5154 };
5155 
5156 //---------------------------------------------------------------------------
5157 // Policy name: US
5158 // Rules: 5
5159 // Memory (8-bit): 51
5160 // Memory (32-bit): 55
5161 //---------------------------------------------------------------------------
5162 
5163 static const basic::ZoneRule kZoneRulesUS[] = {
5164  // Rule US 1967 2006 - Oct lastSun 2:00 0 S
5165  {
5166  -33 /*fromYearTiny*/,
5167  6 /*toYearTiny*/,
5168  10 /*inMonth*/,
5169  7 /*onDayOfWeek*/,
5170  0 /*onDayOfMonth*/,
5171  8 /*atTimeCode*/,
5172  'w' /*atTimeModifier*/,
5173  0 /*deltaCode*/,
5174  'S' /*letter*/,
5175  },
5176  // Rule US 1976 1986 - Apr lastSun 2:00 1:00 D
5177  {
5178  -24 /*fromYearTiny*/,
5179  -14 /*toYearTiny*/,
5180  4 /*inMonth*/,
5181  7 /*onDayOfWeek*/,
5182  0 /*onDayOfMonth*/,
5183  8 /*atTimeCode*/,
5184  'w' /*atTimeModifier*/,
5185  4 /*deltaCode*/,
5186  'D' /*letter*/,
5187  },
5188  // Rule US 1987 2006 - Apr Sun>=1 2:00 1:00 D
5189  {
5190  -13 /*fromYearTiny*/,
5191  6 /*toYearTiny*/,
5192  4 /*inMonth*/,
5193  7 /*onDayOfWeek*/,
5194  1 /*onDayOfMonth*/,
5195  8 /*atTimeCode*/,
5196  'w' /*atTimeModifier*/,
5197  4 /*deltaCode*/,
5198  'D' /*letter*/,
5199  },
5200  // Rule US 2007 max - Mar Sun>=8 2:00 1:00 D
5201  {
5202  7 /*fromYearTiny*/,
5203  126 /*toYearTiny*/,
5204  3 /*inMonth*/,
5205  7 /*onDayOfWeek*/,
5206  8 /*onDayOfMonth*/,
5207  8 /*atTimeCode*/,
5208  'w' /*atTimeModifier*/,
5209  4 /*deltaCode*/,
5210  'D' /*letter*/,
5211  },
5212  // Rule US 2007 max - Nov Sun>=1 2:00 0 S
5213  {
5214  7 /*fromYearTiny*/,
5215  126 /*toYearTiny*/,
5216  11 /*inMonth*/,
5217  7 /*onDayOfWeek*/,
5218  1 /*onDayOfMonth*/,
5219  8 /*atTimeCode*/,
5220  'w' /*atTimeModifier*/,
5221  0 /*deltaCode*/,
5222  'S' /*letter*/,
5223  },
5224 
5225 };
5226 
5227 
5228 
5229 const basic::ZonePolicy kPolicyUS = {
5230  5 /*numRules*/,
5231  kZoneRulesUS /*rules*/,
5232  0 /* numLetters */,
5233  nullptr /* letters */,
5234 };
5235 
5236 //---------------------------------------------------------------------------
5237 // Policy name: Uruguay
5238 // Rules: 6
5239 // Memory (8-bit): 60
5240 // Memory (32-bit): 64
5241 //---------------------------------------------------------------------------
5242 
5243 static const basic::ZoneRule kZoneRulesUruguay[] = {
5244  // Rule Uruguay 1993 only - Feb 28 0:00 0 -
5245  {
5246  -7 /*fromYearTiny*/,
5247  -7 /*toYearTiny*/,
5248  2 /*inMonth*/,
5249  0 /*onDayOfWeek*/,
5250  28 /*onDayOfMonth*/,
5251  0 /*atTimeCode*/,
5252  'w' /*atTimeModifier*/,
5253  0 /*deltaCode*/,
5254  '-' /*letter*/,
5255  },
5256  // Rule Uruguay 2004 only - Sep 19 0:00 1:00 -
5257  {
5258  4 /*fromYearTiny*/,
5259  4 /*toYearTiny*/,
5260  9 /*inMonth*/,
5261  0 /*onDayOfWeek*/,
5262  19 /*onDayOfMonth*/,
5263  0 /*atTimeCode*/,
5264  'w' /*atTimeModifier*/,
5265  4 /*deltaCode*/,
5266  '-' /*letter*/,
5267  },
5268  // Rule Uruguay 2005 only - Mar 27 2:00 0 -
5269  {
5270  5 /*fromYearTiny*/,
5271  5 /*toYearTiny*/,
5272  3 /*inMonth*/,
5273  0 /*onDayOfWeek*/,
5274  27 /*onDayOfMonth*/,
5275  8 /*atTimeCode*/,
5276  'w' /*atTimeModifier*/,
5277  0 /*deltaCode*/,
5278  '-' /*letter*/,
5279  },
5280  // Rule Uruguay 2005 only - Oct 9 2:00 1:00 -
5281  {
5282  5 /*fromYearTiny*/,
5283  5 /*toYearTiny*/,
5284  10 /*inMonth*/,
5285  0 /*onDayOfWeek*/,
5286  9 /*onDayOfMonth*/,
5287  8 /*atTimeCode*/,
5288  'w' /*atTimeModifier*/,
5289  4 /*deltaCode*/,
5290  '-' /*letter*/,
5291  },
5292  // Rule Uruguay 2006 2015 - Mar Sun>=8 2:00 0 -
5293  {
5294  6 /*fromYearTiny*/,
5295  15 /*toYearTiny*/,
5296  3 /*inMonth*/,
5297  7 /*onDayOfWeek*/,
5298  8 /*onDayOfMonth*/,
5299  8 /*atTimeCode*/,
5300  'w' /*atTimeModifier*/,
5301  0 /*deltaCode*/,
5302  '-' /*letter*/,
5303  },
5304  // Rule Uruguay 2006 2014 - Oct Sun>=1 2:00 1:00 -
5305  {
5306  6 /*fromYearTiny*/,
5307  14 /*toYearTiny*/,
5308  10 /*inMonth*/,
5309  7 /*onDayOfWeek*/,
5310  1 /*onDayOfMonth*/,
5311  8 /*atTimeCode*/,
5312  'w' /*atTimeModifier*/,
5313  4 /*deltaCode*/,
5314  '-' /*letter*/,
5315  },
5316 
5317 };
5318 
5319 
5320 
5321 const basic::ZonePolicy kPolicyUruguay = {
5322  6 /*numRules*/,
5323  kZoneRulesUruguay /*rules*/,
5324  0 /* numLetters */,
5325  nullptr /* letters */,
5326 };
5327 
5328 //---------------------------------------------------------------------------
5329 // Policy name: Vanuatu
5330 // Rules: 1
5331 // Memory (8-bit): 15
5332 // Memory (32-bit): 19
5333 //---------------------------------------------------------------------------
5334 
5335 static const basic::ZoneRule kZoneRulesVanuatu[] = {
5336  // Rule Vanuatu 1992 1993 - Jan Sun>=23 0:00 0 -
5337  {
5338  -8 /*fromYearTiny*/,
5339  -7 /*toYearTiny*/,
5340  1 /*inMonth*/,
5341  7 /*onDayOfWeek*/,
5342  23 /*onDayOfMonth*/,
5343  0 /*atTimeCode*/,
5344  'w' /*atTimeModifier*/,
5345  0 /*deltaCode*/,
5346  '-' /*letter*/,
5347  },
5348 
5349 };
5350 
5351 
5352 
5353 const basic::ZonePolicy kPolicyVanuatu = {
5354  1 /*numRules*/,
5355  kZoneRulesVanuatu /*rules*/,
5356  0 /* numLetters */,
5357  nullptr /* letters */,
5358 };
5359 
5360 //---------------------------------------------------------------------------
5361 // Policy name: Winn
5362 // Rules: 3
5363 // Memory (8-bit): 33
5364 // Memory (32-bit): 37
5365 //---------------------------------------------------------------------------
5366 
5367 static const basic::ZoneRule kZoneRulesWinn[] = {
5368  // Rule Winn 1966 1986 - Apr lastSun 2:00s 1:00 D
5369  {
5370  -34 /*fromYearTiny*/,
5371  -14 /*toYearTiny*/,
5372  4 /*inMonth*/,
5373  7 /*onDayOfWeek*/,
5374  0 /*onDayOfMonth*/,
5375  8 /*atTimeCode*/,
5376  's' /*atTimeModifier*/,
5377  4 /*deltaCode*/,
5378  'D' /*letter*/,
5379  },
5380  // Rule Winn 1966 2005 - Oct lastSun 2:00s 0 S
5381  {
5382  -34 /*fromYearTiny*/,
5383  5 /*toYearTiny*/,
5384  10 /*inMonth*/,
5385  7 /*onDayOfWeek*/,
5386  0 /*onDayOfMonth*/,
5387  8 /*atTimeCode*/,
5388  's' /*atTimeModifier*/,
5389  0 /*deltaCode*/,
5390  'S' /*letter*/,
5391  },
5392  // Rule Winn 1987 2005 - Apr Sun>=1 2:00s 1:00 D
5393  {
5394  -13 /*fromYearTiny*/,
5395  5 /*toYearTiny*/,
5396  4 /*inMonth*/,
5397  7 /*onDayOfWeek*/,
5398  1 /*onDayOfMonth*/,
5399  8 /*atTimeCode*/,
5400  's' /*atTimeModifier*/,
5401  4 /*deltaCode*/,
5402  'D' /*letter*/,
5403  },
5404 
5405 };
5406 
5407 
5408 
5409 const basic::ZonePolicy kPolicyWinn = {
5410  3 /*numRules*/,
5411  kZoneRulesWinn /*rules*/,
5412  0 /* numLetters */,
5413  nullptr /* letters */,
5414 };
5415 
5416 //---------------------------------------------------------------------------
5417 // Policy name: Zion
5418 // Rules: 27
5419 // Memory (8-bit): 249
5420 // Memory (32-bit): 253
5421 //---------------------------------------------------------------------------
5422 
5423 static const basic::ZoneRule kZoneRulesZion[] = {
5424  // Rule Zion 1998 only - Sep 6 0:00 0 S
5425  {
5426  -2 /*fromYearTiny*/,
5427  -2 /*toYearTiny*/,
5428  9 /*inMonth*/,
5429  0 /*onDayOfWeek*/,
5430  6 /*onDayOfMonth*/,
5431  0 /*atTimeCode*/,
5432  'w' /*atTimeModifier*/,
5433  0 /*deltaCode*/,
5434  'S' /*letter*/,
5435  },
5436  // Rule Zion 1999 only - Apr 2 2:00 1:00 D
5437  {
5438  -1 /*fromYearTiny*/,
5439  -1 /*toYearTiny*/,
5440  4 /*inMonth*/,
5441  0 /*onDayOfWeek*/,
5442  2 /*onDayOfMonth*/,
5443  8 /*atTimeCode*/,
5444  'w' /*atTimeModifier*/,
5445  4 /*deltaCode*/,
5446  'D' /*letter*/,
5447  },
5448  // Rule Zion 1999 only - Sep 3 2:00 0 S
5449  {
5450  -1 /*fromYearTiny*/,
5451  -1 /*toYearTiny*/,
5452  9 /*inMonth*/,
5453  0 /*onDayOfWeek*/,
5454  3 /*onDayOfMonth*/,
5455  8 /*atTimeCode*/,
5456  'w' /*atTimeModifier*/,
5457  0 /*deltaCode*/,
5458  'S' /*letter*/,
5459  },
5460  // Rule Zion 2000 only - Apr 14 2:00 1:00 D
5461  {
5462  0 /*fromYearTiny*/,
5463  0 /*toYearTiny*/,
5464  4 /*inMonth*/,
5465  0 /*onDayOfWeek*/,
5466  14 /*onDayOfMonth*/,
5467  8 /*atTimeCode*/,
5468  'w' /*atTimeModifier*/,
5469  4 /*deltaCode*/,
5470  'D' /*letter*/,
5471  },
5472  // Rule Zion 2000 only - Oct 6 1:00 0 S
5473  {
5474  0 /*fromYearTiny*/,
5475  0 /*toYearTiny*/,
5476  10 /*inMonth*/,
5477  0 /*onDayOfWeek*/,
5478  6 /*onDayOfMonth*/,
5479  4 /*atTimeCode*/,
5480  'w' /*atTimeModifier*/,
5481  0 /*deltaCode*/,
5482  'S' /*letter*/,
5483  },
5484  // Rule Zion 2001 only - Apr 9 1:00 1:00 D
5485  {
5486  1 /*fromYearTiny*/,
5487  1 /*toYearTiny*/,
5488  4 /*inMonth*/,
5489  0 /*onDayOfWeek*/,
5490  9 /*onDayOfMonth*/,
5491  4 /*atTimeCode*/,
5492  'w' /*atTimeModifier*/,
5493  4 /*deltaCode*/,
5494  'D' /*letter*/,
5495  },
5496  // Rule Zion 2001 only - Sep 24 1:00 0 S
5497  {
5498  1 /*fromYearTiny*/,
5499  1 /*toYearTiny*/,
5500  9 /*inMonth*/,
5501  0 /*onDayOfWeek*/,
5502  24 /*onDayOfMonth*/,
5503  4 /*atTimeCode*/,
5504  'w' /*atTimeModifier*/,
5505  0 /*deltaCode*/,
5506  'S' /*letter*/,
5507  },
5508  // Rule Zion 2002 only - Mar 29 1:00 1:00 D
5509  {
5510  2 /*fromYearTiny*/,
5511  2 /*toYearTiny*/,
5512  3 /*inMonth*/,
5513  0 /*onDayOfWeek*/,
5514  29 /*onDayOfMonth*/,
5515  4 /*atTimeCode*/,
5516  'w' /*atTimeModifier*/,
5517  4 /*deltaCode*/,
5518  'D' /*letter*/,
5519  },
5520  // Rule Zion 2002 only - Oct 7 1:00 0 S
5521  {
5522  2 /*fromYearTiny*/,
5523  2 /*toYearTiny*/,
5524  10 /*inMonth*/,
5525  0 /*onDayOfWeek*/,
5526  7 /*onDayOfMonth*/,
5527  4 /*atTimeCode*/,
5528  'w' /*atTimeModifier*/,
5529  0 /*deltaCode*/,
5530  'S' /*letter*/,
5531  },
5532  // Rule Zion 2003 only - Mar 28 1:00 1:00 D
5533  {
5534  3 /*fromYearTiny*/,
5535  3 /*toYearTiny*/,
5536  3 /*inMonth*/,
5537  0 /*onDayOfWeek*/,
5538  28 /*onDayOfMonth*/,
5539  4 /*atTimeCode*/,
5540  'w' /*atTimeModifier*/,
5541  4 /*deltaCode*/,
5542  'D' /*letter*/,
5543  },
5544  // Rule Zion 2003 only - Oct 3 1:00 0 S
5545  {
5546  3 /*fromYearTiny*/,
5547  3 /*toYearTiny*/,
5548  10 /*inMonth*/,
5549  0 /*onDayOfWeek*/,
5550  3 /*onDayOfMonth*/,
5551  4 /*atTimeCode*/,
5552  'w' /*atTimeModifier*/,
5553  0 /*deltaCode*/,
5554  'S' /*letter*/,
5555  },
5556  // Rule Zion 2004 only - Apr 7 1:00 1:00 D
5557  {
5558  4 /*fromYearTiny*/,
5559  4 /*toYearTiny*/,
5560  4 /*inMonth*/,
5561  0 /*onDayOfWeek*/,
5562  7 /*onDayOfMonth*/,
5563  4 /*atTimeCode*/,
5564  'w' /*atTimeModifier*/,
5565  4 /*deltaCode*/,
5566  'D' /*letter*/,
5567  },
5568  // Rule Zion 2004 only - Sep 22 1:00 0 S
5569  {
5570  4 /*fromYearTiny*/,
5571  4 /*toYearTiny*/,
5572  9 /*inMonth*/,
5573  0 /*onDayOfWeek*/,
5574  22 /*onDayOfMonth*/,
5575  4 /*atTimeCode*/,
5576  'w' /*atTimeModifier*/,
5577  0 /*deltaCode*/,
5578  'S' /*letter*/,
5579  },
5580  // Rule Zion 2005 only - Apr 1 2:00 1:00 D
5581  {
5582  5 /*fromYearTiny*/,
5583  5 /*toYearTiny*/,
5584  4 /*inMonth*/,
5585  0 /*onDayOfWeek*/,
5586  1 /*onDayOfMonth*/,
5587  8 /*atTimeCode*/,
5588  'w' /*atTimeModifier*/,
5589  4 /*deltaCode*/,
5590  'D' /*letter*/,
5591  },
5592  // Rule Zion 2005 only - Oct 9 2:00 0 S
5593  {
5594  5 /*fromYearTiny*/,
5595  5 /*toYearTiny*/,
5596  10 /*inMonth*/,
5597  0 /*onDayOfWeek*/,
5598  9 /*onDayOfMonth*/,
5599  8 /*atTimeCode*/,
5600  'w' /*atTimeModifier*/,
5601  0 /*deltaCode*/,
5602  'S' /*letter*/,
5603  },
5604  // Rule Zion 2006 2010 - Mar Fri>=26 2:00 1:00 D
5605  {
5606  6 /*fromYearTiny*/,
5607  10 /*toYearTiny*/,
5608  3 /*inMonth*/,
5609  5 /*onDayOfWeek*/,
5610  26 /*onDayOfMonth*/,
5611  8 /*atTimeCode*/,
5612  'w' /*atTimeModifier*/,
5613  4 /*deltaCode*/,
5614  'D' /*letter*/,
5615  },
5616  // Rule Zion 2006 only - Oct 1 2:00 0 S
5617  {
5618  6 /*fromYearTiny*/,
5619  6 /*toYearTiny*/,
5620  10 /*inMonth*/,
5621  0 /*onDayOfWeek*/,
5622  1 /*onDayOfMonth*/,
5623  8 /*atTimeCode*/,
5624  'w' /*atTimeModifier*/,
5625  0 /*deltaCode*/,
5626  'S' /*letter*/,
5627  },
5628  // Rule Zion 2007 only - Sep 16 2:00 0 S
5629  {
5630  7 /*fromYearTiny*/,
5631  7 /*toYearTiny*/,
5632  9 /*inMonth*/,
5633  0 /*onDayOfWeek*/,
5634  16 /*onDayOfMonth*/,
5635  8 /*atTimeCode*/,
5636  'w' /*atTimeModifier*/,
5637  0 /*deltaCode*/,
5638  'S' /*letter*/,
5639  },
5640  // Rule Zion 2008 only - Oct 5 2:00 0 S
5641  {
5642  8 /*fromYearTiny*/,
5643  8 /*toYearTiny*/,
5644  10 /*inMonth*/,
5645  0 /*onDayOfWeek*/,
5646  5 /*onDayOfMonth*/,
5647  8 /*atTimeCode*/,
5648  'w' /*atTimeModifier*/,
5649  0 /*deltaCode*/,
5650  'S' /*letter*/,
5651  },
5652  // Rule Zion 2009 only - Sep 27 2:00 0 S
5653  {
5654  9 /*fromYearTiny*/,
5655  9 /*toYearTiny*/,
5656  9 /*inMonth*/,
5657  0 /*onDayOfWeek*/,
5658  27 /*onDayOfMonth*/,
5659  8 /*atTimeCode*/,
5660  'w' /*atTimeModifier*/,
5661  0 /*deltaCode*/,
5662  'S' /*letter*/,
5663  },
5664  // Rule Zion 2010 only - Sep 12 2:00 0 S
5665  {
5666  10 /*fromYearTiny*/,
5667  10 /*toYearTiny*/,
5668  9 /*inMonth*/,
5669  0 /*onDayOfWeek*/,
5670  12 /*onDayOfMonth*/,
5671  8 /*atTimeCode*/,
5672  'w' /*atTimeModifier*/,
5673  0 /*deltaCode*/,
5674  'S' /*letter*/,
5675  },
5676  // Rule Zion 2011 only - Apr 1 2:00 1:00 D
5677  {
5678  11 /*fromYearTiny*/,
5679  11 /*toYearTiny*/,
5680  4 /*inMonth*/,
5681  0 /*onDayOfWeek*/,
5682  1 /*onDayOfMonth*/,
5683  8 /*atTimeCode*/,
5684  'w' /*atTimeModifier*/,
5685  4 /*deltaCode*/,
5686  'D' /*letter*/,
5687  },
5688  // Rule Zion 2011 only - Oct 2 2:00 0 S
5689  {
5690  11 /*fromYearTiny*/,
5691  11 /*toYearTiny*/,
5692  10 /*inMonth*/,
5693  0 /*onDayOfWeek*/,
5694  2 /*onDayOfMonth*/,
5695  8 /*atTimeCode*/,
5696  'w' /*atTimeModifier*/,
5697  0 /*deltaCode*/,
5698  'S' /*letter*/,
5699  },
5700  // Rule Zion 2012 only - Mar Fri>=26 2:00 1:00 D
5701  {
5702  12 /*fromYearTiny*/,
5703  12 /*toYearTiny*/,
5704  3 /*inMonth*/,
5705  5 /*onDayOfWeek*/,
5706  26 /*onDayOfMonth*/,
5707  8 /*atTimeCode*/,
5708  'w' /*atTimeModifier*/,
5709  4 /*deltaCode*/,
5710  'D' /*letter*/,
5711  },
5712  // Rule Zion 2012 only - Sep 23 2:00 0 S
5713  {
5714  12 /*fromYearTiny*/,
5715  12 /*toYearTiny*/,
5716  9 /*inMonth*/,
5717  0 /*onDayOfWeek*/,
5718  23 /*onDayOfMonth*/,
5719  8 /*atTimeCode*/,
5720  'w' /*atTimeModifier*/,
5721  0 /*deltaCode*/,
5722  'S' /*letter*/,
5723  },
5724  // Rule Zion 2013 max - Mar Fri>=23 2:00 1:00 D
5725  {
5726  13 /*fromYearTiny*/,
5727  126 /*toYearTiny*/,
5728  3 /*inMonth*/,
5729  5 /*onDayOfWeek*/,
5730  23 /*onDayOfMonth*/,
5731  8 /*atTimeCode*/,
5732  'w' /*atTimeModifier*/,
5733  4 /*deltaCode*/,
5734  'D' /*letter*/,
5735  },
5736  // Rule Zion 2013 max - Oct lastSun 2:00 0 S
5737  {
5738  13 /*fromYearTiny*/,
5739  126 /*toYearTiny*/,
5740  10 /*inMonth*/,
5741  7 /*onDayOfWeek*/,
5742  0 /*onDayOfMonth*/,
5743  8 /*atTimeCode*/,
5744  'w' /*atTimeModifier*/,
5745  0 /*deltaCode*/,
5746  'S' /*letter*/,
5747  },
5748 
5749 };
5750 
5751 
5752 
5753 const basic::ZonePolicy kPolicyZion = {
5754  27 /*numRules*/,
5755  kZoneRulesZion /*rules*/,
5756  0 /* numLetters */,
5757  nullptr /* letters */,
5758 };
5759 
5760 
5761 
5762 }
5763 }