/*
********************************************************************************
*                                                                              *
* COPYRIGHT:                                                                   *
*   (C) Copyright Taligent, Inc.,  1997                                        *
*   (C) Copyright International Business Machines Corporation,  1997-1998      *
*   Licensed Material - Program-Property of IBM - All Rights Reserved.         *
*   US Government Users Restricted Rights - Use, duplication, or disclosure    *
*   restricted by GSA ADP Schedule Contract with IBM Corp.                     *
*                                                                              *
********************************************************************************
*
* File TIMEZONE.CPP
*
* Modification History:
*
*   Date        Name        Description
*   12/05/96    clhuang     Creation.
*   04/21/97    aliu        General clean-up and bug fixing.
*   05/08/97    aliu        Fixed Hashtable code per code review.
*   07/09/97    helena      Changed createInstance to createDefault.
*   07/29/97    aliu        Updated with all-new list of 96 UNIX-derived
*                           TimeZones.  Changed mechanism to load from static
*                           array rather than resource bundle.
*   07/07/1998  srl         Bugfixes from the Java side: UTC GMT CAT NST
*                           Added getDisplayName API
*                           going to add custom parsing.
*
*                           ISSUES:
*                               - should getDisplayName cache something?
*                               - should custom time zones be cached? [probably]
*  08/10/98     stephen     Brought getDisplayName() API in-line w/ conventions
*  08/19/98     stephen     Changed createTimeZone() to never return 0
*  09/02/98     stephen     Added getOffset(monthLen) and hasSameRules()
*  09/15/98     stephen     Added getStaticClassID()
*  02/22/99     stephen     Removed character literals for EBCDIC safety
*  05/04/99     stephen     Changed initDefault() for Mutex issues
*  07/12/99     helena      HPUX 11 CC Port.
*********************************************************************************/

#include "uhash.h"
#include "simpletz.h"
#include "smpdtfmt.h"
#include "calendar.h"
#include "mutex.h"

#ifdef _DEBUG
#include "unistrm.h"
#endif

// static initialization
char TimeZone::fgClassID = 0; // Value is irrelevant

TimeZone*  TimeZone::fgDefaultZone = NULL;
UHashtable* TimeZone::fgHashtable   = NULL;

/**
 * Delete the given object, assuming it is a TimeZone.  Used by Hashtable.
 */
void
TimeZone::deleteTimeZone(void* obj)
{
    delete (TimeZone*)obj;
}

// ResourceBundle file, locale, and resource name
//const char* TimeZone::kTimeZoneResource = "timezone";

// There MUST be a TimeZone with this ID within kSystemTimeZones
UnicodeString TimeZone::kLastResortID("Africa/Casablanca"); // GMT
//const int32_t TimeZone::kLastResortOffset = 0;

// Array of UnicodeString objects for available IDs
UnicodeString* TimeZone::fgAvailableIDs = 0;
int32_t TimeZone::fgAvailableIDsCount = 0; 

const int32_t TimeZone::millisPerHour = kMillisPerHour;

const UnicodeString     TimeZone::GMT_ID        = "GMT";
const int32_t             TimeZone::GMT_ID_LENGTH = 3;
const UnicodeString     TimeZone::CUSTOM_ID     = "Custom";

const TimeZone*            TimeZone::GMT = new SimpleTimeZone(0, GMT_ID);

UErrorCode                TimeZone::fgStatus = ZERO_ERROR;

/* Lazy evaluated.  HPUX CC compiler can't handle array initialization 
with complex objects */
/*const int32_t TimeZone::kSystemTimeZonesCount = 320;*/
/* {sfb} illegal to have non-const array dimension */
#define kSystemTimeZonesCount 320
bool_t TimeZone::kSystemInited = FALSE;
SimpleTimeZone* TimeZone::kSystemTimeZones[kSystemTimeZonesCount];

