From c167e5631e8b32d81245e9f1cf4af37c2dc0ac6e Mon Sep 17 00:00:00 2001 From: Ace Date: Mon, 27 Aug 2018 00:21:30 +0200 Subject: [PATCH] Add files via upload --- Calendar/cal2-4.py | 226 ++++++++++++++++++ Calendar/calibration.py | 35 +++ Calendar/days/0.bmp | Bin 0 -> 5614 bytes Calendar/days/1.bmp | Bin 0 -> 4750 bytes Calendar/days/10.bmp | Bin 0 -> 4750 bytes Calendar/days/11.bmp | Bin 0 -> 4750 bytes Calendar/days/12.bmp | Bin 0 -> 4750 bytes Calendar/days/13.bmp | Bin 0 -> 4750 bytes Calendar/days/14.bmp | Bin 0 -> 4750 bytes Calendar/days/15.bmp | Bin 0 -> 4750 bytes Calendar/days/16.bmp | Bin 0 -> 4750 bytes Calendar/days/17.bmp | Bin 0 -> 4750 bytes Calendar/days/18.bmp | Bin 0 -> 4750 bytes Calendar/days/19.bmp | Bin 0 -> 4750 bytes Calendar/days/2.bmp | Bin 0 -> 4750 bytes Calendar/days/20.bmp | Bin 0 -> 4750 bytes Calendar/days/21.bmp | Bin 0 -> 4750 bytes Calendar/days/22.bmp | Bin 0 -> 4750 bytes Calendar/days/23.bmp | Bin 0 -> 4750 bytes Calendar/days/24.bmp | Bin 0 -> 4750 bytes Calendar/days/25.bmp | Bin 0 -> 4750 bytes Calendar/days/26.bmp | Bin 0 -> 4750 bytes Calendar/days/27.bmp | Bin 0 -> 4750 bytes Calendar/days/28.bmp | Bin 0 -> 4750 bytes Calendar/days/29.bmp | Bin 0 -> 4750 bytes Calendar/days/3.bmp | Bin 0 -> 4750 bytes Calendar/days/30.bmp | Bin 0 -> 4750 bytes Calendar/days/31.bmp | Bin 0 -> 4750 bytes Calendar/days/4.bmp | Bin 0 -> 4750 bytes Calendar/days/5.bmp | Bin 0 -> 4750 bytes Calendar/days/6.bmp | Bin 0 -> 4750 bytes Calendar/days/7.bmp | Bin 0 -> 4750 bytes Calendar/days/8.bmp | Bin 0 -> 4750 bytes Calendar/days/9.bmp | Bin 0 -> 4750 bytes Calendar/epd7in5b.py | 209 ++++++++++++++++ Calendar/epdif.py | 64 +++++ Calendar/events.py | 117 +++++++++ Calendar/license | 85 +++++++ Calendar/months/April.bmp | Bin 0 -> 53302 bytes Calendar/months/August.bmp | Bin 0 -> 53302 bytes Calendar/months/December.bmp | Bin 0 -> 53302 bytes Calendar/months/February (1).bmp | Bin 0 -> 53302 bytes Calendar/months/Janruary.bmp | Bin 0 -> 53302 bytes Calendar/months/July.bmp | Bin 0 -> 53302 bytes Calendar/months/June.bmp | Bin 0 -> 53302 bytes Calendar/months/March.bmp | Bin 0 -> 53302 bytes Calendar/months/May.bmp | Bin 0 -> 53302 bytes Calendar/months/November.bmp | Bin 0 -> 53302 bytes Calendar/months/October.bmp | Bin 0 -> 53302 bytes Calendar/months/September.bmp | Bin 0 -> 53302 bytes Calendar/months/february.bmp | Bin 0 -> 246838 bytes Calendar/months/march (1).bmp | Bin 0 -> 246906 bytes Calendar/other/bar.bmp | Bin 0 -> 5686 bytes Calendar/other/event.bmp | Bin 0 -> 4750 bytes Calendar/other/hum-icon.bmp | Bin 0 -> 1718 bytes Calendar/other/temp-icon.bmp | Bin 0 -> 1558 bytes Calendar/other/today.bmp | Bin 0 -> 4750 bytes Calendar/other/week-mon.bmp | Bin 0 -> 13366 bytes Calendar/other/week-sun.bmp | Bin 0 -> 13366 bytes Calendar/other/weekday.bmp | Bin 0 -> 2590 bytes Calendar/weather-icons/wi-cloudy-windy.bmp | Bin 0 -> 6118 bytes Calendar/weather-icons/wi-cloudy.bmp | Bin 0 -> 6118 bytes Calendar/weather-icons/wi-day-cloudy.bmp | Bin 0 -> 6118 bytes Calendar/weather-icons/wi-day-sunny.bmp | Bin 0 -> 6118 bytes Calendar/weather-icons/wi-fog.bmp | Bin 0 -> 6118 bytes .../wi-night-alt-cloudy-windy.bmp | Bin 0 -> 6118 bytes Calendar/weather-icons/wi-night-clear.bmp | Bin 0 -> 6118 bytes Calendar/weather-icons/wi-night-cloudy.bmp | Bin 0 -> 6118 bytes Calendar/weather-icons/wi-night-rain.bmp | Bin 0 -> 6118 bytes Calendar/weather-icons/wi-night-showers.bmp | Bin 0 -> 6118 bytes Calendar/weather-icons/wi-night-snow.bmp | Bin 0 -> 6118 bytes .../weather-icons/wi-night-thunderstorm.bmp | Bin 0 -> 6118 bytes Calendar/weather-icons/wi-rain.bmp | Bin 0 -> 6118 bytes Calendar/weather-icons/wi-showers.bmp | Bin 0 -> 6118 bytes Calendar/weather-icons/wi-snow.bmp | Bin 0 -> 6118 bytes Calendar/weather-icons/wi-thunderstorm.bmp | Bin 0 -> 6118 bytes 76 files changed, 736 insertions(+) create mode 100644 Calendar/cal2-4.py create mode 100644 Calendar/calibration.py create mode 100644 Calendar/days/0.bmp create mode 100644 Calendar/days/1.bmp create mode 100644 Calendar/days/10.bmp create mode 100644 Calendar/days/11.bmp create mode 100644 Calendar/days/12.bmp create mode 100644 Calendar/days/13.bmp create mode 100644 Calendar/days/14.bmp create mode 100644 Calendar/days/15.bmp create mode 100644 Calendar/days/16.bmp create mode 100644 Calendar/days/17.bmp create mode 100644 Calendar/days/18.bmp create mode 100644 Calendar/days/19.bmp create mode 100644 Calendar/days/2.bmp create mode 100644 Calendar/days/20.bmp create mode 100644 Calendar/days/21.bmp create mode 100644 Calendar/days/22.bmp create mode 100644 Calendar/days/23.bmp create mode 100644 Calendar/days/24.bmp create mode 100644 Calendar/days/25.bmp create mode 100644 Calendar/days/26.bmp create mode 100644 Calendar/days/27.bmp create mode 100644 Calendar/days/28.bmp create mode 100644 Calendar/days/29.bmp create mode 100644 Calendar/days/3.bmp create mode 100644 Calendar/days/30.bmp create mode 100644 Calendar/days/31.bmp create mode 100644 Calendar/days/4.bmp create mode 100644 Calendar/days/5.bmp create mode 100644 Calendar/days/6.bmp create mode 100644 Calendar/days/7.bmp create mode 100644 Calendar/days/8.bmp create mode 100644 Calendar/days/9.bmp create mode 100644 Calendar/epd7in5b.py create mode 100644 Calendar/epdif.py create mode 100644 Calendar/events.py create mode 100644 Calendar/license create mode 100644 Calendar/months/April.bmp create mode 100644 Calendar/months/August.bmp create mode 100644 Calendar/months/December.bmp create mode 100644 Calendar/months/February (1).bmp create mode 100644 Calendar/months/Janruary.bmp create mode 100644 Calendar/months/July.bmp create mode 100644 Calendar/months/June.bmp create mode 100644 Calendar/months/March.bmp create mode 100644 Calendar/months/May.bmp create mode 100644 Calendar/months/November.bmp create mode 100644 Calendar/months/October.bmp create mode 100644 Calendar/months/September.bmp create mode 100644 Calendar/months/february.bmp create mode 100644 Calendar/months/march (1).bmp create mode 100644 Calendar/other/bar.bmp create mode 100644 Calendar/other/event.bmp create mode 100644 Calendar/other/hum-icon.bmp create mode 100644 Calendar/other/temp-icon.bmp create mode 100644 Calendar/other/today.bmp create mode 100644 Calendar/other/week-mon.bmp create mode 100644 Calendar/other/week-sun.bmp create mode 100644 Calendar/other/weekday.bmp create mode 100644 Calendar/weather-icons/wi-cloudy-windy.bmp create mode 100644 Calendar/weather-icons/wi-cloudy.bmp create mode 100644 Calendar/weather-icons/wi-day-cloudy.bmp create mode 100644 Calendar/weather-icons/wi-day-sunny.bmp create mode 100644 Calendar/weather-icons/wi-fog.bmp create mode 100644 Calendar/weather-icons/wi-night-alt-cloudy-windy.bmp create mode 100644 Calendar/weather-icons/wi-night-clear.bmp create mode 100644 Calendar/weather-icons/wi-night-cloudy.bmp create mode 100644 Calendar/weather-icons/wi-night-rain.bmp create mode 100644 Calendar/weather-icons/wi-night-showers.bmp create mode 100644 Calendar/weather-icons/wi-night-snow.bmp create mode 100644 Calendar/weather-icons/wi-night-thunderstorm.bmp create mode 100644 Calendar/weather-icons/wi-rain.bmp create mode 100644 Calendar/weather-icons/wi-showers.bmp create mode 100644 Calendar/weather-icons/wi-snow.bmp create mode 100644 Calendar/weather-icons/wi-thunderstorm.bmp diff --git a/Calendar/cal2-4.py b/Calendar/cal2-4.py new file mode 100644 index 0000000..3803587 --- /dev/null +++ b/Calendar/cal2-4.py @@ -0,0 +1,226 @@ +""" +Copyright by Ace-Laboratory +""" +import epd7in5b #epd-control +from PIL import Image, ImageDraw, ImageFont, ImageOps #image operations +import calendar, pyowm #calendar and openweathermap wrapper +from ics import Calendar, Event #icalendar parser +from datetime import datetime #time operations +from time import sleep #more time operations +##import requests #need to try changing from urllib to requests +from urllib.request import urlopen #allows url to be 'read' +import arrow #icalendar parser compatible dates +from calibration import calibration + +epd = epd7in5b.EPD() #required +epd.init() #required +""" +Attention: Yahoo Calendar urls (for ics) may not work if there is an issue +with their servers. If you are expierencing issues, you might want to use google +calendar. +""" + +#google#url = "https://calendar.google.com/calendar/ical/5r4fb74fncg569g17tqc941vco%40group.calendar.google.com/private-5e7bc80e93055e1fbc41ec358b2babab/basic.ics" +#yahoo calendar might not be so reliable in the long term. +url = "https://calendar.yahoo.com/saadnaseer63/9607e906db373c21566df3824b05e127/ycal.ics?id=1246" +calendar.setfirstweekday(calendar.MONDAY) #mon or sun + +c = Calendar(urlopen(url).read().decode('UTF-8')) #was 'iso-8859-1' +##c = Calendar(requests.get(url)urlopen(url).read().decode('iso-8859-1')) +e = Event() +open = Image.open +EPD_WIDTH = 640 +EPD_HEIGHT = 384 +font = ImageFont.truetype('/usr/share/fonts/truetype/Assistant/Assistant-Bold.otf', 18) + +path = '/home/pi/Calendar/' +wpath = path+'weather-icons/' +mpath = path+'months/' +dpath = path+'days/' + +weekday = open(path+'/other/weekday.bmp') +eventicon = open(path+'other/event.bmp') +dateicon = open(path+'other/today.bmp') +tempicon = open(path+'other/temp-icon.bmp') +humicon = open(path+'other/hum-icon.bmp') +weekmon = open(path+'other/week-mon.bmp') +weeksun = open(path+'other/week-sun.bmp') +bar = open(path+'other/bar.bmp') +#qr = open(path+'other/qr.bmp') #dev + +wiconplace = (570, 219) +tempplace = (605, 310) +humplace = (572, 308) +monthplace = (443, 0) +weekplace = (415,0) +barplace = (555, 0) + +weekdaysmon = {'Mon': (416,3), 'Tue': (416,57), 'Wed': (416,111), 'Thu': (416,165), 'Fri': (416,219), 'Sat': (416,273), 'Sun':(416,327)} +weekdayssun = {'Sun': (416,3), 'Mon': (416,57), 'Tue': (416,111), 'Wed': (416,165), 'Thu': (416,219), 'Fri': (416,273), 'Sat':(416,327)} + +positions = {'a1': (351, 3), 'a2': (351, 57), 'a3': (351, 111), 'a4': (351, 165), 'a5': (351, 219), 'a6': (351, 273), 'a7': (351, 327), +'b1': (284, 3), 'b2': (284, 57), 'b3': (284, 111), 'b4': (284, 165), 'b5': (284, 219), 'b6': (284, 273), 'b7': (284, 327), +'c1': (217, 3), 'c2': (217, 57), 'c3': (217, 111), 'c4': (217, 165), 'c5': (217, 219), 'c6': (217, 273), 'c7': (217, 327), +'d1': (150, 3), 'd2': (150, 57), 'd3': (150, 111), 'd4': (150, 165), 'd5': (150, 219), 'd6': (150, 273), 'd7': (150, 327), +'e1': (83, 3), 'e2': (83, 57), 'e3': (83, 111), 'e4': (83, 165), 'e5': (83, 219), 'e6': (83, 273), 'e7': (83, 327), +'f1': (16, 3), 'f2': (16, 57), 'f3': (16, 111), 'f4': (16, 165), 'f5': (16, 219), 'f6': (16, 273), 'f7': (16, 327)} + +weathericons = {'01d': 'wi-day-sunny', '02d':'wi-day-cloudy', '03d': 'wi-cloudy', +'04d': 'wi-cloudy-windy', '09d': 'wi-showers', '10d':'wi-rain', +'11d':'wi-thunderstorm', '13d':'wi-snow', '50d': 'wi-fog', +'01n': 'wi-night-clear', '02n':'wi-night-cloudy', +'03n': 'wi-night-cloudy', '04n': 'wi-night-cloudy', +'09n': 'wi-night-showers', '10n':'wi-night-rain', +'11n':'wi-night-thunderstorm', '13n':'wi-night-snow', +'50n': 'wi-night-alt-cloudy-windy'} + +def main(): + while True: + + time = datetime.now() + hour = int(time.strftime("%-H")) + + for i in range(1): + if hour is 0: + calibration() + if hour is 12: + calibration() + if hour is 18: #change to 18 + calibration() + + image = Image.new('L', (EPD_WIDTH, EPD_HEIGHT), 255) + draw = (ImageDraw.Draw(image)).bitmap + + #background image + draw(monthplace, Image.open(mpath+str(time.strftime("%B"))+'.bmp')) + + if calendar.firstweekday() == 0: + draw(weekplace, weekmon) + + if calendar.firstweekday() == 6: + draw(weekplace, weeksun) + + draw(barplace, bar) + + cal = calendar.monthcalendar(time.year, time.month) + + for i in cal[0]: + draw(positions['a'+str(cal[0].index(i)+1)] ,open(dpath+str(i)+'.bmp')) + for i in cal[1]: + draw(positions['b'+str(cal[1].index(i)+1)] ,open(dpath+str(i)+'.bmp')) + for i in cal[2]: + draw(positions['c'+str(cal[2].index(i)+1)] ,open(dpath+str(i)+'.bmp')) + for i in cal[3]: + draw(positions['d'+str(cal[3].index(i)+1)] ,open(dpath+str(i)+'.bmp')) + for i in cal[4]: + draw(positions['e'+str(cal[4].index(i)+1)] ,open(dpath+str(i)+'.bmp')) + try: + for i in cal[5]: + draw(positions['f'+str(cal[5].index(i)+1)] ,Image.open(dpath+str(i)+'.bmp')) + except IndexError: + pass + + # openweathermap api + owm = pyowm.OWM('57c07b8f2ae09e348d32317f1bfe3f52') + observation = owm.weather_at_place('Stuttgart, DE') + weather = observation.get_weather() + weathericon = weather.get_weather_icon_name() + Temperature = str(int(weather.get_temperature(unit='celsius')['temp'])) + Humidity = str(weather.get_humidity()) + #print('weather icon:', weathericon) -->debug + #print('Temperature:', Temperature + '°C') -->debug + #print('Humidity:', Humidity+' %') -->debug + + #weather icon handler + draw(wiconplace, open(wpath+weathericons[weathericon]+'.bmp')) + + # date writing function + space1=Image.new('1', (115,25), color=255) + measure1= ImageDraw.Draw(space1) + date = ImageDraw.Draw(space1) + date.text((2, 3), (time.strftime('%a %-d %b %y')), font=font, fill=0) + rotate1 = space1.rotate(270, expand=1) + image.paste(rotate1, (595,20)) + + # temperature writing function + space2 = Image.new('1', (50,35), color=255) + measure2= ImageDraw.Draw(space2) + temperature = ImageDraw.Draw(space2) + temperature.text((2, 8), (Temperature + " °C"), fill=0 ,font=font) + rotate2 = space2.rotate(270, expand=1) + image.paste(rotate2, (605,334)) + + # humidity writing function + space3 = Image.new('1', (50,35), color=255) + measure3= ImageDraw.Draw(space3) + humidity = ImageDraw.Draw(space3) + humidity.text((4, 8), (Humidity +'%'), fill=0 ,font=font) + rotate3 = space3.rotate(270, expand=1) + image.paste(rotate3, (570,334)) + + # weekday handler + if calendar.firstweekday() == 0: + draw(weekdaysmon[(time.strftime("%a"))], weekday) + + if calendar.firstweekday() == 6: + draw(weekdayssun[(time.strftime("%a"))], weekday) + + print('It is currently:',time.strftime('%a %-d %b %y')) #--debug + print('The current time is:', time.strftime('%H:%M')) #--debug + + elist = [] + for events in c.events: + if str(time.year) in str((events.begin).format('YYYY')): + if str(time.month) in str((events.begin).format('M')): + elist.append(int((events.begin).format('D'))) + + print('In this month, you have',len(elist),'Events') # -->debug + #cal = calendar.monthcalendar(time.year, time.month) + + for x in elist: + if x in cal[0]: + draw(positions['a'+str(cal[0].index(x)+1)] ,eventicon) + if x in cal[1]: + draw(positions['b'+str(cal[1].index(x)+1)] ,eventicon) + if x in cal[2]: + draw(positions['c'+str(cal[2].index(x)+1)] ,eventicon) + if x in cal[3]: + draw(positions['d'+str(cal[3].index(x)+1)] ,eventicon) + if x in cal[4]: + draw(positions['e'+str(cal[4].index(x)+1)] ,eventicon) + try: + if x in cal[5]: + draw(positions['f'+str(cal[5].index(x)+1)] ,eventicon) + except IndexError: + pass + + today = time.day + if today in cal[0]: + draw(positions['a'+str(cal[0].index(today)+1)] ,dateicon) + if today in cal[1]: + draw(positions['b'+str(cal[1].index(today)+1)] ,dateicon) + if today in cal[2]: + draw(positions['c'+str(cal[2].index(today)+1)] ,dateicon) + if today in cal[3]: + draw(positions['d'+str(cal[3].index(today)+1)] ,dateicon) + if today in cal[4]: + draw(positions['e'+str(cal[4].index(today)+1)] ,dateicon) + try: + if today in cal[5]: + draw(positions['f'+str(cal[5].index(today)+1)] ,dateicon) + except IndexError: + pass + + draw(tempplace, tempicon) + draw(humplace, humicon) + epd.display_frame(epd.get_frame_buffer(image)) + + # delete the list so deleted events can be removed from the list + del elist[:] + + for i in range(1): + nexthour = ((60 - int(time.strftime("%-M")))*60) - (int(time.strftime("%-S"))) + sleep(nexthour) + +if __name__ == '__main__': + main() diff --git a/Calendar/calibration.py b/Calendar/calibration.py new file mode 100644 index 0000000..bc4382b --- /dev/null +++ b/Calendar/calibration.py @@ -0,0 +1,35 @@ +import epd7in5b +from PIL import Image, ImageDraw, ImageFont + +EPD_WIDTH = 640 +EPD_HEIGHT = 384 + +def calibration(): + for i in range(2): + epd = epd7in5b.EPD() + epd.init() + black = Image.new('L', (EPD_WIDTH, EPD_HEIGHT), 0) + print('calibrating black...') + ImageDraw.Draw(black) + epd.display_frame(epd.get_frame_buffer(black)) + #print(epd.get_frame_buffer(black)) + red = Image.new('L', (EPD_WIDTH, EPD_HEIGHT), 127) + ImageDraw.Draw(red) + print('calibrating red...') + epd.display_frame(epd.get_frame_buffer(red)) + white = Image.new('L', (EPD_WIDTH, EPD_HEIGHT), 255) + ImageDraw.Draw(white) + print('calibrating white...') + epd.display_frame(epd.get_frame_buffer(white)) + + print('Cycle complete!') + +def main(): + epd = epd7in5b.EPD() + epd.init() + + for i in range(1): + calibration() + +if __name__ == '__main__': + main() diff --git a/Calendar/days/0.bmp b/Calendar/days/0.bmp new file mode 100644 index 0000000000000000000000000000000000000000..4f5922639da7b47259fbbf8e8269d0266eb6786e GIT binary patch literal 5614 zcmeIyRhJh;7{K8_4TAKNih!iju^1?w(jgtvji{)Ugmi-_2ugP;NGvJ35=x_VOR2zG zs3<5tEMJ0)dCqy~%z5YTcQF-f$3;crMJJ9#3b-{g(I!D8dHg;mT_h5l`oUP#VAe*N>Yl_L{o-mc$VjQp0d2ai}a>$Rs8+g{i#9G~VX} zrZa;NnaM0Z;$vnrhq=sSJ_}gLA{MiRr7UAPD_F@YR`Us;vWB&M#yZxsfsMqliOp~6951J literal 0 HcmV?d00001 diff --git a/Calendar/days/1.bmp b/Calendar/days/1.bmp new file mode 100644 index 0000000000000000000000000000000000000000..545dca2b74e5139aa6a25a5c539d38a9de61a50b GIT binary patch literal 4750 zcmeIzceKxC90%~LVuBZ@|kwP-EN!fdpt;i~S z7TM(G^3U}b&i%u2zOQqh@A*E@_xpU#^L?N1d7hGyQOQElBEmzVtnNx_5n5O%Ui5g? zB%#ofo6X?$2hqZKfCmXD4i6ERc*G|G2}wj^l8}^#d4yynCj}`<#iOJq4QWY7dNPoa zOgu(r9_I<3BnwaRG+D_;c5;xDXUIivo+S^@k(YctPXzfXKtT#om?9LV7%xzq5|pGA zrFoGuyu{1ALRns=9Fe?6c`8tmN>t``-k=I^Qk7~{rv^2tMQ!R(mwMEv0S#%yTQsH# zO=(7R-sT-z(2`cPrVVXrM|(QZk#~8IPIRUVUFk-5-sb~8qz66e#Ygm}4}IxJe?Dda zQ4Hi01~HgV`HasQ!cd0s1;ZJ^mwd(7jARs}8N)Y>H!(R6B7k{gWKhdIJgj&Yn5oa7Y$@Gqx1!+)IR9Ot>fMJ{of zD_rG&ZtMWTHAo;xAV?rc;66_vHa7hGtH$+1Forw+17gg+(TRl`2k)Xrj44(UqkmhS gTjs=0jXVF8&@Jn@t+fX)1qlQR1PKHQ+ye<*1A|mkx&QzG literal 0 HcmV?d00001 diff --git a/Calendar/days/10.bmp b/Calendar/days/10.bmp new file mode 100644 index 0000000000000000000000000000000000000000..0ff9d18c6b6ca2b781b8961e6846dcc645f83349 GIT binary patch literal 4750 zcmeIyd6Z3c00;1A32oLS*(DT3(PYVzk&4EW>=7zSNm(k{m+VcewS_{IC1q`)7)wQ3 zNShXImeMkmz52|XdFRaIpEqx&KREAm&b{yc?z_M5{k`wI=Qc=4EEoui%NYn%bQEuk zvt6r#VJ8aN>Q3Jl;r}-aUtcYKt(R%Vk%LYOSqIOROK=*ryA9{f;g_E1~sWgZLXpY zb*V>vuBHL;G~^l@aV^(zJ&kF?4J6Q%W;CY-H`0=uXhmz<(3WBb#&=T3TX7kAT>d+5cz+(&Qv(3gJP&jUP2e;#500~y3%hA@<23}*x*d6-d* zW(;E)$9N|22#Gw(V?53iJjqi`WD=8^!c?a5G|%uX&oP}DJkJZvWEQh|kvYueC0=G8 z^I5<`USSch@*0a-!cvy8oE5yz8@$O|tYj5$^A4+7LlSFQ$9gvKF7NR^8`;DMZ018g z;$uEx3tRb=ZG6V(e8HD|#df~t8@}Z`cJMtv@FPF*GdtPEZuamCzp|I#_? zpTGE<103WKhdIJgj`0uwlKKXS?PCqZ8i+Lz-avBrFoUDyl-Em|3{DMQ9-5wsl;G6V zywnASvLpW#k-mwP#KM48;8L9 literal 0 HcmV?d00001 diff --git a/Calendar/days/11.bmp b/Calendar/days/11.bmp new file mode 100644 index 0000000000000000000000000000000000000000..ab621aa0005eabcf288942c2f73da023dec704c7 GIT binary patch literal 4750 zcmeIyd6bV;90%avXfT!rV{bz$V_%yPg&|sG$ugF*uO(TNgshdNP{~rEkX_leQ1)F5 zZ3=}@no_h-(_`|7G5^fWnWH)SJ?Gr_+{(@uETlfk?e*ElLXs zgvHOtga-oa&Nq|iZo~^A9aj)adNPoaFfx&uEM(-nU!lT;?&K1uSF{ zi+Pi`Si(}4v78mGWEHDv7QZVWD}d&!dAAiogM6C7rXh8kNB8R z*u!2vhYG0fN_H0>K1=38Y#Asd2ERof_v3$_vFNJEsfZKHvY3Y9#oqr6d?9 zX>idyX{APN3bvA@{a%WPF3L1TpS-+kB>H2Lok^k!DF`TaY9v^CTKQk%;*x)i1yT@U Qg3Sj9!32T{{0|cN2Z=^Ot-elz#(J?Eb9|GsYl_oI@GTr7Y)hKIJG+1u9aB%3Q#OTtpSBlEB4WLN%&$DVI@$n$)5; zb*M`{F6RpB(}0FF;z}CRgr+p(Dz2tE*U*A%X~}i8qBYmkh8t+hjkKdZ9q33WI@5)l zxS3nHmD}h_H@eeJZ-ZiqS7!br6pM{sg&K0wvpK$S}GbUN}@q2McEqk z7^SW7c;Dl>&+ECTKkmKqPhR)^dYyBA-*bQ8&pGFJ?>)`ijwl<1vI+%39itYuEL(w~ zXn4M3sUVn@yEz&AAXI>Y>_H(4Q-nP!%3c(sI3*}aDN3_9WhhHI_Mto#s7NI$Q-yu0 z%6?R%IyKmz1E@(YYI7h5QHQ!5%pugHJ`FgOh8)J>9Kn$^B8#IqnqxSY<2arZXiO8D z(v0S`;6zTMB`4F0Q)o>aPNgmFIE~XegZ7-sS)9!|bf6=h=*+pC$N6;O0xqO07jZF{ za4DD3jmzoI74)Ddz35FJuH-7N<{GZ0FW1qJ>$!m&>Ca8v%m4;5h`|hDD8smgTe*$f zxq~~oi@O=l2=3ut?&E$Q;6WZ@B%>J37#?OU;~38bCNhafc$CL@oF{mar+AuYc$UdL z$Md|vi@d}XUgi~EWh&Enjn{dDH<`{`yv;kzU?%VK90vz#7)_BiXEDJsa4_PyEa#e&JVs z<9GhxPyS*vfAbGp*vd9?*zpF)>@zEnS%J(7D)p%H{KF|hWIg^puC>ku)I2r zkVsFYOfe|2E3ry3BKFhBH#Iwdk?(wx;eY+FB#BS)b>>De_I(Tk)|NA4qqj?9$I3S?H`f3*VJ0faic*#H0l literal 0 HcmV?d00001 diff --git a/Calendar/days/14.bmp b/Calendar/days/14.bmp new file mode 100644 index 0000000000000000000000000000000000000000..0fa2432754ad6b4ebc3a732986f13b52729bd83d GIT binary patch literal 4750 zcmeIyd6bQ17y$4)Oq#-AN=al*lW4<8R5FFsD21jdS}hTZNQnrQOxm<-(ZG$X15XB7XPYIWyz_b(`y)8Ry*JIq!F#_xry0`JVUr&Uss8WTgZ`(h>uKR8hK- zW+ViXLiaP11A*+^;b!nbNCG7&Ng@YPii1hw5Duj@WhhHB!V%Px*|``GPO`im&;G zZ~2b-EMOsvSj-Z>=LeRuj34=l<^0SqtY9UpSj`&N@+<3D&u?sCBb(UF7Jlaswvxj( zw(}=D*vT&b;&1-pUv~2!dkCKZ@oT&T@eag0kl%s*aWWKx9Kj&T0X zD2RCvp>4!oeDSFx^kWNN{`ckzF3ydMD91jZRmwi|s3s9>_D_yN9Ago6L{)qIrFaM8 J9XNnGuooe^us;9* literal 0 HcmV?d00001 diff --git a/Calendar/days/15.bmp b/Calendar/days/15.bmp new file mode 100644 index 0000000000000000000000000000000000000000..ad958c46452b05f8e74c501f0317970aea3b2a5c GIT binary patch literal 4750 zcmeIzd6-pW90%}Q+HBK8wk&N(8%m=T)l8*mL1{yalC2^lB9zcNp|XSstrSIBQdB}w zmXx*9W~nU6WU1tH@7#Nzc}{=Kotd5|JoocF=e+MZ_x*j(Ilp_KbJJR6lnOFoDjO8I7<`Euc9FOrhPcWV*d5Q@<%`-g9L?$tr zDNJP=&+$CdnZXOZ$V_JO5-&5GIlRKFyvFOyugOCf**6)%izILyxQ_%Xl1q{uNOs^q)q#HihWx`) literal 0 HcmV?d00001 diff --git a/Calendar/days/16.bmp b/Calendar/days/16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..3655da1c40b0071ae6f7d63c749805fcf2c9ab9b GIT binary patch literal 4750 zcmeIyd6bQ190%|#Ds4mv?I{gHmc~+ANRp5(qmUv=sE{@#S}1#zeP2>2yR3ysk+OuO zD3Kyl(Vpcq@67F<;h&lJbdHmAKj*yby}$4CyubV2r*h3cxg&wZY>`NUvnsYkTb4-n z;C@n$NMu>s=4Q$Vfh?RvR;J$U|Q8aW45OKtayq zd@kTZF5+S?;Zh258JAO-D@dRSMJdLW6sH6wxr$PhrVM4dnncP`o(fdt8m^@h*Ks{J za3hte!cA1=W~y-u)wz`#+(u1mQJdSTLtW}op9b7PLy~C3o!muZn$VQHX~sR=OLJOq zA1%3`Ry;s!9;6LzX~#o6%pag1jI6M3CUyuq7HW(rez zi?^A^bY?JXsoGtyT4)SjA6sGbHP!J`Dfb7s03>x2535D}3`tUTo` zRD`1RuWHzo<6jrP1F^ZESQ+Wxk1(&uF$p0WbZkbf-x)nSYS=K3;@^^PwErd}U1Y{C Uj+#ftisIjjcOc$@|4#>w02Rv5-2eap literal 0 HcmV?d00001 diff --git a/Calendar/days/17.bmp b/Calendar/days/17.bmp new file mode 100644 index 0000000000000000000000000000000000000000..f358cb985e0b9acb5a9b6dc3fabe19dca546b667 GIT binary patch literal 4750 zcmeIyd6Z6N90%}sm^4vjDoKk(4BBZVDP|nVBiRS>yaUcmCM0qN3Fo#f)N*qdM5;=^+If5!2 zNmY)b8b@;s$8sFiIi4DvKuv0KBDJYQ5_PFZeNN(JPT^Ee<8;oT0S!5mWEyc6jX9ep zoI_L27%jv-t zT**~j%{BDoTCSrP*VCIDxRIOa!_C~nt=z`#^ratna3^=spS!t-0SsgigSnUcxSt^m zWf%`IoDqy<6r*{NF=X%%4>Oi=jAsImFp)`2=252b7?1M=Q+bl7n8tKw@H8`-#WOt1 zbIfKAbD76{p63M?u#gvdiA5}C2}^mIWxT?2Ugb4j=M7fyCYij&+q}cOyvO@|z=y14 z6{}gpT0UYO>-m@sY$S_M_>|B1oG+rc6RUsKeCgb_?ch$ zmEYLKZhq$v{^T$I<{$p$KlZSfY;ykqv3;xpu?oa0P;>>dvx**%e6$4qG&vE)`&)$* zij$EW5Q=skS$PY{DQ7ep!SrBm&_@0m!uJiw1aCCTi~_feCZj-rPU*@Bs$2Le_iev8 zpLVda(v=bZ)bsCx$BekmKRNF>;<>?vC6f`PgxgLWv5R6A Kh*e-es=)twKBlGs literal 0 HcmV?d00001 diff --git a/Calendar/days/18.bmp b/Calendar/days/18.bmp new file mode 100644 index 0000000000000000000000000000000000000000..b7e7f3676792914d566836fb97874e256631fd0f GIT binary patch literal 4750 zcmeIy3A9yH7y#f~nhb?Ps7y(PMm%XiFO4*#q=}MwXwa-eD4J+6M6)4jQbI)|O&ZKY zkw(h!q9{Ur_r7<|>a`kfPiwVS>wasUv-jD1|Nq|SzjvMFn*DM|Vv@2%B1QBnxsqI& zA~|B?4Rb{z^U^MZ(TSK$Wab#Mkda4P z$wz()a298C4(DIykaY|51KE+|L8FrVVXr$Ah$|10Cr^XS&dphv-Ikdhjrh@F+cbjK_I` zUi9Wko}v$Z=|_JC@HEdbkUxu$FbKX9FAgfgjn#W`5#le&JVA*uro8&Q`YZ z2Y<4i9sI@L?BpN*$o6K`a= zPGm|XjF09Cr{eCU1x179ie-yCHdq+!8yp}d7zh@`(FP$w4zCqQRQe@hNLrFGSNdfK zdQ=yHCA`IuE9dD2r2&9J>2ZLXPYmBIG)m! zp)4nGA}3LflPS+BRNz!j<8;m-nKLRiOd)SxDp zP>b5sA(gt+<5Di;a<1S?uHtI0p+47g9oKUMH*ym#2Ci%GOzF|ukku>Fplv| zU?Okw7L$0J$xPuL-sL^sXDZW}&I~@_LuN9I+00=s^GN3-KIRiXWj+g7$Y*@cBEH~D zzT#`X;ak4rdls{Vr7UAPD_F@YR`UZtvWB(%#5#WF7uK_ZjbyNi&1_*S+xV63?BF+k zXD7SZ%^v>XPxkT``}mtovfcpkb-V-d4#YcA&ecoufbQ=bY!B=iGaL-}~I(bIy~VkyR!Vm6jZdq?$D~ z(u|}?vFQEGlt?5yHrxyzL?uy#!${_EigE*&n& z+`x@=p({7hjqcpcE!@g&^x$^xpeMb!liu{9Fa5ZSySayZxsUz~;C>$9K?X92!3<$2 z!x+v89%3Y;7)=%rGlsE@;}IU^F&^g$p5!UU^EA)!EYI;gFYqES@iMP4fr(6FGOsd) zsl3KCrZa_FIoumk_&4*VCVb$&)paQY{7{Kw0p35lh| zGU5q|tRycZ8WG*KSmwXl!Dvko5v$6d6+R}YDG(9N3tt@nZgfB5b%|vZTty_ob>!ye o#8;6}L{L;9BKWWTz{1Y{5fS`KVGG0e!VZKT2s;pV;Lvv9AW+n9!vFvP literal 0 HcmV?d00001 diff --git a/Calendar/days/20.bmp b/Calendar/days/20.bmp new file mode 100644 index 0000000000000000000000000000000000000000..8666cfa2848c0e57fb73eb0c657fbc7c3b344645 GIT binary patch literal 4750 zcmeIycf3|}90%|dAtDMXJ53~1Ze@f9X&2J4N1~7h5v74PO4G_H8lqI9%Q4F zIfO$wjKevCBPqjCl%*WysX#?4aWuzpER{KqDjd%VoJduwQJs^>q6Rgo#mSt)shmb_ zPUj5Hqz-kdM}5xXY#MM54QWJUn$VPHG^YhEIhXS|pH^HzYueD3c3j9sT+Ah0%4J;6 z6M;%0hq3%Amf+qj)x^yUuw(3gJn=T7e8 zZU!)rK@4UHLm9?B+{=9oX9V{%l2MFi3}YF`13bt>Jj^4E=TRQxah_lT6M2%Sn8akJ zFqNm7#xp$2bY}1zGnvI~o@Wj(@FH`W$4k7-E4<2Uyv}^y;7#7*ZQkKs-s62f;6oO$ zkdIizVm{^*KIJo(u#{yi=X1W`OTOZ3zTsO|u#)ds#cHzoo;9px9qajlANh%&`GpPq z%5VJ6A8ce3oB5N!_?v(Dmo4Oc0W$l{1Tqu&|4bm;e|GkEJWlv!NQjjac91MaNKQm< zVU$(y5M{|lVPx`gTI>8JJ1!%&_jrAzJdKDLuZgNq5aj)l(;8#Gi*hm&`+R59JxtW6 zJXX5ZJI{5|IJdK%q>N}RapDpgQG#8(*CV`j-pi4QEJ!~&MNt!ZSp_MNu8lInh}_Em zR_RBDHAxZSI{o6reWOt%>f&W2cM-(wBjwI12Z`pku}JMA*5@>T?=dF2jV3dvGZV;6 IV8>2iEB9sMIsgCw literal 0 HcmV?d00001 diff --git a/Calendar/days/21.bmp b/Calendar/days/21.bmp new file mode 100644 index 0000000000000000000000000000000000000000..f2b42beea158fbb21c8ec3e5f8068838df8026c1 GIT binary patch literal 4750 zcmeIyd6bo790%|_45rd5iBeRkP>3l~m`a6_M2)RNku5C}N|vNW5|u)!h)UY*TkAwg zwz9Rz(n7>UN}KrHJ9l*F&bgiDo=(jl_jAtsp67ku=lR~>`+M(s)6xf(3WTI42Le@% z8aPrNNr9Bmd`7WAATxZJ4BiMy;s6dLnS(f(Lr9?zg(W6p>61S7&Lc8y|g$#WyPCn6%}+48L0-GnAaM#PzsDe@!J1T~gte&7+N{I6)SxEou|B12z=mu@EjDHoHf1wv zvpHL^C3UFFR&32SY|D0R&kodMM|NUoc41fQ(}3OBojqvCp6o>#jcCl?>_Zdwr76wW zkLK)83tDmj2hxhx9K^x2;Sdg`E$wK}VI0m8bl^xjaui3?iDNjH<2arZ=u8(*q$}Mx ziIX{nQ#p;(>CPFP$yuCD56+<{=W-tBa{(7}5f{^oOSqKF=uIE`ayeIUCH?5nRb0(A zT+4M_&kfwjO$=ZlgBZ-s+`H=XjpUOyLDyWGXK)jp@u_CNJ{}uksqN^9FD7 z7H{(o@A4kAn9ciqz=wRq$9%%4e8%U@;S0WGF7x<`ula^=`Ht`TfgkyapZSGfDd#tS zXFh-MCx7ub3s}e^7PEwhK)lXTc#+O{h$jrWXYyg_=x4)JOr<$y-A`>ALK7dUGX~M2;+@4j&xa+ z;1pvbsf_5KE*XihO literal 0 HcmV?d00001 diff --git a/Calendar/days/23.bmp b/Calendar/days/23.bmp new file mode 100644 index 0000000000000000000000000000000000000000..7a263e7451947314ec7f9bec04ecd196a06bc972 GIT binary patch literal 4750 zcmeIydDIPM90%|#Dyb+bAxWjARp||>WN9U#EG=3rEkcwfDebbh(qb)3iiFTk$XXPw zO5wG%$l9*WXXd{5eT_eyd+*yh>CGIWzZ}JM;U_^Ze$_)T%$Acr27vC>E<|RNIzi zD-bIj{@<)P;c|O*te{5@ZC$`OFCKzxy)c4?-jIF^@mqAOvG%{aJi3(ha(BouOs^feWnqF{dhczpfbgA*$E3cV_&mbu zL{`cnVMY**v$X{ literal 0 HcmV?d00001 diff --git a/Calendar/days/24.bmp b/Calendar/days/24.bmp new file mode 100644 index 0000000000000000000000000000000000000000..cd8a373f919799b76388292fd21029843488177a GIT binary patch literal 4750 zcmeIydAL+_7zgkvm9m5uA;~UD8?HpO5bcSQr6NhTNGd6n%C2ao5M?Q}*|#hyp|r@Z zlp+<{yRD?pIWx_j+h2EPdU$x|^E_wfch1cFJ@0wXoT=StV6jLjt3V`D&Z>?r%a$)v zI6U66Xe2T%wmBGl5Xwh>_M!j2If!BurvxQAm{J_Vp&UkO z4yO!9P?jS(ilaG(V>yoFIe~JVNO?}80w+_EN>ru_RXK%IIgKn%ry6HaoijO$8l25J z)T9=*sl&OPM_tb60_stp1~jA*jcGztE~FV3aWTzl!6mfhQZD0iuAmjIX~UIVMO&_> z9oNvFYw5ssT+a>M$W3(QW^SPqx6+y0=t5VzaXa0)gC6wcPI}RsKHNoL`q7`exrckX zkNbIm2YHAA4CG-RVGx5E!cc}WoJV<#5sc(oy7 z9$zq@FZqhE`G#-#j_>(_1uW!87O|M0Si(|%<`rxhD!>`fQB5B&3cd!mJe zj9{)QT~oX)Oz@JzY-1VOyCPEQB$^Q>1UDndO8TaRH9wUa~8) zUuD-~@AjEF_ss3&d3xra{-~$te4b}!ezUya^P6|hoYSz$fSg1quT&zDYt+b+XDN{= z6CQ6_A(5C;xHuS`2$f(fN>Yl_Y|S>5p)BPn&$etw1uC*VJCH*qDpQ53>_|0sVrOyn7G@>!ba{?!F5+`#Cr*axiIGv`P!I?CpIcIS;=g@+doJ%WO(}uR3$N99QJss#s zCpy!G3+T#)T*Sp(!lhisFkHv_nbdl|?e?&E$Q;6WbZVIJX89^-MI;7Ok1X$JEQ&+;74^8!N{$}nE! zC0=GYBN)jjMl*)7jN=u?^D3_~fr-4%B;Mdn-r{ZEVKP&g$~2}kgPF`?HglNEJm#~2 zg}lom-s62f;6py*V?NoaI&-}u#{KoIB zU?r9U;NEK{L6o=p@8HsKz5z&K(+&0N(VOjtqy(|0?CFH6yz7bGs%D`Bnm4= zQhu^J*n|_vBqORR97OxYm`8N~W)hTTmXZ3vO`TErEW?|yN}?+ZfKgBXH^2A?*2&21p#^OV&zJR3ZtLQW05Fp+eDKC{z?JlD$IO zL|KZWEJ^W}w0>spy}Yl#+;L8IoclRvmOFEQ-{*OLb7tx`8CED3%E%Rqm2+0lmSM{g z%M)I2Ss)gho7h|oZiI4>lY_{`!Q|!;@{pH&TxdTaXuGNp9VCf5shiWg!DY0h6|HGQTiS6sS8yfmxr(dl zKu50OS~}60>$sj9=)#S3r5iWVotx>wE%c-py}6a!xSc-S!JYKwF7D6n(jO1Y+;Za60nlU`a?!ppqEt4w7Yukkw5nZX;p$y>b5Ox|G@?=qV?%w-<)S-?Wx<9$A05sO*Ehb-kI zKIRiXUzWE(&6Guzog zCcp42JNb=W{LUZz$zS|U{0orYr#q1DzyZ>M{eP{4gh1Gk%t#-JctA45F*D`vW+@J9 z{f>~47&lQIEh91Pf1Z(8f4mQ76Qv)!i!CZrM7%60O-lKx1O>_B_%TvMwv?y||BpId z*zbvC$q1VoC2)5}m|&OsYa2Y-U})csq||2;&j{<2St*Bv89_v%a?jbmM+G%mB9d#{ w_W=LY#HcOcz?f3E}o0IYE80{{R3 literal 0 HcmV?d00001 diff --git a/Calendar/days/27.bmp b/Calendar/days/27.bmp new file mode 100644 index 0000000000000000000000000000000000000000..213917c4b123767738d834e248955c30b21342d6 GIT binary patch literal 4750 zcmeIyd6-pW90%|_Nm3+(L?vZuY=xLoDyEcnOBhm-P>52pw2;uI(Y~ojT4YyLWJw9x z+bor>LZLz0Q$BO=%$>RON6$0o_IS#3KhJaCd(OG{_r34=opau_rWwhhu++k#P>Q{} zwp3eEsA%|ndWleIe)i^M))!$(6yg91b09@Hh@u=!F^Y2thf;#WD9Pa@a|B0n6s0(t z(j3FFl%Xu;IF9lhPX#J+0w;13CsTX(ls;sZ8S; zrt>V%@jNf^A}{eWuP}p|yvl3LVm5Ploi~`vo4m!_yu&=+Wj+gdkA=L?2YkpPKH_6O z;Zr{2bG~3POIXS>mh&ZF@ipJDf|ab|TfXCae&9z|vxc?&#LxV~I@a?mzwtX8$m9?H z)DMSp_K%|2ABcli*Cyj64wmGs3Ni&OhKhV#;C;qRD&S m$-0g_U5q){b7k(gu@Ql8Oa30_om1`~CH4{>NOWNT?ZCg1Prm*D literal 0 HcmV?d00001 diff --git a/Calendar/days/28.bmp b/Calendar/days/28.bmp new file mode 100644 index 0000000000000000000000000000000000000000..8ab0adaaae4346103a0c80d23ff2ff48eac874c0 GIT binary patch literal 4750 zcmeIycic^N90%}gQ<9MO7E)g%r zs!Sp=C%Jhu_#jk>!W5w>#VAe*N>Ykl*p<@kMj3XeEPGIn@>F0?DzX=Qvk&{SANz9v z2XYVxa|nlW7?n7j%2c5$M^KF;If|pH&M_RzaU9PHoXAP!a56Qh$tl#LHm7nLr*j5% zs7pQ0z0Xi77hb3PYvAuVW0D=y+B(L6qBni$OF!=B9{MwY zfed0W_cDZ`3}ZMWxR3jJfCqVqhZ)Hz9^p|Q<8ekah9`KEv5aFp6PU zBqlS3sZ8SqUgRZS<`rJ$HC|^rGkAlUyvbY4Vm5Pln|FAZ_n6B(=Cgo>EMhV5^8rg( z%7=W!$9%#vma~FS`HYo(&KIm=HD9uZulSm^tm7NLWj!1Cj_>(_jr_w zA}9{BVuyq^K}520+gZV*f|`608Qyd053daSNGnTwQNYUyt|K)IC221T7?C!M41bpY VE}Xxog0_+UUUmZ63GB!d_!rwT@wET| literal 0 HcmV?d00001 diff --git a/Calendar/days/29.bmp b/Calendar/days/29.bmp new file mode 100644 index 0000000000000000000000000000000000000000..920350cf5183fbed90675f5cd489170c6d70df75 GIT binary patch literal 4750 zcmeIydAJQ_90%|tl%-@}+LVxNNxG6&T8U&!M2RHI(kd!Sg%(Anq>xrpgp{l$6-A}& zLLo|ZTkWaO%pKR|FK6zfKRoC2JhPlR=l7lW{mq=WPJ@Ak6QQ(Ri9`iwb!}<39Em*P z^%eyZiP_QSV(>*M2ZxZ8T;%3Z4kHhF$wz(;=LiaLBn2r%VTw?cViczYB`L*G9L+Ht z%W;(Ecut@UCsLMjl;QSG|Xh1_Qrx91sm?ku(8O^zp7Fc@>NM2+VFYz+3@G7tII-?oG8;s>m z-eMf%d7BALWD@T%nRj`QDZI~ArZJrv%w!fH@FBDLh&g=BCw$6W=J6SyGoJ-~!Iyl+ zLcZo37O|KmEM*zXS;0!aWfiMg!*_hoTGp|iAK1V~e&i=M@iV{hE9v~k@BG1^{KemF zW(!-{#&&kFlYiL7zhtZcseP&gsSX@W9mwWCJ6IYb>G9gKyF5C^3CSo;I3$8yoGGP8 zRZ*=^$xkOUB3dlt3?#a5<`m*(giXwxLbfupHJ7kBXsu@M?r?GsSXKBSWJHpyk2;Z2 z6eT48WMka(0F{_Rwv)4DgdK?!n3)kK*u`jSlo7lbk>p3BP*GSO6vukW!i*pyy8WKB z=)!&+f|@K58Eesg)MfpNCT5L@nXy+y{ER&V3#OK|y+;x2vFtncIKxPK+^K?82T~pQ HA3N|LkZR{u literal 0 HcmV?d00001 diff --git a/Calendar/days/3.bmp b/Calendar/days/3.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c2ec20c035fa146acf0f140006e4cf4dad9a9ae3 GIT binary patch literal 4750 zcmeIyX_S?790%}c7!0YHR$8s?X<;aBCdoD`inJ<8MT8Pcn_V@PeU~LELWTBJ6Ilx_ zwhB>cQ{kdg(`W9Td*+;ZcklGVi|2FB|GEG3-23}J|NDLMWM*Zj2T>WRK~UYUrIlf& z1ZmOx9ZLj3PX2N;?~AAu4&!iAIf5fOiZqVq7>aQ$#VJ8aj^lXJDMe|@P?mC(=LAlq z0u`x5WvWn>lQ@}EIF-{looZC41~sWgZR${$GpI*>8qkn4Ig1R=<{TQ)m~&}DQ<~A7 z7Mw>WEjgc7TtI6sR*nlX$en{kY10*~-0kMTH9@FY+1G|%uX&+$Aj@FEj=iI;hWSDD0XOy+f_FqJoW zlWDxg+q}bcW-ya?d5`y*#cbvngFpF; z2!Hbr|FVa@?BhT7bAVi8Z-DR`HV`%tHV`)O|8Ah@Z|q231VIqnCG&q{3AwqEg0Mtm zVn+z#Nznr(kr5rq&&mr+G{Q`5#B3yQSHz5Hm{ww;30&hN@#n`s6No4{dwy7vGGY%- fCZceO$z>EOG4VzdX)gS2*g)7o*g)98A#30u&@*m{ literal 0 HcmV?d00001 diff --git a/Calendar/days/30.bmp b/Calendar/days/30.bmp new file mode 100644 index 0000000000000000000000000000000000000000..1053e9ef34d101a325b1380d0e14f3300ee51e6d GIT binary patch literal 4750 zcmeIyceKuR90%~nNGhYQq)?RT8i~eD(@G(mq(nxN2BkeHqfpW?vx=0}L_=ATl~GEQ zqzDaedsDC9^E~(V-20Dvf7dxWo#%DV?>XP!_`J{e`}zK!U%jToQX)}l1tXDEqxz0C zN4`km==FBRB9SHW!^Pl6R6g=kfPx%AAr7Q42XQcmP=ulsqd13h7%7zCa7uCnr8ttK zC`}p4ax}+Kj`AGKaa7=VDpH9PNTo7Ws7f_Xq&g>2gPNSoDV)k_q;Wd6ID<1ei?cb0 zbE!=o>QayToJRxB=K>nih{jw<6PnVD=Cq(Ct!PafE}|_L(~e8Hl=fUk2Rd>&o#;## zx^e~GxRUN%MGvm#8m{F!deV#Qxq;r?$W7eLE!@g&+|C``$zAlJFL!ef{pimC268X= zF^Ito;eH-qC=W7>hj^Grc$DFcU?ig$%@`hIEaMo@1Sax0PcVteJjoQE;%TNbjp@u_ zCeQFJ&+$Aj@FKIA%^Y6hWnSS`=JFb^GmrT!U?GcmgT*Z2O_s8Z<*Z;OZ?THitYIy0 z^A78Hm-krD`+UHMe8k6m!Ui_-DVz9=&3w)mY+);3vW@NR;48l78@^>HyGZ9dzUK#i zB|q zS(cU4>i^Vp!BX-#p;$M99Sueyb~aWR6z5@Yqvii51!1|CQ54S#))OKlR-!iAiacgS z!}ecBeEso0gquf}9)^jC?rOqDgv;>RNXSS}JW05|mtm;4doP*E+sO_jJFrhW@DG^O B;d=l8 literal 0 HcmV?d00001 diff --git a/Calendar/days/31.bmp b/Calendar/days/31.bmp new file mode 100644 index 0000000000000000000000000000000000000000..06d15108a9c3e21afd11744673fa39f58008bd93 GIT binary patch literal 4750 zcmeIy36zax7y#fq42`lisECrHQD`4Y){z#JNKGXqqRo~Isg5?@BZ)m-tT+QcmKMLh9(C>QWFD#6r(g( zsw*Lo6#72Ba3C;0BPO&Lz&WXf_1vpI)zIgj(XfK;k-A=S8u>Re0> zYEp~Z)S)hE)Z-HBb19c`IaknthBV?zuA(tl(}bp6Lo=@BI?}nG8@Q3?+(Zjn(u$jD z%`LQ{Ew|E+_T0wp+`*mPMF%?4iOzK4Zn|<0_tK5-^x!`3rza24iwAj#-t^&N`qGd7 z3}7IG7|bI)$`FR~7>_fI;XJ{UJjK&I!?TQFB%^qa=XrtAjNwJb@)9pIj`2)jB9nN9 z$xLA?(|DEFc%3(Rlec)AcX*fgc%SLa-~(ndi`mR!F7uerhkV2WKIRiXWg(xjh|l?g zFZqhaEa7Xu;ak3ADc`e<<*Z;OKd_3`tYIzd_>rGj&jvQKiJ#fb7JgwX+xV5=*v<}q zXD5H~C%gEI-Rxm6fAbIjvXAf^ApRNeK)eI-4um?86EB7TSB>C{GRh&Jl&I|RBnN8j z$VQE*6f23E$27^3lQT6AeJg=1>xgOXxi~0zDzedqOgjoz2nuLT_@3!ujKgrIl|%+H z=4A?#8Qe#tK*lsvKnz1kp{QVy;2<)OA@x8=KrANQ6bq14JFw#T6PCn6_r(@C>k{ERaq5< zR7Cbn3dcBo-k0~E^Pls&E?t-Bb6xi{ulslZ?(ZMZlTa%uXDA{*Lnu_-RiY7Zqzh$^ zJZ~5m3N1c6JPf~xNJn}uAp@6^kxXRfGP01B%gII@SCE|?Kg?{vB00SAs zV21E2NepEe!+DJnjARs}8N=(m!JCX_9B=V9?=YSTOk@(1d6)N?!uw2R8Xxc>)0x3X ze9TN{@d=;u8J{zoIefvFe8tzyWghccz(N+Wm?bP_8O!;GZ~2ZDtYj6dS;P1Iz>lnD z9Y66i>)F6Yeqj^8@*BUinJxUmR<`jc+u6ZRcCnj1>}4POIlw^<@fU~rn|SnK?48x1kT47JH{H}-$p9uoLZ{+;oA#RBeH08?MPGS z+{T#+XKSQsBhe)zHDYN(p>U0unuyehv59Dn%d$5f(5mXsD`S5Z=uRI-JZp~X@Pp+(t3yS0fT zdwXajR0?I<(dXWodq?NYANS7u(;x5WoacSs^Stlxcc15b&v~0AZlDvL z=|We!(VZUj~>h7{hsh z5sYLM5AqNX^9Y%YW(<$=7?1M=V;RSICh#OrF_EWvhDl6j3ePf?X-wxip63N#WCkzs zGBcUQZ00bRSD43q7Vs*s@j7qtCU5aJ3t7Zsmavp%yh9f6vYZvX$NQ{g6(6vgHLPVF z>)F6YKI9`l<`X{UGd|}FHnEv4e92dQ%{P3@R<`jS+u6ZRzUK#iWEVg2GrQTtUVh;o?K)M0W7s-_7e)fF9A3*nXl5anI2#!>0)sxJo&_os$)CE7IZ wIaU)Xk6hxejlCFc66=v2dldIgv`5?p`MsF<`Sa@%tOW@K2?PlQ2_%rfzjZ@#!T zIW2gaXJ|<)TJtQ=@jPvKfwsKJOSGds9eA0JbfPm|=*lZ}qdPr#mDlJ=FM895*Lj1! z^rJrmc#|XsGKj&v#oN5Y5QZ|0cX^NZ8O{hsGK$fBz!=6dj`2)jA|En|$xLA?)0oaj ze9R}zU?#Kpl-bN-F7uer0zTt&7V-s)_>#peVJTm+jOBdIH>_YK-|`)+Sj`%~XD#bk z&jvQKi68ip&HTg`er7A%*v<}i@(a7z%^vphE5EUi{rt`!9N-{__>;dl%-{UO5sq?< z+!5(p9q5(pBwuoDQM*r{iBn$GUz4$&sjYfQUNZIS#>!jCc4 zhZjd{{(p_7QR>g8G>P`QID4dIn3`!UyGUMZ|B>p*9DRtjO{DIeDc1VP`g7{trm01^ WDB32?4T8cTfgph(fgpkNp1@h=(0{%F literal 0 HcmV?d00001 diff --git a/Calendar/days/7.bmp b/Calendar/days/7.bmp new file mode 100644 index 0000000000000000000000000000000000000000..1056dda3ef1a2106ea7985f5d04dd77b04aa387b GIT binary patch literal 4750 zcmeIzX_QxE90%|_nv^y*(I%vIg!U#<(M*&UrOjxS60Ir{* zuI3u9r3lwilwuU81SKg&Jl9j28@Q31C_`DwQJxA^q!N`$pb9s03st$5YE-8Nw{bf) zNhFC{+`*mHrVe*emwMEv0e91oM%+VVn$VPHH0NHDxsMjKq!q1cLtE~r9S_i+4m?Ol z9^zp-(U~rEr5oLOgdX&y7mxB7z3Ic_Ji(Lnr5{i6G|$kVXBogi1~Hf+4COhV=LLrG zA}{eWDGX->BN@eL#_$Sbd6m}~$9N_%kx9JHWTr5cX-wx0-sCOb<{f4*lXscLZ00bR zdA!H_%x3`~u#iP8W(iCAkYy}q1t0M-EBS;}R}4POIlw`_3n`HeID z&L5oRPyXU>&XM*92)AJZVFF+@HK0XLC@-F}0 rJhJ!gqpOiNd7`LsVfJOD#)ZM@ov_A#6A6#Q1i}Qu1i}O^dIJ9dnHE&( literal 0 HcmV?d00001 diff --git a/Calendar/days/8.bmp b/Calendar/days/8.bmp new file mode 100644 index 0000000000000000000000000000000000000000..2a14d4687cc57a54423cad8eb75c838cf99fa04c GIT binary patch literal 4750 zcmeIyX_!`H7zgl^N|W{}N}@$8B9%dCnaNs{iYQr1ii#46XtT64p)9Rvv$R-4vNl4r zQE1biB}-XS665#2@0|Jm&ddiN&hNUO_dM5muls-QbD!&a(lfJCgSfO}K~Uc=!%DM? z1S#?Roy!J6cJ6XB_D5V1j-V*TD9(|TAcc|~MJY;ChO(5SJQYZ#B9%CrW2j6Oj-@Kc zQH|p{f$G$tCbc+`+SH*g^{7t+PU2)vp&_So8jU!e#x$WRXOPC3oWYm(z(WxRTCv;VQavHP>)0*U^pcTu%>f zpeMb!k(=mEANq1Lx6qIN+{yrM<8}se2ZOkiyBN&f+`|xtGK}Gj;9lXqZrK? z#xjoaJjg?2F@cA9gh!dkBp%~&p5RF)Gli*4V>&Z#tK%liq)*) zbG~3L>-dtd_?q=>U?ZE@%r|UdE8E!44tBDO-F(Y;e9sT;;YWVrXMSNX`}mdL_?^nm{yx|Mdi72X+BZ?07^xC9%uL`-TxYLAXmk zB;G-g2v8jhN;)LBB(Jsr8L?bk@jduvb0*#P_!ybWi3lt(@L@w zT0~LF*1lYYN+~{bm+9%xdmn%F$N49WYAKzTe{~{`lBRG;m6y_+7CY@s_!m$+PI5Ie%6F8A#oW#i#rv#^PDkUjJ zX-?yG&Y%osDaVb!w1FO=?k_I$X>p)a6p@ zQJ)56kAI?~^8gR>5d9gzKn5|GAw0|@ zJj!DX<#C3Q#}hosa7OSHPcxEHjAjgD8OJk>X9Cai9MAIt6Pd(hUgRZS<`rJ$HKs6? z*Lj0Cd5dXG=WX8MUEbq;K41nPGLu=%W)5?i$47k3d_G|TpYj=>^92i8#Fu=<*DPiU zOIgM@EazLkV+AYuo*!7nYS!>0Yx#+v`GsHkjdiSN0~^`IX11`EZEPpP@9bbFfAA-N zv5Vd8;cxb`kAK+D0sbZS1_<|I0$~DS0$~D&eFFI}Z6YZT8mo`*Q|od_i`4!@qAh~J z!3g;ulAk1A6-m^l(j;C}kY{Q=qO&K)$X`yU>cE literal 0 HcmV?d00001 diff --git a/Calendar/epd7in5b.py b/Calendar/epd7in5b.py new file mode 100644 index 0000000..8586729 --- /dev/null +++ b/Calendar/epd7in5b.py @@ -0,0 +1,209 @@ +## + # @filename : epd7in5.py + # @brief : Implements for Dual-color e-paper library + # @author : Yehui from Waveshare + # + # Copyright (C) Waveshare July 10 2017 + # + # Permission is hereby granted, free of charge, to any person obtaining a copy + # of this software and associated documnetation files (the "Software"), to deal + # in the Software without restriction, including without limitation the rights + # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + # copies of the Software, and to permit persons to whom the Software is + # furished to do so, subject to the following conditions: + # + # The above copyright notice and this permission notice shall be included in + # all copies or substantial portions of the Software. + # + # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + # FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + # LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + # THE SOFTWARE. + # + +import epdif +from PIL import Image +import RPi.GPIO as GPIO + +# Display resolution +EPD_WIDTH = 640 +EPD_HEIGHT = 384 + +# EPD7IN5 commands +PANEL_SETTING = 0x00 +POWER_SETTING = 0x01 +POWER_OFF = 0x02 +POWER_OFF_SEQUENCE_SETTING = 0x03 +POWER_ON = 0x04 +POWER_ON_MEASURE = 0x05 +BOOSTER_SOFT_START = 0x06 +DEEP_SLEEP = 0x07 +DATA_START_TRANSMISSION_1 = 0x10 +DATA_STOP = 0x11 +DISPLAY_REFRESH = 0x12 +IMAGE_PROCESS = 0x13 +LUT_FOR_VCOM = 0x20 +LUT_BLUE = 0x21 +LUT_WHITE = 0x22 +LUT_GRAY_1 = 0x23 +LUT_GRAY_2 = 0x24 +LUT_RED_0 = 0x25 +LUT_RED_1 = 0x26 +LUT_RED_2 = 0x27 +LUT_RED_3 = 0x28 +LUT_XON = 0x29 +PLL_CONTROL = 0x30 #was 0x30 +TEMPERATURE_SENSOR_COMMAND = 0x40 +TEMPERATURE_CALIBRATION = 0x41 +TEMPERATURE_SENSOR_WRITE = 0x42 +TEMPERATURE_SENSOR_READ = 0x43 +VCOM_AND_DATA_INTERVAL_SETTING = 0x50 +LOW_POWER_DETECTION = 0x51 +TCON_SETTING = 0x60 +TCON_RESOLUTION = 0x61 +SPI_FLASH_CONTROL = 0x65 +REVISION = 0x70 +GET_STATUS = 0x71 +AUTO_MEASUREMENT_VCOM = 0x80 +READ_VCOM_VALUE = 0x81 +VCM_DC_SETTING = 0x82 #was 0x82 + +class EPD: + def __init__(self): + self.reset_pin = epdif.RST_PIN + self.dc_pin = epdif.DC_PIN + self.busy_pin = epdif.BUSY_PIN + self.width = EPD_WIDTH + self.height = EPD_HEIGHT + + def digital_write(self, pin, value): + epdif.epd_digital_write(pin, value) + + def digital_read(self, pin): + return epdif.epd_digital_read(pin) + + def delay_ms(self, delaytime): + epdif.epd_delay_ms(delaytime) + + def send_command(self, command): + self.digital_write(self.dc_pin, GPIO.LOW) + # the parameter type is list but not int + # so use [command] instead of command + epdif.spi_transfer([command]) + + def send_data(self, data): + self.digital_write(self.dc_pin, GPIO.HIGH) + # the parameter type is list but not int + # so use [data] instead of data + epdif.spi_transfer([data]) + + def init(self): + if (epdif.epd_init() != 0): + return -1 + self.reset() + self.send_command(POWER_SETTING) + self.send_data(0x37) + self.send_data(0x00) + self.send_command(PANEL_SETTING) + self.send_data(0xCF) + self.send_data(0x08) + self.send_command(BOOSTER_SOFT_START) + self.send_data(0xc7) + self.send_data(0xcc) + self.send_data(0x28) + self.send_command(POWER_ON) + self.wait_until_idle() + self.send_command(PLL_CONTROL) + self.send_data(0x3c) + self.send_command(TEMPERATURE_CALIBRATION) + self.send_data(0x00) + self.send_command(VCOM_AND_DATA_INTERVAL_SETTING) + self.send_data(0x77) + self.send_command(TCON_SETTING) + self.send_data(0x22) + self.send_command(TCON_RESOLUTION) + self.send_data(0x02) #source 640 + self.send_data(0x80) + self.send_data(0x01) #gate 384 + self.send_data(0x80) + self.send_command(VCM_DC_SETTING) + self.send_data(0x1E) #decide by LUT file + self.send_command(0xe5) #FLASH MODE + self.send_data(0x03) + + def wait_until_idle(self): + while(self.digital_read(self.busy_pin) == 0): # 0: busy, 1: idle + self.delay_ms(100) + + def reset(self): + self.digital_write(self.reset_pin, GPIO.LOW) # module reset + self.delay_ms(200) + self.digital_write(self.reset_pin, GPIO.HIGH) + self.delay_ms(200) + + def get_frame_buffer(self, image): + buf = [0x00] * int(self.width * self.height / 4) + # Set buffer to value of Python Imaging Library image. + # Image must be in mode L. + image_grayscale = image.convert('L') + imwidth, imheight = image_grayscale.size + if imwidth != self.width or imheight != self.height: + raise ValueError('Image must be same dimensions as display \ + ({0}x{1}).' .format(self.width, self.height)) + + pixels = image_grayscale.load() + for y in range(self.height): + for x in range(self.width): + # Set the bits for the column of pixels at the current position. + if pixels[x, y] < 64: # black + buf[int((x + y * self.width) / 4)] &= ~(0xC0 >> (x % 4 * 2)) + elif pixels[x, y] < 192: # convert gray to red + buf[int((x + y * self.width) / 4)] &= ~(0xC0 >> (x % 4 * 2)) + buf[int((x + y * self.width) / 4)] |= 0x40 >> (x % 4 * 2) + else: # white + buf[int((x + y * self.width) / 4)] |= 0xC0 >> (x % 4 * 2) + return buf #due to python2 -> python3, int had to be added in 'get_frame + #_buffer + + def display_frame(self, frame_buffer): + self.send_command(DATA_START_TRANSMISSION_1) + for i in range(0, int(self.width / 4 * self.height)): + #the above line had to be modified due to python2 -> python3 + #the issue lies in division, which returns integers in python2 + #but floats in python3 + temp1 = frame_buffer[i] + j = 0 + while (j < 4): + if ((temp1 & 0xC0) == 0xC0): + temp2 = 0x03 + elif ((temp1 & 0xC0) == 0x00): + temp2 = 0x00 + else: + temp2 = 0x04 + temp2 = (temp2 << 4) & 0xFF + temp1 = (temp1 << 2) & 0xFF + j += 1 + if((temp1 & 0xC0) == 0xC0): + temp2 |= 0x03 + elif ((temp1 & 0xC0) == 0x00): + temp2 |= 0x00 + else: + temp2 |= 0x04 + temp1 = (temp1 << 2) & 0xFF + self.send_data(temp2) + j += 1 + self.send_command(DISPLAY_REFRESH) + self.delay_ms(100) + self.wait_until_idle() + + def sleep(self): + self.send_command(POWER_OFF) + self.wait_until_idle() + self.send_command(DEEP_SLEEP) + self.send_data(0xa5) + +### END OF FILE ### + diff --git a/Calendar/epdif.py b/Calendar/epdif.py new file mode 100644 index 0000000..3a8b1f4 --- /dev/null +++ b/Calendar/epdif.py @@ -0,0 +1,64 @@ +## + # @filename : epdif.py + # @brief : EPD hardware interface implements (GPIO, SPI) + # @author : Yehui from Waveshare + # + # Copyright (C) Waveshare July 10 2017 + # + # Permission is hereby granted, free of charge, to any person obtaining a copy + # of this software and associated documnetation files (the "Software"), to deal + # in the Software without restriction, including without limitation the rights + # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + # copies of the Software, and to permit persons to whom the Software is + # furished to do so, subject to the following conditions: + # + # The above copyright notice and this permission notice shall be included in + # all copies or substantial portions of the Software. + # + # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + # FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + # LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + # THE SOFTWARE. + # + +import spidev +import RPi.GPIO as GPIO +import time + +# Pin definition +RST_PIN = 17 +DC_PIN = 25 +CS_PIN = 8 +BUSY_PIN = 24 + +# SPI device, bus = 0, device = 0 +SPI = spidev.SpiDev(0, 0) +#SPI.no_cs = True + +def epd_digital_write(pin, value): + GPIO.output(pin, value) + +def epd_digital_read(pin): + return GPIO.input(BUSY_PIN) + +def epd_delay_ms(delaytime): + time.sleep(delaytime / 1000.0) + +def spi_transfer(data): + SPI.writebytes(data) + +def epd_init(): + GPIO.setmode(GPIO.BCM) + GPIO.setwarnings(False) + GPIO.setup(RST_PIN, GPIO.OUT) + GPIO.setup(DC_PIN, GPIO.OUT) + GPIO.setup(CS_PIN, GPIO.OUT) + GPIO.setup(BUSY_PIN, GPIO.IN) + SPI.max_speed_hz = 6250000 #was 2000000 + SPI.mode = 0b00 #was 0b00 + return 0; + +### END OF FILE ### diff --git a/Calendar/events.py b/Calendar/events.py new file mode 100644 index 0000000..5fef561 --- /dev/null +++ b/Calendar/events.py @@ -0,0 +1,117 @@ +import epd7in5b +from PIL import Image, ImageDraw, ImageFont, ImageOps +import calendar, pyowm +from ics import Calendar, Event +from datetime import datetime +from time import sleep +from urllib.request import urlopen +import arrow + +epd = epd7in5b.EPD() +epd.init() + +url ="https://calendar.yahoo.com/jmuj6o2qum5wwa7aboeb3qxss5hssod4rlmbev5g/c4a110ace0d020e426cea69a2a873a19/ycal.ics?id=131" +#Enter your ical url above +c = Calendar(urlopen(url).read().decode('iso-8859-1')) +e = Event() +open = Image.open +EPD_WIDTH = 640 +EPD_HEIGHT = 384 +fpath = '/usr/share/fonts/truetype/Assistant/Assistant-Bold.otf' +fontsmall = ImageFont.truetype(fpath, 20) +fontbig = ImageFont.truetype(fpath, 34) + +path = './dev-only/' + +background = open(path+'background.bmp') +template = open(path+'event.bmp') + +positions = { +'A1': (517,11), 'A2': (462,11), 'A3': (407,11), 'A4': (352,11), 'A5': (297,11), +'A6': (242,11), 'A7': (187,11), 'A8': (132,11), 'A9': (77,11), 'A10': (22,11), + +'B1': (515,71), 'B2': (460, 71), 'B3': (460, 71), 'B4': (460, 71), 'B5': (460, 71), +'B6': (460, 71), 'B7': (460, 71), 'B8': (460, 71), 'B9': (460, 71), 'B10': (460, 71), + +'C1':(542,313), 'C2':(487,313), 'C3':(432,313), 'C4':(377,313), 'C5':(322,313), +'C6':(267,313), 'C7':(212,313), 'C8':(157,313), 'C9':(102,313), 'C10':(47,313) +} +def main(): + for i in range(1): + + time = datetime.now() + + for i in range(1): + image = Image.new('L', (EPD_WIDTH, EPD_HEIGHT), 255) + draw = (ImageDraw.Draw(image)).bitmap + + print('Today is:',time.strftime('%a %-d %b %y')) + print('The time is ', time.strftime('%H:%M')) + + edaylist = [] + for events in c.events: + if str(time.year) in str((events.begin).format('YYYY')): + if str(time.month) in str((events.begin).format('M')): + edaylist.append((events.begin).format('D')) + + print('In this month, you have',len(edaylist),'Events') + print(edaylist) + + enamelist = [] + for events in c.events: + if str(time.year) in str((events.begin).format('YYYY')): + if str(time.month) in str((events.begin).format('M')): + if str(time.month) in str((events.begin).format('M')): + enamelist.append(str(events.name)) + + for items in edaylist: + #date + txt = (events.begin).format('D') + w,h = fontbig.getsize(txt) + space = Image.new('1', (50,50), color=255) + date = ImageDraw.Draw(space) + date.text((int((50-w)/2),int((50-h)/2)), txt, fill=0,font=fontbig) + rotate = space.rotate(270, expand=1) + image.paste(rotate, positions['A'+len])#(517,11)) + + + #print(enamelist) + + #for items in enamelist: + #draw(positions['A'+events + + etimelist = [] + for events in c.events: + if str(time.year) in str((events.begin).format('YYYY')): + if str(time.month) in str((events.begin).format('M')): + etimelist.append(events.begin.format('HH:mm')) + print(etimelist) + + # name + txt = enamelist[0] + w,h = fontsmall.getsize(txt) #works! + space = Image.new('1', (234,50), color=255) + name = ImageDraw.Draw(space) + name.text((int((234-w)/2),int((50-h)/2)), txt, fill=0, font = fontsmall) + rotate = space.rotate(270, expand=1) + image.paste(rotate, (515,71)) + + # time + txt = etimelist[0] + w,h = fontsmall.getsize(txt) + space = Image.new('1', (60,25), color=255) #use L and 127 to show + date = ImageDraw.Draw(space) + date.text((int((60-w)/2),int((25-h)/2)), txt, fill=0 ,font=fontsmall) + rotate = space.rotate(270, expand=1) + image.paste(rotate, (542,313)) + + draw((0,0), background) + draw((515,0), template) + + del edaylist[:] + del enamelist[:] + del etimelist[:] + epd.display_frame(epd.get_frame_buffer(image)) + +if __name__ == '__main__': + main() diff --git a/Calendar/license b/Calendar/license new file mode 100644 index 0000000..c62f166 --- /dev/null +++ b/Calendar/license @@ -0,0 +1,85 @@ +PYOWM +The MIT License (MIT) + +Copyright (c) 2013 Claudio Sparpaglione + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +ASSISTANT FONT +Copyright 2010 The Assistant Project Authors, with Reserved Font Name ‘Source’. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL + +—————————————————————————————- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +—————————————————————————————- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. + +The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. + +DEFINITIONS +“Font Software” refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. + +“Reserved Font Name” refers to any names specified as such after the copyright statement(s). + +“Original Version” refers to the collection of Font Software components as distributed by the Copyright Holder(s). + +“Modified Version” refers to any derivative made by adding to, deleting, or substituting—in part or in whole—any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. + +“Author” refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. + +5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. + + +PILLOW: +The Python Imaging Library (PIL) is + + Copyright © 1997-2011 by Secret Labs AB + Copyright © 1995-2011 by Fredrik Lundh + +Pillow is the friendly PIL fork. It is + + Copyright © 2010-2018 by Alex Clark and contributors + +Like PIL, Pillow is licensed under the open source PIL Software License: + +By obtaining, using, and/or copying this software and/or its associated documentation, you agree that you have read, understood, and will comply with the following terms and conditions: + +Permission to use, copy, modify, and distribute this software and its associated documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appears in all copies, and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Secret Labs AB or the author not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. + +SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/Calendar/months/April.bmp b/Calendar/months/April.bmp new file mode 100644 index 0000000000000000000000000000000000000000..777c3752130824dc1e214528e47a60cb5bd8b21b GIT binary patch literal 53302 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 literal 0 HcmV?d00001 diff --git a/Calendar/months/December.bmp b/Calendar/months/December.bmp new file mode 100644 index 0000000000000000000000000000000000000000..89e4f4d05d1a28944f2a2344ae09b5071efd8aeb GIT binary patch literal 53302 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 literal 0 HcmV?d00001 diff --git a/Calendar/months/June.bmp b/Calendar/months/June.bmp new file mode 100644 index 0000000000000000000000000000000000000000..effeaee6b9f8a77badbda883cd09a8849b8ae499 GIT binary patch literal 53302 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 BKTiMv literal 0 HcmV?d00001 diff --git a/Calendar/months/November.bmp b/Calendar/months/November.bmp new file mode 100644 index 0000000000000000000000000000000000000000..5c55b5ad94ba3c505a502fab184e087bbc0714be GIT binary patch literal 53302 zcmeI41&|y?7)JLXK(OHM9^8Xla0%}2?(PW^+}+(Bf;$8!KyY_==Wuv4y*)R*SE*WN z=jQK(?^W&H^z2UeH?RMmovFII-hFxvuBG(qR;%@7t3R)PZM9lkt-E_;P^~twhkLOz zc_XC_hJ)du8;k%W!bs2^Mut&fR2U6LhaNBnj0t1G*f0)^3**7~Fab;m6T!qV2}}x; z!Q?OnObJuL)G!T93)8{$Faz|28DS=v8D@c5VK$f@=72e2E|?qUfq9`9%m?$s0%h9O z9;^==z=p69Yz&*grmz`o4qL#MuoY|#+rYN49c&Lfz>csJ>I4tv0!uovtN z`@p`iAM6hYz=3cO91MM-9~=UQ!eMYY^oJwhNH_|PhGXDZI1Y}76W~NR2~LJn;8Zvb zPKPt#OgIb9hI8OtI1kQ;3*bVy2rh<8;8M5@E{7}NO1KKHhHKzjxDKv|8{kH`32ug4 zU;x|-x54dj2iysF!QF5V+za=?{qO)h2oJ%-Fc2PrN8vGe9G-wD;VF0;2EjA%EIbE; z;dyugUWAw6Wq1W%h1cM9cmv*qx8QAf2i}GE;C=W2K7^0pWB3Fis_B#FSwPDicQ zo{V3o>FVy15Be0AHr$CNNxI||)oBX`BB_rohHZ_w81>cLg4GreO=8r$=-6tp&mxEC z2hVR8>8q7vG8=RfPY$~W%lt!a-c2ixiyWJqi`-_Bo?1MH(L2#%mqiZmlp)zsq@xy( zi6uvir=i1#aRd1}wY!?8-zm8$cG7bp*tE-$8#%cb$~Emal_PM^yaa8lM*dc$@(jUx zseJT~0fQWd7qTEnEcFpb4%6p`j!H?sYYYn{7bKeNhhcpL>m}!=>dhcWEItf#RPA5m zHEAHdbfwj5dJ%IsKlN49Wc0517zyasuima0p}9WYwLDGZA~knd>7UBwF#W!bCr7eO zvMMRvce5Sl5|}{b~;T+Vb#a@V8u*9*C;#X}1QR11NXeu^YJoYsbK>}Z< z#!>1e$}iIg+>RKgL6R75LfoCZ)#PL`(!Z>;n;CB-@sP_@xt4fxbj*dVkL)698N>bA zXIc%!$Rbr<9{$EK31J!|AH={yFk}QWf;?)(W5Cr$@Y5t*kif8DW69wjqfDlvanMvr z<4%jVyHU0nxpB-?NyiO9GI0`up9TW*cR^W}|8)+Nlh>d! zAOkWW12P~3GEj+u2B=(|CgILZ)S&c=-0pR(3(%*p0!#Zwg&QVK#y9jN3B!qU0_$(4R(h;U{BZ!_J)06U)T@! zhXde1I0z1gL*P(23a z8_t1q;XF7WE`ST+BDfeXflJ{sxE!v4E8!}*8m@tB;X1e;Zh#x%Cb$`Hfm`7=xE%(; z9dIYy1$V!%yRMU619c1#UV^-MVwt$>F_B zqFK_q8}6cVEP>Pc;l10p`99ci_&(=Fi0HyyYfnchT-xw&F-X$dyH)l42I?~;|G+{= zH0G((i5iRHa{cgP1bV#{tx(aqip86|{5w1DAf74L%@lBPHFFejV}>PS&my*ISj=Wv zG&xh`!XDxj^OVb*3z)y)POfBoc@*VdyS^5Q_J4lY>3MsUIwqfpT%8}dWw3I zO5~{jmFp%;HQ)E$eK3s85690XTEXIx%AX|l*K4qhl;1w;Se13GzJj5}{X0yp<~)PD zS86mf{Eg%~mONMHo^m8@d&@_7q_GtqDet$xj3s`Q*E`WEk-^(ZoOQBOg$&+}S0#s& zhY&W6NpQKi^L87ycREL7&10LPtnz-x9*g78g^hc5DWp0+8VhJ+$~GL8wZ*dtgEY3v zY98<71>vPz{}n$|?zTR!m+M>Ij19!5s&S112Kq1A@JIOOTR`2MCF%)+6~x_=>cxnX zCw8KvWo)E6dsC&1wwWI3zUlqUfEFFdObBN_Qa6|hmO9^}-OTN04z#Fos%&~bFi}%i zl(U=8k=`#S1zl(yTSM7%)T@WJ?+yvAC&1bJT^H+=Fr?tXVwKM4kGMv0ddz=`=Q(suS#*S2G{kEQonE z^N|(K5!{r~Co+qnSs@n1EQSu3IV|3qGCr)_S`AJ{u_|RXIFX}X$>`-mp~8Y#7P7pJ zNQreF>jHih`zm3DL8edE%Mlfc{N&$=Y8VHxui&R{lreG=8=hZ6VnnQx-DaYy!H!+` zaI`_=^pLQW&F^$gqkWqI!C0fVO$ON|X;RSmka-g0mK_c>$kJggosa<;kO3Kx0U3}1 z8IXaT1`Ixqb~Pktg5dJ5ikh4^31ZTxt1-%vG&C&xFv;H0n9xc`=SwK%MB=mmUw zz;G};^n?*$L>LKr!N@QQj0&T{=+GO+fH7e#7#qfcabY|dA0~haVIr6qCV@#|GMF5u zfGJ@rm>Q;mX<<5;9%g_(FeA(aGs7$}E6fJ7!yGUt%ms79JTNcxh52B9SO6A;g6!#D6PdJOT8(I-m}y1L}Y}pbn@5>VP_+4yXg_ zfI84^9jMBuW7T18!D`qsR8|Jn4J?03?HD3xmRi~>RuvtVDD8v}c!y=EtQ-F340nm3 zlHibpIs`2V?uV}?kR;?u@XUx@ku${BA@?AwjtfW6Z-J_l@-fMnEvQqS;!Et`y&-7<=co?HCLQnne?%Zgy68|x6bbS>G19I(!dpl(Zt#DUFRyQe5K zC^AqLA=S|#_y#rE0Tr=BRtD8$B=1Tr!fzxusq9u&bQss|eWWtFa?R@Kkn_N(Y`k?h zMoVuZL-62M<-Dkl(l=gLEGT$VLc9FK8thg{1A}LIcxnWN#5(*>{>sm)J;6RdmR` z?%RGy>hNku_oWg#0x?osgzCe5Km3N23iHn%((g_^BYfn{2rGLk#6?s?fN6x;E?b>h z+iZ7V9mx)r^&>d5$@jAFNLVis5VnMLP&Sbwr@^c&xj(9?!_*|v7T=)$MJKy7d6EdY zVaSl&r=E=P>XVj?9dT7jA+Z~%Q5~KK@oll%$!Iw(<6aoea%x*u;@?(E$)IiqOJPZ! zj0grwDy?O@m;?S^k=5*P&T!8PDhUors6+6)1ZUM(6G#&B#L&U(i`=ibZ5?tqraC%2 z52D>Fd0#w7JRQP+Mn*!6&{+w}#wr9)i={-=4K1E_z&j_wQ^bpio!n@f2J+XE9KfER3kLbzT){?o&LjlRdG}$V-^V>BTl{E}$SE+`1BOS3JLT^GM9pOu^ z{lUB86?AUUxF5cxxZk;DoY|7Pv;v%K+A@LKVO~)g-oA*Q<-U-%Tx>H*V?UaitaH=> zbwC|Z2h@Qs;DGlZQ#VPQuBOTA>1my-CY`-dztf}?s+u#olZ51CE;`g1N{ZIZo!`2U z+_c39TNPqe%qEM&*-)((2faq#gyzSLRJn_ycy5rvDBhxwBu##yD4rknN24h%IT9zy zFBFCIqv2>YsRbc%iaLd&c%5)sNaJY@qK-O_aGW@r*WtYyCWsTJ8jf%>I}(zN6lyt^ zJHlqE0#nUpVLM!%6Y+-}VRKnkbVSb)Q(Mz*$MqJv#zK=*3Y*iBT2!y=NLFu|H||*K z2&Xa^n{6$2EOmsfRL+Y^&9=IZLP6MC(Wp~!x{=DU(h)Wi`OSjUjpdG&j(ot--wb-%L5w=oA+oM_4)?!B? zN7zdBf6`Ic%OZvpnVWLb>1C1JMdo%;M_s>+e4&hHrW&iFrfYT67wJkA6|DEuvEC6* zvNk<2Sz@(Z>s|3MS(DSO(ssv@AqqFX@6FA!3#WQ*o@|_&aS9CVx-1k>VP_+4yXg_fI6TKr~~SNI-m}y1L}Y}pbn@5>VP_+4yXg_fI6TKr~~SNI-m}y z1L}Y}pbn@5>VP_+4yXg_fI6TKr~~SNI-m}y1L}Y}pbn@5>VP_+4yXg_fI6TKr~~SN zI-m}y1L}Y}pbn@5>VP_+4yXg_fI6TKr~~SNI-m}y1L}Y}pbn@5>VP_+4yXg_fI6TK H#18xi+dBFC literal 0 HcmV?d00001 diff --git a/Calendar/months/february.bmp b/Calendar/months/february.bmp new file mode 100644 index 0000000000000000000000000000000000000000..6bd5a95d5f63dd5c66439c0979fdb9a801869b81 GIT binary patch literal 246838 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 literal 0 HcmV?d00001 diff --git a/Calendar/months/march (1).bmp b/Calendar/months/march (1).bmp new file mode 100644 index 0000000000000000000000000000000000000000..9bacfc8a157b7521a0bfd63427d1fe8e65dc8ae7 GIT binary patch literal 246906 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 literal 0 HcmV?d00001 diff --git a/Calendar/other/bar.bmp b/Calendar/other/bar.bmp new file mode 100644 index 0000000000000000000000000000000000000000..062e8ee167c3e5aa9e630ed61dab619d476d54f9 GIT binary patch literal 5686 zcmeIx_qWJp9KiAK zdAKQtG^8b#TS!NGGLVr>WF`w)$wqc^kds{GCJ(m~$8F>#AGedA0uhUm- z@Fz00o~0Yzd5#|R zaFt3_ zNcFd?oJdS8x^yN7Qc6*pbtpqw%2A#Qtjl_=Pem$GnGM*Gji^FZHf9qxWivKs3#zdt z)v3W&Y)wtJVOzFidup)*wW-67?8MIO!mjK_U3O;=_M{$rQJ(_#W*-``FZ;1S2XG(< zaWIF_kVYIzW17&E!)V6gG^YhEIf7OkNo(406i0Im$I_N|9LMpTz=@p1$+YJbI?$0* zIgL)7&KaD^S)9!|bmm;n<9sgQLN4NBE};vTav5Fe#^qeWm2{^EJ-LdjxrS@Gj_c{g z4fLiDH*ynw=|_JCFp!(Mgaooeb+{gVq zz=J%*!#u*HjOQ^P=Lw$VDW2vTp5-~7=LKHmC0^zgCh#f~nZ#tKFqLV%#_PPnbY?J< zH+hS-Eapd+ z@Doez}g<$V{Hr$1LACsmuSD|wghj%*}r zvL@u{%9>H~cEyC`c<$bkmFc^Dlk@eb3p0%swh?P6Gf68VA~2YaiC%E@XmLp7GU6>H z5D_aR`?V-uUiv%ukmv&~%n61BCxkZ>BO(~`ugORse?%j&*x)alj9wiXiRdRqj~4GQ zdRFvkQO4@nODH4GLe`Ls&~G2(^$5N{u`&YhkBq>H#(GMOjL>u9M97GGN1{iQ8%YUd z6icKUzl1pWaER+SO} literal 0 HcmV?d00001 diff --git a/Calendar/other/hum-icon.bmp b/Calendar/other/hum-icon.bmp new file mode 100644 index 0000000000000000000000000000000000000000..2355d25c4e45f78bd955dac8b96f8d3d0246a76a GIT binary patch literal 1718 zcmZ|P37A!57zgk>8JQN578OdeRI)@xC2Ep{p+bd_ENPRaQrV^rDJn(wC2fRiFeM5N zS<*)PLYu9!wphaWopbKod#5qK=Q-z|^ZnoN{m%KG^W4m=+>)_Sqx4v;wyWxnijK5c zMmU~bA{NUl7aazJAe2T44j`QaDak=(P>Rx&p)3bejzc(<@*GA5DpHBc98MLgQjH@x zlB1|j4UVQJ$54x7IgaBwf!freE+vz-rPbTZsj&^=MMVPkN(`r00uIMySSTsxR?9LW-vn-$}om=KM(LA zBY23BjN)M)VKieH%cG2AJdg1>6L^9rd5WibhG%(>=Xrq_naE2_Vlq>h$~0c)6{hnl zukkuFn8_@1c!M{2i(Fi3Rbd;)vRGH>sZeQHu4o;vx&`YVJqAChHv?f@A-l4>|iH9@)JMv3%~LkyV%Vh z_VPP_@F#zlaxh{^ZekJPj9#_lW1gP)eGtNaXva1r>$+2ct>BbB1|1 zH@=;TIC_g9PkFuMCKSA5@&Uq`QEkc&{9j%$H(WAV5Zr2#GP!U;xWN9Yl0=81bHfI{ Qo^WcB&QThii~YX-1H{hzdjJ3c literal 0 HcmV?d00001 diff --git a/Calendar/other/temp-icon.bmp b/Calendar/other/temp-icon.bmp new file mode 100644 index 0000000000000000000000000000000000000000..8c4c77c45f221734501cb0682504ac61fe25741c GIT binary patch literal 1558 zcmb`{ceqbw902fh!_B_3LflH(Quav0RcT$DM2U=KB_om&MT*L5Dy!@jvV}-x6j9MI zqG4tiywCUhJ@5Ct?;j^AId6Ors+2wmikl@G2}WFyF^unw z3xZYIqeC!~2*q&$=}1oo;<=EFWFj+J$VxV{lRyqGA}6`XO&;=cG5N?(0WP5+g-GO5 zF5_|va|KsYgrXFqI3*}aDN1t{Ww@GaC`&oYQ-O+9qB2#eN;R&fI@fVMH*h00NTMb; zaWl72i(9#k+qr`~Nv1Y+s7pQS(}0FFqA_>Tgu7`VW$9aOjJV`(L^At}rfPp;2AfDwp1~Y`` zd4U%h$}omAf|0z$%e=y?yvFN{;tk$pG-DXcIL7l9Z!>|3Oky%qn94M!GlQAT;vHr) zhq=7VJm#~2g)Cw*OIXT#EMqw=yPsGksP*h!jM6 vpY8N+{*U~>G>EOA_5-6|aw>o7%wju8-FIwuy3T82v1QXd!}>JQ{}wn2cwJ(5U?G!+P)0*|e5_YTe&j=dQi>_wDa|XRmY5Imz`0=Zd9B$`p&0G^*)Ha%6~Q zNtth+GZve(|1cR3q{zTAWF!-rIhNzdLRO9^8`;T0PEO!NP9hh%$wOZ9aWeTSz$p~u zR0?q#g*lxwC_+(+aVEtnK}kwcnlhB79OXHSv#CHuDp8qpNTLeoavtY%0T)u0i>O9* zYLHA#E~XZ>xr92@r5=}Z8TDzvvWT#n*hpN>;I&HGIo=tmS*wv7QZVWD}eDfgjnzPi$oy+u6a->|__a z`GsHkjol zFPs&;i~}X&-KLHY9))7*a-$Q&J*F)Zof%y{?fR5)WNKvKkP?wQ@-Iq6Zfl}O`u$Gq zM`Axhf850Vk+?q+_ec7B;J>gRkuT9Bzm&*#=s%Q*K3()z#ld9)nMeE-3MGbOX?h8! n1$s+Y945TK+jv$`nyU&710@2h{vV;eJu5vA literal 0 HcmV?d00001 diff --git a/Calendar/other/week-mon.bmp b/Calendar/other/week-mon.bmp new file mode 100644 index 0000000000000000000000000000000000000000..acf3f754e58569642b29e57fab7463098e82055c GIT binary patch literal 13366 zcmeI$1(X~$9LMoJC{V1pLyJ?qKsnrsOL2F1cWVjU4#=vgwMWYF{VlK>$c`z^L!~9qPeXt-F z!opYti()Y>jwP@pmO@`Fjb*Sbmc#N`0V`r9tc+E#DptelSOaTfEv$`ourAia`q%&) zVk2yfO|U68!{*omTVgA0jcu?kw!`+=0Xt$R?2KKoD|W-~*aLfFFYJwe=#PD{F9u*g z?2iL*AP&O8I0T2{FdU8}a3qex(KrUj;y4_S6L2C_xJ%n;wSu!U+^n_!|(V5?gYs1L;4Pw z-vvwAh!CfKV_MAB@?!qf`jouY=9cGIpUkZ+5jR@T{S#;#5gt&>lkE%;>tn|^9prAN z+KnKOW2;=LIDpU167<|f(Y#n@?OFV)w78sA9KAMJzRf$3ci=y@1L13{onh(R9u4aG zP^Mud`SG>+L+?}``qe*+`RjqdFLGr9v+D4Yh6tJVbUtSqsoIQfBQ16v%2QSzB-*M@ z?W+6&v?)xr8$lk&F5InNdo7C_jm(JeGD(F_Z6D|{Zs$MNG z)@Ls|Pn^m-SEw!O8hpiI$vdoHSXwHtlnj>jRmRVkc?a?i)OMi5_ft3{)43gxZnc5^ zZDC0c%$cICj+yA2~xAjZ)Y$)chSNQu>u9P*=Y-iB>hXp7-h)LYL z)Wtuz+97OA_^gkSt~Wi@;mcou`oQHq#ql40*|qsAGk8HLFEVo>QglcF`+U@}aODKI6bLR(CYc9;g!VmeHZ889Pe!pxWjvtl;Pj`rw) zIWQ+Wq7&xA+~|yXFfY1bKFp5=upqi(AuNn;SOkk=F?7e`Xv7j&5mq=6{}%&tbsML7J6fCtb=v29{ON?Y=8~15jMsq*c6*#b8LYvu@$z) zHrN*1VSDU=9kCO3#xB?ueX$#M#~#=ddtq<%!#>y-`(b|^fCF(54#puk6o=t(9DyUz zA4lP69D`$V9FE5cI1wk|WSoLiaT-p?0Gxp{aTdpsf7x!T(?#Bao5D(#D zJc36t43FV)Jb@?i6rRR2coxs$dAxuZ@e*FfD|i*J;dKnh8+a3M;cdKwckv$H#|QWj zAK_z+z(|b3C-@Yf;d6X}(fATy;cI+@Z}AdGk z^8YKj-=De&EIgG5N^(;^fqVk_1oR2`=ZA0}>0BtZ&B2FOp(LH#6%=ZkT)G7|Y5eeawvtRua~^1%K+p89UWg<78)L5TG~ zO=2^cdU*pj*W-ldNZ0HCUyChJFHhWn-kqEl*A(d$nZrctwK$f$wyC?VdDnSOYoWmo z5FFfftD{eBo>+M-Q`4*5EhF^q>LZgyFg zADh!*d~@~umd96#79O6~L@d_T7ueaQ?fK;i+mCF_%r6dXmzU1%3We>Y)-RNePjh;y z@lk{Ie*NkqP@l>RCBgcCFfUA%FY^iH6Hq7MzrVt9_&oIGuhxVg4%M7_3OBWvV(jOy ztqsLbr!rfH0 p86iB5t}>;;0c@_8Am=8E=6;!_z1USradp<{A(RHqxBvSS_zRGl3nc&m literal 0 HcmV?d00001 diff --git a/Calendar/other/weekday.bmp b/Calendar/other/weekday.bmp new file mode 100644 index 0000000000000000000000000000000000000000..52ffb1da60fc602c9180ad18dbe102428a5baed8 GIT binary patch literal 2590 zcmeIyd6d;t902ealM<$~6q!b)WkRwwNDGxVEkdY7gpfihZ7N%{%;iX;DK95@jo&_ul+we(%i8>74$a&pG$q@BM!7y}#eP@19q$d1|ppOnOozk|s*g z(zQa7qOp8t;Yeh8a=b}K3o(T_f+Izj^S92Bbnlqpd`n00w;13r6|qG zoI)8+C55u2avJ3*PX$h=B9*9271F568Jx*kRO4)_a}MWn9_MobHAv?|F5+TpatXDl zO&#iTDVI@?`ZVBj8q$cyG@&V1(2VA^pe0w*imSMqYiP~2T*vjap)KvWf%e?UO?2R9 zZlNQ$avQhPi95KHyXef_bfGKva4+}Kjqcn}4|?(dz35FJ`qGaF>CXTL@(>U62#@j@ zgBZ*ZhBA!dJkAq5$x}Sd2uAV@qZrK?#_}xB@jNf^BI6j(OT5ekUST4Wn9LNWGL2Vx zjp@u_CbM{*H+Yk`$lz^eGl#j%V?OV&fQ2k#F-v%tr7UAP@3DfFtYS6q^8p|75g+pj zpR$I}_?$2JlCSuhwX9=3->`v=e9L!y&kt;3Gh5iok8EQ*nf%1h>|iIm*v&8e%5Uu9 zclPoJf3lDL{Ken=!@vB;0S*%X2Z((}k1r!5lnBCjA^sWU;(d5QI94?b&kYa5acoXb zA}7jT9HfFiyATbsl8Mg>X2i02m!d1BAeCxzb3)Y3tBZ&Qk1!oo< zMyM}1m(XE^LboNq3lq&BZY`gM@$K@wqCqm~6W%en(z%M^L^!rOacC5560Ky%@yA3n MfzX4q!rYbr0cnA`RsaA1 literal 0 HcmV?d00001 diff --git a/Calendar/weather-icons/wi-cloudy-windy.bmp b/Calendar/weather-icons/wi-cloudy-windy.bmp new file mode 100644 index 0000000000000000000000000000000000000000..20fc804d0e67e001a4e893a817fdb68ef5a11afe GIT binary patch literal 6118 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 literal 0 HcmV?d00001 diff --git a/Calendar/weather-icons/wi-day-cloudy.bmp b/Calendar/weather-icons/wi-day-cloudy.bmp new file mode 100644 index 0000000000000000000000000000000000000000..90f811d92d882eed5542b94f010bd0c87915ad48 GIT binary patch literal 6118 zcmeH|b#&BP5Qn!=pcE+H;x5I#IE4a5i@Q4%cXxMpcXxLy?o!;XxVwIDlTEXc-E8;4 zdG8-`PLi4V$(=iQ#V;Vl%OqYtt|pVWIr5io7n7R>Fh7GlEVs$UoCvqcgo}#{;lhO@ zeE9IVy1Eh}LIfg4j7X$Nk#KW!BXZ=(xVyU(B}x>cMvY3eXwmTS@F05h=){N-gP1X6 z5-V0LV#kh6oH%ia8#gYVo}PGlc@ZyOJmSZXPl5yqNSH7oi4r9uapJ@zNs@%5Nt2Q+ zSu&C*Pfm&yDM*T+K0O&SWFTY4jAY7`iOiWZ zlO;fByUwC{Tcc z1q)KBP$7JMeJNbHFhzIKA z%9brlKtKTH%9W#h`SMh#P=SgSD^jUaB`R00OqD8Cs9Lou)v8sadiCnms8NHOHEU9< zRxN7Ru1%dfb*NjnF7@iwqkjGRG-%L(h7B9is8J&tH*QRmCQWGCv?+tZ;#2Re4_NT*Jn=-jz8UAlCkYuB!H z>(-6#-MiDHM-O`T>`AX)z3AP$H+}l_p>N;5^y}A;{{8ziV88$d4jjm!L4z1PcrZhT z3}NWdp$r=~jN!wFGh)ODMvffGs8ORBJ$f`_#*AU?*s+WoH;(b+$1`EV1SU?L$fQY= zm^^thQ>IK|>eQ)Bn>LN<)2B0I#tdf8oXMMT=OxcrixR<2yhs#U94y?Qlk)~sRe+O@1(w~qDe z*Rx^61~zWo$fix3*t~f&TefUr>(;Go+qRAE+qbi0#}0Px+{vz8yV$*ZH+%N%Vej6( z?Ay1G{rmTG;J^V69y~};P!NX>9pdoe!yGwsgri4~a_rbKjvqhHi4!L{dGaKuPMzZP z>C>D!bB42L&vNeEInJLy&xH#YxOnj*!NI{?x^#)lmoIbW$`!6&y~?#~*SLQDIyY|I z;O5Pn+`4s(+qZ9X=guAO-o4Acd-u41|2_{MJmBHOhdg@ph>(yF9zTA}lP6Dj`t&K! zo;~CF^XI&H@q(8xU-IhJD_*~T&6_uGc>DG(@7}%R{rmTP`0#;`A3yTx(+yz zU-(?)YOZ)}+`}q9{{HbC7^)Wt+e?1?~M_uouA=qg{ zt25^+rWRL$ibUY4l?u@Or)&&cxyD2hHCV>#Bd(}ORiP6$LhCB6GBIve$<)PyR4%F# zx#~C&*B2iW*J>GNv2-@Fm1CibA?tL3ism5EiN%dbRR>xHtg{KlEI?@H=&f8=84Efw zcVr;pYOYacXs8xyTM$q~xeV%<>Vi6xRk}dnsaI52bg<6BQn0~OmE=SSgzGnbEGGY( zkKDe&R#ZE*!IQRNcYZ2;Xky<-9H|XBRH=U3AWHq1Uru~4Z1@NZS-tF@w8MTZ1ldW= zx0l)J$4r-u>`#w$#M_N^5EvI5fa%LPD^kdnYv0O&~TOavrBCoFv4EqsBZB`hQ zL`!3egbFVQEg3T;RCxUfpD=99a3w3~s2$^#tUlV~(dC9zLr`sHL^Z5b&owBh%XVE6i?bz|Ln1p>-Hs=#+;*5>0enNe$LkvSCh%_|GM^kl>+VOFqvH|Oi zbOjqC8zpfUin=yeK*ph3C}!G;85>BbN~uc1B)5_*TE)`}ITtA`gwQ#$lC3gQ0#3)W Mlhew-0{sO30l`&c4*&oF literal 0 HcmV?d00001 diff --git a/Calendar/weather-icons/wi-day-sunny.bmp b/Calendar/weather-icons/wi-day-sunny.bmp new file mode 100644 index 0000000000000000000000000000000000000000..6e44482c3b0ee53b50849e2fd5abbd86d4d1ce1d GIT binary patch literal 6118 zcmeH|byO5x7>5@{#R3yl3={(cEW{Q>#l%(&uoD!!JFyEJ>~66Yu&}!YRBW)j>v0oi zcgA7Y;~(ESANQQudEZ~%J9qESx_idjDAdEnT%mAKRvy~ROktrRl%ElnnoD7(Y*d#* zfti^Z$&w`_dGh3#o12p&MG8`;Oi8L#sj#rHAa&~0q)C&8v}x0lE?qj(r%#Wir6pEY zR%FPKfs7e5k||RrGH1?AmMmGwnl&rd*4EhA*pMw-HnL~WPL3Qou(h=%XU?4D%9V@U zxpR{zPaf>-?8uupFZuH2!`|MW{Q2`!pg;i%7A#1iLWOW}aG-GE!W1b|grY@@Qmj}p z9335Ta&n@0@#2&yQG${sOH!&-DN2_vjkB{eWy+Mn#l?lPWy?~oTsg{@FHeOE6{uLT zB9$stqH^WRRH;%0S65fu+}x;IwJPrJ?o_K*jq25_Q=>)=JUl$8S+gd!YSp54?b_6- zQ-`{B>r$^?Jv==LgMKD24mhPG|n(ym=Q+P7~{hYlU+*s&v>I(4FR=gxHL(uJ;F zyV9*&H@bK4j<2sTetv%R=+T3oJ$vHs?@zB@z3AP$H+}l_p>N;5^y}A;{{8ziV88$d z4jjm!L4z1PcrZhT3}NWdp$r=~jN!wFGh)ODMvffGs8ORBJ$f`_#*AU?*s+WoH;(b+ z$1`EV1SU?LNI*aUlO|1K^5n@(nKFf`Q>QX*+BBw5pU#XKGnhGZCbMSEV)pFW%$YNX zz`#J}&YjD=dGnY*e?AKqEMVcng)CaMh{cN+6BHCgaBwh7mMmfE(xoh0wv6S=m$PEU z3RbRM$*NVWSiO2RYu2n`?b@}hTept&>({ek!v;2P+{mU)o7lX0Gh4Q7Ve8hdY}>Yt z?c28#5)#6W9Xr^$b0@oY?PB-t-R#-3hrN6EvTxr$_V3@%fddB!4GkqMER68*a1I_k z$e}}rIDGgpM~)of=+UD@L_~1x*fEYDKhB90CpdZXB&SZD;`Hg$oH=ubvuDq8?%X-f zpFhuq3m3R}@gkQlUE=cP%Uro~g{xPua_!nRu3x{-jT<+(dGjWbk*MG+kx&8=Iv zxPALJckbLFCMJfvckgoV-aYQ$zt4jQ4|w?SA&(wC;_>6h#Ky)F7Z=BqCr^0#^eNAt zJ>&WF=e&6Ff|oB}^6J$qUcY|Ln>TNG`}QsG-o4}f`}chK@PUsXKl16*Cq94v%$F}; z`1fL;tUSJxMw8NAGX<$MEGQ z$}#dBB<2(Ge|Q{~PUdx+2rUSeRmzfr5LGFom7xqmbU_lZb_!`m5>413^#b%-Nkbx_ zHpR535oHQfl(mRA5-^DQ+aOJhc22#<$aM&<2^MuyLThv-@`(WBqEt40r5MrYB|8a| z1SDzI1Eow-n4U@7sC3Gq?&1r9FdkDC$|0bHrH0h>ZO={!PNJSG$h1rl|wg z10@QQiIM&9HwcoAF(F9wPzKK^;tkfJYn3`(slJPR2E3kFrV-`HXyvG+9J$@m92j|p Uk?dc7&qk&v$&z;9Kez+G0g^mv`Tzg` literal 0 HcmV?d00001 diff --git a/Calendar/weather-icons/wi-fog.bmp b/Calendar/weather-icons/wi-fog.bmp new file mode 100644 index 0000000000000000000000000000000000000000..ededca2a68b2d6e5eae907496de3de577a5ccdf5 GIT binary patch literal 6118 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 literal 0 HcmV?d00001 diff --git a/Calendar/weather-icons/wi-night-cloudy.bmp b/Calendar/weather-icons/wi-night-cloudy.bmp new file mode 100644 index 0000000000000000000000000000000000000000..0a9b7d09aaf62ed507a7c11dae9ba3cd0dd04e85 GIT binary patch literal 6118 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 bPA(*jEOt#s78iMIlZ);UTgVgm4?TfDR9$5a literal 0 HcmV?d00001 diff --git a/Calendar/weather-icons/wi-night-showers.bmp b/Calendar/weather-icons/wi-night-showers.bmp new file mode 100644 index 0000000000000000000000000000000000000000..65c8e663e95ecfe5e7be7932acd8e3ffd9d2a2de GIT binary patch literal 6118 zcmeH|Wmptz7={-`MM1DZ?8Z*83l$T)6}!d6ZpH5IRH+7NlKL}Md{L| zDO08lWy_YOT)A?TFJGPt6)I4%Vny8D-KkWm5|t}grb?A6czAeFwQ5zWRjWqz>eZ=H zqXso=)}&UgT6lVTQoD9->eQ)2-MV$DSFaxR>({42g9bEg*pNnz8qv6MW12K+Ler*A zY1XV6&6_u;MT-`+Y}pboFE3iPYDMeTt!dMy4Q<=DrCqyrv~S;@4jnqsv13O%b?QXt z&YkJfr3+oVcBNalZglV79dB=Mdi3Z)&z?Q$)vFi1d-tYKpFZ^M+ZP`nANuv{NB{o) z88Bb~0|yRd(4avK9z2*KLxwPP=un0Y8^-YA!x=GR1S3a|WYnlpj2=CjF=NKy>+8$d zv11uGZXDysk7vS!2~3`gKA=LI@2F<;IO0+`M^{Teog;`}S?_ z+_}TuyLY*F?;iK>-{--D2RwZEkVlUm@%Zs$o;-QN)2B~)_Usv9VPQOf{+#gea9+H4 z!ONE~dG+cQuV23=A|isw$VlG2dBfYcZ+Z9b9q-@2=fj5&eEj&4PoF;V`SWMKeEGuH zuV4B0?Hk{}f9J=KAN>6JlV87n@%#60v_Ih=Anp{m1OKlb5Z?X2e*JY6?KRf>CpAms z*ny-@c^nIp+!}p5V%c(z2}~3~=vWFeSk@qk6-d6OVXn^Ry+QDX+dR7-QZOF%wBbtQV?8${a0N+fgwK zDp4a}Rpjc* uf-`!vrLmIMY%SWXznE2~2M|yY>Bc zXLm++*}+-;{`i7@o|${^Iltd~&b@n|1sC^dE0yqZG*_wY)iYP!W2UmuCe-gpOYNgF zQ!g}+N`;x38Ho}lB5~rxn46oEBuNsICQVARWXZ6wupoKz5sDTqO0iCi!naY(bQ>983TwGkJTD2MMvWRZ zs9CcnwQAL(cJ12KsZ$4ccX#U6t&4|;2leXJqkjGRczSx$pg{u~Hf%_vMvd_D@}hC$ z#x!Ztgr-fK(yUoCnm2Dwixw?t*|H_ATD78e>(;bs(}uQf+tRLGJKDEzPlpa2=-9C% zojP^G+uNJYojcQ|OBcF!?Mk<9-RR!EJ3V^zpl8pX^y<}%-o1O%r%xaH_U((0j}QI& z^`n3P{tOr}fPn)CGHB2s1`i(0kRd}DI&>(*h7Du*@ZpRYF@ljJM>1;EC`OMS&6qJ` z7&~?>C>k(W5x_-&YX## zpC7Yk&BEW`pV_l#GiS~m=FXkVym|AOKYu;}0RaRC2C`tm0v0Y@$f8AySiE>KOO`Al zC@6@fOP8{2*)oEIg9!-mB95`@*$jC?z9z4jQLx(tg_%KI~9O3BEqZ~VSjN`|TbK=Aa zPM$o;sZ*yoefl(K&YU4CDvGmb&vNeEInJLy&xH#YxOnj*mo8o6^5x51xpIZ8SFdvI z+BL3Uzs`*tH@JE8Cbw?g;`Z&^+_`gyyLaz$@7_J`-@ng;2M>7o@FCIB(L8$eh{ul~ z6B84|lP6Dj`t&K!o;~CF^XI&H@q(8xU-IhJD_*~T&6_uGc>DG(@7}%R{rmTP`0#;` zA3yTx(+yzU-Id{!CSbH3NrrzbN7}&8iQZQ97C$vgW*V#XZO57_@y6B&7?Jc#j(EMK$`VTCXcWK3 z=={cnKS9DwDqw7)RtRBZ98E%EiG3S`Xm#35+2wBU@I$QA-44d{RwLEN7&O=od#>sRE4VhG|QPW88uojBJg#a=FOggApiy*o~H< zdCT>xC@x_XsdXYFRYi^|7-PQ-T8>E+!+)Cuvym1RK;yXL1QbBj5@8pyq=xHQsraY* zMq%|^-?!GOv;ICN_MdV+Wc<4@metwC!I(s0Ohl+hg$_BHjwF{(h$o!DfA<9b0-O)W AoB#j- literal 0 HcmV?d00001 diff --git a/Calendar/weather-icons/wi-night-thunderstorm.bmp b/Calendar/weather-icons/wi-night-thunderstorm.bmp new file mode 100644 index 0000000000000000000000000000000000000000..2cdb562f4346dd85a9eeae488c170084cc976238 GIT binary patch literal 6118 zcmeH|Wpoo;6opeLP^>t`U5a~g3I&Q5cXxLv?(XjH?(SCHp~c;b6?gqeCdni>xl@Ms z{=L^(Ycgl=v-iGd?#!C__yv0yl*7x_VDL0nzLwL);AUC&YmefsoxdU}!}Lk2Qt%t)q8naG?uGg-1^ zA#2vGWXqO~?Af!EBS#K$=FCa1T)D`dJ2!dqr1Ipr6^sxG-b+^p={Z* zlq*+`^5x6p=jTU-3KghWu_Bc!Ribj`%2cURg{oDnQmtAws#mX0jT$wmS+gd!YSp54 z?b_6-Q-`{B>r$^?J?hu5PlE;xXxOkJjT$wgapT4`Y0`wIO`FoJSu>h9Z%&IAEoj-Y zC9PVuqIK)mv}x0Zwr$(eu3bCYw{K5}4jt&&u_K*2b)s|U&UES0g|1z@(yd!J{Qdpu z-n~0Ldi0=Y&z|(^)r;P}d()>+ANuy~OTT{o=-m_L6$3l=P3;lhP1 zTC|A8ix;zG$r6?>UCOd$%UHgAIV)DIVCBk{tXj2-)vH&tX3ZMbu3gKzb?aEaemxsD zY+&QYjcnSqiOrigvt`Q`wr<_Zwr$(kzI{78cI;s1&YkSqwTs=mce7{D9`^3t%f5a4 z*uQ^22M!$I;K73&I&_G`hYu4F5WtZmM>u-)D94T+eMMtpFYi* zGiNw^_AKYlo#XuZ^IW)afr}R}a_Q0~0s{jH3JT)#<;z^Ta)ql`uX63$HLhR3&W#&4 zxOwv?w{G3y_U+r;xpRlRckgoV-aYQ$zt4jQ4|w?SA&(wC;_>6h1P2H6TNG`}QsG-o4}f`}chK@PUsXKl16*Cq94v z%$F};`1Rq;%W<+f5~0Q@!%A*jvJs)@*sW@dGg|C;OQ|;w2hKhs!282g%}-HT56V&8U`~hGiY$u9LYEu4moYik$f6V>2iIjtTL3H z!V%lGLN7(5h(dRYUBzj+75iFL=|C2 Gci=bKK%LY8 literal 0 HcmV?d00001 diff --git a/Calendar/weather-icons/wi-rain.bmp b/Calendar/weather-icons/wi-rain.bmp new file mode 100644 index 0000000000000000000000000000000000000000..44b62ca651a4a4df08d47784f2afb8965ab59b02 GIT binary patch literal 6118 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 literal 0 HcmV?d00001 diff --git a/Calendar/weather-icons/wi-snow.bmp b/Calendar/weather-icons/wi-snow.bmp new file mode 100644 index 0000000000000000000000000000000000000000..77a45a82b6a4c87af36616f3bc16c7c1598c6a13 GIT binary patch literal 6118 zcmeH~byO5>6o(f@#li-=0}BhWMG?Wm#_mMy#_qtx?rz2I4(t{a?7}3(&ga|NVPJP= zm)!-<_ZM@{%)Iw^@9%l<+-2Ca&hEjsD$U_&sZ!agSFVw#h001ysIUIk;;FJw2g0dR zVPRoGqC|;EoH#L-mX;(*l7ys5laef1GOVnuNS-`7DN>{$Wy+MKN|lP#sZ(QZZB3dq zX-JzkE$PywBYpbxWXO<#j2SbMDN`nFY;3T#wIy@r%w)-ug{)b#k}X>{vS-gujvP72 znKLK3a^)g-?%d?blZU){^O7%LKJw?!Pk{mjC|Ix{g$fnI&d!d)g$q-pND+z_ElROs z#VB69IQI7TlqgYxk|j%0s#GaTmo812GG%aZaG-42vN$?AQm$M%%9k%sg$fm@Sg|6N zDpjI#<;qm4QiZBjtK#J3M73(ws9wD~&d$!%s8ItK7Z+;Qtck0uD{gLX)T&jB+O=y_ zr%oN})~!pudi8L3cc*^+`ZQ?JfQAhl(x_1*8aHlClO|1Q+O#Pi9v(Dn){N%Oo7192 z3tF~pNvl?^Xx+LsZQ8V`13ho#@=TGhMoLp=;N!bnDiQ z?%liN>FG(29zF2#@}g(Yp7iR~i{8C^)2B}#`u6QhzkdDb-@iWt1`J@}z<~@JG>E~2 z2Qy^I5QYvNinq5n!-frG`0(M37%_s8BS$i7)F?)e9?h6BV;DPjEaS$FWBmB>Oqei% zi4!L>Y0@MnPoB(_DN~p_bt*nSK1`c7jp@^;Gh@aKX3m_+tXZ>|J$p93zP`+vGl#iz z=Q3~JJm$}z&w>RDSh#Q@ixw?n@#4iSS+azsOP8{2*)o$wQJY1ZrwW8uV2rG4I9|FaU+{HZDRB0&1~7Sg{@n+vTfTo{QUgbzI{78cI;s1 z&YkSqwTs=mce7{D9`^3t%f5a4*uQ^22M!$I;K73&I&_G`hYxe)$PtbnJ<73T$2flc zI44e=;N;1ZoH})i)2B~!=FA!V{rx$6_AKYlo#XuZ^IW)afr}R}a_Q0~E?>UPl`B`c zdi5&Tu3h8$_3PZYaf6#TZ*uF_Edl}pxPALJckbNb?%liGyLXTK_wV!I!2<#V0|^QW z;^D)GJbLtq$B!TLTNG`}QsG z-o4}f`}chK@PUsXKN1oWLTG3xVPRo}hllg&(nzK|Q`v2lV}A^3D^6@pIIP@r@PiZ0oZS6kO( z(j#d*^sn`p^ho->M%4J^m_Hz8b3#ArLzysB5iur`q%y%I+eeVZLzd7NstYx;V9=8n zIr=iPV#zMuWoh*f0nMS1VHxGEdN(S(kGw;h{tveO-|ZWnsJO<#+VdI zrf^Ka2!9zGpmdk|)Vd28V~?d(ZfF@l7!4(^-H4F5K2@wJf=Mf&!!vj3P7zf=zou^4K(r;`=VP7#T=|(QePwcGPvESL>pd?HnVFIR2;6K?4L?8eF literal 0 HcmV?d00001 diff --git a/Calendar/weather-icons/wi-thunderstorm.bmp b/Calendar/weather-icons/wi-thunderstorm.bmp new file mode 100644 index 0000000000000000000000000000000000000000..840cf9b633114b05b67502ffcc436768e769da99 GIT binary patch literal 6118 zcmeH{Wpoo;6ope-pjdH=yA=206bda`+}+*X-QC^Y9a>z9ySqzqcm3$hWGtB`4e;Zw z^_sP2?m7GHZ_mw*c>4vpo5Yu=i^=2>T=|+WCzGo*2)+lpNtekfxDhUs2`48f!i5Wm zv$HcUE-r)*AD##iA`mfRL|k26i4-Xkkt0VYN|Y!>jT)6`(W2qz=0^1B(TNcw1~FsC zBv!0g#Eu=CIC0_-H*Q?w#fyi#yF2mY$0tF81SCwDkVJ_RkvMT;k|aq&(xgdAmMj^` zlP4!diWHUtda;C_%}RB`H;^6s1d-rc9YK zlr38pKR-Xpl`BX2^5v;ep#l{vR-{s;N>r{~nJQJPP_=4Rs#U8-_3G8BQKJSmYu2Pz zty}>QJ|CUFy}VNB#QsY0#hn4I4J3QKLpQZrqqAO`6cOX;YdtYew_t&1uo1 z1ua{)q*bd{v~Jy+Hf`F_wryM5wQEQF_U-A=p#vQ|cBE6MPIT_vnJ!(r(6wt4(W3`Fd-kMPuU_=--J3pr`p~y;U;6dyNB{o)88Bb~0|yRd(4avK9z2*KLxwPP z=un0Y8^-YA!x=GR1S3a|WYnlpj2=CjF=NIscI;TjjT^`K@#C2=VFD8;PGr)gNlczR znJH7IFm>uwrcIm1^y$-?F=GZZXU=5StXa&SJ)1dm<}i2eT;|Q2$Nc&8S+HOM3l}bA z(V|5xUc8tkOO~*7=~9+0TgLL`%UQ8v1uIvsWYwxwtX{pEHEY(ecI{f$ty{Ex0nJrtkuyyNJwr$&nzrQ~L0Re2^zMUOAcCd5jPIm3u#qQm^*|TR4 zd-v{T-@bk9-@l&&2M!Pz7|6kc2RU@;5Qh&R=E#vF96frJW5J+C>pXSV&Gn_qpmUHLMasK>yE?l_4#fulYbmLn-o1Or`}gnp@Zkd=KYrxXr%!zT{FyIb zzVP+ySH6Aw#`o{v`SIfiKY#w@*RNj)FYzBB>=t$c|A!O!C*ODRXCvPJ=E&5PzuJ^8 z=FgKXWB%}e!5kx=i?(*~pd?g*ELugkTZo{>W!Y;+wo2>g|5=bVWv$rShdeW&1W6u; zdNqIyB>Qm&kRUm}A@NZl{N-hLu%xiF=SLs~pv!Fb0JgHXo+g>0J)Rn9~dx z^F*I*+39el(YRzyBN>#k%VISYh%h*mZA>lOlF zmQ})DWt=0b_E6pYpXCUtmXEjWbx*d@NSjg&7OkS&FC;(S%C-57IP^QZO literal 0 HcmV?d00001