KosherJava Zmanim Library Package Name and Build Process Update


The KosherJava zmanim library originally went live in 2004. There was an existing C/C++ zmanim project by Ken Bloom hosted on SourceForge (that was at the time the equivalent of what GitHub is today). The Java package structure name net.sourceforge.zmanim was based on the one used by Ken’s project (despite not being hosted there), and remained that way for 16 years.
On August 3, 2020, Eli Julian modernized the library’s build process from the previously used Ant, to Maven & Gradle. This change simplified the workflow for many developers using the zmanim API. As part of the change, the package name was updated to com.kosherjava.zmanim. The KosherJava zmanim Maven / Gradle artifacts are available at the KosherJava zmanim Maven Central page. A direct Jar download is available at Maven Central (see the KosherJava Downloads page for instructions). The old code was branched into zmanim-1.5 and will allow people who do not want to upgrade to continue to use the old structure (and Ant build process) while continuing to receive emergency bug fixes. This will allow the codebase to use more modern Java language features, without impacting users who want to remain on the legacy code. The new code has a minimum Java 8 requirement (a version released in March 2014). Releases based on the new build process will use SemVer (Semantic Versioning) to make things simpler for developers.
The upgraded build process also allowed automated GitHub’s CodeQL vulnerability scanning for the KosherJava Zmanim project.
You can add the KosherJava zmanim library as a Maven or Gradle dependency. For Maven add the following to your pom.xml.

<dependency>
  <groupId>com.kosherjava</groupId>
  <artifactId>zmanim</artifactId>
  <version>2.0.3</version>
</dependency>

For Gradle, add the following to your build.gradle file.

implementation group: 'com.kosherjava', name: 'zmanim', version: '2.0.3'

Latest Kiddush Levana Time – Location, Location, Location

The full moon visible from Jerusalem’s Inbal hotel sukkah.

In the previously published Zmanim For Kiddush Levana Before Shavuos 5778 article, we demonstrated how location plays a key role in the earliest time one can recite Kiddush Levana / קידוש לבנה. This article will focus on the Sof Zman Kiddush Levana, or the latest that one can recite Kiddush Levana. In the past we posted the technical Calculating Kiddush Levana Times Using the Zmanim API post, with a simple example of using the KosherJava Zmanim API to calculate Kiddush Levana. Here is a slightly more complex example.
The Bach on the Tur Hilchos Kiddush Hachodesh (Orach Chayim תכ”ו 426) discusses not reciting Kiddush Levana on Yom Tov. He writes that in Tishrei 5390 (1629) there was cloud cover from Yom Kippur until the first night of Succos. The Bach who was the Rabbi in Kraków at that time (see the Be’er Haitev 426:5), writes that they said Kiddush Levana on the first night of Sukkos. This is right after he mentioned that it is our custom not to recite Kiddush Levana after halfway between molad and molad (following the Maharil and Rema, and not the Mechaber who allows a little extra time). Was tzais (the earliest time to recite Kiddush Levana), on the first night of Succos in Kraków that year (5390 / 1629) after the midpoint between molad and molad? Is the Bach saying that in this case bedieved you should still recite Kiddush Levana, or is he just saying that it can be said on Yom Tov when waiting until after Yom Tov will be too late?

The Impact of Calendar Dechiyos / דחיות

The day of the molad of Tishrei is the target day for the first day of Rosh Hashana. However, the Jewish calendar has four rules that delay the start of the Jewish year by a day or two (in a case of two delays combining), a subject that we will hopefully cover at some point – עוד חזון למועד. If not for these delays known as dechiyos that occur about 60% of all years, the 15th night of the month of Tishrei, would always be early enough to recite Kiddush Levanah. The average lunar month is a drop over 29 and a half days (29 days, 12 hours, 44 minutes and 3.3 seconds), so the halfway point that is the end of the earlier time quoted by the Bach would be 14 days, 18 hours and 22 minutes after the molad. The calculation below shows that in the case of 15 Tishrei, 5390 (the evening of Oct 1, 1629), even the earlier zman for sof zman Kiddush Levana did not happen until the morning of the first day of Succos. The molad of Tishrei that year was about 2.5 hours before the day’s end. This resulted in a dechiya of Molad Zaken / מולד זקן. This delayed Rosh Hashanah by a day pushing it from Monday to Tuesday. There was no dechiya of Lo ADU Rosh / לא אד״ו ראש, so the delay was not as long as it could have been (had there been a combination of the two dechiyos). Sunset on the first night of Sukkos that year in Krakow was at 5:18 pm (using standard time), and the moon rose at 5:54 pm, so they were able to recite Kiddush Levana that night.

