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