packages feed

tz (empty) → 0.0.0.1

raw patch · 593 files changed

+1973/−0 lines, 593 filesdep +HUnitdep +QuickCheckdep +basesetup-changedbinary-added

Dependencies added: HUnit, QuickCheck, base, binary, bindings-posix, bytestring, criterion, lens, test-framework, test-framework-hunit, test-framework-quickcheck2, test-framework-th, thyme, time, timezone-olson, timezone-series, tz, unix, vector

Files

+ Data/Time/Zones.hs view
@@ -0,0 +1,229 @@+{- |+Module      : Data.Time.Zones+Copyright   : (C) 2014 Mihaly Barasz+License     : Apache-2.0, see LICENSE+Maintainer  : Mihaly Barasz <klao@nilcons.com>+Stability   : experimental+-}++{-# LANGUAGE BangPatterns #-}++module Data.Time.Zones (+  TZ,+  utcTZ,+  -- * Universal -> Local direction+  diffForPOSIX,+  timeZoneForPOSIX,+  timeZoneForUTCTime,+  utcToLocalTimeTZ,+  -- * Local -> Universal direction+  LocalToUTCResult(..),+  localTimeToUTCFull,+  localTimeToUTCTZ,+  -- TODO(klao): do we want to export these?+  FromLocal(..),+  localToPOSIX,+  -- * Acquiring `TZ` information+  loadTZFromFile,+  loadTZFromDB,+  loadSystemTZ,+  loadLocalTZ,+  ) where++import Data.Bits (shiftR)+import Data.Fixed (divMod')+import Data.Int (Int64)+import Data.Time+import qualified Data.Vector as VB+import qualified Data.Vector.Unboxed as VU+import Data.Time.Zones.Types+import Data.Time.Zones.Read++-- | Returns the time difference (in seconds) for TZ at the given+-- POSIX time.+diffForPOSIX :: TZ -> Int64 -> Int+{-# INLINE diffForPOSIX #-}+diffForPOSIX (TZ trans diffs _) t = VU.unsafeIndex diffs $ binarySearch trans t++timeZoneForIx :: TZ -> Int -> TimeZone+{-# INLINE timeZoneForIx #-}+timeZoneForIx (TZ _ diffs infos) i = TimeZone diffMins isDst name+  where+    diffMins = VU.unsafeIndex diffs i `div` 60+    (isDst, name) = VB.unsafeIndex infos i++-- | Returns the `TimeZone` for the `TZ` at the given POSIX time.+timeZoneForPOSIX :: TZ -> Int64 -> TimeZone+{-# INLINABLE timeZoneForPOSIX #-}+timeZoneForPOSIX tz@(TZ trans _ _) t = timeZoneForIx tz i+  where+    i = binarySearch trans t++-- | Returns the `TimeZone` for the `TZ` at the given `UTCTime`.+timeZoneForUTCTime :: TZ -> UTCTime -> TimeZone+{-# INLINABLE timeZoneForUTCTime #-}+timeZoneForUTCTime tz (UTCTime day tid)+  = timeZoneForPOSIX tz $ dayTimeToInt64 day tid++-- | Returns the `LocalTime` corresponding to the given `UTCTime` in `TZ`.+--+-- @utcToLocalTimeTZ tz ut@ is equivalent to @`utcToLocalTime`+-- (`timeZoneForPOSIX` tz ut) ut@ except when the time difference is not+-- an integral number of minutes+utcToLocalTimeTZ :: TZ -> UTCTime -> LocalTime+utcToLocalTimeTZ tz (UTCTime day dtime) = LocalTime day' tod+  where+    diff = diffForPOSIX tz $ dayTimeToInt64 day dtime+    (m', s) = (dtime + fromIntegral diff) `divMod'` 60+    (h', m) = m' `divMod` 60+    (d', h) = h' `divMod` 24+    day' = fromIntegral d' `addDays` day+    tod = TimeOfDay h m (realToFrac s)++-- | The `TZ` definition for UTC.+utcTZ :: TZ+utcTZ = TZ (VU.singleton minBound) (VU.singleton 0) (VB.singleton (False, "UTC"))++-- | Returns the largest index `i` such that `v ! i <= t`.+--+-- Assumes that `v` is sorted, has at least one element and `v ! 0 <= t`.+binarySearch :: (VU.Unbox a, Ord a) => VU.Vector a -> a -> Int+{-# INLINE binarySearch #-}+binarySearch v t | n == 1    = 0+                 | otherwise = t `seq` go 1 n+  where+    n = VU.length v+    go !l !u | l >= u = (l - 1)+             | VU.unsafeIndex v k <= t  = go (k+1) u+             | otherwise  = go l k+      where+        k = (l + u) `shiftR` 1++--------------------------------------------------------------------------------+-- LocalTime to UTCTime++-- Representing LocalTimes as Int64s.+--+-- We want a simple and convenient mapping of+-- (year,month,day,hour,minutes,seconds) tuples onto a linear+-- scale. We adopt the following convention: an Int64 maps to the+-- tuple that a POSIX time represented by the same number would map in+-- UTC time zone. That is, 0 maps to '1970-01-01 00:00:00' and+-- 1395516860 maps to '2014-03-22 19:34:20'.+--+-- This is independent and without reference to any particular time+-- zone, it is completely analogous to LocalTime in that you need a+-- time zone to be able to interpret this as a point in time. And then+-- it may refer to an invalid time (spring time forward clock jump) or+-- two possible times (fall time backward jump).+--+-- So, it's basically another representation for LocalTimes (those+-- that can be represented within an Int64 and ignoring the fractional+-- seconds), except that LocalTime can contain invalid time-of-day+-- part (like 27:-05:107) and the Int64 representation can't and is+-- always unambiguous.+--+-- With that in mind, a UTCTime to LocalTime conversion can be seen as+-- 'TZ -> Int64 -> Int64', where the first Int64 is POSIX time and the+-- second is this kind of LocalTime representation.+++-- | Internal representation of LocalTime -> UTCTime conversion result:+data FromLocal+  = FLGap    { _flIx :: {-# UNPACK #-} !Int+             , _flRes :: {-# UNPACK #-} !Int64 }+  | FLUnique { _flIx :: {-# UNPACK #-} !Int+             , _flRes :: {-# UNPACK #-} !Int64 }+  | FLDouble { _flIx :: {-# UNPACK #-} !Int+             , _flRes1 :: {-# UNPACK #-} !Int64+             , _flRes2 :: {-# UNPACK #-} !Int64 }+  deriving (Show)++-- We make the following two assumptions here:+--+-- 1. No diff in any time zone is ever bigger than 24 hours.+--+-- 2. No two consecutive transitions in any zone file ever fall within+--    48 hours of each other.+--+-- As a consequence, a local time might correspond to two different+-- points in time, but never three.+--+-- TODO(klao): check that these assuptions hold.+localToPOSIX :: TZ -> Int64 -> FromLocal+{-# INLINABLE localToPOSIX #-}+localToPOSIX (TZ trans diffs _) !lTime = res+  where+    lBound = lTime - 86400+    ix = binarySearch trans lBound+    cand1 = lTime - fromIntegral (VU.unsafeIndex diffs ix)+    res = if ix == VU.length trans+          then FLUnique ix cand1 -- TODO(klao): extend when rule handling is added+          else res'+               +    ix' = ix + 1+    nextTrans = VU.unsafeIndex trans ix'+    cand2 = lTime - fromIntegral (VU.unsafeIndex diffs ix')+    res' = case (cand1 < nextTrans, cand2 >= nextTrans) of+      (False, False) -> FLGap ix cand1+      (True,  False) -> FLUnique ix cand1+      (False, True)  -> FLUnique ix' cand2+      (True,  True)  -> FLDouble ix cand1 cand2++-- | Fully descriptive result of a LocalTime to UTCTime conversion.+--+-- In case of LTUAmbiguous the first result is always earlier than the+-- second one. Generally this only happens during the daylight saving+-- -> standard time transition (ie. summer -> winter). So, the first+-- result corresponds to interpreting the LocalTime as a daylight+-- saving time and the second result as standard time in the given+-- location.+--+-- But, if the location had some kind of administrative time+-- transition during which the clocks jumped back, then both results+-- can correspond to standard times (or daylight saving times) just+-- before and after the transition. You can always inspect the+-- 'timeZoneSummerOnly' field of the returned 'TimeZone's to get an+-- idea what kind of transition was taking place.+--+-- TODO(klao): document the LTUNone behavior.+data LocalToUTCResult+  = LTUNone { _ltuResult :: UTCTime+            , _ltuZone :: TimeZone }+  | LTUUnique { _ltuResult :: UTCTime+              , _ltuZone :: TimeZone }+  | LTUAmbiguous { _ltuFirst      :: UTCTime+                 , _ltuSecond     :: UTCTime+                 , _ltuFirstZone  :: TimeZone+                 , _ltuSecondZone :: TimeZone+                 } deriving (Eq, Show)++-- TODO(klao): measure the improvement+dayTimeToInt64 :: RealFrac a => Day -> a -> Int64+{-# INLINE dayTimeToInt64 #-}+dayTimeToInt64 (ModifiedJulianDay d) t = 86400 * (fromIntegral d - unixEpochDay) + floor t+  where+    unixEpochDay = 40587++-- TODO(klao): better name+localTimeToUTCFull :: TZ -> LocalTime -> LocalToUTCResult+localTimeToUTCFull tz@(TZ _ diffs _) (LocalTime day tod) = res+  where+    tid = timeOfDayToTime tod+    t = dayTimeToInt64 day tid+    addDiff i = UTCTime (addDays d day) tid'+      where+        diff = VU.unsafeIndex diffs i+        (d, tid') = (tid - fromIntegral diff) `divMod'` 86400+    res = case localToPOSIX tz t of+      FLGap i _ -> LTUNone (addDiff i) (timeZoneForIx tz i)+      FLUnique i _ -> LTUUnique (addDiff i) (timeZoneForIx tz i)+      FLDouble i _ _ -> LTUAmbiguous (addDiff i) (addDiff (i+1))+                          (timeZoneForIx tz i) (timeZoneForIx tz (i+1))++localTimeToUTCTZ :: TZ -> LocalTime -> UTCTime+localTimeToUTCTZ tz lt =+  case localTimeToUTCFull tz lt of+    LTUNone ut _ -> ut+    LTUUnique ut _ -> ut+    LTUAmbiguous _ ut _ _ -> ut
+ Data/Time/Zones/Read.hs view
@@ -0,0 +1,164 @@+{- |+Module      : Data.Time.Zones+Copyright   : (C) 2014 Mihaly Barasz+License     : Apache-2.0, see LICENSE+Maintainer  : Mihaly Barasz <klao@nilcons.com>+Stability   : experimental+-}++{-# LANGUAGE OverloadedStrings #-}++module Data.Time.Zones.Read (+  loadTZFromFile,+  loadSystemTZ,+  loadLocalTZ,+  loadTZFromDB,+  olsonGet,+  ) where++import Control.Applicative+import Control.Monad (unless)+import Data.Binary+import Data.Binary.Get+import qualified Data.ByteString.Char8 as BS+import qualified Data.ByteString.Lazy.Char8 as BL+import Data.Maybe+import Data.Vector.Generic (stream, unstream)+import qualified Data.Vector.Unboxed as VU+import qualified Data.Vector as VB+import Data.Int+import Data.Time.Zones.Types+import System.Environment+import System.IO.Error++import Paths_tz hiding (version)++-- | Reads and parses a time zone information file (in @tzfile(5)@+-- aka. Olson file format) and returns the corresponding TZ data+-- structure.+loadTZFromFile :: FilePath -> IO TZ+loadTZFromFile fname = runGet olsonGet <$> BL.readFile fname++-- | Looks for the time zone file in the system timezone directory, which is+-- @\/usr\/share\/zoneinfo@, or if the @TZDIR@ environment variable is+-- set, then there.+loadSystemTZ :: String -> IO TZ+loadSystemTZ tzName = do+  dir <- fromMaybe "/usr/share/zoneinfo" <$> getEnvMaybe "TZDIR"+  loadTZFromFile $ dir ++ "/" ++ tzName++++-- | Returns the local `TZ` based on the @TZ@ and @TZDIR@+-- environment variables.+--+-- See @tzset(3)@ for details, but basically:+--+-- * If @TZ@ environment variable is unset, we @loadTZFromFile \"\/etc\/localtime\"@.+--+-- * If @TZ@ is set, but empty, we @loadSystemTZ \"UTC\"@.+--+-- * Otherwise, we just @loadSystemTZ@ it.+--+-- Note, this means we don't support POSIX-style @TZ@ variables (like+-- @\"EST5EDT\"@), only those that are explicitly present in the time+-- zone database.+loadLocalTZ :: IO TZ+loadLocalTZ = do+  tzEnv <- getEnvMaybe "TZ"+  case tzEnv of+    Nothing -> loadTZFromFile "/etc/localtime"+    Just "" -> loadSystemTZ "UTC"+    Just z -> loadSystemTZ z++getEnvMaybe :: String -> IO (Maybe String)+getEnvMaybe var =+  fmap Just (getEnv var) `catchIOError`+  (\e -> if isDoesNotExistError e then return Nothing else ioError e)++-- | Reads the corresponding file from the time zone database shipped+-- with this package.+loadTZFromDB :: String -> IO TZ+loadTZFromDB tzName = do+  -- TODO(klao): this probably won't work on Windows.+  fn <- getDataFileName $ tzName ++ ".zone"+  loadTZFromFile fn++olsonGet :: Get TZ+olsonGet = do+  version <- olsonHeader+  case () of+    () | version == '\0' -> olsonGetWith 4 getTime32+    () | version `elem` ['2', '3'] -> do+      skipOlson0+      _ <- olsonHeader+      olsonGetWith 8 getTime64+      -- TODO(klao): read the rule string+    _ -> fail $ "olsonGet: invalid version character: " ++ show version++olsonHeader :: Get Char+olsonHeader = do+  magic <- getByteString 4+  unless (magic == "TZif") $ fail "olsonHeader: bad magic"+  version <- toEnum <$> getInt8+  skip 15+  return version++skipOlson0 :: Get ()+skipOlson0 = do+  tzh_ttisgmtcnt <- getInt32+  tzh_ttisstdcnt <- getInt32+  tzh_leapcnt <- getInt32+  tzh_timecnt <- getInt32+  tzh_typecnt <- getInt32+  tzh_charcnt <- getInt32+  skip $ (4 * tzh_timecnt) + tzh_timecnt + (6 * tzh_typecnt) + tzh_charcnt ++    (8 * tzh_leapcnt) + tzh_ttisstdcnt + tzh_ttisgmtcnt++olsonGetWith :: Int -> Get Int64 -> Get TZ+olsonGetWith szTime getTime = do+  tzh_ttisgmtcnt <- getInt32+  tzh_ttisstdcnt <- getInt32+  tzh_leapcnt <- getInt32+  tzh_timecnt <- getInt32+  tzh_typecnt <- getInt32+  tzh_charcnt <- getInt32+  transitions <- VU.replicateM tzh_timecnt getTime+  indices <- VU.replicateM tzh_timecnt getInt8+  infos <- VU.replicateM tzh_typecnt getTTInfo+  abbrs <- getByteString tzh_charcnt+  skip $ tzh_leapcnt * (szTime + 4)+  skip tzh_ttisstdcnt+  skip tzh_ttisgmtcnt+  let isDst (_,x,_) = x+      gmtOff (x,_,_) = x+      isDstName (_,d,ni) = (d, abbrForInd ni abbrs)+      lInfos = VU.toList infos+      first = head $ filter (not . isDst) lInfos ++ lInfos+      vtrans = VU.cons minBound transitions+      eInfos = VU.cons first $ VU.map (infos VU.!) indices+      vdiffs = VU.map gmtOff eInfos+      vinfos = VB.map isDstName $ unstream $ stream eInfos+  return $ TZ vtrans vdiffs vinfos++abbrForInd :: Int -> BS.ByteString -> String+abbrForInd i = BS.unpack . BS.takeWhile (/= '\0') . BS.drop i++getTTInfo :: Get (Int, Bool, Int)  -- (gmtoff, isdst, abbrind)+getTTInfo = (,,) <$> getInt32 <*> get <*> getInt8++getInt8 :: Get Int+{-# INLINE getInt8 #-}+getInt8 = fromIntegral <$> getWord8++getInt32 :: Get Int+{-# INLINE getInt32 #-}+getInt32 = (fromIntegral :: Int32 -> Int) . fromIntegral <$> getWord32be++getTime32 :: Get Int64+{-# INLINE getTime32 #-}+getTime32 = fromIntegral <$> getInt32++getTime64 :: Get Int64+{-# INLINE getTime64 #-}+getTime64 = fromIntegral <$> getWord64be
+ Data/Time/Zones/Types.hs view
@@ -0,0 +1,24 @@+{- |+Module      : Data.Time.Zones+Copyright   : (C) 2014 Mihaly Barasz+License     : Apache-2.0, see LICENSE+Maintainer  : Mihaly Barasz <klao@nilcons.com>+Stability   : experimental+-}++module Data.Time.Zones.Types (+  TZ(..),+  ) where++import Data.Int+import qualified Data.Vector.Unboxed as VU+import qualified Data.Vector as VB++data TZ = TZ {+  _tzTrans :: !(VU.Vector Int64),+  _tzDiffs :: !(VU.Vector Int),+  -- TODO(klao): maybe we should store it as a vector of indices and a+  -- (short) vector of expanded 'TimeZone's, similarly to how it's+  -- stored?+  _tzInfos :: !(VB.Vector (Bool, String))   -- (summer, name)+  } deriving (Eq,Show)
+ LICENSE view
@@ -0,0 +1,201 @@+Apache License+                           Version 2.0, January 2004+                        http://www.apache.org/licenses/++   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION++   1. Definitions.++      "License" shall mean the terms and conditions for use, reproduction,+      and distribution as defined by Sections 1 through 9 of this document.++      "Licensor" shall mean the copyright owner or entity authorized by+      the copyright owner that is granting the License.++      "Legal Entity" shall mean the union of the acting entity and all+      other entities that control, are controlled by, or are under common+      control with that entity. For the purposes of this definition,+      "control" means (i) the power, direct or indirect, to cause the+      direction or management of such entity, whether by contract or+      otherwise, or (ii) ownership of fifty percent (50%) or more of the+      outstanding shares, or (iii) beneficial ownership of such entity.++      "You" (or "Your") shall mean an individual or Legal Entity+      exercising permissions granted by this License.++      "Source" form shall mean the preferred form for making modifications,+      including but not limited to software source code, documentation+      source, and configuration files.++      "Object" form shall mean any form resulting from mechanical+      transformation or translation of a Source form, including but+      not limited to compiled object code, generated documentation,+      and conversions to other media types.++      "Work" shall mean the work of authorship, whether in Source or+      Object form, made available under the License, as indicated by a+      copyright notice that is included in or attached to the work+      (an example is provided in the Appendix below).++      "Derivative Works" shall mean any work, whether in Source or Object+      form, that is based on (or derived from) the Work and for which the+      editorial revisions, annotations, elaborations, or other modifications+      represent, as a whole, an original work of authorship. For the purposes+      of this License, Derivative Works shall not include works that remain+      separable from, or merely link (or bind by name) to the interfaces of,+      the Work and Derivative Works thereof.++      "Contribution" shall mean any work of authorship, including+      the original version of the Work and any modifications or additions+      to that Work or Derivative Works thereof, that is intentionally+      submitted to Licensor for inclusion in the Work by the copyright owner+      or by an individual or Legal Entity authorized to submit on behalf of+      the copyright owner. For the purposes of this definition, "submitted"+      means any form of electronic, verbal, or written communication sent+      to the Licensor or its representatives, including but not limited to+      communication on electronic mailing lists, source code control systems,+      and issue tracking systems that are managed by, or on behalf of, the+      Licensor for the purpose of discussing and improving the Work, but+      excluding communication that is conspicuously marked or otherwise+      designated in writing by the copyright owner as "Not a Contribution."++      "Contributor" shall mean Licensor and any individual or Legal Entity+      on behalf of whom a Contribution has been received by Licensor and+      subsequently incorporated within the Work.++   2. Grant of Copyright License. Subject to the terms and conditions of+      this License, each Contributor hereby grants to You a perpetual,+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable+      copyright license to reproduce, prepare Derivative Works of,+      publicly display, publicly perform, sublicense, and distribute the+      Work and such Derivative Works in Source or Object form.++   3. Grant of Patent License. Subject to the terms and conditions of+      this License, each Contributor hereby grants to You a perpetual,+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable+      (except as stated in this section) patent license to make, have made,+      use, offer to sell, sell, import, and otherwise transfer the Work,+      where such license applies only to those patent claims licensable+      by such Contributor that are necessarily infringed by their+      Contribution(s) alone or by combination of their Contribution(s)+      with the Work to which such Contribution(s) was submitted. If You+      institute patent litigation against any entity (including a+      cross-claim or counterclaim in a lawsuit) alleging that the Work+      or a Contribution incorporated within the Work constitutes direct+      or contributory patent infringement, then any patent licenses+      granted to You under this License for that Work shall terminate+      as of the date such litigation is filed.++   4. Redistribution. You may reproduce and distribute copies of the+      Work or Derivative Works thereof in any medium, with or without+      modifications, and in Source or Object form, provided that You+      meet the following conditions:++      (a) You must give any other recipients of the Work or+          Derivative Works a copy of this License; and++      (b) You must cause any modified files to carry prominent notices+          stating that You changed the files; and++      (c) You must retain, in the Source form of any Derivative Works+          that You distribute, all copyright, patent, trademark, and+          attribution notices from the Source form of the Work,+          excluding those notices that do not pertain to any part of+          the Derivative Works; and++      (d) If the Work includes a "NOTICE" text file as part of its+          distribution, then any Derivative Works that You distribute must+          include a readable copy of the attribution notices contained+          within such NOTICE file, excluding those notices that do not+          pertain to any part of the Derivative Works, in at least one+          of the following places: within a NOTICE text file distributed+          as part of the Derivative Works; within the Source form or+          documentation, if provided along with the Derivative Works; or,+          within a display generated by the Derivative Works, if and+          wherever such third-party notices normally appear. The contents+          of the NOTICE file are for informational purposes only and+          do not modify the License. You may add Your own attribution+          notices within Derivative Works that You distribute, alongside+          or as an addendum to the NOTICE text from the Work, provided+          that such additional attribution notices cannot be construed+          as modifying the License.++      You may add Your own copyright statement to Your modifications and+      may provide additional or different license terms and conditions+      for use, reproduction, or distribution of Your modifications, or+      for any such Derivative Works as a whole, provided Your use,+      reproduction, and distribution of the Work otherwise complies with+      the conditions stated in this License.++   5. Submission of Contributions. Unless You explicitly state otherwise,+      any Contribution intentionally submitted for inclusion in the Work+      by You to the Licensor shall be under the terms and conditions of+      this License, without any additional terms or conditions.+      Notwithstanding the above, nothing herein shall supersede or modify+      the terms of any separate license agreement you may have executed+      with Licensor regarding such Contributions.++   6. Trademarks. This License does not grant permission to use the trade+      names, trademarks, service marks, or product names of the Licensor,+      except as required for reasonable and customary use in describing the+      origin of the Work and reproducing the content of the NOTICE file.++   7. Disclaimer of Warranty. Unless required by applicable law or+      agreed to in writing, Licensor provides the Work (and each+      Contributor provides its Contributions) on an "AS IS" BASIS,+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or+      implied, including, without limitation, any warranties or conditions+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A+      PARTICULAR PURPOSE. You are solely responsible for determining the+      appropriateness of using or redistributing the Work and assume any+      risks associated with Your exercise of permissions under this License.++   8. Limitation of Liability. In no event and under no legal theory,+      whether in tort (including negligence), contract, or otherwise,+      unless required by applicable law (such as deliberate and grossly+      negligent acts) or agreed to in writing, shall any Contributor be+      liable to You for damages, including any direct, indirect, special,+      incidental, or consequential damages of any character arising as a+      result of this License or out of the use or inability to use the+      Work (including but not limited to damages for loss of goodwill,+      work stoppage, computer failure or malfunction, or any and all+      other commercial damages or losses), even if such Contributor+      has been advised of the possibility of such damages.++   9. Accepting Warranty or Additional Liability. While redistributing+      the Work or Derivative Works thereof, You may choose to offer,+      and charge a fee for, acceptance of support, warranty, indemnity,+      or other liability obligations and/or rights consistent with this+      License. However, in accepting such obligations, You may act only+      on Your own behalf and on Your sole responsibility, not on behalf+      of any other Contributor, and only if You agree to indemnify,+      defend, and hold each Contributor harmless for any liability+      incurred by, or claims asserted against, such Contributor by reason+      of your accepting any such warranty or additional liability.++   END OF TERMS AND CONDITIONS++   APPENDIX: How to apply the Apache License to your work.++      To apply the Apache License to your work, attach the following+      boilerplate notice, with the fields enclosed by brackets "{}"+      replaced with your own identifying information. (Don't include+      the brackets!)  The text should be enclosed in the appropriate+      comment syntax for the file format. We also recommend that a+      file or class name and description of purpose be included on the+      same "printed page" as the copyright notice for easier+      identification within third-party archives.++   Copyright {yyyy} {name of copyright owner}++   Licensed under the Apache License, Version 2.0 (the "License");+   you may not use this file except in compliance with the License.+   You may obtain a copy of the License at++       http://www.apache.org/licenses/LICENSE-2.0++   Unless required by applicable law or agreed to in writing, software+   distributed under the License is distributed on an "AS IS" BASIS,+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.+   See the License for the specific language governing permissions and+   limitations under the License.
+ README.md view
@@ -0,0 +1,4 @@+haskell-tz+==========++Haskell package shipping the standard time zone database &amp; library to use with it
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ benchmarks/benchGreg.hs view
@@ -0,0 +1,123 @@+{-# LANGUAGE BangPatterns #-}+{-# LANGUAGE TemplateHaskell #-}++module Main where++import Criterion.Main+import Control.Lens+import Data.Bits+import Data.Time+import qualified Data.Thyme.Calendar.OrdinalDate as Th+import qualified Data.Thyme as Th+import Data.Time.Calendar.OrdinalDate++data YD = YD {+  _ydYear :: {-# UNPACK #-} !Int,+  _ydDay  :: {-# UNPACK #-} !Int+  } deriving (Show)++makeLenses ''YD++toOrdinalDate' :: Int -> YD+{-# INLINE toOrdinalDate' #-}+toOrdinalDate' !day = YD (fromIntegral y) (fromIntegral d)+  where+    (!y,!d) = toOrdinalDate $ ModifiedJulianDay $ fromIntegral day++toOrdinalDateTh :: Int -> YD+{-# INLINE toOrdinalDateTh #-}+toOrdinalDateTh !day = YD y d+  where+    Th.OrdinalDate y d = Th.ModifiedJulianDay day ^. Th.ordinalDate++toOrdinalDateI :: Int -> YD+toOrdinalDateI !mjd = YD year yd+  where+    a = mjd + 678575+    quadcent = div a 146097+    b = mod a 146097+    cent = min (div b 36524) 3+    c = b - (cent * 36524)+    quad = div c 1461+    d = mod c 1461+    y = min (div d 365) 3+    yd = d - (y * 365) + 1+    year = quadcent * 400 + cent * 100 + quad * 4 + y + 1++toOrdinalDateDivMod :: Int -> YD+{-# NOINLINE toOrdinalDateDivMod #-}+toOrdinalDateDivMod !mjd = YD year yd+  where+    a = mjd + 678575+    (quadcent,b) = a `divMod` 146097+    cent = min (b `quot` 36524) 3+    c = b - (cent * 36524)+    (!quad,!d) = c `quotRem` 1461+    y = min (d `quot` 365) 3+    yd = d - (y * 365) + 1+    year = quadcent * 400 + cent * 100 + quad * 4 + y + 1++--------------------------------------------------------------------------------++isLeapYearI :: Int -> Bool+{-# INLINABLE isLeapYearI #-}+isLeapYearI !y = y .&. 3 == 0  &&  (r100 /= 0 || d100 .&. 3 == 0)+  where+    (d100,r100) = y `quotRem` 100++countLeapYears :: Int -> Int+{-# INLINE countLeapYears #-}+countLeapYears !ys = ys `shiftR` 2  -  cs  +  cs `shiftR` 2+  where+    cs = ys `quot` 100++toOrdinalB0 :: Int -> YD+{-# INLINE toOrdinalB0 #-}+toOrdinalB0 b0 = res+  where+    (y, r) = (400 * b0) `quotRem` 146097+    ls = countLeapYears y+    res = if r < 146097 - 400+          then YD y (b0 - 365*y - ls)+          else let y' = if isLeapYearI (y+1) then y else y+1+               in YD y' (b0 - 365*y' - ls)++toOrdinalPr :: Int -> YD+{-# INLINABLE toOrdinalPr #-}+toOrdinalPr !mjd | b0 >= 0 = toOrdinalB0 b0+                 | otherwise = toOrdinalB0 m & ydYear +~ d * 400+  where+    b0 = mjd + 678575+    (d,m) = b0 `divMod` 146097++test :: Integer -> Int -> Int -> IO ()+test y m md = do+  let d = fromIntegral $ toModifiedJulianDay $ fromGregorian y m md+  print $ d + 678575+  print $ toOrdinalDate' d+  let YD y' yd = toOrdinalPr d+  print $ YD (y'+1) (yd+1)+++benchmarks :: [Benchmark]+benchmarks = [+  bgroup "orig" [+     bench "toOrdinalDate" $ nf toOrdinalDate d1,+     bench "toOrdinalDate'" $ whnf toOrdinalDate' d1i+     ],+  bgroup "thyme" [+     bench "toOrdinalDateTh" $ whnf toOrdinalDateTh d1i+     ],+  bgroup "optim" [+     bench "directCopy" $ whnf toOrdinalDateI d1i,+     bench "divModQuotRem" $ whnf toOrdinalDateDivMod d1i,+     bench "divModPr" $ whnf toOrdinalPr d1i+     ]+  ]+  where+    d1 = fromGregorian 2014 3 25+    d1i = fromIntegral $ toModifiedJulianDay d1++main :: IO ()+main = do+  defaultMain benchmarks
+ benchmarks/benchTZ.hs view
@@ -0,0 +1,114 @@+module Main (main) where++import Bindings.Posix.Time+import Criterion.Main+import Data.Fixed+import Data.Int+import Data.Time+import Data.Time.LocalTime.TimeZone.Olson+import Data.Time.LocalTime.TimeZone.Series+import Data.Time.Zones+import System.Posix.Env++setupTZ :: String -> IO TZ+setupTZ zoneName = do+  setEnv "TZ" zoneName True+  c'tzset+  loadSystemTZ zoneName++mkLocal :: Integer -> Int -> Int -> Int -> Int -> Pico -> LocalTime+mkLocal y m d hh mm ss+  = LocalTime (fromGregorian y m d) (TimeOfDay hh mm ss)++mkUTC :: Integer -> Int -> Int -> Int -> Int -> Pico -> UTCTime+mkUTC y m d hh mm ss+  = UTCTime (fromGregorian y m d) (timeOfDayToTime $ TimeOfDay hh mm ss)++utcToLocalNano :: TZ -> Int64 -> Int64+{-# INLINE utcToLocalNano #-}+utcToLocalNano tz t = t + 1000000000 * fromIntegral diff+  where+    diff = diffForPOSIX tz (t `div` 1000000000)++tzBenchmarks :: TZ -> TimeZoneSeries -> [Benchmark]+tzBenchmarks tz series = [+  bgroup "rawDiff" [+     bench "past" $ whnf (diffForPOSIX tz) (-10000000000), -- Way back in the past+     bench "epoch" $ whnf (diffForPOSIX tz) 0,+     bench "now" $ whnf (diffForPOSIX tz) 1395572400,+     bench "future" $ whnf (diffForPOSIX tz) 10000000000   -- Way in the future+     ],+  bgroup "utcToLocalNano" [+     bench "past" $ whnf (utcToLocalNano tz) (-4000000000000000000),+     bench "epoch" $ whnf (utcToLocalNano tz) 0,+     bench "now" $ whnf (utcToLocalNano tz) 1395572400000000000,+     bench "future" $ whnf (utcToLocalNano tz) 4000000000000000000+     ],+  bgroup "rawDiffUTC" [+     bench "now" $ whnf (diffForPOSIX utcTZ) 1395572400+     ],+  bgroup "basicUTCToLocalTime" [+    bench "past" $ nf (utcToLocalTime cetTZ) ut0,+    bench "now" $ nf (utcToLocalTime cetTZ) ut1,+    bench "future" $ nf (utcToLocalTime cetTZ) ut2+    ],+  bgroup "utcToLocalTimeTZ" [+    bench "past" $ nf (utcToLocalTimeTZ tz) ut0,+    bench "now" $ nf (utcToLocalTimeTZ tz) ut1,+    bench "future" $ nf (utcToLocalTimeTZ tz) ut2+    ],+  bgroup "utcToLocalTimeSeries" [+    bench "past" $ nf (utcToLocalTime' series) ut0,+    bench "now" $ nf (utcToLocalTime' series) ut1,+    bench "future" $ nf (utcToLocalTime' series) ut2+    ],+  bgroup "timeZoneForPOSIX" [+    bench "past" $ nf (timeZoneForPOSIX tz) (-10000000000),+    bench "now" $ nf (timeZoneForPOSIX tz) 1395572400,+    bench "future" $ nf (timeZoneForPOSIX tz) 10000000000+    ],+  bgroup "timeZoneForUTCTime" [+    bench "past" $ nf (timeZoneForUTCTime tz) ut0,+    bench "now" $ nf (timeZoneForUTCTime tz) ut1,+    bench "future" $ nf (timeZoneForUTCTime tz) ut2+    ],+  bgroup "timeZoneFromSeries" [+    bench "past" $ nf (timeZoneFromSeries series) ut0,+    bench "now" $ nf (timeZoneFromSeries series) ut1,+    bench "future" $ nf (timeZoneFromSeries series) ut2+    ],+  bgroup "localToPOSIX" [+    bench "past" $ whnf (localToPOSIX tz) (-10000000000),+    bench "now" $ whnf (localToPOSIX tz) 1396142115,+    bench "future" $ whnf (localToPOSIX tz) 10000000000+    ],+  bgroup "basicLocalTimeToUTC" [+    bench "past" $ nf (localTimeToUTC cetTZ) lt0,+    bench "now" $ nf (localTimeToUTC cetTZ) lt1,+    bench "future" $ nf (localTimeToUTC cetTZ) lt2+    ],+  bgroup "localTimeToUTCTZ" [+    bench "past" $ nf (localTimeToUTCTZ tz) lt0,+    bench "now" $ nf (localTimeToUTCTZ tz) lt1,+    bench "future" $ nf (localTimeToUTCTZ tz) lt2+    ],+  bgroup "localTimeToUTCSeries" [+    bench "past" $ nf (localTimeToUTC' series) lt0,+    bench "now" $ nf (localTimeToUTC' series) lt1,+    bench "future" $ nf (localTimeToUTC' series) lt2+    ]+  ]+  where+    cetTZ = TimeZone 60 False "CET"+    ut0 = mkUTC 1500 07 07  07 07 07+    ut1 = mkUTC 2014 03 23  15 15 15+    ut2 = mkUTC 2222 10 10  10 10 10+    lt0 = mkLocal 1500 07 07  07 07 07+    lt1 = mkLocal 2014 03 30  03 15 15+    lt2 = mkLocal 2222 10 10  10 10 10++main :: IO ()+main = do+  tzBudapest <- setupTZ "Europe/Budapest"+  seriesBudapest <- getTimeZoneSeriesFromOlsonFile "/usr/share/zoneinfo/Europe/Budapest"+  defaultMain $ tzBenchmarks tzBudapest seriesBudapest
+ benchmarks/bench_c_localtime.hs view
@@ -0,0 +1,99 @@+{-# LANGUAGE ViewPatterns #-}++module Main (main) where++import Bindings.Posix.Time+import Bindings.Posix.Sys.Types+import Criterion.Main+import Foreign.Safe+import Foreign.C+import System.Posix.Env++setupTZ :: String -> IO ()+setupTZ zoneName = do+  setEnv "TZ" zoneName True+  c'tzset++data C_tm = C_tm {+  _tm_sec    :: {-# UNPACK #-} !CInt,+  _tm_min    :: {-# UNPACK #-} !CInt,+  _tm_hour   :: {-# UNPACK #-} !CInt,+  _tm_mday   :: {-# UNPACK #-} !CInt,+  _tm_mon    :: {-# UNPACK #-} !CInt,+  _tm_year   :: {-# UNPACK #-} !CInt,+  _tm_wday   :: {-# UNPACK #-} !CInt,+  _tm_yday   :: {-# UNPACK #-} !CInt,+  _tm_isdst  :: {-# UNPACK #-} !CInt+  -- _tm_gmtoff :: {-# UNPACK #-} !CInt+  -- _tm_zone :: {-# UNPACK #-} !Ptr CString (??)+  } deriving (Show)++instance Storable C_tm where+  -- Overestimate; it's 10 or 11 based on architecture.+  sizeOf _ = 16 * sizeOf (undefined :: CInt)+  alignment _ = alignment (undefined :: CLong)+  peek (castPtr -> p) = do+    s <- peekElemOff p 0+    mi <- peekElemOff p 1+    h <- peekElemOff p 2+    d <- peekElemOff p 3+    m <- peekElemOff p 4+    y <- peekElemOff p 5+    wd <- peekElemOff p 6+    yd <- peekElemOff p 7+    idst <- peekElemOff p 8+    return $ C_tm s mi h d m y wd yd idst+  poke (castPtr -> p) (C_tm s mi h d m y wd yd idst) = do+    pokeElemOff p 0 s+    pokeElemOff p 1 mi+    pokeElemOff p 2 h+    pokeElemOff p 3 d+    pokeElemOff p 4 m+    pokeElemOff p 5 y+    pokeElemOff p 6 wd+    pokeElemOff p 7 yd+    pokeElemOff p 8 idst++foreign import ccall unsafe "time.h localtime_r" c_localtime_r+  :: Ptr C'time_t -> Ptr C_tm -> IO (Ptr C_tm)++localtime :: Int -> IO C_tm+localtime t = with (fromIntegral t) $ \ptime ->+  alloca $ \ptm -> do+    res <- c_localtime_r ptime ptm+    if res /= nullPtr+      then peek res+      else fail "c_localtime_r failed"++-- This just wraps the binding from Bindings.Posix.Time.+--+-- Because it's foreign import ccall _safe_, it's more than two times+-- slower!+localtime' :: Int -> IO C'tm+localtime' t = with (fromIntegral t) $ \ptime ->+  alloca $ \ptm -> do+    res <- c'localtime_r ptime ptm+    if res /= nullPtr+      then peek res+      else fail "c'localtime_r failed"++benchmarks :: [Benchmark]+benchmarks = [+  bgroup "c'localtime_r" [+     bench "past" $ whnfIO $ localtime' (-2100000000),+     bench "epoch" $ whnfIO $ localtime' 0,+     bench "now" $ whnfIO $ localtime' 1395572400,+     bench "future" $ whnfIO $ localtime' 2100000000+     ],+  bgroup "our_localtime_r" [+     bench "past" $ whnfIO $ localtime (-2100000000),+     bench "epoch" $ whnfIO $ localtime 0,+     bench "now" $ whnfIO $ localtime 1395572400,+     bench "future" $ whnfIO $ localtime 2100000000+     ]+  ]++main :: IO ()+main = do+  setupTZ "Europe/Budapest"+  defaultMain benchmarks
+ tests/testTZ.hs view
@@ -0,0 +1,168 @@+{-# LANGUAGE TemplateHaskell #-}+{-# OPTIONS_GHC -fno-warn-missing-signatures #-}++module Main (main) where++import Bindings.Posix.Time+import Data.Bits+import Data.Int+import Data.IORef+import Data.Time+import Data.Time.Clock.POSIX+import Data.Time.Zones+import Test.Framework.Providers.HUnit+import Test.Framework.Providers.QuickCheck2+import Test.Framework.TH+import Test.HUnit hiding (Test, assert)+import Test.QuickCheck+import Test.QuickCheck.Monadic+import System.Posix.Env+import System.IO.Unsafe++setupTZ :: String -> IO TZ+setupTZ zoneName = do+  setEnv "TZ" zoneName True+  c'tzset+  loadSystemTZ zoneName++onceIO :: IO a -> IO a+{-# NOINLINE onceIO #-}+onceIO op = opWrap+  where+    {-# NOINLINE var #-}+    var = unsafePerformIO $ newIORef Nothing+    opWrap = do+      v <- readIORef var+      case v of+        Just x -> return x+        Nothing -> do+          x <- op+          atomicWriteIORef var $ Just x+          return x++-- On the Int32 range of POSIX times we should replicate the behavior+-- perfectly.+--+-- * After year 2038 we normally run into a range where the+-- envvar-like "rule" part of the TZif should be interpreted, which we+-- don't do yet.+--+-- * And below around -2^55 the localtime_r C function starts failing+-- with "value too large".+checkTimeZone :: String -> Int32 -> Property+checkTimeZone zoneName = prop+  where+    setup = onceIO $ setupTZ zoneName+    prop ut = monadicIO $ do+      tz <- run $ setup+      run $ print ut+      timeZone <- run $ getTimeZone $ posixSecondsToUTCTime $ fromIntegral ut+      run $ timeZoneForPOSIX tz (fromIntegral ut) @?= timeZone++-- See comment for the checkTimeZone.+checkTimeZone64 :: String -> Property+checkTimeZone64 zoneName = prop+  where+    setup = onceIO $ setupTZ zoneName+    two31 = 2147483647+    prop = monadicIO $ do+      tz <- run $ setup+      ut <- pick $ oneof [arbitrary, choose (-two31, two31)]+      pre $ ut < two31 && ut > -(1 `shiftL` 55)+      -- This is important. On 32 bit machines we want to limit+      -- testing to the Int range.+      pre $ ut > fromIntegral (minBound :: Int)+      timeZone <- run $ getTimeZone $ posixSecondsToUTCTime $ fromIntegral ut+      run $ timeZoneForPOSIX tz ut @?= timeZone++-- On the Int32 range of POSIX times we should mostly replicate the+-- behavior.+--+-- * After year 2038 we normally run into a range where the+-- envvar-like "rule" part of the TZif should be interpreted, which we+-- don't do yet.+--+-- * And the very first time diff in most of the TZif files is usually+-- the "Local Mean Time", which is generally a fractional number of+-- minutes, so we would get difference with getTimeZone too. Most of+-- the locations switch to some more standard time zone before or+-- around 1900, which happens to be less than -2^31 POSIX time.  But+-- in some locations this transition falls within the Int32 range+-- (eg. China), so we can supply another lower bound.+checkLocalTime :: String -> Maybe Int32 -> Int32 -> Property+checkLocalTime zoneName mLower = prop+  where+    setup = onceIO $ setupTZ zoneName+    prop ut = monadicIO $ do+      case mLower of+        Nothing -> return ()+        Just lower -> pre $ ut > lower+      tz <- run $ setup+      let utcTime = posixSecondsToUTCTime $ fromIntegral ut+      timeZone <- run $ getTimeZone utcTime+      run $ utcToLocalTimeTZ tz utcTime @?= utcToLocalTime timeZone utcTime+++case_utcTZ_is_utc = timeZoneForPOSIX utcTZ 0 @?= utc++case_utcTZ_zero_diff = diffForPOSIX utcTZ 0 @?= 0++prop_Budapest_correct_TimeZone = checkTimeZone64 "Europe/Budapest"+prop_New_York_correct_TimeZone = checkTimeZone64 "America/New_York"+prop_Los_Angeles_correct_TimeZone = checkTimeZone64 "America/Los_Angeles"+prop_Shanghai_correct_TimeZone = checkTimeZone64 "Asia/Shanghai"+prop_Jerusalem_correct_TimeZone = checkTimeZone64 "Asia/Jerusalem"+prop_Antarctica_Palmer_correct_TimeZone = checkTimeZone64 "Antarctica/Palmer"+prop_Melbourne_correct_TimeZone = checkTimeZone64 "Australia/Melbourne"++prop_Budapest_correct_LocalTime = checkLocalTime "Europe/Budapest" Nothing+prop_New_York_correct_LocalTime = checkLocalTime "America/New_York" Nothing+prop_Los_Angeles_correct_LocalTime = checkLocalTime "America/Los_Angeles" Nothing+prop_Shanghai_correct_LocalTime = checkLocalTime "Asia/Shanghai" $ Just (-1325491558)+prop_Jerusalem_correct_LocalTime = checkLocalTime "Asia/Jerusalem" $ Just (-1641003641)+prop_Antarctica_Palmer_correct_LocalTime = checkLocalTime "Antarctica/Palmer" Nothing+prop_Melbourne_correct_LocalTime = checkLocalTime "Australia/Melbourne" Nothing++case_DB_utc_is_utc = do+  tz <- loadTZFromDB "UTC"+  tz @?= utcTZ++mkLocal y m d hh mm ss+  = LocalTime (fromGregorian y m d) (TimeOfDay hh mm ss)++mkUTC y m d hh mm ss+  = UTCTime (fromGregorian y m d) (timeOfDayToTime $ TimeOfDay hh mm ss)++case_Budapest_LocalToUTC = do+  tz <- loadTZFromDB "Europe/Budapest"+  let zWinter = TimeZone 60 False "CET"+      zSummer = TimeZone 120 True "CEST"+  -- Handle std times:+  localTimeToUTCFull tz (mkLocal 1970 01 01  01 00 00) @?=+    LTUUnique (mkUTC 1970 01 01  00 00 00) zWinter+  localTimeToUTCFull tz (mkLocal 2014 03 23  00 15 15.15) @?=+    LTUUnique (mkUTC 2014 03 22  23 15 15.15) zWinter++  -- Handle time in winter->summer transition:+  localTimeToUTCFull tz (mkLocal 2014 03 30  02 15 15) @?=+    LTUNone (mkUTC 2014 03 30  01 15 15) zWinter+  -- That utc time is acually in dst already:+  localTimeToUTCFull tz (mkLocal 2014 03 30  03 15 15) @?=+    LTUUnique (mkUTC 2014 03 30  01 15 15) zSummer++  -- Handle dst times:+  localTimeToUTCFull tz (mkLocal 2014 04 05  06 07 08.987654321999) @?=+    LTUUnique (mkUTC 2014 04 05  04 07 08.987654321999) zSummer++  -- Handle time in summer->winter transition:+  localTimeToUTCFull tz (mkLocal 2013 10 27  02 15 15) @?=+    LTUAmbiguous (mkUTC 2013 10 27  00 15 15) (mkUTC 2013 10 27  01 15 15)+      zSummer zWinter++main :: IO ()+main = do+  -- When we are running 'cabal test' the package is not yet+  -- installed, so we want to use the data directory from within the+  -- sources.+  setEnv "tz_datadir" "./tzdata" True+  $defaultMainGenerator
+ tz.cabal view
@@ -0,0 +1,118 @@+Name: tz+Version: 0.0.0.1+License: Apache-2.0+License-File: LICENSE+Author: Mihaly Barasz, Gergely Risko+Maintainer: Mihaly Barasz <klao@nilcons.com>, Gergely Risko <errge@nilcons.com>+Cabal-Version: >= 1.10+Build-Type: Simple+Category: Data+Stability: experimental+Homepage: https://github.com/nilcons/haskell-tz+Bug-Reports: https://github.com/nilcons/haskell-tz/issues+Synopsis: Time zones database and library+Description:+  This package has two main goals:+  .+  * To distribute the standard time zone database in a cabal package,+    so that it can be used in Haskell programs uniformly on all+    platforms.+  .+  * To provide a library that can read time zone info files+    (aka. Olson files), and does time zone conversions in a /pure/ and+    /efficient/ way.+  .+  The current version ships the @2014b@ version of the time zone+  database. See: <http://www.iana.org/time-zones> for more info.+  .+  The package is currently in a draft phase, I'm still experimenting+  with different ideas wrt. scope\/API\/implementation\/etc. All comments+  are welcome!++Data-Dir: tzdata+-- We have to explicitly list all the directories because of Cabal's limitations.+Data-Files: *.tab *.zone Chile/*.zone Etc/*.zone Canada/*.zone Indian/*.zone Africa/*.zone Asia/*.zone Antarctica/*.zone Europe/*.zone America/*.zone America/Kentucky/*.zone America/North_Dakota/*.zone America/Argentina/*.zone America/Indiana/*.zone Mexico/*.zone Brazil/*.zone Atlantic/*.zone Arctic/*.zone Australia/*.zone Pacific/*.zone US/*.zone++Extra-Source-Files:+  README.md++Source-Repository head+  Type: git+  Location: https://github.com/nilcons/haskell-tz.git++Library+  Exposed-Modules:+    Data.Time.Zones,+    Data.Time.Zones.Types,+    Data.Time.Zones.Read+  Other-Modules: Paths_tz+  Default-Language: Haskell2010+  GHC-Options: -Wall+  Build-Depends:+    base               >= 4        && < 5,+    binary             >= 0.5      && < 0.8,+    bytestring         >= 0.9      && < 0.11,+    time               >= 1.2      && < 1.5,+    vector             >= 0.9      && < 0.11++Test-Suite tests+  Default-Language: Haskell2010+  Type: exitcode-stdio-1.0+  HS-Source-Dirs: tests+  Main-Is: testTZ.hs+  GHC-Options: -Wall+  Build-Depends:+    tz,+    base                       >= 4       && < 5,+    bindings-posix             >= 1.2     && < 2,+    HUnit                      >= 1.2     && < 1.3,+    QuickCheck                 >= 2.4     && < 3,+    test-framework             >= 0.4     && < 1,+    test-framework-hunit       >= 0.2     && < 0.4,+    test-framework-quickcheck2 >= 0.2     && < 0.4,+    test-framework-th          >= 0.2     && < 0.4,+    time                       >= 1.2     && < 1.5,+    unix                       >= 2.6     && < 3++Benchmark bench+  Default-Language: Haskell2010+  Type: exitcode-stdio-1.0+  HS-Source-Dirs: benchmarks+  Main-Is: benchTZ.hs+  GHC-Options: -Wall -O2+  Build-Depends:+    tz,+    base                       >= 4       && < 5,+    bindings-posix             >= 1.2     && < 2,+    criterion                  >= 0.8     && < 0.9,+    time                       >= 1.2     && < 1.5,+    timezone-olson,+    timezone-series,+    unix                       >= 2.6     && < 3++Benchmark bench_c+  Default-Language: Haskell2010+  Type: exitcode-stdio-1.0+  HS-Source-Dirs: benchmarks+  Main-Is: bench_c_localtime.hs+  GHC-Options: -Wall -O2+  Build-Depends:+    tz,+    base                       >= 4       && < 5,+    bindings-posix             >= 1.2     && < 2,+    criterion                  >= 0.8     && < 0.9,+    unix                       >= 2.6     && < 3++Benchmark bench_greg+  Default-Language: Haskell2010+  Type: exitcode-stdio-1.0+  HS-Source-Dirs: benchmarks+  Main-Is: benchGreg.hs+  GHC-Options: -Wall -O2+  Build-Depends:+    tz,+    base                       >= 4       && < 5,+    criterion                  >= 0.8     && < 0.9,+    lens,+    thyme,+    time
+ tzdata/Africa/Abidjan.zone view

binary file changed (absent → 156 bytes)

+ tzdata/Africa/Accra.zone view

binary file changed (absent → 378 bytes)

+ tzdata/Africa/Addis_Ababa.zone view

binary file changed (absent → 180 bytes)

+ tzdata/Africa/Algiers.zone view

binary file changed (absent → 734 bytes)

+ tzdata/Africa/Asmara.zone view

binary file changed (absent → 201 bytes)

+ tzdata/Africa/Asmera.zone view

binary file changed (absent → 201 bytes)

+ tzdata/Africa/Bamako.zone view

binary file changed (absent → 224 bytes)

+ tzdata/Africa/Bangui.zone view

binary file changed (absent → 157 bytes)

+ tzdata/Africa/Banjul.zone view

binary file changed (absent → 232 bytes)

+ tzdata/Africa/Bissau.zone view

binary file changed (absent → 194 bytes)

+ tzdata/Africa/Blantyre.zone view

binary file changed (absent → 157 bytes)

+ tzdata/Africa/Brazzaville.zone view

binary file changed (absent → 157 bytes)

+ tzdata/Africa/Bujumbura.zone view

binary file changed (absent → 140 bytes)

+ tzdata/Africa/Cairo.zone view

binary file changed (absent → 1906 bytes)

+ tzdata/Africa/Casablanca.zone view

binary file changed (absent → 1679 bytes)

+ tzdata/Africa/Ceuta.zone view

binary file changed (absent → 2049 bytes)

+ tzdata/Africa/Conakry.zone view

binary file changed (absent → 224 bytes)

+ tzdata/Africa/Dakar.zone view

binary file changed (absent → 194 bytes)

+ tzdata/Africa/Dar_es_Salaam.zone view

binary file changed (absent → 229 bytes)

+ tzdata/Africa/Djibouti.zone view

binary file changed (absent → 157 bytes)

+ tzdata/Africa/Douala.zone view

binary file changed (absent → 157 bytes)

+ tzdata/Africa/El_Aaiun.zone view

binary file changed (absent → 1509 bytes)

+ tzdata/Africa/Freetown.zone view

binary file changed (absent → 665 bytes)

+ tzdata/Africa/Gaborone.zone view

binary file changed (absent → 234 bytes)

+ tzdata/Africa/Harare.zone view

binary file changed (absent → 157 bytes)

+ tzdata/Africa/Johannesburg.zone view

binary file changed (absent → 245 bytes)

+ tzdata/Africa/Juba.zone view

binary file changed (absent → 669 bytes)

+ tzdata/Africa/Kampala.zone view

binary file changed (absent → 269 bytes)

+ tzdata/Africa/Khartoum.zone view

binary file changed (absent → 669 bytes)

+ tzdata/Africa/Kigali.zone view

binary file changed (absent → 157 bytes)

+ tzdata/Africa/Kinshasa.zone view

binary file changed (absent → 140 bytes)

+ tzdata/Africa/Lagos.zone view

binary file changed (absent → 157 bytes)

+ tzdata/Africa/Libreville.zone view

binary file changed (absent → 157 bytes)

+ tzdata/Africa/Lome.zone view

binary file changed (absent → 139 bytes)

+ tzdata/Africa/Luanda.zone view

binary file changed (absent → 178 bytes)

+ tzdata/Africa/Lubumbashi.zone view

binary file changed (absent → 140 bytes)

+ tzdata/Africa/Lusaka.zone view

binary file changed (absent → 157 bytes)

+ tzdata/Africa/Malabo.zone view

binary file changed (absent → 195 bytes)

+ tzdata/Africa/Maputo.zone view

binary file changed (absent → 157 bytes)

+ tzdata/Africa/Maseru.zone view

binary file changed (absent → 204 bytes)

+ tzdata/Africa/Mbabane.zone view

binary file changed (absent → 160 bytes)

+ tzdata/Africa/Mogadishu.zone view

binary file changed (absent → 210 bytes)

+ tzdata/Africa/Monrovia.zone view

binary file changed (absent → 215 bytes)

+ tzdata/Africa/Nairobi.zone view

binary file changed (absent → 269 bytes)

+ tzdata/Africa/Ndjamena.zone view

binary file changed (absent → 211 bytes)

+ tzdata/Africa/Niamey.zone view

binary file changed (absent → 225 bytes)

+ tzdata/Africa/Nouakchott.zone view

binary file changed (absent → 224 bytes)

+ tzdata/Africa/Ouagadougou.zone view

binary file changed (absent → 156 bytes)

+ tzdata/Africa/Porto-Novo.zone view

binary file changed (absent → 195 bytes)

+ tzdata/Africa/Sao_Tome.zone view

binary file changed (absent → 173 bytes)

+ tzdata/Africa/Timbuktu.zone view

binary file changed (absent → 224 bytes)

+ tzdata/Africa/Tripoli.zone view

binary file changed (absent → 641 bytes)

+ tzdata/Africa/Tunis.zone view

binary file changed (absent → 684 bytes)

+ tzdata/Africa/Windhoek.zone view

binary file changed (absent → 1556 bytes)

+ tzdata/America/Adak.zone view

binary file changed (absent → 2353 bytes)

+ tzdata/America/Anchorage.zone view

binary file changed (absent → 2358 bytes)

+ tzdata/America/Anguilla.zone view

binary file changed (absent → 156 bytes)

+ tzdata/America/Antigua.zone view

binary file changed (absent → 194 bytes)

+ tzdata/America/Araguaina.zone view

binary file changed (absent → 882 bytes)

+ tzdata/America/Argentina/Buenos_Aires.zone view

binary file changed (absent → 1061 bytes)

+ tzdata/America/Argentina/Catamarca.zone view

binary file changed (absent → 1103 bytes)

+ tzdata/America/Argentina/ComodRivadavia.zone view

binary file changed (absent → 1103 bytes)

+ tzdata/America/Argentina/Cordoba.zone view

binary file changed (absent → 1103 bytes)

+ tzdata/America/Argentina/Jujuy.zone view

binary file changed (absent → 1119 bytes)

+ tzdata/America/Argentina/La_Rioja.zone view

binary file changed (absent → 1117 bytes)

+ tzdata/America/Argentina/Mendoza.zone view

binary file changed (absent → 1147 bytes)

+ tzdata/America/Argentina/Rio_Gallegos.zone view

binary file changed (absent → 1103 bytes)

+ tzdata/America/Argentina/Salta.zone view

binary file changed (absent → 1075 bytes)

+ tzdata/America/Argentina/San_Juan.zone view

binary file changed (absent → 1117 bytes)

+ tzdata/America/Argentina/San_Luis.zone view

binary file changed (absent → 1145 bytes)

+ tzdata/America/Argentina/Tucuman.zone view

binary file changed (absent → 1131 bytes)

+ tzdata/America/Argentina/Ushuaia.zone view

binary file changed (absent → 1103 bytes)

+ tzdata/America/Aruba.zone view

binary file changed (absent → 194 bytes)

+ tzdata/America/Asuncion.zone view

binary file changed (absent → 2036 bytes)

+ tzdata/America/Atikokan.zone view

binary file changed (absent → 319 bytes)

+ tzdata/America/Atka.zone view

binary file changed (absent → 2353 bytes)

+ tzdata/America/Bahia.zone view

binary file changed (absent → 1022 bytes)

+ tzdata/America/Bahia_Banderas.zone view

binary file changed (absent → 1574 bytes)

+ tzdata/America/Barbados.zone view

binary file changed (absent → 330 bytes)

+ tzdata/America/Belem.zone view

binary file changed (absent → 574 bytes)

+ tzdata/America/Belize.zone view

binary file changed (absent → 962 bytes)

+ tzdata/America/Blanc-Sablon.zone view

binary file changed (absent → 281 bytes)

+ tzdata/America/Boa_Vista.zone view

binary file changed (absent → 630 bytes)

+ tzdata/America/Bogota.zone view

binary file changed (absent → 231 bytes)

+ tzdata/America/Boise.zone view

binary file changed (absent → 2377 bytes)

+ tzdata/America/Buenos_Aires.zone view

binary file changed (absent → 1061 bytes)

+ tzdata/America/Cambridge_Bay.zone view

binary file changed (absent → 2084 bytes)

+ tzdata/America/Campo_Grande.zone view

binary file changed (absent → 2001 bytes)

+ tzdata/America/Cancun.zone view

binary file changed (absent → 1466 bytes)

+ tzdata/America/Caracas.zone view

binary file changed (absent → 240 bytes)

+ tzdata/America/Catamarca.zone view

binary file changed (absent → 1103 bytes)

+ tzdata/America/Cayenne.zone view

binary file changed (absent → 186 bytes)

+ tzdata/America/Cayman.zone view

binary file changed (absent → 177 bytes)

+ tzdata/America/Chicago.zone view

binary file changed (absent → 3559 bytes)

+ tzdata/America/Chihuahua.zone view

binary file changed (absent → 1508 bytes)

+ tzdata/America/Coral_Harbour.zone view

binary file changed (absent → 319 bytes)

+ tzdata/America/Cordoba.zone view

binary file changed (absent → 1103 bytes)

+ tzdata/America/Costa_Rica.zone view

binary file changed (absent → 315 bytes)

+ tzdata/America/Creston.zone view

binary file changed (absent → 207 bytes)

+ tzdata/America/Cuiaba.zone view

binary file changed (absent → 1973 bytes)

+ tzdata/America/Curacao.zone view

binary file changed (absent → 194 bytes)

+ tzdata/America/Danmarkshavn.zone view

binary file changed (absent → 700 bytes)

+ tzdata/America/Dawson.zone view

binary file changed (absent → 2067 bytes)

+ tzdata/America/Dawson_Creek.zone view

binary file changed (absent → 1033 bytes)

+ tzdata/America/Denver.zone view

binary file changed (absent → 2427 bytes)

+ tzdata/America/Detroit.zone view

binary file changed (absent → 2202 bytes)

+ tzdata/America/Dominica.zone view

binary file changed (absent → 156 bytes)

+ tzdata/America/Edmonton.zone view

binary file changed (absent → 2388 bytes)

+ tzdata/America/Eirunepe.zone view

binary file changed (absent → 670 bytes)

+ tzdata/America/El_Salvador.zone view

binary file changed (absent → 236 bytes)

+ tzdata/America/Ensenada.zone view

binary file changed (absent → 2342 bytes)

+ tzdata/America/Fort_Wayne.zone view

binary file changed (absent → 1649 bytes)

+ tzdata/America/Fortaleza.zone view

binary file changed (absent → 714 bytes)

+ tzdata/America/Glace_Bay.zone view

binary file changed (absent → 2192 bytes)

+ tzdata/America/Godthab.zone view

binary file changed (absent → 1863 bytes)

+ tzdata/America/Goose_Bay.zone view

binary file changed (absent → 3193 bytes)

+ tzdata/America/Grand_Turk.zone view

binary file changed (absent → 1871 bytes)

+ tzdata/America/Grenada.zone view

binary file changed (absent → 156 bytes)

+ tzdata/America/Guadeloupe.zone view

binary file changed (absent → 156 bytes)

+ tzdata/America/Guatemala.zone view

binary file changed (absent → 292 bytes)

+ tzdata/America/Guayaquil.zone view

binary file changed (absent → 177 bytes)

+ tzdata/America/Guyana.zone view

binary file changed (absent → 256 bytes)

+ tzdata/America/Halifax.zone view

binary file changed (absent → 3424 bytes)

+ tzdata/America/Havana.zone view

binary file changed (absent → 2411 bytes)

+ tzdata/America/Hermosillo.zone view

binary file changed (absent → 440 bytes)

+ tzdata/America/Indiana/Indianapolis.zone view

binary file changed (absent → 1649 bytes)

+ tzdata/America/Indiana/Knox.zone view

binary file changed (absent → 2411 bytes)

+ tzdata/America/Indiana/Marengo.zone view

binary file changed (absent → 1705 bytes)

+ tzdata/America/Indiana/Petersburg.zone view

binary file changed (absent → 1887 bytes)

+ tzdata/America/Indiana/Tell_City.zone view

binary file changed (absent → 1709 bytes)

+ tzdata/America/Indiana/Vevay.zone view

binary file changed (absent → 1397 bytes)

+ tzdata/America/Indiana/Vincennes.zone view

binary file changed (absent → 1677 bytes)

+ tzdata/America/Indiana/Winamac.zone view

binary file changed (absent → 1761 bytes)

+ tzdata/America/Indianapolis.zone view

binary file changed (absent → 1649 bytes)

+ tzdata/America/Inuvik.zone view

binary file changed (absent → 1914 bytes)

+ tzdata/America/Iqaluit.zone view

binary file changed (absent → 2032 bytes)

+ tzdata/America/Jamaica.zone view

binary file changed (absent → 481 bytes)

+ tzdata/America/Jujuy.zone view

binary file changed (absent → 1119 bytes)

+ tzdata/America/Juneau.zone view

binary file changed (absent → 2336 bytes)

+ tzdata/America/Kentucky/Louisville.zone view

binary file changed (absent → 2755 bytes)

+ tzdata/America/Kentucky/Monticello.zone view

binary file changed (absent → 2335 bytes)

+ tzdata/America/Knox_IN.zone view

binary file changed (absent → 2411 bytes)

+ tzdata/America/Kralendijk.zone view

binary file changed (absent → 194 bytes)

+ tzdata/America/La_Paz.zone view

binary file changed (absent → 217 bytes)

+ tzdata/America/Lima.zone view

binary file changed (absent → 395 bytes)

+ tzdata/America/Los_Angeles.zone view

binary file changed (absent → 2819 bytes)

+ tzdata/America/Louisville.zone view

binary file changed (absent → 2755 bytes)

+ tzdata/America/Lower_Princes.zone view

binary file changed (absent → 194 bytes)

+ tzdata/America/Maceio.zone view

binary file changed (absent → 742 bytes)

+ tzdata/America/Managua.zone view

binary file changed (absent → 437 bytes)

+ tzdata/America/Manaus.zone view

binary file changed (absent → 602 bytes)

+ tzdata/America/Marigot.zone view

binary file changed (absent → 156 bytes)

+ tzdata/America/Martinique.zone view

binary file changed (absent → 231 bytes)

+ tzdata/America/Matamoros.zone view

binary file changed (absent → 1402 bytes)

+ tzdata/America/Mazatlan.zone view

binary file changed (absent → 1550 bytes)

+ tzdata/America/Mendoza.zone view

binary file changed (absent → 1147 bytes)

+ tzdata/America/Menominee.zone view

binary file changed (absent → 2257 bytes)

+ tzdata/America/Merida.zone view

binary file changed (absent → 1442 bytes)

+ tzdata/America/Metlakatla.zone view

binary file changed (absent → 717 bytes)

+ tzdata/America/Mexico_City.zone view

binary file changed (absent → 1604 bytes)

+ tzdata/America/Miquelon.zone view

binary file changed (absent → 1670 bytes)

+ tzdata/America/Moncton.zone view

binary file changed (absent → 3137 bytes)

+ tzdata/America/Monterrey.zone view

binary file changed (absent → 1402 bytes)

+ tzdata/America/Montevideo.zone view

binary file changed (absent → 2134 bytes)

+ tzdata/America/Montreal.zone view

binary file changed (absent → 3477 bytes)

+ tzdata/America/Montserrat.zone view

binary file changed (absent → 156 bytes)

+ tzdata/America/Nassau.zone view

binary file changed (absent → 2270 bytes)

+ tzdata/America/New_York.zone view

binary file changed (absent → 3519 bytes)

+ tzdata/America/Nipigon.zone view

binary file changed (absent → 2105 bytes)

+ tzdata/America/Nome.zone view

binary file changed (absent → 2350 bytes)

+ tzdata/America/Noronha.zone view

binary file changed (absent → 714 bytes)

+ tzdata/America/North_Dakota/Beulah.zone view

binary file changed (absent → 2363 bytes)

+ tzdata/America/North_Dakota/Center.zone view

binary file changed (absent → 2363 bytes)

+ tzdata/America/North_Dakota/New_Salem.zone view

binary file changed (absent → 2363 bytes)

+ tzdata/America/Ojinaga.zone view

binary file changed (absent → 1508 bytes)

+ tzdata/America/Panama.zone view

binary file changed (absent → 177 bytes)

+ tzdata/America/Pangnirtung.zone view

binary file changed (absent → 2094 bytes)

+ tzdata/America/Paramaribo.zone view

binary file changed (absent → 294 bytes)

+ tzdata/America/Phoenix.zone view

binary file changed (absent → 327 bytes)

+ tzdata/America/Port-au-Prince.zone view

binary file changed (absent → 1457 bytes)

+ tzdata/America/Port_of_Spain.zone view

binary file changed (absent → 156 bytes)

+ tzdata/America/Porto_Acre.zone view

binary file changed (absent → 642 bytes)

+ tzdata/America/Porto_Velho.zone view

binary file changed (absent → 574 bytes)

+ tzdata/America/Puerto_Rico.zone view

binary file changed (absent → 229 bytes)

+ tzdata/America/Rainy_River.zone view

binary file changed (absent → 2105 bytes)

+ tzdata/America/Rankin_Inlet.zone view

binary file changed (absent → 1916 bytes)

+ tzdata/America/Recife.zone view

binary file changed (absent → 714 bytes)

+ tzdata/America/Regina.zone view

binary file changed (absent → 980 bytes)

+ tzdata/America/Resolute.zone view

binary file changed (absent → 1916 bytes)

+ tzdata/America/Rio_Branco.zone view

binary file changed (absent → 642 bytes)

+ tzdata/America/Rosario.zone view

binary file changed (absent → 1103 bytes)

+ tzdata/America/Santa_Isabel.zone view

binary file changed (absent → 2342 bytes)

+ tzdata/America/Santarem.zone view

binary file changed (absent → 612 bytes)

+ tzdata/America/Santiago.zone view

binary file changed (absent → 2505 bytes)

+ tzdata/America/Santo_Domingo.zone view

binary file changed (absent → 463 bytes)

+ tzdata/America/Sao_Paulo.zone view

binary file changed (absent → 2001 bytes)

+ tzdata/America/Scoresbysund.zone view

binary file changed (absent → 1911 bytes)

+ tzdata/America/Shiprock.zone view

binary file changed (absent → 2427 bytes)

+ tzdata/America/Sitka.zone view

binary file changed (absent → 2324 bytes)

+ tzdata/America/St_Barthelemy.zone view

binary file changed (absent → 156 bytes)

+ tzdata/America/St_Johns.zone view

binary file changed (absent → 3638 bytes)

+ tzdata/America/St_Kitts.zone view

binary file changed (absent → 156 bytes)

+ tzdata/America/St_Lucia.zone view

binary file changed (absent → 156 bytes)

+ tzdata/America/St_Thomas.zone view

binary file changed (absent → 156 bytes)

+ tzdata/America/St_Vincent.zone view

binary file changed (absent → 156 bytes)

+ tzdata/America/Swift_Current.zone view

binary file changed (absent → 560 bytes)

+ tzdata/America/Tegucigalpa.zone view

binary file changed (absent → 264 bytes)

+ tzdata/America/Thule.zone view

binary file changed (absent → 1514 bytes)

+ tzdata/America/Thunder_Bay.zone view

binary file changed (absent → 2185 bytes)

+ tzdata/America/Tijuana.zone view

binary file changed (absent → 2342 bytes)

+ tzdata/America/Toronto.zone view

binary file changed (absent → 3477 bytes)

+ tzdata/America/Tortola.zone view

binary file changed (absent → 156 bytes)

+ tzdata/America/Vancouver.zone view

binary file changed (absent → 2875 bytes)

+ tzdata/America/Virgin.zone view

binary file changed (absent → 156 bytes)

+ tzdata/America/Whitehorse.zone view

binary file changed (absent → 2067 bytes)

+ tzdata/America/Winnipeg.zone view

binary file changed (absent → 2865 bytes)

+ tzdata/America/Yakutat.zone view

binary file changed (absent → 2288 bytes)

+ tzdata/America/Yellowknife.zone view

binary file changed (absent → 1966 bytes)

+ tzdata/Antarctica/Casey.zone view

binary file changed (absent → 255 bytes)

+ tzdata/Antarctica/Davis.zone view

binary file changed (absent → 276 bytes)

+ tzdata/Antarctica/DumontDUrville.zone view

binary file changed (absent → 213 bytes)

+ tzdata/Antarctica/Macquarie.zone view

binary file changed (absent → 1496 bytes)

+ tzdata/Antarctica/Mawson.zone view

binary file changed (absent → 190 bytes)

+ tzdata/Antarctica/McMurdo.zone view

binary file changed (absent → 2434 bytes)

+ tzdata/Antarctica/Palmer.zone view

binary file changed (absent → 2040 bytes)

+ tzdata/Antarctica/Rothera.zone view

binary file changed (absent → 159 bytes)

+ tzdata/Antarctica/South_Pole.zone view

binary file changed (absent → 2434 bytes)

+ tzdata/Antarctica/Syowa.zone view

binary file changed (absent → 160 bytes)

+ tzdata/Antarctica/Troll.zone view

binary file changed (absent → 1147 bytes)

+ tzdata/Antarctica/Vostok.zone view

binary file changed (absent → 160 bytes)

+ tzdata/Arctic/Longyearbyen.zone view

binary file changed (absent → 2225 bytes)

+ tzdata/Asia/Aden.zone view

binary file changed (absent → 157 bytes)

+ tzdata/Asia/Almaty.zone view

binary file changed (absent → 922 bytes)

+ tzdata/Asia/Amman.zone view

binary file changed (absent → 1863 bytes)

+ tzdata/Asia/Anadyr.zone view

binary file changed (absent → 1183 bytes)

+ tzdata/Asia/Aqtau.zone view

binary file changed (absent → 1128 bytes)

+ tzdata/Asia/Aqtobe.zone view

binary file changed (absent → 1038 bytes)

+ tzdata/Asia/Ashgabat.zone view

binary file changed (absent → 657 bytes)

+ tzdata/Asia/Ashkhabad.zone view

binary file changed (absent → 657 bytes)

+ tzdata/Asia/Baghdad.zone view

binary file changed (absent → 962 bytes)

+ tzdata/Asia/Bahrain.zone view

binary file changed (absent → 195 bytes)

+ tzdata/Asia/Baku.zone view

binary file changed (absent → 1942 bytes)

+ tzdata/Asia/Bangkok.zone view

binary file changed (absent → 178 bytes)

+ tzdata/Asia/Beirut.zone view

binary file changed (absent → 2149 bytes)

+ tzdata/Asia/Bishkek.zone view

binary file changed (absent → 1047 bytes)

+ tzdata/Asia/Brunei.zone view

binary file changed (absent → 187 bytes)

+ tzdata/Asia/Calcutta.zone view

binary file changed (absent → 265 bytes)

+ tzdata/Asia/Choibalsan.zone view

binary file changed (absent → 890 bytes)

+ tzdata/Asia/Chongqing.zone view

binary file changed (absent → 389 bytes)

+ tzdata/Asia/Chungking.zone view

binary file changed (absent → 389 bytes)

+ tzdata/Asia/Colombo.zone view

binary file changed (absent → 363 bytes)

+ tzdata/Asia/Dacca.zone view

binary file changed (absent → 364 bytes)

+ tzdata/Asia/Damascus.zone view

binary file changed (absent → 2306 bytes)

+ tzdata/Asia/Dhaka.zone view

binary file changed (absent → 364 bytes)

+ tzdata/Asia/Dili.zone view

binary file changed (absent → 295 bytes)

+ tzdata/Asia/Dubai.zone view

binary file changed (absent → 157 bytes)

+ tzdata/Asia/Dushanbe.zone view

binary file changed (absent → 597 bytes)

+ tzdata/Asia/Gaza.zone view

binary file changed (absent → 2287 bytes)

+ tzdata/Asia/Harbin.zone view

binary file changed (absent → 463 bytes)

+ tzdata/Asia/Hebron.zone view

binary file changed (absent → 2315 bytes)

+ tzdata/Asia/Ho_Chi_Minh.zone view

binary file changed (absent → 255 bytes)

+ tzdata/Asia/Hong_Kong.zone view

binary file changed (absent → 1175 bytes)

+ tzdata/Asia/Hovd.zone view

binary file changed (absent → 834 bytes)

+ tzdata/Asia/Irkutsk.zone view

binary file changed (absent → 1203 bytes)

+ tzdata/Asia/Istanbul.zone view

binary file changed (absent → 2721 bytes)

+ tzdata/Asia/Jakarta.zone view

binary file changed (absent → 344 bytes)

+ tzdata/Asia/Jayapura.zone view

binary file changed (absent → 225 bytes)

+ tzdata/Asia/Jerusalem.zone view

binary file changed (absent → 2239 bytes)

+ tzdata/Asia/Kabul.zone view

binary file changed (absent → 173 bytes)

+ tzdata/Asia/Kamchatka.zone view

binary file changed (absent → 1167 bytes)

+ tzdata/Asia/Karachi.zone view

binary file changed (absent → 389 bytes)

+ tzdata/Asia/Kashgar.zone view

binary file changed (absent → 419 bytes)

+ tzdata/Asia/Kathmandu.zone view

binary file changed (absent → 198 bytes)

+ tzdata/Asia/Katmandu.zone view

binary file changed (absent → 198 bytes)

+ tzdata/Asia/Khandyga.zone view

binary file changed (absent → 1281 bytes)

+ tzdata/Asia/Kolkata.zone view

binary file changed (absent → 265 bytes)

+ tzdata/Asia/Krasnoyarsk.zone view

binary file changed (absent → 1182 bytes)

+ tzdata/Asia/Kuala_Lumpur.zone view

binary file changed (absent → 372 bytes)

+ tzdata/Asia/Kuching.zone view

binary file changed (absent → 505 bytes)

+ tzdata/Asia/Kuwait.zone view

binary file changed (absent → 157 bytes)

+ tzdata/Asia/Macao.zone view

binary file changed (absent → 781 bytes)

+ tzdata/Asia/Macau.zone view

binary file changed (absent → 781 bytes)

+ tzdata/Asia/Magadan.zone view

binary file changed (absent → 1183 bytes)

+ tzdata/Asia/Makassar.zone view

binary file changed (absent → 266 bytes)

+ tzdata/Asia/Manila.zone view

binary file changed (absent → 335 bytes)

+ tzdata/Asia/Muscat.zone view

binary file changed (absent → 157 bytes)

+ tzdata/Asia/Nicosia.zone view

binary file changed (absent → 2002 bytes)

+ tzdata/Asia/Novokuznetsk.zone view

binary file changed (absent → 1220 bytes)

+ tzdata/Asia/Novosibirsk.zone view

binary file changed (absent → 1196 bytes)

+ tzdata/Asia/Omsk.zone view

binary file changed (absent → 1182 bytes)

+ tzdata/Asia/Oral.zone view

binary file changed (absent → 1086 bytes)

+ tzdata/Asia/Phnom_Penh.zone view

binary file changed (absent → 255 bytes)

+ tzdata/Asia/Pontianak.zone view

binary file changed (absent → 361 bytes)

+ tzdata/Asia/Pyongyang.zone view

binary file changed (absent → 258 bytes)

+ tzdata/Asia/Qatar.zone view

binary file changed (absent → 195 bytes)

+ tzdata/Asia/Qyzylorda.zone view

binary file changed (absent → 1068 bytes)

+ tzdata/Asia/Rangoon.zone view

binary file changed (absent → 259 bytes)

+ tzdata/Asia/Riyadh.zone view

binary file changed (absent → 157 bytes)

+ tzdata/Asia/Saigon.zone view

binary file changed (absent → 255 bytes)

+ tzdata/Asia/Sakhalin.zone view

binary file changed (absent → 1213 bytes)

+ tzdata/Asia/Samarkand.zone view

binary file changed (absent → 677 bytes)

+ tzdata/Asia/Seoul.zone view

binary file changed (absent → 396 bytes)

+ tzdata/Asia/Shanghai.zone view

binary file changed (absent → 405 bytes)

+ tzdata/Asia/Singapore.zone view

binary file changed (absent → 402 bytes)

+ tzdata/Asia/Taipei.zone view

binary file changed (absent → 724 bytes)

+ tzdata/Asia/Tashkent.zone view

binary file changed (absent → 667 bytes)

+ tzdata/Asia/Tbilisi.zone view

binary file changed (absent → 1116 bytes)

+ tzdata/Asia/Tehran.zone view

binary file changed (absent → 1647 bytes)

+ tzdata/Asia/Tel_Aviv.zone view

binary file changed (absent → 2239 bytes)

+ tzdata/Asia/Thimbu.zone view

binary file changed (absent → 195 bytes)

+ tzdata/Asia/Thimphu.zone view

binary file changed (absent → 195 bytes)

+ tzdata/Asia/Tokyo.zone view

binary file changed (absent → 331 bytes)

+ tzdata/Asia/Ujung_Pandang.zone view

binary file changed (absent → 266 bytes)

+ tzdata/Asia/Ulaanbaatar.zone view

binary file changed (absent → 834 bytes)

+ tzdata/Asia/Ulan_Bator.zone view

binary file changed (absent → 834 bytes)

+ tzdata/Asia/Urumqi.zone view

binary file changed (absent → 389 bytes)

+ tzdata/Asia/Ust-Nera.zone view

binary file changed (absent → 1249 bytes)

+ tzdata/Asia/Vientiane.zone view

binary file changed (absent → 255 bytes)

+ tzdata/Asia/Vladivostok.zone view

binary file changed (absent → 1197 bytes)

+ tzdata/Asia/Yakutsk.zone view

binary file changed (absent → 1183 bytes)

+ tzdata/Asia/Yekaterinburg.zone view

binary file changed (absent → 1252 bytes)

+ tzdata/Asia/Yerevan.zone view

binary file changed (absent → 1263 bytes)

+ tzdata/Atlantic/Azores.zone view

binary file changed (absent → 3462 bytes)

+ tzdata/Atlantic/Bermuda.zone view

binary file changed (absent → 1990 bytes)

+ tzdata/Atlantic/Canary.zone view

binary file changed (absent → 1899 bytes)

+ tzdata/Atlantic/Cape_Verde.zone view

binary file changed (absent → 240 bytes)

+ tzdata/Atlantic/Faeroe.zone view

binary file changed (absent → 1815 bytes)

+ tzdata/Atlantic/Faroe.zone view

binary file changed (absent → 1815 bytes)

+ tzdata/Atlantic/Jan_Mayen.zone view

binary file changed (absent → 2225 bytes)

+ tzdata/Atlantic/Madeira.zone view

binary file changed (absent → 3452 bytes)

+ tzdata/Atlantic/Reykjavik.zone view

binary file changed (absent → 1141 bytes)

+ tzdata/Atlantic/South_Georgia.zone view

binary file changed (absent → 139 bytes)

+ tzdata/Atlantic/St_Helena.zone view

binary file changed (absent → 177 bytes)

+ tzdata/Atlantic/Stanley.zone view

binary file changed (absent → 1220 bytes)

+ tzdata/Australia/ACT.zone view

binary file changed (absent → 2183 bytes)

+ tzdata/Australia/Adelaide.zone view

binary file changed (absent → 2202 bytes)

+ tzdata/Australia/Brisbane.zone view

binary file changed (absent → 413 bytes)

+ tzdata/Australia/Broken_Hill.zone view

binary file changed (absent → 2237 bytes)

+ tzdata/Australia/Canberra.zone view

binary file changed (absent → 2183 bytes)

+ tzdata/Australia/Currie.zone view

binary file changed (absent → 2183 bytes)

+ tzdata/Australia/Darwin.zone view

binary file changed (absent → 288 bytes)

+ tzdata/Australia/Eucla.zone view

binary file changed (absent → 446 bytes)

+ tzdata/Australia/Hobart.zone view

binary file changed (absent → 2295 bytes)

+ tzdata/Australia/LHI.zone view

binary file changed (absent → 1821 bytes)

+ tzdata/Australia/Lindeman.zone view

binary file changed (absent → 483 bytes)

+ tzdata/Australia/Lord_Howe.zone view

binary file changed (absent → 1821 bytes)

+ tzdata/Australia/Melbourne.zone view

binary file changed (absent → 2183 bytes)

+ tzdata/Australia/NSW.zone view

binary file changed (absent → 2183 bytes)

+ tzdata/Australia/North.zone view

binary file changed (absent → 288 bytes)

+ tzdata/Australia/Perth.zone view

binary file changed (absent → 440 bytes)

+ tzdata/Australia/Queensland.zone view

binary file changed (absent → 413 bytes)

+ tzdata/Australia/South.zone view

binary file changed (absent → 2202 bytes)

+ tzdata/Australia/Sydney.zone view

binary file changed (absent → 2183 bytes)

+ tzdata/Australia/Tasmania.zone view

binary file changed (absent → 2295 bytes)

+ tzdata/Australia/Victoria.zone view

binary file changed (absent → 2183 bytes)

+ tzdata/Australia/West.zone view

binary file changed (absent → 440 bytes)

+ tzdata/Australia/Yancowinna.zone view

binary file changed (absent → 2237 bytes)

+ tzdata/Brazil/Acre.zone view

binary file changed (absent → 642 bytes)

+ tzdata/Brazil/DeNoronha.zone view

binary file changed (absent → 714 bytes)

+ tzdata/Brazil/East.zone view

binary file changed (absent → 2001 bytes)

+ tzdata/Brazil/West.zone view

binary file changed (absent → 602 bytes)

+ tzdata/CET.zone view

binary file changed (absent → 2102 bytes)

+ tzdata/CST6CDT.zone view

binary file changed (absent → 2294 bytes)

+ tzdata/Canada/Atlantic.zone view

binary file changed (absent → 3424 bytes)

+ tzdata/Canada/Central.zone view

binary file changed (absent → 2865 bytes)

+ tzdata/Canada/East-Saskatchewan.zone view

binary file changed (absent → 980 bytes)

+ tzdata/Canada/Eastern.zone view

binary file changed (absent → 3477 bytes)

+ tzdata/Canada/Mountain.zone view

binary file changed (absent → 2388 bytes)

+ tzdata/Canada/Newfoundland.zone view

binary file changed (absent → 3638 bytes)

+ tzdata/Canada/Pacific.zone view

binary file changed (absent → 2875 bytes)

+ tzdata/Canada/Saskatchewan.zone view

binary file changed (absent → 980 bytes)

+ tzdata/Canada/Yukon.zone view

binary file changed (absent → 2067 bytes)

+ tzdata/Chile/Continental.zone view

binary file changed (absent → 2505 bytes)

+ tzdata/Chile/EasterIsland.zone view

binary file changed (absent → 2269 bytes)

+ tzdata/Cuba.zone view

binary file changed (absent → 2411 bytes)

+ tzdata/EET.zone view

binary file changed (absent → 1876 bytes)

+ tzdata/EST.zone view

binary file changed (absent → 118 bytes)

+ tzdata/EST5EDT.zone view

binary file changed (absent → 2294 bytes)

+ tzdata/Egypt.zone view

binary file changed (absent → 1906 bytes)

+ tzdata/Eire.zone view

binary file changed (absent → 3533 bytes)

+ tzdata/Etc/GMT+0.zone view

binary file changed (absent → 118 bytes)

+ tzdata/Etc/GMT+1.zone view

binary file changed (absent → 126 bytes)

+ tzdata/Etc/GMT+10.zone view

binary file changed (absent → 130 bytes)

+ tzdata/Etc/GMT+11.zone view

binary file changed (absent → 130 bytes)

+ tzdata/Etc/GMT+12.zone view

binary file changed (absent → 130 bytes)

+ tzdata/Etc/GMT+2.zone view

binary file changed (absent → 126 bytes)

+ tzdata/Etc/GMT+3.zone view

binary file changed (absent → 126 bytes)

+ tzdata/Etc/GMT+4.zone view

binary file changed (absent → 126 bytes)

+ tzdata/Etc/GMT+5.zone view

binary file changed (absent → 126 bytes)

+ tzdata/Etc/GMT+6.zone view

binary file changed (absent → 126 bytes)

+ tzdata/Etc/GMT+7.zone view

binary file changed (absent → 126 bytes)

+ tzdata/Etc/GMT+8.zone view

binary file changed (absent → 126 bytes)

+ tzdata/Etc/GMT+9.zone view

binary file changed (absent → 126 bytes)

+ tzdata/Etc/GMT-0.zone view

binary file changed (absent → 118 bytes)

+ tzdata/Etc/GMT-1.zone view

binary file changed (absent → 127 bytes)

+ tzdata/Etc/GMT-10.zone view

binary file changed (absent → 131 bytes)

+ tzdata/Etc/GMT-11.zone view

binary file changed (absent → 131 bytes)

+ tzdata/Etc/GMT-12.zone view

binary file changed (absent → 131 bytes)

+ tzdata/Etc/GMT-13.zone view

binary file changed (absent → 131 bytes)

+ tzdata/Etc/GMT-14.zone view

binary file changed (absent → 131 bytes)

+ tzdata/Etc/GMT-2.zone view

binary file changed (absent → 127 bytes)

+ tzdata/Etc/GMT-3.zone view

binary file changed (absent → 127 bytes)

+ tzdata/Etc/GMT-4.zone view

binary file changed (absent → 127 bytes)

+ tzdata/Etc/GMT-5.zone view

binary file changed (absent → 127 bytes)

+ tzdata/Etc/GMT-6.zone view

binary file changed (absent → 127 bytes)

+ tzdata/Etc/GMT-7.zone view

binary file changed (absent → 127 bytes)

+ tzdata/Etc/GMT-8.zone view

binary file changed (absent → 127 bytes)

+ tzdata/Etc/GMT-9.zone view

binary file changed (absent → 127 bytes)

+ tzdata/Etc/GMT.zone view

binary file changed (absent → 118 bytes)

+ tzdata/Etc/GMT0.zone view

binary file changed (absent → 118 bytes)

+ tzdata/Etc/Greenwich.zone view

binary file changed (absent → 118 bytes)

+ tzdata/Etc/UCT.zone view

binary file changed (absent → 118 bytes)

+ tzdata/Etc/UTC.zone view

binary file changed (absent → 118 bytes)

+ tzdata/Etc/Universal.zone view

binary file changed (absent → 118 bytes)

+ tzdata/Etc/Zulu.zone view

binary file changed (absent → 118 bytes)

+ tzdata/Europe/Amsterdam.zone view

binary file changed (absent → 2917 bytes)

+ tzdata/Europe/Andorra.zone view

binary file changed (absent → 1725 bytes)

+ tzdata/Europe/Athens.zone view

binary file changed (absent → 2245 bytes)

+ tzdata/Europe/Belfast.zone view

binary file changed (absent → 3661 bytes)

+ tzdata/Europe/Belgrade.zone view

binary file changed (absent → 1931 bytes)

+ tzdata/Europe/Berlin.zone view

binary file changed (absent → 2309 bytes)

+ tzdata/Europe/Bratislava.zone view

binary file changed (absent → 2246 bytes)

+ tzdata/Europe/Brussels.zone view

binary file changed (absent → 2944 bytes)

+ tzdata/Europe/Bucharest.zone view

binary file changed (absent → 2195 bytes)

+ tzdata/Europe/Budapest.zone view

binary file changed (absent → 2407 bytes)

+ tzdata/Europe/Busingen.zone view

binary file changed (absent → 1892 bytes)

+ tzdata/Europe/Chisinau.zone view

binary file changed (absent → 2407 bytes)

+ tzdata/Europe/Copenhagen.zone view

binary file changed (absent → 2134 bytes)

+ tzdata/Europe/Dublin.zone view

binary file changed (absent → 3533 bytes)

+ tzdata/Europe/Gibraltar.zone view

binary file changed (absent → 3035 bytes)

+ tzdata/Europe/Guernsey.zone view

binary file changed (absent → 3661 bytes)

+ tzdata/Europe/Helsinki.zone view

binary file changed (absent → 1883 bytes)

+ tzdata/Europe/Isle_of_Man.zone view

binary file changed (absent → 3661 bytes)

+ tzdata/Europe/Istanbul.zone view

binary file changed (absent → 2721 bytes)

+ tzdata/Europe/Jersey.zone view

binary file changed (absent → 3661 bytes)

+ tzdata/Europe/Kaliningrad.zone view

binary file changed (absent → 1494 bytes)

+ tzdata/Europe/Kiev.zone view

binary file changed (absent → 2071 bytes)

+ tzdata/Europe/Lisbon.zone view

binary file changed (absent → 3439 bytes)

+ tzdata/Europe/Ljubljana.zone view

binary file changed (absent → 1931 bytes)

+ tzdata/Europe/London.zone view

binary file changed (absent → 3661 bytes)

+ tzdata/Europe/Luxembourg.zone view

binary file changed (absent → 2960 bytes)

+ tzdata/Europe/Madrid.zone view

binary file changed (absent → 2593 bytes)

+ tzdata/Europe/Malta.zone view

binary file changed (absent → 2603 bytes)

+ tzdata/Europe/Mariehamn.zone view

binary file changed (absent → 1883 bytes)

+ tzdata/Europe/Minsk.zone view

binary file changed (absent → 1328 bytes)

+ tzdata/Europe/Monaco.zone view

binary file changed (absent → 2927 bytes)

+ tzdata/Europe/Moscow.zone view

binary file changed (absent → 1464 bytes)

+ tzdata/Europe/Nicosia.zone view

binary file changed (absent → 2002 bytes)

+ tzdata/Europe/Oslo.zone view

binary file changed (absent → 2225 bytes)

+ tzdata/Europe/Paris.zone view

binary file changed (absent → 2945 bytes)

+ tzdata/Europe/Podgorica.zone view

binary file changed (absent → 1931 bytes)

+ tzdata/Europe/Prague.zone view

binary file changed (absent → 2246 bytes)

+ tzdata/Europe/Riga.zone view

binary file changed (absent → 2209 bytes)

+ tzdata/Europe/Rome.zone view

binary file changed (absent → 2652 bytes)

+ tzdata/Europe/Samara.zone view

binary file changed (absent → 1330 bytes)

+ tzdata/Europe/San_Marino.zone view

binary file changed (absent → 2652 bytes)

+ tzdata/Europe/Sarajevo.zone view

binary file changed (absent → 1931 bytes)

+ tzdata/Europe/Simferopol.zone view

binary file changed (absent → 1448 bytes)

+ tzdata/Europe/Skopje.zone view

binary file changed (absent → 1931 bytes)

+ tzdata/Europe/Sofia.zone view

binary file changed (absent → 2104 bytes)

+ tzdata/Europe/Stockholm.zone view

binary file changed (absent → 1892 bytes)

+ tzdata/Europe/Tallinn.zone view

binary file changed (absent → 2175 bytes)

+ tzdata/Europe/Tirane.zone view

binary file changed (absent → 2084 bytes)

+ tzdata/Europe/Tiraspol.zone view

binary file changed (absent → 2407 bytes)

+ tzdata/Europe/Uzhgorod.zone view

binary file changed (absent → 2077 bytes)

+ tzdata/Europe/Vaduz.zone view

binary file changed (absent → 1892 bytes)

+ tzdata/Europe/Vatican.zone view

binary file changed (absent → 2652 bytes)

+ tzdata/Europe/Vienna.zone view

binary file changed (absent → 2211 bytes)

+ tzdata/Europe/Vilnius.zone view

binary file changed (absent → 2173 bytes)

+ tzdata/Europe/Volgograd.zone view

binary file changed (absent → 1234 bytes)

+ tzdata/Europe/Warsaw.zone view

binary file changed (absent → 2679 bytes)

+ tzdata/Europe/Zagreb.zone view

binary file changed (absent → 1931 bytes)

+ tzdata/Europe/Zaporozhye.zone view

binary file changed (absent → 2085 bytes)

+ tzdata/Europe/Zurich.zone view

binary file changed (absent → 1892 bytes)

+ tzdata/Factory.zone view

binary file changed (absent → 255 bytes)

+ tzdata/GB-Eire.zone view

binary file changed (absent → 3661 bytes)

+ tzdata/GB.zone view

binary file changed (absent → 3661 bytes)

+ tzdata/GMT+0.zone view

binary file changed (absent → 118 bytes)

+ tzdata/GMT-0.zone view

binary file changed (absent → 118 bytes)

+ tzdata/GMT.zone view

binary file changed (absent → 118 bytes)

+ tzdata/GMT0.zone view

binary file changed (absent → 118 bytes)

+ tzdata/Greenwich.zone view

binary file changed (absent → 118 bytes)

+ tzdata/HST.zone view

binary file changed (absent → 119 bytes)

+ tzdata/Hongkong.zone view

binary file changed (absent → 1175 bytes)

+ tzdata/Iceland.zone view

binary file changed (absent → 1141 bytes)

+ tzdata/Indian/Antananarivo.zone view

binary file changed (absent → 227 bytes)

+ tzdata/Indian/Chagos.zone view

binary file changed (absent → 187 bytes)

+ tzdata/Indian/Christmas.zone view

binary file changed (absent → 140 bytes)

+ tzdata/Indian/Cocos.zone view

binary file changed (absent → 143 bytes)

+ tzdata/Indian/Comoro.zone view

binary file changed (absent → 157 bytes)

+ tzdata/Indian/Kerguelen.zone view

binary file changed (absent → 157 bytes)

+ tzdata/Indian/Mahe.zone view

binary file changed (absent → 157 bytes)

+ tzdata/Indian/Maldives.zone view

binary file changed (absent → 178 bytes)

+ tzdata/Indian/Mauritius.zone view

binary file changed (absent → 239 bytes)

+ tzdata/Indian/Mayotte.zone view

binary file changed (absent → 157 bytes)

+ tzdata/Indian/Reunion.zone view

binary file changed (absent → 157 bytes)

+ tzdata/Iran.zone view

binary file changed (absent → 1647 bytes)

+ tzdata/Israel.zone view

binary file changed (absent → 2239 bytes)

+ tzdata/Jamaica.zone view

binary file changed (absent → 481 bytes)

+ tzdata/Japan.zone view

binary file changed (absent → 331 bytes)

+ tzdata/Kwajalein.zone view

binary file changed (absent → 211 bytes)

+ tzdata/Libya.zone view

binary file changed (absent → 641 bytes)

+ tzdata/MET.zone view

binary file changed (absent → 2102 bytes)

+ tzdata/MST.zone view

binary file changed (absent → 118 bytes)

+ tzdata/MST7MDT.zone view

binary file changed (absent → 2294 bytes)

+ tzdata/Mexico/BajaNorte.zone view

binary file changed (absent → 2342 bytes)

+ tzdata/Mexico/BajaSur.zone view

binary file changed (absent → 1550 bytes)

+ tzdata/Mexico/General.zone view

binary file changed (absent → 1604 bytes)

+ tzdata/NZ-CHAT.zone view

binary file changed (absent → 2018 bytes)

+ tzdata/NZ.zone view

binary file changed (absent → 2434 bytes)

+ tzdata/Navajo.zone view

binary file changed (absent → 2427 bytes)

+ tzdata/PRC.zone view

binary file changed (absent → 405 bytes)

+ tzdata/PST8PDT.zone view

binary file changed (absent → 2294 bytes)

+ tzdata/Pacific/Apia.zone view

binary file changed (absent → 1079 bytes)

+ tzdata/Pacific/Auckland.zone view

binary file changed (absent → 2434 bytes)

+ tzdata/Pacific/Chatham.zone view

binary file changed (absent → 2018 bytes)

+ tzdata/Pacific/Chuuk.zone view

binary file changed (absent → 144 bytes)

+ tzdata/Pacific/Easter.zone view

binary file changed (absent → 2269 bytes)

+ tzdata/Pacific/Efate.zone view

binary file changed (absent → 464 bytes)

+ tzdata/Pacific/Enderbury.zone view

binary file changed (absent → 204 bytes)

+ tzdata/Pacific/Fakaofo.zone view

binary file changed (absent → 171 bytes)

+ tzdata/Pacific/Fiji.zone view

binary file changed (absent → 1064 bytes)

+ tzdata/Pacific/Funafuti.zone view

binary file changed (absent → 141 bytes)

+ tzdata/Pacific/Galapagos.zone view

binary file changed (absent → 197 bytes)

+ tzdata/Pacific/Gambier.zone view

binary file changed (absent → 159 bytes)

+ tzdata/Pacific/Guadalcanal.zone view

binary file changed (absent → 158 bytes)

+ tzdata/Pacific/Guam.zone view

binary file changed (absent → 199 bytes)

+ tzdata/Pacific/Honolulu.zone view

binary file changed (absent → 250 bytes)

+ tzdata/Pacific/Johnston.zone view

binary file changed (absent → 250 bytes)

+ tzdata/Pacific/Kiritimati.zone view

binary file changed (absent → 204 bytes)

+ tzdata/Pacific/Kosrae.zone view

binary file changed (absent → 204 bytes)

+ tzdata/Pacific/Kwajalein.zone view

binary file changed (absent → 211 bytes)

+ tzdata/Pacific/Majuro.zone view

binary file changed (absent → 171 bytes)

+ tzdata/Pacific/Marquesas.zone view

binary file changed (absent → 162 bytes)

+ tzdata/Pacific/Midway.zone view

binary file changed (absent → 268 bytes)

+ tzdata/Pacific/Nauru.zone view

binary file changed (absent → 240 bytes)

+ tzdata/Pacific/Niue.zone view

binary file changed (absent → 200 bytes)

+ tzdata/Pacific/Norfolk.zone view

binary file changed (absent → 182 bytes)

+ tzdata/Pacific/Noumea.zone view

binary file changed (absent → 300 bytes)

+ tzdata/Pacific/Pago_Pago.zone view

binary file changed (absent → 290 bytes)

+ tzdata/Pacific/Palau.zone view

binary file changed (absent → 140 bytes)

+ tzdata/Pacific/Pitcairn.zone view

binary file changed (absent → 177 bytes)

+ tzdata/Pacific/Pohnpei.zone view

binary file changed (absent → 144 bytes)

+ tzdata/Pacific/Ponape.zone view

binary file changed (absent → 144 bytes)

+ tzdata/Pacific/Port_Moresby.zone view

binary file changed (absent → 163 bytes)

+ tzdata/Pacific/Rarotonga.zone view

binary file changed (absent → 548 bytes)

+ tzdata/Pacific/Saipan.zone view

binary file changed (absent → 229 bytes)

+ tzdata/Pacific/Samoa.zone view

binary file changed (absent → 290 bytes)

+ tzdata/Pacific/Tahiti.zone view

binary file changed (absent → 160 bytes)

+ tzdata/Pacific/Tarawa.zone view

binary file changed (absent → 144 bytes)

+ tzdata/Pacific/Tongatapu.zone view

binary file changed (absent → 313 bytes)

+ tzdata/Pacific/Truk.zone view

binary file changed (absent → 144 bytes)

+ tzdata/Pacific/Wake.zone view

binary file changed (absent → 144 bytes)

+ tzdata/Pacific/Wallis.zone view

binary file changed (absent → 141 bytes)

+ tzdata/Pacific/Yap.zone view

binary file changed (absent → 144 bytes)

+ tzdata/Poland.zone view

binary file changed (absent → 2679 bytes)

+ tzdata/Portugal.zone view

binary file changed (absent → 3439 bytes)

+ tzdata/ROC.zone view

binary file changed (absent → 724 bytes)

+ tzdata/ROK.zone view

binary file changed (absent → 396 bytes)

+ tzdata/Singapore.zone view

binary file changed (absent → 402 bytes)

+ tzdata/Turkey.zone view

binary file changed (absent → 2721 bytes)

+ tzdata/UCT.zone view

binary file changed (absent → 118 bytes)

+ tzdata/US/Alaska.zone view

binary file changed (absent → 2358 bytes)

+ tzdata/US/Aleutian.zone view

binary file changed (absent → 2353 bytes)

+ tzdata/US/Arizona.zone view

binary file changed (absent → 327 bytes)

+ tzdata/US/Central.zone view

binary file changed (absent → 3559 bytes)

+ tzdata/US/East-Indiana.zone view

binary file changed (absent → 1649 bytes)

+ tzdata/US/Eastern.zone view

binary file changed (absent → 3519 bytes)

+ tzdata/US/Hawaii.zone view

binary file changed (absent → 250 bytes)

+ tzdata/US/Indiana-Starke.zone view

binary file changed (absent → 2411 bytes)

+ tzdata/US/Michigan.zone view

binary file changed (absent → 2202 bytes)

+ tzdata/US/Mountain.zone view

binary file changed (absent → 2427 bytes)

+ tzdata/US/Pacific-New.zone view

binary file changed (absent → 2819 bytes)

+ tzdata/US/Pacific.zone view

binary file changed (absent → 2819 bytes)

+ tzdata/US/Samoa.zone view

binary file changed (absent → 290 bytes)

+ tzdata/UTC.zone view

binary file changed (absent → 118 bytes)

+ tzdata/Universal.zone view

binary file changed (absent → 118 bytes)

+ tzdata/W-SU.zone view

binary file changed (absent → 1464 bytes)

+ tzdata/WET.zone view

binary file changed (absent → 1873 bytes)

+ tzdata/Zulu.zone view

binary file changed (absent → 118 bytes)

+ tzdata/iso3166.tab view
@@ -0,0 +1,275 @@+# ISO 3166 alpha-2 country codes+#+# This file is in the public domain, so clarified as of+# 2009-05-17 by Arthur David Olson.+#+# From Paul Eggert (2013-05-27):+#+# This file contains a table with the following columns:+# 1.  ISO 3166-1 alpha-2 country code, current as of+#     ISO 3166-1 Newsletter VI-15 (2013-05-10).  See: Updates on ISO 3166+#   http://www.iso.org/iso/home/standards/country_codes/updates_on_iso_3166.htm+# 2.  The usual English name for the coded region,+#     chosen so that alphabetic sorting of subsets produces helpful lists.+#     This is not the same as the English name in the ISO 3166 tables.+#+# Columns are separated by a single tab.+# The table is sorted by country code.+#+# Lines beginning with `#' are comments.+#+# This table is intended as an aid for users, to help them select time+# zone data appropriate for their practical needs.  It is not intended+# to take or endorse any position on legal or territorial claims.+#+#country-+#code	name of country, territory, area, or subdivision+AD	Andorra+AE	United Arab Emirates+AF	Afghanistan+AG	Antigua & Barbuda+AI	Anguilla+AL	Albania+AM	Armenia+AO	Angola+AQ	Antarctica+AR	Argentina+AS	Samoa (American)+AT	Austria+AU	Australia+AW	Aruba+AX	Aaland Islands+AZ	Azerbaijan+BA	Bosnia & Herzegovina+BB	Barbados+BD	Bangladesh+BE	Belgium+BF	Burkina Faso+BG	Bulgaria+BH	Bahrain+BI	Burundi+BJ	Benin+BL	St Barthelemy+BM	Bermuda+BN	Brunei+BO	Bolivia+BQ	Caribbean Netherlands+BR	Brazil+BS	Bahamas+BT	Bhutan+BV	Bouvet Island+BW	Botswana+BY	Belarus+BZ	Belize+CA	Canada+CC	Cocos (Keeling) Islands+CD	Congo (Dem. Rep.)+CF	Central African Rep.+CG	Congo (Rep.)+CH	Switzerland+CI	Cote d'Ivoire+CK	Cook Islands+CL	Chile+CM	Cameroon+CN	China+CO	Colombia+CR	Costa Rica+CU	Cuba+CV	Cape Verde+CW	Curacao+CX	Christmas Island+CY	Cyprus+CZ	Czech Republic+DE	Germany+DJ	Djibouti+DK	Denmark+DM	Dominica+DO	Dominican Republic+DZ	Algeria+EC	Ecuador+EE	Estonia+EG	Egypt+EH	Western Sahara+ER	Eritrea+ES	Spain+ET	Ethiopia+FI	Finland+FJ	Fiji+FK	Falkland Islands+FM	Micronesia+FO	Faroe Islands+FR	France+GA	Gabon+GB	Britain (UK)+GD	Grenada+GE	Georgia+GF	French Guiana+GG	Guernsey+GH	Ghana+GI	Gibraltar+GL	Greenland+GM	Gambia+GN	Guinea+GP	Guadeloupe+GQ	Equatorial Guinea+GR	Greece+GS	South Georgia & the South Sandwich Islands+GT	Guatemala+GU	Guam+GW	Guinea-Bissau+GY	Guyana+HK	Hong Kong+HM	Heard Island & McDonald Islands+HN	Honduras+HR	Croatia+HT	Haiti+HU	Hungary+ID	Indonesia+IE	Ireland+IL	Israel+IM	Isle of Man+IN	India+IO	British Indian Ocean Territory+IQ	Iraq+IR	Iran+IS	Iceland+IT	Italy+JE	Jersey+JM	Jamaica+JO	Jordan+JP	Japan+KE	Kenya+KG	Kyrgyzstan+KH	Cambodia+KI	Kiribati+KM	Comoros+KN	St Kitts & Nevis+KP	Korea (North)+KR	Korea (South)+KW	Kuwait+KY	Cayman Islands+KZ	Kazakhstan+LA	Laos+LB	Lebanon+LC	St Lucia+LI	Liechtenstein+LK	Sri Lanka+LR	Liberia+LS	Lesotho+LT	Lithuania+LU	Luxembourg+LV	Latvia+LY	Libya+MA	Morocco+MC	Monaco+MD	Moldova+ME	Montenegro+MF	St Martin (French part)+MG	Madagascar+MH	Marshall Islands+MK	Macedonia+ML	Mali+MM	Myanmar (Burma)+MN	Mongolia+MO	Macau+MP	Northern Mariana Islands+MQ	Martinique+MR	Mauritania+MS	Montserrat+MT	Malta+MU	Mauritius+MV	Maldives+MW	Malawi+MX	Mexico+MY	Malaysia+MZ	Mozambique+NA	Namibia+NC	New Caledonia+NE	Niger+NF	Norfolk Island+NG	Nigeria+NI	Nicaragua+NL	Netherlands+NO	Norway+NP	Nepal+NR	Nauru+NU	Niue+NZ	New Zealand+OM	Oman+PA	Panama+PE	Peru+PF	French Polynesia+PG	Papua New Guinea+PH	Philippines+PK	Pakistan+PL	Poland+PM	St Pierre & Miquelon+PN	Pitcairn+PR	Puerto Rico+PS	Palestine+PT	Portugal+PW	Palau+PY	Paraguay+QA	Qatar+RE	Reunion+RO	Romania+RS	Serbia+RU	Russia+RW	Rwanda+SA	Saudi Arabia+SB	Solomon Islands+SC	Seychelles+SD	Sudan+SE	Sweden+SG	Singapore+SH	St Helena+SI	Slovenia+SJ	Svalbard & Jan Mayen+SK	Slovakia+SL	Sierra Leone+SM	San Marino+SN	Senegal+SO	Somalia+SR	Suriname+SS	South Sudan+ST	Sao Tome & Principe+SV	El Salvador+SX	St Maarten (Dutch part)+SY	Syria+SZ	Swaziland+TC	Turks & Caicos Is+TD	Chad+TF	French Southern & Antarctic Lands+TG	Togo+TH	Thailand+TJ	Tajikistan+TK	Tokelau+TL	East Timor+TM	Turkmenistan+TN	Tunisia+TO	Tonga+TR	Turkey+TT	Trinidad & Tobago+TV	Tuvalu+TW	Taiwan+TZ	Tanzania+UA	Ukraine+UG	Uganda+UM	US minor outlying islands+US	United States+UY	Uruguay+UZ	Uzbekistan+VA	Vatican City+VC	St Vincent+VE	Venezuela+VG	Virgin Islands (UK)+VI	Virgin Islands (US)+VN	Vietnam+VU	Vanuatu+WF	Wallis & Futuna+WS	Samoa (western)+YE	Yemen+YT	Mayotte+ZA	South Africa+ZM	Zambia+ZW	Zimbabwe
+ tzdata/zone.tab view
@@ -0,0 +1,452 @@+# TZ zone descriptions+#+# This file is in the public domain, so clarified as of+# 2009-05-17 by Arthur David Olson.+#+# From Paul Eggert (2013-08-14):+#+# This file contains a table where each row stands for an area that is+# the intersection of a region identified by a country code and of a+# zone where civil clocks have agreed since 1970.  The columns of the+# table are as follows:+#+# 1.  ISO 3166 2-character country code.  See the file 'iso3166.tab'.+# 2.  Latitude and longitude of the area's principal location+#     in ISO 6709 sign-degrees-minutes-seconds format,+#     either +-DDMM+-DDDMM or +-DDMMSS+-DDDMMSS,+#     first latitude (+ is north), then longitude (+ is east).+# 3.  Zone name used in value of TZ environment variable.+#     Please see the 'Theory' file for how zone names are chosen.+#     If multiple zones overlap a country, each has a row in the+#     table, with column 1 being duplicated.+# 4.  Comments; present if and only if the country has multiple rows.+#+# Columns are separated by a single tab.+# The table is sorted first by country, then an order within the country that+# (1) makes some geographical sense, and+# (2) puts the most populous areas first, where that does not contradict (1).+#+# Lines beginning with '#' are comments.+#+# This table is intended as an aid for users, to help them select time+# zone data appropriate for their practical needs.  It is not intended+# to take or endorse any position on legal or territorial claims.+#+#country-+#code	coordinates	TZ			comments+AD	+4230+00131	Europe/Andorra+AE	+2518+05518	Asia/Dubai+AF	+3431+06912	Asia/Kabul+AG	+1703-06148	America/Antigua+AI	+1812-06304	America/Anguilla+AL	+4120+01950	Europe/Tirane+AM	+4011+04430	Asia/Yerevan+AO	-0848+01314	Africa/Luanda+AQ	-7750+16636	Antarctica/McMurdo	McMurdo, South Pole, Scott (New Zealand time)+AQ	-6734-06808	Antarctica/Rothera	Rothera Station, Adelaide Island+AQ	-6448-06406	Antarctica/Palmer	Palmer Station, Anvers Island+AQ	-6736+06253	Antarctica/Mawson	Mawson Station, Holme Bay+AQ	-6835+07758	Antarctica/Davis	Davis Station, Vestfold Hills+AQ	-6617+11031	Antarctica/Casey	Casey Station, Bailey Peninsula+AQ	-7824+10654	Antarctica/Vostok	Vostok Station, Lake Vostok+AQ	-6640+14001	Antarctica/DumontDUrville	Dumont-d'Urville Station, Terre Adelie+AQ	-690022+0393524	Antarctica/Syowa	Syowa Station, E Ongul I+AQ	-720041+0023206	Antarctica/Troll	Troll Station, Queen Maud Land+AR	-3436-05827	America/Argentina/Buenos_Aires	Buenos Aires (BA, CF)+AR	-3124-06411	America/Argentina/Cordoba	most locations (CB, CC, CN, ER, FM, MN, SE, SF)+AR	-2447-06525	America/Argentina/Salta	(SA, LP, NQ, RN)+AR	-2411-06518	America/Argentina/Jujuy	Jujuy (JY)+AR	-2649-06513	America/Argentina/Tucuman	Tucuman (TM)+AR	-2828-06547	America/Argentina/Catamarca	Catamarca (CT), Chubut (CH)+AR	-2926-06651	America/Argentina/La_Rioja	La Rioja (LR)+AR	-3132-06831	America/Argentina/San_Juan	San Juan (SJ)+AR	-3253-06849	America/Argentina/Mendoza	Mendoza (MZ)+AR	-3319-06621	America/Argentina/San_Luis	San Luis (SL)+AR	-5138-06913	America/Argentina/Rio_Gallegos	Santa Cruz (SC)+AR	-5448-06818	America/Argentina/Ushuaia	Tierra del Fuego (TF)+AS	-1416-17042	Pacific/Pago_Pago+AT	+4813+01620	Europe/Vienna+AU	-3133+15905	Australia/Lord_Howe	Lord Howe Island+AU	-5430+15857	Antarctica/Macquarie	Macquarie Island+AU	-4253+14719	Australia/Hobart	Tasmania - most locations+AU	-3956+14352	Australia/Currie	Tasmania - King Island+AU	-3749+14458	Australia/Melbourne	Victoria+AU	-3352+15113	Australia/Sydney	New South Wales - most locations+AU	-3157+14127	Australia/Broken_Hill	New South Wales - Yancowinna+AU	-2728+15302	Australia/Brisbane	Queensland - most locations+AU	-2016+14900	Australia/Lindeman	Queensland - Holiday Islands+AU	-3455+13835	Australia/Adelaide	South Australia+AU	-1228+13050	Australia/Darwin	Northern Territory+AU	-3157+11551	Australia/Perth	Western Australia - most locations+AU	-3143+12852	Australia/Eucla	Western Australia - Eucla area+AW	+1230-06958	America/Aruba+AX	+6006+01957	Europe/Mariehamn+AZ	+4023+04951	Asia/Baku+BA	+4352+01825	Europe/Sarajevo+BB	+1306-05937	America/Barbados+BD	+2343+09025	Asia/Dhaka+BE	+5050+00420	Europe/Brussels+BF	+1222-00131	Africa/Ouagadougou+BG	+4241+02319	Europe/Sofia+BH	+2623+05035	Asia/Bahrain+BI	-0323+02922	Africa/Bujumbura+BJ	+0629+00237	Africa/Porto-Novo+BL	+1753-06251	America/St_Barthelemy+BM	+3217-06446	Atlantic/Bermuda+BN	+0456+11455	Asia/Brunei+BO	-1630-06809	America/La_Paz+BQ	+120903-0681636	America/Kralendijk+BR	-0351-03225	America/Noronha	Atlantic islands+BR	-0127-04829	America/Belem	Amapa, E Para+BR	-0343-03830	America/Fortaleza	NE Brazil (MA, PI, CE, RN, PB)+BR	-0803-03454	America/Recife	Pernambuco+BR	-0712-04812	America/Araguaina	Tocantins+BR	-0940-03543	America/Maceio	Alagoas, Sergipe+BR	-1259-03831	America/Bahia	Bahia+BR	-2332-04637	America/Sao_Paulo	S & SE Brazil (GO, DF, MG, ES, RJ, SP, PR, SC, RS)+BR	-2027-05437	America/Campo_Grande	Mato Grosso do Sul+BR	-1535-05605	America/Cuiaba	Mato Grosso+BR	-0226-05452	America/Santarem	W Para+BR	-0846-06354	America/Porto_Velho	Rondonia+BR	+0249-06040	America/Boa_Vista	Roraima+BR	-0308-06001	America/Manaus	E Amazonas+BR	-0640-06952	America/Eirunepe	W Amazonas+BR	-0958-06748	America/Rio_Branco	Acre+BS	+2505-07721	America/Nassau+BT	+2728+08939	Asia/Thimphu+BW	-2439+02555	Africa/Gaborone+BY	+5354+02734	Europe/Minsk+BZ	+1730-08812	America/Belize+CA	+4734-05243	America/St_Johns	Newfoundland Time, including SE Labrador+CA	+4439-06336	America/Halifax	Atlantic Time - Nova Scotia (most places), PEI+CA	+4612-05957	America/Glace_Bay	Atlantic Time - Nova Scotia - places that did not observe DST 1966-1971+CA	+4606-06447	America/Moncton	Atlantic Time - New Brunswick+CA	+5320-06025	America/Goose_Bay	Atlantic Time - Labrador - most locations+CA	+5125-05707	America/Blanc-Sablon	Atlantic Standard Time - Quebec - Lower North Shore+CA	+4339-07923	America/Toronto	Eastern Time - Ontario & Quebec - most locations+CA	+4901-08816	America/Nipigon	Eastern Time - Ontario & Quebec - places that did not observe DST 1967-1973+CA	+4823-08915	America/Thunder_Bay	Eastern Time - Thunder Bay, Ontario+CA	+6344-06828	America/Iqaluit	Eastern Time - east Nunavut - most locations+CA	+6608-06544	America/Pangnirtung	Eastern Time - Pangnirtung, Nunavut+CA	+744144-0944945	America/Resolute	Central Standard Time - Resolute, Nunavut+CA	+484531-0913718	America/Atikokan	Eastern Standard Time - Atikokan, Ontario and Southampton I, Nunavut+CA	+624900-0920459	America/Rankin_Inlet	Central Time - central Nunavut+CA	+4953-09709	America/Winnipeg	Central Time - Manitoba & west Ontario+CA	+4843-09434	America/Rainy_River	Central Time - Rainy River & Fort Frances, Ontario+CA	+5024-10439	America/Regina	Central Standard Time - Saskatchewan - most locations+CA	+5017-10750	America/Swift_Current	Central Standard Time - Saskatchewan - midwest+CA	+5333-11328	America/Edmonton	Mountain Time - Alberta, east British Columbia & west Saskatchewan+CA	+690650-1050310	America/Cambridge_Bay	Mountain Time - west Nunavut+CA	+6227-11421	America/Yellowknife	Mountain Time - central Northwest Territories+CA	+682059-1334300	America/Inuvik	Mountain Time - west Northwest Territories+CA	+4906-11631	America/Creston	Mountain Standard Time - Creston, British Columbia+CA	+5946-12014	America/Dawson_Creek	Mountain Standard Time - Dawson Creek & Fort Saint John, British Columbia+CA	+4916-12307	America/Vancouver	Pacific Time - west British Columbia+CA	+6043-13503	America/Whitehorse	Pacific Time - south Yukon+CA	+6404-13925	America/Dawson	Pacific Time - north Yukon+CC	-1210+09655	Indian/Cocos+CD	-0418+01518	Africa/Kinshasa	west Dem. Rep. of Congo+CD	-1140+02728	Africa/Lubumbashi	east Dem. Rep. of Congo+CF	+0422+01835	Africa/Bangui+CG	-0416+01517	Africa/Brazzaville+CH	+4723+00832	Europe/Zurich+CI	+0519-00402	Africa/Abidjan+CK	-2114-15946	Pacific/Rarotonga+CL	-3327-07040	America/Santiago	most locations+CL	-2709-10926	Pacific/Easter	Easter Island & Sala y Gomez+CM	+0403+00942	Africa/Douala+CN	+3114+12128	Asia/Shanghai	east China - Beijing, Guangdong, Shanghai, etc.+CN	+4545+12641	Asia/Harbin	Heilongjiang (except Mohe), Jilin+CN	+2934+10635	Asia/Chongqing	central China - Sichuan, Yunnan, Guangxi, Shaanxi, Guizhou, etc.+CN	+4348+08735	Asia/Urumqi	most of Tibet & Xinjiang+CN	+3929+07559	Asia/Kashgar	west Tibet & Xinjiang+CO	+0436-07405	America/Bogota+CR	+0956-08405	America/Costa_Rica+CU	+2308-08222	America/Havana+CV	+1455-02331	Atlantic/Cape_Verde+CW	+1211-06900	America/Curacao+CX	-1025+10543	Indian/Christmas+CY	+3510+03322	Asia/Nicosia+CZ	+5005+01426	Europe/Prague+DE	+5230+01322	Europe/Berlin	most locations+DE	+4742+00841	Europe/Busingen	Busingen+DJ	+1136+04309	Africa/Djibouti+DK	+5540+01235	Europe/Copenhagen+DM	+1518-06124	America/Dominica+DO	+1828-06954	America/Santo_Domingo+DZ	+3647+00303	Africa/Algiers+EC	-0210-07950	America/Guayaquil	mainland+EC	-0054-08936	Pacific/Galapagos	Galapagos Islands+EE	+5925+02445	Europe/Tallinn+EG	+3003+03115	Africa/Cairo+EH	+2709-01312	Africa/El_Aaiun+ER	+1520+03853	Africa/Asmara+ES	+4024-00341	Europe/Madrid	mainland+ES	+3553-00519	Africa/Ceuta	Ceuta & Melilla+ES	+2806-01524	Atlantic/Canary	Canary Islands+ET	+0902+03842	Africa/Addis_Ababa+FI	+6010+02458	Europe/Helsinki+FJ	-1808+17825	Pacific/Fiji+FK	-5142-05751	Atlantic/Stanley+FM	+0725+15147	Pacific/Chuuk	Chuuk (Truk) and Yap+FM	+0658+15813	Pacific/Pohnpei	Pohnpei (Ponape)+FM	+0519+16259	Pacific/Kosrae	Kosrae+FO	+6201-00646	Atlantic/Faroe+FR	+4852+00220	Europe/Paris+GA	+0023+00927	Africa/Libreville+GB	+513030-0000731	Europe/London+GD	+1203-06145	America/Grenada+GE	+4143+04449	Asia/Tbilisi+GF	+0456-05220	America/Cayenne+GG	+4927-00232	Europe/Guernsey+GH	+0533-00013	Africa/Accra+GI	+3608-00521	Europe/Gibraltar+GL	+6411-05144	America/Godthab	most locations+GL	+7646-01840	America/Danmarkshavn	east coast, north of Scoresbysund+GL	+7029-02158	America/Scoresbysund	Scoresbysund / Ittoqqortoormiit+GL	+7634-06847	America/Thule	Thule / Pituffik+GM	+1328-01639	Africa/Banjul+GN	+0931-01343	Africa/Conakry+GP	+1614-06132	America/Guadeloupe+GQ	+0345+00847	Africa/Malabo+GR	+3758+02343	Europe/Athens+GS	-5416-03632	Atlantic/South_Georgia+GT	+1438-09031	America/Guatemala+GU	+1328+14445	Pacific/Guam+GW	+1151-01535	Africa/Bissau+GY	+0648-05810	America/Guyana+HK	+2217+11409	Asia/Hong_Kong+HN	+1406-08713	America/Tegucigalpa+HR	+4548+01558	Europe/Zagreb+HT	+1832-07220	America/Port-au-Prince+HU	+4730+01905	Europe/Budapest+ID	-0610+10648	Asia/Jakarta	Java & Sumatra+ID	-0002+10920	Asia/Pontianak	west & central Borneo+ID	-0507+11924	Asia/Makassar	east & south Borneo, Sulawesi (Celebes), Bali, Nusa Tengarra, west Timor+ID	-0232+14042	Asia/Jayapura	west New Guinea (Irian Jaya) & Malukus (Moluccas)+IE	+5320-00615	Europe/Dublin+IL	+314650+0351326	Asia/Jerusalem+IM	+5409-00428	Europe/Isle_of_Man+IN	+2232+08822	Asia/Kolkata+IO	-0720+07225	Indian/Chagos+IQ	+3321+04425	Asia/Baghdad+IR	+3540+05126	Asia/Tehran+IS	+6409-02151	Atlantic/Reykjavik+IT	+4154+01229	Europe/Rome+JE	+4912-00207	Europe/Jersey+JM	+175805-0764736	America/Jamaica+JO	+3157+03556	Asia/Amman+JP	+353916+1394441	Asia/Tokyo+KE	-0117+03649	Africa/Nairobi+KG	+4254+07436	Asia/Bishkek+KH	+1133+10455	Asia/Phnom_Penh+KI	+0125+17300	Pacific/Tarawa	Gilbert Islands+KI	-0308-17105	Pacific/Enderbury	Phoenix Islands+KI	+0152-15720	Pacific/Kiritimati	Line Islands+KM	-1141+04316	Indian/Comoro+KN	+1718-06243	America/St_Kitts+KP	+3901+12545	Asia/Pyongyang+KR	+3733+12658	Asia/Seoul+KW	+2920+04759	Asia/Kuwait+KY	+1918-08123	America/Cayman+KZ	+4315+07657	Asia/Almaty	most locations+KZ	+4448+06528	Asia/Qyzylorda	Qyzylorda (Kyzylorda, Kzyl-Orda)+KZ	+5017+05710	Asia/Aqtobe	Aqtobe (Aktobe)+KZ	+4431+05016	Asia/Aqtau	Atyrau (Atirau, Gur'yev), Mangghystau (Mankistau)+KZ	+5113+05121	Asia/Oral	West Kazakhstan+LA	+1758+10236	Asia/Vientiane+LB	+3353+03530	Asia/Beirut+LC	+1401-06100	America/St_Lucia+LI	+4709+00931	Europe/Vaduz+LK	+0656+07951	Asia/Colombo+LR	+0618-01047	Africa/Monrovia+LS	-2928+02730	Africa/Maseru+LT	+5441+02519	Europe/Vilnius+LU	+4936+00609	Europe/Luxembourg+LV	+5657+02406	Europe/Riga+LY	+3254+01311	Africa/Tripoli+MA	+3339-00735	Africa/Casablanca+MC	+4342+00723	Europe/Monaco+MD	+4700+02850	Europe/Chisinau+ME	+4226+01916	Europe/Podgorica+MF	+1804-06305	America/Marigot+MG	-1855+04731	Indian/Antananarivo+MH	+0709+17112	Pacific/Majuro	most locations+MH	+0905+16720	Pacific/Kwajalein	Kwajalein+MK	+4159+02126	Europe/Skopje+ML	+1239-00800	Africa/Bamako+MM	+1647+09610	Asia/Rangoon+MN	+4755+10653	Asia/Ulaanbaatar	most locations+MN	+4801+09139	Asia/Hovd	Bayan-Olgiy, Govi-Altai, Hovd, Uvs, Zavkhan+MN	+4804+11430	Asia/Choibalsan	Dornod, Sukhbaatar+MO	+2214+11335	Asia/Macau+MP	+1512+14545	Pacific/Saipan+MQ	+1436-06105	America/Martinique+MR	+1806-01557	Africa/Nouakchott+MS	+1643-06213	America/Montserrat+MT	+3554+01431	Europe/Malta+MU	-2010+05730	Indian/Mauritius+MV	+0410+07330	Indian/Maldives+MW	-1547+03500	Africa/Blantyre+MX	+1924-09909	America/Mexico_City	Central Time - most locations+MX	+2105-08646	America/Cancun	Central Time - Quintana Roo+MX	+2058-08937	America/Merida	Central Time - Campeche, Yucatan+MX	+2540-10019	America/Monterrey	Mexican Central Time - Coahuila, Durango, Nuevo Leon, Tamaulipas away from US border+MX	+2550-09730	America/Matamoros	US Central Time - Coahuila, Durango, Nuevo Leon, Tamaulipas near US border+MX	+2313-10625	America/Mazatlan	Mountain Time - S Baja, Nayarit, Sinaloa+MX	+2838-10605	America/Chihuahua	Mexican Mountain Time - Chihuahua away from US border+MX	+2934-10425	America/Ojinaga	US Mountain Time - Chihuahua near US border+MX	+2904-11058	America/Hermosillo	Mountain Standard Time - Sonora+MX	+3232-11701	America/Tijuana	US Pacific Time - Baja California near US border+MX	+3018-11452	America/Santa_Isabel	Mexican Pacific Time - Baja California away from US border+MX	+2048-10515	America/Bahia_Banderas	Mexican Central Time - Bahia de Banderas+MY	+0310+10142	Asia/Kuala_Lumpur	peninsular Malaysia+MY	+0133+11020	Asia/Kuching	Sabah & Sarawak+MZ	-2558+03235	Africa/Maputo+NA	-2234+01706	Africa/Windhoek+NC	-2216+16627	Pacific/Noumea+NE	+1331+00207	Africa/Niamey+NF	-2903+16758	Pacific/Norfolk+NG	+0627+00324	Africa/Lagos+NI	+1209-08617	America/Managua+NL	+5222+00454	Europe/Amsterdam+NO	+5955+01045	Europe/Oslo+NP	+2743+08519	Asia/Kathmandu+NR	-0031+16655	Pacific/Nauru+NU	-1901-16955	Pacific/Niue+NZ	-3652+17446	Pacific/Auckland	most locations+NZ	-4357-17633	Pacific/Chatham	Chatham Islands+OM	+2336+05835	Asia/Muscat+PA	+0858-07932	America/Panama+PE	-1203-07703	America/Lima+PF	-1732-14934	Pacific/Tahiti	Society Islands+PF	-0900-13930	Pacific/Marquesas	Marquesas Islands+PF	-2308-13457	Pacific/Gambier	Gambier Islands+PG	-0930+14710	Pacific/Port_Moresby+PH	+1435+12100	Asia/Manila+PK	+2452+06703	Asia/Karachi+PL	+5215+02100	Europe/Warsaw+PM	+4703-05620	America/Miquelon+PN	-2504-13005	Pacific/Pitcairn+PR	+182806-0660622	America/Puerto_Rico+PS	+3130+03428	Asia/Gaza	Gaza Strip+PS	+313200+0350542	Asia/Hebron	West Bank+PT	+3843-00908	Europe/Lisbon	mainland+PT	+3238-01654	Atlantic/Madeira	Madeira Islands+PT	+3744-02540	Atlantic/Azores	Azores+PW	+0720+13429	Pacific/Palau+PY	-2516-05740	America/Asuncion+QA	+2517+05132	Asia/Qatar+RE	-2052+05528	Indian/Reunion+RO	+4426+02606	Europe/Bucharest+RS	+4450+02030	Europe/Belgrade+RU	+5443+02030	Europe/Kaliningrad	Moscow-01 - Kaliningrad+RU	+5545+03735	Europe/Moscow	Moscow+00 - west Russia+RU	+4844+04425	Europe/Volgograd	Moscow+00 - Caspian Sea+RU	+5312+05009	Europe/Samara	Moscow+00 - Samara, Udmurtia+RU	+4457+03406	Europe/Simferopol	Moscow+00 - Crimea+RU	+5651+06036	Asia/Yekaterinburg	Moscow+02 - Urals+RU	+5500+07324	Asia/Omsk	Moscow+03 - west Siberia+RU	+5502+08255	Asia/Novosibirsk	Moscow+03 - Novosibirsk+RU	+5345+08707	Asia/Novokuznetsk	Moscow+03 - Novokuznetsk+RU	+5601+09250	Asia/Krasnoyarsk	Moscow+04 - Yenisei River+RU	+5216+10420	Asia/Irkutsk	Moscow+05 - Lake Baikal+RU	+6200+12940	Asia/Yakutsk	Moscow+06 - Lena River+RU	+623923+1353314	Asia/Khandyga	Moscow+06 - Tomponsky, Ust-Maysky+RU	+4310+13156	Asia/Vladivostok	Moscow+07 - Amur River+RU	+4658+14242	Asia/Sakhalin	Moscow+07 - Sakhalin Island+RU	+643337+1431336	Asia/Ust-Nera	Moscow+07 - Oymyakonsky+RU	+5934+15048	Asia/Magadan	Moscow+08 - Magadan+RU	+5301+15839	Asia/Kamchatka	Moscow+08 - Kamchatka+RU	+6445+17729	Asia/Anadyr	Moscow+08 - Bering Sea+RW	-0157+03004	Africa/Kigali+SA	+2438+04643	Asia/Riyadh+SB	-0932+16012	Pacific/Guadalcanal+SC	-0440+05528	Indian/Mahe+SD	+1536+03232	Africa/Khartoum+SE	+5920+01803	Europe/Stockholm+SG	+0117+10351	Asia/Singapore+SH	-1555-00542	Atlantic/St_Helena+SI	+4603+01431	Europe/Ljubljana+SJ	+7800+01600	Arctic/Longyearbyen+SK	+4809+01707	Europe/Bratislava+SL	+0830-01315	Africa/Freetown+SM	+4355+01228	Europe/San_Marino+SN	+1440-01726	Africa/Dakar+SO	+0204+04522	Africa/Mogadishu+SR	+0550-05510	America/Paramaribo+SS	+0451+03136	Africa/Juba+ST	+0020+00644	Africa/Sao_Tome+SV	+1342-08912	America/El_Salvador+SX	+180305-0630250	America/Lower_Princes+SY	+3330+03618	Asia/Damascus+SZ	-2618+03106	Africa/Mbabane+TC	+2128-07108	America/Grand_Turk+TD	+1207+01503	Africa/Ndjamena+TF	-492110+0701303	Indian/Kerguelen+TG	+0608+00113	Africa/Lome+TH	+1345+10031	Asia/Bangkok+TJ	+3835+06848	Asia/Dushanbe+TK	-0922-17114	Pacific/Fakaofo+TL	-0833+12535	Asia/Dili+TM	+3757+05823	Asia/Ashgabat+TN	+3648+01011	Africa/Tunis+TO	-2110-17510	Pacific/Tongatapu+TR	+4101+02858	Europe/Istanbul+TT	+1039-06131	America/Port_of_Spain+TV	-0831+17913	Pacific/Funafuti+TW	+2503+12130	Asia/Taipei+TZ	-0648+03917	Africa/Dar_es_Salaam+UA	+5026+03031	Europe/Kiev	most locations+UA	+4837+02218	Europe/Uzhgorod	Ruthenia+UA	+4750+03510	Europe/Zaporozhye	Zaporozh'ye, E Lugansk / Zaporizhia, E Luhansk+UG	+0019+03225	Africa/Kampala+UM	+1645-16931	Pacific/Johnston	Johnston Atoll+UM	+2813-17722	Pacific/Midway	Midway Islands+UM	+1917+16637	Pacific/Wake	Wake Island+US	+404251-0740023	America/New_York	Eastern Time+US	+421953-0830245	America/Detroit	Eastern Time - Michigan - most locations+US	+381515-0854534	America/Kentucky/Louisville	Eastern Time - Kentucky - Louisville area+US	+364947-0845057	America/Kentucky/Monticello	Eastern Time - Kentucky - Wayne County+US	+394606-0860929	America/Indiana/Indianapolis	Eastern Time - Indiana - most locations+US	+384038-0873143	America/Indiana/Vincennes	Eastern Time - Indiana - Daviess, Dubois, Knox & Martin Counties+US	+410305-0863611	America/Indiana/Winamac	Eastern Time - Indiana - Pulaski County+US	+382232-0862041	America/Indiana/Marengo	Eastern Time - Indiana - Crawford County+US	+382931-0871643	America/Indiana/Petersburg	Eastern Time - Indiana - Pike County+US	+384452-0850402	America/Indiana/Vevay	Eastern Time - Indiana - Switzerland County+US	+415100-0873900	America/Chicago	Central Time+US	+375711-0864541	America/Indiana/Tell_City	Central Time - Indiana - Perry County+US	+411745-0863730	America/Indiana/Knox	Central Time - Indiana - Starke County+US	+450628-0873651	America/Menominee	Central Time - Michigan - Dickinson, Gogebic, Iron & Menominee Counties+US	+470659-1011757	America/North_Dakota/Center	Central Time - North Dakota - Oliver County+US	+465042-1012439	America/North_Dakota/New_Salem	Central Time - North Dakota - Morton County (except Mandan area)+US	+471551-1014640	America/North_Dakota/Beulah	Central Time - North Dakota - Mercer County+US	+394421-1045903	America/Denver	Mountain Time+US	+433649-1161209	America/Boise	Mountain Time - south Idaho & east Oregon+US	+332654-1120424	America/Phoenix	Mountain Standard Time - Arizona (except Navajo)+US	+340308-1181434	America/Los_Angeles	Pacific Time+US	+611305-1495401	America/Anchorage	Alaska Time+US	+581807-1342511	America/Juneau	Alaska Time - Alaska panhandle+US	+571035-1351807	America/Sitka	Alaska Time - southeast Alaska panhandle+US	+593249-1394338	America/Yakutat	Alaska Time - Alaska panhandle neck+US	+643004-1652423	America/Nome	Alaska Time - west Alaska+US	+515248-1763929	America/Adak	Aleutian Islands+US	+550737-1313435	America/Metlakatla	Metlakatla Time - Annette Island+US	+211825-1575130	Pacific/Honolulu	Hawaii+UY	-3453-05611	America/Montevideo+UZ	+3940+06648	Asia/Samarkand	west Uzbekistan+UZ	+4120+06918	Asia/Tashkent	east Uzbekistan+VA	+415408+0122711	Europe/Vatican+VC	+1309-06114	America/St_Vincent+VE	+1030-06656	America/Caracas+VG	+1827-06437	America/Tortola+VI	+1821-06456	America/St_Thomas+VN	+1045+10640	Asia/Ho_Chi_Minh+VU	-1740+16825	Pacific/Efate+WF	-1318-17610	Pacific/Wallis+WS	-1350-17144	Pacific/Apia+YE	+1245+04512	Asia/Aden+YT	-1247+04514	Indian/Mayotte+ZA	-2615+02800	Africa/Johannesburg+ZM	-1525+02817	Africa/Lusaka+ZW	-1750+03103	Africa/Harare