Despite dechiyos, the time of tzais in Krakow is before sof zman Kiddush Levana on the the first night of Succos approximately 73% of the time, making the ability to recite Kiddush Levanah on the first night of Sukkos for the longitude of Krakow (that is close to Yerushalayim) more common than not. As you will see below, the farther west you go, the less likely it is to happen.

Sof Zman Kiddus Levana Around the World

Being that Sof Zman Kiddush Levana is a fixed time globally, and can’t be said before local tzais, the farther west you are, the less of a probability you have of encountering a late Kiddush Levana. Conversely, the farther east you are, the greater your probability is of encountering a late Kiddush Levana. The chart below was inspired by Rabbi Dovid Heber’s example in his sefer Shaarei Zmanim of the rare ability to recite Kiddush Levana on the 17th of the month in Anadyr, Russia. This town is at the far eastern portion of Russia, not far from the International Date Line. The chart shows the percentage of times that Sof Zman Kiddush Levana in Tishrei and the annual average for various places around the world occurs after tzais (calculated as 8.5°) on the 15th, 16th and 17th of the month.

15th – ט״ו16th – ט״ז17th – י״ז
LocationתשריAllתשריAllתשריAll
Anadyr, Russia91%57%46%18%N/A0.2%
Sydney, Australia88%73%42%21%N/AN/A
Yerushalayim75%57%24%8%N/AN/A
Krakow, Poland73%55%22%7%N/AN/A
Lakewood, NJ62%41%8%1.6%N/AN/A
Los Angeles, CA56%35%3%0.7%N/AN/A
Kurima Island, Japan
(Chazon Ish)
39%18%N/AN/AN/AN/A

Molad Calculation Code Sample

The code below shows rudimentary use of the Jewish Calendar functionality and molad retrieval for the historical date of the Bach’s 1629 Sukkos night kiddush levanah.

int month = JewishDate.TISHREI;
int year = 5390;
JewishDate erevSukkos = new JewishDate(year, JewishDate.TISHREI, 14);
JewishDate molad = JewishDate.getMolad(year, month);
Date tchilas3Days = JewishCalendar.getTchilasZmanKidushLevanah3Days(year, month);
Date tchilas7Days = JewishCalendar.getTchilasZmanKidushLevanah7Days(year, month);
Date sofZmanBetweenMoldos = JewishCalendar.getSofZmanKidushLevanahBetweenMoldos(year, month);
Date sofZmanKidushLevanah15Days = JewishCalendar.getSofZmanKidushLevanah15Days(year, month);
TimeZone krakowTZ = TimeZone.getTimeZone("Europe/Warsaw");
SimpleDateFormat sdf = new SimpleDateFormat("MMM dd, yyyy 'at' HH:mm:ss z");
SimpleDateFormat dayFormat = new SimpleDateFormat("MMM dd, yyyy");
sdf.setTimeZone(krakowTZ);
System.out.println("Molad: " + molad + " / " + dayFormat.format(molad.getTime()) + ", day of week: "
		+ molad.getDayOfWeek() + ", Hours: " + molad.getMoladHours() + ", minutes: " + molad.getMoladMinutes()
		+ ", Chalakim: " + molad.getMoladChalakim());
System.out.println("Tchilas Zman Kidush Levanah 3 Days: " + sdf.format(tchilas3Days));
System.out.println("Tchilas Zman Kidush Levanah 7 Days: " + sdf.format(tchilas7Days));
System.out.println("Erev Succos: " + erevSukkos + " / " + dayFormat.format(erevSukkos.getTime()));
System.out.println("Sof Zman KidushLevanah Between Moldos: " + sdf.format(sofZmanBetweenMoldos));
System.out.println("Sof Zman Kidush Levanah 15 Days: " + sdf.format(sofZmanKidushLevanah15Days));

The output in Central European Time (CET) is:

Molad: 29 Elul, 5389 / Sep 17, 1629, day of week: 2, Hours: 15,
        minutes: 46, Chalakim: 5