void
TimeZone::initSystemTimeZones(void)
{
  if (kSystemInited == FALSE) {
    kSystemInited = TRUE;
    // Migration from Java:
    //  - replace ONE_HOUR with kMillisPerHour
    //  - replace (int) with (int32_t)

    // The following data is current as of 1998.
    // Total Unix zones: 343
    // Total Java zones: 289
    // Not all Unix zones become Java zones due to duplication and overlap.
    //----------------------------------------------------------

    kSystemTimeZones[0] =
    new SimpleTimeZone(-11*kMillisPerHour, "Pacific/Niue" /*NUT*/);
    // Pacific/Niue Niue(NU)    -11:00  -   NUT
    //----------------------------------------------------------
    kSystemTimeZones[1] =
    new SimpleTimeZone(-11*kMillisPerHour, "Pacific/Apia" /*WST*/);
    // Pacific/Apia W Samoa(WS) -11:00  -   WST # W Samoa Time
    kSystemTimeZones[2] =
    new SimpleTimeZone(-11*kMillisPerHour, "MIT" /*alias for Pacific/Apia*/);
    //----------------------------------------------------------
    kSystemTimeZones[3] =
    new SimpleTimeZone(-11*kMillisPerHour, "Pacific/Pago_Pago" /*SST*/);
    // Pacific/Pago_Pago    American Samoa(US)  -11:00  -   SST # S=Samoa
    //----------------------------------------------------------
    kSystemTimeZones[4] =
    new SimpleTimeZone(-10*kMillisPerHour, "Pacific/Tahiti" /*TAHT*/);
    // Pacific/Tahiti   French Polynesia(PF)    -10:00  -   TAHT    # Tahiti Time
    //----------------------------------------------------------
    kSystemTimeZones[5] =
    new SimpleTimeZone(-10*kMillisPerHour, "Pacific/Fakaofo" /*TKT*/);
    // Pacific/Fakaofo  Tokelau Is(TK)  -10:00  -   TKT # Tokelau Time
    //----------------------------------------------------------
    kSystemTimeZones[6] =
    new SimpleTimeZone(-10*kMillisPerHour, "Pacific/Honolulu" /*HST*/);
    // Pacific/Honolulu Hawaii(US)  -10:00  -   HST
    kSystemTimeZones[7] =
    new SimpleTimeZone(-10*kMillisPerHour, "HST" /*alias for Pacific/Honolulu*/);
    //----------------------------------------------------------
    kSystemTimeZones[8] =
    new SimpleTimeZone(-10*kMillisPerHour, "America/Adak" /*HA%sT*/,
      Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour, fgStatus);
    // Rule US  1967    max -   Oct lastSun 2:00    0   S
    // Rule US  1987    max -   Apr Sun>=1  2:00    1:00    D
    // America/Adak Alaska(US)  -10:00  US  HA%sT
    //----------------------------------------------------------
    kSystemTimeZones[9] =
    new SimpleTimeZone(-10*kMillisPerHour, "Pacific/Rarotonga" /*CK%sT*/,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour,
      Calendar::MARCH, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour, (int32_t)(0.5*kMillisPerHour), fgStatus);
    // Rule Cook    1979    max -   Mar Sun>=1  0:00    0   -
    // Rule Cook    1979    max -   Oct lastSun 0:00    0:30    HS
    // Pacific/Rarotonga    Cook Is(CK) -10:00  Cook    CK%sT
    //----------------------------------------------------------
    kSystemTimeZones[10] =
    new SimpleTimeZone((int32_t)(-9.5*kMillisPerHour), "Pacific/Marquesas" /*MART*/);
    // Pacific/Marquesas    French Polynesia(PF)    -9:30   -   MART    # Marquesas Time
    //----------------------------------------------------------
    kSystemTimeZones[11] =
    new SimpleTimeZone(-9*kMillisPerHour, "Pacific/Gambier" /*GAMT*/);
    // Pacific/Gambier  French Polynesia(PF)    -9:00   -   GAMT    # Gambier Time
    //----------------------------------------------------------
    kSystemTimeZones[12] =
    new SimpleTimeZone(-9*kMillisPerHour, "America/Anchorage" /*AK%sT*/,
      Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule US  1967    max -   Oct lastSun 2:00    0   S
    // Rule US  1987    max -   Apr Sun>=1  2:00    1:00    D
    // America/Anchorage    Alaska(US)  -9:00   US  AK%sT
    kSystemTimeZones[13] =
    new SimpleTimeZone(-9*kMillisPerHour, "AST" /*alias for America/Anchorage*/,
      Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    //----------------------------------------------------------
    kSystemTimeZones[14] =
    new SimpleTimeZone((int32_t)(-8.5*kMillisPerHour), "Pacific/Pitcairn" /*PNT*/);
    // Pacific/Pitcairn Pitcairn(PN)    -8:30   -   PNT # Pitcairn Time
    //----------------------------------------------------------
    kSystemTimeZones[15] =
    new SimpleTimeZone(-8*kMillisPerHour, "America/Vancouver" /*P%sT*/,
      Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Vanc    1962    max -   Oct lastSun 2:00    0   S
    // Rule Vanc    1987    max -   Apr Sun>=1  2:00    1:00    D
    // America/Vancouver    British Columbia(CA)    -8:00   Vanc    P%sT
    //----------------------------------------------------------
    kSystemTimeZones[16] =
    new SimpleTimeZone(-8*kMillisPerHour, "America/Tijuana" /*P%sT*/,
      Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Mexico  1996    max -   Apr Sun>=1  2:00    1:00    D
    // Rule Mexico  1996    max -   Oct lastSun 2:00    0   S
    // America/Tijuana  Mexico(MX)  -8:00   Mexico  P%sT
    //----------------------------------------------------------
    kSystemTimeZones[17] =
    new SimpleTimeZone(-8*kMillisPerHour, "America/Los_Angeles" /*P%sT*/,
      Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule US  1967    max -   Oct lastSun 2:00    0   S
    // Rule US  1987    max -   Apr Sun>=1  2:00    1:00    D
    // America/Los_Angeles  US Pacific time, represented by Los Angeles(US) -8:00   US  P%sT
    kSystemTimeZones[18] =
    new SimpleTimeZone(-8*kMillisPerHour, "PST" /*alias for America/Los_Angeles*/,
      Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    //----------------------------------------------------------
    kSystemTimeZones[19] =
    new SimpleTimeZone(-7*kMillisPerHour, "America/Dawson_Creek" /*MST*/);
    // America/Dawson_Creek British Columbia(CA)    -7:00   -   MST
    //----------------------------------------------------------
    kSystemTimeZones[20] =
    new SimpleTimeZone(-7*kMillisPerHour, "America/Phoenix" /*MST*/);
    // America/Phoenix  ?(US)   -7:00   -   MST     
    kSystemTimeZones[21] =
    new SimpleTimeZone(-7*kMillisPerHour, "America/Edmonton" /*M%sT*/,
      Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Edm 1972    max -   Oct lastSun 2:00    0   S
    // Rule Edm 1987    max -   Apr Sun>=1  2:00    1:00    D
    // America/Edmonton Alberta(CA) -7:00   Edm M%sT
    //----------------------------------------------------------
    kSystemTimeZones[22] =
    new SimpleTimeZone(-7*kMillisPerHour, "America/Mazatlan" /*M%sT*/,
      Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Mexico  1996    max -   Apr Sun>=1  2:00    1:00    D
    // Rule Mexico  1996    max -   Oct lastSun 2:00    0   S
    // America/Mazatlan Mexico(MX)  -7:00   Mexico  M%sT
    //----------------------------------------------------------
    kSystemTimeZones[23] =
    new SimpleTimeZone(-7*kMillisPerHour, "America/Denver" /*M%sT*/,
      Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule US  1967    max -   Oct lastSun 2:00    0   S
    // Rule US  1987    max -   Apr Sun>=1  2:00    1:00    D
    // America/Denver   US Mountain time, represented by Denver(US) -7:00   US  M%sT
    kSystemTimeZones[24] =
    new SimpleTimeZone(-7*kMillisPerHour, "MST" /*alias for America/Denver*/,
      Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    //----------------------------------------------------------
    kSystemTimeZones[25] =
    new SimpleTimeZone(-6*kMillisPerHour, "America/Belize" /*C%sT*/);
    // America/Belize   Belize(BZ)  -6:00   -   C%sT
    //----------------------------------------------------------
    kSystemTimeZones[26] =
    new SimpleTimeZone(-6*kMillisPerHour, "America/Regina" /*CST*/);
    // America/Regina   Saskatchewan(CA)    -6:00   -   CST
    //----------------------------------------------------------
    kSystemTimeZones[27] =
    new SimpleTimeZone(-6*kMillisPerHour, "Pacific/Galapagos" /*GALT*/);
    // Pacific/Galapagos    Ecuador(EC) -6:00   -   GALT    # Galapagos Time
    //----------------------------------------------------------
    kSystemTimeZones[28] =
    new SimpleTimeZone(-6*kMillisPerHour, "America/Guatemala" /*C%sT*/);
    // America/Guatemala    Guatemala(GT)   -6:00   -   C%sT
    //----------------------------------------------------------
    kSystemTimeZones[29] =
    new SimpleTimeZone(-6*kMillisPerHour, "America/Tegucigalpa" /*C%sT*/);
    // America/Tegucigalpa  Honduras(HN)    -6:00   -   C%sT
    //----------------------------------------------------------
    kSystemTimeZones[30] =
    new SimpleTimeZone(-6*kMillisPerHour, "America/El_Salvador" /*C%sT*/);
    // America/El_Salvador  El Salvador(SV) -6:00   -   C%sT
    //----------------------------------------------------------
    kSystemTimeZones[31] =
    new SimpleTimeZone(-6*kMillisPerHour, "America/Costa_Rica" /*C%sT*/);
    // America/Costa_Rica   Costa Rica(CR)  -6:00   -   C%sT
    //----------------------------------------------------------
    kSystemTimeZones[32] =
    new SimpleTimeZone(-6*kMillisPerHour, "America/Winnipeg" /*C%sT*/,
      Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Winn    1966    max -   Oct lastSun 2:00    0   S
    // Rule Winn    1987    max -   Apr Sun>=1  2:00    1:00    D
    // America/Winnipeg Manitoba(CA)    -6:00   Winn    C%sT
    //----------------------------------------------------------
    kSystemTimeZones[33] =
    new SimpleTimeZone(-6*kMillisPerHour, "Pacific/Easter" /*EAS%sT*/,
      Calendar::OCTOBER, 9, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour,
      Calendar::MARCH, 9, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Chile   1969    max -   Oct Sun>=9  0:00    1:00    S
    // Rule Chile   1970    max -   Mar Sun>=9  0:00    0   -
    // Pacific/Easter   Chile(CL)   -6:00   Chile   EAS%sT
    //----------------------------------------------------------
    kSystemTimeZones[34] =
    new SimpleTimeZone(-6*kMillisPerHour, "America/Mexico_City" /*C%sT*/,
      Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Mexico  1996    max -   Apr Sun>=1  2:00    1:00    D
    // Rule Mexico  1996    max -   Oct lastSun 2:00    0   S
    // America/Mexico_City  Mexico(MX)  -6:00   Mexico  C%sT
    //----------------------------------------------------------
    kSystemTimeZones[35] =
    new SimpleTimeZone(-6*kMillisPerHour, "America/Chicago" /*C%sT*/,
      Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule US  1967    max -   Oct lastSun 2:00    0   S
    // Rule US  1987    max -   Apr Sun>=1  2:00    1:00    D
    // America/Chicago  US Central time, represented by Chicago(US) -6:00   US  C%sT
    kSystemTimeZones[36] =
    new SimpleTimeZone(-6*kMillisPerHour, "CST" /*alias for America/Chicago*/,
      Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    //----------------------------------------------------------
    kSystemTimeZones[37] =
    new SimpleTimeZone(-5*kMillisPerHour, "America/Porto_Acre" /*AST*/);
    // America/Porto_Acre   Brazil(BR)  -5:00   -   AST
    //----------------------------------------------------------
    kSystemTimeZones[38] =
    new SimpleTimeZone(-5*kMillisPerHour, "America/Bogota" /*CO%sT*/);
    // America/Bogota   Colombia(CO)    -5:00   -   CO%sT   # Colombia Time
    //----------------------------------------------------------
    kSystemTimeZones[39] =
    new SimpleTimeZone(-5*kMillisPerHour, "America/Guayaquil" /*ECT*/);
    // America/Guayaquil    Ecuador(EC) -5:00   -   ECT # Ecuador Time
    //----------------------------------------------------------
    kSystemTimeZones[40] =
    new SimpleTimeZone(-5*kMillisPerHour, "America/Jamaica" /*EST*/);
    // America/Jamaica  Jamaica(JM) -5:00   -   EST
    //----------------------------------------------------------
    kSystemTimeZones[41] =
    new SimpleTimeZone(-5*kMillisPerHour, "America/Cayman" /*EST*/);
    // America/Cayman   Cayman Is(KY)   -5:00   -   EST
    //----------------------------------------------------------
    kSystemTimeZones[42] =
    new SimpleTimeZone(-5*kMillisPerHour, "America/Managua" /*EST*/);
    // America/Managua  Nicaragua(NI)   -5:00   -   EST
    //----------------------------------------------------------
    kSystemTimeZones[43] =
    new SimpleTimeZone(-5*kMillisPerHour, "America/Panama" /*EST*/);
    // America/Panama   Panama(PA)  -5:00   -   EST
    //----------------------------------------------------------
    kSystemTimeZones[44] =
    new SimpleTimeZone(-5*kMillisPerHour, "America/Lima" /*PE%sT*/);
    // America/Lima Peru(PE)    -5:00   -   PE%sT   # Peru Time
    //----------------------------------------------------------
    kSystemTimeZones[45] =
    new SimpleTimeZone(-5*kMillisPerHour, "America/Indianapolis" /*EST*/);
    // America/Indianapolis Indiana(US) -5:00   -   EST
    kSystemTimeZones[46] =
    new SimpleTimeZone(-5*kMillisPerHour, "IET" /*alias for America/Indianapolis*/);
    //----------------------------------------------------------
    kSystemTimeZones[47] =
    new SimpleTimeZone(-5*kMillisPerHour, "America/Nassau" /*E%sT*/,
      Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Bahamas 1964    max -   Oct lastSun 2:00    0   S
    // Rule Bahamas 1987    max -   Apr Sun>=1  2:00    1:00    D
    // America/Nassau   Bahamas(BS) -5:00   Bahamas E%sT
    //----------------------------------------------------------
    kSystemTimeZones[48] =
    new SimpleTimeZone(-5*kMillisPerHour, "America/Montreal" /*E%sT*/,
      Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Mont    1957    max -   Oct lastSun 2:00    0   S
    // Rule Mont    1987    max -   Apr Sun>=1  2:00    1:00    D
    // America/Montreal Ontario, Quebec(CA) -5:00   Mont    E%sT
    //----------------------------------------------------------
    kSystemTimeZones[49] =
    new SimpleTimeZone(-5*kMillisPerHour, "America/Havana" /*C%sT*/,
      Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour,
      Calendar::OCTOBER, 8, -Calendar::SUNDAY /*DOW>=DOM*/, 1*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Cuba    1990    max -   Apr Sun>=1  0:00    1:00    D
    // Rule Cuba    1997    max -   Oct Sun>=8  0:00s   0   S
    // America/Havana   Cuba(CU)    -5:00   Cuba    C%sT
    //----------------------------------------------------------
    kSystemTimeZones[50] =
    new SimpleTimeZone(-5*kMillisPerHour, "America/Port-au-Prince" /*E%sT*/,
      Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 1*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Haiti   1988    max -   Apr Sun>=1  1:00s   1:00    D
    // Rule Haiti   1988    max -   Oct lastSun 1:00s   0   S
    // America/Port-au-Prince   Haiti(HT)   -5:00   Haiti   E%sT
    //----------------------------------------------------------
    kSystemTimeZones[51] =
    new SimpleTimeZone(-5*kMillisPerHour, "America/Grand_Turk" /*E%sT*/,
      Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule TC  1979    max -   Oct lastSun 0:00    0   S
    // Rule TC  1987    max -   Apr Sun>=1  0:00    1:00    D
    // America/Grand_Turk   Turks and Caicos(TC)    -5:00   TC  E%sT
    //----------------------------------------------------------
    kSystemTimeZones[52] =
    new SimpleTimeZone(-5*kMillisPerHour, "America/New_York" /*E%sT*/,
      Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule US  1967    max -   Oct lastSun 2:00    0   S
    // Rule US  1987    max -   Apr Sun>=1  2:00    1:00    D
    // America/New_York US Eastern time, represented by New York(US)    -5:00   US  E%sT
    kSystemTimeZones[53] =
    new SimpleTimeZone(-5*kMillisPerHour, "EST" /*alias for America/New_York*/,
      Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    //----------------------------------------------------------
    kSystemTimeZones[54] =
    new SimpleTimeZone(-4*kMillisPerHour, "America/Antigua" /*AST*/);
    // America/Antigua  Antigua and Barbuda(AG) -4:00   -   AST
    //----------------------------------------------------------
    kSystemTimeZones[55] =
    new SimpleTimeZone(-4*kMillisPerHour, "America/Anguilla" /*AST*/);
    // America/Anguilla Anguilla(AI)    -4:00   -   AST
    //----------------------------------------------------------
    kSystemTimeZones[56] =
    new SimpleTimeZone(-4*kMillisPerHour, "America/Curacao" /*AST*/);
    // America/Curacao  Curacao(AN) -4:00   -   AST
    //----------------------------------------------------------
    kSystemTimeZones[57] =
    new SimpleTimeZone(-4*kMillisPerHour, "America/Aruba" /*AST*/);
    // America/Aruba    Aruba(AW)   -4:00   -   AST
    //----------------------------------------------------------
    kSystemTimeZones[58] =
    new SimpleTimeZone(-4*kMillisPerHour, "America/Barbados" /*A%sT*/);
    // America/Barbados Barbados(BB)    -4:00   -   A%sT
    //----------------------------------------------------------
    kSystemTimeZones[59] =
    new SimpleTimeZone(-4*kMillisPerHour, "America/La_Paz" /*BOT*/);
    // America/La_Paz   Bolivia(BO) -4:00   -   BOT # Bolivia Time
    //----------------------------------------------------------
    kSystemTimeZones[60] =
    new SimpleTimeZone(-4*kMillisPerHour, "America/Manaus" /*WST*/);
    // America/Manaus   Brazil(BR)  -4:00   -   WST
    //----------------------------------------------------------
    kSystemTimeZones[61] =
    new SimpleTimeZone(-4*kMillisPerHour, "America/Dominica" /*AST*/);
    // America/Dominica Dominica(DM)    -4:00   -   AST
    //----------------------------------------------------------
    kSystemTimeZones[62] =
    new SimpleTimeZone(-4*kMillisPerHour, "America/Santo_Domingo" /*AST*/);
    // America/Santo_Domingo    Dominican Republic(DO)  -4:00   -   AST
    //----------------------------------------------------------
    kSystemTimeZones[63] =
    new SimpleTimeZone(-4*kMillisPerHour, "America/Grenada" /*AST*/);
    // America/Grenada  Grenada(GD) -4:00   -   AST
    //----------------------------------------------------------
    kSystemTimeZones[64] =
    new SimpleTimeZone(-4*kMillisPerHour, "America/Guadeloupe" /*AST*/);
    // America/Guadeloupe   Guadeloupe(GP)  -4:00   -   AST
    //----------------------------------------------------------
    kSystemTimeZones[65] =
    new SimpleTimeZone(-4*kMillisPerHour, "America/Guyana" /*GYT*/);
    // America/Guyana   Guyana(GY)  -4:00   -   GYT
    //----------------------------------------------------------
    kSystemTimeZones[66] =
    new SimpleTimeZone(-4*kMillisPerHour, "America/St_Kitts" /*AST*/);
    // America/St_Kitts St Kitts-Nevis(KN)  -4:00   -   AST
    //----------------------------------------------------------
    kSystemTimeZones[67] =
    new SimpleTimeZone(-4*kMillisPerHour, "America/St_Lucia" /*AST*/);
    // America/St_Lucia St Lucia(LC)    -4:00   -   AST
    //----------------------------------------------------------
    kSystemTimeZones[68] =
    new SimpleTimeZone(-4*kMillisPerHour, "America/Martinique" /*AST*/);
    // America/Martinique   Martinique(MQ)  -4:00   -   AST
    //----------------------------------------------------------
    kSystemTimeZones[69] =
    new SimpleTimeZone(-4*kMillisPerHour, "America/Montserrat" /*AST*/);
    // America/Montserrat   Montserrat(MS)  -4:00   -   AST
    //----------------------------------------------------------
    kSystemTimeZones[70] =
    new SimpleTimeZone(-4*kMillisPerHour, "America/Puerto_Rico" /*AST*/);
    // America/Puerto_Rico  Puerto Rico(PR) -4:00   -   AST
    kSystemTimeZones[71] =
    new SimpleTimeZone(-4*kMillisPerHour, "PRT" /*alias for America/Puerto_Rico*/);
    //----------------------------------------------------------
    kSystemTimeZones[72] =
    new SimpleTimeZone(-4*kMillisPerHour, "America/Port_of_Spain" /*AST*/);
    // America/Port_of_Spain    Trinidad and Tobago(TT) -4:00   -   AST
    //----------------------------------------------------------
    kSystemTimeZones[73] =
    new SimpleTimeZone(-4*kMillisPerHour, "America/St_Vincent" /*AST*/);
    // America/St_Vincent   St Vincent and the Grenadines(VC)   -4:00   -   AST
    //----------------------------------------------------------
    kSystemTimeZones[74] =
    new SimpleTimeZone(-4*kMillisPerHour, "America/Tortola" /*AST*/);
    // America/Tortola  British Virgin Is(VG)   -4:00   -   AST
    //----------------------------------------------------------
    kSystemTimeZones[75] =
    new SimpleTimeZone(-4*kMillisPerHour, "America/St_Thomas" /*AST*/);
    // America/St_Thomas    Virgin Is(VI)   -4:00   -   AST
    //----------------------------------------------------------
    kSystemTimeZones[76] =
    new SimpleTimeZone(-4*kMillisPerHour, "America/Caracas" /*VET*/);
    // America/Caracas  Venezuela(VE)   -4:00   -   VET
    //----------------------------------------------------------
    kSystemTimeZones[77] =
    new SimpleTimeZone(-4*kMillisPerHour, "Antarctica/Palmer" /*CL%sT*/,
      Calendar::OCTOBER, 9, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour,
      Calendar::MARCH, 9, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule ChileAQ 1969    max -   Oct Sun>=9  0:00    1:00    S
    // Rule ChileAQ 1970    max -   Mar Sun>=9  0:00    0   -
    // Antarctica/Palmer    USA - year-round bases(AQ)  -4:00   ChileAQ CL%sT
    //----------------------------------------------------------
    kSystemTimeZones[78] =
    new SimpleTimeZone(-4*kMillisPerHour, "Atlantic/Bermuda" /*A%sT*/,
      Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Bahamas 1964    max -   Oct lastSun 2:00    0   S
    // Rule Bahamas 1987    max -   Apr Sun>=1  2:00    1:00    D
    // Atlantic/Bermuda Bermuda(BM) -4:00   Bahamas A%sT
    //----------------------------------------------------------
    kSystemTimeZones[79] =
    new SimpleTimeZone(-4*kMillisPerHour, "America/Cuiaba" /*W%sT*/,
      Calendar::OCTOBER, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour,
      Calendar::FEBRUARY, 11, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Brazil  1998    max -   Oct Sun>=1  0:00    1:00    D
    // Rule Brazil  1999    max -   Feb Sun>=11 0:00    0   S
    // America/Cuiaba   Brazil(BR)  -4:00   Brazil  W%sT
    //----------------------------------------------------------
    kSystemTimeZones[80] =
    new SimpleTimeZone(-4*kMillisPerHour, "America/Halifax" /*A%sT*/,
      Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Halifax 1962    max -   Oct lastSun 2:00    0   S
    // Rule Halifax 1987    max -   Apr Sun>=1  2:00    1:00    D
    // America/Halifax  ?(CA)   -4:00   Halifax A%sT
    //----------------------------------------------------------
    kSystemTimeZones[81] =
    new SimpleTimeZone(-4*kMillisPerHour, "Atlantic/Stanley" /*FK%sT*/,
      Calendar::SEPTEMBER, 8, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour,
      Calendar::APRIL, 16, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Falk    1986    max -   Apr Sun>=16 0:00    0   -
    // Rule Falk    1996    max -   Sep Sun>=8  0:00    1:00    S
    // Atlantic/Stanley Falklands(FK)   -4:00   Falk    FK%sT
    //----------------------------------------------------------
    kSystemTimeZones[82] =
    new SimpleTimeZone(-4*kMillisPerHour, "America/Thule" /*A%sT*/,
      Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Thule   1993    max -   Apr Sun>=1  2:00    1:00    D
    // Rule Thule   1993    max -   Oct lastSun 2:00    0   S
    // America/Thule    ?(GL)   -4:00   Thule   A%sT
    //----------------------------------------------------------
    kSystemTimeZones[83] =
    new SimpleTimeZone(-4*kMillisPerHour, "America/Asuncion" /*PY%sT*/,
      Calendar::OCTOBER, 1, 0 /*DOM*/, 0*kMillisPerHour,
      Calendar::MARCH, 1, 0 /*DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Para    1996    max -   Mar 1   0:00    0   -
    // Rule Para    1997    max -   Oct 1   0:00    1:00    S
    // America/Asuncion Paraguay(PY)    -4:00   Para    PY%sT
    //----------------------------------------------------------
    kSystemTimeZones[84] =
    new SimpleTimeZone(-4*kMillisPerHour, "America/Santiago" /*CL%sT*/,
      Calendar::OCTOBER, 9, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour,
      Calendar::MARCH, 9, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Chile   1969    max -   Oct Sun>=9  0:00    1:00    S
    // Rule Chile   1970    max -   Mar Sun>=9  0:00    0   -
    // America/Santiago Chile(CL)   -4:00   Chile   CL%sT
    //----------------------------------------------------------
    kSystemTimeZones[85] =
    new SimpleTimeZone((int32_t)(-3.5*kMillisPerHour), "America/St_Johns" /*N%sT*/,
      Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule StJohns 1960    max -   Oct lastSun 2:00    0   S
    // Rule StJohns 1989    max -   Apr Sun>=1  2:00    1:00    D
    // America/St_Johns Canada(CA)  -3:30   StJohns N%sT
    kSystemTimeZones[86] =
    new SimpleTimeZone(-3*kMillisPerHour, "America/Fortaleza" /*EST*/);
    // America/Fortaleza    Brazil(BR)  -3:00   -   EST
    //----------------------------------------------------------
    kSystemTimeZones[87] =
    new SimpleTimeZone(-3*kMillisPerHour, "America/Cayenne" /*GFT*/);
    // America/Cayenne  French Guiana(GF)   -3:00   -   GFT
    //----------------------------------------------------------
    kSystemTimeZones[88] =
    new SimpleTimeZone(-3*kMillisPerHour, "America/Paramaribo" /*SRT*/);
    // America/Paramaribo   Suriname(SR)    -3:00   -   SRT
    //----------------------------------------------------------
    kSystemTimeZones[89] =
    new SimpleTimeZone(-3*kMillisPerHour, "America/Montevideo" /*UY%sT*/);
    // America/Montevideo   Uruguay(UY) -3:00   -   UY%sT
    //----------------------------------------------------------
    kSystemTimeZones[90] =
    new SimpleTimeZone(-3*kMillisPerHour, "America/Buenos_Aires" /*AR%sT*/);
    // America/Buenos_Aires Argentina(AR)   -3:00   -   AR%sT
    kSystemTimeZones[91] =
    new SimpleTimeZone(-3*kMillisPerHour, "AGT" /*alias for America/Buenos_Aires*/);
    //----------------------------------------------------------
    kSystemTimeZones[92] =
    new SimpleTimeZone(-3*kMillisPerHour, "America/Godthab" /*WG%sT*/,
      Calendar::MARCH, -1, Calendar::SATURDAY /*DOW_IN_DOM*/, 22*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SATURDAY /*DOW_IN_DOM*/, 22*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule EU  1981    max -   Mar lastSun 1:00u   1:00    S
    // Rule EU  1996    max -   Oct lastSun 1:00u   0   -
    // America/Godthab  ?(GL)   -3:00   EU  WG%sT
    //----------------------------------------------------------
    kSystemTimeZones[93] =
    new SimpleTimeZone(-3*kMillisPerHour, "America/Miquelon" /*PM%sT*/,
      Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Mont    1957    max -   Oct lastSun 2:00    0   S
    // Rule Mont    1987    max -   Apr Sun>=1  2:00    1:00    D
    // America/Miquelon St Pierre and Miquelon(PM)  -3:00   Mont    PM%sT   # Pierre & Miquelon Time
    //----------------------------------------------------------
    kSystemTimeZones[94] =
    new SimpleTimeZone(-3*kMillisPerHour, "America/Sao_Paulo" /*E%sT*/,
      Calendar::OCTOBER, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour,
      Calendar::FEBRUARY, 11, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Brazil  1998    max -   Oct Sun>=1  0:00    1:00    D
    // Rule Brazil  1999    max -   Feb Sun>=11 0:00    0   S
    // America/Sao_Paulo    Brazil(BR)  -3:00   Brazil  E%sT
    kSystemTimeZones[95] =
    new SimpleTimeZone(-3*kMillisPerHour, "BET" /*alias for America/Sao_Paulo*/,
      Calendar::OCTOBER, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour,
      Calendar::FEBRUARY, 11, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    //----------------------------------------------------------
    kSystemTimeZones[96] =
    new SimpleTimeZone(-2*kMillisPerHour, "America/Noronha" /*FST*/);
    // America/Noronha  Brazil(BR)  -2:00   -   FST
    //----------------------------------------------------------
    kSystemTimeZones[97] =
    new SimpleTimeZone(-2*kMillisPerHour, "Atlantic/South_Georgia" /*GST*/);
    // Atlantic/South_Georgia   South Georgia(GS)   -2:00   -   GST # South Georgia Time
    //----------------------------------------------------------
    kSystemTimeZones[98] =
    new SimpleTimeZone(-1*kMillisPerHour, "Atlantic/Jan_Mayen" /*EGT*/);
    // Atlantic/Jan_Mayen   ?(NO)   -1:00   -   EGT
    //----------------------------------------------------------
    kSystemTimeZones[99] =
    new SimpleTimeZone(-1*kMillisPerHour, "Atlantic/Cape_Verde" /*CVT*/);
    // Atlantic/Cape_Verde  Cape Verde(CV)  -1:00   -   CVT
    //----------------------------------------------------------
    kSystemTimeZones[100] =
    new SimpleTimeZone(-1*kMillisPerHour, "America/Scoresbysund" /*EG%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule EU  1981    max -   Mar lastSun 1:00u   1:00    S
    // Rule EU  1996    max -   Oct lastSun 1:00u   0   -
    // America/Scoresbysund ?(GL)   -1:00   EU  EG%sT
    //----------------------------------------------------------
    kSystemTimeZones[101] =
    new SimpleTimeZone(-1*kMillisPerHour, "Atlantic/Azores" /*AZO%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule EU  1981    max -   Mar lastSun 1:00u   1:00    S
    // Rule EU  1996    max -   Oct lastSun 1:00u   0   -
    // Atlantic/Azores  Portugal(PT)    -1:00   EU  AZO%sT
    //----------------------------------------------------------
    kSystemTimeZones[102] =
    new SimpleTimeZone(0*kMillisPerHour, "Africa/Ouagadougou" /*GMT*/);
    // Africa/Ouagadougou   Burkina Faso(BF)    0:00    -   GMT
    //----------------------------------------------------------
    kSystemTimeZones[103] =
    new SimpleTimeZone(0*kMillisPerHour, "Africa/Abidjan" /*GMT*/);
    // Africa/Abidjan   Cote D'Ivoire(CI)   0:00    -   GMT
    //----------------------------------------------------------
    kSystemTimeZones[104] =
    new SimpleTimeZone(0*kMillisPerHour, "Africa/Accra" /*%s*/);
    // Africa/Accra Ghana(GH)   0:00    -   %s
    //----------------------------------------------------------
    kSystemTimeZones[105] =
    new SimpleTimeZone(0*kMillisPerHour, "Africa/Banjul" /*GMT*/);
    // Africa/Banjul    Gambia(GM)  0:00    -   GMT
    //----------------------------------------------------------
    kSystemTimeZones[106] =
    new SimpleTimeZone(0*kMillisPerHour, "Africa/Conakry" /*GMT*/);
    // Africa/Conakry   Guinea(GN)  0:00    -   GMT
    //----------------------------------------------------------
    kSystemTimeZones[107] =
    new SimpleTimeZone(0*kMillisPerHour, "Africa/Bissau" /*GMT*/);
    // Africa/Bissau    Guinea-Bissau(GW)   0:00    -   GMT
    //----------------------------------------------------------
    kSystemTimeZones[108] =
    new SimpleTimeZone(0*kMillisPerHour, "Atlantic/Reykjavik" /*GMT*/);
    // Atlantic/Reykjavik   Iceland(IS) 0:00    -   GMT
    //----------------------------------------------------------
    kSystemTimeZones[109] =
    new SimpleTimeZone(0*kMillisPerHour, "Africa/Monrovia" /*GMT*/);
    // Africa/Monrovia  Liberia(LR) 0:00    -   GMT
    //----------------------------------------------------------
    kSystemTimeZones[110] =
    new SimpleTimeZone(0*kMillisPerHour, "Africa/Casablanca" /*WET*/);
    // Africa/Casablanca    Morocco(MA) 0:00    -   WET
    //----------------------------------------------------------
    kSystemTimeZones[111] =
    new SimpleTimeZone(0*kMillisPerHour, "Africa/Timbuktu" /*GMT*/);
    // Africa/Timbuktu  Mali(ML)    0:00    -   GMT
    //----------------------------------------------------------
    kSystemTimeZones[112] =
    new SimpleTimeZone(0*kMillisPerHour, "Africa/Nouakchott" /*GMT*/);
    // Africa/Nouakchott    Mauritania(MR)  0:00    -   GMT
    //----------------------------------------------------------
    kSystemTimeZones[113] =
    new SimpleTimeZone(0*kMillisPerHour, "Atlantic/St_Helena" /*GMT*/);
    // Atlantic/St_Helena   St Helena(SH)   0:00    -   GMT
    //----------------------------------------------------------
    kSystemTimeZones[114] =
    new SimpleTimeZone(0*kMillisPerHour, "Africa/Freetown" /*%s*/);
    // Africa/Freetown  Sierra Leone(SL)    0:00    -   %s
    //----------------------------------------------------------
    kSystemTimeZones[115] =
    new SimpleTimeZone(0*kMillisPerHour, "Africa/Dakar" /*GMT*/);
    // Africa/Dakar Senegal(SN) 0:00    -   GMT
    //----------------------------------------------------------
    kSystemTimeZones[116] =
    new SimpleTimeZone(0*kMillisPerHour, "Africa/Sao_Tome" /*GMT*/);
    // Africa/Sao_Tome  Sao Tome and Principe(ST)   0:00    -   GMT
    //----------------------------------------------------------
    kSystemTimeZones[117] =
    new SimpleTimeZone(0*kMillisPerHour, "Africa/Lome" /*GMT*/);
    // Africa/Lome  Togo(TG)    0:00    -   GMT
    //----------------------------------------------------------
    kSystemTimeZones[118] =
    new SimpleTimeZone(0*kMillisPerHour, "GMT" /*GMT*/);
    // GMT  -(-)    0:00    -   GMT
    kSystemTimeZones[119] =
    new SimpleTimeZone(0*kMillisPerHour, "UTC" /*alias for GMT*/);
    //----------------------------------------------------------
    kSystemTimeZones[120] =
    new SimpleTimeZone(0*kMillisPerHour, "Atlantic/Faeroe" /*WE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 1*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 1*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule EU  1981    max -   Mar lastSun 1:00u   1:00    S
    // Rule EU  1996    max -   Oct lastSun 1:00u   0   -
    // Atlantic/Faeroe  Denmark, Faeroe Islands, and Greenland(DK)  0:00    EU  WE%sT
    //----------------------------------------------------------
    kSystemTimeZones[121] =
    new SimpleTimeZone(0*kMillisPerHour, "Atlantic/Canary" /*WE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 1*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 1*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule EU  1981    max -   Mar lastSun 1:00u   1:00    S
    // Rule EU  1996    max -   Oct lastSun 1:00u   0   -
    // Atlantic/Canary  Spain(ES)   0:00    EU  WE%sT
    //----------------------------------------------------------
    kSystemTimeZones[122] =
    new SimpleTimeZone(0*kMillisPerHour, "Europe/Dublin" /*GMT/IST*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 1*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 1*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule EU  1981    max -   Mar lastSun 1:00u   1:00    S
    // Rule EU  1996    max -   Oct lastSun 1:00u   0   -
    // Europe/Dublin    ---(IE) 0:00    EU  GMT/IST
    //----------------------------------------------------------
    kSystemTimeZones[123] =
    new SimpleTimeZone(0*kMillisPerHour, "Europe/Lisbon" /*WE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 1*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 1*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule EU  1981    max -   Mar lastSun 1:00u   1:00    S
    // Rule EU  1996    max -   Oct lastSun 1:00u   0   -
    // Europe/Lisbon    Portugal(PT)    0:00    EU  WE%sT
    //----------------------------------------------------------
    kSystemTimeZones[124] =
    new SimpleTimeZone(0*kMillisPerHour, "Europe/London" /*GMT/BST*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 1*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 1*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule EU  1981    max -   Mar lastSun 1:00u   1:00    S
    // Rule EU  1996    max -   Oct lastSun 1:00u   0   -
    // Europe/London    ---(GB) 0:00    EU  GMT/BST
    //----------------------------------------------------------
    kSystemTimeZones[125] =
    new SimpleTimeZone(1*kMillisPerHour, "Africa/Luanda" /*WAT*/);
    // Africa/Luanda    Angola(AO)  1:00    -   WAT
    //----------------------------------------------------------
    kSystemTimeZones[126] =
    new SimpleTimeZone(1*kMillisPerHour, "Africa/Porto-Novo" /*WAT*/);
    // Africa/Porto-Novo    Benin(BJ)   1:00    -   WAT
    //----------------------------------------------------------
    kSystemTimeZones[127] =
    new SimpleTimeZone(1*kMillisPerHour, "Africa/Bangui" /*WAT*/);
    // Africa/Bangui    Central African Republic(CF)    1:00    -   WAT
    //----------------------------------------------------------
    kSystemTimeZones[128] =
    new SimpleTimeZone(1*kMillisPerHour, "Africa/Kinshasa" /*WAT*/);
    // Africa/Kinshasa  Democratic Republic of Congo(CG)    1:00    -   WAT
    //----------------------------------------------------------
    kSystemTimeZones[129] =
    new SimpleTimeZone(1*kMillisPerHour, "Africa/Douala" /*WAT*/);
    // Africa/Douala    Cameroon(CM)    1:00    -   WAT
    //----------------------------------------------------------
    kSystemTimeZones[130] =
    new SimpleTimeZone(1*kMillisPerHour, "Africa/Libreville" /*WAT*/);
    // Africa/Libreville    Gabon(GA)   1:00    -   WAT
    //----------------------------------------------------------
    kSystemTimeZones[131] =
    new SimpleTimeZone(1*kMillisPerHour, "Africa/Malabo" /*WAT*/);
    // Africa/Malabo    Equatorial Guinea(GQ)   1:00    -   WAT
    //----------------------------------------------------------
    kSystemTimeZones[132] =
    new SimpleTimeZone(1*kMillisPerHour, "Africa/Niamey" /*WAT*/);
    // Africa/Niamey    Niger(NE)   1:00    -   WAT
    //----------------------------------------------------------
    kSystemTimeZones[133] =
    new SimpleTimeZone(1*kMillisPerHour, "Africa/Lagos" /*WAT*/);
    // Africa/Lagos Nigeria(NG) 1:00    -   WAT
    //----------------------------------------------------------
    kSystemTimeZones[134] =
    new SimpleTimeZone(1*kMillisPerHour, "Africa/Ndjamena" /*WAT*/);
    // Africa/Ndjamena  Chad(TD)    1:00    -   WAT
    //----------------------------------------------------------
    kSystemTimeZones[135] =
    new SimpleTimeZone(1*kMillisPerHour, "Africa/Tunis" /*CE%sT*/);
    // Africa/Tunis Tunisia(TN) 1:00    -   CE%sT
    //----------------------------------------------------------
    kSystemTimeZones[136] =
    new SimpleTimeZone(1*kMillisPerHour, "Africa/Algiers" /*CET*/);
    // Africa/Algiers   Algeria(DZ) 1:00    -   CET
    //----------------------------------------------------------
    kSystemTimeZones[137] =
    new SimpleTimeZone(1*kMillisPerHour, "Europe/Andorra" /*CE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule EU  1981    max -   Mar lastSun 1:00u   1:00    S
    // Rule EU  1996    max -   Oct lastSun 1:00u   0   -
    // Europe/Andorra   Andorra(AD) 1:00    EU  CE%sT
    //----------------------------------------------------------
    kSystemTimeZones[138] =
    new SimpleTimeZone(1*kMillisPerHour, "Europe/Tirane" /*CE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule EU  1981    max -   Mar lastSun 1:00u   1:00    S
    // Rule EU  1996    max -   Oct lastSun 1:00u   0   -
    // Europe/Tirane    Albania(AL) 1:00    EU  CE%sT
    //----------------------------------------------------------
    kSystemTimeZones[139] =
    new SimpleTimeZone(1*kMillisPerHour, "Europe/Vienna" /*CE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule EU  1981    max -   Mar lastSun 1:00u   1:00    S
    // Rule EU  1996    max -   Oct lastSun 1:00u   0   -
    // Europe/Vienna    Austria(AT) 1:00    EU  CE%sT
    //----------------------------------------------------------
    kSystemTimeZones[140] =
    new SimpleTimeZone(1*kMillisPerHour, "Europe/Brussels" /*CE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule EU  1981    max -   Mar lastSun 1:00u   1:00    S
    // Rule EU  1996    max -   Oct lastSun 1:00u   0   -
    // Europe/Brussels  Belgium(BE) 1:00    EU  CE%sT
    //----------------------------------------------------------
    kSystemTimeZones[141] =
    new SimpleTimeZone(1*kMillisPerHour, "Europe/Zurich" /*CE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule EU  1981    max -   Mar lastSun 1:00u   1:00    S
    // Rule EU  1996    max -   Oct lastSun 1:00u   0   -
    // Europe/Zurich    Switzerland(CH) 1:00    EU  CE%sT
    //----------------------------------------------------------
    kSystemTimeZones[142] =
    new SimpleTimeZone(1*kMillisPerHour, "Europe/Prague" /*CE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule EU  1981    max -   Mar lastSun 1:00u   1:00    S
    // Rule EU  1996    max -   Oct lastSun 1:00u   0   -
    // Europe/Prague    Czech Republic(CZ)  1:00    EU  CE%sT
    //----------------------------------------------------------
    kSystemTimeZones[143] =
    new SimpleTimeZone(1*kMillisPerHour, "Europe/Berlin" /*CE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule EU  1981    max -   Mar lastSun 1:00u   1:00    S
    // Rule EU  1996    max -   Oct lastSun 1:00u   0   -
    // Europe/Berlin    Germany(DE) 1:00    EU  CE%sT
    //----------------------------------------------------------
    kSystemTimeZones[144] =
    new SimpleTimeZone(1*kMillisPerHour, "Europe/Copenhagen" /*CE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule EU  1981    max -   Mar lastSun 1:00u   1:00    S
    // Rule EU  1996    max -   Oct lastSun 1:00u   0   -
    // Europe/Copenhagen    Denmark, Faeroe Islands, and Greenland(DK)  1:00    EU  CE%sT
    //----------------------------------------------------------
    kSystemTimeZones[145] =
    new SimpleTimeZone(1*kMillisPerHour, "Europe/Madrid" /*CE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule EU  1981    max -   Mar lastSun 1:00u   1:00    S
    // Rule EU  1996    max -   Oct lastSun 1:00u   0   -
    // Europe/Madrid    Spain(ES)   1:00    EU  CE%sT
    //----------------------------------------------------------
    kSystemTimeZones[146] =
    new SimpleTimeZone(1*kMillisPerHour, "Europe/Gibraltar" /*CE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule EU  1981    max -   Mar lastSun 1:00u   1:00    S
    // Rule EU  1996    max -   Oct lastSun 1:00u   0   -
    // Europe/Gibraltar Gibraltar(GI)   1:00    EU  CE%sT
    //----------------------------------------------------------
    kSystemTimeZones[147] =
    new SimpleTimeZone(1*kMillisPerHour, "Europe/Budapest" /*CE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule EU  1981    max -   Mar lastSun 1:00u   1:00    S
    // Rule EU  1996    max -   Oct lastSun 1:00u   0   -
    // Europe/Budapest  Hungary(HU) 1:00    EU  CE%sT
    //----------------------------------------------------------
    kSystemTimeZones[148] =
    new SimpleTimeZone(1*kMillisPerHour, "Europe/Rome" /*CE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule EU  1981    max -   Mar lastSun 1:00u   1:00    S
    // Rule EU  1996    max -   Oct lastSun 1:00u   0   -
    // Europe/Rome  Italy(IT)   1:00    EU  CE%sT
    //----------------------------------------------------------
    kSystemTimeZones[149] =
    new SimpleTimeZone(1*kMillisPerHour, "Europe/Vaduz" /*CE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule EU  1981    max -   Mar lastSun 1:00u   1:00    S
    // Rule EU  1996    max -   Oct lastSun 1:00u   0   -
    // Europe/Vaduz Liechtenstein(LI)   1:00    EU  CE%sT
    //----------------------------------------------------------
    kSystemTimeZones[150] =
    new SimpleTimeZone(1*kMillisPerHour, "Europe/Luxembourg" /*CE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule EU  1981    max -   Mar lastSun 1:00u   1:00    S
    // Rule EU  1996    max -   Oct lastSun 1:00u   0   -
    // Europe/Luxembourg    Luxembourg(LU)  1:00    EU  CE%sT
    //----------------------------------------------------------
    kSystemTimeZones[151] =
    new SimpleTimeZone(1*kMillisPerHour, "Africa/Tripoli" /*CE%sT*/,
      Calendar::MARCH, -1, Calendar::THURSDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, 1, -Calendar::THURSDAY /*DOW>=DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Libya   1997    max -   Mar lastThu 2:00s   1:00    S
    // Rule Libya   1997    max -   Oct Thu>=1  2:00s   0   -
    // Africa/Tripoli   Libya(LY)   1:00    Libya   CE%sT
    //----------------------------------------------------------
    kSystemTimeZones[152] =
    new SimpleTimeZone(1*kMillisPerHour, "Europe/Monaco" /*CE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule EU  1981    max -   Mar lastSun 1:00u   1:00    S
    // Rule EU  1996    max -   Oct lastSun 1:00u   0   -
    // Europe/Monaco    Monaco(MC)  1:00    EU  CE%sT
    //----------------------------------------------------------
    kSystemTimeZones[153] =
    new SimpleTimeZone(1*kMillisPerHour, "Europe/Malta" /*CE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule EU  1981    max -   Mar lastSun 1:00u   1:00    S
    // Rule EU  1996    max -   Oct lastSun 1:00u   0   -
    // Europe/Malta Malta(MT)   1:00    EU  CE%sT
    //----------------------------------------------------------
    kSystemTimeZones[154] =
    new SimpleTimeZone(1*kMillisPerHour, "Africa/Windhoek" /*WA%sT*/,
      Calendar::SEPTEMBER, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour,
      Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Namibia 1994    max -   Sep Sun>=1  2:00    1:00    S
    // Rule Namibia 1995    max -   Apr Sun>=1  2:00    0   -
    // Africa/Windhoek  Namibia(NA) 1:00    Namibia WA%sT
    //----------------------------------------------------------
    kSystemTimeZones[155] =
    new SimpleTimeZone(1*kMillisPerHour, "Europe/Amsterdam" /*CE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule EU  1981    max -   Mar lastSun 1:00u   1:00    S
    // Rule EU  1996    max -   Oct lastSun 1:00u   0   -
    // Europe/Amsterdam Netherlands(NL) 1:00    EU  CE%sT
    //----------------------------------------------------------
    kSystemTimeZones[156] =
    new SimpleTimeZone(1*kMillisPerHour, "Europe/Oslo" /*CE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule EU  1981    max -   Mar lastSun 1:00u   1:00    S
    // Rule EU  1996    max -   Oct lastSun 1:00u   0   -
    // Europe/Oslo  Norway(NO)  1:00    EU  CE%sT
    //----------------------------------------------------------
    kSystemTimeZones[157] =
    new SimpleTimeZone(1*kMillisPerHour, "Europe/Warsaw" /*CE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 1*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule W-Eur   1981    max -   Mar lastSun 1:00s   1:00    S
    // Rule W-Eur   1996    max -   Oct lastSun 1:00s   0   -
    // Europe/Warsaw    Poland(PL)  1:00    W-Eur   CE%sT
    //----------------------------------------------------------
    kSystemTimeZones[158] =
    new SimpleTimeZone(1*kMillisPerHour, "Europe/Stockholm" /*CE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule EU  1981    max -   Mar lastSun 1:00u   1:00    S
    // Rule EU  1996    max -   Oct lastSun 1:00u   0   -
    // Europe/Stockholm Sweden(SE)  1:00    EU  CE%sT
    //----------------------------------------------------------
    kSystemTimeZones[159] =
    new SimpleTimeZone(1*kMillisPerHour, "Europe/Belgrade" /*CE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule EU  1981    max -   Mar lastSun 1:00u   1:00    S
    // Rule EU  1996    max -   Oct lastSun 1:00u   0   -
    // Europe/Belgrade  Yugoslavia(YU)  1:00    EU  CE%sT
    //----------------------------------------------------------
    kSystemTimeZones[160] =
    new SimpleTimeZone(1*kMillisPerHour, "Europe/Paris" /*CE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule EU  1981    max -   Mar lastSun 1:00u   1:00    S
    // Rule EU  1996    max -   Oct lastSun 1:00u   0   -
    // Europe/Paris France(FR)  1:00    EU  CE%sT
    kSystemTimeZones[161] =
    new SimpleTimeZone(1*kMillisPerHour, "ECT" /*alias for Europe/Paris*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    //----------------------------------------------------------
    kSystemTimeZones[162] =
    new SimpleTimeZone(2*kMillisPerHour, "Africa/Bujumbura" /*CAT*/);
    // Africa/Bujumbura Burundi(BI) 2:00    -   CAT
    //----------------------------------------------------------
    kSystemTimeZones[163] =
    new SimpleTimeZone(2*kMillisPerHour, "Africa/Gaborone" /*CAT*/);
    // Africa/Gaborone  Botswana(BW)    2:00    -   CAT
    //----------------------------------------------------------
    kSystemTimeZones[164] =
    new SimpleTimeZone(2*kMillisPerHour, "Africa/Lubumbashi" /*CAT*/);
    // Africa/Lubumbashi    Democratic Republic of Congo(CG)    2:00    -   CAT
    //----------------------------------------------------------
    kSystemTimeZones[165] =
    new SimpleTimeZone(2*kMillisPerHour, "Africa/Maseru" /*SAST*/);
    // Africa/Maseru    Lesotho(LS) 2:00    -   SAST
    //----------------------------------------------------------
    kSystemTimeZones[166] =
    new SimpleTimeZone(2*kMillisPerHour, "Africa/Blantyre" /*CAT*/);
    // Africa/Blantyre  Malawi(ML)  2:00    -   CAT
    //----------------------------------------------------------
    kSystemTimeZones[167] =
    new SimpleTimeZone(2*kMillisPerHour, "Africa/Maputo" /*CAT*/);
    // Africa/Maputo    Mozambique(MZ)  2:00    -   CAT
    //----------------------------------------------------------
    kSystemTimeZones[168] =
    new SimpleTimeZone(2*kMillisPerHour, "Africa/Kigali" /*CAT*/);
    // Africa/Kigali    Rwanda(RW)  2:00    -   CAT
    //----------------------------------------------------------
    kSystemTimeZones[169] =
    new SimpleTimeZone(2*kMillisPerHour, "Africa/Khartoum" /*CA%sT*/);
    // Africa/Khartoum  Sudan(SD)   2:00    -   CA%sT
    //----------------------------------------------------------
    kSystemTimeZones[170] =
    new SimpleTimeZone(2*kMillisPerHour, "Africa/Mbabane" /*SAST*/);
    // Africa/Mbabane   Swaziland(SZ)   2:00    -   SAST
    //----------------------------------------------------------
    kSystemTimeZones[171] =
    new SimpleTimeZone(2*kMillisPerHour, "Africa/Lusaka" /*CAT*/);
    // Africa/Lusaka    Zambia(ZM)  2:00    -   CAT
    //----------------------------------------------------------
    kSystemTimeZones[172] =
    new SimpleTimeZone(2*kMillisPerHour, "Africa/Harare" /*CAT*/);
    // Africa/Harare    Zimbabwe(ZW)    2:00    -   CAT
    kSystemTimeZones[173] =
    new SimpleTimeZone(2*kMillisPerHour, "CAT" /*alias for Africa/Harare*/);
    //----------------------------------------------------------
    kSystemTimeZones[174] =
    new SimpleTimeZone(2*kMillisPerHour, "Africa/Johannesburg" /*SAST*/);
    // Africa/Johannesburg  South Africa(ZA)    2:00    -   SAST
    //----------------------------------------------------------
    kSystemTimeZones[175] =
    new SimpleTimeZone(2*kMillisPerHour, "Europe/Sofia" /*EE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule E-Eur   1981    max -   Mar lastSun 0:00    1:00    S
    // Rule E-Eur   1996    max -   Oct lastSun 0:00    0   -
    // Europe/Sofia Bulgaria(BG)    2:00    E-Eur   EE%sT
    //----------------------------------------------------------
    kSystemTimeZones[176] =
    new SimpleTimeZone(2*kMillisPerHour, "Europe/Minsk" /*EE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Russia  1993    max -   Mar lastSun 2:00s   1:00    S
    // Rule Russia  1996    max -   Oct lastSun 2:00s   0   -
    // Europe/Minsk Belarus(BY) 2:00    Russia  EE%sT
    //----------------------------------------------------------
    kSystemTimeZones[177] =
    new SimpleTimeZone(2*kMillisPerHour, "Asia/Nicosia" /*EE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour,
      Calendar::SEPTEMBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Cyprus  1979    max -   Sep lastSun 0:00    0   -
    // Rule Cyprus  1981    max -   Mar lastSun 0:00    1:00    S
    // Asia/Nicosia Cyprus(CY)  2:00    Cyprus  EE%sT
    //----------------------------------------------------------
    kSystemTimeZones[178] =
    new SimpleTimeZone(2*kMillisPerHour, "Europe/Tallinn" /*EE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule C-Eur   1981    max -   Mar lastSun 2:00s   1:00    S
    // Rule C-Eur   1996    max -   Oct lastSun 2:00s   0   -
    // Europe/Tallinn   Estonia(EE) 2:00    C-Eur   EE%sT
    //----------------------------------------------------------
    kSystemTimeZones[179] =
    new SimpleTimeZone(2*kMillisPerHour, "Africa/Cairo" /*EE%sT*/,
      Calendar::APRIL, -1, Calendar::FRIDAY /*DOW_IN_DOM*/, 1*kMillisPerHour,
      Calendar::SEPTEMBER, -1, Calendar::FRIDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Egypt   1995    max -   Apr lastFri 1:00    1:00    S
    // Rule Egypt   1995    max -   Sep lastFri 3:00    0   -
    // Africa/Cairo Egypt(EG)   2:00    Egypt   EE%sT
    kSystemTimeZones[180] =
    new SimpleTimeZone(2*kMillisPerHour, "ART" /*alias for Africa/Cairo*/,
      Calendar::APRIL, -1, Calendar::FRIDAY /*DOW_IN_DOM*/, 1*kMillisPerHour,
      Calendar::SEPTEMBER, -1, Calendar::FRIDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    //----------------------------------------------------------
    kSystemTimeZones[181] =
    new SimpleTimeZone(2*kMillisPerHour, "Europe/Helsinki" /*EE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule EU  1981    max -   Mar lastSun 1:00u   1:00    S
    // Rule EU  1996    max -   Oct lastSun 1:00u   0   -
    // Europe/Helsinki  Finland(FI) 2:00    EU  EE%sT
    //----------------------------------------------------------
    kSystemTimeZones[182] =
    new SimpleTimeZone(2*kMillisPerHour, "Europe/Athens" /*EE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule EU  1981    max -   Mar lastSun 1:00u   1:00    S
    // Rule EU  1996    max -   Oct lastSun 1:00u   0   -
    // Europe/Athens    Greece(GR)  2:00    EU  EE%sT
    //----------------------------------------------------------
    kSystemTimeZones[183] =
    new SimpleTimeZone(2*kMillisPerHour, "Asia/Jerusalem" /*I%sT*/,
      Calendar::MARCH, 15, -Calendar::FRIDAY /*DOW>=DOM*/, 0*kMillisPerHour,
      Calendar::SEPTEMBER, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Zion    1999    max -   Mar Fri>=15 0:00    1:00    D
    // Rule Zion    1999    max -   Sep Sun>=1  0:00    0   S
    // Asia/Jerusalem   Israel(IL)  2:00    Zion    I%sT
    //----------------------------------------------------------
    kSystemTimeZones[184] =
    new SimpleTimeZone(2*kMillisPerHour, "Asia/Amman" /*EE%sT*/,
      Calendar::APRIL, 1, -Calendar::FRIDAY /*DOW>=DOM*/, 0*kMillisPerHour,
      Calendar::SEPTEMBER, 15, -Calendar::FRIDAY /*DOW>=DOM*/, 1*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule    Jordan   1993    max -   Apr Fri>=1  0:00    1:00    S
    // Rule    Jordan   1995    max -   Sep Fri>=15 0:00s   0   -
    // Asia/Amman   Jordan(JO)  2:00    Jordan  EE%sT
    //----------------------------------------------------------
    kSystemTimeZones[185] =
    new SimpleTimeZone(2*kMillisPerHour, "Asia/Beirut" /*EE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour,
      Calendar::SEPTEMBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Lebanon 1993    max -   Mar lastSun 0:00    1:00    S
    // Rule Lebanon 1993    max -   Sep lastSun 0:00    0   -
    // Asia/Beirut  Lebanon(LB) 2:00    Lebanon EE%sT
    //----------------------------------------------------------
    kSystemTimeZones[186] =
    new SimpleTimeZone(2*kMillisPerHour, "Europe/Vilnius" /*EE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule C-Eur   1981    max -   Mar lastSun 2:00s   1:00    S
    // Rule C-Eur   1996    max -   Oct lastSun 2:00s   0   -
    // Europe/Vilnius   Lithuania(LT)   2:00    C-Eur   EE%sT
    //----------------------------------------------------------
    kSystemTimeZones[187] =
    new SimpleTimeZone(2*kMillisPerHour, "Europe/Riga" /*EE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::SEPTEMBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Latvia  1992    max -   Mar lastSun 2:00s   1:00    S
    // Rule Latvia  1992    max -   Sep lastSun 2:00s   0   -
    // Europe/Riga  Latvia(LV)  2:00    Latvia  EE%sT
    //----------------------------------------------------------
    kSystemTimeZones[188] =
    new SimpleTimeZone(2*kMillisPerHour, "Europe/Chisinau" /*EE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule E-Eur   1981    max -   Mar lastSun 0:00    1:00    S
    // Rule E-Eur   1996    max -   Oct lastSun 0:00    0   -
    // Europe/Chisinau  Moldova(MD) 2:00    E-Eur   EE%sT
    //----------------------------------------------------------
    kSystemTimeZones[189] =
    new SimpleTimeZone(2*kMillisPerHour, "Europe/Bucharest" /*EE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule E-Eur   1981    max -   Mar lastSun 0:00    1:00    S
    // Rule E-Eur   1996    max -   Oct lastSun 0:00    0   -
    // Europe/Bucharest Romania(RO) 2:00    E-Eur   EE%sT
    //----------------------------------------------------------
    kSystemTimeZones[190] =
    new SimpleTimeZone(2*kMillisPerHour, "Asia/Damascus" /*EE%sT*/,
      Calendar::APRIL, 1, 0 /*DOM*/, 0*kMillisPerHour,
      Calendar::OCTOBER, 1, 0 /*DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Syria   1994    max -   Apr 1   0:00    1:00    S
    // Rule Syria   1994    max -   Oct 1   0:00    0   -
    // Asia/Damascus    Syria(SY)   2:00    Syria   EE%sT
    //----------------------------------------------------------
    kSystemTimeZones[191] =
    new SimpleTimeZone(2*kMillisPerHour, "Europe/Kiev" /*EE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule EU  1981    max -   Mar lastSun 1:00u   1:00    S
    // Rule EU  1996    max -   Oct lastSun 1:00u   0   -
    // Europe/Kiev  Ukraine(UA) 2:00    EU  EE%sT
    //----------------------------------------------------------
    kSystemTimeZones[192] =
    new SimpleTimeZone(2*kMillisPerHour, "Europe/Istanbul" /*EE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule EU  1981    max -   Mar lastSun 1:00u   1:00    S
    // Rule EU  1996    max -   Oct lastSun 1:00u   0   -
    // Europe/Istanbul  Turkey(TR)  2:00    EU  EE%sT
    kSystemTimeZones[193] =
    new SimpleTimeZone(2*kMillisPerHour, "EET" /*alias for Europe/Istanbul*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    //----------------------------------------------------------
    kSystemTimeZones[194] =
    new SimpleTimeZone(3*kMillisPerHour, "Asia/Bahrain" /*AST*/);
    // Asia/Bahrain Bahrain(BH) 3:00    -   AST
    //----------------------------------------------------------
    kSystemTimeZones[195] =
    new SimpleTimeZone(3*kMillisPerHour, "Africa/Djibouti" /*EAT*/);
    // Africa/Djibouti  Djibouti(DJ)    3:00    -   EAT
    //----------------------------------------------------------
    kSystemTimeZones[196] =
    new SimpleTimeZone(3*kMillisPerHour, "Africa/Asmera" /*EAT*/);
    // Africa/Asmera    Eritrea(ER) 3:00    -   EAT
    //----------------------------------------------------------
    kSystemTimeZones[197] =
    new SimpleTimeZone(3*kMillisPerHour, "Africa/Addis_Ababa" /*EAT*/);
    // Africa/Addis_Ababa   Ethiopia(ET)    3:00    -   EAT
    kSystemTimeZones[198] =
    new SimpleTimeZone(3*kMillisPerHour, "EAT" /*alias for Africa/Addis_Ababa*/);
    //----------------------------------------------------------
    kSystemTimeZones[199] =
    new SimpleTimeZone(3*kMillisPerHour, "Africa/Nairobi" /*EAT*/);
    // Africa/Nairobi   Kenya(KE)   3:00    -   EAT
    //----------------------------------------------------------
    kSystemTimeZones[200] =
    new SimpleTimeZone(3*kMillisPerHour, "Indian/Comoro" /*EAT*/);
    // Indian/Comoro    Comoros(KM) 3:00    -   EAT
    //----------------------------------------------------------
    kSystemTimeZones[201] =
    new SimpleTimeZone(3*kMillisPerHour, "Asia/Kuwait" /*AST*/);
    // Asia/Kuwait  Kuwait(KW)  3:00    -   AST
    //----------------------------------------------------------
    kSystemTimeZones[202] =
    new SimpleTimeZone(3*kMillisPerHour, "Indian/Antananarivo" /*EAT*/);
    // Indian/Antananarivo  Madagascar(MK)  3:00    -   EAT
    //----------------------------------------------------------
    kSystemTimeZones[203] =
    new SimpleTimeZone(3*kMillisPerHour, "Asia/Qatar" /*AST*/);
    // Asia/Qatar   Qatar(QA)   3:00    -   AST
    //----------------------------------------------------------
    kSystemTimeZones[204] =
    new SimpleTimeZone(3*kMillisPerHour, "Africa/Mogadishu" /*EAT*/);
    // Africa/Mogadishu Somalia(SO) 3:00    -   EAT
    //----------------------------------------------------------
    kSystemTimeZones[205] =
    new SimpleTimeZone(3*kMillisPerHour, "Africa/Dar_es_Salaam" /*EAT*/);
    // Africa/Dar_es_Salaam Tanzania(TZ)    3:00    -   EAT
    //----------------------------------------------------------
    kSystemTimeZones[206] =
    new SimpleTimeZone(3*kMillisPerHour, "Africa/Kampala" /*EAT*/);
    // Africa/Kampala   Uganda(UG)  3:00    -   EAT
    //----------------------------------------------------------
    kSystemTimeZones[207] =
    new SimpleTimeZone(3*kMillisPerHour, "Asia/Aden" /*AST*/);
    // Asia/Aden    Yemen(YE)   3:00    -   AST
    //----------------------------------------------------------
    kSystemTimeZones[208] =
    new SimpleTimeZone(3*kMillisPerHour, "Indian/Mayotte" /*EAT*/);
    // Indian/Mayotte   Mayotte(YT) 3:00    -   EAT
    //----------------------------------------------------------
    kSystemTimeZones[209] =
    new SimpleTimeZone(3*kMillisPerHour, "Asia/Riyadh" /*AST*/);
    // Asia/Riyadh  Saudi Arabia(SA)    3:00    -   AST
    //----------------------------------------------------------
    kSystemTimeZones[210] =
    new SimpleTimeZone(3*kMillisPerHour, "Asia/Baghdad" /*A%sT*/,
      Calendar::APRIL, 1, 0 /*DOM*/, 3*kMillisPerHour,
      Calendar::OCTOBER, 1, 0 /*DOM*/, 4*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Iraq    1991    max -   Apr 1   3:00s   1:00    D
    // Rule Iraq    1991    max -   Oct 1   3:00s   0   D
    // Asia/Baghdad Iraq(IQ)    3:00    Iraq    A%sT
    //----------------------------------------------------------
    kSystemTimeZones[211] =
    new SimpleTimeZone(3*kMillisPerHour, "Europe/Simferopol" /*MSK/MSD*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Crimea  1996    max -   Mar lastSun 0:00u   1:00    -
    // Rule Crimea  1996    max -   Oct lastSun 0:00u   0   -
    // Europe/Simferopol    Ukraine(UA) 3:00    Crimea  MSK/MSD
    //----------------------------------------------------------
    kSystemTimeZones[212] =
    new SimpleTimeZone(3*kMillisPerHour, "Europe/Moscow" /*MSK/MSD*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Russia  1993    max -   Mar lastSun 2:00s   1:00    S
    // Rule Russia  1996    max -   Oct lastSun 2:00s   0   -
    // Europe/Moscow    Russia(RU)  3:00    Russia  MSK/MSD
    //----------------------------------------------------------
    kSystemTimeZones[213] =
    new SimpleTimeZone((int32_t)(3.5*kMillisPerHour), "Asia/Tehran" /*IR%sT*/,
      Calendar::MARCH, 21, 0 /*DOM*/, 0*kMillisPerHour,
      Calendar::SEPTEMBER, 23, 0 /*DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Iran    1997    1999    -   Mar 21  0:00    1:00    S
    // Rule Iran    1997    1999    -   Sep 23  0:00    0   -
    // Asia/Tehran  Iran(IR)    3:30    Iran    IR%sT
    kSystemTimeZones[214] =
    new SimpleTimeZone((int32_t)(3.5*kMillisPerHour), "MET" /*alias for Asia/Tehran*/,
      Calendar::MARCH, 21, 0 /*DOM*/, 0*kMillisPerHour,
      Calendar::SEPTEMBER, 23, 0 /*DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    //----------------------------------------------------------
    kSystemTimeZones[215] =
    new SimpleTimeZone(4*kMillisPerHour, "Asia/Dubai" /*GST*/);
    // Asia/Dubai   United Arab Emirates(AE)    4:00    -   GST
    //----------------------------------------------------------
    kSystemTimeZones[216] =
    new SimpleTimeZone(4*kMillisPerHour, "Indian/Mauritius" /*MUT*/);
    // Indian/Mauritius Mauritius(MU)   4:00    -   MUT # Mauritius Time
    //----------------------------------------------------------
    kSystemTimeZones[217] =
    new SimpleTimeZone(4*kMillisPerHour, "Asia/Muscat" /*GST*/);
    // Asia/Muscat  Oman(OM)    4:00    -   GST
    //----------------------------------------------------------
    kSystemTimeZones[218] =
    new SimpleTimeZone(4*kMillisPerHour, "Indian/Reunion" /*RET*/);
    // Indian/Reunion   Reunion(RE) 4:00    -   RET # Reunion Time
    //----------------------------------------------------------
    kSystemTimeZones[219] =
    new SimpleTimeZone(4*kMillisPerHour, "Indian/Mahe" /*SCT*/);
    // Indian/Mahe  Seychelles(SC)  4:00    -   SCT # Seychelles Time
    //----------------------------------------------------------
    kSystemTimeZones[220] =
    new SimpleTimeZone(4*kMillisPerHour, "Asia/Yerevan" /*AM%sT*/);
    // Asia/Yerevan Armenia(AM) 4:00    -   AM%sT
    kSystemTimeZones[221] =
    new SimpleTimeZone(4*kMillisPerHour, "NET" /*alias for Asia/Yerevan*/);
    //----------------------------------------------------------
    kSystemTimeZones[222] =
    new SimpleTimeZone(4*kMillisPerHour, "Asia/Baku" /*AZ%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 5*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 5*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule EUAsia  1981    max -   Mar lastSun 1:00u   1:00    S
    // Rule EUAsia  1996    max -   Oct lastSun 1:00u   0   -
    // Asia/Baku    Azerbaijan(AZ)  4:00    EUAsia  AZ%sT
    //----------------------------------------------------------
    kSystemTimeZones[223] =
    new SimpleTimeZone(4*kMillisPerHour, "Asia/Aqtau" /*AQT%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule E-EurAsia   1981    max -   Mar lastSun 0:00    1:00    S
    // Rule E-EurAsia   1996    max -   Oct lastSun 0:00    0   -
    // Asia/Aqtau   Kazakhstan(KZ)  4:00    E-EurAsia   AQT%sT
    //----------------------------------------------------------
    kSystemTimeZones[224] =
    new SimpleTimeZone(4*kMillisPerHour, "Europe/Samara" /*SAM%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Russia  1993    max -   Mar lastSun 2:00s   1:00    S
    // Rule Russia  1996    max -   Oct lastSun 2:00s   0   -
    // Europe/Samara    Russia(RU)  4:00    Russia  SAM%sT
    //----------------------------------------------------------
    kSystemTimeZones[225] =
    new SimpleTimeZone((int32_t)(4.5*kMillisPerHour), "Asia/Kabul" /*AFT*/);
    // Asia/Kabul   Afghanistan(AF) 4:30    -   AFT
    //----------------------------------------------------------
    kSystemTimeZones[226] =
    new SimpleTimeZone(5*kMillisPerHour, "Indian/Kerguelen" /*TFT*/);
    // Indian/Kerguelen France - year-round bases(FR)   5:00    -   TFT # ISO code TF Time
    //----------------------------------------------------------
    kSystemTimeZones[227] =
    new SimpleTimeZone(5*kMillisPerHour, "Asia/Tbilisi" /*GET*/);
    // Asia/Tbilisi Georgia(GE) 5:00    -   GET
    //----------------------------------------------------------
    kSystemTimeZones[228] =
    new SimpleTimeZone(5*kMillisPerHour, "Indian/Chagos" /*IOT*/);
    // Indian/Chagos    British Indian Ocean Territory(IO)  5:00    -   IOT # BIOT Time
    //----------------------------------------------------------
    kSystemTimeZones[229] =
    new SimpleTimeZone(5*kMillisPerHour, "Indian/Maldives" /*MVT*/);
    // Indian/Maldives  Maldives(MV)    5:00    -   MVT # Maldives Time
    //----------------------------------------------------------
    kSystemTimeZones[230] =
    new SimpleTimeZone(5*kMillisPerHour, "Asia/Dushanbe" /*TJT*/);
    // Asia/Dushanbe    Tajikistan(TJ)  5:00    -   TJT # Tajikistan Time
    //----------------------------------------------------------
    kSystemTimeZones[231] =
    new SimpleTimeZone(5*kMillisPerHour, "Asia/Ashkhabad" /*TMT*/);
    // Asia/Ashkhabad   Turkmenistan(TM)    5:00    -   TMT # Turkmenistan Time
    //----------------------------------------------------------
    kSystemTimeZones[232] =
    new SimpleTimeZone(5*kMillisPerHour, "Asia/Tashkent" /*UZT*/);
    // Asia/Tashkent    Uzbekistan(UZ)  5:00    -   UZT # Uzbekistan Time
    //----------------------------------------------------------
    kSystemTimeZones[233] =
    new SimpleTimeZone(5*kMillisPerHour, "Asia/Karachi" /*PKT*/);
    // Asia/Karachi Pakistan(PK)    5:00    -   PKT # Pakistan Time
    kSystemTimeZones[234] =
    new SimpleTimeZone(5*kMillisPerHour, "PLT" /*alias for Asia/Karachi*/);
    //----------------------------------------------------------
    kSystemTimeZones[235] =
    new SimpleTimeZone(5*kMillisPerHour, "Asia/Bishkek" /*KG%sT*/,
      Calendar::APRIL, 7, -Calendar::SUNDAY /*DOW>=DOM*/, 0*kMillisPerHour,
      Calendar::SEPTEMBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Kirgiz  1992    max -   Apr Sun>=7  0:00    1:00    S
    // Rule Kirgiz  1991    max -   Sep lastSun 0:00    0   -
    // Asia/Bishkek Kirgizstan(KG)  5:00    Kirgiz  KG%sT   # Kirgizstan Time
    //----------------------------------------------------------
    kSystemTimeZones[236] =
    new SimpleTimeZone(5*kMillisPerHour, "Asia/Aqtobe" /*AQT%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule E-EurAsia   1981    max -   Mar lastSun 0:00    1:00    S
    // Rule E-EurAsia   1996    max -   Oct lastSun 0:00    0   -
    // Asia/Aqtobe  Kazakhstan(KZ)  5:00    E-EurAsia   AQT%sT
    //----------------------------------------------------------
    kSystemTimeZones[237] =
    new SimpleTimeZone(5*kMillisPerHour, "Asia/Yekaterinburg" /*YEK%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Russia  1993    max -   Mar lastSun 2:00s   1:00    S
    // Rule Russia  1996    max -   Oct lastSun 2:00s   0   -
    // Asia/Yekaterinburg   Russia(RU)  5:00    Russia  YEK%sT  # Yekaterinburg Time
    //----------------------------------------------------------
    kSystemTimeZones[238] =
    new SimpleTimeZone((int32_t)(5.5*kMillisPerHour), "Asia/Calcutta" /*IST*/);
    // Asia/Calcutta    India(IN)   5:30    -   IST
    kSystemTimeZones[239] =
    new SimpleTimeZone((int32_t)(5.5*kMillisPerHour), "IST" /*alias for Asia/Calcutta*/);
    //----------------------------------------------------------
    kSystemTimeZones[240] =
    new SimpleTimeZone((int32_t)(5.75*kMillisPerHour), "Asia/Katmandu" /*NPT*/);
    // Asia/Katmandu    Nepal(NP)   5:45    -   NPT # Nepal Time
    //----------------------------------------------------------
    kSystemTimeZones[241] =
    new SimpleTimeZone(6*kMillisPerHour, "Antarctica/Mawson" /*MAWT*/);
    // Antarctica/Mawson    Australia - territories(AQ) 6:00    -   MAWT    # Mawson Time
    //----------------------------------------------------------
    kSystemTimeZones[242] =
    new SimpleTimeZone(6*kMillisPerHour, "Asia/Colombo" /*LKT*/);
    // Asia/Colombo Sri Lanka(LK)   6:00    -   LKT
    //----------------------------------------------------------
    kSystemTimeZones[243] =
    new SimpleTimeZone(6*kMillisPerHour, "Asia/Dacca" /*BDT*/);
    // Asia/Dacca   Bangladesh(BD)  6:00    -   BDT # Bangladesh Time
    kSystemTimeZones[244] =
    new SimpleTimeZone(6*kMillisPerHour, "BST" /*alias for Asia/Dacca*/);
    //----------------------------------------------------------
    kSystemTimeZones[245] =
    new SimpleTimeZone(6*kMillisPerHour, "Asia/Alma-Ata" /*ALM%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule E-EurAsia   1981    max -   Mar lastSun 0:00    1:00    S
    // Rule E-EurAsia   1996    max -   Oct lastSun 0:00    0   -
    // Asia/Alma-Ata    Kazakhstan(KZ)  6:00    E-EurAsia   ALM%sT
    //----------------------------------------------------------
    kSystemTimeZones[246] =
    new SimpleTimeZone(6*kMillisPerHour, "Asia/Novosibirsk" /*NOV%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Russia  1993    max -   Mar lastSun 2:00s   1:00    S
    // Rule Russia  1996    max -   Oct lastSun 2:00s   0   -
    // Asia/Novosibirsk Russia(RU)  6:00    Russia  NOV%sT
    //----------------------------------------------------------
    kSystemTimeZones[247] =
    new SimpleTimeZone((int32_t)(6.5*kMillisPerHour), "Indian/Cocos" /*CCT*/);
    // Indian/Cocos Cocos(CC)   6:30    -   CCT # Cocos Islands Time
    //----------------------------------------------------------
    kSystemTimeZones[248] =
    new SimpleTimeZone((int32_t)(6.5*kMillisPerHour), "Asia/Rangoon" /*MMT*/);
    // Asia/Rangoon Burma / Myanmar(MM) 6:30    -   MMT # Myanmar Time
    //----------------------------------------------------------
    kSystemTimeZones[249] =
    new SimpleTimeZone(7*kMillisPerHour, "Indian/Christmas" /*CXT*/);
    // Indian/Christmas Australian miscellany(AU)   7:00    -   CXT # Christmas Island Time
    //----------------------------------------------------------
    kSystemTimeZones[250] =
    new SimpleTimeZone(7*kMillisPerHour, "Asia/Jakarta" /*JAVT*/);
    // Asia/Jakarta Indonesia(ID)   7:00    -   JAVT
    //----------------------------------------------------------
    kSystemTimeZones[251] =
    new SimpleTimeZone(7*kMillisPerHour, "Asia/Phnom_Penh" /*ICT*/);
    // Asia/Phnom_Penh  Cambodia(KH)    7:00    -   ICT
    //----------------------------------------------------------
    kSystemTimeZones[252] =
    new SimpleTimeZone(7*kMillisPerHour, "Asia/Vientiane" /*ICT*/);
    // Asia/Vientiane   Laos(LA)    7:00    -   ICT
    //----------------------------------------------------------
    kSystemTimeZones[253] =
    new SimpleTimeZone(7*kMillisPerHour, "Asia/Saigon" /*ICT*/);
    // Asia/Saigon  Vietnam(VN) 7:00    -   ICT
    kSystemTimeZones[254] =
    new SimpleTimeZone(7*kMillisPerHour, "VST" /*alias for Asia/Saigon*/);
    //----------------------------------------------------------
    kSystemTimeZones[255] =
    new SimpleTimeZone(7*kMillisPerHour, "Asia/Bangkok" /*ICT*/);
    // Asia/Bangkok Thailand(TH)    7:00    -   ICT
    //----------------------------------------------------------
    kSystemTimeZones[256] =
    new SimpleTimeZone(7*kMillisPerHour, "Asia/Krasnoyarsk" /*KRA%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Russia  1993    max -   Mar lastSun 2:00s   1:00    S
    // Rule Russia  1996    max -   Oct lastSun 2:00s   0   -
    // Asia/Krasnoyarsk Russia(RU)  7:00    Russia  KRA%sT
    //----------------------------------------------------------
    kSystemTimeZones[257] =
    new SimpleTimeZone(8*kMillisPerHour, "Antarctica/Casey" /*WST*/);
    // Antarctica/Casey Australia - territories(AQ) 8:00    -   WST # Western (Aus) Standard Time
    //----------------------------------------------------------
    kSystemTimeZones[258] =
    new SimpleTimeZone(8*kMillisPerHour, "Australia/Perth" /*WST*/);
    // Australia/Perth  Australia(AU)   8:00    -   WST
    //----------------------------------------------------------
    kSystemTimeZones[259] =
    new SimpleTimeZone(8*kMillisPerHour, "Asia/Brunei" /*BNT*/);
    // Asia/Brunei  Brunei(BN)  8:00    -   BNT
    //----------------------------------------------------------
    kSystemTimeZones[260] =
    new SimpleTimeZone(8*kMillisPerHour, "Asia/Hong_Kong" /*C%sT*/);
    // Asia/Hong_Kong   China(HK)   8:00    -   C%sT
    //----------------------------------------------------------
    kSystemTimeZones[261] =
    new SimpleTimeZone(8*kMillisPerHour, "Asia/Ujung_Pandang" /*BORT*/);
    // Asia/Ujung_Pandang   Indonesia(ID)   8:00    -   BORT
    //----------------------------------------------------------
    kSystemTimeZones[262] =
    new SimpleTimeZone(8*kMillisPerHour, "Asia/Ishigaki" /*CST*/);
    // Asia/Ishigaki    Japan(JP)   8:00    -   CST
    //----------------------------------------------------------
    kSystemTimeZones[263] =
    new SimpleTimeZone(8*kMillisPerHour, "Asia/Macao" /*C%sT*/);
    // Asia/Macao   Macao(MO)   8:00    -   C%sT
    //----------------------------------------------------------
    kSystemTimeZones[264] =
    new SimpleTimeZone(8*kMillisPerHour, "Asia/Kuala_Lumpur" /*MYT*/);
    // Asia/Kuala_Lumpur    Malaysia(MY)    8:00    -   MYT # Malaysia Time
    //----------------------------------------------------------
    kSystemTimeZones[265] =
    new SimpleTimeZone(8*kMillisPerHour, "Asia/Manila" /*PH%sT*/);
    // Asia/Manila  Philippines(PH) 8:00    -   PH%sT
    //----------------------------------------------------------
    kSystemTimeZones[266] =
    new SimpleTimeZone(8*kMillisPerHour, "Asia/Singapore" /*SGT*/);
    // Asia/Singapore   Singapore(SG)   8:00    -   SGT
    //----------------------------------------------------------
    kSystemTimeZones[267] =
    new SimpleTimeZone(8*kMillisPerHour, "Asia/Taipei" /*C%sT*/);
    // Asia/Taipei  Taiwan(TW)  8:00    -   C%sT
    //----------------------------------------------------------
    kSystemTimeZones[268] =
    new SimpleTimeZone(8*kMillisPerHour, "Asia/Shanghai" /*C%sT*/);
    // Asia/Shanghai    China(CN)   8:00    -   C%sT
    kSystemTimeZones[269] =
    new SimpleTimeZone(8*kMillisPerHour, "CTT" /*alias for Asia/Shanghai*/);
    //----------------------------------------------------------
    kSystemTimeZones[270] =
    new SimpleTimeZone(8*kMillisPerHour, "Asia/Ulan_Bator" /*ULA%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour,
      Calendar::SEPTEMBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 0*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Mongol  1991    max -   Mar lastSun 0:00    1:00    S
    // Rule Mongol  1997    max -   Sep lastSun 0:00    0   -
    // Asia/Ulan_Bator  Mongolia(MN)    8:00    Mongol  ULA%sT
    //----------------------------------------------------------
    kSystemTimeZones[271] =
    new SimpleTimeZone(8*kMillisPerHour, "Asia/Irkutsk" /*IRK%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Russia  1993    max -   Mar lastSun 2:00s   1:00    S
    // Rule Russia  1996    max -   Oct lastSun 2:00s   0   -
    // Asia/Irkutsk Russia(RU)  8:00    Russia  IRK%sT
    //----------------------------------------------------------
    kSystemTimeZones[272] =
    new SimpleTimeZone(9*kMillisPerHour, "Asia/Jayapura" /*JAYT*/);
    // Asia/Jayapura    Indonesia(ID)   9:00    -   JAYT
    //----------------------------------------------------------
    kSystemTimeZones[273] =
    new SimpleTimeZone(9*kMillisPerHour, "Asia/Pyongyang" /*KST*/);
    // Asia/Pyongyang   ?(KP)   9:00    -   KST
    //----------------------------------------------------------
    kSystemTimeZones[274] =
    new SimpleTimeZone(9*kMillisPerHour, "Asia/Seoul" /*K%sT*/);
    // Asia/Seoul   ?(KR)   9:00    -   K%sT
    //----------------------------------------------------------
    kSystemTimeZones[275] =
    new SimpleTimeZone(9*kMillisPerHour, "Pacific/Palau" /*PWT*/);
    // Pacific/Palau    Palau(PW)   9:00    -   PWT # Palau Time
    //----------------------------------------------------------
    kSystemTimeZones[276] =
    new SimpleTimeZone(9*kMillisPerHour, "Asia/Tokyo" /*JST*/);
    // Asia/Tokyo   Japan(JP)   9:00    -   JST
    kSystemTimeZones[277] =
    new SimpleTimeZone(9*kMillisPerHour, "JST" /*alias for Asia/Tokyo*/);
    //----------------------------------------------------------
    kSystemTimeZones[278] =
    new SimpleTimeZone(9*kMillisPerHour, "Asia/Yakutsk" /*YAK%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Russia  1993    max -   Mar lastSun 2:00s   1:00    S
    // Rule Russia  1996    max -   Oct lastSun 2:00s   0   -
    // Asia/Yakutsk Russia(RU)  9:00    Russia  YAK%sT
    //----------------------------------------------------------
    kSystemTimeZones[279] =
    new SimpleTimeZone((int32_t)(9.5*kMillisPerHour), "Australia/Darwin" /*CST*/);
    // Australia/Darwin Australia(AU)   9:30    -   CST
    kSystemTimeZones[280] =
    new SimpleTimeZone((int32_t)(9.5*kMillisPerHour), "ACT" /*alias for Australia/Darwin*/);
    //----------------------------------------------------------
    kSystemTimeZones[281] =
    new SimpleTimeZone((int32_t)(9.5*kMillisPerHour), "Australia/Adelaide" /*CST*/,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule AS  1987    max -   Oct lastSun 2:00s   1:00    -
    // Rule AS  1995    max -   Mar lastSun 2:00s   0   -
    // Australia/Adelaide   South Australia(AU) 9:30    AS  CST
    //----------------------------------------------------------
    kSystemTimeZones[282] =
    new SimpleTimeZone(10*kMillisPerHour, "Pacific/Truk" /*TRUT*/);
    // Pacific/Truk Micronesia(FM)  10:00   -   TRUT    # Truk Time
    //----------------------------------------------------------
    kSystemTimeZones[283] =
    new SimpleTimeZone(10*kMillisPerHour, "Pacific/Guam" /*GST*/);
    // Pacific/Guam Guam(GU)    10:00   -   GST
    //----------------------------------------------------------
    kSystemTimeZones[284] =
    new SimpleTimeZone(10*kMillisPerHour, "Pacific/Saipan" /*MPT*/);
    // Pacific/Saipan   N Mariana Is(MP)    10:00   -   MPT
    //----------------------------------------------------------
    kSystemTimeZones[285] =
    new SimpleTimeZone(10*kMillisPerHour, "Pacific/Port_Moresby" /*PGT*/);
    // Pacific/Port_Moresby Papua New Guinea(PG)    10:00   -   PGT # Papua New Guinea Time
    //----------------------------------------------------------
    kSystemTimeZones[286] =
    new SimpleTimeZone(10*kMillisPerHour, "Australia/Brisbane" /*EST*/);
    // Australia/Brisbane   Australia(AU)   10:00   -   EST
    //----------------------------------------------------------
    kSystemTimeZones[287] =
    new SimpleTimeZone(10*kMillisPerHour, "Asia/Vladivostok" /*VLA%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Russia  1993    max -   Mar lastSun 2:00s   1:00    S
    // Rule Russia  1996    max -   Oct lastSun 2:00s   0   -
    // Asia/Vladivostok Russia(RU)  10:00   Russia  VLA%sT
    //----------------------------------------------------------
    kSystemTimeZones[288] =
    new SimpleTimeZone(10*kMillisPerHour, "Australia/Sydney" /*EST*/,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule AN  1987    max -   Oct lastSun 2:00s   1:00    -
    // Rule AN  1996    max -   Mar lastSun 2:00s   0   -
    // Australia/Sydney New South Wales(AU) 10:00   AN  EST
    kSystemTimeZones[289] =
    new SimpleTimeZone(10*kMillisPerHour, "AET" /*alias for Australia/Sydney*/,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    //----------------------------------------------------------
    kSystemTimeZones[290] =
    new SimpleTimeZone((int32_t)(10.5*kMillisPerHour), "Australia/Lord_Howe" /*LHST*/,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, (int32_t)(0.5*kMillisPerHour),fgStatus);
    // Rule LH  1987    max -   Oct lastSun 2:00s   0:30    -
    // Rule LH  1996    max -   Mar lastSun 2:00s   0   -
    // Australia/Lord_Howe  Lord Howe Island(AU)    10:30   LH  LHST
    //----------------------------------------------------------
    kSystemTimeZones[291] =
    new SimpleTimeZone(11*kMillisPerHour, "Pacific/Ponape" /*PONT*/);
    // Pacific/Ponape   Micronesia(FM)  11:00   -   PONT    # Ponape Time
    //----------------------------------------------------------
    kSystemTimeZones[292] =
    new SimpleTimeZone(11*kMillisPerHour, "Pacific/Efate" /*VU%sT*/);
    // Pacific/Efate    Vanuatu(VU) 11:00   -   VU%sT   # Vanuatu Time
    //----------------------------------------------------------
    kSystemTimeZones[293] =
    new SimpleTimeZone(11*kMillisPerHour, "Pacific/Guadalcanal" /*SBT*/);
    // Pacific/Guadalcanal  Solomon Is(SB)  11:00   -   SBT # Solomon Is Time
    kSystemTimeZones[294] =
    new SimpleTimeZone(11*kMillisPerHour, "SST" /*alias for Pacific/Guadalcanal*/);
    //----------------------------------------------------------
    kSystemTimeZones[295] =
    new SimpleTimeZone(11*kMillisPerHour, "Pacific/Noumea" /*NC%sT*/,
      Calendar::NOVEMBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::MARCH, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule NC  1997    max -   Mar Sun>=1  2:00s   0   -
    // Rule NC  1997    max -   Nov lastSun 2:00s   1:00    S
    // Pacific/Noumea   New Caledonia(NC)   11:00   NC  NC%sT
    //----------------------------------------------------------
    kSystemTimeZones[296] =
    new SimpleTimeZone(11*kMillisPerHour, "Asia/Magadan" /*MAG%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Russia  1993    max -   Mar lastSun 2:00s   1:00    S
    // Rule Russia  1996    max -   Oct lastSun 2:00s   0   -
    // Asia/Magadan Russia(RU)  11:00   Russia  MAG%sT
    //----------------------------------------------------------
    kSystemTimeZones[297] =
    new SimpleTimeZone((int32_t)(11.5*kMillisPerHour), "Pacific/Norfolk" /*NFT*/);
    // Pacific/Norfolk  Norfolk(NF) 11:30   -   NFT # Norfolk Time
    //----------------------------------------------------------
    kSystemTimeZones[298] =
    new SimpleTimeZone(12*kMillisPerHour, "Pacific/Kosrae" /*KOST*/);
    // Pacific/Kosrae   Micronesia(FM)  12:00   -   KOST    # Kosrae Time
    //----------------------------------------------------------
    kSystemTimeZones[299] =
    new SimpleTimeZone(12*kMillisPerHour, "Pacific/Tarawa" /*GILT*/);
    // Pacific/Tarawa   Kiribati(KI)    12:00   -   GILT    # Gilbert Is Time
    //----------------------------------------------------------
    kSystemTimeZones[300] =
    new SimpleTimeZone(12*kMillisPerHour, "Pacific/Majuro" /*MHT*/);
    // Pacific/Majuro   Marshall Is(MH) 12:00   -   MHT
    //----------------------------------------------------------
    kSystemTimeZones[301] =
    new SimpleTimeZone(12*kMillisPerHour, "Pacific/Nauru" /*NRT*/);
    // Pacific/Nauru    Nauru(NR)   12:00   -   NRT
    //----------------------------------------------------------
    kSystemTimeZones[302] =
    new SimpleTimeZone(12*kMillisPerHour, "Pacific/Funafuti" /*TVT*/);
    // Pacific/Funafuti Tuvalu(TV)  12:00   -   TVT # Tuvalu Time
    //----------------------------------------------------------
    kSystemTimeZones[303] =
    new SimpleTimeZone(12*kMillisPerHour, "Pacific/Wake" /*WAKT*/);
    // Pacific/Wake Wake(US)    12:00   -   WAKT    # Wake Time
    //----------------------------------------------------------
    kSystemTimeZones[304] =
    new SimpleTimeZone(12*kMillisPerHour, "Pacific/Wallis" /*WFT*/);
    // Pacific/Wallis   Wallis and Futuna(WF)   12:00   -   WFT # Wallis & Futuna Time
    //----------------------------------------------------------
    kSystemTimeZones[305] =
    new SimpleTimeZone(12*kMillisPerHour, "Pacific/Fiji" /*FJT*/);
    // Pacific/Fiji Fiji(FJ)    12:00   -   FJT # Fiji Time
    //----------------------------------------------------------
    kSystemTimeZones[306] =
    new SimpleTimeZone(12*kMillisPerHour, "Antarctica/McMurdo" /*NZ%sT*/,
      Calendar::OCTOBER, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour,
      Calendar::MARCH, 15, -Calendar::SUNDAY /*DOW>=DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule NZAQ    1990    max -   Oct Sun>=1  2:00s   1:00    D
    // Rule NZAQ    1990    max -   Mar Sun>=15 2:00s   0   S
    // Antarctica/McMurdo   USA - year-round bases(AQ)  12:00   NZAQ    NZ%sT
    //----------------------------------------------------------
    kSystemTimeZones[307] =
    new SimpleTimeZone(12*kMillisPerHour, "Asia/Kamchatka" /*PET%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Russia  1993    max -   Mar lastSun 2:00s   1:00    S
    // Rule Russia  1996    max -   Oct lastSun 2:00s   0   -
    // Asia/Kamchatka   Russia(RU)  12:00   Russia  PET%sT
    //----------------------------------------------------------
    kSystemTimeZones[308] =
    new SimpleTimeZone(12*kMillisPerHour, "Pacific/Auckland" /*NZ%sT*/,
      Calendar::OCTOBER, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour,
      Calendar::MARCH, 15, -Calendar::SUNDAY /*DOW>=DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule NZ  1990    max -   Oct Sun>=1  2:00s   1:00    D
    // Rule NZ  1990    max -   Mar Sun>=15 2:00s   0   S
    // Pacific/Auckland New Zealand(NZ) 12:00   NZ  NZ%sT
    kSystemTimeZones[309] =
    new SimpleTimeZone(12*kMillisPerHour, "NST" /*alias for Pacific/Auckland*/,
      Calendar::OCTOBER, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour,
      Calendar::MARCH, 15, -Calendar::SUNDAY /*DOW>=DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    //----------------------------------------------------------
    kSystemTimeZones[310] =
    new SimpleTimeZone((int32_t)(12.75*kMillisPerHour), "Pacific/Chatham" /*CHA%sT*/,
      Calendar::OCTOBER, 1, -Calendar::SUNDAY /*DOW>=DOM*/, (int32_t)(2.75*kMillisPerHour),
      Calendar::MARCH, 15, -Calendar::SUNDAY /*DOW>=DOM*/, (int32_t)(3.75*kMillisPerHour), 1*kMillisPerHour,fgStatus);
    // Rule Chatham 1990    max -   Oct Sun>=1  2:45s   1:00    D
    // Rule Chatham 1991    max -   Mar Sun>=15 2:45s   0   S
    // Pacific/Chatham  New Zealand(NZ) 12:45   Chatham CHA%sT
    //----------------------------------------------------------
    kSystemTimeZones[311] =
    new SimpleTimeZone(13*kMillisPerHour, "Pacific/Enderbury" /*PHOT*/);
    // Pacific/Enderbury    Kiribati(KI)    13:00   -   PHOT
    //----------------------------------------------------------
    kSystemTimeZones[312] =
    new SimpleTimeZone(13*kMillisPerHour, "Pacific/Tongatapu" /*TOT*/);
    // Pacific/Tongatapu    Tonga(TO)   13:00   -   TOT
    //----------------------------------------------------------
    kSystemTimeZones[313] =
    new SimpleTimeZone(13*kMillisPerHour, "Asia/Anadyr" /*ANA%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Russia  1993    max -   Mar lastSun 2:00s   1:00    S
    // Rule Russia  1996    max -   Oct lastSun 2:00s   0   -
    // Asia/Anadyr  Russia(RU)  13:00   Russia  ANA%sT
    //----------------------------------------------------------
    kSystemTimeZones[314] =
    new SimpleTimeZone(14*kMillisPerHour, "Pacific/Kiritimati" /*LINT*/);
    // Pacific/Kiritimati   Kiribati(KI)    14:00   -   LINT
    kSystemTimeZones[315] =
    new SimpleTimeZone(-7*kMillisPerHour, "PNT" /*alias for America/Phoenix*/);
    //----------------------------------------------------------
    kSystemTimeZones[316] =
    new SimpleTimeZone((int32_t)(-3.5*kMillisPerHour), "CNT" /*alias for America/St_Johns*/,
      Calendar::APRIL, 1, -Calendar::SUNDAY /*DOW>=DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    //----------------------------------------------------------
    kSystemTimeZones[317] =
    new SimpleTimeZone(10*kMillisPerHour, "Antarctica/DumontDUrville" /*DDUT*/);
    // Antarctica/DumontDUrville    France - year-round bases(AQ)   10:00   -   DDUT    # Dumont-d'Urville Time
    //----------------------------------------------------------
    kSystemTimeZones[318] =
    new SimpleTimeZone(2*kMillisPerHour, "Europe/Kaliningrad" /*EE%sT*/,
      Calendar::MARCH, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 2*kMillisPerHour,
      Calendar::OCTOBER, -1, Calendar::SUNDAY /*DOW_IN_DOM*/, 3*kMillisPerHour, 1*kMillisPerHour,fgStatus);
    // Rule Russia  1993    max -   Mar lastSun 2:00s   1:00    S
    // Rule Russia  1996    max -   Oct lastSun 2:00s   0   -
    // Europe/Kaliningrad   Russia(RU)  2:00    Russia  EE%sT
    //----------------------------------------------------------
    kSystemTimeZones[319] =
    new SimpleTimeZone(6*kMillisPerHour, "Asia/Thimbu" /*BTT*/);
    // Asia/Thimbu  Bhutan(BT)  6:00    -   BTT # Bhutan Time
    //----------------------------------------------------------
  }
}
// ---------------- END GENERATED DATA ----------------

// *** clean up from definitions
#undef int
#undef kMillisPerHour

// *****************************************************************************
// class TimeZone
// *****************************************************************************

TimeZone::TimeZone()
{
}

// -------------------------------------

TimeZone::~TimeZone()
{
}

// -------------------------------------

TimeZone::TimeZone(const TimeZone &source)
    :   fID(source.fID)
{
}

// -------------------------------------

TimeZone &
TimeZone::operator=(const TimeZone &right)
{
    if (this != &right) fID = right.fID;
    return *this;
}

// -------------------------------------

bool_t
TimeZone::operator==(const TimeZone& that) const
{
    return getDynamicClassID() == that.getDynamicClassID() &&
        fID == that.fID;
}

// -------------------------------------

/**
 * Return a reference to the static Hashtable of registered TimeZone
 * objects.  Performs initialization if necessary.
 *
 * This method is also responsible for initializing the array
 * fgAvailableIDs and fgAvailableIDsCount.
 */
const UHashtable&
TimeZone::getHashtable()
{
  if (kSystemInited == FALSE) {
      initSystemTimeZones();
  }
  if (fgAvailableIDs == 0)
    {
      UHashtable *newHashtable;
      int32_t    newTimeZonesCount;
      UnicodeString *newAvailableIds;
     
      // build a hashtable that contains all the TimeZone objects in kSystemTimeZones
      // and maps their IDs to the actual TimeZone objects (gives us fast lookup)
      UErrorCode err = ZERO_ERROR;
      newHashtable = uhash_open((UHashFunction) uhash_hashUString, &err);
      uhash_setValueDeleter(newHashtable, TimeZone::deleteTimeZone);
      
      newTimeZonesCount = kSystemTimeZonesCount;
      newAvailableIds = new UnicodeString[newTimeZonesCount];

        int32_t i;
        for (i=0; i<kSystemTimeZonesCount; ++i)
        {
            SimpleTimeZone *tz = kSystemTimeZones[i];
        uhash_putKey(newHashtable, (tz->getID(newAvailableIds[i])).hashCode() & 0x7FFFFFFF, tz , &err);
    }
    
        Mutex lock;
        // We must recheck fgHashtable for correct locking
        if (fgHashtable == 0)
      {
        fgHashtable = newHashtable;
        fgAvailableIDsCount = newTimeZonesCount;
        fgAvailableIDs = newAvailableIds;
      }
    else
      {
        uhash_close(newHashtable);
        delete [] newAvailableIds;
      }
    }
    return *fgHashtable;
}

// -------------------------------------

/**
 * Convert a non-localized string to an integer using a system function.
 * Return a failing UErrorCode status if all characters are not parsed.
 */
/*int32_t
TimeZone::stringToInteger(const UnicodeString& string, UErrorCode& status)
{
    if (FAILURE(status)) return 0;

    int32_t len = string.size();
    char *number = new char[1 + len];
    if (number == 0) { status = MEMORY_ALLOCATION_ERROR; return 0; }
    char *end;

    string.extract(0, len, number);
    number[len] = 0;
    int32_t value = strtol(number, &end, 10); // Radix 10

    delete[] number;

    if (end-number != len || len == 0)
        status = INVALID_FORMAT_ERROR;

    return value;
}*/

// -------------------------------------

TimeZone*
TimeZone::createTimeZone(const UnicodeString& ID)
{
    if (kSystemInited == FALSE) {
      initSystemTimeZones();
    }
    /* We first try to lookup the zone ID in our hashtable.  If this fails,
     * we try to parse it as a custom string GMT[+-]hh:mm.  This allows us
     * to recognize zones in user.timezone that otherwise cannot be
     * identified.  We do the recognition here, rather than in getDefault(),
     * so that the default zone is always the result of calling
     * getTimeZone() with the property user.timezone.
     *
     * If all else fails, we return GMT, which is probably not what the user
     * wants, but at least is a functioning TimeZone object. */

    TimeZone* result = NULL;
    UHashtable h = getHashtable();
    result = (TimeZone*)uhash_get(&h, ID.hashCode() & 0x7FFFFFFF);
    if(result != NULL)
        return result->clone();

    // result == NULL
      result = createCustomTimeZone(ID);
    if(result == NULL)
        result = GMT->clone();
    
    return result;
}

// -------------------------------------

void
TimeZone::initDefault()
{
  if (kSystemInited == FALSE) {
      initSystemTimeZones();
  }
  // This function is called by createDefault() and adoptDefault() to initialize
  // fgDefaultZone from the system default time zone.  If fgDefaultZone is already
  // filled in, we obviously don't have to do anything.
  if (fgDefaultZone == NULL)
    {
      
      // We access system timezone data through TPlatformUtilities,
      // including tzset(), timezone, and tzname[].
      TimeZone *newZone = NULL;
      int32_t rawOffset = 0;
      const char *hostID;
      UnicodeString ID;
      
      // First, try to create the timezone from our hashtable, based
      // on the string ID in tzname[0].
      {
    Mutex lock; // mutexed to avoid threading issues in the platform fcns.
    icu_tzset(); // Initialize tz... system data
    
    // get the timezone ID from the host.
    hostID = icu_tzname(0);
    
    // Invert sign because UNIX semantics are backwards
    rawOffset = icu_timezone() * -kMillisPerSecond;
      }

      // create UnicodeString ID from hostID (to avoid Mutex deadlock)
      ID = hostID;

      if (ID.size() > 0) 
    {
      UHashtable h = getHashtable();
      TimeZone *z = (TimeZone*)uhash_get(&h,ID.hashCode() & 0x7FFFFFFF);
      // Important -- must clone the TimeZone because fgDefaultZone may be
      // deleted by adoptDefault().
      if (z != 0) newZone = z->clone();
    }

      // If we couldn't get the time zone ID from the host, use the
      // default host timezone offset, timezone.
      if (newZone == NULL)
    {
      // just pick the first entry in the time zone list that has the
      // appropriate GMT offset (if there is one)
      int32_t numMatches = 0;
      const UnicodeString** matches = createAvailableIDs(rawOffset, numMatches);
      if (numMatches > 0) {
        newZone = createTimeZone(*matches[0]);
        delete [] matches;
      }
        }

      // If we _still_ don't have a time zone, use the one specified by kLastResortID.
      // (This call should always succeed, since we code the Hashtable
      // to always contain this TimeZone.)
      if (newZone == NULL)
    newZone = createTimeZone(kLastResortID);

      {
    Mutex lock2;
    if(fgDefaultZone != NULL)
      delete newZone;
    else
      fgDefaultZone = newZone;
      }
    }
}

// -------------------------------------

TimeZone*
TimeZone::createDefault()
{
    initDefault(); // After this call fgDefaultZone is not NULL
    Mutex lock; // Careful...must have mutex here
    return fgDefaultZone->clone();
}

// -------------------------------------

void
TimeZone::adoptDefault(TimeZone* zone)
{
  if (kSystemInited == FALSE) {
      initSystemTimeZones();
  }

    if (zone != NULL)
    {
        Mutex mutex;

        if (fgDefaultZone != NULL) {
            delete fgDefaultZone;
		}

        fgDefaultZone = zone;
    }
}
// -------------------------------------

void
TimeZone::setDefault(const TimeZone& zone)
{
    adoptDefault(zone.clone());
}

// -------------------------------------

const UnicodeString** const
TimeZone::createAvailableIDs(int32_t rawOffset, int32_t& numIDs)
{
    // We are creating a new array to existing UnicodeString pointers.
    // The caller will delete the array when done, but not the pointers
    // in the array.

    getHashtable(); // Force initialization of fgAvailableIDs

    const UnicodeString** const ptrArray =
        (const UnicodeString** const) new UnicodeString*[fgAvailableIDsCount];

    numIDs = 0;
    int32_t pos = -1;
    UHashtable e = getHashtable();
    void* value;
    UnicodeString anID;
    
    while (numIDs < fgAvailableIDsCount && (value = uhash_nextElement(&e, &pos)))
    {
      if (rawOffset == ((SimpleTimeZone *)value)->getRawOffset())
    ptrArray[numIDs++] = new UnicodeString(((SimpleTimeZone *)value)->getID(anID));
    }
    
    return ptrArray;
}

// -------------------------------------

const UnicodeString** const
TimeZone::createAvailableIDs(int32_t& numIDs)
{
    // We are creating a new array to existing UnicodeString pointers.
    // The caller will delete the array when done, but not the pointers
    // in the array.

    getHashtable(); // Force initialization of fgAvailableIDs

    const UnicodeString** const ptrArray =
        (const UnicodeString** const) new UnicodeString*[fgAvailableIDsCount];

    for (int32_t i=0; i<fgAvailableIDsCount; ++i)
        ptrArray[i] = &fgAvailableIDs[i];

    numIDs = fgAvailableIDsCount;
    return ptrArray;
}

// ---------------------------------------


UnicodeString&
TimeZone::getDisplayName(UnicodeString& result) const
{
    return getDisplayName(FALSE,LONG,Locale::getDefault(), result);
}

UnicodeString&
TimeZone::getDisplayName(const Locale& locale, UnicodeString& result) const
{
    return getDisplayName(FALSE, LONG, locale, result);
}

UnicodeString&
TimeZone::getDisplayName(bool_t daylight, EDisplayType style, UnicodeString& result)  const
{
    return getDisplayName(daylight,style, Locale::getDefault(), result);
}

UnicodeString&
TimeZone::getDisplayName(bool_t daylight, EDisplayType style, const Locale& locale, UnicodeString& result) const
{
  if (kSystemInited == FALSE) {
      initSystemTimeZones();
  }
    // SRL TODO: cache the SDF, just like java.
    UErrorCode status = ZERO_ERROR;

    SimpleDateFormat format(style == LONG ? "zzzz" : "z",locale,status);

    if(!SUCCESS(status))
    {
        // *** SRL what do I do here?!!
        return result.remove();
    }

    // Create a new SimpleTimeZone as a stand-in for this zone; the
    // stand-in will have no DST, or all DST, but the same ID and offset,
    // and hence the same display name.
    // We don't cache these because they're small and cheap to create.
    UnicodeString tempID;
    SimpleTimeZone *tz =  daylight ?
        // For the pure-DST zone, we use the month before JANUARY and
        // the month after DECEMBER; if this fails to work at some future
        // date because of increased error checking in SimpleTimeZone,
        // change these parameters to JANUARY and DECEMBER, which will
        // work equally well, but will be slower.

        new SimpleTimeZone(getRawOffset(), getID(tempID),
                           Calendar::JANUARY - 1, 1, 0, 0,
                           Calendar::DECEMBER + 1, 31, 0, kMillisPerDay, status) :
        new SimpleTimeZone(getRawOffset(), getID(tempID));

    format.applyPattern(style == LONG ? "zzzz" : "z");
    Calendar *myCalendar = (Calendar*)format.getCalendar();
    myCalendar->setTimeZone(*tz); // copy
    
    delete tz;

    FieldPosition pos(FieldPosition::DONT_CARE);
    return format.format(UDate(), result, pos); // Doesn't matter what date we use
}


/**
 * Parse a custom time zone identifier and return a corresponding zone.
 * @param id a string of the form GMT[+-]hh:mm, GMT[+-]hhmm, or
 * GMT[+-]hh.
 * @return a newly created SimpleTimeZone with the given offset and
 * no Daylight Savings Time, or null if the id cannot be parsed.
*/
TimeZone*
TimeZone::createCustomTimeZone(const UnicodeString& id)
{
    static const int32_t         kParseFailed = -99999;

    NumberFormat* numberFormat = 0;
    
    UnicodeString idUppercase = id;
    idUppercase.toUpper();

    if (id.size() > GMT_ID_LENGTH &&
        idUppercase.startsWith(GMT_ID))
    {
        ParsePosition pos(GMT_ID_LENGTH);
        bool_t negative = FALSE;
        int32_t offset;

        if (id[pos.getIndex()] == 0x002D /*'-'*/)
            negative = TRUE;
        else if (id[pos.getIndex()] != 0x002B /*'+'*/)
            return 0;
        pos.setIndex(pos.getIndex() + 1);

        UErrorCode success = ZERO_ERROR;
        numberFormat = NumberFormat::createInstance(success);
        numberFormat->setParseIntegerOnly(TRUE);

    
        // Look for either hh:mm, hhmm, or hh
        int32_t start = pos.getIndex();
        
        Formattable n(kParseFailed);

        numberFormat->parse(id, n, pos);
        if (pos.getIndex() == start) return 0;
        offset = n.getLong();

        if (pos.getIndex() < id.size() &&
            id[pos.getIndex()] == 0x003A /*':'*/)
        {
            // hh:mm
            offset *= 60;
            pos.setIndex(pos.getIndex() + 1);
            int32_t oldPos = pos.getIndex();
            n.setLong(kParseFailed);
            numberFormat->parse(id, n, pos);
            if (pos.getIndex() == oldPos) return 0;
            offset += n.getLong();
        }
        else 
        {
            // hhmm or hh

            // Be strict about interpreting something as hh; it must be
            // an offset < 30, and it must be one or two digits. Thus
            // 0010 is interpreted as 00:10, but 10 is interpreted as
            // 10:00.
            if (offset < 30 && (pos.getIndex() - start) <= 2)
                offset *= 60; // hh, from 00 to 29; 30 is 00:30
            else
                offset = offset % 100 + offset / 100 * 60; // hhmm
        }

        if(negative)
            offset = -offset;

        return new SimpleTimeZone(offset * 60000, CUSTOM_ID);
        delete numberFormat;
    }
    return 0;
}


bool_t 
TimeZone::hasSameRules(const TimeZone& other) const
{
    return (getRawOffset() == other.getRawOffset() && 
            useDaylightTime() == other.useDaylightTime());
}

//eof