Tchilas Zman Kidush Levanah 3 Days: Sep 20, 1629 at 14:25:19 CET
Tchilas Zman Kidush Levanah 7 Days: Sep 24, 1629 at 14:25:19 CET
Erev Succos: 14 Tishrei, 5390 / Oct 01, 1629
Sof Zman KidushLevanah Between Moldos: Oct 02, 1629 at 08:47:21 CET
Sof Zman Kidush Levanah 15 Days: Oct 02, 1629 at 14:25:19 CET

Odds & Ends

While Tishrei has much higher odds than most months for a late Sof Zman Kiddush Levana, Shevat is very close to Tishrei, and sometimes exceeds it. Cheshvan and Kislev are the only variable length Jewish months. In a chaser (Deficient / short) year they will both have the short month length of 29 days. The months of Cheshvan and Kislev are followed by Teves that is always 29 days. With the possibility of three 29 day months in a row, and being in the winter with early Tzais times, the month of Shevat is the most likely to have a very late sof zman Kiddush Levana, as pointed out by Rabbi Heber in his Shaarei Zmanim.

The reason that Anadyr only has a 57% chance of being able to recite Kiddush Levana year-round on the 15th VS 73% in Sydney, even though Anadyr is 3% more likely to have Kiddush levana on the 15th of Tishrei, is due to the high latitude of Anadyr (64.7° N) that results in 25.4% of the months not having tzais on the 15th.

The closest case to almost not being able to recite Kiddush levanah on the 15th of Tishrei without dechiyos would be in a location immediately to the east of the Chazon Ish dateline such as Kurima Island on a year when the molad was exactly at sunset in Yerushalayim and the true opposition (full moon) was much earlier than the average opposition, causing the moon to rise after sof zman kidush levana. Calculations show that this would never actually happen on Sukkos though it is likely to occur on Pesach since the molad of Nisan is much more likely to be before Rosh Chodesh.

ZIP Codes and Zmanim – A Practical Approach

99557 ZIP code area (the largest in the USA)
99557 ZIP code area (the largest in the USA)
As mentioned in the ZIP Codes and Zmanim – Use With Care article, using ZIP codes to geolocate your position for zmanim can be problematic when the zip code is large. With large zip codes, zmanim on the west side of the zip code can be quite a bit later than zmanim on the east side of the zip. Recently, Lazer Guttman created an SMS based zmanim service at (914) 409-9394 that provides a warning when zmanim are requested for large zip codes. This approach is probably the best that can be done. I would recommend that any zmanim service that is zip code based (and does not have a map to allow zeroing in to a precise location), use this data to to provide a warning whenever the zip codes is wider than 0.5° of longitude. A degree of longitude spans 4 minutes (regardless of the latitude), so half of a zip code with half of a degree would span 2 minutes (one minute east or west of the center). It should be noted that Canadian postal codes are much smaller than zip codes (usually covering one side of a city block), and most likely do not face the same issue. A spreadsheet listing all zip codes with the maximum longitude and latitude distances (in degrees), was generated by Avraham David Gelbfish from OpenDataDE that is based on US Census data. His Python source code is below.

import json
import csv
​
jsonfile = open("tl_2019_us_zcta510/out2.geojson")
zipcodes = json.load(jsonfile)
​
def getop(geolist, operation, longitude = None, latitude = None):
    if isinstance(geolist[0], list):
        answers = [getop(geo, operation) for geo in geolist]
        for answer in answers:
            lat, lng = answer
            if latitude is None:
                latitude = lat
            if longitude is None:
                longitude = lng
            latitude = operation(latitude, lat)
            longitude = operation(longitude, lng)
        return latitude, longitude
    else:
        return geolist
​
with open("out2.csv", "w") as csvfile:
    zwriter = csv.writer(csvfile)
    zwriter.writerow(["Zip", "Latitude max distance", "Longitude max distance"])
    for zipcode in zipcodes["features"]:
        zip = zipcode["properties"]["ZCTA5CE10"]
        geometry = zipcode["geometry"]["coordinates"]
        maxlat, maxlng = getop(geometry, lambda x, y: x if x > y else y)
        minlat, minlng = getop(geometry, lambda x, y: x if x < y else y)
        dlat = abs(maxlat - minlat)
        dlng = abs(maxlng - minlng)
        zwriter.writerow([zip, dlat, dlng])

The Definition of Chatzos

Arctic Sun
This article was written לז״נ my close friend ר׳ מנחם מענדל בן יחיאל מיכל Menachem Halpert ז״ל. He was never without a smile, was always ready to listen and help, and was a true עניו. Menachem ז״ל was a regular reader of my posts, and in his self-deprecating way always claimed that the contents were over his head, but discussing the subject with him clearly showed a deep understanding. יהא זכרו ברוך.

Possible Definitions of Chatzos

The zmanim of chatzos / חצות are the solar midday and midnight points. The Radak in the ספר השרשים, שרש חצה defines the word chatzos / חצות as splitting the morning from the afternoon (or first half of the night from the second half).
I am aware of three possible definitions of chatzos.

  • When the sun is directly south (or north) of an observer. This is known astronomically as the solar meridian transit. This method is the only one that was measurable (not perfectly) in the time of chazal (and until relatively modern times) using a sundial or the shadow of a perfectly vertical pole with knowledge of the exact point of the cardinal directions. This is the generally accepted definition of solar noon in the astronomical world.
  • When the sun reaches its highest altitude of the day. This is known astronomically as the sun’s upper culmination.
  • Halfway between sunrise and sunset (or variations on this, such as halfway between alos and tzais).

Although these events happen in close proximity to each other, they do not happen at the same time as we will explain in this article. While they generally occur within the span of half of a minute and the difference is therefore halachically almost insignificant, the point of this article is to understand the exact definition of chatzos.

Is Calculating Chatzos As Half of the Day Close Enough?

Currently the KosherJava Zmanim library calculates chatzos as halfway between sunrise and sunset. This was done for simplicity and technical reasons. Rabbi Yehuda Burstein in his זמנים כהלכתם / Zmanim Kehilchasam 8th edition vol. 2 פ״ו ס״ד defines chatzos:

חצות היום הוא הרגע בו השמש נמצאת באמצע הרקיע ממש – בראש גובה קשת מהלכה היומי ממזרח למערב. … חישוב זמן זה הוא פשוט – דהוא במחצית הזמן שבין רגע הנץ המישורי לבין רגע השקיעה המישורית באותו מקום באותו יום.

Chatzos is the moment that the sun is positioned exactly in the center of the sky – at the highest point of its daily east/west path … Calculating this time is simple since it is halfway between the moment of sea-level sunrise and sea-level sunset.

He continues to explain that this half-of-the-day chatzos is not exactly accurate since the time from sunrise to astronomical midday is not equal to the time from astronomical midday to sunset. The difference is minor, and for this reason, most zmanim calendars do not bother calculating the astronomical chatzos.
In an effort to show the actual difference between meridian transit and half of the day chatzos, I graphed the difference between the two chatzos calculations at various latitudes.

Meridian Transit Versus Half of the Day
A chart showing the difference in seconds between meridian transit chatzos and half of the day at different latitudes.

This discrepancy is caused by changes in the length of the day. There are two factors that cause the length of the day to change, the EoT (we covered the equation of time in detail in the earlier FAQ: Chatzos Hayom Versus Chatzos Halayla article) and the change in the amount of daylight time from day-to-day. At the equator, the only change in the length of the day is the EoT, while as you move north of the equator (all examples in this article focus on the spring in the northern hemisphere, though you can mirror it to the other times of the year and southern hemisphere), the length of the day is impacted by the sun’s apparent lengthening path through the day as well (the sun sets farther north), and is above the horizon for more of its day arc. As we move away from the equinox and the day lengthens, the second half of the day is longer than the first half of the day, pushing the halfway point between sunrise and sunset past solar midday. However, even in Gateshead, England (55° N), the difference between the two calculations ranges from -47 to + 36 seconds, not a significant difference. As you get farther north into the Arctic Circle, things start to change more significantly, and that leads to a practical reason to use astronomical chatzos. In the Arctic Circle when the sun does not rise / set, chatzos can’t be calculated as half of the day. However calculating chatzos as the meridian transit can be done without issue because the meridian transit remains the same anywhere along a line of longitude (the algorithm does not factor in the latitude at all). While the impact of the accurate time of chatzos is not something that usually impacts people, in the Arctic Circle with periods of time where there is no day or night on a daily basis, chatzos may be used to define the boundaries of day and night. See the ביאור הגר״א או״ח ס׳ רס״א ב׳ where in the northern regions (including Vilna) chatzos is alos hashachar. In a future post I will discuss changes to the KosherJava Zmanim API to allow calculation of astronomical (local meridian transit) chatzos, and possibly more on the halachic impact of chatzos in the Arctic Circle.

Sun–Meridian Transit Time Versus The Sun’s highest Point (Transit Versus Culmination)

It is interesting to note that the sun is not exactly at its highest point (culmination) at its local meridian transit (when it is at an azimuth of 180° – directly south or 0° – directly north, depending on your location) on most days of the year. This was mentioned over 120 years ago in a paper by D.A. Pio published in the Monthly Notices of the Royal Astronomical Society, Vol. 59, May 1899; p. 513:

The Sun, the Moon, and all the planets culminate out of the meridian.

It is at its maximum difference near the equinoxes when the day arc is changing significantly from day to day. For example at Yerushalayim’s latitude of 31.778°, the sun reaches its highest point on February 20th 11.14 seconds after crossing the meridian. At 60° the difference on March 4th increases to 27.13 seconds.

Culmination Versus Transit
A chart showing how many seconds the culmination happens after the sun’s transit. Courtesy of J. Giesen.
While this seems like a large gap, the actual difference in the sun’s altitude between the transit and the culmination at latitude 31.778° is minimal, about 0.00002° (0.0826 arcseconds), something that can’t be measured without an observatory sized telescope. At 60° latitude, the altitude difference increases to 0.00006° (0.2148 arcseconds), again something almost imperceptible. In Longyearbyen, Norway, latitude 78.22°, the difference between transit and culmination peaks at 73 seconds on March 13. The difference increases significantly farther north. These calculations were done with the help of J. Giesen whose Transit and Culmination article discusses the phenomena in detail. The effect can also be seen using Stellarium.

The cause of the time difference between the two “flavors” of astronomical midday is due to the sun’s increasing declination that causes the sun’s altitude to increase faster than its movement along the day arc moves it down. The farther north you go, the flatter the day arc appears, meaning that it travels much farther horizontally for a small change in altitude. Around midday when the arc is flattest, the change in declination is increasing the altitude immediately after the meridian transit more than the drop caused by the day arc.
At this point you may wonder why chatzos is called chatzos if we define it as one of the astronomical midday definitions that is not exactly half of the day (a case can be made that neither is “half of the day” chatzos, since at the point of splitting it, you have not reached the lengthening full day…). The Radak’s definition of chatzos / chatzi quoted above concludes with:

… כלם ענין חלוקה, בין שיהיו החלקים בשוה או בלא שוה.

… they are all under the category of splitting, whether they are of equal parts or not.

The Radak on Shmuel II, 19:41 restates that chatzi is not always half as is clear from the “half” that is referred to there:

… ולשון חצי ומחצה ומחצית אינו אלא חלוק החלק מהכלל פעמים הוא חלק כחלק בשוה וזהו ברוב ופעמים אינו בשוה.

… the language of half (in its various forms) are only splits of the whole, sometimes it is an equal division, and that is the case most of the time, but sometimes it is not equal.

Note that this concept of chatzi not being half of the day would also seem to counter objections that some have about calculating chatzos from alos to tzais Geonim as an uneven split (regardless, it is very hard to fit such an uneven chatzos into any of the rishonim or achronim we mentioned earlier), though Rabbi Mordechai Kuber pointed out that it is half of the halachic day timewise, so it still fits the definition of chatzos.

Halachic Definition of Chatzos

Rashi in פסחים נח. ד״ה בין הערבים defines the afternoon (starting immediately after the 6th hour or chatzos) as:

משש שעות ולמעלה שהצל נוטה קרינן בין הערבים

From six hours and on, when the shadow leans [to the east], it is called the afternoon.

Rashi has the same definition in Brachos ט. ד״ה שם תזבח את הפסח and כו: ד״ה מנחה גדולה and Shabbos ט: ד״ה מנחה גדולה. Since Rashi defines after chatzos as when the shadows begin leaning, it would indicate that at chatzos shadows do not lean east or west, but point directly north. This seems to be a clear indication that chatzos is defined as when the sun is transiting its local meridian and is directly south at an azimuth of 180° (or directly north or an azimuth of 0° for locations south of the sun, or directly overhead on certain days for locations between the Tropic of Cancer and the Tropic of Capricorn), when there are no east or west shadows. The Tosafos Yom Tov in פסחים פ״ה מ״א expands and clarifies this:

כתב הר״ב דזמן שחיטת תמיד מכי ינטו צללי ערב וכו׳ ואין צל נוטה אלא צל כל אדם תחתיו. רוצה לומר ואין לו נטייה לא למזרח ולא למערב אבל שיהיה תחתיו ממש זהו דבר שהחוש מכחישו בכל אלו הארצות ואף בארץ ישראל. לפי שאין צל כל אדם תחתיו אף באמצע היום. אלא להשוכנים בין עגול סרטן לעגול גדי. ואחת בשנה *) תבא השמש נוכח הראש לקצתם קצתם איש איש ביומו לפי מספר עגולי השמש שתעשה מראשית השנה עד אחרית השנה אבל לשוכנים חוצה לעגולים האמורים לעולם השמש דרומית או צפונית להם ועושה צל בהכרח הנוטה לצפון או לדרום אפי׳ בצהרים והנה ארץ ישראל ידענו כי היא כמו שמנה מעלות לצפון עגול סרטן:

כתב המגיה *) הלשון אחת בשנה אינה מדויקת, כי רק לאלה השוכנים במקום קצות עגולי ההפך סרטן וגדי הרחוקות כל אחת מן קו המשוה כ״ג מעלות וחצי אם לצפון או לדרום רק לאלה תבא השמש נוכח הראש אחת בשנה; לשכנים בקצה גבול עגול ההפך סרטן יהיה זה ביום תקופת תמוז ולשוכנים בקצה גבול עגול ההפך גדי, ביום תקופת טבת. אך לאלה השוכנים בין שתי קצות העגולים האלה תבא השמש נכחם שתים בשנה:

The Raav wrote “The time of the Korban Tamid is from when the afternoon shadows lean etc. and there is no shadow, rather everyone’s shadow is directly underneath him.” Meaning, that the shadow does not project to the east or west, rather that it is directly under him. However, this is something that is not the case in any of our lands, including Eretz Yisrael. This is because a person’s shadow is not under him even in the middle of the day besides for those residing between the Tropic of Cancer and the Tropic of Capricorn … for those residing outside of the Tropics, the sun is always north or south of them [at solar noon] and casts a shadow to the north or south even in the afternoon. We know that Eretz Yisrael is about 8° north of the Tropic of Cancer.

Unlike the Tosafos Yom Tov, Rabbi Avraham Bar Chiyya Hanasi רבי אברהם בר חייא הנשיא in the Sefer Ha’ibur ספר העבור, מאמר אּ׳ שער ט׳ defines chatzos as:

והרגע השני הוא עת היות בחצי השמים מפני שהיא מגעת במקום ההוא אל סוף גבהה ועליותה על המקום אשר זרחה עליו, ומכאן ואילך היא נוטה לערוב

The second moment is the time that the sun is in the center of the sky since at that point it reaches its highest point and its climb from its rising point, and from here forward it begins to dip to the evening.

This definition refers to the sun’s highest point / culmination. Though it does mention the “center of the sky” which can be understood to mean meridian transit, from the ראב״ח’s general context it appears clear that he is referring to the culmination.

I would like to express my thanks to my son Shai for his insights, ideas and calculations, Pinny Markowitz for his debugging work in contrasting the old NOAA implementation of solar noon calculations versus the new implementation, and to members of the Frum software developers #zmanim Slack channel for reviewing and making suggestions that improved this article.

Parsha Code Restored to the KosherJava Zmanim Calendar API

Sunrise CalendarIn the Parsha Code Removed from KosherJava Zmanim Calendar API article posted two years ago, I documented the removal of the parsha code from the KosherJava Zmanim API due to licensing issues. I would like to announce that thanks to Yechiel Paricher, the zmanim library now supports a clean LGPL implementation. Yechiel’s Jan 17, 2019 pull request that was a port of his C libzmanim code, was finally merged on August 22nd, and over the past day, the old formatting code for parshiyos was restored after being changed to work with the new code. The new code not only restores the old functionality, but adds support for the special parshiyos of Shekalim, Zachor, Parah and Hachodesh. It also added support for Shabbos Mevorchim and Machar Chodesh.